Symbian rilascia il port di Ruby 1.9 per il mobile

Symbian ha rilasciato un port dedicato al proprio sistema operativo mobile di Ruby 1.9. Sebbene porting non ufficiali fossero già stati rilasciati in passato, l’installazione e l’utilizzo di una versione ufficiale e l’interesse dimostrato da Symbian per Ruby ci rende tutti più felici.
Continua »

RubyMine: IDE intelligente per Ruby e Rails

JetBrains è una software house che si è fatta conoscere per IntelliJ IDEA, l’editor forse più evoluto per Java. E’ di questi giorni il rilascio in Public Preview di RubyMine, l’IDE derivata da IntelliJ IDEA dedicata a Ruby e Rails.
Continua »

Rails 2.2 RC1: prossimi al rilascio della nuova versione di Rails

Con la regolarità propria dei progetti Open Source più maturi è stata rilasciata la versione 2.2 RC1 di Rails. Se non si troveranno bug particolarmente problematici l’uscita di Rails 2.2 non dovrebbe tardare. Non sono previsti cambiamenti di API significativi, quindi tutti i progetti realizzati in Rails 2.x dovrebbero continuare a funzionare senza problemi. Vediamo nel dettaglio le funzionalità e le nuove possibilità del framework web.

  1. Internazionalizzazione (i18n) - Rails integra un framework completo per l’internazionalizzazione delle applicazioni; non è quindi più necessario installare plugin esterni per accedere a queste funzionalità.
  2. Ottimizzazioni per Ruby 1.9 e jRuby - Rails fino ad ora non poteva vantare la compatibilità con l’ultima versione di Ruby, la 1.9, e non sfruttava fino in fondo le caratteristiche di jRuby (l’implementazione di Ruby sponsorizzata da Sun); la nuova versione di Rails, grazie anche al thread safety, sarà in grado di sfruttare in modo più efficiente queste ottime implementazione.
  3. Migliore integrazione con il protocollo HTTP - L’amore di Rails per il protocollo HTTP è già stato dimostrato con l’adozione del paradigma REST; con l’imminente versione si potrà avere un controllo completo sugli ETag dello header HTTP per un sistema di caching invidiabile.
  4. Thread safety - Rails ha sempre seguito il modello architetturale share nothing per cui un processo è in grado di processare una sola richiesta HTTP alla volta coinvolgendo l’intero stack di moduli del framework; con la nuova versione sarà possibile gestire con un solo processo più richieste contemporaneamente, oppure mantenere la situazione attuale tramite configurazione. Questo si applica sia all’utilizzo con Mongrel, Thin o Passenger / mod_rails
  5. Connection Pool - Sempre nell’ottica di processare più richieste HTTP con una stessa istanza del framework, è stato implementato un connection pool verso il database configurabile direttamente dal file config/database.yml; questa funzionalità e ad oggi limitata da alcuni driver per database che non gestiscono più connessioni contemporaneamente.
  6. Nuovi finder dinamici - Ora possibile scrivere find_last_by_<attribute> che corrisponde a Model.last(:conditions ⇒ {:attribute ⇒ value}); un intero set di altri finder dinamici sono disponibili in Active Record

Per installare la nuova versione di Rails prma della sua uscita ufficiale è sufficiente digitare dal terminale gem install rails -s http://gems.rubyonrails.org -v 2.2.0

WSO2 Web Services Framework per Ruby

WSO2 Web Services Framework per Ruby (o più semplicemente WSO2 WSF/Ruby), è un’estensione open source per il linguaggio Ruby per la creazione di web service e client per web service.
Continua »

Ruby in Steel PE: Visual Studio incontra Ruby e Rails

Nella scelta degli editor / IDE per i propri progetti Ruby e Rails possiamo contare su una nuova possibilità, che senza dubbio farà felice i programmatori Windows e .NET. E’ infatti disponibile gratuitamente la versione “personale” di Ruby in Steel, l’editor per Ruby basato su Microsoft Visual Studio 2008.
Continua »

Ubuntu Linux per desktop deludente

Durante la scorsa estate ho installato Ubuntu Linux su un PC fisso data l’esigenza di utilizzare il kit di sviluppo CUDA di Nvidia. Nonostante la mia prima esperienza con Linux risalga a una decina di anni fa, negli ultimi anni non ho mai utlizzato Linux su Desktop, preferendo Windows prima e OSX ora. La mia scelta è caduta sulla distribuzione Ubuntu perché l’unica con aspirazione ad essere una distribuzione pensata per il desktop e supportata dal kit di sviluppo CUDA, e non avevo intenzione di complicarmi la vita e avevo la necessità di concentrarsi sullo sviluppo e non sulla gestione del sistema operativo; cercavo, in una parola, una distribuzione per desktop facile e che desse il minimo dei problemi.

Dopo qualche mese di utilizzo devo ammettere che Ubuntu, pur offrendo un desktop sempre funzionante, ha saputo deludermi sotto molti aspetti, e mi ha fatto riflettere sulla reale possibilità di Linux di essere utilizzato come sistema operativo Desktop.
Continua »

Apple iPhone e Google Android G1: perché c’è spazio per tutti

A poco tempo dal rilascio del gioiellino della Apple nella versione 2.0 (e successive, imminente l’update del software alla versione 2.2), è arrivata a sorpresa la notizia della disponibilità di G1, il primo telefono (o smartphone se lo volete chiamare così) che utilizza Google Android come sistema operativo e piattaforma di sviluppo. Viene quasi spontaneo voler mettere in concorrenza le due piattaforme, paragonare prestazioni, prezzi, disponibilità del software, e trovare un futuro vincitore e un futuro sconfitto.

Non credo che quello fra iPhone e G1 sia uno scontro diretto.

I contendenti

Apple iPhone

iphone

Apple ha lanciato con iPhone un prodotto alla moda, per molti aspetti innovativo (l’interazione con l’utente tramite touch screen e accelerometro, l’assenza quasi totale di tasti) ma anche limitato da scelte tecnologiche quantomeno coraggiose (una piattaforma di sviluppo basata sul linguaggio Objective-C, un sistema operativo direttamente derivata da OSX). IPhone è integrato con iTunes per offrire un’esperienza completa e tramite lo store della Apple si possono scaricare gratuitamente o acquistare sia musica che applicazioni da utilizzare sul proprio iPhone, a patto che siano approvate dalla stessa Apple. L’iPhone costa, non poco, e offre tutte le integrazioni che un prodotto “corporate” deve avere, a partire con l’integrazione con Exchange e tutte le infrastrutture di casa Microsoft per le aziende.

Google Android G1

Google Android G1

Google Android nella sua prima incarnazione G1 è un prodotto decisamente più economico, con un’interfaccia sicuramente efficace ma in linea con gli altri telefoni evoluti; Google Android è basato su tecnologie Linux e Java, entrambe molto diffuse e conosciute dalla maggior parte degli sviluppatori software. La piattaforma Google Android è completamente libera e Open Source, e non sembra ci sia all’orizzonte lo spauracchio di qualche NDA così come capitato per la piattaforma Apple.

Il futuro come il passato

Non è difficile pensare quale fra le due tecnologie sarà la più diffusa da qui a un anno. Per chi sviluppa applicazioni mobile Google Android è una piattaforma molto più accessibile dell’iPhone (si trovano sicuramente più sviluppatori Java che non sviluppatori Objective-C), per chi acquista il prezzo alto dell’iPhone sarà un ostacolo a volte insormontabile. In termini di diffusione è facile pensare ad una vittoria di Google Android su Apple iPhone.

A ben pensare la situazione è la stessa presente da anni nel mercato dei personal computer. Apple offre computer che costano di più rispetto ai PC, e che puntano sull’innovazione e sulla qualità, sull’esperienza totale (dall’hardware al software) e sul prestigio che il marchio ha costruito negli anni della direzione Jobs. I PC sono più economici, sono senza dubbio più diffusi, e Windows continua ad essere incontrastato il sistema operativo più utilizzato sui desktop di tutto il mondo. Ma proprio questo chiudersi nei propri ideali e nella propria peculiarità ha permesso ad Apple non solo di sopravvivere, ma di essere una firma forte e sinonimo di innovazione.

Nel mobile, così come nel mondo dei computer desktop, Apple iPhone occuperà una nicchia ristretta ma profittevole, Google Android (insieme alla risposta Nokia che verrà, e che stiamo per ora ignorando) occuperà la fetta maggiore di mercato, quella dei “feature phone”.

Porticus: MacPorts con interfaccia grafica

Ho intercettato un twitt di Coby Randquist su Porticus; è bello avere consigli così preziosi nei momenti meno attesi.

Uno degli aspetti che mi ha sempre interessato di OSX è la sua duplice natura; da una parte è un sistema operativo *nix-like, di diretta discendenza BSD, ottima piattaforma per lo sviluppo di codice e per l’utilizzo di applicazioni e servizi Open Source, dall’altra è un sistema operativo preso in considerazione da case di software quali Adobe / Macromedia, Microsoft, Steinberg per il rilascio del proprio software proprietario.

Tutti i sistemi operativi di ispirazione BSD offrono la possibilità di installare software Open Source nella forma di pacchetti chiamati “port”; un port non è altro che la pacchettizzazione del codice sorgente di un progetto pronto per essere installato sulla propria macchina. OSX, che affonda le proprie radici proprio nel sistema operativo BSD, offre i MacPorts, e tramite i MacPorts è possibile accedere ad una libreria sconfinata di software da installare sul proprio Mac. Qualsiasi installazione OSX può utilizzare i MacPorts tramite riga di comando, ma Porticus rende tutto decisamente più intuitivo.

Porticus - GUI per MacPorts su OSX

Dopo aver installato Porticus (come una qualsiasi applicazione OSX) si ha accesso alla lista dei pacchetti messi a disposizione nel repository MacPorts e alla lista dei pacchetti presenti sul proprio sistema; è quindi possibile scegliere i nuovi pacchetti da installare e richiederne la compilazione e l’installazione con pochi click, oppure di aggiornare pacchetti già presenti sul proprio sistema.

Porticus non è il tipo di applicazione che fa rimanere a bocca aperta, quanto il tipo di soluzione in grado di farti fare qualcosa in modo semplice e intuitivo.

tog: creare una community con Rails

Stavo cercando qualcosa di pronto all’uso per il progetto di una community da sviluppare in Rails; bene o male tutte le community hanno alcune funzionalità in comune come la registrazione degli utenti, la possibilità di scambiarsi messaggi privati, di creare gruppi e di generare contenuti ogirinali da condividere con gli altri utenti.

Le scelte che avevo individuato fino ad ora erano troppo intrusive. Lovd By Less e Insoshi sono applicazioni complete da utilizzare come base per lo sviluppo, e diventano la spina dorsale dell’applicazione, mentre Community Engine è un plugin applicabile a qualsiasi applicazione che aggiunge però in blocco una serie di funzionalità che non sono sempre richieste

Tutte queste soluzioni sono Open Source ed è quindi possibile intervenire sul codice per cambiare alcuni comportamenti o disattivare delle funzionalità, ma questa può rivelarsi una scelta non felice perché preclude l’upgrade trasparente delle nuove versioni della soluzione e ci costringe a imparare il funzionamento del codice che abbiamo aggiunto.

Oggi ho trovato una soluzione alternativa, tog. tog è installabile come plugin proprio come Community Engine, ma invece di offrire un unico grande plugin da installare in blocco, mette a disposizione una serie di plugin dedicati che possono essere applicati o no alla propria applicazione. Questa granularità nella scelta delle funzionalità da utilizzare è senza dubbio molto pratica e potrebbe rilevarsi l’elemento distintivo vincente di tog rispetto alle altre soluzioni.

Metaprogrammazione in Ruby

class Wrapper
  attr_accessor :internal

  def self.forwards(*methods)
    [*methods].each do |method|
      class_eval("
        def #{method}(*args, &blk)
          self.internal.send(#{method.to_sym.inspect}, *args, &blk)
        end
      ")
    end
  end

  forwards :to_i, :length, :split
end

w = Wrapper.new
w.internal = "12 13 14"
puts w.to_i
puts w.length
puts w.split('1')
« go backkeep looking »