#16 Costruendo un framework...20/02/2008 PERMALINKUltimamente ho la necessità di creare siti con contenuti dinamici sempre più spesso (per lavoro e non), il mio Eucalyptus già mi da una bella mano ma sento che nello sviluppo delle mie applicazioni mi serve più velocità e minor spreco di tempo per riuscire a coniugare lavoro e tempo libero... Ora siccome sono molto restio a studiarmi un manuale di un framework già esistente e siccome ho una mentalità di sviluppo mia, in cui mi ci trovo bene, ho deciso di scrivermi un mio framework e di rilasciarlo sotto licenza GPL perchè forse a qualcuno può interessare...
Eucalyptus cambierà un po' la sua funzione, anche se sto ancora decidendo se continuare il progetto (attualmente un po' arenato, lo ammetto... :P), magari gli cambierò nome... Ho preparato uno schema di quello che intendo realizzare:
Logica di funzionamento del framework
Le parti evidenziate in giallo sono quelle in cui dovrà mettere mano lo sviluppatore quando creerà un nuovo progetto, del resto se ne occuperà il framework. Cerco di spiegarvi:
Il framework supporterà il normale metodo di richiesta HTTP sia il metodo, ora molto in auge AJAX, perciò l'utente potrà richiedere una pagina in uno di questi modi. Una volta inviata la richiesta il sistema interpellerà Eucalyptus in caso di richieste http, mentre richiamerà l'AJAX SYS in caso di richieste ajax. Entrambi i sistemi si occuperanno di cercare le operazioni da fare, ogni operazione (ogni tag di ricerca di eucalyptus, n.d.r) sarà memorizzato in un database SQLite che si occuperà anche di fare la cache del return di questi comandi (oppure verrà usato APC); una volta che tutti i comandi sono stati risolti dal sistema la pagina può essere ritornata all'utente.
Un sito/applicazione sviluppato/a in questa maniera necessiterà di avere installato il framework, su un framework potranno girare più applicazioni grazie ad N db sqlite.
Oltre al motore del framework sto realizzando un gestionale che permetta di gestire velocemente i comandi, impostando i valori di cache, il posizionamento all'interno del template ecc.
Non sperate di vedere qualcosa on-line entro breve tempo perchè sarà un lavoraccio...
<GidanMX2@php> ragazzi
<GidanMX2@php> stavo pensando...
<GidanMX2@php> ma esiste qualche modulo di apache
<GidanMX2@php> che mi permette di salvare in RAM dei dati
<GidanMX2@php> e di poterli poi recuperare?
<GidanMX2@php> così dato che i processi di apache sono sempre attivi nel webserver
<GidanMX2@php> e tramite php ho l'esigenza di salvarmi delle cose in RAM
<GidanMX2@php> per poi poterle usare...
<GidanMX2@php> volevo fare una specie di cache in ram...
<GidanMX2@php> per piccole cose s'intende
<mac1985@php> credo che se si potesse non esisterebbero nemmeno le sessioni... :)
<mac1985@php> e cmq non vedo l'utilita' dello scrivere in ram :P
<GidanMX2@php> mac1985, no quello è diverso
<GidanMX2@php> le sessioni sono univoche per ogni utente
<GidanMX2@php> inoltre la RAM è limitata
<mac1985@php> ah, dici una cosa globale?
<GidanMX2@php> mac1985, l'utilità è che per piccole cose sarebbe utile
<GidanMX2@php> mac1985, si, ovvio
<mac1985@php> piccole o grandi, io non vedo utilita', scrivere in ram e' pericoloso sempre!
<mac1985@php> soprattutto quando parliamo di macchine sulle quali gira un servizio
<GidanMX2@php> mac1985, provoca il cancro? :D
<GidanMX2@php> se lo pseudo modulo riserva della memoria
<GidanMX2@php> non vedo il problema...
<mac1985@php> no, ma dubito che ci siano strumenti che lascino i programmatori liberi di mandare a donnine un servizio per un banale errore di programmazione
<GidanMX2@php> oh, il mondo è pieno di memory leak
<mac1985@php> beh....a questo punto ti appoggi ad un db e ti togli il pensiero, o no?
<GidanMX2@php> mac1985, stavo proprio cercando di liberare un po' di carico dal database
<GidanMX2@php> potrei creare dei semplici file
<GidanMX2@php> ma sarebbe stato figo usare la ram
<GidanMX2@php> tanto sono dati che se anche vanno persi non mi frega nulla
<mac1985@php> lol, e vuoi usare la ram per dei dati non sensibili?
<mac1985@php> :)
<GidanMX2@php> e dato che è un applicazione che gira su un server che viene sfruttato al 1% volevo occupare un po' di risorse
<GidanMX2@php> mac1985, tu hai troppa paura della RAM eh?
<GidanMX2@php> mica ci salvi i dati sensibili in ram
<mac1985@php> beh, data la media di errori di programmazione, me ne guarderei bene da un modulo del genere :D
<mac1985@php> una sorta di auto-protezione contro me stesso
<mac1985@php> non so se rendo l'idea :P
<GidanMX2@php> mac1985, beh se hai mai usato assembly e C non ti spaventi ad occupare un po' di ram
<GidanMX2@php> la usi sempre ma non te ne accorgi eh? :)
<GidanMX2@php> quando crei un array
<mac1985@php> no, non ci metti roba sensibile, ma se ho roba che non ha molta importanza mica tolgo ram ad un servizio :P
<GidanMX2@php> dove credi che si salvi? :)
<mac1985@php> rofl, ho programmato sia in assembly che in c/c++ eccetera
<mac1985@php> so benissimo dove si salvano le cose
<GidanMX2@php> mac1985, ma chi la toglie io voglio un modulo che me la allochi e che la possa gestire
<GidanMX2@php> ma apache non può ravanare nella ram di altri processi
<mac1985@php> ma in una applicazione web in php....beh, non la vedo una buona idea l'usare la ram per metterci variabili che devono restarci
<GidanMX2@php> ma si era per snellire il tutto ora ci sono script php che stanno in background
<GidanMX2@php> ma usare il mod_php
<GidanMX2@php> e un qualcosa per avere una ram che non mi muore quando termina lo script
<GidanMX2@php> mi farebbe comodo
<mac1985@php> :) saro' rinco io, ma non vedo che scomodita' c'e' nell'usare un file o il db
<mac1985@php> anzi non vedo proprio differenza lol
<GidanMX2@php> mac1985, il db è escluso c'è troppo traffico
<GidanMX2@php> il file sarebbe la soluzione
<GidanMX2@php> io chiedevo solo
<GidanMX2@php> se era possibile
<GidanMX2@php> sappiamo tutti che la RAM
<GidanMX2@php> è più rapida del disco
<mac1985@php> che io sappia...no
<mac1985@php> rofl, nanosecondi che nemmeno noti quando cambi pagina
<mac1985@php> visto che il tutto si riduce al collo di bottiglia che e' la rete
<GidanMX2@php> eh insomma...
<GidanMX2@php> io devo solo creare un sistema di cache per questa app, perchè ora il db oracle
<GidanMX2@php> è sottoposto a troppo traffico
<GidanMX2@php> dunque sai a me quanto fregava di occupare un po' di ram su sto server
<GidanMX2@php> quando eccedeva svuotavo tutto
<GidanMX2@php> e rifacevo le query
<mac1985@php> google non mi trova nulla a riguardo. :P
<GidanMX2@php> mal che vada lascio girare sto script in background
<mac1985@php> ;) vado a dormire, notte
<GidanMX2@php> http://tangent.org/417/Apache-Storage.html
<GidanMX2@php> qualcosa
<GidanMX2@php> simile a questo...
<GidanMX2@php> ok dai ora è tardi domani ci smanetto su
<|andrea|@php> GidanMX2, apc
<allanh@php> |andrea| secondo te da problemi usare exec con imagemagick.. penso sia ok.. o non conviene?
<|andrea|@php> allanh, dove lavoro lo usano regolarmente
<|andrea|@php> cmq ho visto proprio ora che c'e' un modulo apposta
<|andrea|@php> GidanMX2: memcache
#14 Non è tutto oro ciò che luccica...15/02/2008 PERMALINKNavigando, mi sono imbattuto per caso in questo sito: http://www.bymichaelo.com/bandfphoto.htm. Vi consiglio di farci un salto, passate il mouse sopra le immagini per vedere il "prima" photoshop e il "dopo", dove il trucco fallisce..., veramente un ottimo artista, fatevi un giro per il sito...
#12 Disegnare una linea retta con The Gimp31/01/2008 PERMALINKDopo tante bestemmie e molte ricerche ho finalmente capito come si disegna una linea retta!
Il procedimento è tanto semplice quanto nascosto, per tracciare una retta bisogna selezionare lo strumento "Matita", posizionarsi sull'immagine in cui bisognerà tracciare la retta, fare click nel punto in cui deve iniziare la retta, premere e tenere premuto shift e fare click nel punto in cui deve finire.
#11 CFLAGS was changed in "xxx". Fix it to use EXTRA_CFLAGS.31/01/2008 PERMALINKOggi mi è capitato cercando di compilare il pacchetto "app-laptop/acer_acpi-0.8.2" questo errore:
CFLAGS was changed in "/var/tmp/portage/app-laptop/acer_acpi-0.8.2/work/acer_acpi-0.8.2/Makefile". Fix it to use EXTRA_CFLAGS.
Per sistemare questo errore bisogna fare tre semplici cose:
1) Entrate da root in /usr/portage/distfiles/, estraete l'archivio acer_acpi-0.8.2.tar.bz2, modificate il file Makefile cercando CFLAGS+= e sostituite con EXTRA_CFLAGS= 2) Ora recatevi in /usr/portage/app-laptop/acer_acpi e date questo comando: ebuild acer_acpi-0.8.2.ebuild digest 3) Ora potete far partire la compilazione: emerge =app-laptop/acer_acpi-0.8.2
Le modifiche all'albero di portage verranno sovrascritte al prossimo merge, se volete che siano permanenti createvi un overlay in locale.
RewriteEngine On
RewriteBase /
RewriteRule ^dir\/([^\\|\.]+)$ dir/index.php?m=$1 [L]
Questo è il contenuto del file .htaccess per far si che ogni URL del tipo: http://www.tuosito.com/dir/qualcosa venga trasformata in http://www.tuosito.com/dir/?m=qualcosa.
L'espressione regolare che uso è un workaround per far si che solo i "qualcosa" senza backslash e senza i punti siano re-indirizzati, questo perchè altrimenti la regola serebbe espansa a tutte le subdirectory, ovviamente questa URL http://www.tuosito.com/dir/nome.qualcosa non è valida, ma al mio scopo non interessava, se volete qualcosa di più preciso per supportare anche le estensioni dei file, potete usare le regole che 'guardano indietro' come per esempio (?<!\.\/) sempre che mod_rewrite supporti queste cose, non ho provato, se volete farlo voi...
Comunque sia, condivino a pieno le citazioni che riporta il manuale di mod_rewrite...è proprio un vodoo...
#8 Giù le armi... 'addio' Bill!08/01/2008 PERMALINKMa si, alla fine credo che noi tutti gli dobbiamo un 'grazie' e ora che lascia il comando della Microsoft anche noi pinguini dovremmo salutarlo come si deve!
Io, come credo molti altri ho mosso i primi passi sul suo DOS, poi ho avuto un periodo da partigiano con i Mach, poi Windows e ora odio i suoi prodotti utilizzando il sistema operativo dei veri killer, Linux; Tuttavia sento che senza il suo contributo non sarei qui a scrivere queste cose, dunque mi sento di dirlo: Grazie! E buona continuazione... (lo so che non leggerà mai queste righe :P)