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

Développement

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

Démarrer une partition physique en tant que machine virtuelle avec VMWare Workstation 7

Administration Système

Si comme moi vous travailler au quotidien sous windows mais que vous disposez d’un double boot Ubuntu, sachez que vous pouvez le démarrer en tant que machine virtuelle sous Windows via VMWare Workstation 7.

Pour cela, rien de plus simple, commencez par lancer VmWare Workstation 7, cliquez sur « Create new virtual machine » puis suivez les quelques étapes suivantes :

Read more

SYS, SYSTEM, SYSDBA, SYSOPER sous Oracle : clarifions tout ça !

Base de données

Premièrement, mettons les choses au claire:

  • SYS et SYSTEM sont des comptes utilisateurs
  • SYSDBA et SYSOPER sont des privilèges systèmes

Read more

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

Développement

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

Administration Système, Développement

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#

Développement

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

Quels sont les avantages à posséder un serveur dédié?

Administration Système, Réseau

Les hébergeurs créent chaque jour de plus en plus d’offres de serveurs dédiés low-cost destinées aux particuliers.
OVH, leader du marché francais, propose par exemple un serveur équipé d’un Celeron D 1,2Ghz, d’un giga de ram, de 150 giga de disque dur et d’une connexion de 100mbits symétrique pour seulement 24€ par mois.

Voyons ce que l’on peut faire avec ce type de serveur…

Read more

Configuration d'un tunnel-ssh sous Ubuntu et Windows

Administration Système, Réseau

Ce tutoriel va vous apprendre à créer un proxy SQUID sous Ubuntu puis à l’utiliser via un tunnel-ssh.

L’intérêt de cette technique est de pouvoir accéder à internet en faisant passer tout les flux par une connexion ssh et ainsi outrepasser la plupart des restrictions.

Concrètement, après avoir configurer un proxy sur un serveur distant, nous demanderons à ssh d’écouter sur le port 3128 et de rediriger ce flux vers le proxy distant.
Le serveur distant exécutera les requêtes HTTP et vous répondra, toujours via SSH.

Ainsi, les outils de monitoring réseau ne verront rien passer en dehors du flux SSH encapsulé.

Cette technique fonctionne même si l’utilisation de proxy est proscrite sur votre réseau puisque la redirection du flux vers le proxy se fait en local, le pare-feu ne voit absolument rien passer en dehors de la connexion ssh.
Read more

Configuration d'OpenVPN Server en "full tunnelling" sur Ubuntu

Administration Système, Réseau

Nous allons voir aujourd’hui comment configurer un serveur VPN en « full tunnelling » à base d’OpenVPN.

Dans le milieu professionnel, la vocation première de ce type de configuration est purement sécuritaire puisqu’il permet de contrôler l’ensemble des données circulant sur un client lorsque celui-ci est connecté au vpn et donc potentiellement au réseau local de l’entreprise.

A contrario, le but principal de ce tutoriel est de parvenir à rediriger la totalité du flux internet du client sur le serveur afin, par exemple, de contourner des restrictions d’accès.
Read more

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

Administration Système, Développement, Sécurité

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