Comment acheter ses jeux vidéos sur Steam sans se ruiner

Posté par seiyar81 le 3 janvier 2015 | Laisser un commentaire (1)
Steam

Tout joueur qui se respecte connait et/ou utilise la plate-forme en ligne Steam, voire ses concurrents Origin (EA), UPlay (Ubisoft), GOG ou Desura.
Les soldes de fin d’année venant tout juste de se terminer, comment faire pour trouver où acheter ses jeux vidéos sans les payer au prix d’un jeu vendu en version boîte !

Il existe un bon nombre d’alternatives que je vais tenter de présenter de la façon la plus exhaustive qui soit :

Humble Bundle : https://www.humblebundle.com/

Humble Bundle offre un concept intéressant en plus de vous proposer des packs de jeux à un prix défiant toute concurrence : c’est vous qui réglez le prix !
Vous pouvez également choisir la répartition entre les développeurs, l’équipe Humble Bundle et des associations. Vos achats comptent donc pour la bonne cause, et on ne peut que saluer l’initiative.

Il existe aussi avec le même mode de fonctionnement : http://www.indieroyale.com/, http://www.bundlestars.com/, https://groupees.com/ ou encore https://www.indiegala.com/.
La plupart de ces sites proposent également des stores avec des réductions intéressantes et des offres ponctuelles, à surveiller donc.

Les sites de ventes de clés

Ces sites vous offre un ensemble d’offres, souvent sur les jeux récents qui vous permettent d’acheter soit des clés Steam à activer sur votre compte (ou à offrir à quelqu’un d’autre) soit des cadeaux Steam, ou les équivalents sur les autres plate-formes.
Quelques exemples de sites : Kinguin, Green man Gaming, GetGames, G2A etc …

Un conseil toutefois, préférez les sites fiables (une vérification via https://www.mywot.com/ suffira) car certains sites achètent les clés illégalement ce qui provoque parfois le retrait du jeu de la bibliothèque par Steam une fois la fraude détectée.

Les comparateurs de sites

Tout simplement des comparateurs des prix des sites de vente de clés pour vous simplifier la vie lorsque vous recherchez la meilleure offre.

Quelques exemples : http://isthereanydeal.com/, https://gocdkeys.com/fr, http://cdkeyprices.com/ ou http://cdkeywatch.com/

L’activation par VPN

Enfin certaines clés vendues sur les sites tiers sont achétées en Russie et ne sont activables que via un VPN Russe. Il faut donc passer par un service tel que VyprVPN pour activer la clé.
ATTENTION : Steam a récemment bloqué l’activation des clés Russes via les cadeaux Steam, vérifiez donc bien que vous achetez une clé et pas un cadeau.

Je donne pour terminer un blog qui recense les offres intéressantes et tiens au courant des nouveautés sur Steam et compagnie : http://steamunpowered.eu/

Catégorie: Geek, Internet, Jeux | Laisser un commentaire (1)

Base de données en Javascript avec TaffyDB

Posté par seiyar81 le 6 octobre 2014 | Laisser un commentaire (0)
TaffyDB

Lors de mes développements, une tâche qui revient quasiment à chaque fois est l’implémentation de la gestion de collection en Javascript. Faire une recherche dans une collection, ajouter/supprimer des éléments etc …

Si la gestion de ces opérations n’est pas compliquée il n’en reste pas moins que le plus simple est d’utiliser une librairie dédiée à cette gestion.

C’est alors qu’intervient TaffyDB, une librairie de gestion de base de données en Javascript.
Elle gère les opérations de type CRUD, est facilement extensible et est aussi bien utilisable en front avec jQuery et compagnie qu’en back via NodeJS par exemple.

Sans tarder voici ci dessous un exemple complet de ce qu’il est possible de faire avec la librairie :

	// Déclaration de la table employés
	var employees = new TAFFY([
		{"id":1,"gender":"M","first":"John","last":"Smith","branch":"Seattle, WA","department":1},
		{"id":2,"gender":"F","first":"Kelly","last":"Ruth","branch":"Seattle, TX","department":2},
		{"id":3,"gender":"M","first":"Jeff","last":"Stevenson","branch":"Washington, D.C.","department":1},
		{"id":4,"gender":"F","first":"Jennifer","last":"Gill","branch":"Seattle, WA","department":3}	
	]);
		
	// Déclaration de la table départements
	var departments = TAFFY([
	  {id: 1, name: 'Sales', abbreviation: 'SA'},
	  {id: 2, name: 'Accounting', abbreviation: 'AC'},
	  {id: 3, name: 'Human Resources', abbreviation: 'HR'}
	]);

Vous pouvez donc initialiser vos bases de données en récupérant le contenu d’une requête AJAX.

	
	// Tri sur la colonne last et récupération du premier de la liste
	employees.order("last").first().name;

	// Select sur la colonne branch et count
	employees({branch:"Seattle"}).count();

	// Update de la colonne branch
	employees({id:"1"}).update({ branch: "Washington, D.C." });

	// Delete
	employees({id:"4"}).remove();
	
	// Insert d'un nouveau département
	departments.insert({id: 4, name:"IT Support", abbreviation:"IT"});

Enfin sachez que les jointures sont gérées :


	// Jointure sur la table departments et récupération du nom du premier élément : Sales
	employees().join( departments, [ 'department', 'id' ]).first().name;

Attention si les deux tables jointes ont des noms de colonnes en commun alors le nom de colonne de la table jointe sera préfixé avec right_.

Et voilà il n’y a plus qu’à se servir des multiples fonctions de TaffyDB pour gérer au mieux ses jeux de données.

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

Coupe du Monde 2014 Brésil – Les pronostics sont ouverts – Une PS4 à gagner

Posté par seiyar81 le 5 juin 2014 | Laisser un commentaire (0)
Golden Frog World Cup Challenge

Un petit billet pour vous faire part du concours de pronostics mis en place par Golden Frog, les créateurs de Giganews et Giganews, pour la Coupe du Monde 2014 qui démarre au Brésil dans une semaine.

Via le site de la chaîne de sport ESPN il est possible de créer un bracket et de prédire les résultats de la prochaine compétition, les partagez avec vos amis et/ou via les réseaux sociaux avec à la clé des cadeaux intéressants :

  • 1er Prix : une PS4 avec le jeu Fifa 14
  • 2ème Prix : 1 an d’abonnement à VyprVPN Premier
  • 3ème Prix : 1 an d’abonnement à VyprVPN Pro

Pour participer rien de plus simple il suffit d’aller sur cette page et de cliquer sur le boutton Créer un pari pour accéder au groupe Golden Frog sur ESPN.

Rendez-vous donc le 13 Juillet pour savoir qui dominera la planète Football !

Pronostic personnel : le Brésil bat l’Espagne en finale 2-0 :)

Catégorie: Brèves, Internet | Laisser un commentaire (0)

Devenez anonymes avec ces distributions Linux

Posté par seiyar81 le 4 juin 2014 | Laisser un commentaire (0)
Whonix

L’anonymat sur Internet ou tout du moins la minimisation des informations personnelles et traces laissées lors de nos aventures sur Internet devient une nécessité en ces temps d’espionnage mondialisé de la part des gouvernements et des sociétés privées.

S’il est bien évidemment possible d’installer des logiciels comme Tor sur une station de travail classique pour anonymiser ses connexions, il existe des distributions Linux qui vont plus loin.

Pour commencer Whonix. Basée sur Debian et le réseau Tor, elle repose sur un principe d’isolation de l’utilisateur via deux machines virtuelles : la workstation où l’utilisateur est isolé pour travailler et la gateway vers qui tout le traffic de la workstation est routé via un réseau isolé pour ensuite être routé à nouveau via Tor.
Le tout est décrit dans l’image ci-dessus.

Cette distribution est avant tout destinée à être installée sur une partition physique et non utilisée en live-CD.

Dans le même genre il existe également la distribution Tails qui elle propose, à l’instar de Whonix, de router tout le traffic sortant via le réseau Tor mais étant destinée à une utilisation live-CD afin de ne laisser aucune trace sur la machine de l’utilisateur.

Tails

Si vous cherchez donc à avoir une persistence de vos données orientez-vous plutôt vers Whonix et pour du one-shot plutôt vers Tails.

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

C++11 : conversions standards entre nombres et strings

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

Dans la version C++03 il n’y avait pas de façon standard de convertir des nombres en strings, il fallait passer par un stringstream.

int i = 666;
std::stringstream stream;
stream << i;
std::string s = stream.str();

Ou passer par une version template pour la conversion nombre / string ou string / nombre.

template <typename T>
std::string toString(T const & value)
{
   std::stringstream stream;
   stream << value;
   return stream.str();
}

template <typename T>
T valueOf(std::string const & text)
{
   T value;
   std::stringstream stream(text);
   stream >> value;
   return value;
}

Mais avec C++11 on dispose maintenant de fonctions standars pour effectuer ces conversions. Il suffit d’inclure le header <header>.

auto s  = std::to_string(666);
auto ws = std::to_wstring(6.66);

Fonctions qui retournent respectivement une std::string ou une std::wstring.

Et pour les conversions dans le sens string vers nombre il existe les fonctions suivantes :

  • stoi: integer signé
  • stol: long signé
  • stoll: long long signé
  • stoul: long non signé
  • stoull: long long non signé
  • stof: float
  • stod: double
  • stold: long double

Il faut retenir que ces fonctions jetent des exceptions en cas d’entrée invalide.

Catégorie: C++ | Laisser un commentaire (0)

Version mobile du site

Posté par seiyar81 le 6 avril 2014 | Laisser un commentaire (0)

Une news rapide pour informer qu’une version mobile du site est maintenant disponible pour tous ceux qui y accèdent via leur téléphone ou tablette (et cela représente de plus en plus de monde par rapport aux utilisateurs PC classiques).

Et en raison du spam qui continue d’augmenter, j’ai été forcé de rajouter un Captcha dans le formulaire de commentaire, bien que je trouve que cela gêne plus les utilisateurs “normaux” que les spammeurs …

Très bientôt de nouveaux articles !

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

Java : créer une archive Zip en mémoire avec ZipOutputStream

Posté par seiyar81 le 3 avril 2014 | Laisser un commentaire (0)

Une petite class utilitaire pour générer des archives Zip en mémoire, sans rien écrire sur le disque, le tout aussi bien à partir de fichiers physiques ou de texte brut.

package fr.yriase.tools;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import javax.servlet.ServletOutputStream;

public class ZipFileWriter {

  /**
  * Flux de l'archive zip
  */
  private ZipOutputStream zos;
  
  /**
  * Constructor: creation d'une nouvelle archive directement dans le stream passé en paramètre
  * @param OutputStream out
  * @throws FileNotFoundException
  */
  public ZipFileWriter(OutputStream out) throws FileNotFoundException {
  	this.zos = new ZipOutputStream(out);
  }
  
  public ZipOutputStream getOutputStream()
  {
  	return this.zos;
  }
  
  /**
  * Ajouter un fichier depuis le disque dur au zip
  * @param String fileName
  * @throws FileNotFoundException
  * @throws IOException
  */
  public void addFile(String fileName) throws FileNotFoundException, IOException {
    FileInputStream fis = new FileInputStream(fileName);
    int size = 0;
    byte[] buffer = new byte[1024];
    
    //Ajouter une entree à l'archive zip
    File file = new File(fileName);
    ZipEntry zipEntry = new ZipEntry(file.getName());
    this.zos.putNextEntry(zipEntry);
    
    //copier et compresser les données
    while ((size = fis.read(buffer, 0, buffer.length)) > 0) {
    	this.zos.write(buffer, 0, size);
  	}
  
  	this.zos.closeEntry();
  	fis.close();
  }
  
  /**
  * Ajouter un fichier depuis un array de bytes au zip
	* @param 
  * @param fileName
  * @throws IOException
  */
  public void addFile(byte[] bytes, String fileName) throws IOException {
    //Ajouter une entree à l'archive zip
    ZipEntry zipEntry = new ZipEntry(fileName);
    this.zos.putNextEntry(zipEntry);
    
    //Copier et compresser les données
    this.zos.write(bytes, 0, bytes.length);
    
    this.zos.closeEntry();
  }
  
  /**
  * Fermer le fichier zip
  * @throws IOException
  */
  public void close() throws IOException {
  	this.zos.finish();
  	this.zos.close();
  }
}

A utiliser comme ceci dans une action Struts par exemple :

public class DownloadZipAction extends Action {

	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
	
		ServletOutputStream out = response.getOutputStream();

		response.setHeader("Content-Type","application/zip");
		response.setHeader("Content-Disposition", "attachment; filename=\"test.zip\"");

		ZipFileWriter zip = new ZipFileWriter(out);

		zip.addFile("<?xml version=\"1.0\" encoding=\"UTF-8\"?><test>var1</test>", "test.xml");
		zip.addFile("C:/test.xml");
		
		zip.close();

	}

}

A garder sous le coude, ça peut toujours servir.

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

Prestashop Advanced Sitemap: v1.5 et sitemaps multiples

Posté par seiyar81 le 26 février 2014 | Laisser un commentaire (21)

Une petite news rapide pour informer de la nouvelle version du module qui passe en 1.5 avec au menu une fonctionnalité demandée depuis quelques temps :

  • Génération de sitemaps multiples
  • Compression gzip des sitemaps générés
  • Sauvegarde des paramètres sans regénérer le sitemap
  • Stabilité du code

Cette fonctionnalité permet d’éviter un refus du sitemap par Google si le nombre d’URLs dépasse 50 000 ou si la taille est supérieure à 50 Mo.
Le module fonctionne maintenant ainsi :

  • vous définissez une limite à ne pas dépasser par sitemap (10 000 par défaut, car il faut tenir compte des images)
  • une fois cette limite atteinte lors de la génération, le module sauvegarde un premier fichier et passe au second
  • et ainsi de suite jusqu’à avoir traité toutes les URLs
  • une fois la génération terminée, le module génère un Sitemap Index qui regroupe tous les sitemaps générés et le transmet aux moteurs de recherche
  • si la limite définie n’est pas atteinte, un fichier sitemap simple est généré.

Vous pouvez ensuite choisir de compresser ou non tous les fichiers générés.

La prochaine étape sera maintenant de proposer une génération par langage !

Tout ça se récupère sur GitHub.


MAJ v1.5.1 : version mineure pour corriger 2 petits bugs
– Ajout forcé d’un ‘/’ à la fin des URLs personnalisées (si non présent) pour éviter les URLs malformées
– Correction de la génération du sitemap XML pour la validation XSD

La prochaine version vera l’ajout des fournisseurs/marques et éventuellement la sélection du type d’image à ajouter et/ou la possibilité de ne pas les ajouter au sitemap.

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

L’offre VyprVPN s’enrichie avec Chameleon

Posté par seiyar81 le 4 février 2014 | Commentaires fermés sur L’offre VyprVPN s’enrichie avec Chameleon
Vyprvpn

Comme vous le savez probablement déjà l’équipe dérrière Giganews propose une solution de VPN, qui est d’ailleurs offerte avec les offres Diamond, appellée VyprVPN.

Comparée aux autres solutions payantes du marché, VyprVPN offre 41 destinations réparties sur 4 continents (Europe, Asie, Océanie, Amérique du Nord), des applicaitons mobiles ainsi que plus de 700 serveurs eux aussi répartis sur les 4 continents et 700 000 adresses IP.

De quoi satisfaire les besoins de tous et d’offrir une expérience Web sécurisée.

Mais l’équipe va aujourd’hui plus loin et vient d’ajouter à ses offres Pro et Premier un nouveau protocole (en plus de ceux déjà proposés : PPTP, L2TP/IPSec et OpenVPN) : Chameleon.

Ce protocole a pour particularité de masquer le traffic afin de ne pas être identifié comme étant du traffic VPN (par un système de DPI par exemple) le tout en 256bits.
A quoi cela sert ?
Et bien tout simplement à contourner la censure et à s’ouvrir les portes d’un Web sans frontières ni blocage tout ça sans contrainte de vitesse ou de qualité de connexion.

Pour l’avoir personnellement testé je n’ai en effet pas noté de perte de vitesse entre Chameleon et OpenVPN.

Le protocole est pour l’instant disponible sur Windows, Mac OS X, Linux et Android et est disponible sur les 41 locations proposées.

Voici d’ailleurs deux offres intéressantes si vous souhaitez souscrire à une offre VyprVPN :

[ -10% ] tous les mois
[ -50% ] sur un mois d’abonnement (idéal pour tester la solution à moindre coût)

A tester d’urgence si vous êtes justement victime de ce type de blocage ou bien si vous souhaitez dissimuler le fait que vous surfez derrière un VPN.

Catégorie: Geek, Internet | Commentaires fermés sur L’offre VyprVPN s’enrichie avec Chameleon

Développer en ligne avec Koding

Posté par seiyar81 le 30 janvier 2014 | Laisser un commentaire (0)
Koding

Une petite news rapide pour préciser que le site Koding offre à tout nouvel inscrit un espace de 4Go pour développer ses applications en ligne (dans la limite de 100 To pour tout le monde).

Pour information Koding est un service qui offre une VM accessible via une interface Web et avec tout ce qui va avec : terminal, explorateur de fichiers, applications etc …

Idéal lorsqu’on travaille sur plusieurs machines en même temps ou que l’on souhaite tester un bout de code rapidement.

Plus intéressant encore, Koding permet de travailler en collaboration avec d’autres utilisateurs ! Voir la vidéo ci-dessous :

Un outil à tester d’urgence car le tout est plutôt fluide et simple à utiliser !

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