Programmazione

nice C++ tutorial for beginners, from embarcadero

Thursday 13 December 2012, 16:27
ivan.revelli@synaptica.info

Those sections of C++ tutorials are very simple. Otherwise they explain the differences between Delphi (pascal) language and C++.

Good job:


Session 1:

Session 2:


Supportare differenti dimensioni di schermo in android grazie ai Fragments

Friday 12 October 2012, 17:52
federico.serrelli@synaptica.info

Nello sviluppo di applicazioni mobili diventa sempre più importante il supporto di schermi e dimensioni anche molto diverse a causa del diffondersi di modelli e tipologie di dispositivi sempre più disparati.
Per fortuna Android offre una soluzione veramente intelligente e semplice per aiutarci a sviluppare applicazioni che da un lato siano compatibili col maggior numero possibile di dispositivi ma che, dall’altro, si adattino al meglio agli schermi dei dispositivi in termini di usabilità e sfruttamento della superficie disponibile .

La soluzione sono i FRAGMENT.

In realtà i Fragment offrono altri grandi vantaggi come, ad esempio, poter scomporre le Activity in blocchi elementari (una sorta di “sub-activity”) replicabili e riutilizzabili in più layout o schermate applicative.
In questo articolo ci focalizzeremo su un semplicissimo esempio tramite il quale sviluppare un’Activity (che chiameremo MainActivity) in grado di presentarsi all’utente con due fragment affiancati nel caso lo schermo del dispositivo sia abbastanza grande da consentirlo (es. tablet), mentre negli altri casi gli stessi fragment vengono mostrati sequenzialmente (quasi come se fossero due Activity distinte).
L’ipotesi è quella di avere una listView di oggetti nel primo fragment (SxFragment) e il dettaglio dell’oggetto selezionato nel secondo fragment (DxFragment).

La figura seguente mostra l’esempio.

1) Layout
Predisponiamo due differenti layout per schermi piccoli e grandi. La stessa cosa, ad esempio, può essere fatta per Portrait/Landscape, con più fragmen, etc…

file: /res/layout-large/example_layout.xml

file: /res/layout/example_layout.xml

Da notare che nel secondo layout non sono inclusi staticamente i Fragment e che è invece assegnato un id (fgmContainer) al contenitore che ci occorrerà per agganciare i fragment.

2) Activity principale

oppure nel caso di utilizzo della Android Support Library (retrocompatibilità con device che hanno versioni di android < 3.0):

Nel onCreate includiamo il layout e istanziamo dinamicamente il Fragment nel caso in cui siamo alle prese con uno schermo piccolo.

3) Fragment A (items list)
Nel fragment di sinistra, contenente la listView, assegnamo all’evento di selezione (OnItemClick) il compito di notificare la selezione tramite un metodo di callback (onItemSelected) all’attività principale.

4) Activity principale
Aggiungo il metodo di selezione nella MainActivity. Chiaramente il metodo discrimina il caso in cui abbiamo entrambi i fragment da quello in cui occorra istanziare il secondo dinamicamente. Nel primo caso è sufficiente richiamare il metodo di update esposto dal fragment (doItemSelection), mentre nel secondo caso occorre effettuare una transizione dinamica tra i due Fragment. Il primo dei due, viene sostituito tramite “replace”, ma inserito nel Back Stack in modo che premendo il pulsante “Back” non termini l’activity ma venga semplicemente effettuata la transizione al contario e riappaia il primo Fragment.

5) Fragment B (item details)
Il Fragment B, infine, riceve come argomenti i parametri necessari alla sua inizializzazione o, se già inizializzato, espone i metodi necessari all’aggiornamento da parte della MainActivity. Nell’esempio semplicemente l’id dell’item selezionato viene inserito in una TextView.

Nei prossimi articoli vedremo come effettuare la gestione di Menu e Actionbar nel caso di utilizzo dei Fragment.

Ciao e a presto
Federico

JQuery e Prototype

Tuesday 19 July 2011, 14:48
marco.brendolini@makeallweb.it

Mi è capitato ultimamente di dover utilizzare contemporaneamente due fra le più importanti librerie Javascript
all’interno dello stesso progetto: parlo della libreria JQuery e Prototype.

Nel fare questo però ho incontrato non poche difficoltà a motivo del fatto che entrambe le librerie dichiarano la stessa
variabile “$”.

Per questo motivo tutto ciò che veniva referenziato attraverso la variabile $ come ad esempio:

generava un errore di undefined variabile “$” impedendo di fatto al codice javascript di funzionare correttamente.

Per ovviare a questo problema ho trovato una soluzione utilizzando una funzione JQuery con la quale è possibile ridefinire
la variabile “$” con un altro nome:

Dopo aver ridefinito la variabile, questa potrà essere utilizzata in ogni riferimento a funzione JQuery come nell’esempio seguente:

Grazie a questo piccolo accorgimento le due librerie non interferiscono più fra di loro e tutto torna a funzionare correttamente.

Alla prossima

Symfony 2 – Cosa c’è di nuovo? (Parte 1)

Wednesday 23 March 2011, 13:14
marco.brendolini@makeallweb.it

Con questo articolo vorrei cominciare una serie di considerazioni sull’evoluzione di uno dei più famosi framework PHP attualmente utilizzato: SYMFONY.

Per chi non lo conoscesse, Symfony è un framework PHP, estremamente utile alla realizzazione di web application PHP che necessitano di una struttura di progetto ben definita e di una serie di strumenti di sviluppo che altrimenti il linguaggio in se non metterebbe a disposizione.

Per questo motivo Symfony aggrega una serie di concetti che di fatto facilitano e velocizzano lo sviluppo di applicazioni rendendole nello stesso tempo robuste e facilmente manutenibili.

Concetti quali:

  • MVC
  • ORM
  • AJAX
  • Components
  • Bundles

Dalla 1 alla 2 – STRUTTURA FOLDER

Tutti coloro che, ad oggi, sono abituati alla versione 1, si troveranno di fronte ad una notevole ristrutturazione del framework che, sfruttando le nuove caratteristiche della versione 5.3 di PHP, ha fatto un notevole passo avanti verso la filosofia JAVA.

Symfony 2 organizza il progetto con una struttura di folder molto diversa rispetto alla versione 1. Un esempio possiamo trovarlo di seguito:

APP Folder

La cartella APP rappresenta l’applicazione che con Symfony 2 diventa unica.
Con Symfony 1 era possibile creare più applicazioni in un progetto, ad esempio “Frontend” e “Backend” e tutto il codice di gestione delle action veniva suddiviso in moduli all’interno della APP folder.

Con Symfony 1 il codice PHP non è più presente in questa cartella, ma la APP folder contiene tutti gli oggetti di base dell’applicazione come ad esempio i file di configurazione, i log, la cache e i template.

SRC Folder

La SRC Folder contiene tutto il codice di gestione dell’applicazione. Il codice con Symfony 2 vive all’interno dei Bundle paragonabili ai Plugin nella versione 1 di Symfony.
I Bundle possono essere paragonati ai Package in Java e rappresentano delle sotto folder all’interno della SRC Folder.
Symfony 2 è in grado di implementare una struttura a Bundle grazie all’introduzione del concetto di “name spacing” implementato nella versione 5.3 di PHP.

Nei prossimi articoli approfondiremo l’argomento Bundle.

VENDOR Folder

La VENDOR Folder accoglie tutte le librerie che rappresentano il CORE del framework e tutte le librerie dei vari PLUGIN utilizzati da Symfony 2 come ad esempio Doctrine, Swiftmailer e Twig

WEB Folder

La WEB Folder non cambia molto rispetto alla versione 1. La differenza più significativa sta nel fatto tutte le risorse web quali (Javascript, immagini e CSS) vengono organizzate in bundle come nel caso del codice.

Formazione in iFaber

Friday 4 March 2011, 15:50
federico.serrelli@synaptica.info

Ciao a tutti!
Un breve articolo per documentare l’attività che con Ivan stiamo svolgendo da consulenti in iFaber.

Il progetto, nato in collaborazione con Elever srl ormai un anno fa, è finalizzato alla realizzazione di una portale web per la gestione e qualifica dei fornitori. Il portale è destinato sia ad uso interno (Unicredit) che per clienti terzi.

Il binomio tecnologico impiegato Zkoss+Oracle si è dimostrato all’avanguardia ed una scelta decisamente azzeccata (tempi di sviluppo brevissimi ma con affidabilità e prestazioni ottime). Altre tecnologie (come Hibernate e Axis) hanno fatto da corollario per la nascita di una web application veramente di grande spessore sia dal punto di vista funzionale che di concezione!

Presto saranno disponibili maggiori dettagli su questa e sulle altre attività di collaborazione nella sezione dedicata.

Questa settimana abbiamo tenuto, presso iFaber, un corso sull’applicazione dedicato prima di tutto ad introdurre nuove risorse (circa una dozzina), destinate ad ingrandire il team di sviluppo, alle tecnologie impiegate (in particolare Zkoss).
Il corso si è indirizzato poi a dare una panoramica delle caratteristiche peculiari dell’applicazione (tra cui dinamicità, configurabilità, internazionalizzazione, profilazione degli accessi…) scendendo nei dettagli tecnici implementativi necessari ad un primo contatto con il “dietro le quinte” di questo complesso portale.

Naturalmente ci siamo contraddistinti per il nostro stile ultra professionale (…) anche in questa circostanza!

Ecco qualche contributo dell’evento 🙂

Ciao a tutti e “stay tuned!”

I.B.M. one hundred years of story

Saturday 29 January 2011, 17:03
ivan.revelli@synaptica.info

This year is the century anniversy of I.B.M. , i found this promo-story on the net , yes is a promo but i think is so interesting :



Scoprite cosa possiamo fare per il vostro business
I nostri linguaggi