Parce que Internet c’est bien. Respectons les; Aidons les :

Soutenez La Quadrature du Net contre ACTA et au-delà !

Posted in Uncategorized | Leave a comment

Synchroniser ses comptes de la caisse d’epargne avec money ou équivalent

Je suis un utilisateur de Grisbi le logiciel de comptabilité personnel et je suis un codeur flemmard alors j’ai créé un petit script permettant d’automatiser le téléchargement des opérations pour mon compte à la caisse d’épargne.

Installation:

Le script à besoin de php et notamment de :

  • php5-cli
  • php5-curl

Renommez le fichier sample.settings.php en settings.php, puis éditez-le pour noter vos identifiants de connexion à l’interface web de la caisse d’épargne. Ensuite pour chaque compte ajoutez le numéro iban partiel.

Lancez le script en ligne de commande : php app.php ou réalisez un cron pour lancer l’import de manière automatique.

Fonctionnement :

La caisse d’épargne limite le téléchargement de l’historique des transactions à 60 jours, il faut donc lancer ce script au minimum tous les 2 mois.

Le script va faire toutes les opérations que l’on doit faire habituellement à la main et mémoriser la date du dernier import. Ensuite pour chaque compte il va enregistrer un fichier .qif ou .ofx que l’on pourra importer dans son logiciel de comptabilité.

Si du monde est intéressé, je le poserai sur github et éventuellement je peux tenter de rendre ça plus facile à utiliser.

[mise à jour du 5/12/2011]

J’ai enfin pushé le script sur github : https://github.com/esion/import-operations-caisse-epargne-script

Posted in Code, Informatique | 5 Comments

Monorail cat – the game

Il y a quelque temps j’ai participé à une GameDevParty à Lyon, bien sûr c’était fun et on a enfin finalisé le jeu (full html5 + javascript et open source).

Ça s’appelle Monorail cat – the game et une appli Facebook est dispo.

Le code source est sur github.

Posted in Code | Leave a comment

Compact disc

Depuis un petit moment je me suis mis en quête de vieux albums qui ont bercé ma jeunesse et la suite chez les disquaires d’occasion, un peu de Body Count et de Urban Dance Squad et d’autres. Me voilà parti pour encoder riper pirater (c’est pas moi qui le dit) et l’avoir prêt de moi sur ma ubuntu box ou éventuellement iPhone. Le cd finira alors dans une étagère prenant une place folle.

Et au fur et à mesure je me rends compte à quel point le support cd est pourri.

Tout le monde le sait, ça se raye, les boitiers “crystal” coutent chers, sont moches et cassent trop facilement.

Serait-ce Radiohead qui nous apportera la nouvelle voie ? Mais là j’ai de sérieux doutes; on a toujours besoin de matérialiser la musique. Et que ce soient des explications, des images ou photos de manière à rentrer dans un certain univers sur une jaquette ou livret, cela reste important. Je me demande si l’on peut dissocier le visuel de la musique : une affiche, un clip, un t-shirt …?

Aussi, un morceau ce n’est pas la même chose qu’un album. Peut on dire qu’un peintre est allé au bout de son œuvre en dessinant un tiers de son tableau?

 

Bon c’est pas tout, je vais voir quand est-ce qu’ils sortiront les clés usb-album à l’effigie de groupes contenant la discographie de ceux-ci … sans drm bien sûr.

Posted in Musique | Leave a comment

hadopi youpi

Riposte graduée ? - La Quadrature du Net

Ça a démarré jeudi dernier, l’internet français tend à devenir un media sur-controlé et censuré.Tiens ça me fait penser à la télé, le medium démoniaque qui lobotomise les gens.

Quand est-ce que  l’on va commencer à voir les virus hadopi infecter le parc informatique français? On ne sait pas comment les oeuvres seront protegés par hadopi (bin oui, ils n’ont pas fournit les specifications n’est-ce pas) mais en tout cas un programme qui s’execute à l’insu del’utilisateur pour renvoyer des informations le concernant via internet … moi j’appelle ça un virus. Peu importe les choix technologiques de protection, tout le monde est présumé coupable(et tout le monde l’est en définitive). Comme pour "les grands mères pirates", on devrait voir arriver des sanctions exemplaires; vraiment ça va être magnifique.

Posted in Informatique | Leave a comment

Lutter contre le spam et les chaines d’emails

Internet, le partage de l’information, de la connaissance et des trucs rigolo sur lesquels on est tombé :)
On a tous reçu par mail du spam pour du viagra ou des chaînes pour sauver la petite lili atteinte de la leucémie en transférant à tous cet email sinon on risque de se faire flageller à coup de nouilles trop cuites par le clown de Stephen King. Certains auront aussi eu la « chance » d’avoir reçu des mails phishing (hameçonnage). Et bien sûr sans oublier d’éventuels vrais virus qui trainent.

On me dit souvent « comment je peux recevoir du spam alors que je n’ai jamais donné mon email ? ». Premièrement cette adresse elle doit forcement être quelque part dans les contacts d’un amis, sur un site mal sécurisé ou peu importe , ensuite il suffit d’avoir reçu au moins une fois un chaîne. Un des problèmes est que la plupart des gens renvoient les chaînes en copie, c’est à dire que tous les emails précédents sont visibles ce qui fait le bonheur des spammeurs et fraudeurs quand ils récupèrent en retour ces adresses, c’est une boucle sans fin.

Une solution ?

Il ne sera pas possible de complètement éradiquer le spam en un claquement de doigts mais on peut lutter contre avec un peu d’esprit critique et quelques bonnes pratiques.

  1. Les chaînes « du cœurs » ou hoax: jamais on ne pourra sauver quelqu’un en renvoyant 10000 emails surtout que ce quelqu’un est surement fictif. Pour le vérifier un site : http://www.hoaxkiller.fr
  2. Les chaînes rigolotes : ça fait toujours sourire de voir « le chien qui fait du skate » du coup on le fait tourner aux collègues, copains, familles, martiens ou anciens profs peut être. Alors la copie-invisible est là pour ça!

Copie carbone invisible

Certains auront remarqués les champs Cc et Cci lorsqu’ils écrivent un message. Cc ou Copie carbone permet d’envoyer un message à plusieurs destinataires. La grande différence avec le champ Cci (copie conforme invisible) est que les adresses des différents destinataires ne sont pas affichés. Ainsi si tout le monde fait le petit effort de transférer les messages en cci et bien je me sentirai vachement mieux et surement pas mal de monde seront reconnaissant.

Je vous invite à transférer ce message en Copie carbone invisible (Cci).
Merci d’avance,
David.

Posted in Informatique | Leave a comment

web App : export des contacts en csv

Je viens de rendre publique une petite application web qui permet d’exporter les contacts d’un iphone au format csv originalement conçu pour yahoo.

L’appli nécessite un serveur web avec php et le module sqlite pour fonctionner ainsi que la base de données de contacts de l’iphone que l’on peut recuperer grâce à ssh sur un iphone jailbroken.

iphoneaddressbook est disponible sur github et ici la démo.

Évidemment c’est open-source, have fun.

Posted in Symfony | Leave a comment

De la pagination dans les “objets” ou Navigating across objects

Pour ceux qui comme moi se retrouve devant la “belle” documentation de symfony et plus précisement à l’explication sur l’utilisation de sfPropelPager (la classe de pagination spécial big up Symfony tout ça), je suppose que vous dû avoir la même réaction que moi :

“How the hell can that code work ???!!!!”

On voit un bout de truc qui ne veut rien dire … et qui forcement ne fonctionne pas :

$article = $pager->getObjectByCursor($this->getRequestParameter('cursor'));

Bin ouais $pager n’est pas instancié. Alors on se casse les dents sur Google à s’apercevoir que tout le monde réécrit les mêmes erreurs ou dans le moins pire des cas s’arrête avant.

Voilà comment réaliser une belle pagination sur liste et sur chacun des enregistrements :

version symfony : toutes avec quelques adaptations

D’abord on reprend le code de la doc qui fonctionne puis on l’améliore un poil pour rendre ce que l’on attend :

Le controller

app/frontend/modules/article/action/action.class.php

class articleActions extends sfActions
{
public function executeList($request)
{
$this->pager = new sfPropelPager('Article');
$this->pager->setPage($request->getParameter('page', 1);
$this->pager->init();
}
public function executeShow($request)
{
$this->executeList($request); //eh oui c'est ça qu'il manquait hahahaha!
$this->article = $this->pager->getObjectByCursor( $request->getParameter('cursor') );
//Ce qui suit pourrait être remplacé par une joulie évolution de sfPager
if( ($previousCursor = $request->getParameter('cursor') - 1) >= 1 )
{
$this->pager->setParameter('previousCursor', $previousCursor);
}
if( ($nextCursor = $request->getParameter('cursor') + 1) <= $this->pager->getNbresults() )
{
$this->pager->setParameter('previousCursor', $previousCursor);
}
}
}

Il ne reste plus qu’à  réaliser les vues.

Les vues

app/frontend/modules/article/templates/listSuccess.php

//je ne note volontairement pas les balises php comme il faut hein.
<?php $cursor = $pager->getFirstIndice(); ?>
<?php foreach($pager->getResults() as $article) :? >
<?php echo $article->getTitle();?>
<?php echo link_to('Read', 'article/read?cursor=' . $cursor);?>
<?php endforeach;?>
<!-- //pagination sur liste -->
<?php echo link_to('previous', 'article/list?page=' . $pager->getPreviousPage() );?>
<?php echo link_to('next', 'article/list?page=' . $pager->getNextPage() );?>

Et maintenant l’affichage de l’article plus des liens de navigation s’pas!
app/frontend/modules/article/templates/showSuccess.php

<?php echo $article->getTitle(); ?>
<?php echo $article->getContent(); ?>
<?php if( $pager->hasParameter('previousCursor')) : ?>
<?php echo link_to('previous', 'article/show?cursor=' . $pager->getParameter('previousCursor') ); ?>
<?php endif; ?>
<?php if( $pager->hasParameter('nextCursor')) : ?>
<?php echo link_to('next', 'article/show?cursor=' . $pager->getParameter('nextCursor') ); ?>
<?php endif; ?>

Paf

C’est comment dire, un peu magique. Une fois qu’on sait qu’il suffit d’instancier le pager depuis la méthode executeList (c’est mieux que de noter “…” et de voir que rien ne fonctionne).

Un autre évolution de sfPager serait de corriger $page lorsque l’on instancie un article depuis getObjectByCursor() (Chose que je vais proposer dès que j’aurais un peu de temps).

PS : le code présenté ici est écrit  plus ou moins from scratch et surtout pas du tout testé, donc merci à celui ou celle qui m’indiquera une erreur.

Posted in Symfony | Leave a comment

VDI, Vacances à durée indeterminée

Non! Pas vraiment des vacances, mais plutôt une petite remise en forme, peut être une nouvelle vie … non pas “peut être”, c’est sûr!

Donc mon aventure de 1 mois à Adullact et 6 à Adullact-Projet prennent fin en ce début de juillet. Aucun regrets, une bonne expérience, une bonne ambiance et une bouffée de motivation et d’émulation m’ont permis de voir que le monde du travail n’est pas si morose et passez-moi l’expression “chiant à souhait” depuis que ce loisir (l’informatique) est recherché en tant que compétence.

Aujourd’hui je suis à la recherche d’une société sérieuse qui saura prendre à juste valeur mes compétences et ma motivation. Forcement, une entreprise qui a des valeurs, qui à un goût prononcé pour les nouvelles technologies (l’utilisation et la promotions de logiciels, de média etc. libres est un plus). Je vais préciser que j’ai quelques destinations de préférences : Lyon, Paris, Annecy, Montréal, Genève ou mieux, Lausanne ou encore Montpellier … mais j’ai comme une envie de bouger.

Je suis Concepteur – Développeur d’application pour clients légers, actuellement je développe en php sur le framework cakephp, je maîtrise le xhtml et css et j’ai une connaissance avancée en javascript, xml etc. Aussi je suis touche à tout (multi-casquettes), je porte beaucoup d’intérêt à Ruby on rails et d’autres langages de script (perl …) ou de programmation (java, quand il sera libre). Évidemment, ce qui gravite autour de la programmation pure ne fait pas peur (rédaction de documentation, formations etc.).

Vous l’aurez compris je suis un adepte de gnu/linux et même les quelques éléments de graphisme ou de mise en page que je conçois sont réalisés sur The Gimp, Inkscape et Open Office.

Promis je fais une vraie page CV dès que possible.

Posted in Informatique, osef mylife | 3 Comments

Synchronisation de contacts, calendrier etc.

On connaissait la méthode qui consistait à brancher un organiseur, un téléphone ou n’importe quoi pouvant gérer des contacts et autres informations utiles sur usb ou en bluetooth pour retrouver toutes ses données sur l’ordinateur (outlook … tu sais, le coté obscure de la force). Et ça marchait plus ou moins bien selon le prix de l’appareil. Je tente à nouveau cette synchronisation entre un pc sur Ubuntu gnu/linux et un iPhone et ça marche (seulement pour les contacts pour l’instant mais la suite arrive).

synchronisation bordelique

Aujourd’hui on parle de SyncML, un protocole orienté pour la synchronisation Over-The-Air (OTA) ce qui consiste à sortir ses données d’un appareil mobile à distance (enfin!). Alors au lieu de faire une connexion entre 2 appareils (le mobile et le pc par exemple) on va utiliser une architecture client-serveur. En effet l’utilisation de nos agenda, carnets d’adresses, tâches … évolue, il y a une réelle nécessité de centraliser nos données pour les utiliser sur les différentes applications : le pda, le client mail, agenda sur l’ordi à la maison, sur celui du boulot et autres sugarCRM.

synchronisation sur une architecture client serveur

 

Un serveur donc où toutes nos applications viendront se connecter. Je connais deux possibilités :

  1. Utiliser les services d’un professionnel de ce genre de données (http://my.funambol.com , http://www.scheduleworld.com).
  2. Installer son propre serveur parce que vous n’aimez pas trop savoir vos données dans une société tiers (d’ailleurs vous n’utilisez plus google, ni yahoo, vous n’avez plus de connexion internet et vous avez formaté votre disque dur mais le doute étant resté vous avez aussi brûlé l’ordi avec les feuilles mortes du jardin).

Installation du serveur

Je ne vais pas indiquer ici comment faire mais essentiellement là où il faut chercher (et bien sûr avec autant de solutions open-source que possible; quelqu’un connaît la licence HPL?) :

Une solution serait d’installer ce serveur à la maison : une petite distribution gnu/linux avec l’application serveur funambol. L’installation du paquet bundle (tout en un) semble tout indiqué si vous recherchez la simplicité. Vous aurez votre funambule à cette adresse http://127.0.0.1:8080/funambol .

Le problème c’est pour y avoir accès depuis l’extérieur, il vous faudra un nom de domaine et une adresse IP fixe (de préférence). Peut être avez-vous un serveur dédié à disposition ou mieux un admin sys et un chef super sympa au taff, ce qui règle le problème.

N’oubliez pas d’ajouter les utilisateurs par le biais de l’interface d’administration (ce serait bien qu’il y ait un script d’ajout d’utilisateur, je n’ai pas encore cherché).

Le serveur funambol propose une petite interface web qui n’a que l’intérêt de voir les premières synchronisations correctement effectuées. Les quelques fonctionnalités proposées sont à la limite de l’inutilité (mais c’est déjà ça).

Configuration des clients mobiles

Soit vous avez un pda (organiseur, smartphone, table de chevet …) qui supporte SyncML soit il faudra installer une application qui ira chercher vos données pour les synchroniser.

Funambol propose une gamme d’applications permettant de se connecter au serveur et celle-ci dépend du modèle d’appareil (ou plutôt de son système d’exploitation). Il vous suffit ensuite d’installer le bon paquet. À noter que pour l’iPhone et iPod touch, l’application est disponible depuis Installer (jailbreakement Votre).

Pour terminer, il suffit d’indiquer l’adresse de votre serveur et vos identifiants dans les paramètres de l’application. Les futures synchronisations se feront via internet (ou réseau local) le top est d’avoir un appareil permettant de se connecter en wifi ou un abonnement edge/3G qui va bien.

Configuration des clients « fixes »

J’entends par là les clients emails comme évolution, outlook, thunderbird etc.

Pour chaque application on trouvera des plugins permettant de réaliser la synchronisation certains sont disponibles sur la même page que pour les clients mobiles. Pour le reste on le trouvera sur la liste des projets communautaires.

J’ai testé :

Thunderbird et la suite Mozilla (sur une architecture x86_64) :

Le plugin proposé par funambol ne supporte pas encore le 64bits. Néanmoins il existe TSync, encore un peu « buggy », je ne suis pas pleinement satisfait pour l’instant. Et Sunbird n’est pas supporté.

Evolution :

Avec le SyncEvolution toujours sur la page des projets communautaires ainsi que sur le wiki de Ubuntu.

Vu sur le wiki : « Cela semble être une solution universelle pour synchroniser tout avec tout ! »(c’est beau, on dirait du Pierre Bellemare).

Pas de bouton à cliquer sur évolution pour faire les synchronisations, dommage c’est un peu rebutant quand il s’agit de faire mouiller les copains avec notre grosse bécanne.

De cette manière la configuration n’est pas très user-friendly et comme on peut le lire sur le wiki il faut éditer quelques fichiers de configurations puis se créer un lanceur. (Pensez à remplacer scheduleworld par funambol ).

Une fois en place il suffit d’un double clique pour synchroniser toute la machine ou automatiser la synchro avec cron.

Les petites choses qui ne me plaisent pas dans cette histoire :

  • Question performances, je trouve ça longuet pour comparer ma liste de 165 contacts. C’est un peu étrange en fait, l’application funambol sur l’iphone utilise le même code source et il est bien plus rapide.
  • Le mot de passe en clair dans la configuration : c’est moche, on parle d’une machine de bureau ici.

À voir :

Beaucoup de plugins sont disponibles certains ont des noms sexy Sync4jLDAP, Funambol SugarCRM …

Avant de synchroniser comme un sauvage

Vos différentes données n’ont peut être jamais été synchronisées, vous avez sûrement des contacts identiques entre votre carnet d’adresses sur Thunderbird et celui de votre téléphone, vous le savez mais pas vos appareils. Si vous synchronisez n’importe comment vous aurez à chaque fois des doublons qui viendront gentiment squatter un peu partout.

Un peu de nettoyage s’impose et c’est une lourde tâche, très rébarbative mais nécessaire.

Cas de figure ultime : vous n’avez qu’un seul carnet d’adresses, vous pouvez envoyer la sauce.

Vous avez plusieurs carnets : faites en sorte d’avoir le contact sur un seul appareil à la fois (un peu de tri et de mis à jours ça ne fait pas de mal). Ça paraît évident comme ça mais on n’y pense pas forcement au moment fatidique.

Et après?!

Un plugin pour générer un fichier FOAF peut être?

Posted in Informatique | Leave a comment