Archive for the ‘software’ Category

Learning iOS game programming

Thursday, January 12th, 2012

Il libro è un ottima introduzione allo sviluppo di giochi per iPhone ma la conoscenza della  programmazione in Objective-C per iOS rimane comunque un prerequisito necessario per affrontare la lettura di questo libro.

Il libro si sviluppa iniziando dal game design fino al assemblaggio finale del progetto passando per la gestione del game loop, la gestione degli sprite e delle animazioni, tile mapping, particle emitters, la gestione audio e dell’interazione umana.

Il risultato finale del libro è il gioco completo Sir Lamorak’s Quest scaricabile da appStore.

Riferimenti :

Learning iOS Game Programming: A Hands-On Guide to Building Your First iPhone Game

Per una guida introduttiva allo sviluppo iOS (in inglese)
Wiley Beginning iOS 4 Application Development

 

Smiles for Moebius disponibile per il download

Wednesday, April 20th, 2011

Smiles for Moebius è appena stata approvata ed è disponibile su AppStore a questo indirizzo.
E’ un gioco gratuito, molto semplice in cui bisogna far sorridere le faccine che cadono dall’alto.



 

Phonegap: richiamare l’app mappe dell’iPhone

Wednesday, March 23rd, 2011

Nello sviluppo di una nuova versione dell’applicazione A.I.S.Mo Info, ho voluto inserire una nuova feature per facilitare la ricerca e la localizzazione delle strutture di riferimento (Ospedali e centri medici) che si occupano di diversi aspetti riguardanti la malattia.

Cercando sul wiki di phonegap, si trovano alcuni interventi che spiegano come aprire l’applicazione map con link del tipo “openmap:”  metodi che non sono mai riuscito a far funzionare sul mio dispositivo e soprattutto non funzionano neanche sul simulatore.

Il metodo che ho trovato e implementato, consiste nel modificare il metodo webView nel delegate della applicazione creata, in modo da intercettare il link al sito maps.goggle.com.

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType) navigationType {
if ([[[request URL] absoluteString] rangeOfString:@"http://maps.google.com].location != NSNotFound) {
// Open in native Maps App
[[UIApplication sharedApplication] openURL:[request URL]];
return NO;
}
else
return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
}

Questo metodo ovviamente funziona solo per iPhone, per android è necessario implementare un qualche altro tipo di meccanismo.
Una nota sul Build service di phonegap: adesso è possibile compilare l’applicazione anche per iOS previo caricamento di un certificato da sviluppatore e di un provisioning profile

iTelevoto lite disponibile su AppStore

Saturday, March 5th, 2011

iTelevoto lite è disponibile da oggi su AppStore italiano.

Fra poco potrai televotare la tua trasmissione televisiva o radiofonica preferita con pochi click e risparmiando tempo. La configurazione è libera: puoi usare iTelevoto lite per qualsiasi trasmissione per votare i tuoi beniamini, la tua canzone preferita o rispondere velocemente ad un telequiz.

Ecco alcuni esempi di configurazione.

I proventi della pubblicità presente sull’applicazione saranno devoluti all’Associazione Italiana Sindrome di Moebius

Phonegap Build Service

Friday, December 10th, 2010

Ho già parlato di phonegap in un precedente post ed essendo un framework, necessita un ambiente di sviluppo per poter creare i pacchetti da rilasciare: grazie a questo servizio “cloud” non sarà piu’ necessario avere hardware e software per rilasciare una applicazione sui vari dispositivi mobili.

Avendo già rilasciato una applicazione basata su phonegap (A.I.S.Mo. Info) per iPhone,  ho riutilizzato quanto in precedenza sviluppato; lo zip contenente tutte le pagine html, i css e il javascript è stato caricato sul sito build.phonegap.com. (del codice originale ho eliminato solo alcuni riferimenti ad admob)

 

Finito l’upload parte automaticamente la compilazione per le 4 piattarforme attualmente supportate (Blackberry,WebOS,android,Symbian)

Dopo qualche minuto il risultato

 

Selezionando il titolo dell’applicazione, è possibile visualizzare e scaricare le applicazioni tramite i QR code

 

Le applicazioni create sono state poi testate su un Nokia e51 (schermo troppo piccolo!!!) e su un Ideos con android 2.2 (ottimo!!)

Mancanze della beta:

  • iOS non ancora supportato
  • non vengono gestiti i certificati per un rilascio definitivo (è una beta e non è fatta per un rilascio effettivo) è necessario quindi abilitare l’esecuzione di applicaizoni non firmate.
  • vari bug in giro (es icone non visualizzate)

C’è da lavorare  ma promette bene.

Phonegap tutorial – installazione

Thursday, September 30th, 2010

La mia prima applicazione rilasciata su appStore utilizza phoneGap.

PhoneGap è un framework crossplatform opensource che permette di costruire applicazioni per dispositivi portatili (nel nostro caso iPhone) usando HTML e javascript. Esiste anche per android, blackberry, symbian e palm.

XCode è comunque necessario per creare e pacchettizzare l’applicazione definitiva per l’appStore. E’ inoltre necessario un Mac Intel con Leopard o Snow Leopard.

Passiamo ora all’installazione di PhoneGap.

Il primo passo è di scaricare e compilare il codice per creare il template XCode di PhoneGap, successivamente vedremo come creare e personalizzare una applicazione.

Per poter scaricare il codice sorgente, è necessario che GIT sia installato sul nostro sistema (git è un sistema di versioning alla stregua di svn o cvs, ndr in maniera semplicistica) a questo link potete scaricare l’installare

Aprite un terminale, posizionatevi nella vostra cartella di lavoro preferita e digitate queste linee di codice:

git clone git://github.com/phonegap/phonegap-iphone.git

Una volta scaricati i sorgenti, entrare nella directory creata e digitare questi altri comandi:

git submodule init
git submodule update
make

Verificare che XCode si chiuso e poi eseguire da Finder il PhoneGapInstaller.pkg.

Finita l’installazione aprire XCode e creare un nuovo progetto selezionando PhoneGap dall’elenco degli User Templates.

Prima di procedere con lo sviluppo, se avete un xCode con sdk iOs4.x dovrete con ogni probabilità selezionare il BASE SDK, facendo doppio click sul nome progetto ed  entrando nella sezione build->architetture

Selezionate iPhoneSimulator  e adesso potete lanciare la vostra applicazione.

A questo punto potrete creare le vostre pagine html/css/js  all’interno della cartella www del vostro progetto.

Nota:

Nell’area TOOLS del sito phoneGap, esiste un simulatore che permette di testare in locale (e anche su macchine windows)   l’applicazione scritta con questo framework. Inoltre il simulatore permette di provare anche l’accellerometro e il GPS.


 

Installare SnowLeopard su un macbook con drive rotto e senza un mac a disposizione

Monday, September 13th, 2010

Recentemente ho recuperato un macbook 2,1 con  tiger installato ma con il superdrive rotto. Ho sostituito il disco fisso passando a 250 Gb, ma a quel punto è sorto un problema: come fare a installare SnowLeopard ?

Cercando su internet o trovato diverse soluzioni (chiavetta USB bootable con installazione di Snow Leopard etc) ma tutte richiedevano almeno un mac a disposizione e io non ne avevo per le mani: avevo solo un notebook DELL.

La soluzione ? DELL + cd bootable di rebel EFI + dvd di Snow Leopard.

  1. smontare l’hd dal macbook
  2. montare l’hd sul pc portatile
  3. fare il boot dal cd del rebel EFI
  4. quando richiesto inserire il dvd di snow leopard e procedere con l’installazione
  5. Partizionare il disco da disk utility (1 partizione con GUID)
  6. installare i pacchetti voluti
  7. finita la copia dei file, il pc eseguirà un riavvio. A questo punto spegnere tutto e rimontare il disco sul macbook.
  8. avviare il macbook e procedere con la configurazione del sistema ed avete finito.

Bilanciamento e deploy dinamico di un cluster con mod-cluster

Monday, August 16th, 2010

Nel mio articolo precedente ho descritto come configurare il mod_jk in presenza di piu’ cluster in modo anche da diminuire i costi dovuti alla replica delle sessioni in caso di cluster estesi.

Oggi vedremo un nuovo modulo sviluppato da jboss per la gestione dinamica del cluster:  il mod-cluster.

Questo modulo, oltre ad inoltrare le richieste dal web server verso gli application server,  apre un nuovo canale di comunicazione dagli application servers e il web server: i nodi del cluster trasmettono in questo modo i dati riguardanti i pesi di bilanciamento e gli eventi che avvengono sui server (start/stop/deploy/undeploy).

Con questa configurazione non è necessario quindi configurare staticamente i moduli del mod_jk affichè il web server inoltri le richieste al nodo corretto, ma sarà il nodo stesso ad aggiornare la configurazione del proxy.

Altra caratteristica interessante è il graceful shutdown:  il server che si intende spegnere, continuerà a rispondere alle richieste in atto e si spegnerà quando nessun client utilizzerà le risorse del server.

Riassumendo i vantaggi:

  • configurazione dinamica dei worker httpd
  • graceful shutdown
  • il calcolo del peso di load balancing avviene lato server
  • gestione “fine” del ciclo di vita della web application
  • supporto SSL nelle comunicazioni

I requisiti:

  • httpd 2.2.8 o superiore
  • Jboss AS 5.0 o superiore o jbossWeb 2.1.1

Mod_jk – la direttiva domain e loadbalancing su piu’ datacenter

Thursday, July 8th, 2010

A partire dalla versione 1.2.8 del mod_jk è disponibile la nuova direttiva domain, che permette di suddividere in gruppi i workers cosi’ da diminuire la banda occupata per la replica delle sessioni: invece di replicare la sessione su tutti i nodi del cluster, basterà replicare la sessione all’interno dei nodi dello stesso dominio.
Se uno dei nodi dovesse cadere, la richiesta verrà indirizzata su nodo attivo all’interno dello stesso dominio.

Questo è molto utile nel caso di nodi distribuiti su più datacenter; in questo modo non è necessario replicare la sessione attraverso i datacenter.

Nota: Per usare questa ottimizzazione è necessario attivare le sticky session

Se ad esempio avessimo due datacenter uno a Milano e uno a Londra, si potranno installare 2 cluster indipendenti sui 2 datacenter (tomcat o jboss). Lato apache verranno definiti i domini nel workers.properties

worker.list=balancer,status

worker.node1.type=ajp13
worker.node1.host=server1
worker.node1.port=8009
worker.node1.domain=milano

worker.node2.type=ajp13
worker.node2.host=server2
worker.node2.port=8009
worker.node2.domain=milano

worker.node3.type=ajp13
worker.node3.host=server3
worker.node3.port=8009
worker.node3.domain=londra

worker.node4.type=ajp13
worker.node4.host=server4
worker.node4.port=8009
worker.node4.domain=londra

worker.balancer.type=lb
worker.balancer.balance_workers=node1,node2,node3,node4
worker.balancer.sticky_session=True

worker.status.type=status

mod_jk_domain

Questa configurazione è statica, se si volesse aggiungere un nodo ad un dominio sarebbe necessario modificare il file workers.properties su tutti gli apache e ricaricare la configurazione.

Per una gestione piu’ dinamica sia die nodi che delle applicazione ci viene incontro il modulo mod_cluster di cui parlero’ in un altro articolo

bundles shareware: strategie diverse per editor diversi

Monday, March 22nd, 2010

Dopo la mia ultima conversione a MacOsX ho inziato a frequentare diversi forum sull’argomento, per cui sono venuto a conoscenza della pubblicazione di diversi bundles di applicazioni commerciali  e mi ha fatto riflettere la diversa strategia utilizzata dai diversi editor.
Analizzero’ per quanto mi è possibile (non sono esperto di marketing) 3 diversi casi:
- Macupdate www.mupromo.com (terminato)
- MacBuzzer www.macbuzzer.com (terminato)
- Macheist nanoBundle2 (terminato)

MacUpdate

Il bundle di macUpdate punta su un titolo forte (Parallels 5 Desktop), gli altri titoli sono software piu’ di nicchia (anche se alcuni sono notevoli come Hydra).  I primi 20mila clienti inoltre ricevono un sw in regalo (dvdripper). Inoltre anche per chi non compra c’e’ la possibilità di ricevere una applicazione in regalo tweetando l’offerta (appDelete).

Il prezzo 49$  al posto di 435$, quasi l’88% di sconto.  Sono stati venduti piu’ di 42 mila pacchetti.

Anche in questo caso facendo pubblicità su twitter si ricevevano 2 applicazioni gratuite (anche senza comprare il bundle)

Il fatto di avere sw in regalo ai primi che sottoscrivono, dovrebbe invogliare le persone ad essere tra i primi ad acquistare; ma una volta che è finita questa offerta come faranno ad attirare altra clientela?

MacBuzzer

Più che un bundle sembra un gruppo di acquisto. Piu’ gente scarica gratuitamente un loro software (Rucksack) e lo pubblicizza, più alto è lo sconto che si può ottenere per l’acquisto di altri programmi (da 30% a 50% e  infine 70% di sconto finale). Da notare che il numero delle sottoscrizioni necessarie per raggiungere lo sconto successivo, è cambiato durante la promozione (errore di valutazione?!?!): si è passati dalle 45000 sottoscrizioni per avere il 50% di sconto, a 35000 sottoscrizioni, mentre il 70% è stato attivato al raggiungimento dei 37000.

Anche in questo caso è fondamentale l’utilizzo di tweeter.

Comprando i 3 programmi sponsorizzati, si verrebbe a pagare un totale di 24$  invece di 80$ circa. (al momento 38000 sottoscrizioni ad 1 giorno dalla scadenza).

macHeist nanoBundle2

3 i punti di forza di questo bundle:

  • parte del ricavato (25%) viene devoluto in beneficienza tra 10 diverse organizzazioni
  • prezzo bassissimo (19$ per 11 sw), tutti i programmi comprati singolarmente sarebbero costati comunque di più
  • al raggiungimento di alcuni target di vendita, alcuni programmi “civetta” (Monkey island)  venivano sbloccati.

Quest’ultimo punto  ha prodotto un notevole passaparola per il raggiungimento dell’obiettivo in una prima fase, al raggiungimento del primo livello di sblocco, c’e’ stato un notevole aumento delle vendite (nelo forum di macHeist avevo trovato un bellissimo grafico, ma non riesco più a trovarlo).

Inoltre tweettando il bundle, si ricevevano 3 applicazioni in regalo

Prezzo del bundle 19$ per 320$ di software. totale 88000 bundles venduti.

Tra tutti il piu’ efficiente è senz’altro risultato nanoBundle2: punti vincenti sicuramente il prezzo, il numero di sw nel bundle e il fatto che parte venisse devoluto in beneficienza.

Si puo’ notare come twitter sia diventato il metodo piu’ in voga per far fare pubblicità ai clienti in modo da spargere piu’ possibile la voce.

a voi le conclusioni…..