Réaliser une requête POST en PHP avec cURL

Posté par seiyar81 le 10 mai 2012 | Laisser un commentaire (0)

Voici un snippet d’une fonctionnalité que l’on ne trouve pas facilement dans la documentation de PHP : uploader un fichier avec la librairie cURL.

Cette dernière nous offre en effet de nombreuses possibilités pour gérer nos requêtes et ce qui nous intéresse plus particulièrement ici : les requêtes HTTP à l’instar de wget par exemple.


function curlUploadFile($url, $fileName) {

  $ch = curl_init();

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_VERBOSE, 0);
  curl_setopt($ch, CURLOPT_USERAGENT, "MY_USER_AGENT");
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, true);

  $post = array(
    "upload_file"=>"@".str_replace("\\", "/", $fileName),
  );
  curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  $response = curl_exec($ch);

  if(!curl_errno($ch))
  {
    return $response;
  }
  else
  {
    return curl_error($ch);
  }

}

Voilà en espérant que cela dépanne certains !

Catégorie: Non classé | Laisser un commentaire (0)

Giganews : Du nouveau pour VyprVPN et DumpTruck

Posté par seiyar81 le 26 avril 2012 | Laisser un commentaire (0)


Ca bouge décidément beaucoup chez Giganews ! Outre les 1300 jours de rétentions binaires et les 8 ans et demi de rétention texte désormais atteints, l’équipe du provider ne cesse de mettre à jour ses services en apportant toujours des nouveautés ou des fonctionnalités utiles.

Du côté de VyprVPN, la solution plus que complète de VPN aussi proposée gratuitement aux abonnés Diamant, nous avons le droit à une nouvelle location : Austin Texas.
Qui s’ajoute aux autres déjà disponibles : Washington, Los Angeles, Amsterdam, Londres, Paris, Francfort et Honk Kong.

De même l’application VyprVPN App, qui permet de configurer en un clic sa connexion VPN, passe en version 1.1 qui apporte plusieurs fonctionnalités sympathiques :

  • La description de la connexion VPN sous Windows sera désormais « VyprVPN for Giganews » plutôt que d’incrémenter le nom de la location à chaque reconnection : « Paris (17) », « Paris (18) »
  • Toujours sous Windows le type de connexion ne sera plus demandé que la première fois : Public, Home, Work
  • Les mises à jour ne requièrent plus de reboot
  • Les connexions récentes fonctionnent maintenant même si l’utilisateur n’a pas enregistré son mot de passe

Pour DumpTruck, le service de stockage en ligne offert aux abonnés Diamant, l’upload des dossiers en drag & drop est ajouté sur l’application Web.
Notons également que l’équipe travaille sur des applications pour Windows, Android, Mac et iOS, mais également sur des fonctionnalités de partage public/privé ainsi que sur la sécurisation de l’accès avec une clé personnelle.
En bonus voici ci dessous une photo d’une baie de stockage DumpTruck, hébergeant 500To de données.

Pour finir sachez qu’un plugin pour QtBlogger (en cours de traduction) est en cours de développement pour se connecter à son compte DumpTruck et que les choses avancent bien !

Catégorie: Geek, Internet, Newsgroup | Laisser un commentaire (0)

DataTables : Tri et filtre personnalisés des données

Posté par seiyar81 le 7 avril 2012 | Laisser un commentaire (0)

Un petit moment que je n’ai pas posté de tutoriel ou tout du moins d’articles plus techniques, mais l’occasion s’est présentée lorsque je suis tombé sur un problème avec la librairie DataTables.

Je dis volontairement librairie car aujourd’hui le plugin pour jQuery a tellement évolué qu’on peut le considérer comme une librairie à part entière.

Une des fonctionnalités très pratique et intéressante de DataTables est de permettre l’ajout de de fonctions personnalisées de tri et de filtrage sur les donénes des tableaux.

L’intérêt d’une telle pratique est de pouvoir offrir aux utilisateurs des fonctionnalités avancées de manipulation des données.

Pour commencer voici un exemple tiré permettant d’ajouter un filtrage pour des adresses IP : 

function ip2long (IP) {
 IP = IP.match(/^([1-9]\d*|0[0-7]*|0x[\da-f]+)(?:\.([1-9]\d*|0[0-7]*|0x[\da-f]+))?(?:\.([1-9]\d*|0[0-7]*|0x[\da-f]+))?(?:\.([1-9]\d*|0[0-7]*|0x[\da-f]+))?$/i); // Verify IP format.
 if (!IP) {        return false;
 }
 IP[0] = 0;
 for (i = 1; i < 5; i += 1) {        IP[0] += !! ((IP[i] || '').length);
     IP[i] = parseInt(IP[i]) || 0;
 }
 IP[4 + IP[0]] *= Math.pow(256, 4 - IP[0]);
 if (IP[1] >= IP[5] || IP[2] >= IP[6] || IP[3] >= IP[7] || IP[4] >= IP[8]) {
     return false;    }
 return IP[1] * (IP[0] === 1 || 16777216) + IP[2] * (IP[0] <= 2 || 65536) + IP[3] * (IP[0] <= 3 || 256) + IP[4] * 1;
}

$.fn.dataTableExt.oSort['ip_address-asc'] = function(a, b) {
	var ipA = ip2long(a);
	var ipB = ip2long(b);
	return ((ipA < ipB) ? -1 : ((ipA > ipB) ?  1 : 0));
};

$.fn.dataTableExt.oSort['ip_address-desc'] = function(a, b) {
	var ipA = ip2long(a);
	var ipB = ip2long(b);
	return ((ipA < ipB) ? 1 : ((ipA > ipB) ?  -1 : 0));
};

On a tout d’abord une fonction pour transformer une adresse IP en entier puis deux fonctions pour comparer deux adresses et les trier par ordre ascendant ou descendant.

Une fois ces fonctions ajoutées, il suffit de spécifier le type de données de la colonne lors de la déclaration du tableau :

$('#example').dataTable( {
        "aoColumns": [
             null,
             null,
             null,
             { "sType": "ip_address" },
             null
         ]
} );

Il est donc très simple d’ajouter des fonctions de tri si nos tableaux utilisent des données d’un format un peu exotique.
Plusieurs fonctions sont d’ailleurs disponibles dans la documentation de la librairie.

Si ces fonctions nous permettent d’améliorer le tri des données, on peut également ajouter des fonctionnalités de filtrage.
Imaginons l’exemple suivant : vous disposez d’un tableau listant des factures avec leur état et vous souhaitez filtrer ce tableau en fonction d’une liste de checkbox représentant chacune un état.
A chaque changement d’état d’une de ces checkbox vous souhaitez donc filtrer le tableau.


var etatsCheckbox = new Array("filtre_etat_1", "filtre_etat_2", "filtre_etat_3", "filtre_etat_4", "filtre_etat_5", "filtre_etat_6"); 

var etatsGlobal = null;

$("#filter_etat input").click(function(){
    if($(this).attr("id") != "no_filter_etat") {
	 if(!$(this).is(":checked")) {
               if(getEtatsFiltres().length == 0)
                      $("#no_filter_etat").attr('checked', 'checked');
               }
	       else
		   $("#no_filter_etat").removeAttr('checked');
	 } else if($(this).attr("id") == "no_filter_etat") {
               if(!$(this).is(":checked")) {
                      $("#filtre_etat_1").attr('checked', 'checked');
               } else {
		      for(var i = 0; i < etatsCheckbox .length; i++) {
			$("input[name="+etatsCheckbox [i]+"]").removeAttr("checked");
		      }
               }
         }
	 etatsGlobal = getEtatFiltres();
	 oTable.fnDraw();
});

function getEtatFiltres() {
	var f = new Array();
	if($("#no_filter_etat").is(":checked"))
           return null;
	else {
	   for(var i = 0; i < etatsCheckbox .length; i++) {
		if($("input[name="+etatsCheckbox [i]+"]").is(":checked"))
		      f.push($("input[name="+etatsCk[i]+"]").attr("value"));
	   }
	   return f;
	}
};

On a tout d'abord un tableau avec les id de nos checkbox, un tableau global qui sera utilisé pour le tri, puis une fonction qui a chaque clic va relancer le filtrage du tableau en effectuant quelques contrôles avant (si on coche "no_filter_etat" décocher les autres checkbox ou bien cocher "filtre_etat_1" par défaut) et enfin une fonction pour récupérer les attributs value des checkbox cochées.

Maintenant il ne nous reste plus qu'à ajouter notre fonction à l'API de DataTables :


$.fn.dataTableExt.afnFiltering.push(
	function( oSettings, aData, iDataIndex ) {
		var iColumn = 2; // Numéro de la colonne dans votre tableau

		if(etats === null)
			return true;

		var iEtat = aData[iColumn];

		if(iEtat) {
			if(iEtat.length == 0)
				return false;
			else if(etatsGlobal.indexOf(iEtat) >= 0) {
				return true;
			} else {
				return false;
			}
		} else {
			return true;
		}
	}
);

Petite explication : si la colonne ou est définie l'état de la facture est contenue dans notre tableau global etatsGlobal, elle sera affichée, sinon cachée.

C'est donc très simple et à la portée de tout le monde d'ajouter des fonctions de tri et de filtrage, à vos claviers !

Catégorie: Développement Web, Javascript | Laisser un commentaire (0)

Dupliquer une partition et la rendre bootable sous Linux

Posté par seiyar81 le 28 mars 2012 | Laisser un commentaire (0)
Dupliquer une partition sous Linux - Image

Il peut arriver pour un besoin quelconque d’avoir à dupliquer une partition.
Prenons le cas suivant : vous avez envie de faire une sauvegarde de votre disque dur préféré sur un autre disque ou bien vous possédez déjà une image de votre disque et vous souhaitez la réinstaller sur un disque vierge (ou non).

Et bien vous allez voir que tout ceci se fait très simplement sous Linux, en ligne de commande sans avoir besoin de connaître l’OS par cœur.

Il faut tout d’abord trouver le label de la partition à copier, pour cela on liste les disques/partitions présentes :

hugo@seiyar81:/home$ fdisk -l

A partir de là vous pouvez retrouver le label de la partition, de la forme sdb1, sdc1 etc …
Il y a ensuite plusieurs possibilités, soit vous voulez faire une image de votre disque, auquel cas un simple dd suffira :

hugo@seiyar81:/home$ dd if=/dev/sda1 of=/path/backup_disque.img

if étant l’entité à copier et of l’entité de sortie et dd ayant l’avantage d’assurer une certaine intégrité des données.

Ensuite soit vous disposez déjà d’une image de votre partition ou vous souhaitez en dupliquer une directement, auquel cas :

hugo@seiyar81:/home$ dd if=/path/backup_disque.img of=/dev/sdc1

Vous recopiez ainsi bit à bit l’image sur la partition.

hugo@seiyar81:/home$ dd if=/dev/sdc1 of=/dev/sda1

Vous dupliquez bit à bit la partition sdc1 sur la partition sda1.

Maintenant que la copie est terminée, le processus pouvant être assez long puisqu’il s’agit d’une copie bit à bit, il va falloir rendre la partition bootable (si c’est toutefois ce que vous voulez :D ).

Pour cela rien de plus simple qu’un petit chroot pour monter le système de fichiers de la partition fraîchement copiée, imaginons que le disque contenant la partition est sdc :

hugo@seiyar81:/home$ mount /dev/sdc /mnt
hugo@seiyar81:/home$ mount –o bind /dev /mnt/dev
hugo@seiyar81:/home$ mount –o bind /proc /mnt/proc
hugo@seiyar81:/home$ mount –o bind /sys /mnt/sys
hugo@seiyar81:/home$ chroot /mnt

Maintenant on lance l’utilitaire Grub :

hugo@seiyar81:/$ grub
grub> find /boot/grub/stage1
grub> root (hd1,0)
grub> setup (hd1)
grub> quit
hugo@seiyar81:/$ exit

Vous devriez maintenant être en mesure de pouvoir booter sur votre partition.

Catégorie: Geek, Linux | Laisser un commentaire (0)

Google Advanced Sitemap disponible pour Prestashop 1.4

Posté par seiyar81 le 16 février 2012 | Laisser un commentaire (2)

Suite aux nombreuses demandes reçues je me suis enfin décidé à porter mon module de génération de sitemap vers Prestashop 1.4.
Depuis la version 1.4 l’équipe de développement de Prestashop a intégré le support des images des produits et des différentes langues activées sur la boutique.

Je suis donc reparti de cette base solide et stable afin de ré-inclure mes fonctionnalités de ping des moteurs de recherche.
Ainsi le module est capable de pinger les moteurs suivants :

  • Google
  • Bing (comprends Yahoo qui a fusionné avec l’index de Bing)
  • Ask.com

Potentiellement tous les moteurs de recherche peuvent être ajoutés, n’hésitez donc pas à me faire part de vos requêtes.

Sachez également qu’à chaque ajout, édition ou suppression de produit, le sitemap est ré-généré automatiquement.

  Google Advanced Sitemap (11,0 KiB, 208 hits)

Je reste bien évidemment ouvert aux propositions d’améliorations, de nouvelles fonctionnalités etc… et disponible s’il y a des problèmes.
Encore merci à tous pour vos remarques et suggestions.

Catégorie: Développement Web, Internet, PHP | Laisser un commentaire (2)

Giganews : encore plus de nouveaux services et rétention record

Posté par seiyar81 le 11 février 2012 | Laisser un commentaire (0)


Si on sait depuis longtemps que Giganews est le leader incontesté des providers Usenet, il n’empêche que ce dernier continue sans cesse à innover pour proposer à ses clients de nouveaux services et des durées de rétentions toujours plus importantes.

Niveau rétention, on atteint des sommets avec 3155 jours de rétention texte et 1285 jours de rétention binaire soit respectivement plus de 8 et 3 ans !

Du jamais vu jusqu’à présent et la tendance actuelle est plutôt à l’augmentation continue de ces taux.

Nous pouvons ajouter à cela le service VyprVPN proposé depuis plusieurs mois avec la formule d’abonnement Diamant.

Ce service à l’avantage de proposer trois types de connexion différents : PPTP, L2TP et OpenVPN, permettant à chacun d’adapter son utilisation en fonction des capacités de sa machine.
Car VyprVPN est comme tout serveur VPN utilisable aussi bien sur les PC ou MAC que sur les omniprésents smartphones ou tablettes !

Récemment l’équipe de développement du service à même ajouté une application permettant de gérer simplement sa connexion et de switcher très rapidement entre les différents point d’accès proposés à travers le monde : Washington, Los Angeles, Amsterdam, Londres, Hong Kong et les récents Francfort et Paris.

Un gros plus pour les utilisateurs français qui pouvait se voir refuser l’accès à certains services en raison de leur IP située à l’étranger.

Ensuite Giganews propose son propre navigateur Usenet : Mimo. Conçut spécifiquement pour Giganews, attendez-vous à une utilisation simplifiée grâce à la recherche intégrée directement sur les serveurs Giganews et à des temps de téléchargements optimisés.
On regrettera juste l’absence pour le moment d’un client Linux, mais cela ne saurait tarder ;)


Enfin, last but not least, les abonnements Giganews sont maintenant tous proposés avec un accès gratuit à son service de stockage en ligne : DumpTruck.
Avec la grande mode du tout hébergé et le succès de services comme Dropbox, l’ajout de DumpTruck aux offres de Giganews tombe à pic. Mais il ne s’agit pas d’un simple service de stockage en ligne comme on peut les voir florir sur le net.

Tout d’abord DumpTruck est un service made in Golden Frog donc vos fichiers ne sont hébergés que sur leur serveurs et ne sont accessibles à aucun tiers. Ceci grâce à un chiffrement des fichiers en AES 256-bit ! Sachant que la connexion au service est elle-même chiffrée en SSL 256-bit, également pour les uploads et downloads, les utilisateurs sont seuls maîtres de leur contenu, un point non négligeable !

Autre point positif concernant la vie privée des utilisateurs, le service n’utilise pas la duplication des données, procédé permettant d’économiser de l’espace disque en vérifiant si le contenu uploadé l’a déjà été par un autre utilisateur et dans ce cas en gardant une unique copie du fichier. Nos données ne sont donc a aucun moment observées, filtrées ou contrôlées.

Concernant l’accès au service, vous disposez d’une interface Web plutôt classique, avec la possibilité de parcourir votre arborescence, de télécharger vos fichiers et de les uploader directement en drag and drop.
Mais le gros avantage de DumpTruck est de proposer un accès via le protocole WebDAV, ce qui nous permet d’accéder à nos fichiers directement via le système d’exploitation via un lecteur virtuel.
On peut ainsi directement uploader nos fichiers via l’explorateur Windows et les récupérer via un téléphone Android par exemple. Cela permet surtout de s’affranchir de l’utilisation d’un navigateur pour gérer ses fichiers.
Toutes les explications sur la configuration pour l’accès via WebDAV sont disponibles sur cette page.
Dernier point positif : il n’y a aucune limitation sur la taille des fichiers uploadés !

Le temps de chargement des fichiers sur DumpTruck dépend des paramètres d’upload de votre connexion mais après une utilisation du service depuis quelques semaines, les débits sont stables et corrects tout en étant couplé à VyprVPN :
- 6min pour uploader un fichier de 22Mo, connecté à VyprVPN Paris et un upload de 0.7Mbps
- 7min pour uplaoder le même fichier, sans connection à VyprVPN et un upload de 0.8 Mbps

Pour finir sachez que vous disposez de 5Go de stockage offert avec tous les abonnements et 30Go pour les abonnements Diamant extensibles par tranches de 50, 100, 500Go ou 1To pour respectivement $9,99, $19,99, $69,99 et $99,99 par mois.
De nouvelles fonctionnalités vont très vite faire leur apparition comme des applications dédiées pour Windows, Mac, Android ou iOS, le partage privé ou public des fichiers ou le chiffrement avec une clé personnelle.

Giganews propose actuellement une réduction de 10$ / mois les 3 premiers mois sur ses abonnements Diamant, c’est donc le moment ou jamais pour essayer tous ces services !

Catégorie: Geek, Internet, Newsgroup | Laisser un commentaire (0)

QtBlogger : QtAmbassador et futur du projet

Posté par seiyar81 le 5 février 2012 | Laisser un commentaire (0)

Qt Ambassador

Logo QtBlogger

Cela fait plusieurs mois que le projet n’a pas avancé, on peut même dire qu’il était en pause.
Il faut dire que beaucoup d’évènements se sont enchaînés et qu’il n’a pas été facile pour moi de poursuivre les développements : déménagement, mémoire de fin d’études, entrée dans la vie active etc…

Toutefois le projet n’est pas mort ! Je compte bien poursuivre les développements et fournir un jour une première version de QtBlogger au téléchargement.

Pour rappel QtBlogger permet de gérer via une seule et même interface tous vos Blogs et CMS en s’interfaçant avec les différentes plates-formes existantes telles WordPress, Joomla, Drupal etc…
Ajoutez à cela une API permettant le développement de plugins, de nombreuses fonctionnalités présentes de base comme l’édition ou la recherche directe d’images sur le Web et vous obtenez un logiciel polyvalent.

De plus QtBlogger a eu l’honneur de rejoindre le programme QtAmbassador offert par Nokia ce qui est d’ores et déjà une première reconnaissance du travail effectué jusqu’à présent.

J’espère être en mesure de pouvoir fournir une première Beta très rapidement cela dépendra toutefois du temps que je pourrai consacrer au projet !

Catégorie: Geek, Qt, Yriase | Laisser un commentaire (0)

Vérifier et réparer rapidement une partition sous Linux

Posté par seiyar81 le 4 février 2012 | Laisser un commentaire (0)
Réparer rapidement une partition sous Linux - Image

Il peut souvent arriver, si comme moi vous vous ne vous souciez plus de votre serveur pendant quelques mois (ie pas de reboot, pas de maintenance etc) que ce dernier tombe en rade, ne réponde plus, enfin bref c’est la m***** … et dans la majorité des cas il ne s’agit que d’un petit problème de partition (oui en effet il s’agit d’expériences malheureuses vécues plusieurs fois).

Souvent ce n’est rien de bien méchant, du moins si vous êtes familier avec les OS Linux.
Et quelques étapes simples permettent de vite diagnostiquer le problème :

  • Votre partition est bien montée mais elle n’est accessible qu’en read-only
  • Rebooter le serveur (ça peut paraître bête mais on n’y pense pas toujours)
  • Si le reboot ne donne rien tenter un petit fschk /dev/sdN -y (N étant le numéro de votre partition) qui va remettre d’équerre vos iNodes (non ce n’est pas un nouveau produit signé Apple)
  • Rebooter une nouvelle fois et vérifier que tout est OK

Les plusieurs fois où mon serveur ne répondait plus il attendait seulement que ses partitions soient nettoyées. Et il est même pas fichu de me le dire le bougre !

Si malgré ces étapes vous vous apercevez que c’est toujours le bazar avec vos partitions, considérez pousser le diagnostic plus loin ou contacter votre hébergeur.

Catégorie: Linux | Laisser un commentaire (0)

Yriase le retour … du futur !

Posté par seiyar81 le 14 janvier 2012 | Laisser un commentaire (1)

Cela fait maintenant presque un an que je n’ai rien posté sur Yriase !
La faute à beaucoup de choses, tout d’abord à la fin de mes études. Stage de 6 mois, rapport, mémoire, déménagement, puis suite à tout ça la rentrée dans la vie active !

Maintenant que le rythme est pris je compte bien me relancer dans la rédaction d’articles et tutoriels pour Yriase en plus de continuer les développements des projets laissés en pause il y a plusieurs mois.

 

Logo QtBlogger

QtBlogger par exemple n’a pas avancé depuis un moment alors qu’il est pourtant dans un stade plutôt avancé de réalisation, les principales tâches étant la correction de bugs, la création de plugins, la traduction du logiciel et la création des scripts de génération du projet sous Windows et Linux dans un premier temps.

 

A très bientôt donc pour de nouvelles aventures !

Catégorie: Yriase | Laisser un commentaire (1)

Plugin pour Prestashop : Google Advanced Sitemap

Posté par seiyar81 le 17 février 2011 | Laisser un commentaire (26)

EDIT 16/02/2012 : Une nouvelle version du module, compatible 1.4 vient de sortir ici.

EDIT 23/11 : Pas de nouveaux articles depuis un moment, le temps libre me manque, toutefois j’ai reçu beaucoup de demandes concernant des mises à jour où des évolutions pour le module. Il faut savoir que le module de base de Prestashop 1.4 (Google Sitemap) intègre de base le support des images, d’une manière plus stable que mon module ce qui le rend obsolète.
Si je trouve un jour le temps, je le mettrai peut-être à jour pour la version 1.4 avec le ping des autres moteurs et sûrement d’autres fonctionnalités.
Merci à tous pour vos retours et suggestions.

EDIT 17/02 : Mise à jour du module : ajout du ping des moteurs Bing et Yahoo.

Ayant travaillé récemment sur la solution e-commerce Prestashop, proposé par la société éponyme, j’ai cherché à mettre en place le classique fichier sitemap.

Il existe un module, intégré de base à la solution qui permet de générer un fichier avec tous les liens du sites : produits, catégories, CMS etc…
Mais bizarrement, ce module appelé Google Sitemap ne gère pas les images, pourtant partie intégrante d’une boutique en ligne.

Qu’à cela ne tienne, j’ai modifié le module afin d’ajouter :

  • le support des balises <image:image>
  • quelques statistiques en plus lors de la génération du fichier
  • la possibilité de pinger Google directement

et ainsi est né Google Advanced Sitemap !

L’archive zip du module est téléchargeable via le lien ci-dessous. Il est bien évidemment distribué sous la licence GPL.

  Google Advanced Sitemap (11,0 KiB, 208 hits)

Je le mettrai peut-être à jour avec quelques fonctionnalités en plus d’ici quelques temps.

Catégorie: Développement Web, Internet, PHP | Laisser un commentaire (26)