Pageres : Screenshot en ligne de commande

Excellent petit outil node.js pour réaliser des screenshot en ligne de commande et tellement plus simple à installer que wkhtmltoimage / pdf (lorsque l’on connaît déjà un peu node) :

Voici Pageres :

Installation


sudo npm install --global pageres

Usage


pageres http://esion99.info/ --sizes 1024x768

C’est bluffant.

via @jubianchi

Posted in Uncategorized | Leave a comment

AngularJs $sce.trustAs

Small technical tip with angularJs : how to use $sce.trustAs*

It is simply required to provide the “trusted” object to the template :

App.directive('dirtyIframeExample', ['$sce', function($sce) {
    return {
        restrict: "A",
        template: "<iframe src="{{ trustedUrl }}></iframe",
        link: function(scope) {
            scope.trsutedUrl = $sce.trustAsResourceUrl("http://acme.net");
        }
    }
}]);
Posted in Uncategorized | Leave a comment

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 | 7 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