Archive pour la catégorie ‘Non classé’

Jouer avec Sia

Vendredi 8 décembre 2017

Cet article n’est pas terminer faute de temps, mais je le publie pour tracer quelques étapes.

Sia est un système de stockage de donnée basé sur la technologie blockchain. Comme pour les bitcoins la technologie blockchain permet d’avoir un système décentralisé et auto-réguler car à la preuve de travail. Les créateurs Sia ont appliquer ce principe pour l’hébergement de fichiers, vos fichiers sont chiffrés puis hebergé sur des serveurs un peu partout dans le monde. Impossibité au propriétaire des serveurs de lire le contenu de vos données et réplication automatique.

Comment cela fonctionne ?
On prend une suite de données, on applique un algorithme qui permet de générer un nombre qui est une signature des données d’entrées, hash en anglais. La moindre modification dans les données change cette signature. Des ordinateurs se met d’accord pour les données d’entrée et vont calculé ce hash. Mais pour rajouté du « travail » on vas leur demander de rajouter des données pour que ce hash commence par exemple par trois zéros. Pas d’autre solution que de tester toutes les possibilités, on vas donc faire tourné en boucle jusqu’a trouvé la solution. Lors qu’un ordinateur trouve cette solution il la partage et par la même occasion il se voit récompensé. Cet recherche de solution se nomme le minage, et permet de validé un bloque de données. Une astuce supplémentaire est utilisé pour transformé ce principe en blockchain, le début d’un bloque possède le hash du block précédant, et donc chaque bloque valide le précédant et toute la chaine par la même.

Étape 1: Achat de Bitcoin
Bien que Sia utilise sa propre monnaie, on ne peut en récupérer directement des Siacoins. Donc il va falloir acheter des Bitcoins, et la tache n’est pas si facile. Donc après quelque hésitation je me suis enregistrer sur le site paymium.com, je n’ai aucune action chez eux, mais il semblerai qu’il soit sérieux et Français. Il faut donc créer un compte puis faire un versement depuis sont compte bancaire vers leur numéro de compte. Aller dans votre compte puis Alimenter votre compte Euros. Attention le virement interbancaire peut prendre plusieurs jours, normalement 24 heures.

Étape 2: Transfere vers Poloniex
Maintenant que vous avais quelques centimes de Bitcoin, vous pouvais acheter des Siacoins. Il va falloir s’incrire sur le site poloniex.com. Puis dans le Menu Balances > Deposits & Withdrawals, selectionner BTC (Bitcoin) et cliquer sur deposit.

Avec cette adresse ont peut faire le virement depuis paymium.com, donc retourner sur votre compte. Et dans le menu Retirer des Bitcoins entrer la quantité et l’adresse précédemment obtenu. Et la encore il va falloir attendre quelques heures pour que le virement soit effectué.

Étape 3: Vérification de la transaction (optionnel)
L’avantage des transferts Bitcoins c’est que l’on peut suivre en temps réel les versements effectuer, pour cela vous pouvez vous rendre sur le site blockchain.info pour entrer votre adresse Bitcoin et vérifier si le versement a était effectué.

Étape 4: Achats de Siacoin
Enfiler votre costume de trader vous aller acheter au meilleur taux des Siacoin. Aller sur le site Poloniex avec votre compte et dans Exchange selectionner siacoin, puis dans le carré Buy SC, entrer le montant de Siacoin que vous voulez/pouvez vos payer.

Étape 5: Installation de Sia Host
Alors tous est assez bien expliquer sur leur blog pour l’installation. Je vais donc rapidement vous montrer les etapes.

  • Télécharger la version qui vous correspond https://github.com/NebulousLabs/Sia/releases
  • Lancer siad -M gctwh, attention il vas creer des répertoire dans le répertoire de lancement
  • Dans un autre terminal lancer ./siac pour verifier qu’il communique bien avec le daemon
  • Puis siac wallet init, pour creer un portefeuille
  • Puis siac wallet unlock, copier tout les mots qui sont le mot de passe de votre portefeuille et les garder secret
  • siac wallet address, pour creer une addrese et la garder pour la prochaine etape

Étape 6: Versement de vos Siacoin

ouverture des ports
iptables -A INPUT -p tcp --dport 9981 -j ACCEPT
iptables -A INPUT -p tcp --dport 9982 -j ACCEPT

Verification http://www.yougetsignal.com/tools/open-ports/

Vérifier que le serveur est syncronisé

rsync@synapse:~/sia/Sia-v1.1.2-linux-amd64$ ~/go/bin/siac consensus
Synced: No
Height: 96806
Progress (estimated): 99%
rsync@synapse:~/sia/Sia-v1.1.2-linux-amd64$ ~/go/bin/siac consensus
Synced: Yes
Block: 00000000000002dac0fb3adab6dab1e01d153d9146e9fc520d446aff419dddb7
Height: 98542
Target: [0 0 0 0 0 0 3 101 34 116 191 27 69 16 200 189 140 3 48 223 152 198 246 71 221 13 175 49 243 23 188 3]
rsync@synapse:~/sia/Sia-v1.1.2-linux-amd64$ ~/go/bin/siac wallet balance
Wallet status:
Encrypted, Unlocked
Confirmed Balance: 70 SC
Unconfirmed Delta: +0 H
Exact: 70000000000000000000000000 H
Siafunds: 0 SF
Siafund Claims: 0 H

Metre le serveur a disposition

rsync@synapse:~/sia/Sia-v1.1.2-linux-amd64$ ~/go/bin/siac host announce
Host announcement submitted to network.

The host has also been configured to accept contracts.
To revert this, run:
siac host config acceptingcontracts false

Vérifier que le serveur est disponible

http://siapulse.com/page/network

De l’utilisation de vstest.console.exe avec des tests ordonnés

Mercredi 28 janvier 2015

D’apres Microst MSTest est devenu obsolete, son remplassant vstest.console.exe, mais comme la doc de Microsost se limite a quelque ligne voici comment lancé des orderedtest en ligne de commande
Pour creer un fichier orderedtest dans visual studio, click droit sur Projet puis Add > Ordered Test

vstest.console.exe UnitTestProject\OrderedTest1.orderedtest /logger:trx /Settings:local.testsettings

Nginx dokuwiki configuration

Mardi 23 décembre 2014

Voici un extrait de configuration de nginx pour dokuwiki, tournant sur ma raspberry. Attention ne pas activer l’édition pour les anonymes car des bots remplace vos contenu, et si rien est fait tout est supprimer après 7 jours.
server {
listen *:80;
server_name wiki alias wiki.example.org;
root /var/www/dokuwiki/;
index index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass php;
}
location ~ /(data|conf|bin|inc) {
deny all;
}
}

Nmap sans nmap

Mardi 17 décembre 2013

Vous voici sous un systeme linux mais la commande nmap n’est pas presente. Comment faire un broadcast de tous les appareils prensent sur le reseau. Voici un petit script qui fait le le travail.
#!/bin/bash
n='192.168.0.'
for i in {1..254}
do
printf "\rCheck $n$i"
ping -c 1 $n$i > /dev/null
if [ $? -ne 1 ]; then
printf "\r$n$i OK \n"
fi
done
echo "Done"

Création d’un chroot avec busybox

Mercredi 11 juillet 2012

Faire un chroot est une sorte de mini système à l’intérieur d’un autre. Pour cela on peut utilisé Busybox qui contient presque tous les outils d’un système standard.

La premiere étape consite à télécharger busybox puis de le compiler, c’est etape est assez facile je ne la décrirer pas ici.

On creer le repertoire ou l’on va installer le sous-systeme: mkdir /mnt/chroot. Copier busybox dans /mnt/chroot/sbin.

Busybox peut avoir des dependance sur des library pour savoir lequelles faite ldd busybox puis copier les lib dans /mnt/chroot/lib.

Pour lancer ce nouveau systeme, sudo chroot /mnt/chroot/ /sbin/busybox ash. Cela lance le terminal, il faut maintenant installer busybox, et creer les repertoires /bin /usr/bin /usr/sbin. Puis taper: /sbin/busybox –isntall -s /sbin

Vous voila avec un système un peu vide mais quand même fonctionnelle.

Linux convertion WMA en MP3

Mardi 17 avril 2012

J’ai une petite liste de fichier MP3 que j’essaie d’assainir des méchants fichier WMA. Et voila j’ai touvé la solution pour convertir toutes les fichiers WMA de ma bibliothèque, grace à FFMPEG:

find . -name *.wma -execdir ffmpeg -i {} -ab 128k -threads 0 -map_meta_data 0:0 {}.mp3 \;

Placé vous à la racine de votre répertoire racine, et la commande va scanner tous les wma les convertir avec un encodage en 128k, elle permet aussi de conserver les tags des fichiers wma. L’option thread 0 permet d’utiliser tous les processeurs de votre machine pour accélérer le traitement.

Génération bytecode Java

Samedi 5 mars 2011

Je suis tombé sur ce pdf qui parle de génération de code binaire Java. Pour cela on utilise la librarie Java Asm.

On débute en écrivant une class Foo :

[sourcecode language="java"]
class Foo {
public static double evaluate(double x) {
return ( Math.sin(x) + ( x / 3.0) );
}
}[/sourcecode]

On compile :

javac Foo.java

Puis pour afficher le bytecode généré par Java:

javap -c Foo

[sourcecode language="java"]
Compiled from "Foo.java"
class Foo extends java.lang.Object{
Foo();
Code:
0:    aload_0
1:    invokespecial    #1; //Method java/lang/Object."<init>":()V
4:    return
public static double evaluate(double);
Code:
0:    dload_0
1:    invokestatic    #2; //Method java/lang/Math.sin:(D)D
4:    dload_0
5:    ldc2_w    #3; //double 3.0d
8:    ddiv
9:    dadd
10:    dreturn
}[/sourcecode]

Bon pour plus d’information sur ce code générer le pdf le décrit très bien. Maintenant il nous faut installer la librarie ASM, sous linux la commande il suffit de taper:

sudo apt-get install libasm-java

On écrit la classe pour générer le code dynamiquement:

[sourcecode language="java"]import java.io.*;
import java.util.*;

import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.*;

public class Asm
{
public static void main(String args[])
{
try {
File file = new File("Toto.class");
FileOutputStream fos = new FileOutputStream(file);
ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);

cw.visit(Opcodes.V1_5, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, "Toto", null,
"java/lang/Object", new String[]{});

MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC,"evaluate", "(D)D", null, null);
mv.visitCode();
mv.visitVarInsn(Opcodes.DLOAD, 0);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Math", "sin", "(D)D");
mv.visitVarInsn(Opcodes.DLOAD, 0);
mv.visitLdcInsn(new Double("3.0"));
mv.visitInsn(Opcodes.DDIV);
mv.visitInsn(Opcodes.DADD);
mv.visitInsn(Opcodes.DRETURN);
mv.visitMaxs(6, 2);
mv.visitEnd();
fos.write( cw.toByteArray() );
fos.close();
System.out.println("Generate…");
} catch ( IOException ex )
{
System.out.println( ex.toString() );
}
}
}[/sourcecode]

On compile, en spécifiant l’emplacement d’installation de la librairie.

export CLASSPATH=.:.:/usr/lib/eclipse/plugins/org.objectweb.asm_3.2.0.jar
javac Asm.java
java Asm
java
javap -c Toto

La classe Toto a etait generé correctement, et maintenant on peut l’utiliser:

[sourcecode language="java"]public class Bar
{
public static void main(String args[])
{
System.out.println("Out evaluate : " + Toto.evaluate(1.2) );
}
}[/sourcecode]

Puis, on compile et on exécute et on extasie comment sa marche bien !

javac Bar.java
java Bar
Out evaluate : 1.3320390859672262

Nouveau tableau de comparaison des netbooks

Lundi 29 décembre 2008

Adobe® AIR : Adobe Integrated Runtime

Jeudi 21 février 2008

Anciennement appelé Adobe Apollo, Adobe® AIR est un framework de développement application internet riche. Plus simplement AIR permet de créer des applications qui utilise les langages utilisé par le Web ( HTML, Javascript, Ajax, …) et aussi bien sur du Flash ou Flex. Donc après cette présentation, réalisons un programme HelloWorld.

  1. Téléchargement du Adobe® AIR™ SDK, extraire le contenu du ZIP dans un réperoire (c:\program files\AIR).
  2. Dans ce repertoire creer un fichier HelloWorld-app.xml et copier ce contenu :
    <?xml version="1.0" encoding="UTF-8"?>
    <application xmlns="http://ns.adobe.com/air/application/1.0.M6">
    <id>examples.html.HelloWorld</id>
    <version>0.1</version>
    <filename>HelloWorld</filename>
    <initialWindow>
    <content>HelloWorld.html</content>
    <visible>true</visible>
    <width>400</width>
    <height>200</height>
    </initialWindow>
    </application>
  3. Creer un autre fichier HelloWorld.html avec ce contenu
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
    <html>
    <head>
    <title>Hello World</title>
    <script type="text/javascript" src="frameworks/AIRAliases.js"></script>
    <script type="text/javascript">
    function appLoad(){
    air.trace("Hello World");
    //Read the text file
    var textFile = new air.File("app:/textfile.txt");
    if(textFile.exists){
    var textStream = new air.FileStream();
    textStream.open(textFile, air.FileMode.READ);
    if(textStream.bytesAvailable > 0){
    var fileText = textStream.readUTFBytes(textStream.bytesAvailable);
    textStream.close();
    air.trace("Text read: " + fileText);
    //Create a 'p' element to display the text
    var displayDiv = document.getElementById('display');
    var paragraph = document.createElement('p');
    var textNode = document.createTextNode(fileText);
    paragraph.appendChild(textNode);
    displayDiv.appendChild(paragraph);
    } else {
    air.trace("File is empty.");
    }
    } else {
    air.trace("File not found.");
    }
    }
    </script>
    </head>
    <body onLoad="appLoad();">
    <h1>Hello World</h1>
    <p>Loaded text:</p>
    <div id="display"></div>
    </body>
    </html>

  5. Créer un fichier textfile.txt, puis copier ce contenu :
  6. Hello world, http://themadmax.free.fr/blog

  7. Maintenant nous allons tester notre application, ouvrer une invite de commande dans le répertoire.
  8. bin\adl HelloWorld-app.xml

  9. La fenêtre s’affiche avec le contenu du fichier textfile.txt
  10. Maintenant nous allons packager l’application.
  11. Création d’un certificat
  12. bin\adt -certificate -cn SelfSigned 1024-RSA sampleCert.pfx samplePassword

  13. Compilation du package
    adt -package -storetype pkcs12 -keystore sampleCert.pfx HelloWorld.air
    HelloWorld-app.xml HelloWorld.html AIRAliases.js textfile.txt

    Un mot de passe doit être demander, renter samplePassword
  14. Maintenant si vous avez installé le framework de AIR, un simple double clique lance l’installation de l’application

Archive contenant tout le code source et le package compilé [11Ko]

Installation de WordPress avec les pages perso free.fr

Mardi 22 janvier 2008
  1. La premiere étape consite à télécharger les derniers sources du CMS WordPress à l’adresse suivante : http://www.wordpress-fr.net/telechargements
  2. Extraire sur votre ordinateur les fichiers.
  3. Avec un logiciel client FTP, connecter vous sur votre FTP ( ex. de client FileZila, LeechFTP )
  4. Transférer tous les fichiers sur le FTP.
  5. Par le biais de votre nacigateur aller sur votre site, sur la page d’administration : http://monsite.fr/wp-admin/
  6. Suivre les étapes pour installation

Probleme lors de l’installation, verifier que tous les fichiers ont bien etait copié sur le FTP. Le fichier index.php n’a pas etait généré, pour cela il faut retourner dans l’interface d’aministration puis forcer la réécriture de celui-ci.