sabato 28 luglio 2012

Lanciare Sublime Text dalla linea di comando?

La documentazione ufficiale dimentica di dire che per far funzionare il comando
ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" ~/bin/subl
bisogna avere i permessi di amministratore (basta premettere la parolina sudo davanti al comando).

Senza permessi il comando indicato cercherà di creare un alias in un posto nel quale non può senza permessi di amministratore.

lunedì 9 luglio 2012

Rails, logger più colorato e più silenzioso.

Quiet logging

Avete presente quei get get get get che vi invadono la stanza e vi tediano la vita? Con una gemma risparmierete la gommina del pulsante in mezzo al mouse, le giunture delle dita, la frustrazione nel cercare tra mille log uguali quello che a voi interessa. Fa quello che dice. Lo giuro.


Term ansicolor

Inserite in application controller la seguente dicitura:
require 'term/ansicolor' 
include Term::ANSIColor
permette di gustare un dolce logging fatto di grassetto e colori.
Più dolce e poetico di così proprio non si può: https://github.com/flori/term-ansicolor


In futuro?

In futuro potrei provare a studiarmi questo
per generare un output gentile dei record.

domenica 27 maggio 2012

Impostare la compressione su Aruba

Per impostare la compressione Zlip su aruba basta impostare nell'.htaccess queste istruzioni

SetOutputFilter DEFLATE
AddOutputFilter DEFLATE text/plain
AddOutputFilter DEFLATE text/xml
AddOutputFilter DEFLATE application/xhtml+xml
AddOutputFilter DEFLATE text/css
AddOutputFilter DEFLATE application/xml
AddOutputFilter DEFLATE image/svg+xml
AddOutputFilter DEFLATE application/rss+xml
AddOutputFilter DEFLATE application/atom_xml
AddOutputFilter DEFLATE application/x-javascript
AddOutputFilter DEFLATE application/x-httpd-php
AddOutputFilter DEFLATE application/x-httpd-fastphp
AddOutputFilter DEFLATE application/x-httpd-eruby
AddOutputFilter DEFLATE text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.rm$ no-gzip dont-vary
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

fonte http://www.giorgiotave.it/forum/wordpress/126495-compressione-gzip.html

mercoledì 9 maggio 2012

Date e Stringhe in Ruby

Come gestire le date e come cercare e sostituire pezzi di testo all'interno di una stringa

Gestire le date

Ruby può prendere una data e convertirla attraverso la classe Time oppure Date in un oggetto facilmente esplorabile.
# 1) prendere una stringa in qualsiasi formato
str = '2012-05-02 00:00:00 UTC'

# 2) parsarla in una padella d'olio
variabile = Time.parse str

# 3) utilizzare il metodo strftime passandogli il giusto parametro...
variabile.strftime!("%B")

# 4) e l'output sarà May, cotto e mangiato
<%= variabile %>

Sostituire un pezzo di stringa

gsub è un metodo della classe String decisamente fedele e obbediente, capace di rimuovere porzioni di stringa in modo rapido e indolore.
description = 'lorem ipsum dolet [...]'
description.gsub!('[...]','Leggi tutto')


Fonte: Stackoverflow · Ruby Doc · dzone

giovedì 3 maggio 2012

Hash e Array in Ruby / Debug in Rails 3

Hash

#Differenza tra un array ed un hash
hash = {title:'Snowboard',place:'Sahara'}
array = [evento_1,evento_2,evento_3]

#Hash metodi
hash = { :one => "uno", :two => "dos" }
assert_equal 2, hash.values.size
assert_equal __, hash.values.include?("uno")
assert_equal __, hash.keys.include?(":one")
assert_equal __, hash.values.class

La classe Hash è fatta di chiavi e valori.
Sia la chiave che i valori sono array che vengono tra loro associati.
Trattasi di un matrimonio di array.

L'esplorazione avviene con due metodi: le parentesi quadre [] e il metodo fetch.
Le due proprietà principali della classe Hash sono keys e value.
Entrambi se esplorate permettono di utilizzare il metodo .include?

* hash = Hash.new
* hash.size
* hash[:one] #prende l'elemento one
* hash.fetch(:one) #prendere l'elemento one, la differenza è che il fetch scatena un IndexError nel caso in cui si invochi una chiave non esistente
* hash.keys.size
* hash.keys.include?(:two)
* hash.values.include?("uno")
* Hash.new("default value") # quando viene esplorato una chiave non presente

Render Partial

Per caricare una vista parziale
<%= render nome_della_vista %>
Il nome della vista nel file system deve avere l'underscore davanti (ad esempio "_nome_della_vista.erb").
Il metodo render può accettare anche dei parametri aggiuntivi che permettono di specificare un layout per una specifica vista.

<%= render partial: nome_della_vista layout: 'layout_tuo' %>

Debug in Rails 3

Nella vista
debug variabile
Nel controller
logger.warn / logger.info etc.

Fonte: Ruby on Rails Guides · MrWebmaster · Ruby documentation

Code Igniter e la sua arrogante semplicità.

Vuoi prendere tutti dati in post?
$data = $this->input->post();
Fonte CodeIgniter User Guide Codeigniter sessions best practices

Configurare Sublime Text 2 per controllare la sintassi di Ruby e Javascript.


Per controllare la sintassi di ruby in Sublime Text è sufficiente installare il package SublimeLinter di Kronuz.

Ruby


Se volete utilizzare la sintassi di Ruby 1.9 e utilizzate rvm probabilmente vedrete che non correggerà in modo corretto la nuova sintassi.

Per risolvere il problema si può cambiare il file di configurazione del package in questo modo
"sublimelinter_executable_map":
    {
        "ruby": "/users/tuo_nome/.rvm/rubies/ruby-1.9.3-p0/bin/ruby"
    }
Dove il percorso indicato corrisponde alla posizione dell'installazione di Ruby.

Javascript

Per quanto riguarda Javascript utilizzo queste opzioni aggiuntive che mi permettono di evitare l'obbligo di punto e virgola nel finale delle righe js.





Fonte :
SublimeLinter · Stackoverflow · Sublime Text · Liorhakim

lunedì 6 febbraio 2012

Utilizzare l'emulatore android su mac os x

Scaricare la sdk ed installarla.

Attraverso il terminale infilarsi nella cartella di installazione

cd /Users/%Nome del computer%/Public/android-sdk-mac_x86

Creare un profilo avd con il seguente comando

./android create avd -n mionome -t 2

Lanciare il simulatore

./emulator @mionome

Dopo aver atteso un bel pò di tempo tutto funziona (molto lentamente.. il confronto con il simulatore iphone è decisamente impietoso).

Fonte: Android Developer - Managing avds cmdline

mercoledì 10 agosto 2011

Symfony 2 e Mamp, prove di convivenza.

Installazione di Symfony 2

Scaricare il pacchetto e posizionarlo nella root di apache (solitamente htdocs).
fonte Symfony - The Big Picture

Configurazione di Mamp

Una volta inserito nella vostra directory il pacchetto di Symfony, nella pagina di config (http://localhost/symfony/web/config.php) potreste incorrere in questo messaggio:

Major problems have been detected and must be fixed before continuing : Upgrade your APC extension

Personalmente ho provato complicate soluzioni a linea di comando per attivarlo. Poi mi sono accorto che senza alcuna fatica APC si può attivare dal pannello preferenze di Mamp.

mercoledì 29 giugno 2011

Cocos 2D - gestione del tocco dell'utente, azioni e cambio di immagini dinamico.

Per gestire il "tocco" dell'utente è necessario aggiungere dei delegati tramite lo shareddispatcher ed il metodo addTargetedDelegate. SwallowsTouches se è impostato su true impedisce la propagazione degli eventi ad oggetti che sono posizionati al di sotto.

Fondamentale ricordarsi di richiamare i metodi super sia in entrata che in uscita altrimenti molte cose non funzioneranno come previsto.

-(void)onEnter {
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:TRUE];
[super onEnter];
}
In uscita è buona norma rimuoverlo attraverso il metodo removeDelegate.
-(void)onExit{
[[CCTouchDispatcher sharedDispatcher] removeDelegate:self];
[super onExit];
}

Il set di azioni è tra gli strumenti più comodi che cocos2d fornisce. L'utilizzo è semplice e rapido.

martedì 24 marzo 2009

AS3: navigazione a frame e acesso ai figli.

Con la riscrittura di ActionScript c'è stato un sostanziale cambiamento sul come ActionScript interagisce con la timeline e con la navigazione a frame. Un esempio specifico riguarda la navigazione verso un nuovo frame con un movie clip interno a questo frame.

In as2 sarebbe stato sufficente scrivere qualcosa come:

target.gotoAndStop(10);
target.child._rotation = 90;

Dove il figlio del movie clip è un movie clip annidato nel frame 10 del target. Usando target.child._rotation = 90; il movie clip si sarebbe ruotato senza problemi.

Questo non è più possibile in ActionScript 3.