Arduino Tracto Turtle

Un petit montage Arduino, le robot Turtle de DFRobot, montage assez simple et connexion de quelques capteurs.
Au programme :
– LED éclairage avant blanche
– LED signalisation obstacle arrière rouge
– détection obstacle avec capteur ultra-son
– bipper lorsque la marche arrière est enclenchée
– récepteur infra-rouge pour prise de contrôle par télécommande

L’ensemble du montage m’a pris 2h30, programme inclus. Je comprends l’engouement pour ce type de plateforme, c’est impressionnant d’efficacité pour s’amuser ou prototyper quelque chose de fonctionnel.

Vous voulez vous lancer ? Il y a plein de tutos sur le net, plein de boutiques en lignes, et si vous avez des questions, n’hésitez pas en commentaire.

Try … Catch …

Ça y est, j’ai trouvé le fumier de ma journée.

Quel est le bisounours qui a codé ça dans Prestashop dans la classe MailCore ?

try {

<100 lignes de code>

}
catch (Swift_Exception $e) {
return false;
}

Evidemment, il y avait une exception levée et je ne voyais rien. 1h30 de recherche parce que ce lapin de 2 semaines a eu la flemme de remonter proprement l’erreur ! Chiasse !

OVH mutualisé : ça rame dans la semoule

Depuis quelques jours, de nombreux sites hébergés en mutualisés affichent des performances très fortement dégradés.

Temps de réponse de plus de 10 secondes, voir timeout, erreur SQL, erreur 500, etc.
Que se passe-t-il chez OVH ?

Un exemple du temps de réponse d’un site hébergé sur l’offre “Pro” chez OVH sur ces 3 derniers jours :

C’est passager ? Ou les rats doivent quitter le navire ?

De nombreux autres webmasters s’inquiètent du même problème, mais aucun retour explicatif de la part d’OVH… Allo ? Ou plutôt devrai-je dire, Oles es-tu là ?
http://forum.ovh.com/showthread.php?t=84218

Geovomit

Je n’en peux plus de cet API Geoportail.
De la daube en boîte, vraiment.

Du jour au lendemain, l’utilisation de l’API en version 1.2 explose en vol (comprendre ne fonctionne plus sur les sites sur lesquelles elle est déployée). Je ne demande même pas une retro-compatibilité, simplement que l’outil fonctionne tel qu’il est !

Et merveille de la documentation de geoportail : http://depot.ign.fr/geoportail/api/doc/fr/migration/migration_js.html

         * Il se peut que l’init soit exécuté avant que l’API ne soit chargée
* Ajout d’un code temporisateur qui attend 300 ms avant de relancer l’init

C’est une blague ? C’est dégueulasse comme méthode, sans parler de la fonction qui code ce temporisateur.
Il reste vraiment une masse de boulot pour que l’intégration de geoportail soit au niveau de google maps (qui étrangement, ne m’a jamais demandé de mettre un temporisateur…).

Et comble du comble, le code montré en exemple n’est pas copiable… Ils ont mis des screenshots ! Bande de boulets.

Et cherry on the shit : http://www.developpez.net/forums/d1243782/applications/sig-systeme-dinformation-geographique/ign-api-geoportail/exemple-http-api-ign-fr-tech-docs-js-examples-geoportalmap_gazetteer2-html-erreur-404-a/

> Certaines projections(IGNF:LAMBE, EPSG:27572 et EPSG:27582) ne sont pas fournies dans l’API standard, ce qui génère ces erreurs 404.

 

> En clair, est-ce que ça veut dire qu’il y a un défaut que je devrais corriger dans mon code ?

 

> Non, rien à toucher car c’est dans le code des APIs que l’on charge automatiquement les projections : si on ne les trouve pas, on va les chercher ailleurs et là aussi on ne les trouve pas. Donc, rien à modifier côté application cliente.

Il n’y a que moi que ça choque que l’API provoque 5 ou 6 erreurs 404 / 405 et que ça soit _normal_ ? Il n’y avait pas moyen de gérer ça proprement ? C’est vraiment prendre les développeurs et le web pour une déchetterie…

 

Disable auto save in PHPStorm

Here is the only way to disable autosave in PHPStorm (by default, this IDE autosave your files, you don’t have to worry about it).

settings / General / confirm application exit : checked
settings / General / confirm application exit : save file on frame deactivation : unchecked
settings / General / confirm application exit : save files automatically : unchecked
settings / Editor / Editor tabs / mark modified tabs with asterisk : checked

Conversion Mysql -> Sqlite

Après quelques minutes heures de batailles, enfin un script qui fonctionne pour convertir votre schéma + vos data Mysql vers Sqlite. Merci à nfuria sur SOF

Je pensais la conversion simple via une option directe dans mysqldump… Pas du tout, c’est le parcours du combattant pour passer du format Mysql à Sqlite. Ce script est le meilleur : il fonctionne d’un coup (j’en ai testé 5 autres avec différents niveau de succès). L’astuce du script est que plutôt que vouloir retravailler le dump mysql à la main en virant les caractères non acceptés par sqlite ou en supprimant certaines instructions SQL, il se base sur le module (fiable) SQL::Translator de Perl.

Nécessite donc d’avoir le paquet “sqlfairy” installé.


#!/bin/sh
#===============================================================================
#         USAGE: ./mysql2sqlite.sh  
#   DESCRIPTION: Converts MySQL databases to SQLite
#                Triggers are not converted
#  REQUIREMENTS: mysqldump, Perl and module SQL::Translator, SQLite 
#===============================================================================
if [ "$#" = 2 ]; then
    USER="$2"    
else
    echo "Usage: $0  "
    exit
fi
if [ -s $1.db ]; then
    read -p "File <$1.db> exists. Overwrite? [y|n] " ANS
    if [ "$ANS" = "y" ] || [ "$ANS" = "Y" ] ; then
        rm $1.db 
    else 
        echo "*** Aborting..."
        exit
    fi
fi   
# extracts the necessary structure for SQLite:
mysqldump --skip-triggers --skip-add-locks --routines --no-data --compatible=ansi \
    --compact -u $USER --password $1 > /tmp/$1_$$_str.sql
# verify
if [ ! -s /tmp/$1_$$_str.sql ]; then
    echo "*** There are some problem with the dump. Exiting."
    exit
fi
# translates MySQL syntax structure to SQLite using the script "sqlt" of the
# perl module SQL::Translator (that corrects the foreign keys, indexes, etc.)
sqlt -f MySQL -t SQLite --show-warnings /tmp/$1_$$_str.sql \
    1> /tmp/$1_$$.sqlite 2> /tmp/$1_$$_sqlt.log
# verify
if [ ! -s /tmp/$1_$$.sqlite ]; then
    echo "*** There are some problem with the sql translation. Exiting."
    exit
fi
# adds statements to allow to load tables with foreign keys:
echo "PRAGMA foreign_keys=OFF;" >> /tmp/$1_$$.sqlite
echo "BEGIN TRANSACTION;" >> /tmp/$1_$$.sqlite
# extracts the data (simple inserts) without locks/disable keys, 
# to be read in versions of SQLite that do not support multiples inserts:
mysqldump --skip-triggers --no-create-db --no-create-info --skip-add-locks \
    --skip-extended-insert  --compact -u $USER \
    --password $1 >> /tmp/$1_$$.sqlite
# adds statements to finish the transaction:
echo "COMMIT;" >> /tmp/$1_$$.sqlite
echo "PRAGMA foreign_keys=ON;" >> /tmp/$1_$$.sqlite
# correct single quotes in inserts
perl -pi -e ' if (/^INSERT INTO/) { s/\\'\''/'\'\''/g; } ' /tmp/$1_$$.sqlite
# load the sql file and generate the SQLite db with the same name 
# of the MySQL database
sqlite3 $1.db < /tmp/$1_$$.sqlite 2> /tmp/$1_$$sqlite.errlog
# verify
ERRORS=`cat /tmp/$1_$$sqlite.errlog | wc -l`
if [ $ERRORS = 0 ]; then
    echo "* Conversion complete. Verify the file < $1.db >"
    rm /tmp/$1_$$*
else
    echo "*** There are some problem. Verify the files < /tmp/$1_$$* >"
fi

Diem + CKEditor + KCFinder + session

Si vous utilisez Diem.
Et que vous utilisez CKEditor pour l’édition WYSIWYG.
Et que vous avez ajouté KCFinder pour la gestion des fichiers (images, pdf, upload divers).
Alors pour configurer une authentification automatique sur KCFinder via l’authentification dans le projet Diem :

  1. ajouter dans kcfinder/core/uploader.php, avant le session_start() : session_name(‘symfony’);
  2. créer une action dmUserActions (cf documentation Diem) avec dans la méthode redirectSignedInUser les 2 lignes suivantes :
  • $_SESSION[‘KCFINDER’] = array();
  • $_SESSION[‘KCFINDER’][‘disabled’] = false;

Vario solaire open source pour parapentiste

Pour les amoureux du parapentes, un projet de vario solaire est en train de voir le jour : le BipBip

Qu’est ce que le BipBip ?

C’est un variomètre solaire pour parapente et delta aux fonctionnalités avancées !

  • Information de montée standard (fréquence et tonalité)
  • Détecteur d’approche de thermique: zérotage (désactivable)
  • Alarme de descente réglable et désactivable
  • Deux niveaux de volume réglable
  • Un simple bouton on/off
  • Très sensible
  • Solaire avec plus de 20h d’autonomie sans soleil

Je vous invite à suivre le blog de l’ingénieur parapentiste qui est en train de finaliser ce produit, on peut suivre les étapes de conception.

Les API Google deviennent payantes

Aie !
http://www.clubic.com/internet/univers-google/google-maps/actualite-455222-google-maps-developpeurs-devront-payer-acces-api.html

Je ne comprends pas du tout la stratégie Google sur ce coup là.
Pour avoir utiliser nombre de leurs services sur de nombreux sites et portails développés, leur stratégie de passer en mode “limité” ou “payant” risque de les pénaliser au long terme.
Ou alors, ils sont sûrs de leur coup et sont persuadés que personne d’autres ne peut offrir des API ou des webservices de leur qualité.

En tant que développeur, je demanderai 2 ou 3 fois au client si il est bien sûr de vouloir utiliser une API Google qui risque ensuite d’être limitée ou payante. Ça crée un climat “d’insécurité” et qui rappelle à bon escient que rien n’est gratuit (sauf en apparence).

Aller, il est temps de booster les projets libre comme OpenStreetMap et se libérer de l’addiction aux services Google !