Fermer une fenêtre pop-up en cliquant sur le modal

Le titre est un peu moins classe en français qu’en anglais, mais tant pis. Le modal (j’ai supposé que c’était “un” modal, vu qu’en anglais on ne se pose pas la question) est la zone noire semi transparente qui s’affiche sous une fenêtre créée par le PopupManager de Flex. Il est possible de fermer cette popup en cliquant sur cette zone, et voici une manière de procéder.

Read the rest of this entry »

No Comments

URL Preview dans une application AIR

urlpreview

DestroyTwitter est pour moi le client Twitter le plus réussi. Il propose une fonctionnalité très intérressante qui est de pouvoir prévisualiser une URL. En cliquant sur une URL dans un tweet en ayant la touche “alt” pressée, il est possible d’avoir le titre de la page pointée ainsi que l’url finale, ce qui est très pratique dans le cas d’url réduites.

Read the rest of this entry »

No Comments

JDBC : connaître la valeur d’un champ auto-incrémenté

Dans ma base de données, j’ai une table contenant la liste de mes personnages dont la structure est la suivante (je n’affiche que les premiers champs) :

toshentablecharacter

Ma méthode d’une classe Java doit faire une insertion dans cette table, et me retourner l’id (déclaré en clé primaire auto incrémentée), du coup voilà une manière de procéder :

public int doInsert(String query) {
		try {
			Connection handle = DriverManager.getConnection("jdbc:mysql://localhost/toshen?user=root");
			Statement stmt = handle.createStatement();
			stmt.executeUpdate(query,Statement.RETURN_GENERATED_KEYS);
			ResultSet keys = stmt.getGeneratedKeys();
			if(keys.next()) {
				int id = keys.getInt(1);
				System.out.println("ID inseré = "+id);
				return id;
			}
		} catch(SQLException e) {
			System.out.println("Something went wrong : "+e.getMessage());
		}
		return 0;
	}

J’utilise cette méthode ainsi :

// ...
doInsert("INSERT INTO characters(charact_name,gender,alignment) VALUES('Palleas','m','Loyal')");
// ...

Il ne vous manquera que les imports qui vont bien (sachant que Connection, Statement et ResultSet viennent du package java.sql), tout devrait fonctionner. Le executeUpdate prend en deuxième paramètre un flag. Il est obligatoire et permet de demander explicitement à Java de retourner les clés générées en retour. Sans ce flag, utiliser la méthode getGeneratedKeys() lèvera une exception de type SQLException. Le test sur la méthode “next” du ResultSet est important, il décale en effet le pointeur sur le tuple suivant (donc ici le premier) et vérifie que celui-ci existe, sans ça vous n’aurez pas accès aux clés.

No Comments

Help making a great playlist every friday !

Un petit projet lancé avec Damien (dont il parle ici). Le site est repose sur un wordpress, et le principe est vraiment très simple :

  • Le lundi, un billet est déposé sur le site façon “c’est parti pour la playlist de cette semaine !”, vous invitant donc à déposer vos liens Spotify uniquement.
  • Le jeudi soir, un billet est posté, avec le lien vers la playlist ainsi créée, prête à être écoutée le vendredi.

Ça se passe ici, enjoy !

4 Comments

Mieux développer en PHP avec Symfony 1.2 et Doctrine

J’en avais déjà un peu parlé sur Twitter, mais comme je l’ai fait pour le livre programmation Flex 3, j’ai participé à la réalisation du premier ouvrage français de référence sur le framework Symfony (rien que ça). Le livre est sorti le 15 mai dernier, et c’est un peu la honte pour moi de n’en parler que maintenant!

9782212124941

Le livre est la version française du tutoriel Jobeet, traduite et adaptée par Hugo dont j’ai pu suivre l’évolution du taux de fatigue au fur et à mesure que la traduction avançait. J’ai pour ma part assuré la relecture technique mais également le travail d’indexation du contenu (même que dans les remerciements, ils disent que j’ai fourni un travail remarquable, et ouais!).

C’est un peu drôle de me retrouver à faire ça, quand on sait que l’année dernière j’étais encore anti-framework PHP. Cette année d’alternance dans une boite avec 5 développeurs m’aura au moins enseigné les difficultés liées au développement en équipe, et ainsi révélé les avantages d’un framework.

Du coup courrez acheter le livre, il vaut vraiment le coup (on retiendra mon objectivité sur ce coup). Petit bémol pour la couverture et l’illustration absolument improbable que l’on retrouve systématiquement sur la collection des cahiers du programmeur, au moins on a évité les palmes du livre sur le Zend Framework ou le bébé de l’enfer sur le livre Java EE…

Merci à Eyrolles (et plus particulièrement à Muriel (Shan Sei Fan)), à Fabien (Potencier) et à Hugo (Hamon). L’expérience était vraiment enrichissante!

10 Comments

Appréhender l’approche “Code-behind” en Flex

J’ai toujours eu un peu de mal à trouver “beau” ce que je pouvais faire en Flex. Je n’ai pas un niveau d’expert, et j’ai une autocritique super rude. Ce qui me bloque véritablement en fait, c’est de ne pas considérer le MXML uniquement pour la conception de “vues” et donc se limiter aux composants graphiques, mais également la gestion des évènements, la possibilité de faire du “presque objet”, etc.

Read the rest of this entry »

14 Comments

Flex 4 : Support MXML de la classe Vector

J’ai déjà fait un précédent billet sur l’apparition de la classe de collection Vector dans flash 10. Il se trouve que cette classe sera également directement utilisable en MXML. Il est important de prendre en compte que ce composant reste un composant non-graphique, aussi par défaut il devra être déclaré dans le tag “Declarations”, conformément aux spécificités du MXML 2009.

<?xml version="1.0" encoding="utf-8"?>
<s:Application 	xmlns:s="library://ns.adobe.com/flex/spark" 
				xmlns:fx="http://ns.adobe.com/mxml/2009"
				xmlns:com="com.palleas.*">
	<!-- Declaration du Vector -->
	<fx:Declarations>
		<fx:Vector id="myVectorList" type="com.palleas.Touriste">
			<com:Touriste lastname="Brian" />
			<com:Touriste lastname="Stewart" />
			<com:Touriste lastname="Martin" />
		</fx:Vector>
	</fx:Declarations>
	<!-- Affichage de la taille de ce vector : le nombre d'éléments contenus -->
	<s:TextInput text="{myVectorList.length}"/>
</s:Application>

Rien de très compliqué ici, j’ai limité le Vector à ne contenir que des éléments de type “Touriste” (cette classe venant du tutoriel précédent). Le fonctionnement basique ne change pas, si vous essayez de mettre un élément de type autre celui spécifié dans l’attribut type (genre un String), vous aurez une erreur à la compilation. Personnelement, je n’utilise que très peu (sinon pas) ne composant non-graphiques dans mon MXML, mais bon c’est à vous de voir!

No Comments

Flex 4 : Say hi to Two-way Data Binding !

Une des fonctionnalités vraiment pratique de Flex est le “data-binding” ou, littéralement, la “liaison de données”. C’est à dire que l’on peut déclarer une variable, créer par exemple un composant de texte et faire en sorte que le texte contenu soit systématiquement la valeur de la variable que l’on vient de créer. Flex 4 apporte une petite nouveauté à ce sujet.

Read the rest of this entry »

No Comments

Flex 4 : amélioration de la gestion des states

Pour rappel, les états (states) sont une liste de changement effectués sur un composant. Dans ces changements, on trouvera l’ajout ou la suppression d’un composant enfant, la modification d’une propriété, l’ajout ou la modification d’un écouteur, etc. Cette gestion a été grandement améliorée, pour la rendre encore plus intuitive.

Read the rest of this entry »

1 Comment

Premiers pas avec Flex 4 : MXML 2009

Un petit article rapide pour introduire, je l’espère, une suite de tutoriel sur la prochaine version de Flex, Gumbo de son petit nom, ou tout simplement Flex 4. Niveau pré-requis, assurez vous de savoir ce qu’est le MXML (même si je vais en reparler) et ce qu’est un namespace, et vous devriez pouvoir vous en sortir haut la main.

Read the rest of this entry »

1 Comment