Elixir, enfin une syntaxe agréable pour Erlang ?

Posté par  (site web personnel) . Édité par Benoît Sibaud. Modéré par Florent Zara. Licence CC By‑SA.
Étiquettes :
27
26
mar.
2011
Programmation fonctionnelle

Elixir est un langage de programmation qui s’appuie sur Erlang et sous licence MIT. Il propose une syntaxe agréable, inspirée de celle de Ruby, et un modèle objet à base de prototypes.

Erlang est un langage fonctionnel avec un typage dynamique, une évaluation stricte et une assignation unique. Il convient bien pour des applications distribuées, résistantes aux erreurs et sans arrêt grâce au mécanisme de rechargement à chaud. Mais c’est également un langage qui peut sembler difficile à apprendre et dont la syntaxe peut rebuter. Elixir propose une manière élégante de profiter des avantages d’Erlang. Il est notamment possible d’appeler des modules Erlang sans conversion des types de données, et donc sans impact sur les performances.

Elixir est encore très jeune et recherche des contributeurs pour aider au développement de sa bibliothèque standard. Pour installer Elixir, vous aurez besoin d’Erlang R14B01, et je vous invite à parcourir le README pour découvrir ce langage. Mais voici un avant-goût sous la forme d’un très classique « Hello World » :

module World
  def say_hello
    IO.puts "Hello World!"
  end
end

World.say_hello

Quelques nouvelles rapides du langage Go

Posté par  (site web personnel) . Modéré par Xavier Teyssier. Licence CC By‑SA.
Étiquettes :
35
23
mar.
2011
Golang

Go devient plus stable : de nouvelles versions de Go sortent régulièrement, en moyenne une fois par semaine. C’est un rythme soutenu qui ne convient pas à tout le monde. Les développeurs de Go ont donc décidé de continuer ces versions sous le nom de weekly, mais de publier également des versions stables tous les un à deux mois. Ces versions seront soigneusement choisies et annoncées sur la nouvelle liste, golang‑announce.

Gorun est un outil qui permet de lancer en ligne de commande des « scripts » écrits en Go. Il suffit de mettre « #!/usr/bin/gorun » en 1re ligne ([[Shebang]]) pour que le script écrit en Go puisse être lancé directement.

Cgo est un outil qui permet de compiler du code Go qui utilise des bibliothèques en C. Il fonctionne, pour le moment, avec le compilateur Go de Google, mais il est aussi prévu de prendre en charge le back‑end Golang de GCC.

Nouvelle version de LinuxFr.org, un mois après

Posté par  (site web personnel) . Modéré par Lucas Bonnet.
40
22
mar.
2011
LinuxFr.org

La nouvelle version de LinuxFr.org, qui carbure avec Ruby on Rails, tourne depuis maintenant un mois. Pour ma part, j'en suis très satisfait : le serveur tient bien la charge, je la trouve plus agréable à utiliser et je m'amuse bien à développer de nouvelles fonctionnalités.

À ce sujet, nous n'avons pas chômé depuis le lancement, avec plus de 150 entrées corrigées. En particulier, vous avez pu trouver :

  • Les premières dépêches rédigées dans l'espace de rédaction, comme les traductions de la dépêche noyau ou celle annonçant Firefox 4 ;
  • Deux nouvelles feuilles de style alternatives : Grises et Spasibo ;
  • De nouvelles boîtes dans le barre de coté, comme par exemple, le sondage en page d'accueil ;
  • Un certain nombre de préférences, comme les signatures ou le choix des types de contenus à afficher en page d'accueil (pour les utilisateurs authentifiés uniquement) ;
  • L'amélioration du tableau de bord (seulement pour les utilisateurs authentifiés) ;
  • Le tri et les critères de filtrage des entrées du suivi ;
  • Une modération plus fluide ;
  • Et bien sûr de nombreuses corrections de bugs :p

Mais il reste bien entendu encore des choses qui pourraient être améliorées. Je vous encourage à remonter les bugs que vous pourriez rencontrer dans le suivi, ainsi que les propositions d'améliorations. N'hésitez pas non plus à commenter les entrées existantes, ces commentaires me sont très utiles pour mieux comprendre les entrées du suivi et trouver des idées pour y répondre.

En vrac spécial Ruby : JRuby, Sinatra et Goliath

Posté par  (site web personnel) . Modéré par Xavier Teyssier.
Étiquettes :
27
20
mar.
2011
Ruby

JRuby

JRuby est une implémentation complète de Ruby au-dessus de la machine virtuelle Java. La version 1.6 récemment sortie apporte des fonctionnalités majeures :

  • compatibilité avec Ruby 1.9.2, aussi bien pour le langage que pour l'API ;
  • prise en charge expérimentale des extensions écrites en C ;
  • profiler intégré ;
  • performances améliorées ;
  • meilleure expérience utilisateur sous windows ;
  • etc.

Sinatra

Sinatra est un micro-framework en Ruby pour construire rapidement des applications web (licence MIT). La version 1.2 est sortie au début du mois avec des nouveautés intéressantes :

Goliath

Goliath est un serveur HTTP en Ruby sous licence MIT. Sa particularité est de s'appuyer sur EventMachine et les fibres de Ruby 1.9. Il peut ainsi fonctionner de manière asynchrone et performante tout en gardant le code lisible (l'exécution reste linéaire et ne repose pas sur des callbacks enchainés comme on peut le voir dans d'autres environnements).

En pratique, Goliath convient bien pour écrire des services HTTP en complément d'une application web : API de streaming, upload de fichiers volumineux, proxy HTTP adaptés, etc.

En vrac : Drizzle, MongoDB et Webdis

Posté par  (site web personnel) . Modéré par Xavier Teyssier.
Étiquettes :
23
20
mar.
2011
Base de données

Drizzle

Drizzle est un fork de MySQL allégé et spécialement adapté pour le web et les infrastructures Cloud. Contrairement à MySQL qui est la propriété d'Oracle, Drizzle est développé et conduit par la communauté. Parmi les autres différences avec MySQL, on peut également citer :

  • l'absence des vues, triggers et procédures stockées ;
  • la non prise en charge de Windows ;
  • un nouveau moteur, HailDB ;
  • une configuration optimisée par défaut pour 1024 connexions simultanées…

La version 2011.03.13 a été déclarée General Availability (GA), c'est-à-dire prête pour la production, et ce trois ans après l'annonce du fork.

MongoDB

MongoDB est une base de données NoSQL de type documents, sous licence GNU AGPL. La version 1.8 est sortie le 16 mars et apporte :

Webdis

Redis est une base de données de type clé-valeur, un memcached boosté aux stéroïdes. Webdis est une interface HTTP au-dessus de Redis, sous licence BSD.

Il permet d'interroger une base de données Redis en appelant un chemin de la forme /Commande/Argument1/Argument2/.../ArgumentN. Le retour sera par défaut du JSON, mais il est également possible d'utiliser du JSONP ou d'autres formats : HTML, texte brut, etc. Webdis intègre également une gestion des droits en fonction de l'adresse IP, de l'authentification HTTP ou des deux.

Sortie de Redis en version 2.2

Posté par  (site web personnel) . Modéré par baud123.
Étiquettes :
34
27
fév.
2011
Base de données

Redis est une base de données de type clé-valeur, sous licence BSD. On peut voir Redis comme une sorte de Memcached boosté aux stéroïdes.

La version 2.2.0 est sortie la semaine dernière, très rapidement suivie de la version 2.2.1. Cette version apporte principalement des optimisations par rapport à Redis 2.0 :

  • importante diminution de la consommation mémoire (à ce sujet, je vous conseille la lecture des astuces pour optimiser la mémoire) ;
  • réplication non-bloquante ;
  • la commande Watch pour faire du check and set ;
  • l'Algorithme LRU pour l'éviction des données quand la mémoire consommée par Redis est limitée ;
  • nouvelles commandes : SETBIT, GETBIT, SETRANGE et GETRANGE permettant d'accéder à des valeurs de type « chaînes de caractères », comme s'il s'agissait de tableaux.

Pour la suite, antirez (le principal développeur) souhaite se concentrer sur la prise en charge des grappes de serveurs (clusters) et sur diskstore (un stockage sur disque des données pour les instances où tout faire tenir en mémoire n'est pas une option).

FreedomBox

Posté par  (site web personnel) . Modéré par patrick_g.
69
26
fév.
2011
Debian

La FreedomBox est un projet de la FreedomBox Foundation qui veut permettre à chacun d'héberger ses propres informations à partir de chez lui pour ne plus dépendre de sociétés qui regroupent toutes ces informations. Le projet a été annoncé par Eben Moglen devant l'ISOC à New York le 2 février 2010.

L'idée est de se baser sur les plug computer afin de fournir un système qu'il suffit de brancher chez soi pour qu'il soit opérationnel. Ce serveur tournerait grâce à des logiciels libres afin de garantir le respect de la vie privée des utilisateurs.

Le but est d'éviter de reproduire ce qu'il s'est passé en Tunisie ou en Égypte, même si cela s'est bien terminé. En effet, les gens ont principalement communiqué via Twitter et Facebook et la seule parade a été de couper Internet, mais que se serait-il passé si ces sociétés étaient forcées (ou ne pouvaient pas s'offrir le luxe de refuser) de couper les communications ou pire, de donner la listes des gens qui ont participé à tel groupe ou écrit tel tweet.

La FreedomBox doit permettre à chacun de maitriser ses données et ses canaux de communications. En mettant en œuvre Logiciels Libres, cryptographie et réseaux P2P, ces boitiers auront pour objectifs d'offrir les services suivants :

  • un réseau social protégé
  • des sauvegardes sécurisées
  • une protection contre la censure sur les réseaux
  • la publication anonyme sûre
  • la sécurité du réseau local
  • les courriels chiffrés sans peine
  • la VOIP privée.

Vous pouvez dès maintenant participer à cette initiative en faisant un don sur Kickstarter pour aider à financer la fondation, en participant à Debian qui sera la base de la future FreedomBox ou encore en commençant à vous auto-héberger.

N. D. M. : merci à Xavier Claude qui a rédigé une bonne partie de cette dépêche.

Architecture logicielle de la nouvelle version de LinuxFr.org

Posté par  (site web personnel) . Édité par Benoît Sibaud. Modéré par tuiu pol.
90
23
fév.
2011
LinuxFr.org

La nouvelle version de LinuxFr.org est en ligne depuis quelques jours. Vous nous remontez régulièrement des bugs et des propositions d'améliorations dans le suivi. Je vous encourage à continuer et à commenter / voter sur les entrées qui vous intéressent.

Voici quelques entrées sur lesquelles j'aimerais particulièrement avoir vos retours :

Je pense que vous êtes également intéressés par l'architecture logicielle de cette nouvelle version. Vous pourrez donc trouver quelques explications à son sujet en seconde partie et n'hésitez pas à poser des questions dans les commentaires.

Nouvelle version de LinuxFr.org

Posté par  (site web personnel) . Modéré par Benoît Sibaud.
110
20
fév.
2011
LinuxFr.org

Le site LinuxFr.org existe depuis juin 1998. Il est passé par différentes versions, fonctionnant avec différents moteurs : DaCode, Templeet et maintenant Ruby on Rails. Le site a donc utilisé le tout intégré DaCode, puis des modèles de page en Templeet développés par l'équipe du site, puis une version intégrée en Ruby.

Templeet avait été lancé principalement pour LinuxFr.org, il a été et est utilisé par d'autres sites comme moteur de « templates ». Il continuera sa vie de son côté, une version 4 étant attendue d'ici quelques mois.

La nouvelle version propose une charte graphique refaite pour l'occasion. Un concours a été organisé dans ce but et la feuille de style (CSS) gagnante, RonRonnement, est devenue la nouvelle CSS par défaut. Si celle-ci ne vous plaît pas, vous pouvez toujours profiter des autres CSS (l'ancienne feuille de style est là sous le nom kaiska-new).

Il est difficile de lister tous les changements liés à cette migration, mais voici les plus notables :

  • Les contenus et commentaires utilisent maintenant une syntaxe wiki, du Markdown en l'occurrence ;
  • L'espace de rédaction collaboratif a été refait (d'ailleurs, cette dépêche a été écrite simultanément par les 3 admins du site : lukhas, oumph et NoNo) ;
  • Le site intègre maintenant un wiki ;
  • Chaque utilisateur a maintenant un avatar : par défaut, il vient de gravatar mais il peut être changé dans les préférences ;
  • Les utilisateurs authentifiés peuvent étiqueter les contenus ;
  • Le script d'envoi de la lettre quotidienne d'annonce des dépêches est à refaire.

Mais certaines fonctionnalités n'ont pas encore été portées : la messagerie interne, les statistiques et le choix des contenus sur la première page.

Après les remous de la migration vers le nouveau site, l'équipe du site est à votre écoute pour recenser tous les problèmes que vous pourriez rencontrer.

Les résultats du concours LinuxFr.org

Posté par  (site web personnel) . Modéré par Lucas Bonnet.
Étiquettes :
49
15
fév.
2011
LinuxFr.org
Le site LinuxFr.org existe depuis 12 ans et la prochaine version va bientôt arriver. Pour la charte graphique de cette nouvelle version, nous avons fait appel à vous, lecteurs, en organisant un concours. Nous remercions chaleureusement tous les participants pour le travail accompli.

Après une petite période de flottement, l'équipe de modération a fini par se mettre d'accord. Voici donc le classement final du concours :
  1. RonRonnement, dans sa variante gris-bleu, par 2PetitsVerres ;
  2. cascade, par Benoît Monin ;
  3. kaiska-new, par Yggdras ;
  4. nightgrey, par Nicolas Paris ;
  5. greyscale, par Marin Moulinier ;
  6. retro, par Yellowiscool.

Les gagnants vont recevoir les prix suivants : une tablette Android type Archos 101 offerte par Nuxeo, deux bons d'achat de 250 € pour du matériel libre offerts par Hackable Devices, et trois fois un an d'hébergement sur un serveur virtuel fourni par Gandi (1 part × 1 an). Un grand merci à tous nos partenaires pour nous avoir soutenu tout au long de ce concours, ainsi qu'à InDefero pour les forges mises à notre disposition.

La nouvelle feuille de style par défaut va donc être RonRonnement gris-bleu. Vous pouvez l'essayer sur la version bêta, qui devrait devenir dans les prochains jours la toute nouvelle version officielle de LinuxFr.org. Stay tuned!

Sortie de Node.js 0.4.0

Posté par  (site web personnel) . Modéré par patrick_g.
Étiquettes :
16
12
fév.
2011
JavaScript
Node.js est un environnement JavaScript côté serveur, sous licence MIT. Sa particularité est son approche asynchrone pour faciliter la montée en puissance dans des contextes avec beaucoup d'entrées-sorties, notamment réseau. En pratique, il se compose :
  • d'un interpréteur JavaScript, à savoir V8 ;
  • de require(), un chargeur de modules compatible CommonJS ;
  • d'une bibliothèque standard, volontairement restreinte (une sorte de libc JavaScript où tous les appels sont asynchrones) ;
  • d'un ensemble de conventions : par exemple, les fonctions de retours indiquent toujours en premier paramètre si l'appel s'est bien passé et dans le cas contraire, quelle a été l'erreur ;
  • et d'un exécutable, node pour lancer tout ça.

La version 0.4.0 sortie cette semaine est la deuxième stable (c'est comme pour l'ancien mode de développement du noyau Linux : le numéro mineur est pair pour les versions stables et impair pour les versions de développement). Les principaux changements depuis la version stable précédente (la version 0.2, pour ceux qui suivent) sont les suivants :
  • nouveau client HTTP, avec une API plus simple et la gestion d'un réserve (pool) de connexions ;
  • refonte du module TLS/SSL ;
  • augmentation des performances, grâce à l'allocation plus rapide des tampons mémoire (Buffer) ;
  • meilleure prise en charge des gestionnaires de paquets comme npm, grâce à l'amélioration de require() ;
  • une mise à jour de V8 pour la version 3.1.2 ;
  • un débogueur fonctionnel, mais encore très limité pour le moment ;
  • un module os qui expose des informations sur le système ;
  • et, bien sûr, plein de corrections de bogues.

Prochain meetup de Paris.js à la Cantine

Posté par  (site web personnel) . Modéré par Mouns.
4
30
jan.
2011
Communauté
Paris.js est un groupe d'utilisateurs avec un intérêt fort pour le JavaScript, dans le navigateur, mais aussi côté serveur avec, notamment, node.js. Nous nous réunissons une fois par mois pour faire quelques présentations et discuter autour d'une bière.

La prochaine réunion aura lieu le 23 février à la Cantine. L'inscription est gratuite, mais obligatoire. Et si vous souhaitez faire une présentation, n'hésitez pas à nous le faire savoir sur la liste de diffusion ou sur le canal IRC #parisjs sur freenode.

Ne ratez pas le FOSDEM édition 2011 !

Posté par  (site web personnel) . Modéré par rootix.
21
23
jan.
2011
Communauté
Le FOSDEM est la conférence européenne qui réunit le plus de développeurs de Logiciels Libres. Elle se tient une fois par an à Bruxelles et ce sera le week-end des 5 et 6 février pour l'édition 2011 (l'entrée est gratuite). Il sera précédé du Beer Event le vendredi soir, une des rares occasions de voir le Beer Distribution Algorithm v3.2 (stable) mis en application.

Un certain nombre d'associations tiendront des stands, et vous aurez l'occasion d'assister à des présentations sur 20 thèmes :
  • Accessibility
  • BSD
  • Configuration & Systems Management
  • Crossdesktop
  • CrossDistro
  • Data Analytics
  • Embedded
  • Free Java
  • GNU
  • Jabber & XMPP
  • LibreOffice
  • Mono
  • Mozilla
  • MySQL & friends
  • New challenges in Virtualization
  • Open Source Telephony
  • Perl
  • PostgreSQL
  • Security & hardware crypto
  • World of GNUstep


Et pour ne pas déroger à la tradition, voici les entretiens d'une sélection de conférenciers pour se mettre dans l'ambiance :


Ne ratez pas cet événement incontournable sur le développement de Logiciels Libres en Europe.

En vrac : Typo 6.0, Rails Installer, Pik

Posté par  (site web personnel) . Modéré par Xavier Teyssier.
Étiquettes :
11
20
jan.
2011
Ruby
Typo est un moteur de blog sous licence MIT. Typo 6.0 vient de sortir et tourne maintenant avec la version 3 de Ruby on Rails. Les nouveautés importantes sont la mise en place d'une interface de programmation (API) pour les greffons, la simplification de l'installation, une interface d'administration améliorée et des optimisations pour le référencement.

L'installation et l'utilisation de Ruby sous Windows a souvent été en retard par rapport à d'autres systèmes d'exploitation. Mais plusieurs initiatives visent à réduire ce retard. La première est Pik, un équivalent de Ruby Version Manager pour Windows. Il permet d'installer plusieurs interpréteurs Ruby, de passer facilement de l'un à l'autre, voir de lancer une même commande avec plusieurs interpréteurs (ça peut être pratique pour vérifier que des tests passent correctement avec plusieurs versions de Ruby). Il est distribué sous licence MIT.

Une autre initiative très récente est Rails Installer. C'est un kit sous licence MIT permettant d'installer le nécessaire pour développer des applications Rails à partir d'un Windows de base. Cela comprend notamment Ruby 1.8.7, Rails 3, Git 1.7 et SQLite 3. C'est donc une solution idéale pour permettre à vos amis d'essayer Rails sans être découragés par l'installation.

Redo, un remplaçant de choix pour Make

Posté par  (site web personnel) . Modéré par Xavier Teyssier.
Étiquettes :
19
16
jan.
2011
Ligne de commande
Make est l'outil le plus couramment utilisé pour automatiser la production d'un fichier à partir de règles. L'exemple typique est la compilation d'un logiciel à partir de ses sources. Mais Make a des inconvénients de taille, dont :
  1. La syntaxe sujette aux erreurs ;
  2. Les appels récursifs à make posent problème ;
  3. Le manque de modularité ;
  4. L'absence d'atomicité de l'application des règles.

Daniel J. Bernstein, l'auteur de qmail et djbdns, a proposé une alternative à Make qu'il a appelée redo, mais celle-ci se présente sous forme de notes et non pas de code.

Avery Pennarun a trouvé ses notes et en a écrit une version en Python sous licence LGPL.

Redo fonctionne avec des scripts shell avec l'extension .do et chacun de ces fichiers décrit une règle. Par exemple, le fichier default.o.do qui servirait à générer des fichiers .o à partir des sources .c correspondantes s'écrirait de cette façon :
redo-ifchange $1.c

gcc -MD -MF $3.deps.tmp -c -o $3 $1.c
DEPS=$(sed -e "s/^$3://" -e 's/\\//g' <$3.deps.tmp)
rm -f $3.deps.tmp
redo-ifchange $DEPS
Note : $1 est le nom du fichier cible sans l'extension et $3 le nom du fichier temporaire qui deviendra le fichier cible ($3 sera renommé à la fin de la règle, évitant ainsi de laisser un fichier cible corrompu si quelque chose devait mal se passer). redo-ifchange est une commande servant à déclarer une dépendance.