josedasilva @ 11:51

Qui, 26/10/06

O CakePHP é uma framework opensource desenhada em PHP com o objectivo de acelerar o desenvolvimento de aplicações. À 8 meses escrevi um post, entitulado "Cake Php Framework", a dar conhecimento da sua existência.

No entanto nessa altura a framework não se apresentou de um modo adulto, e não ficando satisfeito com o resultado final, decidi esperar que ela amadurecesse, ora pois bem, esse momento chegou, o CakePHP nasceu, cresceu e finalmente apresenta-se como uma framework de qualidade aceitável, pronta para ser realmente usada em casos reais.

O padrão M-V-C


O paradigma M-V-C é o modo de separar uma aplicação em três partes distintas: Model - View - Controller.

No CakePHP:

Modelo - Representa uma tabela/registo de uma base de dados e as suas relações com outras tabelas ou registos.

Vista - Representa todo e qualquer código html, com ou sem código PHP embebido.

Controlador - O controlador trata o pedido do servidor, recebe o input do URL, implementa a lógica de negócio, usa o Modelo para ler/escrever na base de dados e finalmente envia o resultado para a Vista.

Entrada -> Processamento -> Saida

Controlador -> Modelo -> Vista

Organização típica de ficheiros


Ao descarregar e descomprimir a framework deparamo-nos com a seguinte organização de ficheiros:


  1. app

  2. cake

  3. vendors



Explicando um a um:

cake: Onde se localizam as livrarias nucleares do cake, um utilizador regular, normalmente não necessita de alterar nada dentro dela.

app: Este directório é onde ficarão todos os ficheiros da aplicação que estamos a desenvolver, torna possível caso, existam updates á livraria nuclear da framework, apenas actualizar o directório cake e manter a estrutura da nossa aplicação fixa. Uma grande vantagem é que nos permite ter várias aplicações, directórios app, ex: app1, app2, app..., usando a mesma livraria partilhada.

vendors: O local onde devem ser mantidas todas as livrarias externas ao cake, esta secção pode ser a mais dificil de entender de toda a estrutura do Cake, no entanto o wiki do cake apresenta um excelente exemplo do que pode ser um elemento deste directório.
O directório app irá conter todos os elementos da aplicação a desenvolver, como tal será composto por um grupo maior de subdirectórios:


  1. /app

  2. ../config - Contem os ficheiros de configuração para a base de dados, ACL, etc.

  3. ../controllers - Controladores

  4. ..../components - Componentes

  5. ../index.php - Permite colocar o cake com o /app como raíz

  6. ../models - Modelos

  7. ../plugins - Zona de Plugins

  8. ../tmp - Usado para guardar a Cache e os Logs

  9. ../vendors - Onde devem ser colocadas as libs de terceiros, para a aplicação

  10. ../views - Zona onde permanecerão as vistas

  11. ..../elements - Elements, pequenos pedaços de vistas

  12. ..../errors - As páginas de erro personalizadas

  13. ..../helpers - Onde devem ser colocados os Helpers

  14. ..../layouts - Layouts da aplicação

  15. ..../pages - Páginas estáticas

  16. ../webroot - A raiz da aplicação

  17. ..../css

  18. ..../files

  19. ..../img

  20. ..../js



No próximo conteúdo sobre o Cake vou exemplificar passo a passo a criação de uma aplicação simples, usando o cake. Servirá de introdução ao desenvolvimento usando cakePhp.

Este post foi baseado em conteúdos encontrados no manual oficial.

Tags: ,


josedasilva @ 10:07

Seg, 23/10/06

Está a nascer um novo evento sobre Tecnologias de informação em portugal, talvez impulsionado pelo sucesso do Barcamp Portugal 2006 e do Shift, o TecnoNov pretende realizar-se a 20 de Janeiro de 2007, um Sábado, em Coimbra.
No website do evento pode ler-se:

"O TecnoNov pretende ser um Encontro Português sobre Tecnologia e Inovação, a par de outros que têm decorrido, como o BarCamp Portugal, num contexto mais ad-hoc e para um público nacional, e a SHiFT, também ele um encontro social mas dirigido a um público internacional.

Nesta fase de maturação e preparação do evento, estamos à procura de potenciais interessados em fazer uma apresentação ou demonstração, tendo em conta que o público-alvo deste encontro não é técnico mas social. Se achar que pode contribuir, por favor contacte-nos.

O evento será completamente gratuito: tanto para quem quiser participar como para os oradores (que, portanto, não seráo pagos). No final do evento haverá um jantar aonde todos poderão participar: este será obviamente gratuito para os oradores."

Para mais informações visite o website do evento.

Aqui ficam os meus 5 cêntimos, na divulgação da ideia.

Tags:


josedasilva @ 12:11

Sex, 20/10/06

O buzz da Web2.0 parece estar calmamente a desaparecer, é curioso efectuar um exercicio mental e tentar descobrir qual será o próximo passo, vou tentar efectuar esse exercício mental, a curto e longo prazo, e como é óbvio tenho as minhas previsões.

A Curto Prazo : "Go Mobile"

Já se estão a visualizar movimentações nos bastidorers da internet, sobre desenvolvimento para dispositivos móveis, e na minha óptica é o próximo passo que naturalmente será tomado.

D Keith Robison desvendou a mesma suspeita que venho tendo à algum tempo, e as movimentações apontadas por ele são óbvias, e levam-me a crer que será mesmo o próximo passo.

Em Portugal, também não se anda a dormir, e a prova disso é o novo serviço Mobifeeds, da autoria do Andr3.

A Longo Prazo: "Go Semantic"

A W3C define a "Semantic Web" como:

"The Semantic Web is about two things. It is about common formats for interchange of data, where on the original Web we only had interchange of documents. Also it is about language for recording how the data relates to real world objects. That allows a person, or a machine, to start off in one database, and then move through an unending set of databases which are connected not by wires but by being about the same thing."

Na Wikipédia podemos ler:

"Humans are capable of using the Web to carry out tasks such as finding the Swedish word for "car", to reserve a library book, or to search for the cheapest DVD and buy it. However, a computer cannot accomplish the same tasks without human direction because web pages are designed to be read by people, not machines. The Semantic Web is a project aimed to make web pages understandable by computers, so that they can search websites and perform actions in a standardized way."

Tags:


josedasilva @ 11:24

Qua, 18/10/06

Continua o Buzz em redor da marca Google, é uma empresa inovadora, disso não tenho qualquer dúvida, mas não será que está a existir uma Google Buble?

Em tempos, e continua a ser assim, pesquisar e encontrar algo rapidamente, era sinónimo de Googlit, entretanto os restantes motores de pesquisa adaptaram-se, restruturaram-se e conseguiram um conjunto de resultados muito interessante, o Yahoo! é um desses casos, exibe resultados muito bons, que me satisfazem plenamente, na primeira página da pesquisa também, e porque não se fala também do Yahoo! ?



O Yahoo! dá-me sugestões, quando pesquiso por "PHP" ele oferece-me a sua sabedoria e sugere-me, então e que tal "php tutorial" ou "php scripts" por exemplo, uma funcionalidade deveras interessante no meu ponto de vista, ou não?
Falando de melhorias, porque não o Sapo ? O motor de pesquisa do Sapo deu um salto de performance e objectividade enorme, conseguindo resultados bastante aceitáveis, com o bónus de que disponibiliza resultados do directório quando existem, resultando numa grande arma quando se desejam resultados nacionais, de empresas principalmente.

Não será tempo de deixar a "moda" para trás e usar a ferramenta certa para cada caso? Ou o Google é bom em qualquer deles?

[ Actualização ]

O objectivo destes conteúdos não era nem nunca foi, coloacr um dos motores acima do outro, é óbvio que todos têm especificidades que são úteis a um público alvo do que a outro. o objectivo deste conteúdo é colocar em cheque, talvez o VIPE Googlista que teima em não desaparecer, penso que já era altura de olhar num ângulo 360º.

Eu pessoalmente uso o Google no dia a dia, mas não para qualquer efeito.

Uso o Google para pesquisas técnicas de conteúdos internacionais e imagens, uso o Yahoo no canal Finance, que me parece de longe muito melhor que a tentativa do Google. E por final o Sapo para pesquisas no Directório, ou pesquisas em Blogs e Noticias.

Tags:


josedasilva @ 11:25

Seg, 09/10/06

Existem várias formas de efectuar comparação de variáveis, analise o seguinte código e indique qual o output esperado.


  1. < ?php

  2. </li>
  3. $string1 = "01";

  4. $string2 = 01;


  5. if($string1 === $string2)

  6. echo "1. EQUAL\n";

  7. else

  8. echo "1. NOT EQUAL\n";


  9. if(strcmp($string1,$string2)==0)

  10. echo "2. EQUAL\n";

  11. else

  12. echo "2. NOT EQUAL\n";


  13. if($string1 == $string2)

  14. echo "3. EQUAL\n";

  15. else

  16. echo "3. NOT EQUAL\n";

  17. ?>



Justifique as opções tomadas. (Solução Disponível)

Solução:

1. NOT EQUAL
2. NOT EQUAL
3. EQUAL

Explicação :

1. NOT EQUAL - $string1 === $string2 , verifica se $strin1 é igual a $string2 (na condição verifica-se) e se são do mesmo tipo (não se verifica)
2. NOT EQUAL - strcmp($string1,$string2) , Comparação de string segura para binário, como tal retorna falso
3. EQUAL - $string1 == $string2 , verifica se $strin1 é igual a $string2, sem comparação binária nem de tipos, retorna true

Tags:


josedasilva @ 00:43

Qui, 05/10/06

Qual será o output do seguinte código ?



  1. < ?

  2. </li>
  3. $values = Array();


  4. array_push($values,"carro");

  5. array_push($values,"mota");

  6. array_push($values,"bicicleta");

  7. array_push($values,"triciclo");


  8. unset($values[1]);

  9. $countElems = count($values);


  10. for($i=0;$i< $countElems;$i++)

  11. </li>
  12. echo "[".$i."] ".$values[$i]." ";


  13. ?>



a) [0] carro [1] mota [2] bicicleta [3] triciclo

b) [0] carro [1] mota [2] bicicleta

c) [0] carro [1] [2] bicicleta [3] triciclo

d) [0] carro [1] [2] bicicleta


Solução: Resposta (d) 

Ao efectuar os 4 array_push, o número de elementos do array é de 4 elementos, sendo os indices 0,1,2,3 preenchidos, o unset($values[1]), efectua a remoção do elemento da posição 1 do array, actualizando o número de elementos do array para  3, ao invés dos 4 iniciais, mantém no entanto os indices do array inalteráveis, ficando o array com o seguinte formato:

$values[0]="carro";

$values[1]="";

$values[2]="bicicleta";

$values[3]="triciclo";

Sendo que o ciclo irá mostrar o número de elementos actual, 3, iniciando no indíce zero até ao indíce 2 (0,1,2).

Tags:


josedasilva @ 09:55

Qua, 04/10/06

Qual é o conteúdo da variável $result após a execução da seguinte instrução:



  1. < ?

  2. </li>
  3. $regex = "/(php4|php5|php6)/";

  4. $frase = "A versão de php mais usada é o php4, no entanto o Php5 vem a ganhar terreno, dada a sua melhoria considerável, qual será o fosso quando sair o Php6?";

  5. $result = preg_replace($regex, "<b>$1</b>", $frase);

  6. ?>



Opções:

a) A versão de php mais usada é o php4, no entanto o Php5 vem a ganhar terreno, dada a sua melhoria considerável, qual será o fosso quando sair o Php6?

b) A versão de php mais usada é o php4, no entanto o Php5 vem a ganhar terreno, dada a sua melhoria considerável, qual será o fosso quando sair o Php6?

c) A versão de php mais usada é o php4, no entanto o Php5 vem a ganhar terreno, dada a sua melhoria considerável, qual será o fosso quando sair o Php6?

d) A versão de php mais usada é o php4, no entanto o Php5 vem a ganhar terreno, dada a sua melhoria considerável, qual será o fosso quando sair o Php6?

Tags:


josedasilva @ 11:37

Ter, 03/10/06

Qual será o output do seguinte código PHP:


  1. < ?php

  2. </li>
  3. echo count(strlen("http://php.net"));

  4. ?>



Via Zend Certification Self Test .

Tags:


josedasilva @ 10:12

Seg, 02/10/06

SandwichPara começar bem a semana, uma pitada de humor.

Via xkcd.

Tags:

Blog pessoal de José Silva. Sou programador informático, nos últimos anos dedicado quase exclusivamente ao PHP.
Outubro 2006
Dom
Seg
Ter
Qua
Qui
Sex
Sab

1
2
3
4
5
6
7

8
9
10
11
12
13
14

15
16
17
19
21

22
24
25
27
28

29
30
31


Pesquisar
 
subscrever feeds
blogs SAPO