<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>Curiosité de vie</title><description>Une fois qu on a goûté au futur on ne peut pas revenir en arrière.</description><managingEditor>noreply@blogger.com (Unknown)</managingEditor><pubDate>Wed, 6 Nov 2024 03:46:54 +0100</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">64</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://curiositedevie.blogspot.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:subtitle>Une fois qu on a goûté au futur on ne peut pas revenir en arrière.</itunes:subtitle><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><title>Windows 10 - Améliorer la vitesse</title><link>http://curiositedevie.blogspot.com/2019/11/windows-10-ameliorer-la-vitesse-wip.html</link><category>howto</category><category>windows</category><category>windows10</category><author>noreply@blogger.com (Unknown)</author><pubDate>Fri, 22 Nov 2019 21:21:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-2582138684968507632</guid><description>&lt;!--AVEC MARKDOWN =&gt; HTML : https://github.com &gt; New issue &gt; preview source

# Analyser les performances

Ouvre le **gestionnaire des tâches**: `CTRL` + `MAJ` + `ECHAP`
 - **performances**: vérifiez visuellement quel composant sature: CPU, Disque, Mémoire
 - **Détails**: lister processus en cours d'exécution: tri possible sur CPU ou Mémoire en décroissant
 - **Historique des applications** : tri sur temps processeur en décroissant
 - **Démarrage** : vérifier ldes services au démarrage. Désactiver en cas de doute

# Disque dur

 - Analyse / Defrag: "Optimiser les lecteurs"
 - Cleanup: "Nettoyage de disque"
 - Régler l’apparence et les performances de Windows 
    -  cocher `Ajuster afin d’obtenir les meilleures performances`

# Applications imposées

### Lister
 - Ouvrir PowerShell (en tant qu'administrateur)
```bash
 Get-AppxPackage | Format-List -Property Name
```

- Exemple pour rechercher Facebook ou Mirosoft
```bash
 Get-AppxPackage -Name fa* | Format-List -Property Name
 Get-AppxPackage -Name Microsoft* | Format-List -Property Name
```

### Désinstallation

 - Ouvrir PowerShell (en tant qu'administrateur)

```bash
 Get-AppxPackage *windowscommunicationsapps* | Remove-AppxPackage
 Get-AppxPackage *xboxapp* | Remove-AppxPackage
 Get-AppxPackage *officehub* | Remove-AppxPackage
 Get-AppxPackage *solitairecollection* | Remove-AppxPackage
 Get-AppxPackage *bingfinance* | Remove-AppxPackage
 Get-AppxPackage *bingnews* | Remove-AppxPackage
 Get-AppxPackage *bingsports* | Remove-AppxPackage
 Get-AppxPackage *bingweather* | Remove-AppxPackage
 Get-AppxPackage *Microsoft.Office.OneNote* | Remove-AppxPackage
 Get-AppxPackage *Facebook.Facebook* | Remove-AppxPackage
 Get-AppxPackage *Microsoft.WindowsMaps* | Remove-AppxPackage
 Get-AppxPackage *Microsoft.WindowsCamera* | Remove-AppxPackage
 Get-AppxPackage *Microsoft.People* | Remove-AppxPackage
 Get-AppxPackage *Microsoft.Windows.Photos* | Remove-AppxPackage
 Get-AppxPackage *Microsoft.BingTravel* | Remove-AppxPackage
 Get-AppxPackage *Microsoft.BingFoodAndDrink* | Remove-AppxPackage
 Get-AppxPackage *Microsoft.FreshPaint* | Remove-AppxPackage
```

### Réinstaller une application

Si par erreur vous avez supprimé une application utile, reprenez son nom dans la ligne suivante (ex. pour la première^): 

```
Get-AppxPackage -AllUsers  -Name *windowscommunicationsapps* | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
```

 # TODO A intégrer
 - Comment virer Edge (src), Cortana
 - list apps : https://docs.microsoft.com/fr-fr/windows/application-management/apps-in-windows-10

Film et TV
Get-AppxPackage Microsoft.ZuneVideo  | Remove-AppxPackage

# Sources utilisées
- [astuces-aide-informatique.info -optimiser-windows-10](https://www.astuces-aide-informatique.info/730/optimiser-windows-10)
- [techcroute.com - applications-indesirable W10](https://www.techcroute.com/comment-supprimer-les-applications-indesirables-de-windows-10/)--&gt;

&lt;br /&gt;
&lt;div class="comment-body markdown-body js-preview-body" style="min-height: 334px;"&gt;
&lt;h1&gt;
Analyser les performances&lt;/h1&gt;
Ouvre le &lt;strong&gt;gestionnaire des tâches&lt;/strong&gt;: &lt;code&gt;CTRL&lt;/code&gt; + &lt;code&gt;MAJ&lt;/code&gt; + &lt;code&gt;ECHAP&lt;/code&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;performances&lt;/strong&gt;: vérifiez visuellement quel composant sature: CPU, Disque, Mémoire&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Détails&lt;/strong&gt;: lister processus en cours d'exécution: tri possible sur CPU ou Mémoire en décroissant&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Historique des applications&lt;/strong&gt; : tri sur temps processeur en décroissant&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Démarrage&lt;/strong&gt; : vérifier ldes services au démarrage. Désactiver en cas de doute&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
Disque dur&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Analyse / Defrag: "Optimiser les lecteurs"&lt;/li&gt;
&lt;li&gt;Cleanup: "Nettoyage de disque"&lt;/li&gt;
&lt;li&gt;Régler l’apparence et les performances de Windows
&lt;ul&gt;
&lt;li&gt;cocher &lt;code&gt;Ajuster afin d’obtenir les meilleures performances&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
Applications imposées&lt;/h1&gt;
&lt;h3&gt;
Lister&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Ouvrir PowerShell (en tant qu'administrateur)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell"&gt;
&lt;pre&gt; Get-AppxPackage &lt;span class="pl-k"&gt;|&lt;/span&gt; Format-List -Property Name&lt;/pre&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Exemple pour rechercher Facebook ou Mirosoft&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell"&gt;
&lt;pre&gt; Get-AppxPackage -Name fa&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Format-List -Property Name
 Get-AppxPackage -Name Microsoft&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Format-List -Property Name&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;
Désinstallation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Ouvrir PowerShell (en tant qu'administrateur)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell"&gt;
&lt;pre&gt; Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;windowscommunicationsapps&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;xboxapp&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;officehub&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;solitairecollection&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;bingfinance&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;bingnews&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;bingsports&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;bingweather&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;Microsoft.Office.OneNote&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;Facebook.Facebook&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;Microsoft.WindowsMaps&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;Microsoft.WindowsCamera&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;Microsoft.People&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;Microsoft.Windows.Photos&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;Microsoft.BingTravel&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;Microsoft.BingFoodAndDrink&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage
 Get-AppxPackage &lt;span class="pl-k"&gt;*&lt;/span&gt;Microsoft.FreshPaint&lt;span class="pl-k"&gt;*&lt;/span&gt; &lt;span class="pl-k"&gt;|&lt;/span&gt; Remove-AppxPackage&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;
Réinstaller une application&lt;/h3&gt;
Si par erreur vous avez supprimé une application utile, reprenez son nom dans la ligne suivante (ex. pour la première^):&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;Get-AppxPackage -AllUsers  -Name *windowscommunicationsapps* | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;/ul&gt;
&lt;h1&gt;
Sources utilisées&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.astuces-aide-informatique.info/730/optimiser-windows-10" rel="nofollow"&gt;astuces-aide-informatique.info -optimiser-windows-10&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.techcroute.com/comment-supprimer-les-applications-indesirables-de-windows-10/" rel="nofollow"&gt;techcroute.com - applications-indesirable W10&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>GPG: minimal how to</title><link>http://curiositedevie.blogspot.com/2018/06/gpg-minimal-how-to.html</link><category>decrypt</category><category>encrypt</category><category>gnupg</category><category>gpg</category><category>gpg2</category><category>howto</category><category>key</category><category>secret</category><category>secure</category><category>sign</category><category>signature</category><category>verify</category><author>noreply@blogger.com (Unknown)</author><pubDate>Thu, 7 Jun 2018 13:20:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-5880094237079905957</guid><description>&lt;h2&gt;
GPG minimal how-to !&lt;/h2&gt;
&lt;span style="color: #990000;"&gt;GPG is a free and easy way to encrypt and/or verify your exchanges. &lt;br /&gt;&lt;i&gt;This HowTo was done with "gpg (GnuPG) 1.4.22" a GNU GPLv3 tool.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #990000;"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style="color: #990000;"&gt;This post includes GPG basic commands:&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #990000;"&gt;- generate your key&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #990000;"&gt;- send/receive encrypted content&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #990000;"&gt;- sign or verify a content&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #990000;"&gt;- export/import your secret key&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;on windows host, you could install and use &lt;a href="https://gitforwindows.org/"&gt;git bash&lt;/a&gt; to follow this steps&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="-webkit-text-stroke-width: 0px; color: black; font-family: &amp;quot;times new roman&amp;quot;; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style="-webkit-text-stroke-width: 0px; color: black; font-family: &amp;quot;times new roman&amp;quot;; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;
&lt;div style="margin: 0px;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="background-color: yellow;"&gt;Initialize GPG tool using 'list keys' ?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;
&lt;pre style="line-height: 16.25px;"&gt;&lt;span style="background-color: white;"&gt;$ gpg --list-keys
gpg: répertoire «&amp;nbsp;/home/osboxes/.gnupg&amp;nbsp;» créé
gpg: nouveau fichier de configuration «&amp;nbsp;/home/osboxes/.gnupg/dirmngr.conf&amp;nbsp;» créé
gpg: nouveau fichier de configuration «&amp;nbsp;/home/osboxes/.gnupg/gpg.conf&amp;nbsp;» créé
gpg: le trousseau local «&amp;nbsp;/home/osboxes/.gnupg/pubring.kbx&amp;nbsp;» a été créé
gpg: /home/osboxes/.gnupg/trustdb.gpg&amp;nbsp;: base de confiance créée
&lt;span style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;&lt;span style="white-space: normal;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;span style="background-color: white;"&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;div style="color: black; font-family: &amp;quot;Times New Roman&amp;quot;; white-space: normal;"&gt;
&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;First time a gpg command is executed, gpg produces base gpg init: a ~/.gnupg directory&lt;/i&gt;&lt;br /&gt;
&lt;div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;&lt;span style="background-color: yellow;"&gt;How to generate my key ?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;
&lt;div style="text-align: start;"&gt;
&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="background-color: white; border: solid gray; font-family: &amp;quot;times new roman&amp;quot;; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;
&lt;pre style="line-height: 16.25px;"&gt;&lt;span style="background-color: white;"&gt;$ gpg --gen-key&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;ul style="text-align: start;"&gt;&lt;ul&gt;&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;ul&gt;&lt;ul style="background-color: white;"&gt;&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="background-color: white;"&gt;Keep default options, and&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white;"&gt;answer question about real name, and email, and passphrase.&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="background-color: white;"&gt;That's all.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="background-color: white;"&gt;Now you can list your key:&lt;/span&gt;&lt;/div&gt;
&lt;pre style="line-height: 16.25px;"&gt;&lt;span style="background-color: white;"&gt;&lt;div style="font-family: &amp;quot;times new roman&amp;quot;; text-align: justify; white-space: normal;"&gt;
&lt;div style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;
&lt;div style="text-align: start;"&gt;
&lt;span style="background-color: white;"&gt;&lt;/span&gt;

&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="border: solid gray; font-family: &amp;quot;times new roman&amp;quot;; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;
&lt;pre style="line-height: 16.25px;"&gt;&lt;span style="background-color: white;"&gt;$ gpg --list-secret-keys&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div&gt;
&lt;span style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;You could distribute your public key:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style="text-align: start;"&gt;
&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="background-color: white; border: solid gray; font-family: &amp;quot;times new roman&amp;quot;; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;
&lt;pre style="line-height: 16.25px;"&gt;&lt;span style="background-color: white;"&gt;$ &lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px; white-space: normal;"&gt;gpg --keyserver hkp://keyserver.ubuntu.com:80 --send-keys&amp;nbsp;KEYIDHERE&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;ul style="text-align: start;"&gt;&lt;ul&gt;&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul style="color: black; font-family: &amp;quot;times new roman&amp;quot;; white-space: normal;"&gt;
&lt;li&gt;&lt;span style="background-color: yellow;"&gt;How to send encrypted content ?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style="color: black; font-family: &amp;quot;times new roman&amp;quot;; white-space: normal;"&gt;&lt;ul style="background-color: white;"&gt;
&lt;li&gt;Search (or ask) your recipient KEYID using the following command:&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div style="text-align: start;"&gt;
&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="background-color: white; border: solid gray; font-family: &amp;quot;times new roman&amp;quot;; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;
&lt;pre style="line-height: 16.25px;"&gt;&lt;span style="background-color: white;"&gt;$ &lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px; white-space: normal;"&gt;gpg --keyserver hkp://keyserver.ubuntu.com:80&amp;nbsp;&lt;/span&gt;--search-keys robert&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;ul style="text-align: start;"&gt;&lt;ul&gt;&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;ul style="color: black; font-family: &amp;quot;times new roman&amp;quot;; white-space: normal;"&gt;&lt;ul style="background-color: white;"&gt;
&lt;li&gt;Receive the key (require KEYID)&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div style="background-color: white; border: solid gray; color: black; font-family: &amp;quot;times new roman&amp;quot;; overflow: auto; padding: 0.2em 0.6em; white-space: normal; width: auto;"&gt;
&lt;pre style="line-height: 16.25px;"&gt;$ &lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px; white-space: normal;"&gt;gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys&amp;nbsp;KEYIDHERE&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;li&gt;Encrypt file using a given recipient (require related key)&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="border: solid gray; font-family: &amp;quot;times new roman&amp;quot;; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;
&lt;pre style="line-height: 16.25px;"&gt;&lt;span style="background-color: white;"&gt;&lt;span style="background-color: white;"&gt;$ &lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px; white-space: normal;"&gt;gpg -r jojo@yoyo.fr -o encrypted.gpg -e clear_content.txt&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;; text-align: center;"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;this command will encrypt "&lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px;"&gt;clear_content.txt" into "&lt;/span&gt;&lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px;"&gt;encrypted.gpg" using "&lt;/span&gt;&lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px;"&gt;jojo@yoyo.fr" key.&lt;br /&gt;you could add multiple recipient by repeating -r option&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;&lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px;"&gt;you coul ascii encode by using -a option&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;li&gt;Use your favorite email client to send encrypted file.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;; text-align: justify;"&gt;
&lt;div style="font-family: &amp;quot;Times New Roman&amp;quot;; text-align: start;"&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;; text-align: justify;"&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;; text-align: center;"&gt;
&lt;div&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="background-color: white;"&gt;&lt;i&gt;&lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;
&lt;li&gt;&lt;span style="background-color: yellow;"&gt;How to receive encrypted content from somebody&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;li&gt;You will need the following requirements:&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;generate and distribute your own key (step above)&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;communicate about the way to encrypt content (step above) to you recepient&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;ul&gt;&lt;ul&gt;
&lt;li&gt;Use your favorite email client to receive encrypted file.&lt;/li&gt;
&lt;li&gt;Decrypt received file using the following command:&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;; text-align: justify;"&gt;
&lt;div style="font-family: &amp;quot;Times New Roman&amp;quot;; text-align: start;"&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;; text-align: justify;"&gt;
&lt;div style="border: solid gray; font-family: &amp;quot;times new roman&amp;quot;; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;
&lt;pre style="line-height: 16.25px;"&gt;&lt;span style="background-color: white;"&gt;&lt;span style="background-color: white;"&gt;$ &lt;span style="color: #222222; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 12.8px; white-space: normal;"&gt;gpg -o decrypted.txt -d encrypted.gpg&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;; text-align: center;"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="color: black; font-family: &amp;quot;Times New Roman&amp;quot;; white-space: normal;"&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;&lt;span style="background-color: yellow;"&gt;How to add detached signature?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;i&gt;You would like to prove that YOU send clear information (this command doesn't encrypt the message itself)&amp;nbsp;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;
&lt;div style="text-align: start;"&gt;
&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="background-color: white; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;
&lt;pre style="line-height: 16.25px;"&gt;&lt;span style="background-color: white;"&gt;$ gpg -o doc.sig --clearsign doc&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul style="text-align: start;"&gt;&lt;ul&gt;&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;ul&gt;&lt;ul style="background-color: white;"&gt;&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="background-color: white;"&gt;You will need to answer you passphrase. &lt;br /&gt;This will add a clear signature from doc and generate doc.sig as result&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul style="background-color: white;"&gt;
&lt;li&gt;&lt;span style="background-color: yellow;"&gt;How to verify message with detached signature?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;i&gt;You would like to prove clear information associated signature identity (this command doesn't decrypt the message itself)&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
Assume you message with detached signature is in a file called "doc.sig"&lt;/div&gt;
&lt;ul style="color: black; font-family: &amp;quot;times new roman&amp;quot;; white-space: normal;"&gt;&lt;/ul&gt;
&lt;div style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;
&lt;div style="text-align: start;"&gt;
&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="background-color: white; border: solid gray; font-family: &amp;quot;times new roman&amp;quot;; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;
&lt;pre style="line-height: 16.25px;"&gt;&lt;span style="background-color: white;"&gt;$ &lt;/span&gt;gpg -o doc -d doc.sig&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul style="text-align: start;"&gt;&lt;ul&gt;&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;ul style="color: black; font-family: &amp;quot;times new roman&amp;quot;; white-space: normal;"&gt;&lt;ul style="background-color: white;"&gt;&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul style="text-align: justify;"&gt;
&lt;li&gt;&lt;span style="background-color: yellow;"&gt;How to backup your secret key?&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
export it (in a very very secure place)&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;
&lt;div style="text-align: start;"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="background-color: white; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;
&lt;pre style="line-height: 16.25px;"&gt;&lt;span style="background-color: white;"&gt;$ gpg --list-secret-keys&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height: 16.25px;"&gt;$ gpg --export-secret-keys -a MYKEYID &amp;gt; username_gpg_export_secret.asc&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul style="text-align: start;"&gt;&lt;ul&gt;&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;ul style="color: black; font-family: &amp;quot;times new roman&amp;quot;; white-space: normal;"&gt;&lt;ul style="background-color: white;"&gt;&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
import it&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;
&lt;div style="text-align: start;"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;div style="background-color: white; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;"&gt;
&lt;pre style="line-height: 16.25px;"&gt;&lt;span style="background-color: white;"&gt;$ &lt;/span&gt;gpg --import -a username_gpg_export_secret.asc&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;ul style="text-align: start;"&gt;&lt;ul&gt;&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;ul style="color: black; font-family: &amp;quot;times new roman&amp;quot;; white-space: normal;"&gt;&lt;ul style="background-color: white;"&gt;&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
"-a" means ascii export/import. You could omit this option to export/import binary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="background-color: white;"&gt;Related documentations&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="background-color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="background-color: white;"&gt;- sonatype: &lt;a href="https://central.sonatype.org/pages/working-with-pgp-signatures.html"&gt;working with php suignatures&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white;"&gt;- gnupg.org: &lt;a href="https://www.gnupg.org/gph/en/manual/x135.html"&gt;manual&lt;/a&gt;(signature)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="background-color: white;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="font-family: &amp;quot;times new roman&amp;quot;;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;span style="background-color: white;"&gt;&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span style="background-color: white;"&gt;
&lt;/span&gt;&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Galaxy Tab 10.1: HowTo move to CyanogenMod 10</title><link>http://curiositedevie.blogspot.com/2018/04/galaxy-tab-101-howto-move-to-cyanoge-mod.html</link><category>10.1</category><category>adb</category><category>androï</category><category>cyanogen</category><category>galaxytab</category><category>ROM</category><category>TWRP</category><author>noreply@blogger.com (Unknown)</author><pubDate>Sat, 28 Apr 2018 15:02:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-7982226781750224071</guid><description>&lt;b&gt;1) Install TWRP (from&lt;a href="https://www.theandroidsoul.com/how-to-install-twrp-recovery-using-odin/"&gt; this tutorial&lt;/a&gt;)&lt;/b&gt;&lt;br /&gt;
(suppose you already have adb installed)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="white-space: pre;"&gt; &lt;/span&gt;BOOT with VOL UP + POWER&lt;br /&gt;
&lt;span style="white-space: pre;"&gt; &lt;/span&gt;go to DOWNLOAD on right with VOL-UP&lt;br /&gt;
&lt;span style="white-space: pre;"&gt; &lt;/span&gt;(wait odin)&lt;br /&gt;
&lt;span style="white-space: pre;"&gt; &lt;/span&gt;on PC&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;Start ODIN&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;In AP field select TWRP =&amp;gt; twrp311-20171009-p4wifi.tar.md5&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;clic "start"&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;(tablet reboot after install) unconnect USB and close odin&lt;br /&gt;
&lt;span style="white-space: pre;"&gt; &lt;/span&gt;BOOT with VOL UP + POWER&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;  &lt;/span&gt;go to UPDATE on left with VOL-LOW&lt;br /&gt;
&lt;br /&gt;
&lt;span style="white-space: pre;"&gt; &lt;/span&gt;connect tablet with USB&lt;br /&gt;
&lt;br /&gt;
2) check ADB&lt;br /&gt;
&lt;br /&gt;
&lt;span style="white-space: pre;"&gt; &lt;/span&gt;ADB should dectect&lt;br /&gt;
&lt;br /&gt;
\GalaxyTab10_1&amp;gt;c:\Adb\adb.exe devices&lt;br /&gt;
List of devices attached&lt;br /&gt;
C4F125509CFF91F recovery&lt;br /&gt;
&lt;br /&gt;
2) boot onto TWRP and push ROM files&lt;br /&gt;
&lt;br /&gt;
\GalaxyTab10_1&amp;gt;C:\adb\adb.exe push cm-10-20130825-UNOFFICIAL-p4wifi.zip /tmp&lt;br /&gt;
1300 KB/s (160472620 bytes in 120.502s)&lt;br /&gt;
&lt;br /&gt;
\GalaxyTab10_1&amp;gt;C:\adb\adb.exe push gapps-jb-20121011-signed.zip /tmp&lt;br /&gt;
1295 KB/s (92706064 bytes in 69.888s)&lt;br /&gt;
&lt;br /&gt;
Push SuperUser file&lt;br /&gt;
\GalaxyTab10_1&amp;gt;C:\adb\adb.exe push superuser.zip /tmp&lt;br /&gt;
1325 KB/s (3922325 bytes in 2.889s)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="white-space: pre;"&gt; &lt;/span&gt;Install ROM&lt;br /&gt;
&lt;span style="white-space: pre;"&gt; &lt;/span&gt;Install Gapps&lt;br /&gt;
&lt;span style="white-space: pre;"&gt; &lt;/span&gt;Install SuperUser&lt;br /&gt;
&lt;span style="white-space: pre;"&gt; &lt;/span&gt;REBOOT&lt;br /&gt;
&lt;br /&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>ROM Wiko Ridge Fab 4G - retour d'expérience</title><link>http://curiositedevie.blogspot.com/2017/12/rom-wiko-ridge-fab-4g-retour-dexperience.html</link><category>4G</category><category>adb</category><category>Android</category><category>boot</category><category>bootloader</category><category>fab</category><category>fastboot</category><category>ridge</category><category>ROM</category><category>TWRP</category><category>wiko</category><author>noreply@blogger.com (Unknown)</author><pubDate>Sat, 23 Dec 2017 18:03:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-4465032545429267681</guid><description>&lt;br/&gt;&lt;hr /&gt;
&lt;h3&gt;Wiko Ridge Fab 4 ROM: partage d'expérience&lt;/h3&gt;
&lt;hr /&gt;
&lt;i&gt;Après de nombreux problèmes avec la &lt;a href="http://support-fr.wikomobile.com/update-536-mise-jour-ridge-fab-4g"&gt;ROM officielle&lt;/a&gt;&amp;nbsp;RIDGE FAB 4G_V14 (publicité sur le launcher ou clavier TouchPal, reboot intempestifs, blocages au démarrage, problèmes de détection de storage, desfois des problèmes avec la charge, et facebook..), et vu que nous &lt;a href="http://www.phonandroid.com/forum/wiko-bloque-au-demarrage-erreur-du-recovery-impossible-de-reset-t167851.html"&gt;ne sommes pas les seuls&lt;/a&gt;, nous décidons de changer de ROM.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Avec notre téléphone, nous n'avons pas trouvé de ROM non-officielle qui apporte satisfaction (notre exigence: DATA + GPS + CAMERA + STABLE): cf. Mini HowTo (B)&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Avec la ROM officielle en supprimant TouchPal: cf. Mini HowTo (A).&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Notre expérience: après 3 jours dans cette configuration, le téléphone est plutôt stable, il n'a fait que 2 reboot (non désirés) lors d'installations d'application. Après 20 jours, des problèmes de plantages d'applications google apparaissent. Très vite le téléphone ne boot plus.&lt;/i&gt;
&lt;br/&gt;
Conclusion: changement de téléphone!&lt;br/&gt;


&lt;br/&gt;&lt;hr /&gt;
&lt;h3&gt;Wiko Ridge Fab 4 ROM: our feedback&lt;/h3&gt;
&lt;hr /&gt;&lt;br/&gt;

&lt;i&gt;Following multiples issues with official ROM (advertising from the laucher or TouchPal  keyboard, unwanted reboots, startup hangs, storage detection issue, sometimes recharging issue or facebook issue..) and as we are not alone in this case, we decided to change ROM.&lt;/i&gt;&lt;br/&gt;
&lt;br/&gt;
&lt;i&gt;With our phone, we didn't found unofficial ROM which brig us satisfaction (DATA+GPS+CAMERA+STABLE): cf. Mini HowTo (B)&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Other way: re-install official ROM and remove the TouchPal application: cf. Mini HowTo (A).&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;Our feedback: following 3 days in this configuration, phone seems stable. We just encounter 2 unwanted reboots while installing apps. Following 20 days, we encounter some hang issue with google app, and then few days after the phone were not able to boot anymore.&lt;/i&gt;&lt;br/&gt;
&lt;br/&gt;
Conclusion: change the phone!&lt;br/&gt;



&lt;hr /&gt;
&lt;h3&gt;
Resources&lt;/h3&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;adb+fastboot&amp;nbsp;&lt;/b&gt;&amp;nbsp; ( eg. &lt;a href="https://www.getdroidtips.com/how-to-install-adb-and-fastboot-on-windows/"&gt;https://www.getdroidtips.com/how-to-install-adb-and-fastboot-on-windows/&lt;/a&gt; )&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;adb doc:&amp;nbsp;&lt;a href="http://adbshell.com/commands/adb-devices"&gt;http://adbshell.com/commands/adb-devices&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;TWRP recovery&lt;/b&gt; for your phone (eg.&amp;nbsp;&lt;a href="https://www.getdroidtips.com/twrp-recovery-wiko-ridge-4g/#Download_Files"&gt;https://www.getdroidtips.com/twrp-recovery-wiko-ridge-4g/#Download_Files&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Unofficial ROM (+patch)&lt;/b&gt; from XDA-Developers:&lt;/li&gt;
&lt;/ul&gt;
&lt;table border="1" cellpadding="10" cellspacing="0"&gt;
&lt;tbody&gt;
&lt;tr style="background-color: grey;"&gt;&lt;th&gt;Nom&lt;/th&gt;&lt;th&gt;Experience in my case: keeping in mind that each phone have it's own hardware issue ;)&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://forum.xda-developers.com/android/development/rom-cyanogenmod-unofficial-builds-wiko-t3548081"&gt;cyanogenmod-unofficial&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Boot OK, Wifi OK, Camera OK but need to disable GPS Location to make it working. With GPS enabled, the phone hang when taping on application icon.&lt;br /&gt;
Day2: the mobile is not able to find 2G/3G/4G ! :(&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://forum.xda-developers.com/android/development/rom-maxicm-5-1-1-unofficial-wiko-ridge-t3553310"&gt;maxicm-5-1-1-unofficial&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;boot OK, wifi OK, but camera and GGMaps hangs the phone after fiew seconds!! :(&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://forum.xda-developers.com/android/development/rom-lineageos-13-wiko-ridge-fab-4g-t3590090"&gt;lineageos-13&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;(need to retest with gapps!) seems stable but there is some matter: no camera&amp;nbsp;+ batterie issue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href="https://forum.xda-developers.com/android/development/rom-resurrection-remix-wiko-ridge-4g-t3553322"&gt;resurrection-remix&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;not tested because of forum feedback:&lt;br /&gt;
Mobile data doesn't work.&lt;br /&gt;
Camera works but for a few seconds. Then device hangs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href="https://forum.xda-developers.com/android/development/rom-slimlp-wiko-ridge-4g-t3550343"&gt;SlimLP&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;not tested following ASAZING answer: "Mobile data and gps do not work"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Google Apps&lt;/b&gt;:&amp;nbsp;&lt;a href="http://opengapps.org/"&gt;http://opengapps.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.getdroidtips.com/download-supersu-root-zip/"&gt;SuperSU (v2.82 ou sup.)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;HowTo pre-requisites&lt;/h3&gt;
&lt;br /&gt;
&lt;b&gt;check adb is detecting your device:&lt;/b&gt;&lt;br /&gt;
(from mobile)&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;power + volume UP&amp;nbsp;&amp;nbsp;until vibration&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;(else try volume DOWN on some device)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;"apply update from adb"&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
(from workstation)&lt;/div&gt;
&lt;pre&gt;  c:\adb\adb.exe devices
&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;your device must be listed&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;HowTo: boot on TWRP recovery&lt;/h3&gt;

&lt;hr /&gt;
&lt;br /&gt;
(from workstation)&lt;br /&gt;
&lt;pre&gt;  c:\adb\fastboot.exe boot TWRP_L5320.img
&lt;/pre&gt;
&lt;pre&gt;  (command is now waiting the phone...)&lt;/pre&gt;
&lt;br /&gt;
(from mobile)&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;power + volume UP&amp;nbsp;&amp;nbsp;until vibration &lt;/li&gt;
&lt;li&gt;"reboot to bootloader" (line 5)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv40rS3jFTPQAlaKzoWVu9QYogx86QPCxe3_LatFpEMQwBbJjhMTbixnRI6tbtD1rUYWVKZVo7ULNiMmapfNPHMaoGUU-pRoAVEiA5UgYZghfe3EV2ScLgfbE7V2cu0Sximg41ogw4AbNT/s1600/StandardRecovery.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1202" data-original-width="1493" height="257" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv40rS3jFTPQAlaKzoWVu9QYogx86QPCxe3_LatFpEMQwBbJjhMTbixnRI6tbtD1rUYWVKZVo7ULNiMmapfNPHMaoGUU-pRoAVEiA5UgYZghfe3EV2ScLgfbE7V2cu0Sximg41ogw4AbNT/s320/StandardRecovery.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;

&lt;hr /&gt;
&lt;h3&gt;
Mini HowTo (A) re-install Official ROM from scratch onto WIko Ridge Fab 4G 5320 (with Snapdragon) and remove TouchPal&lt;/h3&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;b&gt;If you follow this steps, it's at your own risks. We can't be responsible if you brick your phone&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;download official ROM from &lt;a href="http://support-fr.wikomobile.com/update-536-mise-jour-ridge-fab-4g"&gt;support-fr.wikomobile.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;download &lt;a href="https://www.getdroidtips.com/download-supersu-root-zip/"&gt;SuperSU (v2.82 ou sup.)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;unzip &lt;code&gt;RIDGE_FAB_4G_LL_V14.zip&lt;/code&gt; and execute &lt;code&gt;RIDGE FAB 4G_V14.exe&lt;/code&gt;, then follow the step described on the screen.&lt;/li&gt;
&lt;li&gt;boot on TWRP&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyHLFQHCTGs6wJiKqzix99piqEq6qkovOlM4ktvpna-R72JoabI-yYGFxjuKLI9iyztNPAr1-G7NaL9aBNJ_YDalUC6BTsY9AsbQ2D6lEfvE_OAi6sp8Q6U7Cn60HiuscFMliPdPoU3NDK/s1600/TWRP.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1600" data-original-width="1068" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyHLFQHCTGs6wJiKqzix99piqEq6qkovOlM4ktvpna-R72JoabI-yYGFxjuKLI9iyztNPAr1-G7NaL9aBNJ_YDalUC6BTsY9AsbQ2D6lEfvE_OAi6sp8Q6U7Cn60HiuscFMliPdPoU3NDK/s320/TWRP.jpg" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;push SuperSu on the phone:&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;pre&gt;c:\adb\adb.exe push SuperSU-v2.82-201705271822.zip /tmp
&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;install SuperSU using TWRP&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwOMemq03nwFqqiAfQSNx6JiBF4jJ8uX-I0UgBJ428mdFNs8IkUqhLw6U5kMjh7XgMUobTKpCrRYNBofxHAgiBPmf5Yrj-p8aP4SH-PAGO6la9uvtN38BySQ2CMmbIcdI0YI_m7SEMxGXc/s1600/SuperSU.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1600" data-original-width="944" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwOMemq03nwFqqiAfQSNx6JiBF4jJ8uX-I0UgBJ428mdFNs8IkUqhLw6U5kMjh7XgMUobTKpCrRYNBofxHAgiBPmf5Yrj-p8aP4SH-PAGO6la9uvtN38BySQ2CMmbIcdI0YI_m7SEMxGXc/s320/SuperSU.jpg" width="188" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;reboot the phone&lt;/li&gt;
&lt;li&gt;via Android parameters ("Langue et saisie"), move from Touchpal keyboard to Google keyboard.&lt;/li&gt;
&lt;li&gt;install &lt;a href="https://play.google.com/store/apps/details?id=com.jumobile.manager.systemapp&amp;amp;hl=fr"&gt;Désinstalleur App System(ROOT)&lt;/a&gt; (SuperSu required)&lt;/li&gt;
&lt;li&gt;with this application, &lt;b&gt;uninstall "TouchPal 2015" (and associated langage packs)!!&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;h3&gt;
Mini HowTo (B) install Custom Unofficial ROM onto WIko Ridge Fab 4G 5320 (with Snapdragon)&lt;/h3&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;b&gt;If you follow this steps, it's at your own risks. We can't be responsible if you brick your phone&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;From following samples&lt;/i&gt;: 
  &lt;a href="https://www.getdroidtips.com/lineage-os-13-wiko-ridge-fab-4g/"&gt;(getdroidtips.com) lineage-os-13-wiko-ridge-fab-4g&lt;/a&gt;
  and
  &lt;a href="http://www.phonandroid.com/forum/root-facile-du-wiko-ridge-fab-4g-t121370.html"&gt;(phonandroid.com) Root Ridge4G&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;

&lt;br /&gt;

&lt;br /&gt;
&lt;b&gt;What "patch" means ? (5320 only)&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;download ROM + patch&lt;/li&gt;
&lt;li&gt;push ROM (ex. for L5510) on the phone using adb&lt;/li&gt;
&lt;li&gt;push patch (ex. from 5320)&amp;nbsp;on the phone using adb&lt;/li&gt;
&lt;li&gt;onto TWRP :&lt;/li&gt;
&lt;li&gt;install ROM (dont reboot)&lt;/li&gt;
&lt;li&gt;(got back)&lt;/li&gt;
&lt;li&gt;install patch (dont reboot)&lt;/li&gt;
&lt;li&gt;(got back)&lt;/li&gt;
&lt;li&gt;install GAPPS&lt;/li&gt;
&lt;li&gt;reboot&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;Install ROM from TWRP:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;boot on TWRP recovery (already described)&lt;/li&gt;
&lt;li&gt;lets do &lt;b&gt;a Backup !&lt;/b&gt; (use menu option and follow instructions, check system and data partitions)&lt;/li&gt;
&lt;li&gt;push your ROM (and patch) file(s) on the phone&amp;nbsp; (adapt zip path+filename)&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;(from workstation for MaxiCM ROM)
c:\adb\adb.exe push MaxiCM-5.1-20170209-UNOFFICIAL-l5510.zip /sdcard
c:\adb\adb.exe push kernel_ASAZING-L5320.zip /sdcard
c:\adb\adb.exe push open_gapps-arm-5.1-super-20171224.zip /sdcard

(from workstation for Cyanogem ROM)
c:\adb\adb.exe push cm-12.1-20170211-UNOFFICIAL-l5510.zip /sdcard
c:\adb\adb.exe push kernel_ASAZING-L5320.zip /sdcard
c:\adb\adb.exe push open_gapps-arm-5.1-super-20171224.zip /sdcard
&lt;/pre&gt;

&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;( optionnal ) if you need more space, remove older ROM&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;pre&gt;(from workstation)
c:\adb\adb.exe shell
cd /sdcard
ls
rm OLD_ROM_SAMPLE.zip
exit
&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;HowTo flash ROM on the phone&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;(from phone / TWRP recovery)
- "wipe" data (fr: formatter)
  - "advanced Wipe"
  - check cache + System + data
  - swipe to wipe
- back back back
- "install" rom ("flash" with TWRP):
  - select pushed file: ROM
     - dont check zip signature and dont check reboot
     - swipe to confirm Flash
     - at the end, back
  - (option) select pushed file: PATCH (eg. kernel_ASAZING..)
  - dont check zip signature and dont check reboot
     - swipe to confirm Flash
  - select pushed file: GAPPS
  - dont check zip signature and dont check reboot
     - swipe to confirm Flash
- at the end, Wipe cache/dalvik, swipe to Wipe
- then "Reboot System"
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv40rS3jFTPQAlaKzoWVu9QYogx86QPCxe3_LatFpEMQwBbJjhMTbixnRI6tbtD1rUYWVKZVo7ULNiMmapfNPHMaoGUU-pRoAVEiA5UgYZghfe3EV2ScLgfbE7V2cu0Sximg41ogw4AbNT/s72-c/StandardRecovery.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>EMUI 5.0 Android 7 fiche pratique</title><link>http://curiositedevie.blogspot.com/2017/10/emui-50-android-7-fiche-pratique.html</link><category>Android</category><category>Android7</category><category>application</category><category>applications</category><category>démasquer</category><category>démasquées</category><category>EMUI</category><category>EMUI5.0</category><category>masquer</category><category>masquées</category><author>noreply@blogger.com (Unknown)</author><pubDate>Wed, 18 Oct 2017 20:23:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-7448703175565281073</guid><description>EMUI 5.0 Android 7 fiche pratique&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Retrouver une application:&lt;/b&gt;&lt;br /&gt;
- sur l'accueil, glisser le doigt vers le bas et saisir le début du nom de l'application.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAmLMeLTKoLkYOtyhCmKpkZy7k5f-MZ_YcEeY-v1gq8aAqKkA4tiQFVNqcIJSk4kkyTAUJ9G5DMvJl8CJ_yPwE2TjqebewZckzS_Mgq0XzrHmBy4VYqBi6hl2RD6W2QrBuRldp46p1mk-M/s1600/IMG_20171018_201820.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1154" data-original-width="1080" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAmLMeLTKoLkYOtyhCmKpkZy7k5f-MZ_YcEeY-v1gq8aAqKkA4tiQFVNqcIJSk4kkyTAUJ9G5DMvJl8CJ_yPwE2TjqebewZckzS_Mgq0XzrHmBy4VYqBi6hl2RD6W2QrBuRldp46p1mk-M/s320/IMG_20171018_201820.png" width="299" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
- dans la liste des résultats taper sur l'application pour la lancer ou bien sur l'icône position de droite pour localiser son raccourci.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_uWB1OsMlNe1ivphDQ0PnnsOjkfikPwoMmaFVD3DSyL0Rjhio3FRgHDNkVNaojY-Gmc5GQ0zJGdLuE83groVaujkSHMH86WtKtHQv6ZLdQ46RNxitMtYmF2xPUWa0ldAEqdUeYw-i0yAL/s1600/IMG_20171018_201742.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1098" data-original-width="1080" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_uWB1OsMlNe1ivphDQ0PnnsOjkfikPwoMmaFVD3DSyL0Rjhio3FRgHDNkVNaojY-Gmc5GQ0zJGdLuE83groVaujkSHMH86WtKtHQv6ZLdQ46RNxitMtYmF2xPUWa0ldAEqdUeYw-i0yAL/s320/IMG_20171018_201742.png" width="314" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Applications masquées&lt;/b&gt;&lt;br /&gt;
- pour voir les applications masquées il faut faire un zoom sur l'écran d'accueil (séparer 2 doigts collés à l'écran).&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0j2fyKrK-kUOwb7pRZ6ni7tWg3lxNxSn5Es_dIMw1vJ7hgWX3bg_n9OkIjuthijWgTcGN745ZozoRBfSb0rIb2arY6ZLh10eDaKM0H3MRp2KHh3EnKMGyuwGJ_MUVHhRNEIX19TX2SvHq/s1600/Screenshot_20171018-194318.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1600" data-original-width="900" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0j2fyKrK-kUOwb7pRZ6ni7tWg3lxNxSn5Es_dIMw1vJ7hgWX3bg_n9OkIjuthijWgTcGN745ZozoRBfSb0rIb2arY6ZLh10eDaKM0H3MRp2KHh3EnKMGyuwGJ_MUVHhRNEIX19TX2SvHq/s320/Screenshot_20171018-194318.png" width="180" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
- pour ajouter ou retirer (démasquer) une application masquée, il faut taper sur le [+] après la dernière application masquée:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilr52h8usEST4xo89UZ9vNdZky18ijL_pWV9lmM-ilIu19o3Vmf5jWHt-ioXhy-E0DhpsEx9cXeMq220yeGtLM8rawvrZSNZGMo8IFyc7VBzYmFdgFSqEYfCni7fDr_kX-9nSgSLumeZ7b/s1600/Screenshot_20171018-194325.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="1600" data-original-width="900" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilr52h8usEST4xo89UZ9vNdZky18ijL_pWV9lmM-ilIu19o3Vmf5jWHt-ioXhy-E0DhpsEx9cXeMq220yeGtLM8rawvrZSNZGMo8IFyc7VBzYmFdgFSqEYfCni7fDr_kX-9nSgSLumeZ7b/s320/Screenshot_20171018-194325.png" width="180" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
Cochez les applications pour les masquer ou les décocher pour démasquer et les retrouver sur l'accueil.&lt;/div&gt;
&lt;br /&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAmLMeLTKoLkYOtyhCmKpkZy7k5f-MZ_YcEeY-v1gq8aAqKkA4tiQFVNqcIJSk4kkyTAUJ9G5DMvJl8CJ_yPwE2TjqebewZckzS_Mgq0XzrHmBy4VYqBi6hl2RD6W2QrBuRldp46p1mk-M/s72-c/IMG_20171018_201820.png" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>HowTo: Swig C to Java: functions that manage an array of int, simple or complex struct (eg. array of objects)</title><link>http://curiositedevie.blogspot.com/2017/02/howto-swig-c-to-java-functions-that.html</link><category>array</category><category>c</category><category>howto</category><category>Java</category><category>prototype</category><category>struct</category><category>swig</category><author>noreply@blogger.com (Unknown)</author><pubDate>Fri, 17 Feb 2017 15:00:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-7216975079170457249</guid><description>You would like to map a C code from your Java application and you have heard about &lt;a href="http://www.swig.org"&gt;Swig&lt;/a&gt;: this post is for you! &lt;br/&gt;&lt;br/&gt;
This post is a &lt;b&gt;really simple example to understand how to manage (from Java application) a C array of complex structure&lt;/b&gt;.&lt;br/&gt;
&lt;br/&gt;
After reading Swig 3 documentation and searching on the net, I've finally succeed to create a little poc on how to return a list of struct.&lt;br/&gt;
&lt;br/&gt;
proof of concept sample includes 4 functions:
&lt;ul&gt;
&lt;li&gt;a function &lt;code&gt;sumitems&lt;/code&gt; that accept an array of integer as parameter to calculate a sum (part of Swig3 &lt;a href="http://www.swig.org/Doc3.0/SWIGDocumentation.html#Java_unbounded_c_arrays"&gt;documentation&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;a function &lt;code&gt;populateSampleItem&lt;/code&gt; that just write on a given simple structure&lt;/li&gt;
&lt;li&gt;a function &lt;code&gt;populateItems&lt;/code&gt; that update an existing array of struct&lt;/li&gt;
&lt;li&gt;a function &lt;code&gt;buildItems&lt;/code&gt; that create from scratch a result array of struct&lt;/li&gt;
&lt;/ul&gt;
&lt;br/&gt;
source of this poc is available here : &lt;a href="https://github.com/boly38/pocswig"&gt;https://github.com/boly38/pocswig&lt;/a&gt;&lt;br/&gt;
this poc is widely inspirated from similar example from "Samuel Jacob's Weblog" &lt;a href="http://samueldotj.com/blog/swig-and-complex-c-structures/"&gt;post&lt;/a&gt; (thanks to him !)&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;

First file to write is the &lt;b&gt;C header&lt;/b&gt; &lt;code&gt;poc.h&lt;/code&gt;:
&lt;!-- HTML generated using hilite.me --&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;pre style="margin: 0; line-height: 125%"&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #888888"&gt;/* (in) simple int array as parameter */&lt;/span&gt;
&lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; &lt;span style="color: #0066BB; font-weight: bold"&gt;sumitems&lt;/span&gt;(&lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; &lt;span style="color: #333333"&gt;*&lt;/span&gt;first, &lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; nitems);

&lt;span style="color: #888888"&gt;/* simple structure */&lt;/span&gt;
&lt;span style="color: #008800; font-weight: bold"&gt;typedef&lt;/span&gt; &lt;span style="color: #008800; font-weight: bold"&gt;struct&lt;/span&gt; MyItem_t {
      &lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt;  id;
      &lt;span style="color: #333399; font-weight: bold"&gt;char&lt;/span&gt; &lt;span style="color: #333333"&gt;*&lt;/span&gt;name;
} MyItem;

&lt;span style="color: #888888"&gt;/* (in/out) simple struct as parameter (updated by the function) */&lt;/span&gt;
&lt;span style="color: #333399; font-weight: bold"&gt;void&lt;/span&gt; &lt;span style="color: #0066BB; font-weight: bold"&gt;populateSampleItem&lt;/span&gt;(MyItem &lt;span style="color: #333333"&gt;*&lt;/span&gt;item);

&lt;span style="color: #888888"&gt;/* array of structure */&lt;/span&gt;
&lt;span style="color: #008800; font-weight: bold"&gt;typedef&lt;/span&gt; &lt;span style="color: #008800; font-weight: bold"&gt;struct&lt;/span&gt; MyItems_t {
      &lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt;  count;       &lt;span style="color: #888888"&gt;// elements count&lt;/span&gt;
      MyItem &lt;span style="color: #333333"&gt;*&lt;/span&gt;elements; &lt;span style="color: #888888"&gt;// array of MyItem&lt;/span&gt;
} MyItems;

&lt;span style="color: #888888"&gt;/* (in/out) array of structure as parameter (updated by the function) */&lt;/span&gt;
&lt;span style="color: #333399; font-weight: bold"&gt;void&lt;/span&gt; &lt;span style="color: #0066BB; font-weight: bold"&gt;populateItems&lt;/span&gt;(MyItems &lt;span style="color: #333333"&gt;*&lt;/span&gt;items);

&lt;span style="color: #888888"&gt;/* (out) array of structure (generated by the function) */&lt;/span&gt;
MyItems &lt;span style="color: #333333"&gt;*&lt;/span&gt;&lt;span style="color: #0066BB; font-weight: bold"&gt;buildItems&lt;/span&gt;();
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;




The you will then have to write the C implementation. Here is a sample &lt;code&gt;poc.c&lt;/code&gt;:
&lt;!-- HTML generated using hilite.me --&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;pre style="margin: 0; line-height: 125%"&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #557799"&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/span&gt;
&lt;span style="color: #557799"&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/span&gt;
&lt;span style="color: #557799"&gt;#include &amp;lt;string.h&amp;gt;&lt;/span&gt;
&lt;span style="color: #557799"&gt;#include &amp;quot;poc.h&amp;quot;&lt;/span&gt;

&lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; &lt;span style="color: #0066BB; font-weight: bold"&gt;sumitems&lt;/span&gt;(&lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; &lt;span style="color: #333333"&gt;*&lt;/span&gt;first, &lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; nitems) {
  &lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; i, sum &lt;span style="color: #333333"&gt;=&lt;/span&gt; &lt;span style="color: #0000DD; font-weight: bold"&gt;0&lt;/span&gt;;
  &lt;span style="color: #008800; font-weight: bold"&gt;for&lt;/span&gt; (i &lt;span style="color: #333333"&gt;=&lt;/span&gt; &lt;span style="color: #0000DD; font-weight: bold"&gt;0&lt;/span&gt;; i &lt;span style="color: #333333"&gt;&amp;lt;&lt;/span&gt; nitems; i&lt;span style="color: #333333"&gt;++&lt;/span&gt;) {
    sum &lt;span style="color: #333333"&gt;+=&lt;/span&gt; first[i];
  }
  &lt;span style="color: #008800; font-weight: bold"&gt;return&lt;/span&gt; sum;
}

&lt;span style="color: #333399; font-weight: bold"&gt;void&lt;/span&gt; &lt;span style="color: #0066BB; font-weight: bold"&gt;populateSampleItem&lt;/span&gt;(MyItem &lt;span style="color: #333333"&gt;*&lt;/span&gt;item) {
  item&lt;span style="color: #333333"&gt;-&amp;gt;&lt;/span&gt;id &lt;span style="color: #333333"&gt;=&lt;/span&gt; &lt;span style="color: #0000DD; font-weight: bold"&gt;1234&lt;/span&gt;;
  item&lt;span style="color: #333333"&gt;-&amp;gt;&lt;/span&gt;name &lt;span style="color: #333333"&gt;=&lt;/span&gt; strdup(&lt;span style="background-color: #fff0f0"&gt;&amp;quot;getSampleItem&amp;quot;&lt;/span&gt;);
}

&lt;span style="color: #333399; font-weight: bold"&gt;void&lt;/span&gt; &lt;span style="color: #0066BB; font-weight: bold"&gt;populateItems&lt;/span&gt;(MyItems &lt;span style="color: #333333"&gt;*&lt;/span&gt;items) {
    &lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; nb &lt;span style="color: #333333"&gt;=&lt;/span&gt; items&lt;span style="color: #333333"&gt;-&amp;gt;&lt;/span&gt;count;
    items&lt;span style="color: #333333"&gt;-&amp;gt;&lt;/span&gt;elements &lt;span style="color: #333333"&gt;=&lt;/span&gt; malloc(nb &lt;span style="color: #333333"&gt;*&lt;/span&gt; &lt;span style="color: #008800; font-weight: bold"&gt;sizeof&lt;/span&gt;(MyItem));
    &lt;span style="color: #008800; font-weight: bold"&gt;for&lt;/span&gt; (&lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; j&lt;span style="color: #333333"&gt;=&lt;/span&gt;nb&lt;span style="color: #333333"&gt;-&lt;/span&gt;&lt;span style="color: #0000DD; font-weight: bold"&gt;1&lt;/span&gt;;j&lt;span style="color: #333333"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color: #0000DD; font-weight: bold"&gt;0&lt;/span&gt;;j&lt;span style="color: #333333"&gt;--&lt;/span&gt;) {
        items&lt;span style="color: #333333"&gt;-&amp;gt;&lt;/span&gt;elements[j].id &lt;span style="color: #333333"&gt;=&lt;/span&gt; j;
        &lt;span style="color: #333399; font-weight: bold"&gt;char&lt;/span&gt; elementName[&lt;span style="color: #0000DD; font-weight: bold"&gt;80&lt;/span&gt;];
        sprintf(elementName, &lt;span style="background-color: #fff0f0"&gt;&amp;quot;populateItems %d&amp;quot;&lt;/span&gt;, j);
        items&lt;span style="color: #333333"&gt;-&amp;gt;&lt;/span&gt;elements[j].name &lt;span style="color: #333333"&gt;=&lt;/span&gt; strdup(elementName);
    }
}

MyItems &lt;span style="color: #333333"&gt;*&lt;/span&gt;&lt;span style="color: #0066BB; font-weight: bold"&gt;buildItems&lt;/span&gt;() {
    printf(&lt;span style="background-color: #fff0f0"&gt;&amp;quot;buildItems 14 elements&amp;quot;&lt;/span&gt;);
    &lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; nb &lt;span style="color: #333333"&gt;=&lt;/span&gt; &lt;span style="color: #0000DD; font-weight: bold"&gt;14&lt;/span&gt;;
    MyItems &lt;span style="color: #333333"&gt;*&lt;/span&gt;items&lt;span style="color: #333333"&gt;=&lt;/span&gt; malloc(&lt;span style="color: #008800; font-weight: bold"&gt;sizeof&lt;/span&gt;(MyItems));;
    items&lt;span style="color: #333333"&gt;-&amp;gt;&lt;/span&gt;count &lt;span style="color: #333333"&gt;=&lt;/span&gt; nb;
    items&lt;span style="color: #333333"&gt;-&amp;gt;&lt;/span&gt;elements &lt;span style="color: #333333"&gt;=&lt;/span&gt; malloc(nb &lt;span style="color: #333333"&gt;*&lt;/span&gt; &lt;span style="color: #008800; font-weight: bold"&gt;sizeof&lt;/span&gt;(MyItem));
    &lt;span style="color: #008800; font-weight: bold"&gt;for&lt;/span&gt; (&lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; j&lt;span style="color: #333333"&gt;=&lt;/span&gt;nb&lt;span style="color: #333333"&gt;-&lt;/span&gt;&lt;span style="color: #0000DD; font-weight: bold"&gt;1&lt;/span&gt;;j&lt;span style="color: #333333"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color: #0000DD; font-weight: bold"&gt;0&lt;/span&gt;;j&lt;span style="color: #333333"&gt;--&lt;/span&gt;) {
        items&lt;span style="color: #333333"&gt;-&amp;gt;&lt;/span&gt;elements[j].id &lt;span style="color: #333333"&gt;=&lt;/span&gt; j;
        &lt;span style="color: #333399; font-weight: bold"&gt;char&lt;/span&gt; elementName[&lt;span style="color: #0000DD; font-weight: bold"&gt;80&lt;/span&gt;];
        sprintf(elementName, &lt;span style="background-color: #fff0f0"&gt;&amp;quot;buildItems %d&amp;quot;&lt;/span&gt;, j);
        items&lt;span style="color: #333333"&gt;-&amp;gt;&lt;/span&gt;elements[j].name &lt;span style="color: #333333"&gt;=&lt;/span&gt; strdup(elementName);
    }
    &lt;span style="color: #008800; font-weight: bold"&gt;return&lt;/span&gt; items;
}
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;



&lt;br/&gt;
And now to access this function from java, you will have to use Swig.&lt;br/&gt;
&lt;br/&gt;
Swig use a specification file to setup how to map function/types/etc... This file is a &lt;code&gt;.i&lt;/code&gt; file. Here is the file &lt;code&gt;poc.i&lt;/code&gt;:

&lt;!-- HTML generated using hilite.me --&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;pre style="margin: 0; line-height: 125%"&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #333333"&gt;%&lt;/span&gt;module swigpoc

&lt;span style="color: #333333"&gt;%&lt;/span&gt;include &lt;span style="background-color: #fff0f0"&gt;&amp;quot;arrays_java.i&amp;quot;&lt;/span&gt;;
&lt;span style="color: #333333"&gt;%&lt;/span&gt;apply &lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt;[] {&lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; &lt;span style="color: #333333"&gt;*&lt;/span&gt;};

&lt;span style="color: #333333"&gt;%&lt;/span&gt;{
 &lt;span style="color: #FF0000; background-color: #FFAAAA"&gt;#&lt;/span&gt;include &lt;span style="background-color: #fff0f0"&gt;&amp;quot;poc.h&amp;quot;&lt;/span&gt;
&lt;span style="color: #333333"&gt;%&lt;/span&gt;}

&lt;span style="color: #333333"&gt;%&lt;/span&gt;include &lt;span style="background-color: #fff0f0"&gt;&amp;quot;poc.h&amp;quot;&lt;/span&gt;;
&lt;span style="color: #333333"&gt;%&lt;/span&gt;extend MyItems_t{
  MyItem &lt;span style="color: #333333"&gt;*&lt;/span&gt; getElement(&lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; i) {
      &lt;span style="color: #008800; font-weight: bold"&gt;return&lt;/span&gt; &lt;span style="color: #333333"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #FF0000; background-color: #FFAAAA"&gt;$&lt;/span&gt;self&lt;span style="color: #333333"&gt;-&amp;gt;&lt;/span&gt;elements[i];
  }
}
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

Line 1 define the module name, &lt;br/&gt;
Line 3&amp;4 define how to handle int array using swig facility, &lt;br/&gt;
Line 6 to 8 to tell to Swig to output include line into the target wrapper file.&lt;br/&gt;
Line 10 reuse as is the header file as specification (Swig MUST wrap all header file methods and structs to Java).&lt;br/&gt;
Line 11 to 15 to tell to Swig to append an extra function to help Java user to access to array element.
&lt;br/&gt;
&lt;br/&gt;
Now you will have to generate Java files! Use Swig :&lt;br/&gt;
&lt;pre&gt;
rm -f *Item.java *.o *.dll swigpoc*
swig -java poc.i
&lt;/pre&gt;
You could look at your directory, there is some new C and Java files: &lt;b&gt;&lt;code&gt;poc_wrap.c, MyItem.java, MyItems.java, swigpoc.java swigpocJNI.java&lt;/code&gt;&lt;/b&gt;


Next step is to build up the DLL (shared library) (exemple under Cygwin):
&lt;!-- HTML generated using hilite.me --&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;1
2
3
4
5
6&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #888888"&gt;#!/bin/bash&lt;/span&gt;
&lt;span style="color: #996633"&gt;JAVA_HOME&lt;/span&gt;&lt;span style="color: #333333"&gt;=&lt;/span&gt;/cygdrive/c//Programmes/Java/jdk1.8.0_112/
&lt;span style="color: #996633"&gt;INCLUDES&lt;/span&gt;&lt;span style="color: #333333"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;-I$JAVA_HOME/include/ -I$JAVA_HOME/include/win32/&amp;quot;&lt;/span&gt;

x86_64-w64-mingw32-gcc.exe -c poc.c poc_wrap.c &lt;span style="color: #996633"&gt;$INCLUDES&lt;/span&gt;
x86_64-w64-mingw32-gcc.exe &lt;span style="color: #996633"&gt;$INCLUDES&lt;/span&gt; -shared -o poc.dll poc_wrap.o poc.o
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


Now you can play with your new library from Java; exemple &lt;code&gt;PocExample.java&lt;/code&gt;:
&lt;!-- HTML generated using hilite.me --&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;pre style="margin: 0; line-height: 125%"&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #008800; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008800; font-weight: bold"&gt;class&lt;/span&gt; &lt;span style="color: #BB0066; font-weight: bold"&gt;PocExample&lt;/span&gt; &lt;span style="color: #333333"&gt;{&lt;/span&gt;

  &lt;span style="color: #008800; font-weight: bold"&gt;static&lt;/span&gt; &lt;span style="color: #333333"&gt;{&lt;/span&gt;
    System&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;out&lt;/span&gt;&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;println&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;load poc ...&amp;quot;&lt;/span&gt;&lt;span style="color: #333333"&gt;);&lt;/span&gt;
    System&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;loadLibrary&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;poc&amp;quot;&lt;/span&gt;&lt;span style="color: #333333"&gt;);&lt;/span&gt;
    System&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;out&lt;/span&gt;&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;println&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;load poc ... OK &amp;quot;&lt;/span&gt;&lt;span style="color: #333333"&gt;);&lt;/span&gt;
  &lt;span style="color: #333333"&gt;}&lt;/span&gt;

  &lt;span style="color: #008800; font-weight: bold"&gt;public&lt;/span&gt; &lt;span style="color: #008800; font-weight: bold"&gt;static&lt;/span&gt; &lt;span style="color: #333399; font-weight: bold"&gt;void&lt;/span&gt;  &lt;span style="color: #0066BB; font-weight: bold"&gt;main&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;String args&lt;span style="color: #333333"&gt;[])&lt;/span&gt; &lt;span style="color: #333333"&gt;{&lt;/span&gt;
    System&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;out&lt;/span&gt;&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;println&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;poc&amp;quot;&lt;/span&gt;&lt;span style="color: #333333"&gt;);&lt;/span&gt;

    System&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;out&lt;/span&gt;&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;println&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;sumitems:&amp;quot;&lt;/span&gt;&lt;span style="color: #333333"&gt;);&lt;/span&gt;
    &lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt;&lt;span style="color: #333333"&gt;[]&lt;/span&gt; arrayB &lt;span style="color: #333333"&gt;=&lt;/span&gt; &lt;span style="color: #008800; font-weight: bold"&gt;new&lt;/span&gt; &lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt;&lt;span style="color: #333333"&gt;[&lt;/span&gt;&lt;span style="color: #0000DD; font-weight: bold"&gt;10000000&lt;/span&gt;&lt;span style="color: #333333"&gt;];&lt;/span&gt;          &lt;span style="color: #888888"&gt;// Array of 10-million integers&lt;/span&gt;
    &lt;span style="color: #008800; font-weight: bold"&gt;for&lt;/span&gt; &lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; i&lt;span style="color: #333333"&gt;=&lt;/span&gt;&lt;span style="color: #0000DD; font-weight: bold"&gt;0&lt;/span&gt;&lt;span style="color: #333333"&gt;;&lt;/span&gt; i&lt;span style="color: #333333"&gt;&amp;lt;&lt;/span&gt;arrayB&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;length&lt;/span&gt;&lt;span style="color: #333333"&gt;;&lt;/span&gt; i&lt;span style="color: #333333"&gt;++)&lt;/span&gt; &lt;span style="color: #333333"&gt;{&lt;/span&gt;      &lt;span style="color: #888888"&gt;// Set some values&lt;/span&gt;
      arrayB&lt;span style="color: #333333"&gt;[&lt;/span&gt;i&lt;span style="color: #333333"&gt;]&lt;/span&gt; &lt;span style="color: #333333"&gt;=&lt;/span&gt; i&lt;span style="color: #333333"&gt;;&lt;/span&gt;
    &lt;span style="color: #333333"&gt;}&lt;/span&gt;
    &lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; sum &lt;span style="color: #333333"&gt;=&lt;/span&gt; swigpoc&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;sumitems&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;arrayB&lt;span style="color: #333333"&gt;,&lt;/span&gt; &lt;span style="color: #0000DD; font-weight: bold"&gt;10000&lt;/span&gt;&lt;span style="color: #333333"&gt;);&lt;/span&gt;
    System&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;out&lt;/span&gt;&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;println&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;SumB = &amp;quot;&lt;/span&gt; &lt;span style="color: #333333"&gt;+&lt;/span&gt; sum&lt;span style="color: #333333"&gt;);&lt;/span&gt;


    System&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;out&lt;/span&gt;&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;println&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;MyItem:&amp;quot;&lt;/span&gt;&lt;span style="color: #333333"&gt;);&lt;/span&gt;
    MyItem myt &lt;span style="color: #333333"&gt;=&lt;/span&gt; &lt;span style="color: #008800; font-weight: bold"&gt;new&lt;/span&gt; MyItem&lt;span style="color: #333333"&gt;();&lt;/span&gt;
    swigpoc&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;populateSampleItem&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;myt&lt;span style="color: #333333"&gt;);&lt;/span&gt;
    System&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;out&lt;/span&gt;&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;println&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;myt.name = &amp;quot;&lt;/span&gt; &lt;span style="color: #333333"&gt;+&lt;/span&gt; myt&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;getName&lt;/span&gt;&lt;span style="color: #333333"&gt;());&lt;/span&gt;

    MyItems myts &lt;span style="color: #333333"&gt;=&lt;/span&gt; &lt;span style="color: #008800; font-weight: bold"&gt;new&lt;/span&gt; MyItems&lt;span style="color: #333333"&gt;();&lt;/span&gt;
    myts&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;setCount&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="color: #0000DD; font-weight: bold"&gt;10&lt;/span&gt;&lt;span style="color: #333333"&gt;);&lt;/span&gt;
    swigpoc&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;populateItems&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;myts&lt;span style="color: #333333"&gt;);&lt;/span&gt;

    &lt;span style="color: #008800; font-weight: bold"&gt;for&lt;/span&gt; &lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; j&lt;span style="color: #333333"&gt;=&lt;/span&gt;&lt;span style="color: #0000DD; font-weight: bold"&gt;0&lt;/span&gt;&lt;span style="color: #333333"&gt;;&lt;/span&gt; j&lt;span style="color: #333333"&gt;&amp;lt;&lt;/span&gt;myts&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;getCount&lt;/span&gt;&lt;span style="color: #333333"&gt;();&lt;/span&gt; j&lt;span style="color: #333333"&gt;++)&lt;/span&gt; &lt;span style="color: #333333"&gt;{&lt;/span&gt;
      System&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;out&lt;/span&gt;&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;println&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;String&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;format&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;myts.element[%d].name = &amp;#39;%s&amp;#39;&amp;quot;&lt;/span&gt;&lt;span style="color: #333333"&gt;,&lt;/span&gt;j&lt;span style="color: #333333"&gt;,&lt;/span&gt; myts&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;getElement&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;j&lt;span style="color: #333333"&gt;).&lt;/span&gt;&lt;span style="color: #0000CC"&gt;getName&lt;/span&gt;&lt;span style="color: #333333"&gt;()));&lt;/span&gt;
      System&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;out&lt;/span&gt;&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;println&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;String&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;format&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;myts.element[%d].id = &amp;#39;%s&amp;#39;&amp;quot;&lt;/span&gt;  &lt;span style="color: #333333"&gt;,&lt;/span&gt;j&lt;span style="color: #333333"&gt;,&lt;/span&gt; myts&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;getElement&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;j&lt;span style="color: #333333"&gt;).&lt;/span&gt;&lt;span style="color: #0000CC"&gt;getId&lt;/span&gt;&lt;span style="color: #333333"&gt;()));&lt;/span&gt;
    &lt;span style="color: #333333"&gt;}&lt;/span&gt;


    MyItems rez &lt;span style="color: #333333"&gt;=&lt;/span&gt; swigpoc&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;buildItems&lt;/span&gt;&lt;span style="color: #333333"&gt;();&lt;/span&gt;
    &lt;span style="color: #008800; font-weight: bold"&gt;for&lt;/span&gt; &lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="color: #333399; font-weight: bold"&gt;int&lt;/span&gt; k&lt;span style="color: #333333"&gt;=&lt;/span&gt;&lt;span style="color: #0000DD; font-weight: bold"&gt;0&lt;/span&gt;&lt;span style="color: #333333"&gt;;&lt;/span&gt; k&lt;span style="color: #333333"&gt;&amp;lt;&lt;/span&gt;rez&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;getCount&lt;/span&gt;&lt;span style="color: #333333"&gt;();&lt;/span&gt; k&lt;span style="color: #333333"&gt;++)&lt;/span&gt; &lt;span style="color: #333333"&gt;{&lt;/span&gt;
      System&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;out&lt;/span&gt;&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;println&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;String&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;format&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;rez.element[%d].name = &amp;#39;%s&amp;#39;&amp;quot;&lt;/span&gt;&lt;span style="color: #333333"&gt;,&lt;/span&gt;k&lt;span style="color: #333333"&gt;,&lt;/span&gt; rez&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;getElement&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;k&lt;span style="color: #333333"&gt;).&lt;/span&gt;&lt;span style="color: #0000CC"&gt;getName&lt;/span&gt;&lt;span style="color: #333333"&gt;()));&lt;/span&gt;
      System&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;out&lt;/span&gt;&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;println&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;String&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;format&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;rez.element[%d].id = &amp;#39;%s&amp;#39;&amp;quot;&lt;/span&gt;  &lt;span style="color: #333333"&gt;,&lt;/span&gt;k&lt;span style="color: #333333"&gt;,&lt;/span&gt; rez&lt;span style="color: #333333"&gt;.&lt;/span&gt;&lt;span style="color: #0000CC"&gt;getElement&lt;/span&gt;&lt;span style="color: #333333"&gt;(&lt;/span&gt;k&lt;span style="color: #333333"&gt;).&lt;/span&gt;&lt;span style="color: #0000CC"&gt;getId&lt;/span&gt;&lt;span style="color: #333333"&gt;()));&lt;/span&gt;
    &lt;span style="color: #333333"&gt;}&lt;/span&gt;
  &lt;span style="color: #333333"&gt;}&lt;/span&gt;
&lt;span style="color: #333333"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;


&lt;br/&gt;
I let you execute that:
&lt;!-- HTML generated using hilite.me --&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;1
2
3&lt;/pre&gt;&lt;/td&gt;&lt;td&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #888888"&gt;#!/bin/bash&lt;/span&gt;
&lt;span style="color: #996633"&gt;JAVA_HOME&lt;/span&gt;&lt;span style="color: #333333"&gt;=&lt;/span&gt;/cygdrive/c//Programmes/Java/jdk1.8.0_112/
&lt;span style="color: #996633"&gt;$JAVA_HOME&lt;/span&gt;/bin/javac *.java &lt;span style="color: #333333"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color: #996633"&gt;$JAVA_HOME&lt;/span&gt;/bin/java PocExample
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;br/&gt;
&lt;br/&gt;
If you see something wrong, please tell me. Else hopes this helps!</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Yet another MUSE Best-Of</title><link>http://curiositedevie.blogspot.com/2016/08/yet-another-muse-best-of.html</link><category>MUSE</category><category>rock</category><category>song</category><category>youtube</category><author>noreply@blogger.com (Unknown)</author><pubDate>Wed, 31 Aug 2016 14:14:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-136327639871936682</guid><description>&lt;p&gt;
  Let me introduce you to the best-of MUSE songs :p

  &lt;br/&gt;&lt;br/&gt;

  &lt;b&gt;Muse - 2006 - Starlight [Official Music Video]&lt;/b&gt;&lt;br/&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/Pgum6OT_VH8" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;

  &lt;b&gt;Muse - 2009 - Uprising [Official Video]&lt;/b&gt;&lt;br/&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/w8KQmps-Sog" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;

  &lt;b&gt;Muse - 2010 - Hysteria [Official Music Video]&lt;/b&gt;&lt;br/&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/3dm_5qWWDV8" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;

  &lt;b&gt;Muse - 2010 - New Born&lt;/b&gt;&lt;br/&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/qhduQhDqtb4" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;

  &lt;b&gt;Muse - 2010 - Plug In Baby&lt;/b&gt;&lt;br/&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/dbB-mICjkQM" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;

  &lt;b&gt;Muse - 2010 - Sunburn&lt;/b&gt;&lt;br/&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/N9SZaOJEWXU" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;

  &lt;b&gt;Muse - 2010 - Time Is Running Out (video)&lt;/b&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/O2IuJPh6h_A" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;

  &lt;b&gt;Muse - 2012 - Resistance&lt;/b&gt;&lt;br/&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/TPE9uSFFxrI" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;

  &lt;b&gt;Muse - 2013 - Supremacy (Official Video)&lt;/b&gt;&lt;br/&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/avM_UsVo0IA" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;

  &lt;b&gt;Muse - 2015 - Dead Inside [Official Music Video]&lt;/b&gt;&lt;br/&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/I5sJhSNUkwQ" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;

  &lt;b&gt;Muse - 2015 - Reapers [Official Lyric Video]&lt;/b&gt;&lt;br/&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/gcNEC9NaJuE" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;

  &lt;b&gt;Muse - 2015 - The Handler [Official Lyric Video]&lt;/b&gt;&lt;br/&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/BF1DQr5dKW8" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;

&lt;/p&gt;

&lt;hr/&gt;
&lt;p&gt;
  &lt;b&gt;Concerts&lt;/b&gt;
 
  &lt;br/&gt;&lt;br/&gt;
  &lt;b&gt;Muse Live - 2000 - Presqu'île de Malsaucy - Eurockéennes (Belfort)&lt;/b&gt;&lt;br/&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/fw6Q2LtAlrk" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;

  &lt;b&gt;Muse Live - 2015 - Main Square Festival&lt;/b&gt;&lt;br/&gt;
  &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/cplL6Dabj0M" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;br/&gt;
  &lt;i&gt;NB: year is youtube video publication date. With helps of &lt;a href="http://www.thetoptens.com/muse-songs/"&gt;thetoptens&lt;/a&gt;&lt;/i&gt;
&lt;/p&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://img.youtube.com/vi/Pgum6OT_VH8/default.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>How to Jenkins : chain jobs with parameters </title><link>http://curiositedevie.blogspot.com/2016/02/how-to-jenkins-chain-jobs-with.html</link><category>howto</category><category>jenkins</category><category>jobs</category><category>parameters</category><author>noreply@blogger.com (Unknown)</author><pubDate>Fri, 5 Feb 2016 12:07:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-7698823390762147779</guid><description>This post describes &lt;b&gt;How To chain jobs with parameter(s)&lt;/b&gt;.&lt;br/&gt;
- Choose optionA if you're using pipeline plugin.&lt;br/&gt;
- OptionB is a little bit deprecated, but usefull if you would like to script your build execution or trigger it remotely.

&lt;h2&gt;(option A) Define a post action in first job&lt;/h2&gt;

First recommended and simple way if your are using "Build Pipeline".

Go to the first job configuration to append a post-action :

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9FydaFkj2jcYxqLJK_tBkIa0sDqUcNx22BNZ0pq6IhkT6nmNli-hPwIMmfe145AkOvnBPosGZqvkd4cMMbdle7PUWNpoxQ4OnMfnoVdsJn14xN6NU355khYf11SW7PdF4dSm2lIgtJPuy/s1600/triggerProject.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9FydaFkj2jcYxqLJK_tBkIa0sDqUcNx22BNZ0pq6IhkT6nmNli-hPwIMmfe145AkOvnBPosGZqvkd4cMMbdle7PUWNpoxQ4OnMfnoVdsJn14xN6NU355khYf11SW7PdF4dSm2lIgtJPuy/s320/triggerProject.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;h2&gt;(option B) Chain it using shell scripts&lt;/h2&gt;
&lt;br/&gt;
NB: this option will make loosing your pipeline chain.&lt;br/&gt;

I recommend to use 2 small dedicated temp jobs to test it first. That would avoid to run unnecessarely long build...&lt;br/&gt;
&lt;br/&gt;
Steps :&lt;br/&gt;
&lt;ul&gt;
&lt;li&gt;Install Build Token Root Plugin&lt;/li&gt;
&lt;li&gt;Define first job with parameter&lt;/li&gt;
&lt;li&gt;Define second job ("follower") with parameter&lt;/li&gt;
&lt;li&gt;Define a trigger for the follower&lt;/li&gt;
&lt;li&gt;Append a shell script to chain the two jobs&lt;/li&gt;
&lt;li&gt;Try!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Install Build Token Root Plugin&lt;/h2&gt;
&lt;p&gt;
Ask to your Jenkins administrator to install this plugin : &lt;a href="https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin"&gt;Build Token Root Plugin&lt;/a&gt;&lt;br/&gt;
Wait that Jenkins reboot (required).
&lt;/p&gt;

&lt;h2&gt;Define first job with parameter&lt;/h2&gt;
&lt;p&gt;
Add "branch" parameter to your first job.
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoxQeIfAHHQcm-zfGKMXmltzVEYSx3V6gNsyHh5uii7y3LsqDM09u2z6SeP9SCXOYNjpJjyNES6Sms-t3wIEm7vaHHeNZZ1GKyomyLzzwYKpdRhwwnjj68l9Sgq3dwLuExAvPePfPp2GuZ/s1600/branch_param.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoxQeIfAHHQcm-zfGKMXmltzVEYSx3V6gNsyHh5uii7y3LsqDM09u2z6SeP9SCXOYNjpJjyNES6Sms-t3wIEm7vaHHeNZZ1GKyomyLzzwYKpdRhwwnjj68l9Sgq3dwLuExAvPePfPp2GuZ/s320/branch_param.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;

Add a shell script to echo the variable.&lt;br/&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja1Fc8vgtzdE2exD0FBFltUjolKrbRtDjd0s3Viaza6KipQyu6YSCYpwhLsHeCiL7LLrbAV-7A-EPqmomw0zTNeQN9D8r9Ob7ujGizijQryEV0W0L3s2FioSRc5DfbOPyu0YwFkr1ywutA/s1600/echoBranch.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEja1Fc8vgtzdE2exD0FBFltUjolKrbRtDjd0s3Viaza6KipQyu6YSCYpwhLsHeCiL7LLrbAV-7A-EPqmomw0zTNeQN9D8r9Ob7ujGizijQryEV0W0L3s2FioSRc5DfbOPyu0YwFkr1ywutA/s320/echoBranch.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;h2&gt;Define follower job with parameter&lt;/h2&gt;
&lt;p&gt;
Add "branch" parameter to your second job (same as previously).&lt;br/&gt;
Add a shell script to echo the variable(same as previously).
&lt;/p&gt;

&lt;h2&gt;Define a trigger for the follower&lt;/h2&gt;
&lt;p&gt;
Add a trigger for the second job. Set a &lt;b&gt;secret token&lt;/b&gt; here.
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaZJ2CUfwXjTdDhkzfIJLBno4orbre_JOamKTbeTr6ykm49m-_bEXiHZ-7cpkiCL9jAZph_bN1WbNCMdlCEj-DSBUU55KtJqLP16CffW8_6cADVIIeN0aUURJy_eXfA20sLmXj2OGKqLXV/s1600/job_trigger.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaZJ2CUfwXjTdDhkzfIJLBno4orbre_JOamKTbeTr6ykm49m-_bEXiHZ-7cpkiCL9jAZph_bN1WbNCMdlCEj-DSBUU55KtJqLP16CffW8_6cADVIIeN0aUURJy_eXfA20sLmXj2OGKqLXV/s320/job_trigger.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;

&lt;h2&gt;Append a shell script to chain the two jobs&lt;/h2&gt;
&lt;p&gt;
Open the first job configuration to add the following shell script.&lt;br/&gt;
You will need to adapt the jenkins host value corresponding to your environment.

&lt;!-- HTML generated using hilite.me --&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #888888"&gt;# show job parameter&lt;/span&gt;
&lt;span style="color: #007020"&gt;echo &lt;/span&gt;&lt;span style="color: #996633"&gt;branch&lt;/span&gt;&lt;span style="color: #333333"&gt;=&lt;/span&gt;&lt;span style="color: #008800; font-weight: bold"&gt;${&lt;/span&gt;&lt;span style="color: #996633"&gt;branch&lt;/span&gt;&lt;span style="color: #008800; font-weight: bold"&gt;}&lt;/span&gt;

&lt;span style="color: #888888"&gt;#  resources&lt;/span&gt;
&lt;span style="color: #888888"&gt;#  https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build&lt;/span&gt;
&lt;span style="color: #888888"&gt;#  https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin&lt;/span&gt;
&lt;span style="color: #888888"&gt;#  http://curiositedevie.blogspot.nl/2016/02/how-to-jenkins-chain-jobs-with.html&lt;/span&gt;
&lt;span style="color: #007020"&gt;export &lt;/span&gt;&lt;span style="color: #996633"&gt;JENKINS_HOST&lt;/span&gt;&lt;span style="color: #333333"&gt;=&lt;/span&gt;https://myjenkins.domain.net
&lt;span style="color: #007020"&gt;export &lt;/span&gt;&lt;span style="color: #996633"&gt;JOB_TOKEN&lt;/span&gt;&lt;span style="color: #333333"&gt;=&lt;/span&gt;THISISWONDERFULL
&lt;span style="color: #007020"&gt;export &lt;/span&gt;&lt;span style="color: #996633"&gt;JOB_NAME&lt;/span&gt;&lt;span style="color: #333333"&gt;=&lt;/span&gt;git_config_follower
&lt;span style="color: #007020"&gt;export &lt;/span&gt;&lt;span style="color: #996633"&gt;JOB_PARAM1&lt;/span&gt;&lt;span style="color: #333333"&gt;=&lt;/span&gt;&lt;span style="color: #996633"&gt;branch&lt;/span&gt;&lt;span style="color: #333333"&gt;=&lt;/span&gt;&lt;span style="color: #008800; font-weight: bold"&gt;${&lt;/span&gt;&lt;span style="color: #996633"&gt;branch&lt;/span&gt;&lt;span style="color: #008800; font-weight: bold"&gt;}&lt;/span&gt;
&lt;span style="color: #007020"&gt;export &lt;/span&gt;&lt;span style="color: #996633"&gt;JOB_CAUSE&lt;/span&gt;&lt;span style="color: #333333"&gt;=&lt;/span&gt;Launching_follower_with_branch_set_to_&lt;span style="color: #008800; font-weight: bold"&gt;${&lt;/span&gt;&lt;span style="color: #996633"&gt;branch&lt;/span&gt;&lt;span style="color: #008800; font-weight: bold"&gt;}&lt;/span&gt;
&lt;span style="color: #007020"&gt;export &lt;/span&gt;&lt;span style="color: #996633"&gt;JOB_PING&lt;/span&gt;&lt;span style="color: #333333"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0"&gt;&amp;quot;$JENKINS_HOST/buildByToken/buildWithParameters?job=$JOB_NAME&amp;amp;token=$JOB_TOKEN&amp;amp;$JOB_PARAM1&amp;amp;cause=$JOB_CAUSE&amp;quot;&lt;/span&gt;
&lt;span style="color: #007020"&gt;echo&lt;/span&gt; &lt;span style="color: #996633"&gt;$JOB_PING&lt;/span&gt;
curl --verbose --insecure &lt;span style="color: #996633"&gt;$JOB_PING&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;/p&gt;


&lt;h2&gt;Try!&lt;/h2&gt;
&lt;p&gt;
Launch the first job with a parameter.&lt;br/&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQHJHYiIMbqfyrXbyXMbsWRrbtaq33sSXB_apqN7qe8_ZcFnV6-Cn0k0AkivQw0UeQxjhjb-1XLqGqn5HIO4BIlWILTz3TdI02fVKoqmtEJ-wzENKWYKapCN9Sl5GXjGiu520b1nFEtuG3/s1600/buildStep1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQHJHYiIMbqfyrXbyXMbsWRrbtaq33sSXB_apqN7qe8_ZcFnV6-Cn0k0AkivQw0UeQxjhjb-1XLqGqn5HIO4BIlWILTz3TdI02fVKoqmtEJ-wzENKWYKapCN9Sl5GXjGiu520b1nFEtuG3/s320/buildStep1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;

Go to the Job console to check curl http status.&lt;br/&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_ZrV0F-uRngwZQm3HSqV6iv-n9-e9LN0R6_hudacnOg91sJUEn4cVWSKdpD5CjFToEuLF_pZx2l0c0R4oxR9Qj1R0lpTegA83CYlZ5UGdAPGH7S8pu3k0bCEJWPjIQ20ytAbOnCStPw4O/s1600/curl_201status.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_ZrV0F-uRngwZQm3HSqV6iv-n9-e9LN0R6_hudacnOg91sJUEn4cVWSKdpD5CjFToEuLF_pZx2l0c0R4oxR9Qj1R0lpTegA83CYlZ5UGdAPGH7S8pu3k0bCEJWPjIQ20ytAbOnCStPw4O/s320/curl_201status.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;

Go to the follower (second) job logs.&lt;br/&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwWUJigySUviyzEINmNLU71ZTw5qlrde2qKlK3f6mZ_iAU4lx7_uUDESbFjFbvW1fYbBI-vCbWD7kqGQ1eHomFKHEDuClBiEwd4rM4gSvDHpFVI3IIVMZeGmej8uGBpH2KWsi0KMRPo274/s1600/console_output.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwWUJigySUviyzEINmNLU71ZTw5qlrde2qKlK3f6mZ_iAU4lx7_uUDESbFjFbvW1fYbBI-vCbWD7kqGQ1eHomFKHEDuClBiEwd4rM4gSvDHpFVI3IIVMZeGmej8uGBpH2KWsi0KMRPo274/s320/console_output.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;

Check the follower result!&lt;br/&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilT9BZP4gxOE-wvEGgrM9s1s3-ez_VxSnXPhlylgo5g4aI5hshqdSXewNUBpM0sd8ZfLJ0xo1NK_ERrXUSjR9c0_eJcUhVZLECfx-Me_9AJaLmul5UKCeVXDwBARYh-1lKUGXMcIiIwAMy/s1600/followerResult.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilT9BZP4gxOE-wvEGgrM9s1s3-ez_VxSnXPhlylgo5g4aI5hshqdSXewNUBpM0sd8ZfLJ0xo1NK_ERrXUSjR9c0_eJcUhVZLECfx-Me_9AJaLmul5UKCeVXDwBARYh-1lKUGXMcIiIwAMy/s320/followerResult.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9FydaFkj2jcYxqLJK_tBkIa0sDqUcNx22BNZ0pq6IhkT6nmNli-hPwIMmfe145AkOvnBPosGZqvkd4cMMbdle7PUWNpoxQ4OnMfnoVdsJn14xN6NU355khYf11SW7PdF4dSm2lIgtJPuy/s72-c/triggerProject.JPG" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Log4j 1.x with maven: minimal howto</title><link>http://curiositedevie.blogspot.com/2016/01/log4j-1x-with-maven-minimal-howto.html</link><category>appender</category><category>console</category><category>gelf</category><category>graylog</category><category>Java</category><category>log</category><category>log4j</category><category>logger</category><category>logs</category><category>lombok</category><category>NT</category><category>NTEventLogger</category><category>slf4j</category><author>noreply@blogger.com (Unknown)</author><pubDate>Thu, 7 Jan 2016 12:02:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-6086810052105878235</guid><description>&lt;div style="text-align: justify;"&gt;
This post is a minimal howto for log4j version 1.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
What a simple task ! but who never search a simple sample on the web send a little stone to me ;)&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Feel free to copy paste anyway ;))&lt;/div&gt;
&lt;h2&gt;
What are the dependencies&lt;/h2&gt;
&lt;div style="text-align: justify;"&gt;
You will need to add log4j, slf4j and lombok (to use @Slf4j) :

&lt;!-- HTML generated using hilite.me --&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt; &lt;span style="color: #007700;"&gt;&amp;lt;properties&amp;gt;&lt;/span&gt;
  &lt;span style="color: #888888;"&gt;&amp;lt;!--General project configuration --&amp;gt;&lt;/span&gt;
  &lt;span style="color: #007700;"&gt;&amp;lt;project.build.sourceEncoding&amp;gt;&lt;/span&gt;UTF-8&lt;span style="color: #007700;"&gt;&amp;lt;/project.build.sourceEncoding&amp;gt;&lt;/span&gt;
  &lt;span style="color: #007700;"&gt;&amp;lt;project.reporting.outputEncoding&amp;gt;&lt;/span&gt;UTF-8&lt;span style="color: #007700;"&gt;&amp;lt;/project.reporting.outputEncoding&amp;gt;&lt;/span&gt;

  &lt;span style="color: #007700;"&gt;&amp;lt;lombok.version&amp;gt;&lt;/span&gt;1.16.6&lt;span style="color: #007700;"&gt;&amp;lt;/lombok.version&amp;gt;&lt;/span&gt;
  &lt;span style="color: #007700;"&gt;&amp;lt;log4j.version&amp;gt;&lt;/span&gt;1.2.17&lt;span style="color: #007700;"&gt;&amp;lt;/log4j.version&amp;gt;&lt;/span&gt;
  &lt;span style="color: #007700;"&gt;&amp;lt;slf4j.version&amp;gt;&lt;/span&gt;1.7.10&lt;span style="color: #007700;"&gt;&amp;lt;/slf4j.version&amp;gt;&lt;/span&gt;
  &lt;span style="color: #007700;"&gt;&amp;lt;junit.version&amp;gt;&lt;/span&gt;4.12&lt;span style="color: #007700;"&gt;&amp;lt;/junit.version&amp;gt;&lt;/span&gt;
 &lt;span style="color: #007700;"&gt;&amp;lt;/properties&amp;gt;&lt;/span&gt;
 &lt;span style="color: #007700;"&gt;&amp;lt;dependencyManagement&amp;gt;&lt;/span&gt;
  &lt;span style="color: #007700;"&gt;&amp;lt;dependencies&amp;gt;&lt;/span&gt;
   &lt;span style="color: #888888;"&gt;&amp;lt;!-- @Slf4j annotation --&amp;gt;&lt;/span&gt;
   &lt;span style="color: #007700;"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span style="color: #007700;"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.projectlombok&lt;span style="color: #007700;"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span style="color: #007700;"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;lombok&lt;span style="color: #007700;"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span style="color: #007700;"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;${lombok.version}&lt;span style="color: #007700;"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
    &lt;span style="color: #007700;"&gt;&amp;lt;scope&amp;gt;&lt;/span&gt;provided&lt;span style="color: #007700;"&gt;&amp;lt;/scope&amp;gt;&lt;/span&gt;
   &lt;span style="color: #007700;"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
   &lt;span style="color: #888888;"&gt;&amp;lt;!-- ## LOGS ## --&amp;gt;&lt;/span&gt;
   &lt;span style="color: #007700;"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span style="color: #007700;"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;log4j&lt;span style="color: #007700;"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span style="color: #007700;"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;log4j&lt;span style="color: #007700;"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span style="color: #007700;"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;${log4j.version}&lt;span style="color: #007700;"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
   &lt;span style="color: #007700;"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
   &lt;span style="color: #007700;"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span style="color: #007700;"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.slf4j&lt;span style="color: #007700;"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span style="color: #007700;"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;slf4j-api&lt;span style="color: #007700;"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span style="color: #007700;"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;${slf4j.version}&lt;span style="color: #007700;"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
   &lt;span style="color: #007700;"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
   &lt;span style="color: #007700;"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span style="color: #007700;"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.slf4j&lt;span style="color: #007700;"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span style="color: #007700;"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;slf4j-log4j12&lt;span style="color: #007700;"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span style="color: #007700;"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;${slf4j.version}&lt;span style="color: #007700;"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
   &lt;span style="color: #007700;"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
How to use it&lt;/h2&gt;
&lt;div style="text-align: justify;"&gt;
Simply add "@Slf4j" to your class, and then you could use "log" as logger.


&lt;!-- HTML generated using hilite.me --&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #008800; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #0e84b5; font-weight: bold;"&gt;java.security.InvalidParameterException&lt;/span&gt;&lt;span style="color: #333333;"&gt;;&lt;/span&gt;

&lt;span style="color: #008800; font-weight: bold;"&gt;import&lt;/span&gt; &lt;span style="color: #0e84b5; font-weight: bold;"&gt;lombok.extern.slf4j.Slf4j&lt;/span&gt;&lt;span style="color: #333333;"&gt;;&lt;/span&gt;

&lt;span style="color: #555555; font-weight: bold;"&gt;@Slf4j&lt;/span&gt;
&lt;span style="color: #008800; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #008800; font-weight: bold;"&gt;class&lt;/span&gt; &lt;span style="color: #bb0066; font-weight: bold;"&gt;MyClass&lt;/span&gt; &lt;span style="color: #333333;"&gt;{&lt;/span&gt;
    &lt;span style="color: #008800; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #0066bb; font-weight: bold;"&gt;MyClass&lt;/span&gt;&lt;span style="color: #333333;"&gt;()&lt;/span&gt; &lt;span style="color: #333333;"&gt;{&lt;/span&gt;
        log&lt;span style="color: #333333;"&gt;.&lt;/span&gt;&lt;span style="color: #0000cc;"&gt;debug&lt;/span&gt;&lt;span style="color: #333333;"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;"constructor YEP"&lt;/span&gt;&lt;span style="color: #333333;"&gt;);&lt;/span&gt;
    &lt;span style="color: #333333;"&gt;}&lt;/span&gt;
    
    &lt;span style="color: #008800; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #333399; font-weight: bold;"&gt;void&lt;/span&gt; &lt;span style="color: #0066bb; font-weight: bold;"&gt;doIt&lt;/span&gt;&lt;span style="color: #333333;"&gt;(&lt;/span&gt;&lt;span style="color: #333399; font-weight: bold;"&gt;long&lt;/span&gt; value&lt;span style="color: #333333;"&gt;)&lt;/span&gt; &lt;span style="color: #333333;"&gt;{&lt;/span&gt;
        log&lt;span style="color: #333333;"&gt;.&lt;/span&gt;&lt;span style="color: #0000cc;"&gt;info&lt;/span&gt;&lt;span style="color: #333333;"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;"doIt {}"&lt;/span&gt;&lt;span style="color: #333333;"&gt;,&lt;/span&gt; value&lt;span style="color: #333333;"&gt;);&lt;/span&gt;
        &lt;span style="color: #008800; font-weight: bold;"&gt;try&lt;/span&gt; &lt;span style="color: #333333;"&gt;{&lt;/span&gt;
            &lt;span style="color: #008800; font-weight: bold;"&gt;throw&lt;/span&gt; &lt;span style="color: #008800; font-weight: bold;"&gt;new&lt;/span&gt; &lt;span style="color: #0066bb; font-weight: bold;"&gt;InvalidParameterException&lt;/span&gt;&lt;span style="color: #333333;"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;"Zobby"&lt;/span&gt;&lt;span style="color: #333333;"&gt;);&lt;/span&gt;
        &lt;span style="color: #333333;"&gt;}&lt;/span&gt; &lt;span style="color: #008800; font-weight: bold;"&gt;catch&lt;/span&gt; &lt;span style="color: #333333;"&gt;(&lt;/span&gt;Exception ee&lt;span style="color: #333333;"&gt;)&lt;/span&gt; &lt;span style="color: #333333;"&gt;{&lt;/span&gt;
            log&lt;span style="color: #333333;"&gt;.&lt;/span&gt;&lt;span style="color: #0000cc;"&gt;error&lt;/span&gt;&lt;span style="color: #333333;"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;"I'm so stupid: {} =&amp;gt; {}"&lt;/span&gt;&lt;span style="color: #333333;"&gt;,&lt;/span&gt; ee&lt;span style="color: #333333;"&gt;.&lt;/span&gt;&lt;span style="color: #0000cc;"&gt;getClass&lt;/span&gt;&lt;span style="color: #333333;"&gt;().&lt;/span&gt;&lt;span style="color: #0000cc;"&gt;getSimpleName&lt;/span&gt;&lt;span style="color: #333333;"&gt;(),&lt;/span&gt; ee&lt;span style="color: #333333;"&gt;.&lt;/span&gt;&lt;span style="color: #0000cc;"&gt;getMessage&lt;/span&gt;&lt;span style="color: #333333;"&gt;(),&lt;/span&gt; ee&lt;span style="color: #333333;"&gt;);&lt;/span&gt;
            log&lt;span style="color: #333333;"&gt;.&lt;/span&gt;&lt;span style="color: #0000cc;"&gt;warn&lt;/span&gt;&lt;span style="color: #333333;"&gt;(&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;"same without stack trace !: {} =&amp;gt; {}"&lt;/span&gt;&lt;span style="color: #333333;"&gt;,&lt;/span&gt; ee&lt;span style="color: #333333;"&gt;.&lt;/span&gt;&lt;span style="color: #0000cc;"&gt;getClass&lt;/span&gt;&lt;span style="color: #333333;"&gt;().&lt;/span&gt;&lt;span style="color: #0000cc;"&gt;getSimpleName&lt;/span&gt;&lt;span style="color: #333333;"&gt;(),&lt;/span&gt; ee&lt;span style="color: #333333;"&gt;.&lt;/span&gt;&lt;span style="color: #0000cc;"&gt;getMessage&lt;/span&gt;&lt;span style="color: #333333;"&gt;());&lt;/span&gt;
        &lt;span style="color: #333333;"&gt;}&lt;/span&gt;
    &lt;span style="color: #333333;"&gt;}&lt;/span&gt;
&lt;span style="color: #333333;"&gt;}&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
How to configure appenders&lt;/h2&gt;
&lt;div style="text-align: justify;"&gt;
To configure log4j, add a &lt;code&gt;log4j.properties&lt;/code&gt; file to your resources. Start by defining a console appender. This appender should appear in the rootLogger definition too. You could define the following content to start:&lt;/div&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="margin: 0px;"&gt;&lt;span style="color: #0000cc; line-height: 125%;"&gt;log4j.rootLogger&lt;/span&gt;&lt;span style="color: #333333; line-height: 125%;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0; line-height: 125%;"&gt;DEBUG, &lt;b&gt;console&lt;/b&gt;&lt;/span&gt;&lt;span style="line-height: 125%;"&gt;

&lt;/span&gt;&lt;span style="color: #888888; line-height: 125%;"&gt;## Console appender &lt;/span&gt;&lt;span style="line-height: 125%;"&gt;
&lt;/span&gt;&lt;span style="color: #0000cc; line-height: 125%;"&gt;log4j.appender.&lt;b&gt;console&lt;/b&gt;&lt;/span&gt;&lt;span style="color: #333333; line-height: 125%;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0; line-height: 125%;"&gt;org.apache.log4j.ConsoleAppender&lt;/span&gt;&lt;span style="line-height: 125%;"&gt;
&lt;/span&gt;&lt;span style="color: #0000cc; line-height: 125%;"&gt;log4j.appender.&lt;b&gt;console&lt;/b&gt;.threshold&lt;/span&gt;&lt;span style="color: #333333; line-height: 125%;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0; line-height: 125%;"&gt;DEBUG&lt;/span&gt;&lt;span style="line-height: 125%;"&gt;
&lt;/span&gt;&lt;span style="color: #0000cc; line-height: 125%;"&gt;log4j.appender.&lt;b&gt;console&lt;/b&gt;.layout&lt;/span&gt;&lt;span style="color: #333333; line-height: 125%;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0; line-height: 125%;"&gt;org.apache.log4j.PatternLayout&lt;/span&gt;&lt;span style="line-height: 125%;"&gt;
&lt;/span&gt;&lt;span style="color: #0000cc; line-height: 125%;"&gt;log4j.appender.&lt;b&gt;console&lt;/b&gt;.layout.ConversionPattern&lt;/span&gt;&lt;span style="color: #333333; line-height: 125%;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0; line-height: 125%;"&gt;%d %5p [%c{1}] %m%n&lt;/span&gt;&lt;span style="line-height: 125%;"&gt;

&lt;/span&gt;&lt;span style="color: #888888; line-height: 125%;"&gt;# package log levels&lt;/span&gt;&lt;span style="line-height: 125%;"&gt;
&lt;/span&gt;&lt;span style="color: #888888; line-height: 125%;"&gt;#&lt;/span&gt;&lt;span style="line-height: 125%;"&gt;
&lt;/span&gt;&lt;span style="color: #888888; line-height: 125%;"&gt;# Log4j bootstrap&lt;/span&gt;&lt;span style="line-height: 125%;"&gt;
&lt;/span&gt;&lt;span style="color: #888888; line-height: 125%;"&gt;#&lt;/span&gt;&lt;span style="line-height: 125%;"&gt;
&lt;/span&gt;&lt;span style="color: #0000cc; line-height: 125%;"&gt;log4j.logger.org.apache.http&lt;/span&gt;&lt;span style="line-height: 125%;"&gt; &lt;/span&gt;&lt;span style="color: #333333; line-height: 125%;"&gt;=&lt;/span&gt;&lt;span style="line-height: 125%;"&gt; &lt;/span&gt;&lt;span style="background-color: #fff0f0; line-height: 125%;"&gt;INFO&lt;/span&gt;&lt;span style="line-height: 125%;"&gt;
&lt;/span&gt;&lt;span style="color: #0000cc; line-height: 125%;"&gt;log4j.logger.com.&lt;/span&gt;&lt;span style="color: #0000cc;"&gt;&lt;span style="line-height: 16.25px;"&gt;myapp&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 125%;"&gt; &lt;/span&gt;&lt;span style="color: #333333; line-height: 125%;"&gt;=&lt;/span&gt;&lt;span style="line-height: 125%;"&gt; &lt;/span&gt;&lt;span style="background-color: #fff0f0; line-height: 125%;"&gt;DEBUG&lt;/span&gt;&lt;span style="line-height: 125%;"&gt;
&lt;/span&gt;&lt;span style="color: #888888; line-height: 125%;"&gt;#&lt;/span&gt;&lt;span style="line-height: 125%;"&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
How to configure file appender&lt;/h3&gt;
&lt;div style="text-align: justify;"&gt;
Update your rootLoger to refer to the logfile appender, and add a logfile appender definition:&lt;/div&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #0000cc;"&gt;log4j.rootLogger&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;DEBUG, console, logfile&lt;/span&gt;

&lt;span style="color: #888888;"&gt;## File appender&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.logfile&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;org.apache.log4j.RollingFileAppender&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.logfile.threshold&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;DEBUG&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.logfile.layout&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;org.apache.log4j.PatternLayout&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.logfile.layout.ConversionPattern&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;%d{ISO8601} - %-5.5p - %t - %c - %m%n&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.logfile.file&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;MY_CUSTOMFILEHERE.log&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.logfile.maxBackupIndex&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;5&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.logfile.maxFileSize&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;2048KB&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.logfile.append&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;true&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
How to configure graylog (splunk-like) appender&lt;/h3&gt;
&lt;div style="text-align: justify;"&gt;
Update your rootLoger to refer to the graylog appender, and add a gelf appender definition:&lt;/div&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #888888;"&gt;### Graylog appender&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.graylog2&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;org.graylog2.log.GelfAppender&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.graylog2.graylogHost&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;tcp:mygraylogserver.net&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.graylog2.graylogPort&lt;/span&gt; &lt;span style="color: #333333;"&gt;=&lt;/span&gt; &lt;span style="background-color: #fff0f0;"&gt;12201&lt;/span&gt;
&lt;span style="color: #888888;"&gt;#log4j.appender.graylog2.originHost=(default to the local hostname)&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.graylog2.facility&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;gelf-java&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.graylog2.layout&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;org.apache.log4j.PatternLayout&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.graylog2.extractStacktrace&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;true&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.graylog2.addExtendedInformation&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;true&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.graylog2.additionalFields&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;{'environment': '${projectEnvironment}', 'application': 'MyPoc','version': '${buildVersion}_${buildTimestamp}'}&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;
How to configure NT event appender&lt;/h3&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;&lt;u&gt;Pre-requisites :&lt;/u&gt;&lt;/b&gt; add &lt;code&gt;NTEventLogAppender.dll&lt;/code&gt; and &lt;code&gt;NTEventLogAppender.amd64.dll&lt;/code&gt; to the current directory or to the java ld library path. You could append "&lt;code&gt;-Djava.library.path=PATH&lt;/code&gt;" to your application if needed. Get this dll files from log4j zip distribution &amp;nbsp;&lt;sup&gt;doc :&amp;nbsp;&lt;a href="https://wiki.apache.org/logging-log4j/NTEventLogAppender"&gt;https://wiki.apache.org/logging-log4j/NTEventLogAppender&lt;/a&gt;&lt;/sup&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Update your rootLoger to refer to the ntappender appender, and add a new ntappender definition:&lt;/div&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; border-width: .1em .1em .1em .8em; border: solid gray; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #888888;"&gt;# NTEventLogAppender&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.ntappender&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;org.apache.log4j.nt.NTEventLogAppender&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.ntappender.Source&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;MyKillerApp&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.ntappender.layout&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;org.apache.log4j.PatternLayout&lt;/span&gt;
&lt;span style="color: #0000cc;"&gt;log4j.appender.ntappender.layout.ConversionPattern&lt;/span&gt;&lt;span style="color: #333333;"&gt;=&lt;/span&gt;&lt;span style="background-color: #fff0f0;"&gt;%d{ISO8601} - %-5.5p - %t - %c - %m%n&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;
For this last usecase you will be able to see the app logs into Windows Event Log service :
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuzxC-miTxEznMfuXrrh-sK_aD-VUUjXtb0diS5mm9KNM-b0gm9luVj5IqefcqV9B1GRPL2Yu5jN3PrCS9NZxjKrVgZZ-RJJLLRrhhl_Ob0wwE_I2O__VIqT6WA7MhKKVk9SMFvvW_U20M/s1600/CaptureLOGS.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuzxC-miTxEznMfuXrrh-sK_aD-VUUjXtb0diS5mm9KNM-b0gm9luVj5IqefcqV9B1GRPL2Yu5jN3PrCS9NZxjKrVgZZ-RJJLLRrhhl_Ob0wwE_I2O__VIqT6WA7MhKKVk9SMFvvW_U20M/s320/CaptureLOGS.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuzxC-miTxEznMfuXrrh-sK_aD-VUUjXtb0diS5mm9KNM-b0gm9luVj5IqefcqV9B1GRPL2Yu5jN3PrCS9NZxjKrVgZZ-RJJLLRrhhl_Ob0wwE_I2O__VIqT6WA7MhKKVk9SMFvvW_U20M/s72-c/CaptureLOGS.JPG" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Swagger UI + Auth0 Bearer</title><link>http://curiositedevie.blogspot.com/2016/01/swagger-ui-auth0-bearer.html</link><category>api</category><category>auth0</category><category>authentication</category><category>bearer</category><category>JavaScript</category><category>swagger</category><category>token</category><author>noreply@blogger.com (Unknown)</author><pubDate>Wed, 6 Jan 2016 10:14:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-8697570897771169770</guid><description>When you would like to integrate Swagger UI with a token based authentication (like Auth0), this is the way you need to update Swagger index.html :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;      &lt;span style="color: #008800; font-weight: bold"&gt;function&lt;/span&gt; addApiKeyAuthorization(){
        &lt;span style="color: #008800; font-weight: bold"&gt;var&lt;/span&gt; key &lt;span style="color: #333333"&gt;=&lt;/span&gt; &lt;span style="color: #007020"&gt;encodeURIComponent&lt;/span&gt;($(&lt;span style="background-color: #fff0f0"&gt;&amp;#39;#input_apiKey&amp;#39;&lt;/span&gt;)[&lt;span style="color: #0000DD; font-weight: bold"&gt;0&lt;/span&gt;].value);
        &lt;span style="color: #008800; font-weight: bold"&gt;if&lt;/span&gt;(key &lt;span style="color: #333333"&gt;&amp;amp;&amp;amp;&lt;/span&gt; key.trim() &lt;span style="color: #333333"&gt;!=&lt;/span&gt; &lt;span style="background-color: #fff0f0"&gt;&amp;quot;&amp;quot;&lt;/span&gt;) {
            &lt;span style="color: #008800; font-weight: bold"&gt;var&lt;/span&gt; apiKeyAuth &lt;span style="color: #333333"&gt;=&lt;/span&gt; &lt;span style="color: #008800; font-weight: bold"&gt;new&lt;/span&gt; SwaggerClient.ApiKeyAuthorization(&lt;span style="background-color: #fff0f0"&gt;&amp;quot;Authorization&amp;quot;&lt;/span&gt;, &lt;span style="background-color: #fff0f0"&gt;&amp;quot;Bearer &amp;quot;&lt;/span&gt; &lt;span style="color: #333333"&gt;+&lt;/span&gt; key, &lt;span style="background-color: #fff0f0"&gt;&amp;quot;header&amp;quot;&lt;/span&gt;);
            &lt;span style="color: #007020"&gt;window&lt;/span&gt;.swaggerUi.api.clientAuthorizations.add(&lt;span style="background-color: #fff0f0"&gt;&amp;quot;key&amp;quot;&lt;/span&gt;, apiKeyAuth);
            log(&lt;span style="background-color: #fff0f0"&gt;&amp;quot;added key &amp;quot;&lt;/span&gt; &lt;span style="color: #333333"&gt;+&lt;/span&gt; key);
        }
      }
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;i&gt;Instead of adding api_key as part of the query, this code is adding your token in an "Authorization" header and with "Bearer " as prefix.&lt;/i&gt;&lt;/p&gt;


enjoy</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>GMail: gestion de vos emails aux petits oignons</title><link>http://curiositedevie.blogspot.com/2015/08/gmail-gestion-de-vos-emails-aux-petits.html</link><category>archive</category><category>automation</category><category>gmail</category><category>google</category><category>JavaScript</category><author>noreply@blogger.com (Unknown)</author><pubDate>Thu, 6 Aug 2015 15:14:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-3046623850915930199</guid><description>Lorsque vous vous abonnez à une &lt;a href="https://fr.wikipedia.org/wiki/Liste_de_diffusion"&gt;liste de diffusion&lt;/a&gt; / mailing-liste (exemple: &lt;a href="http://mail-archives.apache.org/mod_mbox/"&gt;archive des ML Apache&lt;/a&gt; ) ou alors lorsque vous recevez des mails automatisés (exemple: résultats de build Jenkins);&lt;br /&gt;
&lt;br /&gt;
ce que vous aimez c'est :&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;recevoir les mails en temps réel ou selon vos préférences sur vos différents supports clients mails,&lt;/li&gt;
&lt;li&gt;(ML) pouvoir y répondre de suite.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
ce que vous détestez c'est :&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;avoir à classer/archiver ces emails,&lt;/li&gt;
&lt;li&gt;avoir à supprimer les anciens mails inutiles (redondants avec les archives des ML ou avec votre dashboard Jenkins).&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
L'idéal serait de souscrire aux ML sans en avoir les inconvénients. Peut être des services en lignes ou d'autres méthodes existent (ex. souscription à un RSS) ; certains même me diront mais pourquoi classer ses mails :), .. mais personnellement j'ai décidé d'opter pour l'automatisation de la gestion de ce type de mails&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Première étape&lt;/b&gt; : appliquer un label aux emails reçus : je ne vais pas faire l'affront de décrire cette étape car je pense que &lt;a href="https://support.google.com/mail/answer/6579?hl=fr"&gt;l'aide&lt;/a&gt;&amp;nbsp;GMail est auto suffisante.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Seconde étape &lt;/b&gt;: utiliser un script &lt;a href="https://script.google.com/"&gt;google script&lt;/a&gt; pour automatiser la gestion de ces mails. Pour cette étape, rendez vous sur &lt;a href="https://github.com/boly38/script.google.com/blob/master/organizeEmail.gs"&gt;cette page de code&lt;/a&gt;. Vous y trouverez le code à copier-coller sur votre google script. Le reste n'est que paramétrage. Ce script utilise notamment &lt;a href="https://support.google.com/mail/answer/7190?hl=en"&gt;les filtres avancés&lt;/a&gt; pour déterminer les fils de discussion (thread;groupe de mails) utiles.&lt;/div&gt;
&lt;div&gt;
Le code est assez lisible en l'état.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Dernière étape&lt;/b&gt; : planifier l'exécution du script selon vos besoins. &amp;nbsp;&lt;a href="https://developers.google.com/apps-script/"&gt;L'aide en ligne de google script est très bien structurée.&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWjR3u4Cpq3uODYxA4QzJwzRmj_6561kfJ7qfyVkcg2X2RSa8XKk5D0BqWgBuJRFP1mg8Efkfm8Xt-gqnX922j3tE37r6ACdnOGNyGpBYVHeF5Jm8jy4eJ1PVAsIPVnV-ZgRv9ZbzxfV2X/s1600/ggscript.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="158" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWjR3u4Cpq3uODYxA4QzJwzRmj_6561kfJ7qfyVkcg2X2RSa8XKk5D0BqWgBuJRFP1mg8Efkfm8Xt-gqnX922j3tE37r6ACdnOGNyGpBYVHeF5Jm8jy4eJ1PVAsIPVnV-ZgRv9ZbzxfV2X/s320/ggscript.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Personnellement avec un filtre de réception, je positionne mes mails automatisés sous un label fils du label "ML".&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
Puis avec ce code google script, je peux archiver automatiquement les mails de ML vieux de 2 jours et supprimer automatiquement les mails archivés de ML vieux de 60 jours minimum et n'ayant pas de label "keep".&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Et vous comment faites vous ? des remarques positives/négatives sur ce type de gestion ..?&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWjR3u4Cpq3uODYxA4QzJwzRmj_6561kfJ7qfyVkcg2X2RSa8XKk5D0BqWgBuJRFP1mg8Efkfm8Xt-gqnX922j3tE37r6ACdnOGNyGpBYVHeF5Jm8jy4eJ1PVAsIPVnV-ZgRv9ZbzxfV2X/s72-c/ggscript.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Microsoft Windows: minimal howto</title><link>http://curiositedevie.blogspot.com/2015/06/m-windows-minimal-howto.html</link><category>command</category><category>fiche</category><category>howto</category><category>microsoft</category><category>windows</category><author>noreply@blogger.com (Unknown)</author><pubDate>Wed, 3 Jun 2015 17:19:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-9141381417742153211</guid><description>This post is a kind of minimal 'how to' for &lt;b&gt;Micro$oft Windows&lt;/b&gt;.&lt;br /&gt;
&lt;div&gt;
&lt;h4&gt;
Windows : basic command (to execute from [WINDOWS + R])&lt;/h4&gt;
&lt;pre&gt;cmd             : classic console
powershell      : power shell command console
msinfo32        : host info
devmgmt.msc     : devices management (fr: Gestionnaire de périphériques)
certmgr.msc     : certificates managers
services.msc    : windows OS services
javaws -viewer  : windows java services
eventvwr.exe    : Event viewer
&lt;pre&gt;shell:Startup   : show startup programs (if any)&lt;/pre&gt;
&lt;pre&gt;procmon.exe     : (&lt;a href="https://docs.microsoft.com/en-us/sysinternals/downloads/procmon"&gt;download&lt;/a&gt;) show process actiity (really useful)&lt;/pre&gt;
&lt;pre&gt;compmgmt.msc    : Computer Management&lt;/pre&gt;
&lt;/pre&gt;
NB: for ssl cf &lt;a href="http://curiositedevie.blogspot.co.uk/2015/01/ssl-certificates-and-truststore-minimal.html"&gt;ssl howto&lt;/a&gt;

&lt;br /&gt;
&lt;h4&gt;god mode (Windows 10)&lt;/h4&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li style="margin-bottom: 0.1em;"&gt;create a folder on windows 10 desktop and name it&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote style="border: none; margin: 0 0 0 40px; padding: 0px;"&gt;&lt;div&gt;&lt;div style="text-align: left;"&gt;&lt;em data-insertor-excluded="1" style="background-color: white; box-sizing: border-box; color: #303030; font-family: Roboto, sans-serif; font-size: 16px;"&gt;GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}&lt;/em&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;h4&gt;network related commands&lt;/h4&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;list all LISTENING ports&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;netstat -ano&lt;/pre&gt;
&lt;pre&gt;netstat -ano | find "LIST"&lt;/pre&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;find an application from port&lt;sup&gt;&lt;a href="https://www.croc-informatique.fr/2007/10/connaitre-quel-programme-utilise-le-port-x-sur-windows-xp-et-2003/"&gt;src&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;netstat -ano | find "LIST"
==&amp;gt; Pick the wanted process id from the last column. Example pid "8112"
tasklist  | find "8112"
tasklist /svc | find "8112"
&lt;/pre&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;DNS lookup&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;nslookup www.google.fr&lt;/pre&gt;
&lt;pre&gt;nslookup
server 8.8.8.8
www.google.fr&lt;/pre&gt;
&lt;h4&gt;
other usefull common tools&lt;/h4&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;FileZilla (secure FTP)&lt;/li&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Notepad++ (light editor)&lt;/li&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Cygwin (unix like shell)&lt;/li&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Process Hacker 2 (improved task list manager)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>ssl certificates and truststore: minimal howto</title><link>http://curiositedevie.blogspot.com/2015/01/ssl-certificates-and-truststore-minimal.html</link><category>authority</category><category>certificate</category><category>fiche</category><category>howto</category><category>http</category><category>https</category><category>key</category><category>keystore</category><category>ssl</category><category>truststore</category><author>noreply@blogger.com (Unknown)</author><pubDate>Tue, 27 Jan 2015 16:21:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-5625467187185807877</guid><description>&lt;div&gt;
This post is a kind of minimal 'how to' for SSL, certificates and truststore :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#HTTPS"&gt;Tomcat HTTPS application : how to use a valid and trusted self-signed certificate for localhost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#PKIX"&gt;SSL Client : "PKIX path building failed" error&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;a href="#" name="HTTPS"&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;h3&gt;Tomcat HTTPS application : how to use a valid and trusted self-signed certificate for localhost&lt;/h3&gt;
&lt;h4&gt;Context&lt;/h4&gt;
As WebDevelopper, I use Tomcat and I need to work with localhost with a secure web application. The issue with the latest browser update (ex. ggchrome) is that an invalid or untrusted self signed certificate could block the navigation or AJAX exchanges.&lt;br /&gt;
For example, you could get the folloowing error :&lt;br /&gt;
&lt;br /&gt;
&lt;pre style="background: lightgrey;"&gt;NET::ERR_CERT_AUTHORITY_INVALID
:: certificate validation chain is not trusted
ERR_INSECURE_RESPONSE
:: unable to trust a server answer
&lt;/pre&gt;
&lt;br /&gt;
to workaround this issue, you could follow these steps:
&lt;ul&gt;
&lt;li&gt;generate a self-signed certificate for localhost&lt;/li&gt;
&lt;li&gt;tell to tomcat to use this certificate&lt;/li&gt;
&lt;li&gt;append this certificate to your workstation certificates manager&lt;/li&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;br /&gt;


&lt;h4&gt;
Generate a self signed certificate&lt;/h4&gt;
&lt;pre style="background: lightgrey;"&gt;$ keytool -genkey -keyalg RSA -alias tomcat \
  -keystore $HOME/.keystore -storepass changeit -validity 360 -keysize 2048
&lt;/pre&gt;
Warning: answer "localhost" to the first question&lt;br /&gt;
&lt;br /&gt;
more documentation: &lt;a href="https://tomcat.apache.org/tomcat-8.0-doc/ssl-howto.html#Configuration"&gt;tomcat8 ssl howto&lt;/a&gt; - &lt;a href="https://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-using-java-keytool.html"&gt;sslshopper create self signed cert&lt;/a&gt;&lt;br /&gt;
&lt;h4&gt;
Tomcat ssl configuration&lt;/h4&gt;
Connector's attributes example from &lt;code&gt;server.xml&lt;/code&gt;:
&lt;br /&gt;
&lt;div style="background: lightgrey; display: block; font-family: monospace;"&gt;
SSLEnabled="true" clientAuth="false" 
 keystoreFile="${user.home}/.keystore" keystorePass="changeit" 
 maxThreads="150" port="8443" 
 protocol="org.apache.coyote.http11.Http11NioProtocol" 
 scheme="https" secure="true" sslProtocol="TLS"
&lt;/div&gt;
&lt;h4&gt;
Append this certificate to your workstation certificates manager&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;navigate to your tomcat application ; example : &lt;code&gt;https://localhost:8443&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;(example using google chrome), right click on address bar lock / click on "certificate informations (...)" link / "details" tab&lt;/li&gt;
&lt;li&gt;Choose "copy certificate into file" - keep default format X509 DER.&lt;/li&gt;
&lt;li&gt;right click on the just created file to "Install certificate"&lt;/li&gt;
&lt;li&gt;Select the following target : "Trusted root certification authorities"("Autorités de certification racines de confiance")&lt;/li&gt;
&lt;li&gt;You could verify the certificate installation : Windows Start / Execute / &lt;code&gt;certmgr.msc&lt;/code&gt; ; this will open Windows certificates manager&lt;/li&gt;
&lt;li&gt;Restart your browser (use CTRL + ALT + Q for Google Chrome instead of closing the window).
&lt;/li&gt;
&lt;li&gt;navigate to your tomcat application ; example : &lt;code&gt;https://localhost:8443&lt;/code&gt; : your certificate should be trusted now&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="#" name="PKIX"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
SSL Client : "PKIX path building failed" error&lt;/h3&gt;
&lt;h4&gt;
Java error&lt;/h4&gt;
&lt;pre&gt;javax.net.ssl.SSLHandshakeException: 
sun.security.validator.ValidatorException: PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
&lt;/pre&gt;
&lt;h4&gt;
Java workarounds&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;(bad and quick way) Disable all ssl check by configuration
cf. &lt;a href="https://github.com/boly38/javabox/blob/master/src/main/java/org/internetresources/util/UnsafeSSLHelper.java"&gt;UnsafeSSLHelper (from javabox github project)&lt;/a&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;(right way) Update the ssl verification chain. For example by importing new valid certificate(s) to your truststore.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
Windows&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Windows / List certificates: 
&lt;br /&gt;&lt;br /&gt;
Start / Execute / &lt;code&gt;certmgr.msc&lt;/code&gt;&lt;br /&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;Google Chrome / List certificates: 
&lt;br /&gt;&lt;br /&gt;
go to Parameters, the search "ssl" (&lt;code&gt;chrome://settings/search#ssl&lt;/code&gt;)&lt;br /&gt;

&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Import a certificate in a truststore file: 
&lt;br /&gt;&lt;br /&gt;
Make a backup :
&lt;br /&gt;
&lt;pre&gt;cp %JAVA_HOME%/jre/lib/security/cacerts %JAVA_HOME%/jre/lib/security/cacerts.orig 
&lt;/pre&gt;
Import a certificate :
&lt;br /&gt;
&lt;pre&gt;keytool -import -alias MyCert -keystore %JAVA_HOME%/jre/lib/security/cacerts \
     -trustcacerts -file MyCert.cer
&lt;/pre&gt;
(cf. &lt;a href="http://www.networking4all.com/fr/support/certificats+ssl/manuels/java/serveur+web+bas%C3%A9+java/commandes+keytool/"&gt;commandes+keytool&lt;/a&gt; ...)&lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;Implort a certificate in JDK truststore:
&lt;br/&gt;
create a little batch like this one :
&lt;pre&gt;
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_65
set PATH=%JAVA_HOME%\bin;%PATH%
REM set JRE_CACERTS=%JAVA_HOME%\lib\security\cacerts
set JDK_CACERTS=%JAVA_HOME%\jre\lib\security\cacerts
set PASSWORD=changeit
set DIR=certsdir

for %%f in (%DIR%\*.cer) do keytool -keystore "%JRE_CACERTS%" -storepass %PASSWORD% -noprompt -importcert -alias "%%~nf" -file %%f
for %%f in (%DIR%\*.cer) do keytool -keystore "%JDK_CACERTS%" -storepass %PASSWORD% -noprompt -importcert -alias "%%~nf" -file %%f
&lt;/pre&gt;
&lt;p&gt;This script install all certificates under &lt;code&gt;certsdir&lt;/code&gt; to the JDK (or JRE).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>shared libraries "lib.so and lib.dll" file: minimal how to</title><link>http://curiositedevie.blogspot.com/2014/12/shared-libraries-libso-and-libdll-file.html</link><category>dll</category><category>dump</category><category>fiche</category><category>howto</category><category>shared</category><category>so</category><author>noreply@blogger.com (Unknown)</author><pubDate>Mon, 1 Dec 2014 15:31:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-3062467390027017030</guid><description>This post is a kind of minimal 'how to' for the shared libraries : ex. under linux &lt;code&gt;mylib.so&lt;/code&gt; or under windows &lt;code&gt;my.dll&lt;/code&gt;&lt;br /&gt;
&lt;div&gt;
&lt;h4&gt;
Windows&lt;/h4&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;List library exported symbols (then functions): 
 &lt;ul&gt;
&lt;li&gt;Tool : &lt;a href="http://www.nirsoft.net/utils/dll_export_viewer.html"&gt;Dll Export Viewer (nirsoft.net)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;(visualstudio required) &lt;code&gt;dumpbin /exports my.dll&lt;/code&gt; [not tested]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Linux&lt;/h4&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;List library exported symbols (then functions)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;readelf -s /usr/lib/libspreadsheet.so |grep workbook_sheet&lt;/pre&gt;
&lt;pre&gt;nm -D /usr/lib/libspreadsheet.so |grep workbook_sheet&lt;/pre&gt;
&lt;pre&gt;objdump -T /usr/lib/libspreadsheet.so |grep workbook_sheet&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;List library dependencies&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;pre&gt;readelf -d /usr/lib/libspreadsheet.so|grep NEEDED&lt;/pre&gt;
&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>prosyst OSGi: minimal how to</title><link>http://curiositedevie.blogspot.com/2014/11/prosyst-osgi-fiche-pratique.html</link><category>bundle</category><category>fiche</category><category>howto</category><category>osgi</category><category>prosyst</category><author>noreply@blogger.com (Unknown)</author><pubDate>Wed, 26 Nov 2014 15:39:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-3294857610288414938</guid><description>This post is a kind of minimal 'how to' for &lt;b&gt;&lt;a href="http://dz.prosyst.com/pdoc/mBS_SDK_7.5/getting_started/product_overview.html"&gt;Prosyst OSGi&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;div&gt;

&lt;h4&gt;console (or telnet) commands&lt;/h4&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;(telnet only) toggle command to get stdout / stderr on the telnet output&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;dump&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Bundle installation&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;install mybundle.jar&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Bundle start&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;start mybundle.jar&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Bundle installation and start alias&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;i -S mybundle.jar&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Bundle restart alias&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;rs mybundle.jar&lt;/pre&gt;
&lt;pre&gt;rs 42&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Bundle update := uninstall, install, start&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;update mybundle.jar&lt;/pre&gt;
&lt;pre&gt;update 42&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;whole prosyst OSGi framework restart (you will loose the telnet connection)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;rs 0&lt;/pre&gt;
&lt;br/&gt;
&lt;br/&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;for more information : &lt;a href="http://dz.prosyst.com/pdoc/mBS_SDK_7.5/common_tasks/runtime/runtime_console.html"&gt;runtime_console 7.5 doc&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>npm et bower: fiche pratique</title><link>http://curiositedevie.blogspot.com/2014/11/bower-fiche-pratique.html</link><category>bower</category><category>développement</category><category>fiche</category><category>JavaScript</category><category>nodejs</category><category>npm</category><category>package</category><author>noreply@blogger.com (Unknown)</author><pubDate>Fri, 7 Nov 2014 09:40:00 +0100</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-239969658246919121</guid><description>Cet article est une fiche pratique (commandes de base) pour &lt;b&gt;&lt;a href="https://www.npmjs.com/"&gt;npm&lt;/a&gt; et &lt;a href="http://bower.io/"&gt;Bower&lt;/a&gt; package managers&lt;/b&gt;.&lt;br /&gt;
&lt;div&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Commandes utiles pour configurer NPM:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;
npm config set proxy http://proxy:8080
npm config set https-proxy http://proxy:8080
npm config set strict-ssl false
&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Installation&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;npm install -g bower&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Bower derrière un proxy : utiliser les variables d'environnement &lt;code&gt;http_proxy&lt;/code&gt; et &lt;code&gt;https_proxy&lt;/code&gt; ou &lt;a href="http://bower.io/docs/config/#proxy"&gt;le fichier &lt;code&gt;.bowerrc&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Installation d'une dépendance&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;bower install jquery&lt;/pre&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Mise à jour d'une dépendance&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;bower update jquery&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Info et version d'une dépendance&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;bower info jquery&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Rechercher une dépendance: via la commande ci-dessous ou via le site officiel &lt;a href="http://bower.io/search/"&gt;http://bower.io/search/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;bower search angular%bootstrap%&lt;/pre&gt;


&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Bower repose sur un fichier de configuration &lt;code&gt;bower.json&lt;/code&gt; dont voici un exemple:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;
{
  "name": "myproject-webgui",
  "version": "0.0.0",
  "dependencies": {
    "angular": "1.3.1",
    "json3": "~3.2.6",
    "es5-shim": "~2.1.0",
    "jquery": "~1.11.0",
    "bootstrap": "~3.0.3",
    "angular-resource": "1.3.1",
    "angular-cookies": "1.3.1",
    "angular-sanitize": "1.3.1",
    "angular-route": "1.3.1",
    "ng-table": "0.3.3"
  },
  "devDependencies": {
    "angular-mocks": "1.3.1",
    "angular-scenario": "1.3.1"
  }
}
&lt;/pre&gt;

&lt;/div&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>git : fiche pratique</title><link>http://curiositedevie.blogspot.com/2014/10/git-fiche-pratique.html</link><category>fiche</category><category>git</category><category>repository</category><category>scm</category><author>noreply@blogger.com (Unknown)</author><pubDate>Fri, 3 Oct 2014 14:43:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-5333673193718073511</guid><description>Cet article est une fiche pratique (commandes de base) pour &lt;b&gt;&lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Client Windows : perso j'utilise &lt;a href="http://msysgit.github.io/"&gt;Msysgit&lt;/a&gt;. Il y en a plein évidemment...&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Git derrière un proxy ? 2 solutions :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; export http_proxy=http://user:pass@host:port&lt;/pre&gt;
&lt;pre&gt; git config --global http.proxy http://user:pass@host:port&lt;/pre&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Un problème de certificats SSL ? &lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; git config --global http.sslVerify false&lt;/pre&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Visualiser l'historique d'un dépôt (avec msysgit)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; gitk --all &amp;amp;&lt;/pre&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;récupérer un dépôt distant&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; git clone https://domain.com/repo.git&lt;/pre&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;connaître l'état du dépot&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; git status&lt;/pre&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;indexer l'ensemble des modifications : supprimer les fichiers, ajouter les fichiers manquants ou modifiés&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; git add --all .&lt;/pre&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;annuler des modifications locales non commitées&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; git reset --hard&lt;/pre&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;résoudre un conflit (lors d'un merge ou cherry-pick..)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; git mergetool&lt;/pre&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;creer un tag&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; git tag -a monTag -m 'monTag Il est beau'&lt;/pre&gt;
&lt;pre&gt; git push --tags &lt;/pre&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;déplacer un tag sur la version actuelle&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; git tag -f -a monTag &lt;/pre&gt;
&lt;pre&gt; git push origin :refs/tags/monTag &lt;/pre&gt;
&lt;pre&gt; git push --tags &lt;/pre&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;positionner des alias de commandes git : dans le fichier de config global (&lt;code&gt;~/.gitconfig&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; [alias]
        #Basic
        co = checkout
        st = status -s
        ci = commit
        br = branch
        df = diff
        cp = cherry-pick
        cl = clone
        diff = diff --word-diff
        dc = diff --cached
        who = shortlog -s --
        r  = !git ls-files -z --deleted | xargs -0 git rm
        #revert last commit
        rollback = reset --soft HEAD~1
        #Commit using previous message
        reapply = commit -c ORIG_HEAD
        #Logs
        lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %an - %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
        #Les logs du user
        mylg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %an - %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative --author="Vincent\\ Bostoen"
        ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
        lol = log --graph --decorate --pretty=oneline --abbrev-commit
        lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
        #Lister les commits pas encore pushés
        ctp = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %an - %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative origin/master..master
        #Mettre un fichier en argument pour avoir ses modifications
        fl = log -u
        #Avoir le contenu du dernier commit
        dl = "!git ll -1"
        #Avoir le diff avec un commit
        diffr = "!f() { git diff "$1"^.."$1"; }; f"
        #Lister tous les chemins pour un nom de fichier
        f = "!git ls-files | grep -i"
        #Chercher tous les fichiers contenant une chaine de caractère
        gr = grep -Ii
        #Lister les alias
        la = "!git config -l | grep alias | cut -c 7-"
        #Remove all locally deleted file (git rm on all 'D' files)
        rma = "!git diff -z --name-only --diff-filter=D | xargs -0 git rm"
        #Stash
        sl = stash list
        sa = stash apply
        ss = stash save
        amend = !git log -n 1 --pretty=tformat:%s%n%n%b | git commit -F - --amend
        ignore=!([ ! -e .gitignore ] &amp;amp;&amp;amp; touch .gitignore) | echo $1 &amp;gt;&amp;gt;.gitignore
        up = !sh -c 'git pull --rebase --prune &amp;amp;&amp;amp; git log --pretty=format:\"%Cred%ae %Creset- %C(yellow)%s %Creset(%ar)\" HEAD@{1}..'
        bt = for-each-ref --format='%(refname:short) &lt;- heads="" pre="" refs="" upstream:short=""&gt;

&lt;!-----&gt;&lt;!-----&gt;&lt;/-&gt;&lt;/pre&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>gradle: fiche pratique</title><link>http://curiositedevie.blogspot.com/2014/10/gradle-fiche-pratique.html</link><category>automation</category><category>build</category><category>fiche</category><category>Java</category><category>maven</category><author>noreply@blogger.com (Unknown)</author><pubDate>Wed, 1 Oct 2014 17:01:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-5993530807317798282</guid><description>Cet article est une fiche pratique pour &lt;b&gt;&lt;a href="http://www.gradle.org/"&gt;Gradle&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;h4&gt;Depuis Windows&lt;/h4&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Derrière un proxy : éditer &lt;code&gt;gradlew.bat&lt;/code&gt; et modifier la ligne suivante pour positionner votre proxy&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;set DEFAULT_JVM_OPTS=-Dhttp.proxyHost=myproxy.com -Dhttp.proxyPort=8080&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;liste des tâches&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;./gradlew.bat tasks&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;build&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;./gradlew.bat build&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;build sans test (traduire: exécuter la tâche 'build' sans exécuter la tâche 'test')&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;./gradlew.bat build -x test&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;build sans test ni javadoc&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;./gradlew.bat build -x test -x javadoc&lt;/pre&gt;


&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>heroku : fiche pratique</title><link>http://curiositedevie.blogspot.com/2014/09/heroku-fiche-pratique.html</link><category>commandes</category><category>fiche</category><category>heroku</category><category>paas</category><author>noreply@blogger.com (Unknown)</author><pubDate>Fri, 19 Sep 2014 16:26:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-4334360494379252347</guid><description>Cet article est une fiche pratique pour &lt;b&gt;&lt;a href="https://www.herokuapp.com/"&gt;Heroku&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;h4&gt;Depuis Windows&lt;/h4&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Pour les commandes heroku&lt;sup&gt;&lt;a href="https://toolbelt.heroku.com/"&gt;download&lt;/a&gt;&lt;/sup&gt;, je conseille d'installer et d'utiliser une console &lt;a href="http://msysgit.github.io/"&gt;msysgit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;


&lt;h4&gt;Connexion&lt;/h4&gt;


&lt;div&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Positionner un proxy (windows)&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;
set http_proxy=http://myproxy:8080
set https_proxy=http://myproxy:8080
&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Positionner un proxy (nux)&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;
export http_proxy=http://myproxy:8080
export https_proxy=http://myproxy:8080
&lt;/pre&gt;

&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Pour utiliser une clé SSH&amp;nbsp;: démarrer &lt;code&gt;ssh-agent.exe&lt;/code&gt; puis utiliser &lt;code&gt;ssh-add.exe&lt;/code&gt;&lt;/li&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Pour se connecter&amp;nbsp;&lt;sup&gt;&lt;a href="https://devcenter.heroku.com/articles/authentication"&gt;doc&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;heroku login&lt;/pre&gt;

&lt;/div&gt;

</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Use "json-schema-validator" as an OSGi bundle</title><link>http://curiositedevie.blogspot.com/2014/08/use-json-schema-validator-as-osgi-bundle.html</link><category>bundle</category><category>export-package</category><category>integration</category><category>json</category><category>json-schema-validator</category><category>osgi</category><category>validator</category><author>noreply@blogger.com (Unknown)</author><pubDate>Tue, 12 Aug 2014 11:38:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-4878246475903498978</guid><description>&lt;p&gt;
Hello&lt;br/&gt;
&lt;br/&gt;
 This post describes how to integrate json-schema-validator 2.2.5 in an OSGi container.&lt;br/&gt;
 &lt;br/&gt;
 &lt;a href="https://github.com/fge/json-schema-validator"&gt;json-schema-validator home page&lt;/a&gt; redirect to the &lt;a href="https://bintray.com/fge/maven/json-schema-validator/view"&gt;binary download site&lt;/a&gt; to get OSGi ready library. But with this last one I was unable to make json-schema-validator working... I got an unsatisfied package jackson-databind.&lt;br/&gt;
 &lt;br/&gt;
 So I decide to integrate by hand json-schema-validator and related dependencies. 14 jar to get and check (see into the MANIFEST.MF the "Export-Packages" directive..)&lt;br/&gt;
&lt;br/&gt;
 Here is the way :&lt;br/&gt;
&lt;ul&gt;
 &lt;li&gt; use json-schema-validator in your Eclipse Java project by adding the pom dependency.&lt;/li&gt;
 &lt;li&gt; make a sample unit test working (see example package of the json-schema-validator project).&lt;/li&gt;
 &lt;li&gt; open your project "pom.xml" file using eclipse to know the current dependency tree (view called "Dependency Hierarchy").&lt;/li&gt;
&lt;/ul&gt;
&lt;br/&gt;
 After getting one-by-one each mandatory dependendency of the json validator, here is the final list I get :&lt;br/&gt;
&lt;ul&gt;
 &lt;li&gt; btf-1.2.jar&lt;/li&gt;
 &lt;li&gt; jackson-annotations-2.4.1.jar&lt;/li&gt;
 &lt;li&gt; jackson-core-2.4.1.1.jar&lt;/li&gt;
 &lt;li&gt; msg-simple-1.1.jar&lt;/li&gt;
 &lt;li&gt; jackson-databind-2.4.1.3.jar&lt;/li&gt;
 &lt;li&gt; guava-16.0.1.jar&lt;/li&gt;
 &lt;li&gt; uri-template-0.9.jar&lt;/li&gt;
 &lt;li&gt; jackson-coreutils-1.8.jar&lt;/li&gt;
 &lt;li&gt; rhino-1.7R4.jar&lt;/li&gt;
 &lt;li&gt; libphonenumber-6.0.jar&lt;/li&gt;
 &lt;li&gt; mailapi-1.4.3.jar&lt;/li&gt;
 &lt;li&gt; jopt-simple-4.6.jar&lt;/li&gt;
 &lt;li&gt; joda-time-2.3.jar&lt;/li&gt;
 &lt;li&gt; json-schema-core-1.2.4.jar&lt;/li&gt;
 &lt;li&gt; json-schema-validator-2.2.5.jar&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
You can get each jar from a given maven repository; example &lt;a href="http://repo1.maven.org/maven2/joda-time/joda-time/2.3/"&gt;joda-time-2.3.jar&lt;/a&gt;.&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;
For each jar, I have to check the OSGi Export package directive. Here is the way to do that :
&lt;ul&gt;
 &lt;li&gt; open the jar file using zip tool (ex. 7zip)&lt;/li&gt;
 &lt;li&gt; edit the file "META-INF/MANIFEST.MF"&lt;/li&gt;
 &lt;li&gt; check that the file contains an Export package directive like the following example for yoda time :&lt;/li&gt;
&lt;pre&gt;
Export-Package: org.joda.time;version=2.3,org.joda.time.base;version=2
 .3,org.joda.time.chrono;version=2.3,org.joda.time.convert;version=2.3
 ,org.joda.time.field;version=2.3,org.joda.time.format;version=2.3,org
 .joda.time.tz;version=2.3
&lt;/pre&gt;
&lt;/li&gt;
 &lt;li&gt; If this is not the case, I had to add it by hand. I had to do that for the following library : rhino, libphonenumbers, joptsimple. See under the related export package :&lt;br/&gt;
  &lt;ul&gt;
  &lt;li&gt; &lt;b&gt;rhino-1.7R4.jar&lt;/b&gt;
  &lt;li&gt; get an updated version &lt;a href="https://github.com/boly38/json-schema-validator-bundle/raw/master/updated_deps/rhino-1.7R4.jar"&gt;here&lt;/a&gt;&lt;/li&gt;
&lt;pre&gt;
Export-Package: org.mozilla.javascript;version="1.7"
&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt; &lt;b&gt;libphonenumber-6.0.jar&lt;/b&gt;
  &lt;li&gt; EDIT: it's now useless to do this update since this jar is embedded in the bundle's project (cf. under)&lt;/li&gt;
  &lt;li&gt; related issue : &lt;a href="https://code.google.com/p/libphonenumber/issues/detail?id=205"&gt;code.google.com libphonenumber issue #205&lt;/a&gt;&lt;/li&gt;
&lt;pre&gt; 
Export-Package: com.google.i18n.phonenumbers;version="6.0"
&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt; &lt;b&gt;joptsimple&lt;/b&gt;
&lt;pre&gt;
Export-Package: joptsimple;version="4.6"
&lt;/pre&gt;
  &lt;/li&gt;
  &lt;li&gt;EDIT: it's now useless to do this update since &lt;a href="https://github.com/pholser/jopt-simple/issues/65"&gt;issue #65&lt;/a&gt; has been fixed; So you could use a recent version : &lt;code&gt;jopt-simple-4.8-SNAPSHOT.jar&lt;/code&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;

&lt;p&gt;
After all these steps, when I want to validate a json content with a schema, I got an error while loading meta-schema "/draftv4/schema" (problem of class loading). &lt;br/&gt;
Until now, I have not figured out how to fix it.

&lt;pre&gt;
java.lang.ExceptionInInitializerError
        at com.github.fge.jsonschema.SchemaVersion.&lt;init&gt;(SchemaVersion.java:65)
        at com.github.fge.jsonschema.SchemaVersion.&lt;clinit&gt;(SchemaVersion.java:44)
        at com.github.fge.jsonschema.core.load.configuration.LoadingConfigurationBuilder.&lt;init&gt;(LoadingConfigurationBuilder.java:
17)
        at com.github.fge.jsonschema.core.load.configuration.LoadingConfiguration.byDefault(LoadingConfiguration.java:151)
(...)
Caused by: java.io.IOException: resource /draftv4/schema not found
        at com.github.fge.jackson.JsonLoader.fromResource(JsonLoader.java:91)
        at com.github.fge.jsonschema.SchemaVersion.&lt;init&gt;(SchemaVersion.java:63)
&lt;/pre&gt;

This file is present into "json-schema-core-1.2.4.jar" but not loaded as resource by OSGi container...
&lt;/p&gt;
&lt;p&gt;
Following this error, I just open an issue &lt;a href="https://github.com/fge/json-schema-validator/issues/111"&gt;json-schema-validator issue #111&lt;/a&gt;.&lt;br/&gt;
&lt;br/&gt;
As workaround, with the help of Gábor Bakos and as first draft, I just push a "OSGi'fyed" version of the "json-schema-validator" here : &lt;a href="https://github.com/boly38/json-schema-validator-bundle"&gt;github.com boly38 json-schema-validator-bundle&lt;/a&gt;.&lt;br/&gt;
&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Of course any feedbacks are welcome&lt;/i&gt;&lt;/p&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure length="1134824" type="application/octet-stream" url="https://github.com/boly38/json-schema-validator-bundle/raw/master/updated_deps/rhino-1.7R4.jar"/><itunes:explicit/><itunes:subtitle>Hello This post describes how to integrate json-schema-validator 2.2.5 in an OSGi container. json-schema-validator home page redirect to the binary download site to get OSGi ready library. But with this last one I was unable to make json-schema-validator working... I got an unsatisfied package jackson-databind. So I decide to integrate by hand json-schema-validator and related dependencies. 14 jar to get and check (see into the MANIFEST.MF the "Export-Packages" directive..) Here is the way : use json-schema-validator in your Eclipse Java project by adding the pom dependency. make a sample unit test working (see example package of the json-schema-validator project). open your project "pom.xml" file using eclipse to know the current dependency tree (view called "Dependency Hierarchy"). After getting one-by-one each mandatory dependendency of the json validator, here is the final list I get : btf-1.2.jar jackson-annotations-2.4.1.jar jackson-core-2.4.1.1.jar msg-simple-1.1.jar jackson-databind-2.4.1.3.jar guava-16.0.1.jar uri-template-0.9.jar jackson-coreutils-1.8.jar rhino-1.7R4.jar libphonenumber-6.0.jar mailapi-1.4.3.jar jopt-simple-4.6.jar joda-time-2.3.jar json-schema-core-1.2.4.jar json-schema-validator-2.2.5.jar You can get each jar from a given maven repository; example joda-time-2.3.jar. For each jar, I have to check the OSGi Export package directive. Here is the way to do that : open the jar file using zip tool (ex. 7zip) edit the file "META-INF/MANIFEST.MF" check that the file contains an Export package directive like the following example for yoda time : Export-Package: org.joda.time;version=2.3,org.joda.time.base;version=2 .3,org.joda.time.chrono;version=2.3,org.joda.time.convert;version=2.3 ,org.joda.time.field;version=2.3,org.joda.time.format;version=2.3,org .joda.time.tz;version=2.3 If this is not the case, I had to add it by hand. I had to do that for the following library : rhino, libphonenumbers, joptsimple. See under the related export package : rhino-1.7R4.jar get an updated version here Export-Package: org.mozilla.javascript;version="1.7" libphonenumber-6.0.jar EDIT: it's now useless to do this update since this jar is embedded in the bundle's project (cf. under) related issue : code.google.com libphonenumber issue #205 Export-Package: com.google.i18n.phonenumbers;version="6.0" joptsimple Export-Package: joptsimple;version="4.6" EDIT: it's now useless to do this update since issue #65 has been fixed; So you could use a recent version : jopt-simple-4.8-SNAPSHOT.jar After all these steps, when I want to validate a json content with a schema, I got an error while loading meta-schema "/draftv4/schema" (problem of class loading). Until now, I have not figured out how to fix it. java.lang.ExceptionInInitializerError at com.github.fge.jsonschema.SchemaVersion.(SchemaVersion.java:65) at com.github.fge.jsonschema.SchemaVersion.(SchemaVersion.java:44) at com.github.fge.jsonschema.core.load.configuration.LoadingConfigurationBuilder.(LoadingConfigurationBuilder.java: 17) at com.github.fge.jsonschema.core.load.configuration.LoadingConfiguration.byDefault(LoadingConfiguration.java:151) (...) Caused by: java.io.IOException: resource /draftv4/schema not found at com.github.fge.jackson.JsonLoader.fromResource(JsonLoader.java:91) at com.github.fge.jsonschema.SchemaVersion.(SchemaVersion.java:63) This file is present into "json-schema-core-1.2.4.jar" but not loaded as resource by OSGi container... Following this error, I just open an issue json-schema-validator issue #111. As workaround, with the help of Gábor Bakos and as first draft, I just push a "OSGi'fyed" version of the "json-schema-validator" here : github.com boly38 json-schema-validator-bundle. Of course any feedbacks are welcome</itunes:subtitle><itunes:author>noreply@blogger.com (Unknown)</itunes:author><itunes:summary>Hello This post describes how to integrate json-schema-validator 2.2.5 in an OSGi container. json-schema-validator home page redirect to the binary download site to get OSGi ready library. But with this last one I was unable to make json-schema-validator working... I got an unsatisfied package jackson-databind. So I decide to integrate by hand json-schema-validator and related dependencies. 14 jar to get and check (see into the MANIFEST.MF the "Export-Packages" directive..) Here is the way : use json-schema-validator in your Eclipse Java project by adding the pom dependency. make a sample unit test working (see example package of the json-schema-validator project). open your project "pom.xml" file using eclipse to know the current dependency tree (view called "Dependency Hierarchy"). After getting one-by-one each mandatory dependendency of the json validator, here is the final list I get : btf-1.2.jar jackson-annotations-2.4.1.jar jackson-core-2.4.1.1.jar msg-simple-1.1.jar jackson-databind-2.4.1.3.jar guava-16.0.1.jar uri-template-0.9.jar jackson-coreutils-1.8.jar rhino-1.7R4.jar libphonenumber-6.0.jar mailapi-1.4.3.jar jopt-simple-4.6.jar joda-time-2.3.jar json-schema-core-1.2.4.jar json-schema-validator-2.2.5.jar You can get each jar from a given maven repository; example joda-time-2.3.jar. For each jar, I have to check the OSGi Export package directive. Here is the way to do that : open the jar file using zip tool (ex. 7zip) edit the file "META-INF/MANIFEST.MF" check that the file contains an Export package directive like the following example for yoda time : Export-Package: org.joda.time;version=2.3,org.joda.time.base;version=2 .3,org.joda.time.chrono;version=2.3,org.joda.time.convert;version=2.3 ,org.joda.time.field;version=2.3,org.joda.time.format;version=2.3,org .joda.time.tz;version=2.3 If this is not the case, I had to add it by hand. I had to do that for the following library : rhino, libphonenumbers, joptsimple. See under the related export package : rhino-1.7R4.jar get an updated version here Export-Package: org.mozilla.javascript;version="1.7" libphonenumber-6.0.jar EDIT: it's now useless to do this update since this jar is embedded in the bundle's project (cf. under) related issue : code.google.com libphonenumber issue #205 Export-Package: com.google.i18n.phonenumbers;version="6.0" joptsimple Export-Package: joptsimple;version="4.6" EDIT: it's now useless to do this update since issue #65 has been fixed; So you could use a recent version : jopt-simple-4.8-SNAPSHOT.jar After all these steps, when I want to validate a json content with a schema, I got an error while loading meta-schema "/draftv4/schema" (problem of class loading). Until now, I have not figured out how to fix it. java.lang.ExceptionInInitializerError at com.github.fge.jsonschema.SchemaVersion.(SchemaVersion.java:65) at com.github.fge.jsonschema.SchemaVersion.(SchemaVersion.java:44) at com.github.fge.jsonschema.core.load.configuration.LoadingConfigurationBuilder.(LoadingConfigurationBuilder.java: 17) at com.github.fge.jsonschema.core.load.configuration.LoadingConfiguration.byDefault(LoadingConfiguration.java:151) (...) Caused by: java.io.IOException: resource /draftv4/schema not found at com.github.fge.jackson.JsonLoader.fromResource(JsonLoader.java:91) at com.github.fge.jsonschema.SchemaVersion.(SchemaVersion.java:63) This file is present into "json-schema-core-1.2.4.jar" but not loaded as resource by OSGi container... Following this error, I just open an issue json-schema-validator issue #111. As workaround, with the help of Gábor Bakos and as first draft, I just push a "OSGi'fyed" version of the "json-schema-validator" here : github.com boly38 json-schema-validator-bundle. Of course any feedbacks are welcome</itunes:summary><itunes:keywords>bundle, export-package, integration, json, json-schema-validator, osgi, validator</itunes:keywords></item><item><title>gem : fiche pratique</title><link>http://curiositedevie.blogspot.com/2013/08/gem-fiche-pratique.html</link><category>fiche</category><category>gem</category><category>ruby</category><category>rubygems</category><category>shell</category><author>noreply@blogger.com (Unknown)</author><pubDate>Thu, 22 Aug 2013 15:14:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-5909252922222135569</guid><description>Cet article est une fiche pratique pour &lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/RubyGems"&gt;gem&lt;/a&gt;&lt;/b&gt; &lt;i&gt;(alias RubyGems)&lt;/i&gt;.&lt;br /&gt;
&lt;h4&gt;
Commandes de base&lt;/h4&gt;
&lt;div&gt;

&lt;ul&gt;
&lt;li&gt;Afficher l'environnement&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;gem environment&lt;/pre&gt;
&lt;br /&gt;

&lt;ul&gt;
&lt;li&gt;Lister les gem installés&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;gem list&lt;/pre&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;gem q --L&lt;/pre&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;gem query --local&lt;/pre&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;installer le gem "json en version 1.4.6&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;gem install json -v '1.4.6'&lt;/pre&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Désinstaller le gem json&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;gem uninstall json&lt;/pre&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Lister les gems disponibles&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;gem list --remote&lt;/pre&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Rechercher un gem comportant "sdk"&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;gem search "*sdk" --remote&lt;/pre&gt;
&lt;br /&gt;

&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Ressources utiles : &lt;a href="https://www.ruby-toolbox.com/"&gt;ruby-toolbox.com&lt;/a&gt; : &lt;i&gt;recherche de gem et stats consolidées sur les gems (à partir des dépôts public et github)&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;br /&gt;
&lt;ul&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Créer une gem : un squelette avec un ensemble de fichier par defaut&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;
 gem install bundle
 bundle gem mongemmaison
 cat  mongemmaison/mongemmaison.gemspec
 cat  mongemmaison/bin/mongemmaison.rb
&lt;/pre&gt;
&lt;br /&gt;

&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>find : fiche pratique</title><link>http://curiositedevie.blogspot.com/2013/08/find-fiche-pratique.html</link><category>fiche</category><category>find</category><category>linux</category><category>shell</category><author>noreply@blogger.com (Unknown)</author><pubDate>Tue, 20 Aug 2013 14:01:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-1963492733458294239</guid><description>Cet article est une fiche pratique pour &lt;b&gt;&lt;a href="http://fr.wikipedia.org/wiki/Find"&gt;find&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;h4&gt;
Commandes de base&lt;/h4&gt;
&lt;div&gt;
&lt;ul style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.03333282470703px; list-style-type: square; margin: 0.3em 0px 0px 1.5em; padding: 0px;"&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Lister les fichiers comportant la chaîne "Tutu"&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;find . -type f -exec grep -l Tutu {} \;&lt;/pre&gt;
&lt;ul style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.03333282470703px; list-style-type: square; margin: 0.3em 0px 0px 1.5em; padding: 0px;"&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Lister les fichiers modifiés dans les 15 dernières minutes&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;find . -type f -mmin -15&lt;/pre&gt;
&lt;ul style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.03333282470703px; list-style-type: square; margin: 0.3em 0px 0px 1.5em; padding: 0px;"&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Lister les fichiers modifiés il y a moins de 1 jour (dans les dernières 24heures)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;find . -mtime -1&lt;/pre&gt;
&lt;ul style="background-color: white; font-family: sans-serif; font-size: 13px; line-height: 19.03333282470703px; list-style-type: square; margin: 0.3em 0px 0px 1.5em; padding: 0px;"&gt;
&lt;li style="margin-bottom: 0.1em;"&gt;Lister à partir de /usr les dossiers comportant 'maven' sans remonter les erreurs liées aux permissions refusées&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-color: #f9f9f9; border: 1px dashed rgb(47, 111, 171); line-height: 1.1em; padding: 1em;"&gt;find /usr -type d -name maven 2&amp;gt;&amp;amp;1 | grep -v 'Permission non accordée'&lt;/pre&gt;
&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>How to resize a VirtualBox Ubuntu vm hard drive</title><link>http://curiositedevie.blogspot.com/2013/08/how-to-resize-virtualbox-ubuntu-vm-hard.html</link><category>gparted</category><category>harddrive</category><category>howto</category><category>resize</category><category>ubuntu</category><category>virtualbox</category><author>noreply@blogger.com (Unknown)</author><pubDate>Fri, 9 Aug 2013 10:18:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-3787866318051963389</guid><description>&lt;h2&gt;
HowTo : resize ubuntu vm hard drive hosted on Virtual Box&lt;/h2&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6qgQEaI5uajWRc83L6rzjZRMaR84_2t6jsb5UIHG1SmcJMDcQSDCOZbeSvHuQ-W8n6ubhNoxsJziHInbMkAIEt00hLXKFO-oIDr1Snkob023IORbEbRD6Zw1ugFk5uykS1gjC8HWp7otL/s1600/UBUNTU_BVA_25G.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6qgQEaI5uajWRc83L6rzjZRMaR84_2t6jsb5UIHG1SmcJMDcQSDCOZbeSvHuQ-W8n6ubhNoxsJziHInbMkAIEt00hLXKFO-oIDr1Snkob023IORbEbRD6Zw1ugFk5uykS1gjC8HWp7otL/s320/UBUNTU_BVA_25G.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;
Pre-requisites&lt;/h3&gt;
on host (host is the computer having virtualbox) :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;VirtualBox version should be greater than 4.0.0&lt;/li&gt;
&lt;li&gt;you should have enough space to clone your VM and available space (using to extend your hard drive)&lt;/li&gt;
&lt;li&gt;you should have enought space to get gparted livecd (130Mo)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Step by step&lt;/h3&gt;
&lt;i&gt;original Ubuntu will be called "oU" and the clone "oUextended"&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;on oU menu halt ubuntu (or stop oU using VirtualBox)&lt;/li&gt;
&lt;li&gt;on virtualbox : right clic on oU, then (context menu) clone "oU"&amp;nbsp;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;name the clone "oUextended" (or wathever you want)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;on host under a shell : go under oUextended directory and use this command to extend for example to 25GB the hard drive :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre style="background-image: URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBHqT95LrtQJbKc7LBsyH4NJz1ik4e_bEqwZyjV2mQoMloZGZbI3WaW5Qf0wlSiTAIse9KtIRLVx8Guf7suCSmCWjOgP9o7X1zy9ahDRmZ0M3NwAeg85FCU43cizxamJVePu0A8hHDi93/s320/codebg.gif); background: #f0f0f0; border: 1px dashed #CCCCCC; color: black; font-family: arial; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"&gt;&lt;code style="color: black; word-wrap: normal;"&gt; c:\Users\myuser\VirtualBox VMs\UBUNTU_EXTENDED_25G&amp;gt;"c:\Program Files\Oracle\Virtual Box\VBoxManage.exe" modifyhd UBUNTU_EXTENDED_25G.vdi --resize 25625  
 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%  
&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;on virtualbox : oUextended/configuration you should show the hard drive size : 25G (==25625MB)&lt;/li&gt;
&lt;li&gt;on virtualbox : oUextended/configuration you should assert booting on CD before hard drive&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-G_bVuju2H7esUXGKC-F1McQNubg_jJAFcoPgysCKXXz2e1wT_YHHniufrhiHFJWYLzPrmUfW7PEAgcgtmJ5LPfLJb4nzgFWY10QyaN16LdAjR0y3OC1QZf-JRlGZKypJWAkrNPgVg8Em/s1600/StartOrder.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="58" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-G_bVuju2H7esUXGKC-F1McQNubg_jJAFcoPgysCKXXz2e1wT_YHHniufrhiHFJWYLzPrmUfW7PEAgcgtmJ5LPfLJb4nzgFWY10QyaN16LdAjR0y3OC1QZf-JRlGZKypJWAkrNPgVg8Em/s320/StartOrder.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;go to &lt;a href="http://gparted.sourceforge.net/download.php"&gt;http://gparted.sourceforge.net/download.php&lt;/a&gt; and download the last stable gparted ISO&lt;/li&gt;
&lt;li&gt;on virtualbox : oUextended/configuration/storage : add a CD and select gparted iso&lt;/li&gt;
&lt;li&gt;on virtualbox : start oUextended&lt;/li&gt;
&lt;li&gt;on oUextended : boot menu : select the first and default choice : "GParted Live"&lt;/li&gt;
&lt;li&gt;on oUextended : anwer gparted question (depending of your preferences) : eg. keyboard azerty / fr / PC Keyboard / 08 French / (0)&lt;/li&gt;
&lt;li&gt;on oUextended : select the parent ("extended") of the partition you would like to extend : right clic on it / resize / extend to the full free size&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdsBkBx1zAWUd0MsxA63qLGt8FwiVg9bc-JUBHElxtKWIp4dbUIfIgSlkn9JtYNmLO_DmTlZoV_Iq1Uwads0nioEk5AhBb6UWLfNLf-i2XRqS6f51E9PhDBPw7HwlkBmzHjFE9jNtqiiFG/s1600/UBUNTU_BVA_25G.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdsBkBx1zAWUd0MsxA63qLGt8FwiVg9bc-JUBHElxtKWIp4dbUIfIgSlkn9JtYNmLO_DmTlZoV_Iq1Uwads0nioEk5AhBb6UWLfNLf-i2XRqS6f51E9PhDBPw7HwlkBmzHjFE9jNtqiiFG/s320/UBUNTU_BVA_25G.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;on oUextended : the parent ("extended") of the partition should have 24Gio size&lt;/li&gt;
&lt;li&gt;on oUextended : select the partition you would like to extend : right clic on it / resize / extend to the full free size&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9jWwb2xz-9tT2_BoPJrtjEuaZKiIUTC0Wr4V6GRrp9QfhiMzWKMmmdq88hq93-5HGy1JbOcTjsx8GCaaOuaECe-chsA2SHZVFXEU-EvXI0LZrT7KhHVJ3vusqZptISm6Er02dVbq7KLve/s1600/UBUNTU_BVA_25G_after.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9jWwb2xz-9tT2_BoPJrtjEuaZKiIUTC0Wr4V6GRrp9QfhiMzWKMmmdq88hq93-5HGy1JbOcTjsx8GCaaOuaECe-chsA2SHZVFXEU-EvXI0LZrT7KhHVJ3vusqZptISm6Er02dVbq7KLve/s320/UBUNTU_BVA_25G_after.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;on oUextended : the partition should have 24Gio size&lt;/li&gt;
&lt;li&gt;on oUextended : clic on "Apply" / wait the operations to finish / clic "Close"&lt;/li&gt;
&lt;li&gt;on oUextended : clic on "Exit" on the gparted desktop; then select "shutdown" / enter&lt;/li&gt;
&lt;li&gt;on virtualbox : oUextended/configuration/storage : remove gparted iso CD (should be an empty CD)&lt;/li&gt;
&lt;li&gt;on virtualbox : start oUextended&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Assert the result on ubuntu xterm :&lt;/div&gt;
&lt;pre&gt;df -kh
&lt;/pre&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;h4&gt;
Resources&lt;/h4&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gparted.sourceforge.net/"&gt;gparted&lt;/a&gt;&amp;nbsp;: official website&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://doc.ubuntu-fr.org/gparted"&gt;gparted&lt;/a&gt; : gparted french ubuntu documentation&lt;/li&gt;
&lt;li&gt;&lt;a href="https://forums.virtualbox.org/viewtopic.php?p=33945#p33945"&gt;storage related question&lt;/a&gt; : virtualbox documentation&lt;/li&gt;
&lt;li&gt;&lt;a href="http://youtu.be/bQpyavUHVuU"&gt;a youtube video&lt;/a&gt; on how to resize VirtualBox hard drive&lt;/li&gt;
&lt;li&gt;&lt;a href="http://codeformatter.blogspot.fr/"&gt;codeformatter&lt;/a&gt; help me to format this article&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi6qgQEaI5uajWRc83L6rzjZRMaR84_2t6jsb5UIHG1SmcJMDcQSDCOZbeSvHuQ-W8n6ubhNoxsJziHInbMkAIEt00hLXKFO-oIDr1Snkob023IORbEbRD6Zw1ugFk5uykS1gjC8HWp7otL/s72-c/UBUNTU_BVA_25G.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Ajout d'un proxy au démarrage d'une instance OpenStack</title><link>http://curiositedevie.blogspot.com/2013/08/ajout-dun-proxy-au-demarrage-dune.html</link><category>bash</category><category>instance</category><category>openstack</category><category>proxies</category><category>proxy</category><category>shell</category><author>noreply@blogger.com (Unknown)</author><pubDate>Mon, 5 Aug 2013 17:50:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-2058906114233747429</guid><description>Pour compléter la configuration d'une instance OpenStack et ajouter un proxy voici ce que l'on peut faire.&lt;br /&gt;
&lt;br /&gt;
Au démarrage d'une instance il est possible d'ajouter un script personnalisé (&lt;i&gt;Customization Script&lt;/i&gt;). &lt;br /&gt;
Nous allons utiliser cette option pour :
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;vérifier que les paramètres de proxy sont correctement positionnés&lt;/li&gt;
&lt;li&gt;ajouter les paramètres de proxy s'ils sont absent&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Le script qui permet de faire ceci est décrit ci-dessous.&lt;br /&gt;
Il suffira de l'ajouter lors de la création d'une instance (dernier onglet) comme "&lt;i&gt;Customization Script&lt;/i&gt;" :
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoDKy3B6NjVDEQQB3eJOUrAstR0_XT3CN_Gw_w8cQG9rirZKYyl8w2Np7yQtLGJYT1QIaNxwbs7wHtrjdx_yygGr_5h6HmdKrrwysZUkD7F5ADzRcgxFTj3EMkTzo9kj7enKdgplI79mO-/s1600/OSCS.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="132" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoDKy3B6NjVDEQQB3eJOUrAstR0_XT3CN_Gw_w8cQG9rirZKYyl8w2Np7yQtLGJYT1QIaNxwbs7wHtrjdx_yygGr_5h6HmdKrrwysZUkD7F5ADzRcgxFTj3EMkTzo9kj7enKdgplI79mO-/s320/OSCS.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;#!/bin/bash
INSTANCE_USER=osadmin
PROFILE_SCRIPT=/home/$INSTANCE_USER/.bash_profile
PROXY_PRESENT=`grep http_proxy $PROFILE_SCRIPT | wc -l`
if [[ $PROXY_PRESENT == "1" ]]
 then
   echo "proxy present dans $PROFILE_SCRIPT"
 else
   echo "proxy absent de $PROFILE_SCRIPT ; on l'ajoute"
   echo "export http_proxy=proxy.mycompany.fr:8080" &amp;gt;&amp;gt; $PROFILE_SCRIPT
   echo "export https_proxy=proxy.mycompany.fr:8080" &amp;gt;&amp;gt; $PROFILE_SCRIPT
   echo "export no_proxy='127.0.0.1,localhost,169.254.169.254'" &amp;gt;&amp;gt; $PROFILE_SCRIPT
fi
&lt;/pre&gt;
&lt;br /&gt;
&lt;i&gt;&lt;u&gt;Explication du script :&lt;/u&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;PROFILE_SCRIPT comporte le nom du script profile joué à chaque connexion de l'utilisateur INSTANCE_USER.&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;PROXY_PRESENT permet de détecter si oui (1) ou non (0) ce fichier comporte déjà un paramétrage relatif à "http_proxy".&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Dans l'instruction conditionnelle suivante si ce n'est pas le cas&amp;nbsp;&lt;/i&gt;&lt;i&gt;(else : PROXY_PRESENT== "0"), on ajoute les export nécessaires et utiles pour positionner les proxies.&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est possible de constater l'exécution de ce script en affichant (via le portail OpenStack) les logs complets de l'instance&lt;br /&gt;
ou en tapant la commande suivante :&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;env|grep proxy
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoDKy3B6NjVDEQQB3eJOUrAstR0_XT3CN_Gw_w8cQG9rirZKYyl8w2Np7yQtLGJYT1QIaNxwbs7wHtrjdx_yygGr_5h6HmdKrrwysZUkD7F5ADzRcgxFTj3EMkTzo9kj7enKdgplI79mO-/s72-c/OSCS.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Cloud Foundry Ubuntu 12.04 quick start instance</title><link>http://curiositedevie.blogspot.com/2013/07/cloud-foundry-ubuntu-1204-quick-start.html</link><category>cf</category><category>client</category><category>cloudfoundry</category><category>proxy</category><category>ubuntu</category><author>noreply@blogger.com (Unknown)</author><pubDate>Tue, 2 Jul 2013 17:42:00 +0200</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-2610825294716456148.post-3867892370429176731</guid><description>&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Here is a instance on how to setup CloudFoundry client using Ubuntu (even behind a proxy).

&lt;/b&gt;&lt;br /&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;
references&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;install source documentation : &lt;a href="http://docs.cloudfoundry.com/docs/dotcom/getting-started.html#install-cf"&gt;getting-started.html#install-cf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
CF install without using proxy&lt;/h2&gt;
(pretty simple) this should work :&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt; sudo apt-get install ruby rubygems
 sudo gem install cf --no-ri --no-rdoc
 cf target api.run.pivotal.io
&lt;/pre&gt;
&lt;h2&gt;
CF install behind a proxy&lt;/h2&gt;
Behind a proxy it seems like there is a problem into CF scripts. &lt;br /&gt;
first we need to use ruby version 2 (wich is not the default ruby version).&lt;br /&gt;
and then we must patch an url validation step&lt;br /&gt;
&lt;br /&gt;
So first we will use rvm (ruby version managment).&lt;br /&gt;
&lt;br /&gt;
(to avoid) avoid using default ruby-rvm package (&lt;code&gt;sudo apt-get remove ruby-rvm&lt;/code&gt;)&lt;br /&gt;
(optionnal) clean previous install :&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt; sudo gem uninstall cf
 sudo apt-get remove rubygems ruby ruby-rvm
&lt;/pre&gt;
(optionnal) to avoid ruby doc task (&lt;sup&gt;&lt;a href="http://blog.coolaj86.com/articles/installing-ruby-on-ubuntu-12-04.html%20src"&gt;src&lt;/a&gt;&lt;/sup&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;  echo 'gem: --no-rdoc --no-ri' &amp;gt;&amp;gt; ~/.gemrc
&lt;/pre&gt;
&lt;br /&gt;
&lt;h3&gt;
RVM installation&lt;/h3&gt;
RVM : Ruby Version Manager (src: &lt;a href="https://rvm.io/rvm/install"&gt;https://rvm.io/rvm/install&lt;/a&gt;)
&lt;br /&gt;
&lt;pre&gt; curl -L https://get.rvm.io | bash -s stable --auto-dotfiles
&lt;/pre&gt;
in case of error ("curl returned status '22'.") try it one more time..&lt;br /&gt;
next steps:
&lt;br /&gt;
&lt;pre&gt; . .bashrc
 rvm reload
 rvm install 2.0.0
&lt;/pre&gt;
Ensure running terminal as login shell : cf. &lt;a href="https://rvm.io/integration/gnome-terminal"&gt;https://rvm.io/integration/gnome-terminal&lt;/a&gt;&lt;br /&gt;
then selecte 2.0.0 version :&lt;br /&gt;
&lt;pre&gt; rvm use 2.0.0
 rvm --default use 2.0.0
 $ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [i686-linux]
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
CF install using gems&lt;/h3&gt;
&lt;pre&gt; sudo apt-get install rubygems
 gem install cf
&lt;/pre&gt;
&lt;br /&gt;
&lt;h3&gt;
patch CF to use proxy&lt;/h3&gt;
To launch cf behind proxy, set http_prxy env var; example :
&lt;br /&gt;
&lt;pre&gt; export http_proxy=myproxy.foo:3128
&lt;/pre&gt;
Try to target cf :&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt; cf target api.run.pivotal.io
  # with stack trace :
  cf -t --debug target api.run.pivotal.io
&lt;/pre&gt;
In version 3; we are facing the following error :

&lt;br /&gt;
&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;;background-image:URL(https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoBHqT95LrtQJbKc7LBsyH4NJz1ik4e_bEqwZyjV2mQoMloZGZbI3WaW5Qf0wlSiTAIse9KtIRLVx8Guf7suCSmCWjOgP9o7X1zy9ahDRmZ0M3NwAeg85FCU43cizxamJVePu0A8hHDi93/s320/codebg.gif);padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; Errno::ETIMEDOUT: Connection timed out - connect(2)  
 For more information, see ~/.cf/crash  
 /home/myuser/.rvm/gems/ruby-2.0.0-p247/gems/cf-3.0.0/lib/cf/cli.rb:288:in `initialize': Connection timed out - connect(2) (Errno::ETIMEDOUT)  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/gems/cf-3.0.0/lib/cf/cli.rb:288:in `new'  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/gems/cf-3.0.0/lib/cf/cli.rb:288:in `sane_target_url'  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/gems/cf-3.0.0/lib/cf/cli.rb:309:in `client_target'  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/gems/cf-3.0.0/lib/cf/cli.rb:377:in `client'  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/gems/cf-3.0.0/lib/cf/cli.rb:163:in `save_token_if_it_changes'  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/gems/cf-3.0.0/lib/cf/cli.rb:155:in `block in execute'  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/gems/cf-3.0.0/lib/cf/cli.rb:101:in `wrap_errors'  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/gems/cf-3.0.0/lib/cf/cli.rb:151:in `execute'  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/gems/mothership-0.5.1/lib/mothership.rb:45:in `start'  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/gems/cf-3.0.0/bin/cf:13:in `&amp;lt;top required=""&amp;gt;'  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/bin/cf:23:in `load'  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/bin/cf:23:in `&amp;lt;main&amp;gt;'  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval'  
     from /home/myuser/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `&amp;lt;main&amp;gt;'  
&lt;/code&gt;&lt;/pre&gt;
We should patch &lt;code&gt;cli.rb&lt;/code&gt; script wich doesn't use proxy to validate url &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;  vi /home/myuser/.rvm/gems/ruby-2.0.0-p247/gems/cf-3.0.0/lib/cf/cli.rb
  /sane_target_url
&lt;/pre&gt;
comment the following line 288 :&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;  #          TCPSocket.new(url, Net::HTTP.https_default_port)
&lt;/pre&gt;
then try it again :&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;  export http_proxy=myproxy.foo:3128
  cf target api.run.pivotal.io
&lt;/pre&gt;
this should work now! &lt;br /&gt;
&lt;br /&gt;
Nb: discussion is always in progress on the push command : &lt;a href="https://groups.google.com/a/cloudfoundry.org/forum/#!topic/vcap-dev/2hyjsfQOEjQ"&gt;discussion&lt;/a&gt; an an issue has been submitted &lt;a href="https://github.com/cloudfoundry/cf/issues/20"&gt;cf issue#20&lt;/a&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item></channel></rss>