CakePHP, installazione

28 Gennaio 2008

Visto che conosco e lavoro soprattutto con PHP ma mi affascina molto Ruby on Rails ho deciso di provare CakePHP, framework web PHP da molti paragonato al celebre framework scritto in Ruby.

cakePHP

Installazione di cakePHP:

Manuale cakePHP

Requisiti:

  • An HTTP server (like Apache) with the following enabled: sessions, mod_rewrite (not absolutely necessary but preferred)
  • PHP 4.3.2 or greater. Yes, CakePHP works great in either PHP 4 or 5.
  • A database engine (right now, there is support for MySQL 4+, PostgreSQL and a wrapper for ADODB).

Userò Apache, PHP 5 e MySQL.

Scaricare la versione stabile e scompattarla

cake_1.1.19.6305.tar.gz

Esistono due tipi di configurazione per lo sviluppo e per la produzione.

Produzione
In ambiente di produzione è meglio installare CakePHP in una directory indipendente configurando poi il Web server in modo che la cartella di root corrisponda a /path/di/cakephp/app/webroot.

Sviluppo
In ambiente di sviluppo è sufficiente scompattare i sorgenti nella directory di root, all’interno della directory cake.

Io utilizzerò la configurazione per lo sviluppo.

Schema applicazione
/app
   /config
   /controllers
      /components
   /models
   /plugins
   /tmp
   /vendors
   /views
      /elements
      /errors
      /helpers
      /layouts
      /pages
   /webroot
      /css
      /files
      /img
      /js
   /index.php
/cake
/docs
/vendors
/index.php

Configurazione Apache
attivo il modulo mod_rewrite ed ed utilizzo il file .htaccess fornito all’interno dell’installazione standard per poter utilizzare URL puliti e chiari da leggere che non facciano uso di query string.
riscrivere gli url con il modulo modrewrite di apache

Configurazione database
E’ necessario configurare l’accesso al database. Per fare questo bisogna modificare il file app/config/database.php.default e rinominarlo in database.php, modificando i valori dell’array $default.

var $default = array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'project_name',
'prefix' => '');

Creo il database cake

Se vado a http://localhost/cake vedo:

CakePHP Rapid Development

Your database configuration file is present.

Cake is able to connect to the database.

CakePHP release information is on CakeForge
Read the release notes and get the latest version
Editing this Page

To change the content of this page, create: /app/views/pages/home.thtml.
To change its layout, create: /app/views/layouts/default.thtml.
See the views section of the manual for more info
You can also add some CSS styles for your pages at: app/webroot/css/.

Ora sono pronto per scrivere la mia prima applicazione con CakePHP.

Gabba gabba hey
Bonzo

Slimbox wordpress plugin

17 Gennaio 2008

Come ho già avuto occasione di dire, mi piacciono molto le finestre modali per la visualizzazione delle immagini e dove potevo le ho sempre inserite.
Fino ad ora ho utilizzato in particolare lightbox, ma ovviamente ho testato anche altre soluzioni. Ultimamente però ho preso la decisione di utilizzare principalmente mootools come framework javascript quindi, visto che è più funzionale caricare solo una libreria per non appesantire troppo i client, ho deciso di sostituire lightbox con slimbox utilizzando il plugin relativo anche sul blog:

slimbox wordpress plugin/

Eccone alcuni esempi con immagini che già sono state usate nel mio blog.

ruby 06

Sequenza

tab ricezione mail tab ricezione mail

il codice è questo:

Single example:
<a href=”img1.jpg” rel=”lightbox” title=”my caption”>thumbnail1</a>
Image set example:
<a href=”img1.jpg” rel=”lightbox[roadtrip]”>thumbnail1</a>
<a href=”img2.jpg” rel=”lightbox[roadtrip]”>thumbnail2</a>
<a href=”img3.jpg” rel=”lightbox[roadtrip]”>thumbnail3</a>

Ogni volta che si inserisce una immagine bisogna aggiungere l’attributo rel, lightbox se è solo una immagine o lightbox[roadtrip] se si vuole creare una sequenza.

Gabba Gabba Hey
Bonzo

Primo programma con Ruby on Rails

2 Settembre 2007

Un po’ per i problemi con mod_ruby, un po’ per la curiosità troppo forte ho iniziato a provare Rails, il potente framework per la programmazione web.

L’installazione l’ho fatta tramite Ruby Gems e l’unico problema che mi ha dato ( su Debian e non su Mandriva) è stato il fatto che lo script rails per creare una nuova applicazione non era nella cartella giusta, e quindi il comando all’inizio non funzionava.
Ecco il comando per installare Ruby via Gems:
gem install rails --include-dependencies

Le applicazioni Rails saranno in /var/rails/.

Ecco passo per passo il primo programma fatto in Rails, una classica applicazione in stile Hello World.

Creiamo l’applicazione Rails:

nathan:/var/rails# rails hello_bonzo
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create components
create db
create doc
create lib
create lib/tasks
create log
create public/images
create public/javascripts
create public/stylesheets
create script/performance
create script/process
create test/fixtures
create test/functional
create test/integration
create test/mocks/development
create test/mocks/test
create test/unit
create vendor
create vendor/plugins
create tmp/sessions
create tmp/sockets
create tmp/cache
create tmp/pids
create Rakefile
create README
create app/controllers/application.rb
create app/helpers/application_helper.rb
create test/test_helper.rb
create config/database.yml
create config/routes.rb
create public/.htaccess
create config/boot.rb
create config/environment.rb
create config/environments/production.rb
create config/environments/development.rb
create config/environments/test.rb
create script/about
create script/breakpointer
create script/console
create script/destroy
create script/generate
create script/performance/benchmarker
create script/performance/profiler
create script/process/reaper
create script/process/spawner
create script/process/inspector
create script/runner
create script/server
create script/plugin
create public/dispatch.rb
create public/dispatch.cgi
create public/dispatch.fcgi
create public/404.html
create public/500.html
create public/index.html
create public/favicon.ico
create public/robots.txt
create public/images/rails.png
create public/javascripts/prototype.js
create public/javascripts/effects.js
create public/javascripts/dragdrop.js
create public/javascripts/controls.js
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log

Il comando rails crea la struttura dell’applicazione hello_bonzo creando una serie di cartelle e file.

Creiamo un controller vuoto:
nathan:/var/rails# cd hello_bonzo/
nathan:/var/rails/hello_bonzo# script/generate controller Hello_bonzo
exists app/controllers/
exists app/helpers/
create app/views/hello_bonzo
exists test/functional/
create app/controllers/hello_bonzo_controller.rb
create test/functional/hello_bonzo_controller_test.rb
create app/helpers/hello_bonzo_helper.rb

Abbiamo creato un controller vuoto, il file:
var/rails/hello_bonzo/apps/controller/hello_bonzo_controller.rb
che contiene questo codice:

class HelloBonzoController < ApplicationController
end

Proviamo a vedere l’applicazione lanciando il server integrato.
Ecco il risultato:

nathan:/var/rails/hello_bonzo# script/server
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Ruby version is not up-to-date; loading cgi_multipart_eof_fix
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart).
** Rails signals registered. HUP => reload (without restart). It might not work well.
** Mongrel available at 0.0.0.0:3000
** Use CTRL-C to stop.

Per me parte Mongrel perché l’ho installato (gem install mongrel), se no di default partirebbe webrick, il server integrato.
Vado alla pagina con porta 3000:
http://0.0.0.0:3000/hello_bonzo

Mi dice:

Unknown action
No action responded to index

non c’è metodo all’azione index

Creo il metodo index rendendo così il controller:

class HelloBonzoController < ApplicationController
def index
end
end

Richiamo la pagina:

Template is missing
Missing template script/../config/../app/views/hello_bonzo/index.rhtml

Manca la view.
Creo il file:
/var/rails/app/views/hello_bonzo/index.rhtml

Nel file scrivo:


Hello Bonzo

oggi è: <%= @time %>

<%= link_to "Goodbye", :action => “goodbye” %>




(ilcodice html viene interpretato dal browser, quindi sul post non riuscite a vederlo, dovete vedere il sorgente della pagina)
Per usare time inserisco nel metodo index del controller la riga:
@time = Time.now
se ricarico la pagina ho:

Hello Bonzo

oggi è: Sun Sep 02 23:43:01 +0200 2007

Goodbye

Trasformo così il controller aggiungendo il metodo goodbye:

class HelloBonzoController < ApplicationController
def index
@time = Time.now
end
def goodbye
end
end

Nella cartella /app/views/hello_bonzo
Metto il file goodbye.rhtml:



Goodbye Bonzo

Grazie di essere passato da noi

<%= link_to "Hello Bonzo", :action => “index” %>


Alla fine avrò una semplice applicazione in cui ho due pagine collegate tra loro da un link.
Per ora non è molto, ma intanto comincio a prendere confidenza con Ruby, Rails e MVC.

Gabba Gabba Hey
Bonzo

Eruby

26 Agosto 2007

Eruby sta per Embedded Ruby ed è un modo di usare ruby in maniera molto simile a quello che si fa generalmente con PHP e ASP e cioè mischiandolo con il codice html, creando pagine web in maniera dinamica.

Installando su apache il modulo apposito mod-ruby, è possibile usare ruby come linguaggio server-side per creare siti dinamici.
Basta includere il codice ruby all’interno di <% "codice" %> e il tutto verrà processato e produrrà il giusto output.
Ecco un piccolo esempio di file eruby lanciato da shell, dove sotto vedete il file con codice ruby:
Sono le ore <%print time now%>
e sopra il risultato del comando shell eruby prova.txt, cioè la stampa a video della data, ora corrente.

prova eruby, sono le ore wed jun 13 15:17:14 +0200 2007

Purtroppo ho passato l’ultimo mese a provare a installare e configurare il modulo ruby di apache, e non ci sono riuscito.
Quindi per ora embedded ruby resta un po’ nel cassetto. Questo forse è solo un bene, perchè ormai è chiaro che mischiare codice html e codice server-side rende solo il progetto poco manutenibile, quindi largo a nuove tecniche, in particolare al pattern MVC (Model-View-Controller).

Gabba Gabba Hey
Bonzo

Ho deciso, Studierò Ruby

25 Agosto 2007

Ebbene si, alla fine ho deciso, studierò Ruby! Come molti negli ultimi tempi mi sono fatto attrarre da questo linguaggio venuto dall’oriente, in particolare dal Giappone.
Le cose che mi attraggono in ruby sono queste:

  • Il forte paradigma ad oggetti del linguaggio. In Ruby ogni cosa è un oggetto, e questo da grosse potenzialità.
  • La sua ottima predisposizione per la programmazione web, anche grazie al famosissimo framework Ruby on Rails, al quale sono ovviamente molto interessato.

Finite le chiacchere ecco i primi approcci con i due “amici” di ruby:

Irb
Acronimo di Interactive RuBy, ha un comportamento simile alla riga di comando di unix. Lanciato il comando si apre un prompt dove è possibile inserire istruzioni o addirittura veri e propri programmi scritti in ruby e poi vederne subito il risultato.
Eccone alcuni esempi:
irb 1
irb 2

ri
Un programma che contiene la documentazione di ruby e che lanciato da riga comando permette di avere tutte le informazioni su un metodo, una classe o una funzione della libreria standard di ruby in maniera molto veloce.

Questo non è molto, ma nei prossimi tempi approfondirò Ruby, eruby e Rails.

Gabba Gabba Hey
Bonzo