In questo post mostro un semplice snippet per estrarre un archivio Tar in una directory temporanea.
$phar = new PharData('nome-archivio.tar'); //Estraggo tutti i files posizionandoli in /tmp/ $phar->extractTo('/tmp/', null, true);
Php, C#, Ubuntu Linux e tanto altro :-)
$phar = new PharData('nome-archivio.tar'); //Estraggo tutti i files posizionandoli in /tmp/ $phar->extractTo('/tmp/', null, true);
$_DIR = '/var/www/html/images/'; $images_array = glob($_DIR . '*.jpg'); foreach ($images_array as $image) { echo $image; }
private Size currSize;2. Aggiungere nel costruttore, dopo InitializeComponent()
this.AutoScaleMode = AutoScaleMode.None; currSize = this.Size;3. Aggiungere la seguente funzione
private void autoscale() { Font tempFont; SizeF ratio = SizeF.Empty; //calculate resizing ratio ratio = new SizeF((float)this.Width / currSize.Width, (float)this.Height / currSize.Height); //loop through all controls and scale them foreach (Control c in this.Controls) {//Get current font size, Scale object and scale font tempFont = new Font(c.Font.Name, c.Font.SizeInPoints * ratio.Width * ratio.Height); c.Scale(ratio); c.Font = tempFont; } //update current size currSize = this.Size; }4. Utilizzare la funzione precedente nell'evento SizeChanged della windows form
private void Form1_SizeChanged(object sender, EventArgs e) { autoscale(); }
deb http://apt.izzysoft.de/ubuntu generic universe
wget http://apt.izzysoft.de/izzysoft.asc
sudo apt-key add izzysoft.asc4. Installare monitorix
sudo apt-get update sudo apt-get install monitorix
http://localhost:8080/monitorix/
In principio fu l'include (o il require) di tanti file php che contenevano funzioni.Ed ora? Adesso il Php è un linguaggio molto più maturo, dotato di namespace, che permettono a classi con lo stesso nome di coesistere (con namespace diversi) all'interno dello stesso progetto. In questo modo, includere una libreria di terze parti progettata a namespace non comporta più problemi di omonimia di classi.
Poi vennero le classi, incluse a mano una per una.
//Autoloading classes spl_autoload_register(function($className) { //Obtain the pure class name $pureClassName = getRealClassName($className); //Build the path $namespace = getNameSpace($className); if(file_exists($namespace.'/'.$pureClassName.'.php')) { include_once($namespace.'/'.$pureClassName.'.php'); } }); function getRealClassName($fullClassName) { //Explode class name $classNameArray = explode('\\',$fullClassName); //Obtain the pure class name return end($classNameArray); } function getNameSpace($fullClassName) { //Explode class name $classNameArray = explode('\\',$fullClassName); //Remove the pure class name array_pop($classNameArray); //Remove the main namespace (first) array_shift($classNameArray); //Build the path $namespace = implode('/', $classNameArray); return $namespace; }Breve spiegazione: nel caso il Php non trovi una classe, tenta una inclusione automatica, cercando il file posizionato nel percorso indicato dal namespace (stessa struttura delle cartelle quindi) e chiamato come il nome della classe, con estensione php. Le due funzioni getRealClassName() e getNameSpace() sono semplici funzioni che interpretano il nome della classe separando namespace dal nome "proprio" della classe stessa. Unica cosa degna di nota, viene eliminato il primo ramo del namespace, che solitamente è il nome del progetto.
new \ProjectName\Core\Othernamespace\Classname()Causerà una include automatica del percorso
Core/Othernamespace/Classname.php
[mysqld] log-bin=mysql-bin server-id=1Il parametro server-id può essere un numero qualsiasi tra 1 e (232-1) e deve essere univoco tra i vari server MySql della rete Master Slave che si vuole creare. Il mio consiglio è quello di andare in ordine crescente: 1 per il master, dal 2 in poi per gli slave.
mysqldump -h master_host -u root - p --all-databases --master-data -e > dump.sqlIl comando eseguirà il dump creando il file dump.sql. Apriamo a questo punto il file con un editor di testi e segnamoci, da una parte, i comandi relativi al master_log_file e master_log_pos. Ad esempio, nel mio caso:
MASTER_LOG_FILE='mysql-bin.000016', MASTER_LOG_POS=458850265;Come ho scritto, segnamo a parte le informazioni relative al log file e alla posizione del log. La posizione del log indicherà allo slave la posizione di partenza del dump importato.
CREATE USER 'repl'@'%' IDENTIFIED BY 'slavepass'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
[mysqld] server-id=2o comunque un numero diverso da altri server Mysql e soprattutto differente dall'id del master. Riavviare il servizio MySql del server slave.
mysql -h slave_host -u root -p < dump.sqlEd attendere il completamento dell'operazione.
CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='repl', MASTER_PASSWORD='slavepass', MASTER_LOG_FILE='mysql-bin.000016', MASTER_LOG_POS=458850265
START SLAVE;si iniziano le danze. E' possibile a questo punto controllare lo stato della replicazione eseguendo sul server slave
SHOW SLAVE STATUS;
GPIO
di un Raspberry Pi (http://www.raspberrypi.org),
suonare musica, interrogare API pubbliche meteo, leggere email, connettersi a facebook e leggere le notifiche, e così via.