Archive | Opensource RSS for this section

wiimote, wiicontrol, DrNokSnes and n900

Install DrNokSnes and wiicontrol.

Edit /usr/bin/wiicontrol to match this configuration (dont copy/paste, on python indentation level of your statements is significant):

mapping={
‘U’: ["a a"],
‘D’: ["a d"],
‘L’: ["a s"],
‘R’: ["a w"],
‘A’: ["a z"],
‘+’: ["a x"],
‘-’: ["a c"],
’1′: ["a v"],
’2′: ["a b"],
‘H’: ["a n"],
‘GU’: ["a u"],
‘GD’: ["a i"],
‘GL’: ["a o"],
‘GR’: ["a p"],
‘Z’: ["a k"],
‘C’: ["a l"]
}

Start Bluetooth (or wiicontrol crashes).
Start wiicontrol (my wiicontrol freeze and I cant select key setup but it still works).
Setup wiimote (press 1+2).
Start DrNokSnes and tap un titlebar to configure keyboard.

Enjoy!

ruby on rails on nokia N900

Yes, we can! ruby on rails works well on nokia n900.
Install ruby from maemo repository (dev).
Download and install rubygems (use –no-rdoc and –no-ri).

Rubygems creates only /usr/bin/gem1.8 so you should create a soft link like this: ln -s /usr/bin/gem1.8 /usr/bin/gem

Type gem install rails -V and wait.

Now you are ready to start your rails app on nokia n900!
Just run ruby script/server in your project folder. To create a project folder use rails my_app as usual.

Your server may not start if you miss libopenssl-ruby. In this case you get an error about net/https: apt-get install libopenssl-ruby.

Finalmente è arrivato l’N900!

Prima impressione, fantastico!

codice promozione nokia, n900 a 479€!!!

Avete letto bene! Il nuovo dispositivo mobile nokia n900 è acquistabile (pare fino al 12 Dicembre) attraverso lo shop online di nokia a 470€ (prezzo di partenza 599€)!
Per ottenere lo sconto è sufficiente inserire il codice promozione PRWK12 nell’apposito spazio all’interno del carrello. Applicando il codice promozione infatti il prezzo del telefono viene scontato di circa 120€.
La promozione funziona – come potete vedere dalle immagini – e vi consentirà di portare a casa il nuovo gioiellino nokia ad un prezzo veramente interessante, soprattutto se paragonato ad dispositivi simili della concorrenza.
Inoltre va detto che l’n900 non è un “qualsiasi” dispositivo mobile: è una vera rivoluzione perchè basato su Linux! Maemo 5 consentirà finalmente di disporre a pieno delle potenzialità del proprio dispositivo, l’opensource applicato alla telefonia mobile rivoluziona il concetto di telefono. Con l’n900 sai da dove parti (qualità nokia) ma non sai dove arrivi: centinaia di applicazioni liberamente scaricabili, contributi degli utenti, la community opensource produrrà continuamente novità, gratuite e completamente personalizzabili, il tutto sopra un OS linux a base Debian dove ad eccezione di piccole parti di codice nokia, tutto è open. Insomma, una vera svolta di libertà dopo il lungo periodo di prigionia tra le maglie di mr. $ ed la val di non.

rails date validation, rails validate date for date_select

Ok, you are in right place if you need to validate a date from date_select helper.
Expecially if your problem is an invalid date like ’31/02/2009′  that becomes ’02/03/2009′ on rails!
If you don’t want to waste your time read here and don’t go immediatly to rails date validation plugin .

validates_timeliness plugin introduces a lot of great features to validate a date but its documentation is not so cool (this is my absolutely wrong opinion). You have to read it completly or take a look here about 3 important points:

  • I18n
    if you don’t use :en locale you have to implement validates_timeliness default translation in your translations file (for ex. config/locales/it.yml) or you will waste your time to debug stupid exceptions. Default plugin translation file can be found in vendor/plugin/validates_timeliness/lib/validates_timeliness/locale after installation;
  • Validate invalid date (like 31/02/2009 becomes 02/03/09) from select helpers
    You need to know that validates_timeliness doesn’t fix this problem automatically as you expect!
    You have to manually enable validates_timeliness workaround if you need to validate invalid date on rails.
    Put ” ValidatesTimeliness.enable_datetime_select_extension! ” your environment.rb (EOF) to enable validate_timeliness workaround and catch bad dates.
    Note: Patch to ticket #10556 introduced this problem: rails accepts invalid dates from input (instantiate Time object and convert it back to a date).  This problem generates a lot of confusion, checks on controllers, horrible workarounds and so on… A valid reason seems to exist! But WTF!!! People in panic and code with consistency problems…

Any other information (and download) can be find on validates_timeliness at github.

Have a nice day!

 

validates_timeliness

lighttpd, fcgi, rails and child exited with status 9, 1, 2, 3 or X

Ok, these errors are not good. They didn’t tell much about what happended.
But you can’t do as I did. Don’t wander on the dark side of the system…
Just try to execute your FCGI as your lighttpd did.
Find your lighttpd user in lighttpd configuration file (debian: /etc/lighttpd/lighttpd.conf).
On my configuration I see:
server.username  = “www-data”

so…

$ su
# cd /my_rails_root/public
# sudo -u www-data ./dispatch.fcgi

Read what’s happen and solve.
That’s all!

Validazione Codice fiscale Partita IVA con Ruby / Ruby On Rails

Cercando di validare codice fiscale e partita iva con Ruby, sono capitato nel sito di Umberto Salsi, dove si parla della validazione di Partita Iva e Codice Fiscale.

Visto che l’implementazione in Ruby non era disponibile ne ho realizzata una che ho già inoltrato all’autore della pagina perchè possa aggiungerla all’elenco.

Nel frattempo comunque, le due classi che ho preparato sono disponibili per il download.

Il codice Ruby che ho realizzato per eseguire i check di validità su codice fiscale e partita iva non è corredato da alcuna garanzia, potrebbe causare la morte di migliaia di persone, l’incendio del vostro PC, il mutamento del vostro orientamento sessuale, ma in nessun caso potrete ritenermi responsabile. Usatelo a vostro rischio e pericolo! :)

Scarica la validazione Ruby di codice fiscale e partita iva

updated (16/11/2009) – nuova versione con licenza GPL inclusa, descrizione, eccezioni e qualche miglioria

L’utilizzo è molto banale e potete riutilizzare, modificare e redistribuire il codice a vostro piacimento per qualsiasi utilizzo.

Un banale esempio di utilizzo per il codice fiscale:

require 'codice_fiscale'
if CodiceFiscale.valid?('ILTU0C0D1C3FISCAL3')
puts 'il codice fiscale è valido!'
else
puts 'il codice fiscale non è valido!'
end

Un banale esempio di utilizzo per la partita iva:

require 'partita_iva'
if PartitaIva.valid?('02030405060')
puts 'la partita iva è valida!'
else
puts '
la partita iva non è valida!'
end

Sull’opportunità o meno di utilizzare la validazione, vi consiglio di leggere il capitolo “Miti, superstizioni e falsità” sul sito di Umberto Salsi a proposito della validazione del codice fiscale. A tal proposito riporto riassumendo il concetto: usate la validazione ma non sempre è attendibile, potrebbe dare dei falsi negativi, bloccando per esempio la registrazione di utenti legittimi. Viceversa gli utenti malintenzionati potrebbero fabbricarsi in pochi secondi un codice fiscale falso (ma corretto) attraverso uno dei tanti servizi online. La validazione del codice fiscale risulta quindi utile solamente se si vuole eseguire un controllo formale per evitare errori di battitura, ma è solamente controproducente se si cerca con questo mezzo di tener lontano qualcosa e/o qualcuno.

Per quanto riguarda la partita iva vale quanto detto a proposito del codice fiscale.
Tuttavia ho individuato un bel webservice per la validazione delle partita iva messo a disposizione dell’Unione Europea e denominato VIES VAT number validation. Il wsdl e maggiori informazioni sul servizio potete trovarle nelle Faq. Il servizio peraltro funziona, l’ho provato oggi, ed è pure gratuito e discretamente veloce. Interroga i database dei paesi dell’Unione quindi è in grado di fornire validazione anche per le altre partite iva europee. Va sottolineato che non si limita a fare la validazione formale, ma da quanto si apprende attraverso le Faq è anche in grado di verificare se la partita iva esiste realmente ed è attiva. Per alcuni paesi inoltre, fornendo la partita iva, oltre a verificare se esiste ed è disponibile, vengono forniti anche alcuni dati utili sull’azienda tra cui nome ed indirizzo (l’italia è ovviamente esclusa da questa chicca).

Se qualcuno è interessato può scaricare la ruby class for VIES VAT number validation che ho realizzato per un applicativo su base Rails. Per altri usi dovete chiaramente adattarla, ma fa il suo dovere. Ricordate di copiare i wsdl in locale, è una scelta preferibile.

Buona giornata!

linux/debian raid 1 recovery how-to

Hi!

Today one of two harddisks on server fails. How-to repair raid? Easy.

Check raid status (find hda is not updated)

cat /proc/mdstat

If damaged disk is active (for example: only bad sectors) remove it from raid.

mdadm /dev/md0 -r /dev/hda

Turn off your server if hd is not hot-swappable.
Remove damaged hd and replace it with new hd.
Restart your server, be sure that is starts from the old ok hd (ex. hdb). Sometimes bios doesn’t properly updates boot devices and tries to start from new hd or cds, fix it.

System must boot-up properly from old ok hd.

Clean new hd (ex. /dev/hda), remove all partitions.

fdisk /dev/hda

Clean MBR of new disk (to be sure that an old mbr doesn’t exist)

dd if=/dev/zero of=/dev/hda bs=512 count=1

Copy raid partitions scheme from old ok hd.

sfdisk -d /dev/hdb > mbr_hdb.txt

Apply that scheme to your new hd.

sfdisk /dev/hda < /root/mbr_hdb.txt

Add partitions from new disk to your raid

mdadm /dev/md0 -a /dev/hda1

Raid recovery starts.
Check rebuild status

mdadm –detail /dev/md0


/dev/md0:
Version : 00.90
Creation Time : Wed Apr  1 11:10:50 2009
Raid Level : raid1
Array Size : 37110016 (35.39 GiB 38.00 GB)
Used Dev Size : 37110016 (35.39 GiB 38.00 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Fri May  8 11:52:58 2009
State : clean, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1

Rebuild Status : 74% complete

UUID : b1d86bee:0e4dedf0:4ddd5836:05672650
Events : 0.680998

Number   Major   Minor   RaidDevice State
2       3        1        0      spare rebuilding   /dev/hda1
1       3       65        1      active sync   /dev/hdb1

That’s it!
Wait and be happy.

oh…. as you know this is not a complete/best/lucky tutorial, if you follow it you home may explode, your city my be destroyed, but don’t bother me! :) no warranty

Good luck!! :D

sanitize inline css with rails

Hi! You can simply use the sanitize(…) helper in your views to whitelist allowed tags and attributes… but what to do if you need to sanitize the content of a style attribute?  I found a solution to sanitize inline css with rails. This may not be the best solution available, but I didn’t find another solution (like an argument for sanitize helper).

Put this code in your config/enviroment.rb

# ALLOWED CSS PROPERTIES 
HTML::WhiteListSanitizer.allowed_css_properties = Set.new(%w(text-align font-weight text-decoration font-style))
# ALLOWED CSS PROPERTIES - acts like property_name-*, for example `text` allows text-align, text-deco...
HTML::WhiteListSanitizer.shorthand_css_properties = Set.new(%w())

Remember to restart your application, enviroment.rb must be reloaded also in development mode.

Have a nice day!

undefined method `length’ for Enumerable Enumerator on text_helper.rb:50:in `truncate’

With rails 2.0.2 and ruby 1.8.7 you can find this error using rails truncate helper

To solve this problem, paste this code in your enviroment.rb (eof).

module ActionView
  module Helpers
    module TextHelper
      def truncate(text, length = 30, truncate_string = "...")
        if text.nil? then return end
        l = length - truncate_string.chars.to_a.size
        (text.chars.to_a.size > length ? text.chars.to_a[0...l].join + truncate_string : text).to_s
      end
    end
  end
end

Have a nice day!

Follow

Get every new post delivered to your Inbox.