wkhtmltopdf pour Debian 6

wkhtmltopdf est une librairie opensource permettant de générer des fichiers PDF à partir de fichiers HTML. C’est la librairie qui offre, à mon sens, le meilleur rendu PDF : elle intègre le moteur de rendu webkit (celui de Safari). Elle est donc en théorie capable de rendre le PDF conforme au HTML que vous voyez à l’écran sur Safari.

Contrairement aux librairies PHP que l’on peut utiliser (FPDF, TCPDF, mPDF ou HTML2PDF), cette librairie (écrite en C++ et basée sur Qt) doit être compilée pour pouvoir être exécutée sur votre serveur.

Le site officiel de wktmltopdf propose des versions compilées pour les distributions récentes (Debian 7 et 8, ainsi que Ubuntu 12.04 et 14.04, Windows Vista et +, Mac OSX 10.6 et +), mais pas pour les versions plus anciennes, on n’a pas d’autres choix que de la compiler soit même.

Afin de vous épargnez cette tâche un peu compliquée et surtout longue (il faut 2h pour la compiler sur une VM), je vous propose de la télécharger ici, compilée pour Debian 6.0.10.

wkhtmltopdf pour Debian 6 64 bits – 16.7 Mo (v0.12.2.1 – 64 bits)

wkhtmltopdf pour Debian 6 32 bits – 16.7 Mo (v0.12.2.1 – 32 bits)

ORM Designer : Editez visuellement vos entités Doctrine (et autres…)

Que vous développiez vos sites grâce aux frameworks Symfony 2 ou Zend ou que vous utilisiez simplement Doctrine ou Propel comme outil d’ORM par exemple, vous n’allez plus pouvoir vous passer d’ORM Designer.

L'interface d'ORM Designer sous MAC OS.

L’interface d’ORM Designer sous MAC OS.

ORM Designer (http://www.orm-designer.com/, 295€) est un outil qui vous permettra de gérer visuellement les différents objets de votre projet et leurs relations. Mais s’il s’agit d’un outil très pratique et bien réalisé pour générer vos modèles conceptuels de données (MCD) ou autre schémas de bases de données relationnelles, c’est dans une autre de ses nombreuses fonctionnalités que vous allez apprécier la puissance d’ORM Designer : il génère à votre place les fichiers de vos entités.

Je l’utilise principalement pour des projets sous Symfony2 et il me fait gagner beaucoup de temps. En effet, c’en est fini de la fastidieuse étape de rédaction de ce genre de lignes pour une propriété de votre entité :


/**
* @ORM\ManyToOne(targetEntity="PROJECT\CoreBundle\Entity\Company", inversedBy="user")
* @ORM\JoinColumn(name="company_id", referencedColumnName="id", nullable=false)
*/
private $company;

 

ORM Designer va générer pour vous tout le code de votre entité. Il vous suffira ensuite d’exécuter les habituelles commande de la console Symfony2 pour générer les getters et les setters :

> php console doctrine:generate:entities <MONENTITE>

 

et pour mettre à jour la base de données

> php console doctrine:schema:update --force

 

Et si vous décidez de rajouter des propriétés ou des relations, il vous suffira de faire la modification sur l’éditeur visuel puis de mettre à jour les fichiers via ORM Designer. C’est fiable et performant : ça fait gagner énormément de temps sur vos projets possédant beaucoup d’objets et de relations.

Bien sûr, son prix élevé de 295 € H.T. le destine principalement à une cible professionnelle amenée à l’utiliser fréquemment mais au vu du temps qu’il vous fera gagner, il s’agit à mon sens d’un investissement à considérer.

Il est donc compatible avec les frameworks PHP :

et avec les frameworks ORM Suivants :

Vous pouvez télécharger une version d’essai de 14 jours ici : http://www.orm-designer.com/download-orm-designer ou acheter la version complète ici : https://secure.orm-designer.com/core/buy

PhotoLctr : Localisez facilement vos photos personnelles

Voici une application iPhone que j’ai développée en 2 ou 3h, initialement pour faire des tests dans le cadre du développement d’une autre application dont je vous parlerai plus tard.

Elle est très très simple, elle sert uniquement à localiser les photos prises avec votre iPhone ou iPod Touch. Vous sélectionnez donc la photo dans votre iPhone, et si elle contient des données de localisation, elle s’affichera sur une carte indiquant à quel endroit elle a été prise.

Je me suis dit que ça pourrait vous servir et je l’ai donc mise en ligne sur l’App Store.

PhotoLctr sur l’AppStore d’Apple

 

Astuce : Synchroniser ses Code Snippets avec Dropbox

Je vous ai montré comment créer des « Code Snippets », ces petites portions de code que l’on peut sauvegarder et réutiliser en un clin d’oeil, sous XCode.

C’est très pratique mais les snippets sont stockés localement sur l’ordinateur. Ainsi, si vous travaillez sur plusieurs macs, les snippets créés sur l’un ne sont pas disponibles sur l’autre. Voici comment les synchroniser entre plusieurs ordinateurs via Dropbox (ou tout autre service similaire (Google Drive, etc.).

Lire la suite…

XCode : Gagnez du temps avec les « Code Snippets » [VIDEO]

Lorsque l’on développe une application ou un site web, il arrive fréquemment que l’on soit obligé de retaper encore et encore les mêmes lignes de code.

Typiquement, en Objective-C pour le développement sur iOS, dès qu’il s’agit d’implémenter les méthodes « delegates », il n’y a, à ma connaissance et à l’heure actuelle, aucun moyen de pré-saisir les méthodes que l’on va implémenter. On est obligé d’aller dans la documentation Apple et copier-coller les prototypes de méthodes avant de pouvoir les personnaliser. La fourniture par Apple d’un petit web-service accompagné d’un script permettrait d’automatiser cette tâche dès que l’on indique que notre classe implémente un protocole, mais cela n’existe pas encore.

Mais une fonctionnalité peu connue d’XCode va vous permettre d’y remédier en sauvegardant des petites portions de codes que vous pourrez ensuite rappeler en quelques clics et même instantanément grâce à des raccourcis textuels. Il s’agit des Code Snippets.

(suite…)

Tutoriel : Changer le comportement des touches « Home » et « End » sous Mac OSX

Language :  Shell

Difficulté : Facile

 

Sous Windows, les touches « Home » et « End » du clavier permettent respectivement de placer le curseur au début et à la fin de la ligne.

Sous MAC OSX, ces touches placent le curseur respectivement au début et à la fin du document, ce qui est très déstabilisant quand on vient du monde PC et qu’on utilisait beaucoup ces touches pour naviguer dans nos fichiers sources ou faire des sélections.

Voici comment changer le comportement de ces touches pour leur réattribuer la fonction qu’on avait l’habitude d’avoir avec un PC.

Lire la suite…

Tutoriel : Monter un serveur virtuel avec des fichiers locaux sous VMWare

Logiciels nécessaires : VMWare Fusion (env 45 €)

Connaissances nécessaires : Quelques notions avancées de Linux

Difficulté : Difficile

 

Afin de développer ou tester votre site sur un environnement miroir de celui de production, la solution la plus pratique et la plus souple consiste à monter une machine virtuelle sur votre ordinateur et la configurer de manière identique à celle de production (même OS, même version de PHP, MySQL, mêmes réglages…).

Si cette méthode a beaucoup d’avantages (efficacité, souplesse…), elle a l’inconvénient de vous obliger, soit à modifier directement le code directement dans la machine virtuelle (VM) (pas très pratique si on n’a pas d’interface graphique), soit de posséder un logiciel vous permettant de monter sur votre ordinateur un dossier partagé de la VM mais ce dossier (et donc votre code « à jour ») ne sera accessible que si la machine virtuelle est lancée. Cela rajoute donc des étapes inutiles pour tester le code, le mettre en production, etc.

Ce tutoriel vous montrera donc :

  • Comment monter un serveur de test Linux dans une machine virtuelle
  • Installer et paramétrer l’architecture « Apache, PHP, MySQL »
  • Faire en sorte qu’un site paramétré sur le serveur virtuel trouve ses sources dans un dossier local de la machine physique

Lire la suite…

Tutoriel : Communiquer avec la nouvelle API 1.1 de Twitter

Langages et versions : PHP 5.x

Difficulté : Moyenne

 

Ce mois-ci (juin 2013), Twitter  a décidé de basculer son API vers sa nouvelle version (1.1), en coupant désormais certains fonctions de la version précédente (1.0).

Cette nouvelle API, sensée améliorer les performances générales de la plateforme, ajoute des contraintes aux développeurs de sites et/ou d’applications qui utilisaient le service de micro-blogging. Toutes les applications sont concernées, aussi bien les applications complexes (genre client mobile ou desktop) que les petits widgets de remontée des derniers tweets par exemple (qui seront donc également appelés « application » dans le reste de cet article).

Lire la suite…