Nouveau PC (3698 Vues depuis le 2013/12/27)

Je me suis monté un nouvel ordinateur ! A base d'AMD pour le fun.

J'ai choisi d'investir dans un ventirad car celui d'origine est toujours très décevant, surtout que le FX 6350 a un TDP de 125W !

La configuration est composée des éléments suivants :

  • AMD FX 6350 Black Edition
  • Asus M5A97 Rev 2.0
  • 2x 4 Go de Corsair Vengeance 1600 MHz
  • Gigabyte GTX 660
  • AKASA Venom 550 Watts modulaire
  • Cooler Master Hyper TX 3 EVO
  • Boitier NZXT Elite 210

L'ensemble est relativement silencieux vu le matériel à l'intérieur du boitier, ça valait le coup de dépenser 20 € pour le Hyper TX 3 !

Slackware 14.1 RC2 (133 Vues depuis le 2013/10/21)

Patrick Volkerding a annoncé ce matin la RC2 de Slackware 14.1 (voir changelog)

Aucune grosse mise à jour de ce côté là, il s'agit de compilation des paquets avec des patches en plus pour fixer quelques petits soucis de dernière minute. La 14.1 s'annonce vraiment géniale !

Il n'y a cependant aucun ISO officiel de Slackware 14.1 RC2, il vous faudra installer une 14.0 et la mettre à jour à la main ou trouver un ISO généré par quelqu'un.

Pour rappel, Slackware 14.1 c'est :

  • KDE 4.10
  • Xfce 4.10
  • Linux 3.10
  • GCC 4.8.2
  • Firefox 24.0
  • Thunderbird 24.0
  • Samba 4.1
  • OpenSSH 6.3p1
  • Ajout de Tmux !
  • Calligra 2.7.3
  • Xorg 1.14

 

Nginx et les noms de domaines accentués (152 Vues depuis le 2013/10/08)

Si vous avez un nom de domaine accentué, comme sur ce site (liberté.info). Dans le champ server_name de votre configuration nginx, il faut mettre l'url au format encodé !

C'est-à-dire :

server_name xn--libert-gva.info www.xn-libert-gva.info;

 

 Il en va de même pour la plupart des serveurs web ou mails en fait.

Vous pouvez encoder votre nom de domaine à l'aide de ce site (qui a un nom bizarre).

Fabriquer son propre téléphone ? (196 Vues depuis le 2013/10/06)

Une idée me trotte de plus en plus dans la tête : Fabriquer mon téléphone.

J'ai vraiment du mal à me séparer de mon téléphone, il fonctionne bien après tout. Mais je n'ai pas de 3G, le navigateur web est totalement inutile tellement il est lent (même en wifi). Je m'en sers vraiment uniquement pour les sms et les appels (et un peu les calendriers).

Mais est-ce si simple de faire son propre téléphone ?

Mise à jour du blog (129 Vues depuis le 2013/10/03)

Le blog vient d'être mis à jour avec la dernière version de mon application.

Ca n'a pas été si dur finalement, mais après plus d'un an d'existences, mes deux blogs utilisent enfin la même application, et non plus deux branches séparées ! :D

News ! (168 Vues depuis le 2013/09/30)

Un petit message pour dire qu'en ce moment, rien de bien spécial:

  • Je joue avec Darcs que je trouve beaucoup plus sympa que git ou mercurial
  • avec github
  • Le logiciel cloc peut vous permettre de faire des statistiques sur les langages utilisés dans un projet
  • Slackware 14.1 va être excellent !

Slackware 14.1 beta (148 Vues depuis le 2013/09/18)

Patrick Volkerding vient d'annoncer Slackware 14.1 beta.

Pour faire un petit résumé des changements :

  • Linux 3.10.12
  • Grub 2.00 !
  • Firefox 24 ESR (édition support long terme)
  • Thunderbird 24 ESR (pareil)
  • Kde 4.10.5
  • Xfce 4.10.1
  • Vim 7.3
  • Emacs 24.3
  • Gcc 4.8.1

Par le choix des paquets, on sent que Slackware cherche vraiment à se démarquer en offrant un système stable et "longue durée". Kde 4.10.5 est stable, et semble être la dernière stable avant quelques temps, ce à cause du changement vers QT5 qui approche. De même, le choix de Firefox et Thunderbird 24 en édition ESR. J'approuve totalement l'ajout de grub dans le système de base (il était dans Extras avant), lilo étant complètement dépassé et lent.

En réalité, je suis déjà sur cette version car j'utilise slackware-current :)

Un iso non officiel est disponible à cette adresse (le checksum se trouve à côté dans le répertoire), Slackware ne fournissant aucun ISO des versions en développement.

Retour au LISP ! (134 Vues depuis le 2013/09/17)

Et oui, Clojure c'est déjà fini ! Non pas que le langage n'est pas intéressant, au contraire j'ai trouvé qu'il est très bien fait, il apparaît comme moderne. Si j'étais développeur, je m'intéresserais vraiment à ce langage !

Je retourne à mon vieux common lisp.

Je fais du développement pour m'amuser, il se trouve que je trouve le common lisp FUN à développer. Est-ce que ça vient des parenthèses partout ? Du fait que je comprends pas trop ce que je fais, et que je suis tout fier de moi quand ça marche alors que j'ai aucune idée de pourquoi ? Clojure est vraiment "trop bien" j'ai envie de dire. Ce qui m'amuse le plus, à mon avis dans LISP, c'est de travailler avec des listes. Les listes sont l'essence même de LISP, tandis que cela passe au second plan dans Clojure. Même "t" devient "True" avec Clojure, c'est d'un triste ! (Pour information "t" est en quelque sort l'équivalent de True en common lisp : (if (= nombre 0) t nil) renvoie t si nombre =0 et nil si nombre n'est pas égal à 0))

Tout ça pour dire que je cherchais un autre langage, alors qu'en fait je m'amuse bien avec LISP, alors pourquoi je m'embêterais à en chercher un autre ? :)

D'ailleurs, je viens de réussir à faire fonctionner une librairie d'internationalisation, c'est-à-dire que tous les textes du site (pas les articles), les noms des boutons, des menus etc.. sont dans un fichier de configuration triés par langues. Cela va me permettre d'utiliser la dernière version du site sur liberté.info, alors qu'il est déjà sur Planet-bsd.net. Du coup, toutes les modifications ne sont pas reportées sur liberté.info. Et des différences, il y en a ÉNORMÉMENT.

À vrai dire, les deux sites ne partagent même plus le même système de template, l'un est en "template" avec du html et du pseudo code, tandis que l'autre est entièrement codé en LISP (ouais ! Toutes les balises html !), les requêtes ne sont plus les mêmes, l'autre site gère les articles avec une version résumée / version complète, l'auteur de l'article etc... Plein de modifications quoi !

Essai du langage Clojure (158 Vues depuis le 2013/09/16)

Je vais ré-essayer le langage Clojure. J'aime beaucoup Common LISP, seulement, je rencontre plusieurs obstacles assez pénibles.

Changements à venir (128 Vues depuis le 2013/09/15)

Je vais passer le blog à sa dernière version, dès que j'aurai fini l'internationalisation du blog ! Ce sera plus joli, plus modulable, et plus facile à maintenir.

Comme je l'ai expliqué plus loin, je maintiens un autre blog du même genre mais en version plus avancée, et je fais des back-ports de correction sur celui-là, le code est de plus en plus différent, et c'est de plus en plus compliqué ! Bref, quand j'aurai unifié les deux, ce sera cool. Mais comme y a du texte en dur dans le code, et que j'ai un blog en français et l'autre en anglais, pour le moment je suis coincé.

Nouveau serveur ! (121 Vues depuis le 2013/09/14)

Le blog est désormais hébergé chez online.net sur une machine avec FreeBSD ! Retour aux sources ! :)

En passant, je vous conseille d'essayer la dernière version de PC-BSD, ça marche niquel ! Je viens juste de faire 7 rapports de bugs (je sais pas ce qu'ils font les autres ?) et ENFIN j'ai envoyé sur github un pull request concernant le choix de la langue lors de l'installation. Marre de voir "Le français" dans le choix des langues !!! Maintenant ce sera "Français", comme d'habitude ! C'est pas écrit "The english" ou "Das Deutsch" à ce que je sache.

En passant, je trouve que la police du blog est très moche, si vous avez une idée de pourquoi, je veux bien une petite solution en commentaire ! :)

Mise à jour du 16 Septembre 2013: Je viens de changer la police pour SourcecodePro-Semibold qui est OpenSource et pas si mal !
 

Choix du téléphone ! (131 Vues depuis le 2013/09/03)

J'ai utilisé pendant un mois un Samsung Galaxy S2 après 2 ans d'utilisation d'un vieux BlackBerry Curve 8520 (pas de 3G, navigateur web très lent, peu d'applications).

Attention, l'article qui suit est totalement subjectif. Un smartphone, c'est un objet très personnel, chacun a des attentes différentes et ses critères de selection, c'est d'ailleurs pour cela qu'il n'y a pas (encore) une marque unique.

1 mois sous Android + nouveau serveur ! (125 Vues depuis le 2013/08/27)

 

Voilà, cela fait un peu plus d'un mois que j'utilisais le téléphone Android, alors, qu'ai-je décidé ? :) Je vais faire un petit article pour annoncer la nouvelle !

 

En attendant, j'ai attendu 12 jours pour que Online.net répare un problème de leur côté pour que je puisse enfin profiter d'un serveur dédié que j'ai commandé chez eux !

Je possède déjà des machines chez OVH, mais prendre une machine chez Online.net me permettra de ne pas être dépendant du réseau OVH pour le serveur mail, permettant ainsi d'avoir un serveur mail de secours au cas où OVH tomberait en panne (c'est arrivé un peu entre OVH et SFR la semaine dernière par exemple ^^)

Le blog devrait être "amélioré" ou au moins mis à jour, mais je n'ai encore pas plus d'infos là dessus. J'ai une autre version de mon blog qui fonctionne et qui permet beaucoup plus de choses ! :)

Comparaison BlackBerry 5 vs Android 4.1 : partie 1 (343 Vues depuis le 2013/07/28)

Bonjour,

Je suis un utilisateur de BlackBerry depuis 2 ans et demi, j'ai un vieux Curve 8520 (il a même pas la 3G et aller sur internet, même en wifi vaut mieux oublier), mais je n'arrive pas à passer sous Android malgré plusieurs tentatives. J'ai envie d'expliquer pourquoi, par le biais de plusieurs cas d'utilisation précis. Ces remarques n'engagent que moi, mais j'ai l'impression que les gens ne se rendent pas compte à quel point Android me paraît compliqué !

Lighttpd ou Owncloud ? Il faut choisir ! (141 Vues depuis le 2013/06/27)

Finalement, il s'avère que Nginx (en dehors de celui d'OpenBSD), ne peut être lancé en chroot. En y réflechissant bien, j'ai très régulièrement des ennuis avec Owncloud, qui ne me sert qu'à synchroniser mes Firefox. Je vais tout simplement monter un serveur de synchro firefox et abandonner Owncloud, comme ça, plus de problèmes !

Au revoir lighttpd :( (134 Vues depuis le 2013/06/27)

Lighttpd ne semble pas compatible avec Owncloud, WebDAV ne fonctionne pas, j'ai des erreurs partout et j'arrive même pas à me logger. C'est dommage car j'adore ce serveur web, mais j'aime bien aussi nginx, donc on va passer sur Nginx !

Pour info, le service de mail a été interrompu suite à un formatage de la machine pour changer le système d'exploitation. Je n'avais pas d'interpreteur LISP multithread sous OpenBSD, et je ne peux pas vivre sans SBCL ! Donc ca a été formaté et comme les mdp sont générés au hasard et que c'est stocké comme un utilisateur système, ben.. voilà quoi Je peux pas récupérer les mots de passe.

Projet Liberté (134 Vues depuis le 2013/06/11)

Le projet avance bien !

Pour le moment, j'ai un service complet : POP/IMAP + SMTP + webmail, le tout en SSL

J'ai rencontré un bug d'OpenSMTPD, qui a été corrigé dans une version très récente mais la mailing-list a été très réactive :)

Une fois configuré, le fichier du serveur smtpd fait 5 lignes !!!!!!!!!

Reste à voir comment je peux gérer les comptes désormais, et comment les utilisateurs peuvent changer leur mot de passe.

Lancement du projet : Liberté ! (144 Vues depuis le 2013/06/05)

Suite à mon article et à l'étude de marché sur une messagerie, je suis vraiment motivé pour avancer sur la messagerie, de pouvoir fournir aux gens intéressés un service de qualité, totalement neutre et reposant uniquement sur des logiciels libres.

Résultats d'une petite étude de marché (160 Vues depuis le 2013/06/03)

Aujourd'hui j'ai lancé un petit sondage sur deux forums, puis sebsauvage a relayé le lien, j'ai obtenu plus de 500 réponses en moins de 24h.

Le sondage consistait à demander aux internautes s'ils étaient satisfaient de leur messagerie mail, à quoi elle leur servait et s'ils étaient inquiet quant à leur vie privée.

Voici les résultats de l'étude :

 

Quelle société vous fournit votre adresse email principale ?

75% des gens qui ont répondu sont chez Gmail, 10% chez Microsoft (hotmail / live / msn), peu de monde chez Yahoo et encore moins qui hébergent chez eux.

 

Êtes-vous dérangé à l'idée de savoir que votre fournisseur consulte certainement vos mails pour faire de la publicité ciblée ?

62% des gens se disent dérangés par l'intrusion dans leur vie privée, 33% se disent un peu gênés et seulement 4% des gens ne sont pas dérangés par cela.

 

Avez-vous des craintes quant à la sécurité d'accès à votre messagerie ? (vol de mot de passe, intrusion par question secrète etc..)

8% des gens ne se font aucun soucis, 26% des gens ont une réelle crainte de se faire pirater leur compte tandis que les 66% restants sont plutôt défaitistes et se disent que c'est une chose qui arrive.

 

Pensez-vous que les nouveaux moyens de sécurité mis en oeuvre sont efficaces ? (authentification de l'ordinateur ou de l'IP par SMS, connexions SSL ..)

46% des gens pensent que la sécurité est tout à fait convenable, tandis que 44% des votants pensent que cela pourrait être amélioré. 10% des internautes disent que la sécurité est à revoir.

 

Quel usage faites vous de votre messagerie ?

À cette question, 99% des votants utilisent leur messagerie à des fins personnelles, 84% pour recevoir les mails de confirmation d'inscription aux sites, 77% pour l'envoi de document par pièce-jointe (sans passer par les réseaux sociaux ou des plateforme d'hébergement), 62% pour des raisons professionnelles et seulement 28% pour accéder aux notifications de réseaux sociaux. Dans la catégorie Autres (13%), on notera les utilisations suivantes : stockage de documents en pièces-jointes, mailing-list, agenda, newsletter, agenda/todo/bloc-note et enfin messages d'alerte de monitoring serveur.

 

Quelle prix par mois seriez-vous prêt à payer pour une messagerie indépendante des grandes entreprises et sécurisée ?

51% des gens veulent un service gratuit, 23% serait prêt à payer 1€ / mois, 15% à 2€, 2% à 3€ et 9% à 4€. On peut voir que la moitié serait prête à payer pour avoir un service de qualité et neutre, mais les personnes ayant répondues sont plutôt des gens habitué de l'informatique et qui comprennent l'importance d'un tel service. Je ne pense pas qu'une personne ne s'intéressant pas plus que cela à l'informatique y trouve un intérêt à payer un service qui peut être gratuit et mieux présenter ailleurs. Ici, il s'agit surtout d'un choix éthique plutôt que d'un choix de commodité.

 

Conclusion

D'après les différents commentaires laissés dans le sondage et à la vue des résultats je m'aperçois qu'il y a un réel besoin. Les chiffres les plus marquants je pense, sont ceux concernant l'intrusion dans la vie privée, où 96% des gens se disent gênés par le manque de vie privée. Pour faire un service de qualité, il faut de l'argent (rien de nouveau !), le problème du financement se pose donc : publicité, compte gratuit et abonnement premium (augmentation de l'espace de disque, augmentation de la taille des pièces-jointes etc... ?), comptes payants uniquement ?

Je ne fais pas ça pour gagner de l'argent, ce projet c'est un peu un moyen pour moi de contribuer au monde, je souhaiterais juste que le service s'auto-finance. Si le projet voit le jour, tous les outils utilisés seront des outils Open-Source, je ne suis pas développeur, je ne contribue donc que très peu au développement des outils. En revanche, je peux fournir des services utiles et transparents aux utilisateurs en utilisant ces briques logicielles.

J'ai pu voir dans les commentaires des demandes diverses et variées, pour résumé, tout le monde veut ça : SSL, SMTPS, IMAP, POP, pérennité, grandes pièces jointes (> 50 Mo), grand stockage (> 10 Go), accès plus sécurisé que mot de passe / question secrête. Là où les avis divergent, c'est sûr le webmail. Certains veulent un webmail simple, d'autres un beau webmail plein de jolis boutons, certains proposent même de ne pas proposer de webmail afin de limiter les risques de sécurité et pour forcer les gens à utiliser de vrais outils utilisant des protocoles fiables. Pour le moment, je suis tenté par ces trois voies, à l'heure où presque tout le monde est équipé d'un smartphone, quel intérêt d'avoir accès à un webmail ? D'un autre côté, on a pas toujours envie de rédiger de longs mails sur un smartphone lorsque l'on est pas chez soi !

Ce qui est certain, c'est que si j'arrive à aller au bout de ce projet, le service sera déjà lancé avec un beau bandeau BETA où les comptes seront gratuits, et aussitôt que la décision concernant un éventuel abonnement sera prise, tout le monde sera informé afin de ne pas prendre les utilisateurs par surprise.

 

Je remercie tous les gens qui ont participé à ce vote et qui m'ont accordé quelques minutes de leur précieux temps !

[MAJ] Déployer NetBSD sur un kimsufi OVH (149 Vues depuis le 2013/04/30)

Voici un petit tuto, cependant réservé à des gens expérimentés, permettant d'installer NetBSD sur votre Kimsufi (testé sur un mKS 2G datant d'avril 2013).

Logiciels utiles (112 Vues depuis le 2013/04/23)

Une petite liste rapide de logiciels utiles :

  • Namebench : benchmark DNS pour comparer le temps de réponse de serveurs DNS
  • Paping : outil réseau permettant d'effectuer un équivalent de "ping" sur un port réseau d'une machine distante
  • Tcpflow : outil réseau permettant de sauvegarder les données dans des fichiers triés par connexions TCP
  • MTR : outil réseau permettant d'effectuer un "traceroute" et un "ping" en même temps, très pratique !

Ce sont des logiciels que j'utilise régulièrement et qui peuvent se révéler très utile si vous en avez besoin !

LISP facile : boucles et affichage de texte (229 Vues depuis le 2013/04/17)

Dans ce petit tuto, nous allons voir quelques opérations toutes simples :

  1. Faire une boucle sur une liste
  2. Afficher du texte formaté à la façon de printf

Faire une boucle sur une liste

Il y a plusieurs façons de faire des boucles en LISP, la plus simple, à mon avis, est d'utiliser loop for. L'exemple suivant va afficher les nombres un à un.

(loop for nombre in '(1 2 3 4 5)
   do
      (print nombre))
; 1
; 2
; 3
; 4
; 5

 

Afficher du texte formaté

Pour afficher du texte, il y a une autre fonction que "print", on peut utiliser format. Cela permet d'afficher du texte et d'y inclure des variables en fonction de leur type, d'afficher un certain nombre de zéros devant les nombres, de faire des boucles et plein de choses. Nous allons juste voir un exemple simple, car la commande permet de faire énormément de choses mais ce n'est pas ce que l'on veut voir pour le moment.

(format t "Je programme en ~A depuis ~D jours.~%J'adore !" "LISP" 10)
; Je programme en LISP depuis 10 jours.
; J'adore !

Le premier paramètre de format peut être t ou nil ou un nom de variable. Utiliser nil fait que la commande va renvoyer une chaîne de caractère, alors qu'avec t, on affiche à l'écran. La différence peut paraître subtile, mais si on veut renvoyer la chaîne à une fonction, il sera préférable d'utiliser nil plutôt que de l'afficher à l'écran.

On peut voir ensuite que dans la chaîne de caractères se trouvent trois symboles un peu bizarres "~A", "~D" et "~%". Ces caractères spéciaux sont interprétés par format, et vont lire les variables passées en paramètres à la fin pour les remplacer selon la chaîne, d'une manière différente selon le symbole utilisé : ~A signifie une chaîne de caractères, ~D signifie un nombre. Pour ~%, c'est un retour à la ligne, il ne "consomme" donc pas de variable.

Enfin, on met les variables dans l'ordre de leur utilisation à la fin de la fonction, ici nous avons la chaîne "LISP" et le nombre 10.

Nouvelle application ! (125 Vues depuis le 2013/04/15)

Je suis en train de plancher sur un nouveau petit projet, avec des petits poneys dedans ! J'ai choisi une vraie base PostgreSQL car SQLite, même si c'est sympa, c'est vite limitant surtout quand on doit travailler avec les dates.

J'ai donc découvert le module LISP postmodern permettant d'utiliser une connexion Postgresql, pour que ça marche bien, j'ai du galérer à trouver comment on gère les exceptions en LISP sinon l'application restait plantée sur l'erreur SQL (pas cool ! ^^ ).

Plus d'informations bientot !

A noter que le serveur est passé sous Nginx, et que j'utilise du fastcgi pour mes applications, c'est beaucoup plus stable et rapide que le serveur web hunchentoot, sauf que le fastcgi ça marchait pas avec apache.. Je conseille également Lighttpd qui est équivalent à Nginx.

Apprendre le LISP facile : Introduction (163 Vues depuis le 2013/04/11)

Je commence une magnifique série d'articles qui vise à faire découvrir le LISP simplement. Je débute dans ce langage, et honnêtement, je trouve que la documentation est loin d'être accessible ni même à jour. Je me suis découragé de très nombreuses fois, mais ce langage m'attire vraiment par sa différence et sa "simplicité" voire "naïveté" en tant que langage fonctionnel (regardez des examples de Haskell pour comparer !).

Je fais cette petite suite d'articles aussi pour moi, pour m'aider à consolider mes connaissances et me faire ma petite documentation personnelle, parce que j'en ai vraiment marre de tomber sur des trucs hyper compliqués.

Tout d'abord, je vais présenter rapidement le langage LISP. Il s'agit d'un langage fonctionnel (goto wikipédia pour plus d'infos) qui consiste à manipuler des listes. Les listes, c'est le principal intérêt de LISP, on passe son temps à parcourir des listes, sortir des éléments, fusionner des listes, les retourner, les trier etc...

Ce qui va vraiment trancher avec un langage procédural comme PHP c'est aussi la structure du code, d'habitude, on déclare nos petites variables, puis on les affecte et on les réutilise plus tard, on les modifie, on les réutilise encore et encore. En LISP, on a tendance à imbriquer les fonctions les unes dans les autres, en utilisant des variables temporaires qui ne sont définies que dans le bloc où se trouvent les fonctions qui l'utilisent, c'est vraiment l'opposé du langage procédural.

L'exemple suivant va afficher la somme de deux variables locales (si on peut appeler ça des variables locales

(let ((a 4))
    (let ((b 1))
        (print (+ a b) )))
; Affiche 5

(print a)
; a n'est plus défini

Dans cet example, on remarque aussi quelque chose de très inhabituel, les fonctions sont écrites dans ce style (print X) au lieu de print(X), quand je vous disais que c'est un langage un peu différent !

Prise de tête avec LISP (157 Vues depuis le 2013/04/09)

Le LISP, c'est parfois un peu prise de tête. J'ai un problème récurrent, le serveur applicatif du blog (hunchentoot), plante ! Je pensais que c'était un bug de hunchentoot lui-même, mais non, il s'agit des appels à SQLite qui font planter l'application. J'ai résolu, partiellement, le problème en ajoutant des (with-open-connection) un peu partout, mais maintenant j'ai un résultat assez étrange : sous une charge importante, les fonctions ne renvoient pas toujours les bonnes valeurs. Parfois, les articles sont vides, les catégories s'affichent en double, en triple, aucune catégorie.

Je ne sais pas comment les threads sont gérés, mais il semblerait qu'il y ait un mélange entre les différents threads...

MISE-À-JOUR: Il semblerait que ce soit l'utilisation du serveur web hunchentoot par le module LISP Clack qui ait quelques petits problèmes, cela ne vient pas de hunchentoot lui même. J'avais également un problème que je rencontrais sous Apache avec mod_lisp2 permettant d'exécuter du LISP un peu comme du CGI, quand j'accédais à la racine du site je récupérais un fichier télécharger avec le content-type httpd-unix-directory. En fait, par défaut, Clack ne donne apparemment pas de content-type, je ne sais pas s'il s'agit d'un bug, d'un problème de configuration ou si c'est au développeur de le forcer.

Vider le cache d'un serveur Linux (117 Vues depuis le 2013/04/08)

Si vous voulez vider la mémoire cache de votre serveur Linux (pour vérifier le temps de chargement d'un programme par exemple), il suffit d'utiliser la commande suivante en root :

echo 3 > /proc/sys/vm/drop_caches

Cette manipulation n'est pas dangereuse.

Apache envoie les données en text/plain (126 Vues depuis le 2013/04/08)

Je viens de me prendre la tête avec Apache qui voulait absolument envoyer les données de mon site en text/plain, résultat : les pages affichées par mon blog affichaient tout simplement le code html de la page !

Bizarrement, sur mon poste de travail Slackware, ça marchait bien avec Apache 2.2, et sous Debian, ça marche pas !

J'ai trouvé pourquoi, dans le apache2.conf de Debian, il faut changer la ligne : DefaultType text/plain en DefaultType text/html. Je ne sais pas si c'est la meilleure solution, mais ça a fonctionné pour moi. Dans la config par défaut d'apache dans Slackware, cette ligne n'existe pas !

Mon fichier de configuration d'Emacs (125 Vues depuis le 2013/04/02)

Un petit message juste pour poster mon fichier de configuration d'Emacs, avec les explications. J'essaie toujours de configurer mes logiciels le plus simplement possible, sans aller dans la customisation à outrance. Pour moi, je dois être capable de refaire la configuration de mes logiciels rapidement en cas de besoin, je ne veux pas utiliser Emacs avec 400 combinaisons de touches modifiées, je ferais comment si je dois utiliser un jour un Emacs sans ma configuration ?

 

; Désactiver l'autobackup qui produit des fichiers avec des ~ à la fin du nom
(setq backup-inhibited t)                                                                                      
(setq auto-save-default nil)                                                                                   

; Permet d'éditer des fichiers directement par ssh en utilisant SCP
(require 'tramp)
(setq tramp-default-method "scp")

; Affiche les parenthèses correspondantes
(show-paren-mode 1)

; Sauvegarde le dernier emplacement du curseur dans chaque fichier
; Permet de retourner au même endroit dans le fichier (très pratique)                                                         
(setq save-place-file "~/.emacs.d/saveplace")                                                                  
(setq-default save-place t)                                                                                    
(require 'saveplace)

; Les fichiers .tt et .tpl sont de type HTML
(add-to-list 'auto-mode-alist '("\\.tt\\'" . html-mode))
(add-to-list 'auto-mode-alist '("\\.tpl\\'" . html-mode))

; On active le mode LUA pour les fichiers .lua
(autoload 'lua-mode "lua-mode" "Lua editing mode." t)
        (add-to-list 'auto-mode-alist '("\\.lua$" . lua-mode))
                (add-to-list 'interpreter-mode-alist '("lua" . lua-mode))

 

Voilà, c'est pas grand chose mais je voulais partager ces quelques lignes qui me sont très utiles sans pour autant changer le comportement de mon éditeur préféré ! :)

Avancement dans le projet (139 Vues depuis le 2013/03/29)

Bonjour ! Un petit message pour vous dire que le blog n'est pas mort !

Je comprend de mieux en mieux le développement web (surtout la mise en page et l'utilisation de javascript) par le biais de mon travail dans lequel j'ai pu développer quelques applications web très simples, mais nécessitant une interface utilisateur assez riche et facile d'utilisation (que du JQuery partout avec des slide, des trucs qui font des fondus et tout !).

Les sources de ce blog sont définitivement disponibles, lorsque ça avancera un petit peu ! J'ai compris pas mal de chose dans le langage, et rien que l'application elle-même est plus propre dans la configuration du projet. En fait, je viens de comprendre comment séparer les fichiers Lisp :D

Y a eu du boulot de fait sur le blog !

 README                                |    2
 config/conf.lisp                      |   13
 src/bdd.lisp                          |   23
 src/controller.lisp                   |   12
 src/controls/accueil.lisp             |   31
 src/controls/admin.lisp               |   21
 src/web.lisp                          |    2
 start.lisp                            |    1
 static/css/main.css                   |   48
 templates/404.tpl                     |    9
 templates/accueil.tpl                 |  194
 templates/admin/add.tpl               |   62
 templates/admin/admin.tpl             |    7
 templates/admin/include/head.tpl      |    2
 templates/admin/include/html.tpl      |    3
 templates/admin/login.tpl             |   24
 templates/admin/managearticles.tpl   |    8
 templates/admin/managecategories.tpl |   49
 templates/admin/managecomments.tpl   |   58
 templates/admin/manageprofile.tpl    |   67
 templates/admin/modifyarticle.tpl    |   74
 templates/forbidden.tpl               |    6
 templates/include/head.tpl            |    3
 templates/include/html.tpl            |    2
 templates/layout/admin.tpl            |   15
 templates/layout/html.tpl             |   48
 templates/rss.tpl                     |   32
 27 files changed, 408 insertions(), 408 deletions()

Modifications du blog (128 Vues depuis le 2013/02/15)

Actuellement, je maintiens 2 versions différentes de cette application (le blog), dans deux langues différentes. Il faudrait vraiment que j'exporte tous les textes dans un fichier séparé, cela me permettrait de ne pas à avoir à modifier chaque site séparément à chaque modification. En effet, les textes sont en dur dans le code, et chaque site est modifié séparement à la main.

Je pensais soit à utiliser une base redis (nosql clé => valeur) ou charger un fichier texte dans une sorte de tableau associatif, permettant au sein de l'application d'appeler des textes par un identifiant ("texte_valider_commentaire" => "Ajouter mon commentaire") par exemple.

Retour au LISP (160 Vues depuis le 2013/02/15)

Je me suis remis au LISP depuis le début de la semaine. J'ai découvert et appris de nouvelles choses, surtout sur les framework clack et caveman. Je me suis bien amusé avec mod_lisp sur lighttpd, et sur l'utilisation du framework en fastcgi. Cependant, j'ai rencontré un problème en voulant développer sous OpenBSD, SBCL ne peut pas être compilé avec le support des threads, ce qui est assez gênant car le développement web nécessite les threads...

J'ai également apporté quelques modifications sur le blog côté administration. Avant, j'utilisais l'éditeur javascript "tinymce", qui se révélait très pénible à l'usage, n'affichait pas vraiment le rendu une fois validé et proposait peu d'options. Je viens de passer à CKeditor qui est bien plus sympatique à utiliser !

Je contribue ! (122 Vues depuis le 2013/02/04)

Devenant de plus en plus fan d'OpenBSD, je me suis décidé à l'installer en tant que machine principale. Problème, mon ordinateur portable n'est pas très compatible et bloqué au démarrage à cause de l'avoir :(

 

Pour une fois,devant ce genre de difficulté, je me suis décidé à rapporter le bug. J'ai du utiliser un appareil photo car écrire deux écrans de boot, ce n'est pas très évident.

Changement de serveur (129 Vues depuis le 2013/01/21)

Ce week-end, le site a changé de serveur. Ainsi, c'est tout le serveur minecraft (minecraft + mumble + mysql + forum + 2 blogs + 1 wordpress) qui a été migré sans trop d'encombres.

Le plus difficile à gérer était de passer de FreeBSD à Slackware64. Heureusement, tous mes scripts étaient bien écrits avec "#!/usr/bin/env bash".

Pourquoi quitter FreeBSD ? Ce système a parfaitement fonctionné tout le long de la vie du serveur ! Mais le nouveau serveur étant plus petit, l'utilisation de ZFS risquait de consommer beaucoup trop de ressources pour pouvoir vraiment l'utiliser, et de plus nous avons eu quelques soucis d'incompatibilité avec le serveur TF2 de Valve. Et puis, du changement, ça ne fait pas de mal ! En revanche, la technologie ne change pas, c'est toujours lighttpd + php-fpm pour la partie web, toujours SBCL avec quicklisp pour le blog.

Parser un gros fichier avec Perl (131 Vues depuis le 2013/01/04)

Je viens de tomber sur un problème que je n'arrivais pas à expliquer. Je dois parser un très gros fichier en perl, et je tombais sur l'erreur "out of memory" après que le processus perl ait consommé toute la mémoire disponible. Mais POURQUOI ?

 

Simplement parce que quand on fait "foreach ()" au lieu de while()", le fichier est chargé ENTIÈREMENT en mémoire avant de commencer la boucle.

Donc, utilisez while() lorsque vous devez parcourir ligne par ligne des gros fichiers (8 Go en l'occurrence) !

RRD::Simple (125 Vues depuis le 2012/12/18)

Si vous avez l'erreur
Can't locate RRDs.pm
il suffit d'installer le binding perl qui se trouve dans les sources de rrdtool. Je partage l'info car j'ai eu du mal à trouver la solution..
 

Légèreté ! (167 Vues depuis le 2012/12/02)

Un petit billet sur le blog pour montrer que le site n'est pas à l'abandon !

En ce moment je m'amuse comme je l'ai dit dans le message précédent à faire du développement sur mon Raspberry PI. J'ai les connaissances nécessaires en administration Linux pour avoir installé Munin + Redis + Lighttpd (cgi + proxy) sur ma SlackwareARM. Par contre, côté développement, j'ai beaucoup de choses à apprendre.

Mes 3 plus grosses réalisations WEB :

  1. Ce moteur de blog (LISP)
  2. Une page d'accueil réseau éditable avec des blocs partagés (LISP)
  3. Un bugtracker web simple (Perl)

Pour réaliser ces sites, j'ai utilisé des jolis framework, qui m'ont fait plus ou moins gagner mon temps (dans l'application LISP, il m'a bien fallut 10h pour trouver comment insérer mon module perso plus ou moins proprement). Maintenant que je développe sur mon raspberry pi, je me rends compte que ce n'est pas du tout optimisé. Les sites LISP prennent environ 150 Mo de mémoire, et le système de framework qui lance un moteur web qui répond en fonction de la route demandée, ça nécessite d'être recompilé à chaque modification de page (pas pour tous les frameworks mais c'est pénible quand même).

 

La solution est donc d'éviter d'utiliser des frameworks bien lourdingues, quitte à faire presque la même chose mais uniquement avec du développement maison. Est-ce bien ? Je ne sais pas, mais au moins c'est plus léger !

Exécuter un script CGI depuis un raspberry PI, c'est chaud ! Pour un "hello world" Perl, il faut 350 ms, juste pour un print(), ce qui est trop long. J'ai testé quelques langages, le plus rapide à exécuter est ... LUA !

 

Chose amusante, j'ai découvert LISP avec Emacs (voir un billet précédent en anglais), et j'ai découvert LUA avec Redis. LUA en CGI, ça répond en 50 ms ! Je suis encore en train de faire quelques petits essais pour vérifier les temps de réponse comparativement à Perl, et il faudra que j'essaie avec un serveur FastCGI.

 

Pour ceux qui connaissent pas LUA : Manuel de référence

Pour ceux qui veulent des librairies LUA : LuaRocks

Pour ceux qui veulent un LUA très rapide : LuaJIT

De l'avantage de travailler sur des petites machines (790 Vues depuis le 2012/11/25)

Je ne suis pas un hardcore-developpeur qui passe ses journées à faire des lignes de code, ni à lire des codes sources. Je m'amuse de temps en temps à essayer de nouveaux logiciels pour m'en servir sur mon serveur de jeu voire même les utiliser au travail plus tard.

Pour moi, LE critère essentiel d'une application est qu'elle doit être légère ! Ce qui signifie plus ou moins

  • Peu de dépendances, cela doit être facile à compiler
  • Ne doit pas mettre 3h à démarrer
  • Doit redémarrer facilement en cas de problème
  • Ne doit pas consommer de ressources de manière excessive

 

De nos jours, il est cependant difficile de remarquer la consommation de ressources, on dispose de tellement de mémoire, de cpu multicoeurs qui ne font rien et de capacité de disque. Cependant, installer l'application sur une machine très petite, du genre "raspberry pi", permet de voir quels sont les goulots d'étranglement (bottleneck, là où ça bloque).

 

L'intérêt d'utiliser des applications "légères" sont multiples d'après moi

  • Code source léger donc moins de risque de dysfonctionnements
  • Consommation de ressources raisonnable, ce qui permet de limiter le coût en machines ou d'impacter d'autres applications sur la même machine
  • Facile à maintenir si elle ne plante pas toutes les 5 minutes

 

Je hais vraiment les applications "usine à gaz" du style Zabbix, Tomcat, SeaMonkey ...

 

Vous voulez des logiciels légers ?

  • Munin : Monitoring
  • Lighttpd : Serveur web (utilisé sur ce site)
  • Nginx : Serveur web
  • Sqlite : Base de données (attention, ne remplace pas mysql/postgres/oracle, mais peut parfaitement convenir à beaucoup d'applications)
  • Redis : Base Nosql clé=>valeur
  • Rsync : Logiciel de transfert de données par le réseau


Il en existe plein d'autres, je ne peux pas tous les lister !

Français ! (117 Vues depuis le 2012/11/24)

Le site sera désormais en Français ! :)

Pourquoi ?

  • C'est plus facile pour moi d'écrire de longs articles en français qu'en anglais
  • Mes amis peuvent commenter et lire de quoi je parle
  • J'ai un autre blog en anglais, plus spécialisé (planet-bsd) mais rien en français

Pour le moment, je me demande si je retraduis en français les articles existants ou si je les laisse tels quels en anglais... On verra !

BTRFS : The end (205 Vues depuis le 2012/11/02)

As I said in the previous post, I was trying BTRFS on my two laptops. This finished to be a disaster for the one with BTRFS as root partition, it was taking long minutes to boot. The other using BTRFS as a home folder does not seem less or more responsive that it could be with ext4.

 

I do not like a lot BTRFS. When you compare it to ZFS or HammerFS, it does not seem as cool as them.

 

With ZFS and HammerFS, I can sync and backup my snapshots with the utility. BTRFS seems to be getting this option but it is far from being production ready.

ZFS and HammerFS let me use a SSD as cache, BTRFS does not and no mainline kernel module let me do that, only non-official patch, which is something I do not want to use (this is my opinion, do what you want with your kernel ! :) ).


ZFS and HammerFS have both comprehensive command line tool, BTRFS's utility is highly complicated.

 

On integrity side, I do not have any problem at the moment with BTRFS, but I am not trusting it.

Playing with BTRFS (159 Vues depuis le 2012/10/22)

Hi everyone, I had not a lot of time to post on my blog.

Some weeks ago, I installed OpenSuse 12.2 with btrfs as the only filesystem. Now the result ? This is SLOW ! The boot is very slowed down compared to ext4. I think the weirdest thing is that on the login screen (KDM), when I type the first letter of my password, the disk begins to seek and it freeze for 1 second. If I don't make a pause while typing my password after the first letter, nothing is typed.

 

I don't know what KDM is doing when you type your password, but something disk related is happening. Even if it has an uptime of 2 hours of login screen, when I start to type I can hear a little "crrrrrrr".

 

I am so crazy that I converted my /home of my other laptop from ext4 to btrfs using btrfs-convert ! It worked ! I don't have to complain with btrfs as /home partition, for the moment.

 

Next step, I'm going to try "compress=lzo" as a mount option, from this phoronix benchmark, it seems the best way to get more performances.

Slackware 14.0 Released ! (151 Vues depuis le 2012/09/29)

Here we are, the latest Slackware is out !

 

Official announcement

 

For European users, I recommend this mirror which is usually extremely fast (10 Mb/s)

 

What's new since 13.37 ?

  • NetworkManager is available if you want to use it to configure your network
  • Kernel 3.2.29
  • Gcc 4.7.1
  • Apache 2.4.3 + Php 5.4.7
  • Perl 5.16.1
  • Ruby 1.9
  • Python 2.7.3
  • Kde 4.8.5
  • Xfce 4.10
  • Firefox / Thunderbird 15.0

Slackware 14.0 RC5 (167 Vues depuis le 2012/09/20)

Slackware 14.0 is now in the RC5 state. This is the VERY VERY latest release candidate before release of 14.0.

Here are the links for direct downloads with the checksums.

Here is Patrick's announcement in the changelog :

Here we go one more time with Slackware 14.0 release candidate 5. Really, this time it is not a drill! Everything is in place and ready to release at this point, and unless there's some kind of howstopper found (which doesn't seem too likely after all the testing that's happened), the release can be expected soon. After careful consideration and a considerable amount of internal testing I did relent to give the kernel one more bump to 3.2.29, so of course 3.2.30 was released a couple of hours ago. ;-) But that's not a showstopper, and it seems to be time to get off the never-ending kernel upgrade treadmill until the next cycle begins. Speaking of kernels, I added sample .configs for all the 3.x kernel branches in /testing. So test away, and if there are any new problems (or old ones that we missed), let us know soon!

Slackware 14.0 RC3 (160 Vues depuis le 2012/08/26)

Slackware 14.0 is now in the RC3 state. This is the latest release candidate before the real release.

 

Here are the links for direct downloads with the checksums.

 

Here is Patrick's announcement in the changelog :

This is Slackware 14.0 release candidate 3, and is hopefully the last stop
on our long road to a stable Slackware release soon. After hearing that
the 3.4.x kernel series will have long term support, I tested 3.4.9 hoping
that it would prove stable enough to use that as the release kernel, but
there are problems with an oops in kernel/time/clocksource.c every few boots.
Given that the 3.2.x series has been very stable, it seems prudent to stick
with that for release, and 3.2.28 is going to be the release kernel. So,
one more round of testing. Let me know if there are any problems. Thanks!

Puts some Emacs in your Firefox (165 Vues depuis le 2012/08/23)

Today I found a very nice Firefox extension which adds to Firefox some Emacs keybinding, like C-a, C-e, C-s etc...

This is very useful when you are used to Emacs shortcuts and you miss them in Firefox. The extension modify the behaviour of Firefox, both in navigation and editing. You can find Firemacs here.

 

If you want to use only Emacs for editing (or another favourite editor) in Firefox, you can use "It's All Text!". This extension add a little button near every textarea, when you click on "Edit", it opens your favourite editor and you can modify, when you quit your editor, the textarea is updated in Firefox. I was using it before but it's a bit heavy when you only want to edit a little message.

Armedslack on Raspberry PI (156 Vues depuis le 2012/08/21)

I'm a Slackware user, and since I found I can install my favorite system on my Raspberry Pi, why not try ?

 

There are some things to understands about the Raspberry PI, things are differents in the ARM world

  • There is no BIOS, the firmware to boot the Raspberry PI has to be on a FAT partition at the beginning of the card. You have a few files to put with the kernel, and there are differents firmware allowing you to choose the memory allocated to the GPU (128/64/32/16 Mb)
  • If you unplug your raspberry pi while it's booted, the FAT partition get broken and it won't boot anymore, this is boring, you should keep the files on another computer and copy it again when it's broken.
  • You can't boot directly from PXE nor boot without SD card

You will find a lot of informations about the Raspberry PI kernel for Slackware on this page.

 

The process to install is quite easy :

  1. Download the image on this server it's named "raspi-slack-installer_01Aug12.img.xz"
  2. unxz this and put in on your SD card (you need at least 2 Gb)
  3. Boot your raspberry PI
  4. You get the usual Slackware Installer ;)
  5. Once it's installed, you have to install the kernel and firmware on the card from the packages, it's written in the README but I add it here. Type : ROOT=/mnt installpkg /raspi-extra/kernel* /raspi-extra/raspi*
  6. You can reboot and use your Rapsberry PI powered by Slackware !

 

The X11 performance isn't that great, you can forget about Firefox the rendering used is too consuming and the cpu is always at 100%. Instead of Firefox, you can use Dillo which require only the "fltk" library, everything compiles easily. Dillo isn't as great as firefox (javascript and css aren't well supported), but it's a bit more friendly than Lynx/Links.

Play Minecraft on 64 bits Linux (156 Vues depuis le 2012/08/17)

If you are like me, using a 64 bits only distro (which doesn't have a 32 bits library compatibility), when you start Minecraft you get this error after clicking on "Login" :

 

Exception in thread "Thread-3" java.lang.UnsatisfiedLinkError: /home/charles/.minecraft/bin/natives/liblwjgl.so: /home/charles/.minecraft/bin/natives/liblwjgl.so: mauvaise classe ELF : ELFCLASS32 (Possible cause: architecture word width mismatch)
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1939)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1864)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1825)
        at java.lang.Runtime.load0(Runtime.java:792)
        at java.lang.System.load(System.java:1059)
        at org.lwjgl.Sys$1.run(Sys.java:69)
        at java.security.AccessController.doPrivileged(Native Method)
        at org.lwjgl.Sys.doLoadLibrary(Sys.java:65)
        at org.lwjgl.Sys.loadLibrary(Sys.java:81)
        at org.lwjgl.Sys.<clinit>(Sys.java:98)
        at net.minecraft.client.Minecraft.F(SourceFile:1857)
        at aof.<init>(SourceFile:20)
        at net.minecraft.client.Minecraft.<init>(SourceFile:77)
        at anw.<init>(SourceFile:36)
        at net.minecraft.client.MinecraftApplet.init(SourceFile:36)
        at net.minecraft.Launcher.replace(Launcher.java:136)
        at net.minecraft.Launcher$1.run(Launcher.java:79)

All you have to do is to type this before (adapt with your java path)

  • export LD_LIBRARY_PATH=/usr/lib64/java/jre/lib/amd64/
  • java -jar minecraft.jar
  • play !

Emacs little tricks (156 Vues depuis le 2012/08/17)

Please find a few things I discovered while using Emacs, it could be useful to someone, perhaps

  • Go to line : M - x goto-line RET line number RET
  • Switch words : M - t  (it switchs the two closest words)
  • Delete word before : M - backward
  • Delete word after : M - d
  • Go to the top : M - <
  • Go to the end : M - >



A a few things to set in your emacs.d

 

Disable the autosave (which add a boring ~ at the end of your files)

  • (setq backup-inhybited t)
  • (setq auto-save-default nil)

 

Show parenthesis parents (supports () {} [])

  • (show-paren-mode t)

 

Keep the last place of your cursor in files, VERY USEFUL !

  • (require 'saveplace)
  • (setq-default save-place t)
  • (setq save-place-file "~/.emacs.d/saveplace")

Slackware 14.0 RC2 (148 Vues depuis le 2012/08/17)

Slackware 14 is now in the RC2 state,

Here are the links for direct downloads with the checksums.

 

Here is Patrick's announcement in the changelog :

 Getting close! Hopefully we've cleared out most of the remaining issues
and are nearly ready here. We'll call this release candidate 2.
Unless there's a very good rationale, versions are frozen.
Any reports of remaining bugs will be gladly taken, though.
       #include <more/cowbell.h>

PC-BSD release 9.1-RC1 (144 Vues depuis le 2012/08/17)

The PC-BSD system has released a first release candidate for its future 9.1 version.

You can find a mirror on this link : http://www.pcbsd.org/getmirrors.php?url=9.1-RC1

I don't know much about the differences between the beta and the release candidate as the PC-BSD blog doesn't have announced this yet.

Happy testing !

Use a file as a block device in Linux (208 Vues depuis le 2012/08/14)

If you want to use a file as a block device to use it like a disk, just type in root

  • losetup -f /home/me/myfile

If it's the first time you do it since the boot, the device will be /dev/loop0, you can use it as you want like any block device. You can create partitions, format it, install some virtual machines on it. It's different than using a filesystem in a file if you want partitions.

 

I found it today when I wanted to open a disk image file of Armedslack (Slackware Arm version). For more information, "man losetup" ;)

 

By the way, if you want to use a filesystem in a single file (to try btrfs for example ?) just do this :

  • dd if=/dev/zero of=my-file bs=10M count=100 (it will create an empty file of 10M * 100)
  • format it, in btrfs for example: mkfs.btrfs my-file
  • mount -t btrfs my-file /mnt/a-btrfs-disk

 

Why I like functional programming (156 Vues depuis le 2012/08/13)

I discovered LISP two weeks ago while I was searching what language is used to write Emacs plugins. I've been looking the source code of the mediawiki module and the language was totally new for me.

After I little search on Google, I found that Emacs was itself a LISP interpreter, and that the "real" LISP language is "Common LISP". I've been reading LISP is a functional language, I did know "Oriented Object Programming" or "Iterative programming" but not this one.

I was so intrigued by this language looking very different than what I've used to see (Ruby, Perl, Php, C) that I choose to give it a try (and even a BIG try). I've been feeling discouraged a LOT.

 

As a Common LISP learner, I would like to share some thoughts :

  • The documentation isn't very user-friendly
  • The libraries are poor
  • Making a package and organizing the sources is VERY HARD and I still don't understand it
  • Quicklisp is your friend
  • Tutorials are poors
  • Use the SBCL interpreter/compiler
  • What is the meaning of this (#p"a string here") ???? I don't find anywhere what is that syntax !

I have been discouraged a couple of times, but finally, I succeeded to make in one week (as an extra work) this blog using a database and which seems bug-free. Functional programming is a very interesting approach. It's like if you was doing some Java with everything in the return statement.

Java Version

public String myfunc(int a, int b) {
      return (if(a==b) 42; else 43;);
}

Common LISP version

(defun myfunc(a b)
      (if (= a b)
            42
            43))


I'm not sure this code will compile in Java, but you get the idea ? In LISP you create a lot of little functions that you can use, due to the functional style, you don't use a lot of variables.

If your function doesn't work, it often means that one function used inside doesn't work. In others traditional languages, you'd have to check if you use the correct variable name (php let you use variables not declared before), if the variable has the correct value, if the variable used is the good one and is the function use you not buggy ?

 

I've been digging about functional programming paradigm and found the following languages

  • OCamL
  • Erlang
  • Scheme
  • Clojure
  • Common Lisp
  • Haskell

I've been very interested by Haskell and Clojure. The first is a pure functional language, it means that you have NO ESCAPE, it's functional only. It looks very interesting, you can find some very nice tutorials well explained, free and comprehensible. But Haskell is definitely something different ! For example, you can't (easily) output some text on your console while your app is meant to do something else because your function "main" isn't supposed to have a I/O output.

The second, Clojure, is full of promises. It's like Common Lisp but with JAVA back-end, JAVA libraries available and a nice documentation. This language is very close of Common Lisp, it's said to run on any system with a Java interpreter, but I don't know about performances...

I definitely want to try Haskell more in-depth, but the road seems hard.. Maybe I should search a book about it :)

Release of LISP web software (146 Vues depuis le 2012/08/12)

I plan to release the source code which powers this blog.

It'd be very easy to set-up your own blog with this. All you would need to have your own blog is SBCL with quicklisp. I'm using an sqlite database, so no database server are required.

I'm going to make some benchmarks with sqlite next week to see if it could handle a blog with thousands of articles and comments.

 

At the moment, a few things hinders me to release the sources

  1. How to publish it ? Github, a tar.gz, my fossil repo ?
  2. I'm not sure the code is very good, I prefer improve it before sharing it
  3. The code could change a lot if I plan some heavy modifications, I'd like to share something nicely polished
  4. In fact, the sources are already available here

 

Also, you can now subscribe to my RSS feed !

Slackware 14.0 RC1 (148 Vues depuis le 2012/08/10)

Today is released the Release Candidate of the 14th Slackware !

Here is Pat's announcement :

Good hello, and happy Thursday! Mercury went direct early yesterday morning, and it was like the bugs started to fix themselves. It's almost enough to get me believing in that hocus-pocus nonsense! So, here's a bunch of updates that fix all of the reported issues in the beta, and we'll call this the 14.0 release candidate 1. Still some updates needed for the top-level documentation files, but we're clearly in the home stretch now (finally). Test away, and report any remaining bugs!

 

You can download the ISO for both 32bits and 64bits platform. I recommend the use of 64 bits nowadays !

 

Slackware 14.0 RC1 features

  • KDE 4.8.5
  • XFCE 4.10
  • Firefox 14
  • Thunderbird 14
  • Linux 3.2.23
  • Mesa 8.0.4
  • MySQL 5.5.25
  • GCC 4.7.1
  • and a lot more !

I'm using Slackware-current since more than 6 months, it works great ! Maybe the boot time is slow compared to others mainstreams linux distributions, you don't have 20000+ packages to install and you don't have the top performances tuning, but your system works, don't get broken every update and you don't have to upgrade every 6 months. Think about it :)

Fossil is software of the day ! (167 Vues depuis le 2012/08/09)

Today I'd like to tell you about "Fossil".

Fossil is a tool to manage your sources with versions, but you can also start it as a stand-alone server and get instantly a bug tracker, a wiki, a source browser and more.

 

To install it, use your package manager if fossil is packaged, or go on http://www.fossil-scm.org/download.html and download the linux binary, put it in /usr/bin/ and that's all !

 

How to 

If you want to make a new repository, Fossil will create a file, not a folder. Type "fossil init my-repo.fossil". This file contains everything from the tickets in the bug trackers, all the versions of you sources and everything using in the fossil repo, it's partly made of an sqlite database (the author of fossil also made sqlite).

Then, once you have your repo, you have to open it in a folder in order to work, for example, create in the same directory a folder "development", enter in and type "fossil open ../my-repo.fossil". You'll only see a file _FOSSIL_ showing you that you are in a fossil folder.

Now, create some files and use "fossil add thefiles", it's like "git add".

When you want to commit, type "fossil ci", you'll be prompt for a summary of the changes.

If you want to see the changes , type "fossil stat", you can see the files not versioned with "fossil extras".

If you clone a fossil file (it works by ssh), autoupdating is set on by default, that means that once you commits, the cloned repo receive the "push".

Put a linux ISO on an usb drive (142 Vues depuis le 2012/08/08)

If you don't want to waste CD anymores when you want to try a Linux distribution, you can use an USB memory disk.

The big deal with it, is that few linux distributions are shipped as usb image.

 

Hopefully, you can use the command "isohybrid" which comes with the "syslinux" package. It's very easy of use.

  • isoybrid my-linux-distro.iso

That's all !!! It takes only a second to make it bootable from USB. Once you used isohybrid on your ISO, type one of this command as root, expecting that your USB drive is /dev/sdb

  • cat my-linux-distro.iso > /dev/sdb

or

  • dd if=my-linux-distro.iso of=/dev/sdb bs=2M

 

Remember, it works only for Linux iso !

Why I switched from Vim to Emacs (466 Vues depuis le 2012/08/07)

I'm a long time user of VIM, when I came into the linux world, I learned Vi and Vim and stayed with it. I knew that Emacs was also well known and that a war existed between the two editors, but every time I tried Emacs I was lost. Each time I started emacs, I didn't know what to do, how to save, how to open a file, how to quit ? I have been looking for some help, I found that I need to type "Ctrl+x then Ctrl+s" to save, and "Ctrl+x then Ctrl+c" to quit, explained as "C-x C-s" and "C-x C-c" which are way more explicit when you don't know about Emacs...

But few weeks ago, I told myself "Okay, this week, I want to try Emacs for real !". I added some alias in my .profile file, so vi and vim were starting emacs, my only escape to not use Emacs was to start from the full path /usr/bin/vim. I also printed a cheat-sheet I found on the web and tape it on the wall.


At the beginning, I was struggling with all the short-cuts, then it became natural to open a file, save it and close it. My main problem was that at first, I tried to learn Emacs to works like Vim, but it's a bad idea. They are different.

In Emacs, you have to know lot of short-cuts, but you can do it while you type while in Vim, you have to switch between insert mode and command mode, and you still need to now some commands.

I don't want to use vim any more since I started to use Emacs for real ! I'm using different operating systems on different machines. When you use Vim, it's VERY hard to reproduce exactly the same behaviour, you need to have the same plugins, the same vimrc and the same version of Vim. At least with Emacs, it feels constant between systems and computers, without needing to configure it.

In conclusion, if you want to use Emacs, try it for real with the will of learn about it.

Manage a mediawiki with EMACS (1486 Vues depuis le 2012/08/05)

Hi

At work I'm using a private mediawiki available on LAN for my technical documentation. When it comes to edit it, it's a pain from firefox. I tried to use a plugin to edit a textarea in another editor, but it was very boring to use.


I discovered wikipediafs which is a FUSE file-system to edit mediawiki articles. It works randomly and I lost some hours of works because some of my files have been truncated.


Then, I found that Emacs had a plugin to connect to a mediawiki, fetch the page and save it.

 

Follow the instructions to install it, please correct the paths if you don't use the same.

  • Download this file :

http://www.emacswiki.org/emacs/mediawiki.el and put it in "~/.emacs.d/lisp/"

  • Add this to "~/.emacs"

(add-to-list 'load-path "~/.emacs.d/lisp/")
(require 'mediawiki)

  • Start emacs and press:

M-x load-library
mediawiki
M-x customize-variable
mediawiki-site-alist

  • Edit the site to match your mediawiki config

 

When you want to edit the wiki, you have to first set the Wiki you want to use, if you named it "Wikipedia" type the following :

  • M-x mediawiki-site
  • Wikipedia
  • You enter in the first page of the Wiki, you can edit it and save it as a regular file. Note that when you save, you are asked for a summary that will appear in the history

If you want to open another file in the same session, type

  • M-x mediawiki-open
  • Name of the article
  • Edit it and save it !

S'abonner au flux RSS

Icône RSS