lunedì 3 settembre 2012
CSS, tecnica di replacement di Nicolas Gallagher
Il primo zero rappresenta la dimensione, il secondo l'altezza di linea (line-height) e la terza la famiglia del font ed è necessaria solo per coerenza con la validazione css.
Text-shadow serve solo nel caso in cui il testo erediti ombre e il color transparent invece cura dei problemi presenti in safari 4.
Fonte http://nicolasgallagher.com/another-css-image-replacement-technique/ · http://css-tricks.com/examples/ImageReplacement/
sabato 28 luglio 2012
Lanciare Sublime Text dalla linea di comando?
ln -s "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl" ~/bin/sublbisogna 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
Term ansicolor
Inserite in application controller la seguente dicitura:require 'term/ansicolor'
include Term::ANSIColorpermette 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?
domenica 27 maggio 2012
Impostare la compressione su Aruba
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
lunedì 14 maggio 2012
mercoledì 9 maggio 2012
Date e Stringhe in Ruby
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
<%= 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 vistadebug variabileNel controller
logger.warn / logger.info etc.
Fonte: Ruby on Rails Guides · MrWebmaster · Ruby documentation
Code Igniter e la sua arrogante semplicità.
$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":Dove il percorso indicato corrisponde alla posizione dell'installazione di Ruby.
{
"ruby": "/users/tuo_nome/.rvm/rubies/ruby-1.9.3-p0/bin/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).
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 {In uscita è buona norma rimuoverlo attraverso il metodo removeDelegate.
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:TRUE];
[super onEnter];
}
-(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.