Archivio di Giugno 2008

Importare file CSV

Giovedì, 26 Giugno 2008

La gestione di file CSV in una moderna web application è da considerarsi quasi obbligatoria per le enormi possibilità di gestione di listini e catalogo prodotti. Vediamo come gestire l’importazione

(more…)

Testare la ram difettosa in macosx

Giovedì, 26 Giugno 2008

Mi è capitato di recente di aver acquistato della ram a poco prezzo e come tutti sanno c’è sempre un motivo se alcune cose costano poco mentre altre costano di più…quel motivo è senz’altro LA QUALITA’! Questo vale anche nel mio lavoro…siti, software e grafica fatti a poco prezzo sono quasi sempre fatti alla velocità della luce a discapito della qualità. Ma questo discorso meriterebbe almeno 10 articoli di approfondimento.

Andiamo al dunque…

(more…)

Acts_as_ferret e will_paginate

Giovedì, 26 Giugno 2008

Utilizzo da un pò questi due preziosissimi plugin per la ricerca su grandi quantità di dati.

Ferret è il porting in ruby di Lucene e sostanzialmente è un motore di ricerca fulltext mentre will_paginate è un plugin per la paginazione (di prodotti nel caso di un negozio online per esempio).

Oggi volevo paginare i risultati di una ricerca fatta con ferret…ed ho avuto vari problemi.

In pratica mi funzionava solamente la prima pagina, mentre dalla seconda in poi non dava più risultati, dopo qualche minuto di analisi (grazie anche a firebug) mi sono accorot che la stringa che rappresentava la query di ricerca veniva “persa” nel passaggio alla pagina successiva.

Ho quindi escogitato questo stratagemma poco elegante ma per lo meno funzionante (ho molta fretta oggi :) )

if !params[:query].nil?
@query = params[:query].downcase
session[:query] = @query
else
@query = session[:query]
end

Questo codice non fa altro che salvare in sessione la stringa di ricerca se questa non è stata ritrasmessa.

Perdonatemi la “pressapochezza” di questo post ma sono veramente di super fretta oggi.

Se avete problemi contattatemi

Filippo

Sqlite GUI per Macosx (e non solo…)

Venerdì, 20 Giugno 2008

Da quando sono passato a Rails 2 ho iniziato ad utilizzare il fantastico sqlite3 in ambiente di sviluppo. E’ ottimale perché mi permette di sviluppare le mie applicazioni da computer differenti (e con altri sviluppatori grazie a SVN) senza la rottura di scatole di dover ogni volta passare il file sql, creare tabelle, creare database e server mysql da avviare. Sqlite3 è il db di default in Leopard e questo rende tutto più semplice.

Una cosa di cui sono fermamente convinto è che a volte è necessario “visualizzare” le cose per capirle fino in fondo. Vi è mai capitato di non comprendere cosa stesse succedendo al vostro database? Vorreste dare una sbirciatina rapida al contenuto delle tabelle? Fino a ieri avevo il mio amico CocoaMySql ad aiutarmi, ora invece con sqlite3 non sapevo come fare.

Ho fatto delle ricerche su google ma non ho trovato nessun programma interessante e/o free che mi aiutasse in questo scopo…alla fine il colpo di genio. E se esistesse una estensione per Firefox? Detto fatto :)

SQLite Manager extension for Firefox

Meravigliosa estensione, semplice e rapida e soprattutto sempre a portata di mano.

Beh, buon lavoro!

Filippo

Globalize in Rails 2: ArgumentError: wrong number of arguments (2 for 1)

Giovedì, 19 Giugno 2008

Sto lavorando con Globalize per rendere il mio CMS multilingua. L’installazione è andata a buon fine pur utilizzando Rails 2.0.2 (globalize non è ancora stato aggiornato a Rails 2.x).

Nel momento in cui cercavo di salvare la traduzione di uno dei campi dei miei modelli ricevevo questo fastidiosissimo errore:

ArgumentError: wrong number of arguments (2 for 1)

Questo perché in Rails 2.x il metodo attributes_with_quotes ha, a differenza di rails 1.x, due argomenti e viene ridefinito (con un argomento solo) dal plugin Globalize nel file db_translate.rb (/vendor/plugin/globalize/lib/globalize/localization/db_translate.rb)

La versione corretta funziona perfettamente (testata con 2.0.2) e ve la riporto qui sotto:

def attributes_with_quotes(include_primary_key = true, include_readonly_attributes = true)         
          if Locale.base?
            quoted = attributes.inject({}) do |quoted, (name, value)|
              if column = column_for_attribute(name)
                quoted[name] = quote_value(value, column) unless !include_primary_key && column.primary
              end
              quoted
            end
          else
            quoted = attributes.inject({}) do |quoted, (name, value)|
              if !self.class.globalize_facets_hash.has_key?(name) &&
                column = column_for_attribute(name)
                quoted[name] = quote_value(value, column) unless !include_primary_key && column.primary
              end
              quoted
            end
          end
          include_readonly_attributes ? quoted : remove_readonly_attributes(quoted)
        end

Se avete problemi contattatemi!
Filippo