Archivi tag: programmazione

Android Color List

if you write android code you will need as soon as possible of a list of colors, i’ve found this that i think is very exaustive, you don’t think so? 🙂

 


< ?xml version="1.0" encoding="utf-8"?>

#FFFFFF #FFFFF0 #FFFFE0 #FFFF00 #FFFAFA #FFFAF0 #FFFACD #FFF8DC #FFF5EE #FFF0F5 #FFEFD5 #FFEBCD #FFE4E1 #FFE4C4 #FFE4B5 #FFDEAD #FFDAB9 #FFD700 #FFC0CB #FFB6C1 #FFA500 #FFA07A #FF8C00 #FF7F50 #FF69B4 #FF6347 #FF4500 #FF1493 #FF00FF #FF00FF #FF0000 #FDF5E6 #FAFAD2 #FAF0E6 #FAEBD7 #FA8072 #F8F8FF #F5FFFA #F5F5F5 #F5F5DC #F5DEB3 #F4A460 #F0FFFF #F0FFF0 #F0F8FF #F0E68C #F08080 #EEE8AA #EE82EE #E9967A #E6E6FA #E0FFFF #DEB887 #DDA0DD #DCDCDC #DC143C #DB7093 #DAA520 #DA70D6 #D8BFD8 #D3D3D3 #D2B48C #D2691E #CD853F #CD5C5C #C71585 #C0C0C0 #BDB76B #BC8F8F #BA55D3 #B8860B #B22222 #B0E0E6 #B0C4DE #AFEEEE #ADFF2F #ADD8E6 #A9A9A9 #A52A2A #A0522D #9ACD32 #9932CC #98FB98 #9400D3 #9370DB #90EE90 #8FBC8F #8B4513 #8B008B #8B0000 #8A2BE2 #87CEFA #87CEEB #808080 #808000 #800080 #800000 #7FFFD4 #7FFF00 #7CFC00 #7B68EE #778899 #708090 #6B8E23 #6A5ACD #696969 #66CDAA #6495ED #5F9EA0 #556B2F #4B0082 #48D1CC #483D8B #4682B4 #4169E1 #40E0D0 #3CB371 #32CD32 #2F4F4F #2E8B57 #228B22 #20B2AA #1E90FF #191970 #00FFFF #00FFFF #00FF7F #00FF00 #00FA9A #00CED1 #00BFFF #008B8B #008080 #008000 #006400 #0000FF #0000CD #00008B #000080 #000000

Download Files and AsyncTask in Android

This code snippet found here complete my previous snippet that i’ve used to grab a single file on a remote server


import java.io.IOException;

import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.Toast;

public class SimpleWebGrab extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

grabURL("http://android.com");
}

public void grabURL(String url) {
new GrabURL().execute(url);
}

private class GrabURL extends AsyncTask {
private final HttpClient Client = new DefaultHttpClient();
private String Content;
private String Error = null;
private ProgressDialog Dialog = new ProgressDialog(SimpleWebGrab.this);

protected void onPreExecute() {
Dialog.setMessage("Downloading source..");
Dialog.show();
}

protected Void doInBackground(String... urls) {
try {
HttpGet httpget = new HttpGet(urls[0]);
ResponseHandler responseHandler = new BasicResponseHandler();
Content = Client.execute(httpget, responseHandler);
} catch (ClientProtocolException e) {
Error = e.getMessage();
cancel(true);
} catch (IOException e) {
Error = e.getMessage();
cancel(true);
}

return null;
}

protected void onPostExecute(Void unused) {
Dialog.dismiss();
if (Error != null) {
Toast.makeText(SimpleWebGrab.this, Error, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(SimpleWebGrab.this, "Source: " + Content, Toast.LENGTH_LONG).show();
}
}

}
}

Basi

Premessa: questo breve post non vuole essere una trattazione esauriente ed esaustiva circa l’argomento ma solo ed esclusivamente un appunto meritevole di approfondimenti, in quanto ci sono tonnellate di libri che trattano l’argomento in modo certamente migliore di quanto possa fare qualsiasi sito web.

Oggi vedremo qualche definizione, volutamente non approfondita, circa alcuni termini che ci si trova spesso e volentieri ad affrontare

Tipizzazione Forte: si parla di tipizzazione forte quando è necessario specificare il tipo di ogni elemento sintattico che durante l’esecuzione denota un certo valore; linguaggi a tipizzazione forte sono ad esempio Java

Incapsulamento: è una tecnica utilizzata per nascondere il funzionamento interno (Information Hiding). I termini incapsulamento ed information hiding vengono in genere utilizzati come sinonimi anche se esiste una differenza concettuale: l’information hiding è il principio teorico su cui si basa la tecnica dell’incapsulamento. In altre parole una parte di un programma può nascondere informazioni incapsulandole in un modulo dotato di interfaccia.

Polimorfismo: In informatica il termine viene utilizzato per riferirsi ad espressioni che possono rappresentare valori di diverso tipo. In un linguaggio non tipizzato tutte le espressioni sono intrinsecamente polimorfiche.

Override: l’operazione di riscrittura di un metodo ereditato

Servlet: è un programma che viene eseguito su un server web, la differenza con le applet è che vengono eseguite su server anzichè su client

Persistenza: il concetto si riferisce alla caratteristica dei dati di sopravvivere all’esecuzione del programma che li ha creati; senza questa capacità i dati rimangono in memoria (RAM) e scompaiono nel nulla nel momento in cui viene a mancare l’alimentazione. Oltre ai dati ci si riferisce alla possibilità di far sopravvivere le strutture di dati all’esecuzione di un programma.

Serializzazione: è un processo per salvare un oggetto in un supporto di memorizzazione lineare

EJB: sono le componenti che implementano lato server la logica di Business all’interno dell’architettura J2EE; le specifiche EJB definiscono diverse proprietà quali: persistenza, supporto alle transazioni, gestione della concorrenza e della sicurezza e l’integrazione con altre tecnologie

Overload: l’operazione di riscrittura di una funzione

Programmazione Object Oriented

Premessa: questo breve post non vuole essere una trattazione esauriente ed esaustiva circa l’argomento ma solo ed esclusivamente un appunto meritevole di approfondimenti, in quanto ci sono tonnellate di libri che trattano l’argomento in modo certamente migliore di quanto possa fare qualsiasi sito web.

La Programmazione Orientata agli Oggetti è un paradigma che prevede il raggruppamento in un’unica entità sia di strutture dati che di procedure che operano su di esse e prevede l’uso di classi, oggetti e tecniche chiamate incapsulamento, ereditarietà, polimorfismo e binding dinamico.

Classi

Sono uno strumento per costruire strutture dati che contengono non solo dati ma anche il codice per gestirli, quindi all’interno delle classi troviamo:

Attributi: ovvero i dati da gestire

Metodi: ovvero le procedure che operano su tali dati

Oggetto

Un oggetto viene definito come un’istanza di una classe, questo permette di utilizzare il principio noto come Information Hiding, il quale dice che si deve accedere agli attributi dell’istanza solo mediante i metodi messi a disposizione dall’oggetto stesso.

Incapsulamento

E’ la proprietà per cui un oggetto contiene al suo interno gli attrbuti (dati) ed i metadati (procedure) per accedono ai dati stessi. Lo scopo principale dell’incapsulamento è dare accesso ai dati incapsulati solo mediante metadati definiti nell’interfaccia.

Ereditarietà

La programmazione orientata agli oggetti prevede un meccanismo molto importante: l’ereditarietà, la quale permette di aggiungere membri ad una classe e di modificare il comportamento dei metadati in modo da adattarli alla nuova struttura della classe. Una classe ereditaria, eredita tutti i metadati e gli attributi della classe genitrice e può aggiungere membri, attributi e metodi alla classe in modo tale da poterne ridefinire il comportamento.

Polimorfismo

La possibilità che le classi derivate  implementino in modo differente i metodi e le proprietà dei propri antenati, rende possibile che gli oggetti appartenenti a delle sottoclassi di una stessa classe rispondano diversamente alle stesse istruzioni ad esempio

             Animale
  +-------------|--------------+
  |                            |
Cane                         Gatto

Considerando Cane e Gatto come classi derivate da Animale, e considerando che presentano entrambe il metodo mangia(), questo metodo in un caso potrebbe restituire osso nell’altro pesce in quanto potremmo ridefinirlo in entrambe le classi.

Bindig Dinamico

Si parla di Bindig Dinamico quando la versione del metodo da usare viene scelta sulla base del tipo di oggetto effettivamente contenuto in una variabile a runtime invece che al momento della compilazione.

[VB6] – Unzip di files SENZA librerie esterne

Problema: decomprimere (unzippare) un file zip in Visual Basic 6 senza l’utilizzo di librerie esterne

Soluzione:
Sostanzialmente la soluzione è semplice, basta invocare la shell ed utilizzare il supporto del sistema operativo (il codice funziona sicuramente su Windows xp e superiori, ma non ho testato su altri sistemi operativi, magari ditelo voi se su sistemi operativi più vecchi funziona); ma vediamo passo passo quello che c’è da fare.

1. Inserire il riferimento a (menù: Progetto -> Riferimenti) Microsoft Shell Controls and Automation

2. Inserire la seguente routine dove vi pare:

Public Sub unzip()
Dim nomefile As String
Dim nomedir As String

Dim ClasseShell As Shell32Ctl.Shell
Dim FileDaUnzip As Shell32Ctl.Folder
Dim DestUnzip As Shell32Ctl.Folder
Dim CopiaUnzip As Shell32Ctl.FolderItems

nomefile = “C:\temp\file.zip”
nomedir = “C:\temp”

Set ClasseShell = New Shell32Ctl.Shell
‘ file da unzippare
Set FileDaUnzip = ClasseShell.NameSpace(nomefile)
‘ directory out
Set DestUnzip = ClasseShell.NameSpace(nomedir)
‘ esecuzione della copia
Set CopiaUnzip = FileDaUnzip.Items

Call DestUnzip.CopyHere(CopiaUnzip, 20)

End Sub

Bene ecco le opzioni di CopyHere:
0 Default. Nessuna opzione specificata.
4 Non mostra il box con la barra di progressione.
8 Rinomina il file di destinazione se il esiste un file con lo stesso nome nella directory di destinazione.
16 Clicca “Yes to All” in qualsiasi finestra di dialogo che viene mostrata.
64 Mantieni le informazioni, se possibile.
128 Esegui le operazioni solo se viene specificata una wildcard (*.*).
256 Mostra una finestra di dialogo con la progress bar ma senza mostrare i nomi dei file.
512 Non confermare la creazione di una nuova directory se l’operazione ne richiede la creazione.
1024 Non mostrare un’interfaccia utente se si verifica un errore.
4096 Disabilita la ricorsione.
9182 Non copiare i file collegati come un gruppo. Copia solo i file specificati.