PDI^2

programming.reddit’ed di nuovo

personale, blogosfera, software October 27, 2007 9:25 am (Save post)

Ho scritto un post sull’overview di ecmascript 4 e sono finito sulla prima pagina di programming.reddit, fico.

Adesso sono precipitato ma continuo a ricevere parecchie visite, ma la cosa interessante è, come al solito, la statistica dei browser: (le ultime cento e qualcosa, da lloogg.com):

Firefox/2 (76)
Opera/9 (10)
MSIE 7 (9)
Iceweasel/2 (6)
Safari/522 (6)
Safari/419 (5)
Firefox/1 (3)
Safari/523 (1)
MSIE 6 (1)

Basta scegliersi il pubblico adeguato e basta preoccupazioni con Internet Explorer, il suo market share è irrilevante ;)

3 plugin per VIm

software October 25, 2007 8:15 am (Save post)

Ultimamente ho cominciato ad usare ben tre plugin per VIm, tutti e tre abbastanza rodati e decisamente utili.

Il primo è dbext, che in pratica trasforma l’editor in uno strumento per l’interazione con i database, permettendo la scrittura di SQL e l’esecuzione live delle istruzioni, con tanto di autocompletion.
I risultati delle query vengono mostrati in un altro buffer, che è a sua volta editabile. Insomma, è un’alternativa molto interessante rispetto alla solita shell del database da riga di comando, quantomeno perché permette di modificare le query multilinea appena eseguite senza impazzire.
Oltretutto la configurazione interattiva è semplicissima e permettendo di interfacciarsi con praticamente tutto.

Infine, è possibile avere configurazioni multiple e cambiarle durante la sessione di lavoro, una figata.

Il secondo plugin è Project, che in pratica è “la lista dei file come dovrebbe essere“.
Infatti, un progetto altro non è che una fold formattata in un certo modo, ovvero:

nome=/path/project/ filter=\"*.c *.h\"{
 Foo.c
 Foo.h
 Bar.c
 }

su questa fold potete eseguire dei comandi (doppio clic o invio per aprire un file, \r per ricaricare etc), e basta tenere il file con le fold aperto in un buffer per usarlo come lista file del progetto.
Ma non solo: Project permette di avere fold annidate, e se seguite la procedura interattiva di creazione di un progetto vi creerà automaticamente fold per ogni directory ricorsivamente.

Ma siccome un progetto è solo una lista di stringhe in un file, spostandovi nella finestra della lista potrete cancellare o modificare le definizioni, ad esempio rimuovere la cartella dei log che non serve, filtrare i file README o .txt, usare solo i .xml nella cartella exampledocs e così via.

Il terzo plugin è rails.vim. , che fa un sacco di cose fiche, ad esempio fa si che sia possibile eseguire gli script o i task di rake. Ma soprattutto, fa funzionare gf (Goto File) in modo rails-ish.
Il che significa che ad esempio se state modificando routes.rb e c’è una linea come

 map.resource :books

spostando il cursore su books e scrivendo gf automaticamente verrà aperto il controller BookController.
Non solo, offre dei comandi standard per passare ai file correlati, per cui potete saltare con la pressione di tre tasti dal modello allo unit test alle fixture al controller . E ovviamente se usate un mapping custom potete farlo con un tasto solo :)

coComments diventa uno schifo, passo a co.mments e mi scrive l’estensione

programmazione, web, software August 31, 2007 10:32 am (Save post)

La versione 2.0 beta di coComments è stata accolta da una salva di critiche enorme, al punto che gli autori hanno tenuto a specificare che no, suvvia, non è che deve rimanere così, gli utenti sono quelli che comandano etc etc…

A me però anche dopo le ri-modifiche continua a non piacere. Già prima era abbastanza bruttino, e l’estensione per firefox, per quanto potente, era ultralenta.

Per cui sto sperimentando con co.mments.com, che ha un tracking dei commenti molto migliore.

Purtroppo non ha integrazione col browser, il che significa dover cliccare su una bookmarklet per registrare una conversazione e visitare il sito per vedere le novità (o leggere il feed).

Per la prima cosa, non è un vero problema, e anzi, ha dei vantaggi.

La seconda è un po’ scomoda, per cui ho smanettato un po’ e mi son tirato fuori un’estensione per firefox che mostra un’iconcina colorata nella status bar quando ci sono nuovi commenti, e cliccando sulla quale si può andare a vedere il tracking.
Ho smanettato due ore, poi le divinità di javascript mi hanno dato una mano e ho ottenuto una cosa funzionante in 4 minuti netti.

Se volete provarla fate un fischio.

Aggiornare tumblr da cellulare

italia, software July 9, 2007 11:56 am (Save post)

Dovere di cronaca: continuo a non usare tumblr ma siccome so che svariati tra i lettori lo fanno (e se volete potete lasciare un commento e dirmi dove sta il vostro tumblelog, nel caso non lo abbia ancora trovato) mi pare giusto fare propagando a questa applicazioncina di Federico che permette di postare su tumblr da cellulare.

Dannati geek che non siete altro :P .

Subversion 1.5 e il cherry picking

programmazione, software May 15, 2007 3:12 pm (Save post)

Pare che la futura versione 1.5 di subversion, il noto software di revisione, avrà finalmente delle caratteristiche avanzate di merging, tra cui il cherry picking.

Il cherry picking è secondo me la funzionalità più utile che si possa avere in un sistema di controllo di revisione, e come l’esempio ottimale penso sia darcs, anche se credo che ormai altri software possano avvicinarsi come funzionalità (svk, mercurial?)

In pratica, immaginate una situazione del genere:

  • alice pubblica il software XYZ
  • bob scarica XYZ
  • bob modifica helo.c (azione 1)
  • bob rinomina helo.c in hello.c (azione 2)
  • bob modifica quit.h (azione 3)
  • bob invia l’intero pacco di cambiamenti ad alice

Ora: alice guarda la patch e decide che il cambiamento di nome è in realtà errato (il file deve veramente chiamarsi helo.c) ma vuole comunque importare le modifiche per quit.h.
Il cherry picking è proprio questo: alcuni cambiamenti sono indipendenti, ed è possibile scegliere selettivamente di importarne solo alcuni e ignorare il resto.

Volendo, alice può importare il solo cambiamento 1, e ignorare 2 e 3.
Se invece decide di importare 2 il sistema la costringe ad importare anche 1, in quanto c’è effettivamente dipendenza tra i due.

darcs rende l’operazione incredibilmente semplice, mostrando le varie patch indipendenti e permettendo di selezionarle singolarmente, a gruppi interdipendenti, tutte insieme o escludendono specificamente alcune (e nel caso, non mostrando le altre che ne dipendono).

Ovviamente questo sistema è tanto più utile quanto più lo sviluppo è decentralizzato, ma anche nell’ambito di SVN sarebbe utilissimo. Non rimane che attendere :)

Cambiare User Agent in firefox

web, software April 8, 2007 7:41 pm (Save post)

non so se vi è mai capitato, ma a volte può essere comodo cambiare lo user agent in firefox dal classico “Mozilla 5.0 foo bar baz” in qualcosa di più interessante, come FeedBurner o googlebot o IE, tanto per verificare le vostre rewrite rule o entrare in qualche sito che fa controlli scemi.

In tal caso, il mio approccio funzionante è stato:

  1. scrivete about:config nella barra degli indirizzi
  2. cliccate col destro nella lista delle voci e selezionate New->String
  3. create una nuova voce general.useragent.override
  4. assegnategli il valore che volete
  5. verificate che sia in uso scrivendo nella barra degli indirizzi about: e controllando l’ultima riga, “build identifier”

Ok, è una piccola cosa, ma mooolto utile :)

Varnish: programmare nel terzo millennio

linux, software, C April 2, 2007 10:02 pm (Save post)

Mi è capitato l’altro giorno di inciampare su varnish , un acceleratore HTTP per freebsd e linux dal design innovativo, che presenta alcuni punti interessanti.

Anzitutto, fa un sacco di cose: gestione del caching, compressione, load balancing etc. Ma vabè, sono cose abbastanza standard.

Una cosa più carina è l’utilizzo di un linguaggio per la configurazione che viene effettivamente compilato e linkato con il programma, in modo da massimizzare le prestazioni, e da queste parti certe cose le apprezziamo.

Ma il vero motivo per cui il progetto si merita un link è per le Notes from the Architect, ovvero un testo che spiega quali siano le differenze di progettazione tra Varnish e altri software analoghi (in particolare l’autore usa Squid come esempio).

Il tipo, oltre ad essere l’autore della beerware license comunemente usata, è un programmatore di lunga data, si è scritto una sua malloc(), e ha trafficato a lungo nel kernel di freebsd, quindi assumiamo sia una persona vagamente competente.

Cosa si dice nelle note architetturali?
Il testo è interessante, perché sostiene che molti dei programmi attuali sono scritti in uno stile obsoleto che aveva senso 30 anni fa ma che ora fa più danni che bene
Ad esempio, i software non fanno affidamento sulle VM dei sistemi operativi moderni, e cercano di gestire da se la paginazione su disco della cache, creando un overhead notevole senza alcun guadagno, dato che i kernel sono perfettamente in grado di capire cosa swappare e cosa no (e le cpu supportano in hardware certe cose da una vita).
Inoltre, i sistemi SMP/SMT moderni e le ampie cache on die impongono uno stile di programmazione differente dai vecchi 386, che non viene sfruttato, e spesso neanche gestito, da certi software.

Insomma, dateci una letta. Certo, non c’è neanche un benchmark quindi potrebbe essere tutta fuffa, ma d’altronde, anche i benchmark sono fuffa, no? ;)

Login OpenID via XMPP via Firefox via un server sudafricano

personale, web, italia, software, Identity March 31, 2007 12:54 pm (Save post)

Ovvvero, il miglior modo per ottenere qualcosa è suggerirlo vagamente a un buon hacker.
Checché ne dica bard, io gli ho solo detto “oh, sai esiste una cosa carina per autenticarsi su openid via xmpp“, ed è stata la sua avidità di creazione a generare una estensione per firefox per l’autenticazione OpenID via XMPP.

Per maggiori info vi rimando all’articolo su openid.it, posso solo dirvi che funziona da paura, ma non va benissimo con gli account GTalk (per colpa del relaying party, non per l’estensione).

command not found in Ubuntu Feisty

linux, software March 21, 2007 11:22 pm (Save post)

Queste sono le piccole cose che avrebbero dovuto essere in uso da un decennio.
Installando il pacchetto command-not-found, apt verrà in aiuto dell’utente ogni volta che viene lanciato un comando che non c’è nel sistema, dicendogli cosa deve installare per usarlo.

Semplice e geniale, installato di default nella prossima ubuntu.

Geany, editor/ide leggero per gnome

gtk, software March 19, 2007 12:13 am (Save post)

Mio fratello deve fare un progettino lavorando con i pthread (brr..) e purtroppo non è ancora in grado di lavorare con VIm, per cui mi sono messo a cercare un qualcosa che fosse un po’ più user friendly, e che avesse un filino di funzionalità in più di gedit (leggasi: i bottoni “compile” e “execute”).

Frugando in apt mi è venuto fuori questo geany, che è un mini-ide basato su gtk2, molto leggero ma abbastanza ben fatto, per quel che ho visto, con code folding, un minimo di autocompletion, syntax highlight, console degli errori di compilazione.. Bravi, 7++ :)

Get free blog up and running in minutes with Blogsome
Theme designed by Janis Joseph