Matteo MagniJekyll2022-11-22T08:27:51+00:00https://magni.me/Matteo Magnihttps://magni.me/matteo@magni.mehttps://magni.me/2016/12/16/introduction-to-devops-with-ansible2016-12-16T00:00:00+00:002016-12-16T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p>Nell’ambito del progetto <a href="http://officina-linux.it">Officina Linux</a> ho tenuto un webinar su come fare DevOps con Ansible.
Ecco il video del webinar:</p>
<iframe src="https://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2FOfficinaLinux%2Fvideos%2F349633172084818%2F&show_text=0&width=560" width="560" height="315" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowtransparency="true" allowfullscreen="true"></iframe>
<p>Le slide invece sono visibili a questo indirizzo:</p>
<p><a href="http://magni.me/Introduction-to-DevOps-with-Ansible/">http://magni.me/Introduction-to-DevOps-with-Ansible/</a></p>
<p><a href="https://magni.me/2016/12/16/introduction-to-devops-with-ansible/">Introduction to DevOps with Ansible</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on December 16, 2016.</p>https://magni.me/2014/04/29/lavorare-con-grunt-e-sass2014-04-29T00:00:00+00:002014-04-29T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p>Lavorando con <strong><a href="http://sass-lang.com/" target="_blank">Sass</a></strong> si sente subito l’esigenza di avere un tool che ci generi in automatico i file .css, le possibilità sono tante, una di queste può essere l’uso di <strong><a href="http://gruntjs.com/" target="_blank">Grunt</a></strong>.</p>
<p><a href="http://magni.me/wp-content/uploads/2014/04/grunt-logo-1.png"><img src="http://magni.me/wp-content/uploads/2014/04/grunt-logo-1.png" alt="grunt-logo-1" width="250" height="333" class="aligncenter size-full wp-image-987" /></a></p>
<p>Per iniziare installiamo <em>NodeJs</em>:<br />
<em>su Ubuntu</em></p>
<pre class="lang:sh decode:true ">$ apt-get install python-software-properties
$ apt-add-repository ppa:chris-lea/node.js
$ apt-get update
$ apt-get install nodejs
</pre>
<p><em>su OSx</em></p>
<pre class="lang:sh decode:true ">$ brew install node</pre>
<!--more-->
<p>Poi dobbiamo configurare le dipendenze npm:</p>
<pre class="lang:sh decode:true ">$ npm init
$ npm install grunt --save-dev
$ npm install grunt-contrib-sass --save-dev
$ npm install grunt-contrib-watch --save-dev
</pre>
<p>A questo punto avremo un <em>packeage.json</em> simile a questo:</p>
<pre class="lang:js decode:true ">{
"name": "my-project",
"version": "0.0.1",
"devDependencies": {
"grunt": "^0.4.4",
"grunt-contrib-sass": "~0.7.3",
"grunt-contrib-watch": "~0.6.1"
}
}
</pre>
<p>Per usare grunt da riga di comando dobbiamo installare <em>Grunt Cli</em></p>
<pre class="lang:sh decode:true ">$ sudo npm install -g grunt-cli
</pre>
<p>Installiamo <em>Sass</em> (necessità di Ruby installato)</p>
<pre class="lang:sh decode:true ">$ sudo gem install sass
</pre>
<p>Configuriamo <em>Grunt</em> creando un <em>Gruntfile.js</em> così:</p>
<pre class="lang:js decode:true ">module.exports = function(grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
sass: {
dist: {
files: {
'styles/style.css' : 'sass/style.scss',
'styles/style-ie.css' : 'sass/style-ie.scss',
}
}
},
watch: {
css: {
files: '**/*.scss',
tasks: ['sass']
}
}
});
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('default',['watch']);
}
</pre>
<p>A questo punto quando lavoriamo ci basterà lanciare grunt ed avremo il watch sui sass che, appena modificati, verranno compilati dalla cartella sass e spostati nella cartella styles.</p>
<pre class="lang:sh decode:true ">$ grunt
</pre>
<div class="kindleWidget kindleLight">
</div>
<p><a href="https://magni.me/2014/04/29/lavorare-con-grunt-e-sass/">Lavorare con Grunt e Sass</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on April 29, 2014.</p>https://magni.me/2013/10/10/forzare-git-ad-utilizzare-https2013-10-10T00:00:00+00:002013-10-10T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p>Nel caso si voglia forzare git ad utilizzare sempre la connessione https, quando utilizza <a href="http://github.com/ilbonzo" target="_blank">github</a>, possiamo impostarlo attraverso questo comando.</p>
<pre class="lang:sh decode:true " title="Forzare git ad usare https">git config --global url.https://github.com/.insteadOf git://github.com/</pre>
<div class="kindleWidget kindleLight">
</div>
<p><a href="https://magni.me/2013/10/10/forzare-git-ad-utilizzare-https/">Forzare git ad utilizzare https</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on October 10, 2013.</p>https://magni.me/2013/09/23/san-zvan-round-town-san-giovanni-in-persiceto2013-09-23T00:00:00+00:002013-09-23T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p style="text-align: center;">
<a href="http://app.sanzvan.it"><img class="size-medium wp-image-952 aligncenter" alt="qr-logo" src="http://magni.me/wp-content/uploads/2013/09/qr-logo-300x300.png" width="300" height="300" /></a>
</p>
<p>Vivo a <a href="https://it.wikipedia.org/wiki/San_Giovanni_in_Persiceto">San Giovanni in Persiceto</a> ormai da un anno, ed ho subito cominciato a sentire l’esigenza di conoscere quali sono le molte realtà presenti sul territorio. Per fare ciò ho pensato potesse essere utile utilizzare le informazioni che, attraverso i vari social network, erano già presenti sul web.<br />
Cominciare a seguire i vari profili pubblici poteva essere un inizio, ma mi è sembrato che potesse essere più interessante sviluppare una piccola WebApp che mi aiutasse ad aggregare tutte queste informazioni.<br />
Ovviamente questa è stata un ottima scusa per mettere le mani su alcune tecnologie interessanti.<br />
Per la parte <a href="https://github.com/ilbonzo/RoundTown">Web App</a> ho utilizzato:</p>
<ul>
<li><a href="http://phonegap.com/">Phonegap</a></li>
<li><a href="http://backbonejs.org/">Backbone</a></li>
<li><a href="http://www.requirejs.org/">Requirejs</a></li>
<li><a href="http://jquerymobile.com">jQueryMobile</a></li>
</ul>
<p>La parte <a href="https://github.com/ilbonzo/RoundTownWs">Web Service</a> invece è sviluppata con:</p>
<ul>
<li><a href="http://silex.sensiolabs.org/">Silex</a></li>
<li><a href="http://www.mongodb.org/">MongoDB</a></li>
<li><a href="http://eden.openovate.com/">Eden PHP</a></li>
</ul>
<p>Al momento l’applicazione è utilizzabile da web o installandola dal Google Play.</p>
<p><strong><a href="http://app.sanzvan.it">http://app.sanzvan.it</a></strong></p>
<p>Il codice è disponibile su <a href="https://github.com/ilbonzo/RoundTown">github</a> ed è rilasciato sotto licenza <a href="http://www.gnu.org/licenses/gpl-2.0.html">GNU General Public License, Version 2.0</a>.</p>
<p>Nel caso qualcuno volesse fare suggerimenti o contribuire al progetto può contattarmi a <em>sanzvan(@)magni.me</em>.</p>
<div class="kindleWidget kindleLight">
</div>
<p><a href="https://magni.me/2013/09/23/san-zvan-round-town-san-giovanni-in-persiceto/">San Zvan – Round Town | San Giovanni in Persiceto</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on September 23, 2013.</p>https://magni.me/2013/08/12/aggiungere-un-proprio-namespace-in-silex2013-08-12T00:00:00+00:002013-08-12T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p><img class="alignnone size-full wp-image-919 aligncenter" alt="silex" src="http://magni.me/wp-content/uploads/2013/08/silex.jpg" width="202" height="202" /></p>
<p>Se vogliamo aggiungere un nostro namespace personalizzato potendo caricare le classi attraverso l’autoloader dei Silex dobbiamo seguire questa procedura.</p>
<p>Creiamo la cartella per le nostre classi:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd my-silex-project/src
$ mkdir NewNamespace
</code></pre></div></div>
<p>Creiamo la classe che vogliamo caricare:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ vi src/NewNamespace/MyClass.php
</code></pre></div></div>
<p>Nella classe mettiamo il codice per registrare il nuovo namespace:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>namespace NewNamespace;
class MyClass {
public function __construct() {
}
}
</code></pre></div></div>
<p>Aggiungiamo il nostro namespace al <em>composer.json</em> in modo che l’autoloader di <strong>Silex</strong> possa utilizzarlo:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{
"require": {
"silex/silex": "1.0.*@dev"
},
"autoload": {
"psr-0": {
"NewNamespace": "src/"
}
}
}
</code></pre></div></div>
<p>Lanciamo* composer* update</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ composer update
</code></pre></div></div>
<p>Ora possiamo utilizzare le classi del nostro namespace nel progetto <strong>Silex</strong>.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>use Silex\Application;
use NewNamespace\MyClass;
require_once __DIR__.'/../vendor/autoload.php';
$app = new Application();
//add myclass
$app['myclass'] = function () {
return new MyClass();
};
</code></pre></div></div>
<div class="kindleWidget kindleLight">
</div>
<p><a href="https://magni.me/2013/08/12/aggiungere-un-proprio-namespace-in-silex/">Aggiungere un proprio namespace in Silex</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on August 12, 2013.</p>https://magni.me/2013/08/09/aggiornare-il-fork-di-un-repository-github-dal-repository-originale2013-08-09T00:00:00+00:002013-08-09T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p style="text-align: left;">
<img class="size-medium wp-image-907 aligncenter" alt="fork" src="http://magni.me/wp-content/uploads/2013/08/fork-300x165.png" width="300" height="165" /><br /> Se abbiamo fatto un fork di un repository su <a href="https://github.com/ilbonzo">github</a> e vogliamo aggiornare il nostro repo con le modifiche fatte anche sul repo originale dobbiamo eseguire le seguenti operazioni:
</p>
<p><em>Aggiungiamo l’url del repository originale nei remote</em></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git remote add --track master openovate https://github.com/Openovate/eden.git
</code></pre></div></div>
<p><em>Verifichiamo che il repo sia stato aggiunto</em></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git remote
</code></pre></div></div>
<p><em>Eseguiamo il fetch del repository originale, questo creerà un branch chiamato openovate/master</em></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git fetch openovate
</code></pre></div></div>
<p><em>Eseguiamo il merge con il nostro master</em></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git merge openovate/master
</code></pre></div></div>
<p><em>Mandiamo al nostro origin le nuove modifiche</em></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git push origin master
</code></pre></div></div>
<p><a href="https://magni.me/2013/08/09/aggiornare-il-fork-di-un-repository-github-dal-repository-originale/">Aggiornare il fork di un repository github dal repository originale</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on August 09, 2013.</p>https://magni.me/2013/07/05/gestione-dei-processi-di-windows-da-command-line2013-07-05T00:00:00+00:002013-07-05T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p style="text-align: left;">
<img class="size-thumbnail wp-image-896 aligncenter" alt="ps" src="http://magni.me/wp-content/uploads/2013/07/ps-150x150.jpg" width="150" height="150" /><br /> Ecco alcuni comandi utili per fermare/gestire i processi su macchine <strong>windows</strong> attraverso la command line, in modo simile a come si fa abitualmente su <em>linux</em>
</p>
<p><em>Ottenere la lista dei processi:</em></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>tasklist /v
</code></pre></div></div>
<p><em>Fermare un processo in base al PID:</em></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>taskkill /f /pid 1234
</code></pre></div></div>
<p><em>Fermare un processo in base al nome:</em></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>taskkill /f /im java*
</code></pre></div></div>
<p>L’opzione /f serve per forzare l’interruzione del processo.</p>
<p><a href="https://magni.me/2013/07/05/gestione-dei-processi-di-windows-da-command-line/">Gestione dei processi di Windows da command line</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on July 05, 2013.</p>https://magni.me/2013/06/26/installare-apache-ant-su-windows2013-06-26T00:00:00+00:002013-06-26T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p><img src="http://magni.me/wp-content/uploads/2013/06/554px-Apache-Ant-logo.svg_-300x185.png" alt="554px-Apache-Ant-logo.svg" width="300" height="185" class="aligncenter size-medium wp-image-886" /><br />
<strong><a href="http://ant.apache.org/" title="apache Ant">Apache Ant</a></strong> è un software molto utile per lo sviluppo in <em>Java</em>:</p>
<blockquote>
<p>Apache Ant è un software per l’automazione del processo di build. È simile a make ma scritto in Java ed è principalmente orientato allo sviluppo Java. Ant è un progetto Apache, open source, ed è rilasciato sotto licenza Apache.</p>
</blockquote>
<p>Per lo sviluppo su <em>Android</em> per esempio viene utilizzato Ant per gestire la build, ecco come installarlo su <em>Windows</em>:<br />
<!--more--></p>
<p>Installare il Java Development Kit <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a></p>
<p>Aggiungere la variabile di ambiente JAVA_HOME, ad esempio</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>C:\Program Files\Java\jdk1.7.0_25
</code></pre></div></div>
<p>Aggiungere la variabile alla variabile di Ambiente PATH il percorso dei binari</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>%JAVA_HOME%\bin
</code></pre></div></div>
<p>Sacricare <strong>ANT</strong> in versione binaria <a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a></p>
<p>Estrarre lo zip in una cartella, esempio</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>C:\Ant
</code></pre></div></div>
<p>Impostare la variabile di ambiente ANT_HOME inserendo il percorso dove abbiamo scompattato <strong>ANT</strong>, esempio</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>C:\Ant
</code></pre></div></div>
<p>A questo punto per verificare che sia tutto ok apriamo una riga di comando e diamo il comando ant -version:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>C:\Users\magnim>ant -version
Apache Ant(TM) version 1.9.1 compiled on May 15 2013
</code></pre></div></div>
<p>Se l’output non da errori vuol dire che Ant è installato correttamente.</p>
<p><a href="https://magni.me/2013/06/26/installare-apache-ant-su-windows/">Installare Apache Ant su Windows</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on June 26, 2013.</p>https://magni.me/2013/06/20/reimpostare-la-password-dellutente-root-in-mysql2013-06-20T00:00:00+00:002013-06-20T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p style="text-align: center;">
<a href="http://magni.me/wp-content/uploads/2013/06/mysql_logo.png"><img class="size-medium wp-image-844 aligncenter" alt="mysql_logo" src="http://magni.me/wp-content/uploads/2013/06/mysql_logo-300x155.png" width="300" height="155" /></a>
</p>
<p>Nel caso si voglia reimpostare la password dell’utente root di <strong><a href="http://www.mysql.com/" title="MySQL">Mysql Server</a></strong> abbiamo due metodi:</p>
<p><strong>Primo metodo</strong></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysqladmin -u root -p password secret
</code></pre></div></div>
<p><em>secret</em> sarà la nostra nuova password.<br />
Per fare la modifica ci verrà però chiesta l’attuale password di root, quindi è necessario conoscerla.</p>
<p><strong>Secondo metodo</strong><br />
Se ci fossimo dimenticati la password di root precedentemente impostata, la procedura da seguire è invece questa:</p>
<p>Prima di tutto dobbiamo fermare il servizio <em>mysql</em>.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>service mysqld stop
</code></pre></div></div>
<p>Ora dobbiamo avviare il servizio, disabilitando i sistemi di autenticazione</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysqld --skip-grant-tables &
</code></pre></div></div>
<p>Aggiungendo l’opzione –skip-networking possiamo disabilitare l’accesso da remoto per evitare che qualcuno sfrutti questa temporanea apertura.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysqld --skip-grant-tables --skip-networking &
</code></pre></div></div>
<p>Ora possiamo accedere a Mysql senza password:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mysql -u root mysql
</code></pre></div></div>
<p>Entrati nella shell di mysql settiamo la nuova password di root:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>UPDATE user SET password=PASSWORD("newpassword") WHERE User='root';
FLUSH PRIVILEGES;
</code></pre></div></div>
<p>Ora riavviamo il processo mysql ed avremo la possibilità di accedere con la nuova password</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>service mysqld restart
</code></pre></div></div>
<p><a href="https://magni.me/2013/06/20/reimpostare-la-password-dellutente-root-in-mysql/">Reimpostare la password di root in Mysql</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on June 20, 2013.</p>https://magni.me/2013/06/03/installare-compass-su-windows-per-utilizzare-sass2013-06-03T00:00:00+00:002013-06-03T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p><a href="http://magni.me/wp-content/uploads/2013/06/sass-compass.png"><img src="http://magni.me/wp-content/uploads/2013/06/sass-compass-300x148.png" alt="sass-compass" width="300" height="148" class="alignleft size-medium wp-image-825" /></a>Da poche settimane ho la “fortuna” di dover lavorare in ambiente Windows, quindi mi sto scontrando con la configurazione dell’ambiente di lavoro.</p>
<p>Ecco un piccolo howto per configurare <strong><a href="http://compass-style.org/" title="Compass Style">Compass</a></strong> su windows al fine di lavorare con <strong><a href="http://sass-lang.com/" title="Sass">Sass</a></strong>:</p>
<p>Installare Ruby sulla macchina:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code><http://rubyinstaller.org/downloads/>
</code></pre></div></div>
<p>Aprire il prompt di MS-DOS con Ruby</p>
<p>Installare le gemme</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gem update --system
$ gem install compass
</code></pre></div></div>
<p>Verificare che compass sia installato correttamente lanciare il comando</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ruby 2.0.0p195 (2013-05-14) [i386-mingw32]
C:\Users\magnim>compass -v
Compass 0.12.2 (Alnilam)
Copyright (c) 2008-2013 Chris Eppstein
Released under the MIT License.
Compass is charityware.
Please make a tax deductable donation for a worthy cause: http://umdf.org/compass
</code></pre></div></div>
<p><em>L’installazione è completa.</em></p>
<p><strong>Compilare i .scss</strong><br />
Per generare i css lanciare da riga di comando:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>C:\Users\magnim>compass compile --config compass.config.rb
</code></pre></div></div>
<p><strong>Compass in background</strong><br />
Per avere compass che in background genera i css che vengono modificati lanciare da riga di comando:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>C:\Users\magnim>compass watch --config compass-config.rb
</code></pre></div></div>
<p><a href="https://magni.me/2013/06/03/installare-compass-su-windows-per-utilizzare-sass/">Installare Compass su Windows per utilizzare Sass</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on June 03, 2013.</p>https://magni.me/2013/05/02/migrare-un-repository-da-svn-a-git-mantenendone-la-history-dei-commit2013-05-02T00:00:00+00:002013-05-02T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p><img src="http://magni.me/wp-content/uploads/2013/05/img0372-300x225.jpg" alt="IMG_0372" width="300" height="225" class="alignleft size-medium wp-image-795" /></p>
<p>Nel caso si voglia portare un repository <a href="http://it.wikipedia.org/wiki/Subversion"><strong>svn</strong></a> su <a href="http://it.wikipedia.org/wiki/Git_(software)"><strong>git</strong></a> mantenendone la history dei vari commit si può seguire questa procedura.</p>
<p><strong>Installare git svn:</strong></p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo aptitude install git-svn
</code></pre></div></div>
<p><strong>Importare il <em>trunk</em></strong></p>
<p>Clonare con git il repo svn:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git svn clone -s http://url.com/myrepos
</code></pre></div></div>
<p>L’opzione -s va usata per specificare che il repo svn ha la struttura [trunk/branches/tags]</p>
<p>Creare il repository git remoto (per esempio su <a href="http://bitbucket.org/ilbonzo">bitbucket</a> o <a href="http://github.com/ilbonzo">github</a>).</p>
<p>Aggiungere il repository remoto:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git remote add origin https://ilbonzo@bitbucket.org/ilbonzo/myrepos.git
</code></pre></div></div>
<p>Fare push di tutto su origin:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git push -u --all origin
</code></pre></div></div>
<p><strong>Gestione dei <em>branches</em>:</strong></p>
<p>Lista dei branches importati da svn</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git branch -r
FirstBranch
SecondBranch
</code></pre></div></div>
<p>Diciamo a git di tenere traccia di quei branch</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git branch --track FirstBranch
$ git branch --track SecondBranch
</code></pre></div></div>
<p>Inviamo i branch sul repo remoto</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git push -u --all origin
</code></pre></div></div>
<p>Finalmente il nostro codice è su <strong>git</strong> con tutti i vantaggi del caso.</p>
<div id="pdrp_endAttribution">
photo by: <a href="http://flickr.com/41894185093@N01/16372763" target="_blank" class="pdrp_link pdrp_attributionLink"> Jon_Aquino</a>
</div>
<p><a href="https://magni.me/2013/05/02/migrare-un-repository-da-svn-a-git-mantenendone-la-history-dei-commit/">Migrare un repository da Svn a Git mantenendone la history dei commit</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on May 02, 2013.</p>https://magni.me/2013/02/21/passare-a-partita-iva-al-pugbologna2013-02-21T00:00:00+00:002013-02-21T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p><a href="http://magni.me/wp-content/uploads/2013/02/piva-hh.png"><img class="alignleft size-medium wp-image-761" alt="Perché hai aperto la partita iva" src="http://magni.me/wp-content/uploads/2013/02/piva-hh-300x163.png" width="300" height="163" /></a>Ecco le slide del talk fatto ieri sera al <a href="http://bologna.grusp.org">PugBologna</a> da<a href="http://huynh.cc/"> Hoang C. Huynh</a> (<a href="https://twitter.com/Aetheros">@Aetheros</a>) a cui ho partecipato come caso “umano” portando la mia esperienza di quattro anni di partita iva.</p>
<div style="margin-bottom: 5px;">
<strong> <a title="Passare a Partita IVA, al PUGBO" href="http://www.slideshare.net/Aetheros/hh-pugbo-passareapiva" target="_blank">Passare a Partita IVA, al PUGBO</a> </strong> from <strong><a href="http://www.slideshare.net/Aetheros" target="_blank">Hoang C. Huynh</a></strong>
</div>
<div class="kindleWidget kindleLight">
</div>
<p><a href="https://magni.me/2013/02/21/passare-a-partita-iva-al-pugbologna/">Passare a Partita IVA, al @pugBologna</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on February 21, 2013.</p>https://magni.me/2013/02/18/php-53-54-features-pugbologna2013-02-18T00:00:00+00:002013-02-18T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p>Ecco le slide del mio speech fatto al <a href="http://bologna.grusp.org" title="Pug Bologna">pugBo</a> di gennaio sulle novità introdotte in PHP 5.3/5.4.</p>
<p>vedi le <a href="http://matteomagni.net/presentation-pugbo-php54/">slide su github</a></p>
<p>Le slide sono fatte in HTML5 con il template di <a href="http://code.google.com/p/html5slides/" title="HTML5 google slide">Google</a></p>
<div class="kindleWidget kindleLight">
</div>
<p><a href="https://magni.me/2013/02/18/php-53-54-features-pugbologna/">PHP 5.3/5.4 features @pugBologna</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on February 18, 2013.</p>https://magni.me/2013/01/14/playlist-20122013-01-14T00:00:00+00:002013-01-14T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p>Preso direttamente da <a href="http://www.lastfm.it/user/ilbonzo_org" title="Last.fm" target="_blank">Lastfm</a> ecco l’elenco dei brani che ho ascoltato di più nel 2012.</p>
<p>1 Placebo – Running Up That Hill 102<br />
2 The Cure – Just Like Heaven 95<br />
3 The Cure – Lullaby 93<br />
4 Alter Bridge – Watch Over You Ft. Cristina Scabbia 80<br />
5 Social Distortion – California (Hustle And Flow) 73<br />
6 The Cure – Friday I’m in Love 71<br />
7 Alter Bridge – Broken Wings 67<br />
8 Alter Bridge – Before Tomorrow Comes 66<br />
9 Alter Bridge – Brand New Start 65<br />
10 Alice in Chains – Nutshell 64<br />
11 Alter Bridge – Come To Life 62<br />
12 The Cure – Pictures of You 60<br />
12 Seether – Fine Again 60<br />
14 Alter Bridge – Open Your Eyes 56<br />
15 The Cure – Boys Don’t Cry 53<br />
16 The Cure – Close To Me 52</p>
<p>Per le statistiche grazie a lastfm, che purtroppo chiuderà in italia.</p>
<div class="kindleWidget kindleLight">
</div>
<p><a href="https://magni.me/2013/01/14/playlist-2012/">Playlist 2012</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on January 14, 2013.</p>https://magni.me/2012/12/21/html5-css3-webmaster-e-webdesigner2012-12-21T00:00:00+00:002012-12-21T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p>Queste solo le slide per il modulo su <a href="http://it.wikipedia.org/wiki/HTML5" title="HTML5 su Wikipedia">HTML5</a> e <a href="http://it.wikipedia.org/wiki/Css">Css3</a> utilizzate al corso per WebMaster e WebDesigner che sto tenendo in Synergia a Bologna.</p>
<div style="width:422px;margin:auto;">
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;text-align:left;">
<a title="SlideShare" href="http://www.slideshare.net/?src=multiwidget"><img src="http://static.slidesharecdn.com/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare" /></a> | <a href="http://www.slideshare.net/widgets/playlist" title="Get your SlideShare Playlist">Get your SlideShare Playlist</a>
</div>
</div>
<div class="kindleWidget kindleLight">
</div>
<p><a href="https://magni.me/2012/12/21/html5-css3-webmaster-e-webdesigner/">HTML5 e Css3 – WebMaster e WebDesigner</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on December 21, 2012.</p>https://magni.me/2012/11/06/jquery-webmaster-e-webdesigner2012-11-06T00:00:00+00:002012-11-06T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p>Queste solo le slide per il modulo su <a href="http://it.wikipedia.org/wiki/jQuery">jQuery</a> utilizzate al corso per WebMaster e WebDesigner che sto tenendo in <a href="http://www.synergia.it/">Synergia</a> a Bologna.</p>
<div style="width:422px;margin:auto;">
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;text-align:left;">
<a title="SlideShare" href="http://www.slideshare.net/?src=multiwidget"><img src="http://static.slidesharecdn.com/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare" /></a> | <a href="http://www.slideshare.net/widgets/playlist" title="Get your SlideShare Playlist">Get your SlideShare Playlist</a>
</div>
</div>
<div class="kindleWidget kindleLight">
</div>
<p><a href="https://magni.me/2012/11/06/jquery-webmaster-e-webdesigner/">jQuery – WebMaster e WebDesigner</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on November 06, 2012.</p>https://magni.me/2012/10/23/javascript-webmaster-e-webdesigner2012-10-23T00:00:00+00:002012-10-23T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p>Queste solo le slide per il modulo su <a href="http://it.wikipedia.org/wiki/javascript">Javascript</a> utilizzate al corso per WebMaster e WebDesigner che sto tenendo in <a href="http://www.synergia.it/">Synergia</a> a Bologna.</p>
<div style="width:422px;margin:auto;">
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;text-align:left;">
<a title="SlideShare" href="http://www.slideshare.net/?src=multiwidget"><img src="http://static.slidesharecdn.com/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare" /></a> | <a href="http://www.slideshare.net/widgets/playlist" title="Get your SlideShare Playlist">Get your SlideShare Playlist</a>
</div>
</div>
<div class="kindleWidget kindleLight">
</div>
<p><a href="https://magni.me/2012/10/23/javascript-webmaster-e-webdesigner/">Javascript – WebMaster e WebDesigner</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on October 23, 2012.</p>https://magni.me/2012/10/05/web-usability-webmaster-e-webdesigner2012-10-05T00:00:00+00:002012-10-05T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p>Queste solo le slide per il modulo sulla <a href="http://it.wikipedia.org/wiki/Usabilit%C3%A0_del_web">Web Usability</a> utilizzate al corso per WebMaster e WebDesigner che sto tenendo in <a href="http://www.synergia.it/">Synergia</a> a Bologna</p>
<div style="width:422px;margin:auto;">
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;text-align:left;">
<a title="SlideShare" href="http://www.slideshare.net/?src=multiwidget"><img src="http://static.slidesharecdn.com/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare" /></a> | <a href="http://www.slideshare.net/widgets/playlist" title="Get your SlideShare Playlist">Get your SlideShare Playlist</a>
</div>
</div>
<div class="kindleWidget kindleLight">
</div>
<p><a href="https://magni.me/2012/10/05/web-usability-webmaster-e-webdesigner/">Web Usability – WebMaster e WebDesigner</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on October 05, 2012.</p>https://magni.me/2012/07/20/scrivere-un-plugin-per-trac2012-07-20T00:00:00+00:002012-07-20T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p><a href="http://magni.me/wp-content/uploads/2012/07/trac_logo.png"><img src="http://magni.me/wp-content/uploads/2012/07/trac_logo-150x73.png" alt="" title="trac_logo" width="150" height="73" class="aligncenter size-thumbnail wp-image-659" /></a><br />
Recentemente mi sta capitando spesso di dover mettere le mani su <a href="http://trac.edgewall.org/" title="Trac Project Management" target="_blank">Trac</a>, il gestore di progetti scritto in <em>Python</em>.<br />
Ecco quindi un piccolo tutorial su come scrivere un plugin per questo sistema.</p>
<p>Creiamo le directory che conterranno il codice:</p>
<pre class="brush:bash">$ mkdir bonzo-plugin/
$ mkdir bonzo-plugin/bonzo/
</pre>
<p> </p>
<p>Scriviamo il primo file, il quale conterrà il codice principale del plugin:</p>
<pre class="brush:bash">$ vim bonzo-plugin/bonzo/bonzo.py</pre>
<p> </p>
<p>Ecco il cuore del nostro plugin che semplicemente genera una nuova voce di menu “bonzo” che permette di aprire una nuova pagina di url [/bonzo].</p>
<pre class="brush:python"># Bonzo plugin
import re
from genshi.builder import tag
from trac.core import *
from trac.web import IRequestHandler
from trac.web.chrome import INavigationContributor, ITemplateProvider
class BonzoPlugin(Component):
implements(INavigationContributor, IRequestHandler, ITemplateProvider)
# INavigationContributor methods
def get_active_navigation_item(self, req):
return 'Bonzo'
def get_navigation_items(self, req):
if 'TRAC_ADMIN' in req.perm: #QUESTO PERMETTE DI GESTIRE I PERMESSI DI QUESTO MENU
yield ('mainnav', 'bonzo',
tag.a('Bonzo', href=req.href.bonzo()))
# IRequestHandler methods
def match_request(self, req):
if 'TRAC_ADMIN' in req.perm: #QUESTO PERMETTE DI GESTIRE I PERMESSI DI QUESTa pagina
return re.match(r'/bonzo(?:_trac)?(?:/.*)?$', req.path_info)
def process_request(self, req):
data = {}
# This tuple is for Genshi (template_name, data, content_type)
# Without data the trac layout will not appear.
return 'bonzo.html', data, None
# ITemplateProvider methods
# Used to add the plugin's templates and htdocs
def get_templates_dirs(self):
from pkg_resources import resource_filename
return [resource_filename(__name__, 'templates')]
def get_htdocs_dirs(self):
return []
</pre>
<p> </p>
<p>Per poter visualizzare la pagina dobbiamo scriver il nostro template che utilizza <a href="http://genshi.edgewall.org/" title="Genshi template languige" target="_blank">Genshi</a> come template language.</p>
<pre class="brush:bash">$ vim bonzo-plugin/bonzo/templates/bonzo.html</pre>
<p> </p>
<pre class="brush:php">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:py="http://genshi.edgewall.org/"
xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="layout.html" />
<div id="ctxtnav" class="nav">
</div>
<div id="content" class="helloworld">
<h1>
Bonzo
</h1>
</div>
</html>
</pre>
<p> </p>
<p>A questo punto dobbiamo inserire il tutto in un modulo e per ciò ci basta fare un semplice file di una riga.</p>
<pre class="brush:bash">$ vim /bonzo-plugin$ vim bonzo/__init__.py</pre>
<p> </p>
<pre class="brush:python"># Bonzo module
from bonzo import *
</pre>
<p> </p>
<p>Finito, ora non ci resta che fare deploy del plugin.<br />
Creiamo il file di setup dove andiamo a mettere il nome del Plugin, la sua versione e andiamo ad settare quale sarà la directory contenente i templates.</p>
<pre class="brush:bash">$ vim bonzo-plugin/setup.py </pre>
<p> </p>
<pre class="brush:python">from setuptools import find_packages, setup
# name can be any name. This name will be used to create the .egg file.
# name that is used in packages is the one that is used in the trac.ini file.
# use package name as entry_points
setup(
name='TracBonzo', version='0.1',
packages=find_packages(exclude=['*.tests*']),
entry_points = """
[trac.plugins]
bonzo = bonzo
""",
package_data={'bonzo': ['templates/*.html']},
)
</pre>
<p> </p>
<p>Diamo il seguente comando per creare l’egg.</p>
<pre class="brush:bash">$ python setup.py bdist_egg</pre>
<p> </p>
<p>Se non ci sono errori ci ritroviamo una directory /dist con dentro un file .egg<br />
Ora abbiamo due strade:</p>
<ul>
<li>Installare direttamente il plugin nella istanza di trac</li>
<li>installare il plugin a livello di environment</li>
</ul>
<p>Per il primo caso ci basta copiare il file .egg dentro la directory /plugins dell’istanza di Trac e riavviare il webserver.<br />
Nel secondo caso, per installarlo nel virtual env posizionato in /var/trac-env, possiamo dare i seguenti comandi:</p>
<pre class="brush:bash">sudo mkdir /var/trac-env
cd /var/trac-env/
sudo virtualenv python
sudo /var/trac-env/python/bin/easy_install http://svn.edgewall.org/repos/trac/tags/trac-0.11
sudo /var/trac-env/python/bin/easy_install dist/TracBonzo-0.1-py2.6.egg</pre>
<p> </p>
<p>Dopo aver riavviato il web server il plugin è disponibile nell’enviroment e basta attivarlo attraverso l’admin plugin.</p>
<div class="kindleWidget kindleLight">
</div>
<p><a href="https://magni.me/2012/07/20/scrivere-un-plugin-per-trac/">Scrivere un plugin per Trac</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on July 20, 2012.</p>https://magni.me/2012/07/17/seo-e-web-marketing-webmaster-e-webdesigner2012-07-17T00:00:00+00:002012-07-17T00:00:00+00:00Matteo Magnihttps://magni.mematteo@magni.me<p>Queste solo le slide per il modulo su <a href="http://it.wikipedia.org/wiki/Ottimizzazione_(motori_di_ricerca)" title="wikipedia SEO" target="_blank">SEO</a> e <a href="http://it.wikipedia.org/wiki/Webmarketing" title="web marketing su wikipedia" target="_blank">Web Marketing</a> utilizzate al corso per WebMaster e WebDesigner che sto tenendo in <a href="http://www.synergia.it/" title="Synergia" target="_blank">Synergia</a> a Bologna</p>
<div style="width:422px;margin:auto;">
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;text-align:left;">
<a title="SlideShare" href="http://www.slideshare.net/?src=multiwidget"><img src="http://static.slidesharecdn.com/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare" /></a> | <a href="http://www.slideshare.net/widgets/playlist" title="Get your SlideShare Playlist">Get your SlideShare Playlist</a>
</div>
</div>
<div class="kindleWidget kindleLight">
</div>
<p><a href="https://magni.me/2012/07/17/seo-e-web-marketing-webmaster-e-webdesigner/">SEO e Web Marketing – WebMaster e WebDesigner</a> was originally published by Matteo Magni at <a href="https://magni.me">Matteo Magni</a> on July 17, 2012.</p>