Problèmes de mémoire ?

Java, memory leak et les erreurs de PermGen space

Publié dans Java | Laisser un commentaire

Trois articles (du même auteur) très intéressants sur les fuites mémoires en Java. A lire absolument, à tête reposée !

Plugin WiKiss pour protéger le wiki par un mot de passe

Publié dans PHP | Laisser un commentaire

Un plugin WikiBlaze (fork de Wikiss) bien fait comme il faut à l’arrache, afin de protéger son wiki par un mot de passe (le même que celui pour éditer des pages).

A améliorer absolument 😉

<?php # coding: utf-8

/** 
 * Privatize the Wiki with the password
 */
class Privatize
{
	public $description = "Privatize the wiki";
	
	function __toString() {
		return tr($description);
	}

	function formatBegin() {
		global $CONTENT;
		if (!authentified()) {
			$str = '<form action="" method="post"><label for="password">'.tr('Hé ! Le mot de passe !').'</label><br /><input type="password" name="sc" id="password" /><input type="submit" value="Ok" /></form>';
			die($str);
		}
		return TRUE;
	} // formatBegin
}

?>

RedactorJs – L’éditeur WYSIWIG qui tue tout !

Publié dans Javascript | 2 commentaires

Cet éditeur en ligne WYSIWYG est tout simplement génial : dybskiy/redactor-js · GitHub.
Simple, léger, rapide, pratique à utiliser ! Et un régal à configurer 🙂

Sous licence libre pour un usage non-commercial.

QMap et QHash

Publié dans C / C++ | Laisser un commentaire

Ahhh, les clés utilisées dans une QMap doivent avoir entres elles une relation d’ordre !!!

C’est ce que signifie en français courant ce gentils message d’insultes de votre compilateur :

QtCore\qmap.h:107: erreur : no match for ‘operator<' in 'key1 < key2'

Solution au problème des QMap à clé non ordonné

  • Ajouter une relation d’ordre à vos clés :
    bool operator<(const Key other) const
    {
    	return truc < other.muche;
    }
    
  • Ou utiliser une QHash : de ce que j’ai compris, c’est pareil, sans la relation d’ordre sur les clés, et en prime c’est plus rapide !

Continuer la lecture

Mais où va Shaarli ?

Publié dans Geekeries | Un commentaire

Vous ne connaissez pas Shaarli ? Shaarli est un outils Web minimaliste de partage de liens (+ commentaires) créé par Seb Sauvage. Chacun installe un Shaarli sur son serveur perso, puis publie des liens dessus. Ensuite, eh bien d’autres gens peuvent s’inscrire aux flux RSS de ce Shaarli (où le visiter tous les jours) pour « suivre » ce Shaarli. Des exemples ?

Continuer la lecture

Ce qui me gène dans les frameworks CSS actuels

Publié dans HTML et CSS | 2 commentaires

Une chose me turlupine dans les frameworks CSS actuels. Twitter Bootstrap, Knacss, et d’autres que j’ai pu voir. C’est cette histoire de classes CSS réutilisables
Dans le principe, c’est super ! Je construis mon HTML avec des classes CSS spécifiques, et je sais que cela fait le rendu que je veux par la suite. C’est d’ailleurs bien pratique dans la vie réel. Mais parmi ces classes réutilisables, on trouve par exemple :

  • « left » (qui fait un float left sur un bloc),
  • ou « col » (pour un affichage en colonne).

J’ai pris les exemples dans Knacss parce que c’est le plus compréhensible.
Continuer la lecture

Débuter avec SPARQL et le Web sémantique

Publié dans SQL | Laisser un commentaire

Faire ses premiers pas dans le monde merveilleux (??) du Web sémantique, c’est un peu comme faire le premier par sur la Lune… il faut au mois parcourir 384 460 km avant de commencer à trotter joyeusement ! Histoire de rendre vos premiers kilomètres un peu moins difficiles, voici quelques ressources qui m’ont été bien utiles autour du langage de requête sémantique SPARQL.

Vocabulaire utile

  • SPARQL : SPARQL Protocol and RDF Query Language
  • These queries are executed against RDF datasets, consisting of RDF graphs (d’après SPARQL par l’exemple)
  • A SPARQL endpoint accepts queries and returns results via HTTP (idem)
    • Generic endpoints will query any Web-accessible RDF data
    • Specific endpoints are hardwired to query against particular datasets

Continuer la lecture

Base de données SQLite en ligne de commande sur Android

Publié dans Java | Laisser un commentaire

Imaginons que vous ayez un émulateur d’Android qui tourne actuellement sur votre machine, avec votre application en cours de développement, et que vous aimeriez voir ce qui se passe dans la base de données SQLite de votre application. Rien de plus simple grâce à quelques commandes SQLite.
Tout d’abord, il faut ouvrir votre shell favori (Sur Windows : Menu démarrer > Accessoires > Invite de commandes). Puis utilisez la commande suivante :

monShell>adb -e shell
#sqlite3 /data/data/android.societies/databases/societies.db
...
Ouverture SQLite
...
sqlite>... mes commandes SQLite ...

L’option -e signifie « l’émulateur actuellement ouvert. Donc si vous en avez plusieurs, ou si c’est un vrai téléphone qui est connecté à votre ordinateur : allez lire la doc pour voir comment faire. Comme ça, je dirais : adb devices pour avoir l’id des émulateurs et des téléphones en route. Puis adb -s [id séléctionné] shell. Après le comportement du shell peut varier sur un téléphone.

Quelques commandes SQLite utiles

  • .help: pour connaître la liste des commandes utiles !
  • .databases: listes des bases de données
  • .tables: liste les tables d’une base de données

Et bien sûr, toutes les commandes SQL de votre choix :

SELECT * FROM _table
DELETE FROM _table
REINDEX _table

Plus d’information

Javascript

JSON et C++ avec QJson

Publié dans C / C++ | Laisser un commentaire

Brut de fonderie !

Installation de QJson

Il va falloir vous débrouiller tout seul, d’ici que j’ai le temps de compléter cet article ! En attendant :

Continuer la lecture

Etendre les types gérés par un QVariant

Publié dans C / C++ | Laisser un commentaire

Par défaut, l’objet QVariant de Qt ne peut contenir que des types simples (int, short, …) et des types Qt de base (QString, …). Mais il est possible d’étendre ce comportement à des objects C++ spécifiques.
En vrac :

  • Ajouter en haut du fichier source (.cpp) où l’on a besoin d’ajouter un type spécifique dans un QVariant, ou de retrouver ce type à partie d’un QVariant:
    Q_DECLARE_METATYPE(MyType);
  • Apparemment, on peut aussi utiliser le code suivant, mais là ça devient flou pour moi:
    int myTypeId = qRegisterMetaType("MyType")
  • Ensuite, pour ajouter la donnée dans le QVariant:
    MyType myData...;
    // ...
    QVariant myVariant= QVariant::fromValue(myData);
  • Et pour la lire :
    // Le cast en (MyType) n'a pas l'air obligatoire
    MyType myRetrievedData = (MyType) myVariant.value();

That’s all folks!

Inspiration pour comprendre mieux QVariant