PHPTour 2017 : TaguaVM

Au cours du PHPTour 2017, Ivan Enderlin nous a présenté un projet sur lequel il travaille en collaboration avec Julien Bianchi et Sébastien Houzé depuis février 2016 : TaguaVM, une machine virtuelle expérimentale pour le PHP.

Quoi de mieux que ses propres mots pour présenter l'outil :

L'objectif du projet Tagua VM est de fournir une VM PHP qui garantie un haut niveau de sûreté et de qualité en supprimant des larges classes de vulnérabilités, grâce à des outils appropriés comme Rust et LLVM.
Rust est un langage remarquable qui apporte des garanties fortes à propos de la sûreté de la mémoire. C'est aussi un langage très rapide qui rivalise avec C.
LLVM est une infrastructure de compilateur célèbre qui apporte de la modernité, des algorithmes à la pointe, des performances, une suite d'outils pour développeur etc.
Ce projet va résoudre trois problèmes en une fois :

    1. Fournir un niveau haut niveau de sûreté et de qualité en supprimant des larges classes de vulnérabilité, et ainsi éviter des coûts de bugs dramatiques ;
    2. Fournir de la modernité, une nouvelle expérience développeur et des algorithmes à la pointe de la recherche, donc des performances ;
    3. Fournir un ensemble de bibliothèques qui vont composer la VM et qui pourront être réutilisées en dehors du projet (comme le parseur, les analyseurs, les extensions etc.).

PHPTour 2017 : Les objets calisthéniques en PHP

Lors du PHP Tour, j'ai suivi le talk de MAXENCE POUTORD sur le thème "MAKE YOUR CODE GREAT AGAIN WITH THE OBJECT CALISTHENICS".

Cette philosophie de développement tient en 9 règles simples initialement rédigées en anglais que sont :

  • Règle 1 : N'avoir qu'un seul niveau d'indentation par méthode
  • Règle 2 : Ne pas utiliser de else
  • Règle 3 : Encapsuler tous les types primitifs et string
  • Règle 4 : Un seul point / une seule flèche par ligne
  • Règle 5 : Ne pas utiliser d’abréviation
  • Règle 6 : Garder des entités petites
  • Règle 7 : Ne pas créer de classe avec plus de deux variables instanciées
  • Règle 8 : Utiliser des classes de collection
  • Règle 9 : Ne pas créer de getter/setter aux propriétés

Utiliser les tests fonctionnels avec Behat dans tous vos projets web

A.                Installation de Java

 

Pour pouvoir utiliser Selenium qui nous permettra d’utiliser le navigateur voulu lors des tests, il faut préalablement avoir la versoir 7 de Java installé. Afin de connaître la version installée sur votre poste, lancez la commande suivante :

java --version

Si vous n’avez pas JRE 7 au minimum vous pouvez le télécharger à cette adresse :

http://www.oracle.com/technetwork/java/javase/downloads/java-se-jre-7-download-432155.html

Une fois installé, il faut ajouter la variable JAVA_HOME dans les variables d’environnement :

  • Clic droit sur ordinateur -> propriétés
  • Paramètres système avancés
  • Variables d’environnement
  • Dans les variables système choisissez « Nouvelle »
  • Entrer le nom JAVA_HOME
  • Entrer le chemin vers le fichier bin du dossier Java
  • Appliquer les changements

Tirasse MIDI : du besoin à la réalisation

Aujourd'hui, c'est la fête de la musique, alors je vous ai concocté un article aux petits oignons, qui lie informatique et musique 😉

Contexte

Etant non seulement informaticien, mais également musicien, et plus particulièrement organiste, j’ai déjà intégré des périphériques MIDI standards pour obtenir un orgue portable, disposant d’un pédalier Roland PK9, d’un clavier auxiliaire M-Audio Keystation 61, et d’un orgue portable Viscount Cantorum VI. Cet ensemble fonctionne déjà convenablement, mais un de ses inconvénients est de ne disposer que de peu de jeux disponibles pour le pédalier (Prinzipal 16, Oktave 8 et Gedackt 8). J’ai déjà résolu le problème en complétant le système avec un module d’orgue Viscount Accupipe CM100, mais cet ajout nécessite de compléter le système avec une table de mixage et des enceintes, qui sont des éléments à transporter en plus lors du déplacement de l’instrument. Un autre type de solution est implémenté sur la plupart des orgues à tuyaux : les couplages. Ces derniers permettent simplement lors de l’appui sur une pédale du pédalier, de jouer également la note avec les jeux de l’un ou l’autre clavier, ou de coupler deux claviers. La plupart des orgues liturgiques électroniques “monoblocs” en possèdent, mais mon orgue portable n’en dispose visiblement pas nativement. J’ai donc décidé de m’en développer un, en m’appuyant sur le standard MIDI qui est implémenté dans chaque instrument. Cet article va donc relater cette expérience, du besoin à la réalisation.


L’orgue en version légère, branché sans la tirasse

Lire et générer un QR Code avec ZXing.NET sous Xamarin

Le balayage de QR Code (ou de Codes Barres) est une fonctionnalité commune dans de nombreuses applications mobiles. Pour vérifier les participants dans un événement ou ouvrir des pages Web à la création d'une chasse au trésor, il existe de nombreux cas d'utilisation.
ZXing.NET Mobile (Zebra crossing) est une bibliothèque open source qui rend la lecture et la création de QR Code aussi simple et sans douleur que possible dans vos applications Xamarin et Xamarin.Forms.

Nmap, commandes utiles

Nmap logo

Logo

Nmap est un scanner de ports. Il est disponible pour la plupart des systèmes d'exploitation. Il peut être très utile pour vérifier qu'un service est ouvert sur un serveur ou pour retrouver une machine sur un réseau. Les cibles peuvent être désignées par leur adresse ou par leur nom DNS.

Transfer.sh, le partage de fichier en ligne de commande

Les moyens pour partager des fichiers en ligne ne manquent pas, mais je n'en connaissais pas qui pouvait s'utiliser simplement en ligne de commande.
En fouillant un peu sur github, je suis tombé sur transfer.sh.

Son utilisation la plus simple (en ligne de commande) se fait ainsi :
12:55 abourgouin@ankhmorpork ~/Téléchargements $ curl --upload-file blog.txt https://transfer.sh/blog.txt
https://transfer.sh/NYbiq/blog.txt

Le fichier uploadé (10Gb max) sera de base disponible pendant 14 jours. Il est toutefois possible d'ajouter quelques restrictions grâce à des options pour que le fichier soit disponible sur une période de temps plus courte ou ne soit pas téléchargé plus de fois qu'indiqué lors de l'upload...
Attention toutefois à ce que vous uploadez, vous en restez responsable.

Pour plus d'informations, n'hésitez pas à aller sur le github du projet !
Vous pourrez même le forker pour vous déployer votre propre transfer.sh à travers un conteneur docker.

Transfer.sh est aussi disponible en version web avec du drag&drop.