corso di formazione

Sviluppo app per dispositivi mobili con phonegap cordova

Ivrea – settembre 2014 – appunti giornata di formazione #1

Utilizzare la CLI, command line interface.

Installa node.js -> http://nodejs.org/

su mac os e linux

$ sudo npm install -g cordova

su windows

C:\>npm install -g cordova

hello world con cordova

$ cordova create hello com.example.hello HelloWorld

Con questa istruzione abbiamo creato la cartella che conterrà il progetto, assegnato il nome del pacchetto e infine abbiamo assegnato un nome al progetto.

Adesso ci spostiamo all’interno della cartella che contiene il progetto:

cd hello

quindi aggiungiamo le piattaforme di sviluppo, cioè carichiamo nella cartella platforms il codice per i diversi dispositivi mobile:

$ cordova platform add ios
$ cordova platform add amazon
-fireos
$ cordova platform add android
$ cordova platform add blackberry10
$ cordova platform add firefoxos

ovviamente caricheremo solo le piattaforme per cui vogliamo rilasciare la nostra app.

Si possono elencare le piattaforme disponibili per il nostro progetto con il comando

$ cordova platforms ls

Si possono rimuovere le piattaforme non desiderate con il comando

$ cordova platform remove blackberry10
$ cordova platform rm amazon-fireos
$ cordova platform rm android

Facciamo conoscenza col filesystem della nostra app e verifichiamo che la cartella platforms contenga effettivamente una cartella per ogni OS mobile aggiunto.

A questo punto, se disponiamo degli ambienti di sviluppo e degli SDK adatti, possiamo aprire il progetto con i nostri IDE preferiti (XCode, Eclipse, Android Studio, Visual Studio, …) per modificare, compilare e testare il progetto.

Si può comunque utilizzare la CLI, command line interface per compilare e testare il progetto anche senza disporre degli IDE dedicati. Occorre in ogni caso disporre dei Software Development Kit riferiti alle piattaforme per cui vogliamo sviluppare e il compilatore in questione deve essere raggiungibile da riga di comando. Ovvero deve essere indicato nel PATH di sistema (ambiente o utente) il percorso su disco del software di sviluppo, questa operazione si esegue in maniera differente a seconda del sistema operativo disponibile. Non è comunque possibile sviluppare e testare per IOS se non utilizziamo un computer con esegua il sistema operativo Mac OS.

Compiliamo il progetto dando il comando

$ cordova build

In questo caso compiliamo per tutte le piattaforme installate, alternativamente possiamo indicare le piattaforme per cui desideriamo compilare

$ cordova build ios

$ cordova build android

Per vedere il nostro progetto HelloWorld possiamo usare l’emulatore (già installato sul nostro sistema) o collegare il dispositivo e testare il progetto direttamente su di esso

$ cordova emulate android
$ cordova run android

Scuola di karate

programmi di allenamento per mente, corpo e tecnica – [shin gi tai]

Combinazione di gambe e braccia
prima combinazione
  • Aka: Oi-tsuki tsugi ashi gyaku tsuki
  • Shiro: uke-uke-kime
  • Shiro: Mae geri jun tsuki
  • Aka: uke-uke-kime

seconda combinazione

  • Aka: Mae geri jun tsuki
  • Shiro: uke-uke-kime
  • Shiro: Mawashi tsugi ashi gyaku tsuki
  • Aka: uke-uke-kime

terza combinazione

  • Aka: Kizami tsuki tsugi ashi gyaku tsuki
  • Shiro: uke-uke-kime
  • Shiro: Ushiro geri iori ashi uraken uchi
  • Aka: schiva schiva
  • Aka: Ashi barai jun tsuki tsugi ashi gyaku tsuki

sequenza di allenamento

Allenamento di tecniche e combinazioni per il combattimento: eseguire partendo da kamae sinistro, poi cambio guardia, poi cambio iniziativa
praticare il karate tradizionale shotokan

Qui puoi trovare gli orari e le sedi dei corsi dell’a.s.d. ITAI DOSHIN diretta dal M° Franco Stizzoli

Related Images:

articolo originale:
HOW TO merge couple of pdf into one

Scarica pdftk. in ubuntu apri un terminale e digita:

sudo apt-get install pdftk

Ora accedi alla dir che contiene i file pdf da concatenare e digita:

pdftk 1.pdf 2.pdf 3.pdf cat output merged.pdf

per concatenarli tutti in ordine alfabetico:

pdftk *.pdf cat output merged.pdf

Ecco altri esempi di utilizzo di pdftk:

(crea alias):
 pdftk A=1.pdf B=2.pdf cat A B output 12.pdf
Estrai pagine selezionate e combinale in un nuovo pdf:
 pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf
Codifica a  128-Bit 
 pdftk mydoc.pdf output mydoc.128.pdf owner_pw foopass
Codifica e richiedi la pw per l'apertura
 pdftk mydoc.pdf output mydoc.128.pdf owner_pw foo user_pw baz
Permetti la stampa del file, una volta aperto:
 pdftk mydoc.pdf output mydoc.128.pdf owner_pw foo user_pw baz allow printing
Decritta un PDF
 pdftk secured.pdf input_pw foopass output unsecured.pdf
Unisci due file di cui uno crittato:
 pdftk A=secured.pdf mydoc.pdf input_pw A=foopass cat output combined.pdf
Decomprimi il pdf
 pdftk mydoc.pdf output mydoc.clear.pdf uncompress
Cerca di riparare un PDF:
 pdftk broken.pdf output fixed.pdf
Separa un PDF  in pagine singole
 pdftk mydoc.pdf burst
Crea un file report dei Metadata e altre info di un PDF
 pdftk mydoc.pdf dump_data output report.txt

android intent action list

elenco principali azioni in android

azioni principali:

  • ACTION_MAIN
  • ACTION_VIEW
  • ACTION_ATTACH_DATA
  • ACTION_EDIT
  • ACTION_PICK
  • ACTION_CHOOSER
  • ACTION_GET_CONTENT
  • ACTION_WEB_SEARCH
  • ACTION_DIAL
  • ACTION_CALL
  • ACTION_SEND
  • ACTION_FACTORY_TEST
  • ACTION_SENDTO
  • ACTION_ANSWER
  • ACTION_INSERT
  • ACTION_DELETE
  • ACTION_RUN
  • ACTION_SYNC
  • ACTION_PICK_ACTIVITY
  • ACTION_SEARCH

richiama le azioni dal codice java – esempi

mostra una pagina web:

	Uri uri = Uri.parse("http://www.bogliaccino.it");
 Intent it  = new Intent(Intent.ACTION_VIEW,uri);
 startActivity(it);

//mostra una mappa centrata sulle coordinate GPS (engim artigianelli torino)

Uri uri = Uri.parse("geo:45.0728629,7.6714303");
Intent it = new Intent(Intent.Action_VIEW,uri);
startActivity(it);

//mostra un percorso

Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);

//chiamata telefonica

Uri uri = Uri.parse("tel:xxxxxx");
Intent it = new Intent(Intent.ACTION_DIAL, uri);
startActivity(it);
Uri uri = Uri.parse("tel.xxxxxx");
Intent it =new Intent(Intent.ACTION_CALL,uri);

//aggiungi i permessi nel manifest: uses-permission id=”android.permission.CALL_PHONE”

//inviasms/mms, call sender program

Intent it = new Intent(Intent.ACTION_VIEW);
it.putExtra("sms_body", "The SMS text");
it.setType("vnd.android-dir/mms-sms");
startActivity(it);

//send sms

Uri uri = Uri.parse("smsto:0800000123");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
it.putExtra("sms_body", "The SMS text");
startActivity(it);

//invia mms

Uri uri = Uri.parse("content://media/external/images/media/23");
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra("sms_body", "some text");
it.putExtra(Intent.EXTRA_STREAM, uri);
it.setType("image/png");
startActivity(it);

//invia email

Uri uri = Uri.parse("mailto:xxx@abc.com");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(it);
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
it.setType("text/plain");
startActivity(Intent.createChooser(it, "Choose Email Client"));
Intent it=new Intent(Intent.ACTION_SEND);
String[] tos={"me@abc.com"};
String[] ccs={"you@abc.com"};
it.putExtra(Intent.EXTRA_EMAIL, tos);
it.putExtra(Intent.EXTRA_CC, ccs);
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
it.setType("message/rfc822");
startActivity(Intent.createChooser(it, "Choose Email Client"));

//aggiungi extra

Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");
sendIntent.setType("audio/mp3");
startActivity(Intent.createChooser(it, "Choose Email Client"));

//play media

Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///sdcard/song.mp3");
it.setDataAndType(uri, "audio/mp3");
startActivity(it);
Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);

//Uninstall

Uri uri = Uri.fromParts("package", strPackageName, null);
Intent it = new Intent(Intent.ACTION_DELETE, uri);
startActivity(it);

//uninstall apk

Uri uninstallUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri);

//install apk

Uri installUri = Uri.fromParts("package", "xxx", null);
returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri);

//play audio

Uri playUri = Uri.parse("file:///sdcard/download/everything.mp3");
returnIt = new Intent(Intent.ACTION_VIEW, playUri);

//invia extra

Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/eoe.mp3");
sendIntent.setType("audio/mp3");
startActivity(Intent.createChooser(it, "Choose Email Client"));

//search
//where pkg_name is the full package path for an application

Uri uri = Uri.parse("market://search?q=pname:pkg_name");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);

//show program detail page
//app_id è l’application ID sul Market

Uri uri = Uri.parse("market://details?id=app_id");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);

//cerca con google – search google

Intent intent = new Intent();
intent.setAction(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY,"searchString")
startActivity(intent);

Corso Java Base

Java Collection Framework

snippet code

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
public class List {
	public static void main (String[] args) {

	 //primo array
	 String[] moto = 
	 { 
	 "Moto Guzzi V35 Imola", 
	 "Yamaha Tenerè XTZ 600", 
	 "Yamaha XT600", 
	 "BMW K100RS", 
	 "BMW R1150GS" };

	 //stampo primo array
	 System.out.println("Primo array");
	 for (String x: moto)
	 System.out.println(x);

	//istanzio un oggetto di tipo list
	 List<String> lista1 = new ArrayList<String>();

	 //aggiungo a lista1 gli elementi di primo array: metodo add();
	 for(String x: moto)
	 lista1.add(x);

	 //secondo array
	 String[] motoVorrei = 
	 { "Suzuki GSR750", "Tenerè XTZ 600", "Honda NC750X" };
	 
	 //stampo primo array
	 System.out.println("Secondo array");
	 for (String z: motoVorrei)
	 System.out.println(z);

	 //nuovo oggetto di tipo list
	 List<String> lista2 = new ArrayList<String>();

	 System.out.println("Aggiungo elementi a lista 2");

	 //add per aggiungere elementi 
	 for(String y: motoVorrei)
	 lista2.add(y);

	 System.out.println("Stampo elementi a lista 2 usendo il metodo size() e get()");
	 //get per conoscere il valore dell'i-esimo elemento, size() metodo che restituisce la dimensione dell'oggetto
	 for (int i = 0; i<lista2.size();i++){
	 System.out.printf("%s \n", lista2.get(i));
	 }

	 System.out.println("Poi aggiungo lista2 a lista1 metodo addAll");

	 //addAll() : metodo per aggiungere tutti i valori dell'oggetto lista2 all'oggetto lista1
	 lista1.addAll(lista2);
	 System.out.println("Stampo la nuova Lista1"); 

	 for (int i = 0; i<lista1.size();i++){
	 System.out.printf("%s \n", lista1.get(i));
	 } 

	 System.out.println("Lista1 modificata con tutti i valori di lista2 aggiunti"); 

	 //
	 for (int i = 0; i<lista1.size();i++){
	 System.out.printf("%s %s \n", i, lista1.get(i));
	 }

	 System.out.println("Lista2 è rimasta uguale: "); 
	 //lista2=null;
	 for (int i = 0; i<lista2.size();i++){
	 System.out.printf("%s \t", lista2.get(i));
	 }

	 //metodo editlist
	 editlist(lista1,lista2);
	 System.out.println("confronto le stringhe e le modifico col metodo editlist"); 
	 for (int i = 0; i<lista1.size();i++){
	 System.out.printf("%s %s \n", i, lista1.get(i));
	 } 

	 }

	private static void editlist(Collection<String> lista1, Collection<String> lista2) {
	 Iterator<String> it = lista1.iterator();
		 while (it.hasNext()){
		 if (lista2.contains(it.next()))
		 it.remove();
		 }
	 }
}

/** JCF: alcuni metodi collection e interfaccia Iterator */

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class ListEstesa {

	public static void main(String[] args) {

		// primo array
		String[] moto = { "1Guzzi V35 Imola", "2Tenerè XTZ 600", "3XT600",
				"4BMW K100", "5BMW R1150 GS" };
		// secondo array
		String[] motoVorrei = { "6Suzuki GSR750", "7Tenerè XTZ 600",
				"8Honda NC750X" };

		// istanzio oggetto di tipo list
		List<String> lista1 = new ArrayList<String>();
		// nuovo oggetto di tipo list
		List<String> lista2 = new ArrayList<String>();

		// aggiungo elementi del primo array a lista1: metodo add();
		for (String x : moto)
			lista1.add(x);

		// uso add per aggiungere elementi a lista 2
		for (String x : moto)
			lista2.add(x);
		printme(lista1);
		// addAll() : metodo per aggiungere tutti i valori dell'oggetto lista2
		// all'oggetto lista1
		lista1.addAll(lista2);

		printme(lista1);
		rimuoviDaLista(lista1, 3, 5);
		printme(lista1);
		reverseLista(lista1);

	}

	// stampare i valori
	private static void printme(List<String> l) {
		System.out.println("metodo printme");
		for (String a : l)
			System.out.printf("%s \n", a);
		System.out.println();
	}

	// rimuovere elementi
	private static void rimuoviDaLista(List<String> l, int from, int to) {
		System.out.println("metodo rimuovi");
		l.subList(from, to).clear();
	}

	// reverse list
	private static void reverseLista(List<String> l) {
		System.out.println("metodo reverse");
		ListIterator<String> lista = l.listIterator(l.size());
		while (lista.hasPrevious())
			System.out.printf("%s \n", lista.previous());
	}

}

/** JCF: convertire list in array e viceversa */

import java.util.Arrays;
import java.util.LinkedList;
public class Main {
	public static void main (String[] args) {

		 String[] film = { "Pulp Fiction", "Le iene", "Kill Bill" };
		 LinkedList<String> thelist = new LinkedList<String>(Arrays.asList(film));

		 thelist.add("Django Unchained");
		 thelist.addFirst("Jackie Brown");

		 //riconverti ad array
		 film = thelist.toArray(new String[thelist.size()]);

		 for (String x: film)
		 System.out.printf("%s \n", x);

	} 

}
/** JCF: collections metodi sort() e overload con reverseOrder() */

import java.util.Arrays;
import java.util.Collections;
import java.util.List;


public class Main {

	  public static void main (String[] args) {

		  
		  String[] film = { "Pulp Fiction", "Le iene", "Kill Bill" };
		  List<String> lista1 = Arrays.asList(film);
		  
		  //ordina coi metodi collections
		  Collections.sort(lista1);
		  
		  for (String x: lista1)
			  System.out.printf("%s \n", x);

		  //overload del metodo, 2 parametri
		  //ordina coi metodi collections
		  Collections.sort(lista1, Collections.reverseOrder());
		  
		  for (String x: lista1)
			  System.out.printf("%s \n", x);
	  }	  
	  
}