Consigli per migliorare il proprio lavoro da casa

Posted by Dibi Store Fri, 20 Jun 2008 05:39:00 GMT

Se siete alla ricerca di un elenco completo di consigli per lavorare da casa,questo articolo in lingua inglese potrebbe interessarvi.

Posted in  | Tags  | no comments | no trackbacks

La vecchia storia...

Posted by Dibi Store Wed, 04 Jun 2008 20:49:00 GMT

There’s the old story of the young project manager, where his senior programmer announced she was pregnant and going to leave the project, and he protested that this “wasn’t on the project plan.”

Posted in  | no comments | no trackbacks

Pseudocodice e top down per migliorare la nostra produttività

Posted by Dibi Store Wed, 26 Dec 2007 16:31:00 GMT

Lo pseudocodice è una particolare tecnica che ci aiuta nella scrittura di un codice migliore, più efficente e in un tempo minore. Lo pseudocodice può non è un codice eseguibile direttamente da un computer, bensì ci aiuta nel tradurre l'algoritmo (o procedura) nel nostro linguaggio preferito. Oggi dimostretrò come questo, unito alla tecnica top down possa aiutarci in molte occasioni.

Enunciazione del problema

Il nostro obiettivo sarà quello di stampare il fattoriale dei numeri da 1 a 5 in formato tabellare, usando come linguaggio il C. A scopo didattico non verrà utilizzata nessuna libreria per effettuare il calcolo. Il fattoriale di un numero x, non è altro che il prodotto di se stesso per tutti i numeri in ordine decresente a partire da se stesso fino a 1. Per esempio il fattoriale di 5 é: 5! = 5 * 4 * 3 * 2 * 1. Anche se può sembrare a prima lista banale, il programma presenta molte caratteristiche che risaltano i vantaggi dell'uso dello pseudocodice e della tecnica top down.

risultato finale:
  1	1
  2	2
  3	6
  4	24
  5	120

La tecnica top down prevede che si parta da un unica dichiarazione dell'obiettivo su una riga (o poche al massimo), che però descriva sempre completamente l'algoritmo. Potremmo quindi iniziare scrivendo questo pseudocodice:

  Stampa in formato tabellare il prodotto dei numeri da 1 a 5.

Ovviamente questo codice è ben lontano dal poter essere convertito in codice reale, per qui andremo man mano ad estenderlo. In particolare ragionando sul problema è chiaro che avremo bisogno di alcune variabili e di qualche iterazione:

  inizializzare le variabili
  
  Per ogni numero da 1 a 5
      stampa il fattoriale di ogni numero

Le cose cominciano ad essere interessanti, infatti notate che abbiamo dapprima inserito una nuova istruzione per l'inizializzazione delle variabili, e annunciato un ciclo che itera su tutti i numeri. Per quanto banale questo comincia già a creare una certa struttura al nostro codice e a chiarire un po le idee. Infine notate gli spazi e le indentazioni che rendono più leggibile lo pseudocodice.

Ragionando per un momento sul problema, ci viene chiaro che avremmo bisogno di 3 variabili, una sarà l'iteratore principale che useremo nel primo ciclo, che per comodità chiameremo number, di una variabile secondaria che chiamerermo i che servirà per un secondo ciclo (dobbiamo costruire un iterazione per calcolare il fattoriale), e infine una variabile sum che conterrà il prodotto delle iterazioni del secondo ciclo. Non preoccupatevi se non capite subito il mio ragionamento, in quanto l'obiettivo non è capire il significato del codice ma imparare a usare le due tecniche che ho presentato:

    inizializzare variabili number, i e sum
    
    Per ogni numero da 1 a 5(usa number come variabile di controllo)
        stampa il numero corrente seguito da un segno di tabulazione
        
        assegna a sum un valore uguale a number
        
        per ogni numero in ordine decrescente da number a 1(usa i come variabile di controllo)
            moltiplica sum per i
            
        stampa sum

Questo codice non sarà difficile da convertire in un linguaggio come il C:

  #include "stdio.h"

  int main ()
  {
  	int number, y, sum;

  	for(number = 1; number <= 5; ++number)
  	{
  		printf("%d\t", number );
  		sum = number;

  		for ( y = number; y > 1; --y)
  			sum *= y - 1;

  		printf("%d\n", sum );

  	} /* for */

  	return 0;
  }

Che produrrà il risultato desiderato:

  dibistore:4 oskar$ gcc esercizio3.c 
  dibistore:4 oskar$ ./a.out 
  1	    1
  2	    2
  3	    6
  4	    24
  5	    120
  dibistore:4 oskar$ 

Conclusioni

Avete imparato le tecniche base per scrivere un buon pseudocodice e avete sperimentato la tecnica top down. Sono sicuro che potranno tornarvi molto utili, specialmente quando un problema sembra contorto. Vi consiglio di esercitarvi un pò con queste tecniche, cercando magari un pò di documentazione online. Uno dei vantaggi più grandi a mio parere dello pseudocodice è che ora sarà estremamente semplice riscrivere lo stesso codice in un altro linguaggio, per esempio ruby:

  (1..5).each do |number|
    printf("#{number}\t")
    sum = number

    number.downto(2) {|y| sum *= y - 1 }

    printf("#{sum}\n")

  end
  

Posted in  | Tags  | no comments | no trackbacks

Introduzione a GIT, il Version Control System by Linus Torvalds

Posted by Dibi Store Sat, 22 Dec 2007 10:27:00 GMT

Git è uno strumento che permette di tenere traccia delle versioni di sviluppo (e non solo) dei nostri files, in parole povere è un ottimo sostituto di svn.

Git è molto utile in quanto permette di tenere traccia dei nostri lavori in locale, senza quindi la necessità di un repository online, e sta avendo molti consensi da parte della community, in particolare, potete trovare un ottimo screencast nel sito peepcode.

In questo tutorial partirò dall' installazione di git, alla configurazione ed infine ad un esempio d'uso, che comunque vi consiglio di prendere in seria considerazione, ossia di tenere sempre una versione di rails a disposizione, completa di tutti i plugin che usiamo sempre, e ovviamente i nostri files di configurazione, come tra l'altro suggerito nel nuovo libro advanced rails recipes.

Installazione di GIT

Potete installare git direttamente da sorgente, scaricandolo direttamente dal sito ufficiale, oppure con il vostro packet manager preferito (in base alla vostra distribuzione).
In questo esempio mostrerò il semplice comando da eseguire nel caso abbiate a disposizione mac ports:

sudo port install git-core

Configurazione

La configurazione base di Git è semplice, di default vi basterà indicare il vostro nome e il vostro indirizzo email, in modo che possa essere visualizzato nel repository, comunque le configurazione potrete poi vederle nel file ~/.gitconfig

git config --global user.name "Del Ben Oscar"
git config --global user.email 'my@email.com'

Creiamo il progetto rails

Questo è semplice e dovreste già saperlo fare, comunque ora creerò un progetto rails, rinominerò il file config/database.yml in config/database.example.yml, rimuoverò i logs, i files temp e public/index.html:

rails rails
cd rails
mv config/database{,.example}.yml
rm log/*
rake tmp:clear
rm public/index.html

Pronti con Git!

Ora viene il bello, con il semplice comando git init, creeremo i files necessari per git, in pratica una directory .git contenente alcuni files interessanti, che siete liberi (anzi consiglio) di guardare, invece cosa molto utile è creare nella root del progetto il file .gitignore, in qui potremmo scrivere tutti i files che git dovrà ignorare:

touch .gitignore

Io ho aggiunto *.log ad esempio, ma nei vostri progetti aggiungete pure se necessario i files di database e informazioni che non devono essere contenuti nella versione salvata nel repository. Ora siamo pronti al primo commit (nel nostro repository locale), quindi con il prossimo comando, prima aggiungerò tutti i files (dobbiamo dire a git cosa includere) e poi eseguirò il commit:

git add .
git commit -m "Primo commit rails"

Ora è vostro compito aggiungere tutti quei plugin e files (anche javascript, css, ecc) che usate comunemente in tutte le vostre applicazioni, come titolo di esempio mostro come aggiungere il plugin will paginate:

./script/plugin install svn://errtheblog.com/svn/plugins/will_paginate
git status
git add vendor/
git commit -m "Aggiunto plugin will paginate"

Il comando git status vi dice che i files dovete aggiungerli a git, se volete salvarli nel repository ovviamente. Molto simile il comando git rm vi permette di rimuovere files se necessario ovviamente. Ripete l'operazione per tutti i plugins, files ecc che vi servono

La potenza dei branch

Qualunque persona che segua un progetto di qualsiasi dimensione, è abituato ad utilizzare almeno 2 versioni, una di sviluppo, e una di produzione. Ovviamente per fare cio, vengono solitamente tenute due directory separate, con git invece, abbiamo a disposizione una nuova feauture chiamata brench. In questo modo potremo usare piu versioni contemporaneamente, per vedere la versione che state usando, digitate semplicemente git brench. Per darvi un idea di cosa potete fare, create un nuovo branch con il comando:

git checkout test

Ora create un file qualsiasi dentro l'applicazione, salvatelo e aggiungetelo con il comando git add /path/to/file. Ovviamente committate, e poi tornate al branch master (quello creato di default), con il comando:

  git checkout master

Magnifico! Il file non c'è più! Questo significa che avete a disposizione 2 ambienti completamente separati, e potete spostarvi da un all'altro quando volete. Vi starete domandando cosa accade se aggiungete un pezzo di codice in un file esistente nell'altro branch, provate pure! Inutile dire che potete poi aggiornare l'altro branch con le modifiche che nel frattempo avete fatto, in questo caso il comando è git rebase nome_branch, ma questo è già un concetto più avanzato (seppur semplice).

Conclusione

Ora sarete in grado di creare una copia della vostra applicazione in qualsiasi momento semplicemente con il comando git clone rails path/to/new/app. Ovviamente potrete nel corso del tempo modificare la vostra versione di rails in base alle vostre esigenze.

Posted in  | Tags  | 2 comments | no trackbacks

Nuova sezione del blog

Posted by Dibi Store Sat, 01 Dec 2007 09:11:00 GMT

Oggi ho trovato una risorsa molto utile, che consiglio vivamente a chi vuole fare qualche esercizio di programmazione (non importa particolarmente il linguaggio che usate).

Pubblicherò quindi le soluzioni in una nuova categoria del blog, che chiamerò metodologie, che conterrà spero le soluzioni a buona parte dei quesiti, più molti altri articoli interessanti.

Posted in  | Tags  | no comments | no trackbacks