Archive for 'Développement'

API http://is.gd : Introduction à l’intégration de Web Services sous iOS

La plupart des applications se connectent à une base de donnée pour afficher leurs données. Sur mobile notamment, il arrive souvent que cette source de donnée soient stockée sur un serveur externe, accessible via des requêtes à un API, le plus souvent via HTTP. On appelle cela un Web Service.

Ce tutorial est destiné aux débutant sous iOS. Nous prendrons l’exemple concret de la communication avec une API simple, sans authentification : http://is.gd. L’objectif est simple. Envoyer une requête à http://is.gd en fournissant en paramètre une url longue, et récupérer la version courte, le tout sans latence (requête asynchrones).

Read more

Swizzling de méthode et Refléxivité par l'exemple

Objective-C est un language très dynamique. Cela signifit par exemple qu’il peut résoudre des appels a méthode au runtime (lors de l’execution de programme, et non à la compilation), mais aussi effectuer de la refléxivité sur ses objets (Au runtime, toujours, accéder à des informations sur un objet, comme ses attributs et méthodes) ou même les modifier !

Read more

Erreur 0xc0150002 sous Visual Studio à l'installation d'OpenCV

Lors de  l’installation d’OpenCV sous Visual Studio, même après avoir suvi les instructions du wiki, il se peut que vous obteniez l’erreur suivante :

The application failed to initialize properly (0xc0150002). Click on OK to terminate the application.

Ceci est du au fait qu’OpenCv a été compilé sous une version précise de Visual Studio 2005. Afin de le faire fonctionner avec toute les autres versions de Visual, il suffit de télécharger un patch disponible sur le site de Microsoft

Le patch est disponible ici

Configurer Redmine pour un dépot Subversion sous SSL

Si l’onglet dépot de votre Redmine vous affiche ce message d’erreur : The entry or revision was not found in the repository, c’est que Redmine n’arrive pas à se connecter à votre dépot Subversion. Si vous arrivez à checkout en utilisant les même identifiants/passe que ceux fournis à redmine, et que votre dépot Subversion est accessible via SSL (adresse du dépot en HTTPS), votre problème vient peut être du fait que Redmine ne peut accepter seul les certificats SSL.

Read more

Manipuler les buffers d'une librairie non-managée en C#

En C#, un langage managé, utiliser une dll qui prends un buffer en paramètre n’est pas évident au premier abord : il n’y a pas de notion de pointeur dans un langage managé puisque le garbage collector est seul maitre de la mémoire. Ainsi, si votre dll prends un pointeur sur un tableau de caractère (un buffer alloué qu’il va remplir et que vous souhaitez par la suite manipuler), vous devez trouver une solution pour faire passer votre tableau C# pour un pointeur sur un tableau de char. Plusieurs solutions existent, celle-ci a le mérite de ne pas à utiliser la clause unsafe.

Il s’agit de marshalling ou sérialisation binaire. On prends un tableau de byte csharp, et on le transmet comme un pointeur sur un tableau non managé. Le code est plutôt simple d’accès, quelques explication en dessous :


Read more

Protéger votre site web des fichiers crées automatiquement par Emacs

Emacs crée automatiquement deux fichiers de sauvegarde. Un, tant que le fichier n’est pas sauvegardé et un autre contenant la version originale du fichier ouvert. Par exemple, pour un fichier index.php, Emacs sauvera son contenu régulierement dans #index.php# (et affichera pendant la sauvegarde Auto-saving... dans le buffer) tant que vous ne l’avez pas sauvegardé, puis un fichier index.php~ contenant la version originale du fichier ouvert.

Ce qui est vite pratique quand vous oubliez de sauvegarder vous-même vos fichiers peut s’avérer catastrophique sur un serveur de production. En effet, rien n’empeche un utilisateur mal intentionné d’accéder a votre code source en suffixant l’url d’un tilde. Par exemple : http://example.com/conf/sql.php~

Read more