Deprecated: Assigning the return value of new by reference is deprecated in /var/www/sdb/8/f/dev.art/wordpress/wp-settings.php on line 472

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/sdb/8/f/dev.art/wordpress/wp-settings.php on line 487

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/sdb/8/f/dev.art/wordpress/wp-settings.php on line 494

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/sdb/8/f/dev.art/wordpress/wp-settings.php on line 530

Strict Standards: Declaration of Walker_Page::start_lvl() should be compatible with Walker::start_lvl(&$output) in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_Page::end_lvl() should be compatible with Walker::end_lvl(&$output) in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_Page::start_el() should be compatible with Walker::start_el(&$output) in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_Page::end_el() should be compatible with Walker::end_el(&$output) in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/classes.php on line 594

Strict Standards: Declaration of Walker_PageDropdown::start_el() should be compatible with Walker::start_el(&$output) in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/classes.php on line 611

Strict Standards: Declaration of Walker_Category::start_lvl() should be compatible with Walker::start_lvl(&$output) in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_Category::end_lvl() should be compatible with Walker::end_lvl(&$output) in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_Category::start_el() should be compatible with Walker::start_el(&$output) in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_Category::end_el() should be compatible with Walker::end_el(&$output) in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/classes.php on line 705

Strict Standards: Declaration of Walker_CategoryDropdown::start_el() should be compatible with Walker::start_el(&$output) in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/classes.php on line 728

Strict Standards: Redefining already defined constructor for class wpdb in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/wp-db.php on line 306

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/cache.php on line 103

Strict Standards: Redefining already defined constructor for class WP_Object_Cache in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/cache.php on line 425

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/query.php on line 21

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/theme.php on line 623

Strict Standards: Redefining already defined constructor for class WP_Dependencies in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/class.wp-dependencies.php on line 15

Warning: Creating default object from empty value in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/update.php on line 39

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/kses.php on line 947

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/kses.php on line 948

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method Wordics::myWordics_init() should not be called statically in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/plugin.php on line 311
Développement et arts numériques
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/kses.php on line 947

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /var/www/sdb/8/f/dev.art/wordpress/wp-includes/kses.php on line 948

Interface et affichage en Java

novembre 29th, 2008

La richesse des interfaces de ce langage lui permettent aussi bien de fournir une page formaté html que des graphique ou des résultats à la ligne de commande. Les différentes techniques permettant de générer un résultat sont dépendant des classes chargées dès qu’il s’agit d’afficher des

Utilisation en mode console

Mode simple

Les entrées et sorties console sont intégrées sans ajout de classes externes obligatoires, néanmoins comme le montre l’exemple suivant il est utile de référencé certaines classes afin de permettre une saisie optimisé (en l’occurence buffurisation de l’entrée clavier). Les arguments qaund à eux peuvent être intégré en entrée de la méthode main de la classe principale.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class system {
	public static void main(String[] args) throws IOException {
		for (int i = 0; i < args.length; i++) {
			System.out.println(args[i]);
		}
		String saisie = "";
		BufferedReader entreeClavier = new BufferedReader(
				new InputStreamReader(System.in));
		System.out.println("Taper 'je sors du programme' pour sortir");
		while (true) {
			if (saisie.equals("je sors du programme"))break;
			if(saisie!="jesors")System.out.print(saisie);
			saisie = entreeClavier.readLine();
			System.out.println("'"+saisie+"'");			
		}
	}
}

L’applet

L’applet est géré dans une classe simple, l’ajout de graphisme est permis par la méthode paint qui affichera texte et images.
L’exemple suivant permet une initialisation de l’applet en ajout à la propriété msg la valeur “Bonjour de java!’. La méthode paint sera ensuite appelé de manière authomatique et affichera le message précédemment enregistré.

import java.applet.Applet;
import java.awt.Graphics;
 
public class bonjour extends Applet {
	String msg;
	public void init() {
		msg="Bonjour de java !";
	}
	public void paint(Graphics g) {
		g.drawString(msg, 20, 20);
	}
 }

Les interfaces de formulaire

AWT

AWT s’appuie sur des composant pendant de la plateforme d’affichage, il est donc os dépendant. Son successeur introdfuit en java 2 swing s’extrait de ce lien.

Swing

Swing est une bibliothèque graphique pour le langage de programmation Java, faisant partie du package Java Foundation Classes (JFC), inclus dans J2SE. Swing constitue l’une des principales évolutions apportées par Java 2 par rapport aux versions antérieures.

Swing offre la possibilité de créer des interfaces graphiques identiques quel que soit le système d’exploitation sous-jacent, au prix de performances moindres qu’en utilisant Abstract Window Toolkit (AWT). Il utilise le principe Modèle/Vue-Contrôleur (M/VC, les composants Swing jouent en fait le rôle de Contrôleur au sens du MVC) et dispose de plusieurs choix d’apparence (de vue) pour chacun des composants standard.

Un exemple d’utilisation simple

// classes importées
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
 
public class form1 extends JFrame {
	// le constructeur
	public form1() {
		// titre de la fenêtre
		this.setTitle("Mon premier formulaire");
		this.getContentPane().add((new JLabel("Ceci est un label de formulaire!")));
		// dimensions de la fenêtre
		this.setSize(new Dimension(300, 100));
	}
	// fonction de test
	public static void main(String[] args) {
		System.out.println("Début du thread main");
		// on affiche le formulaire
		new form1().setVisible(true);
		// suivi
		System.out.println("Fin du thread main");
	}
}

Comme on peut le remarquer dans l’exemple précédent l’utilisation de swing se fait en complément de AWT et non en remplacement.

Bibliographie

Serge Tahé APPRENTISSAGE DU LANGAGE JAVA - Université d’Angers - 09/1998 - Rév. 06/2002
Wikipedia

L’application de la gravité

septembre 6th, 2008

Appliquer les lois de la logique a été une des premières innovations lié à l’informatique. Des langages comme le prolog ont ainsi été inventé afin de maitriser la logique des assertions comme :

Aristote est un homme.
Tous les hommes sont mortels.
Résultat fourni par l’ordinateur : Aristote est mortel.

La physique n’est pas en reste et les gamers jouent depuis nombre d’années dans des environnements virtuels 3D dans lesquels la pesanteurs et la gestions des collisions est au rendez vous.

Une application en flash

Etant donné la facilité d’implémentation des intéraction utilisateurs, ainsi que la génération graphique, j’ai intégré cette lois simple x(t)=1/2*gt² dans un environnement flash :

Get Adobe Flash player

Le code est simple et ne réprésente qu’une centaine de lignes.

Quelques explications

Le déplacement est gérer par des vecteurs vitesse vx et vy. La fonction de base utilisé pour le déplacement est :

	function calcPosition() {
		position_x = -v0_x*t*Math.sin(angle)+pos0_x;
		position_y = -1/2*g*t*t-v0_y*t*Math.sin(angle)+pos0_y;
	}

La vitesse est réorienté à chaque collision suivant la fonction suivante :

	function rebond() {
		t = 0;
		var pos0:Array;
		pos0_x = this._x;
		pos0_y = this._y;
		var v0x = (positionAnt_x-position_x)/tick;
		var v0y = (positionAnt_y-position_y)/tick;
		v0_x = Math.abs(v0x);
		v0_y = Math.abs(v0y);
		calculateAngle(v0x*inv_x, v0y*inv_y);
		collision = 'sans';
	}

Qui en fait se résume à une mise à jour de la valeur d’angle et des vecteurs v0x et v0y.

Le déplacement est mise à jour a chaque image suivant les principes énooncés précédemment (mouvement paramétré et détection de collision). Comme l’exemple le montre le mouvement est fluide et correspond assez bien à une balle rebondissante.

Pour aller plus loin

Un exemple plus abouti a été réalisé par generalrelativity.org.

Une étude complète sur la détection de collision : Détection de collision sur flashxpress

Utilisation de fonction sur un évènement

août 28th, 2008

Evènement dans le code HTML

Sur un évènement du dom, une méthode simple est de référencer directement dans le code html, l’attribut onevent à la balise que l’on veut rendre dynamique.

Exemple :

<input type="text" value="entrer" />

Cette méthode très avantageuse permet :

  • de passer des paramètres à la fonction destinataire
  • de garder la balise émettrice de l’appel

Ce qui n’est pas possible avec les fonctions dynamiques.

Evènements gérés de manière dynamique

Deux standards

Le premier standard est celui du dom, il est reconnu par firefox et opéra, et s’écrit sur la forme :

element.addEventListener(event, handler, typePropagation);

Le deuxième est celui d’IE :

element.attachEvent(event, handler)

A noter que event s’écrit avec IE en incluant le ‘on’ et sans dans le dom w3c (ie:onclick, dom:click).

Un explication détaillée peut être trouvée ici

Problématique

Dans une utilisation basique, nous perdons :

  • la capacité d’envoyé à la fonction d’autre variable que l’élément source.
  • l’élément sur lequel est inscrit la fonction (sous IE il est impossible de retrouver de manière simple cet élément)

Cherchant une utilisation cross-Browser nous nous retrouvons avec très peu d’information une fois l’évènement enclenché.

Solution

Il peut s’averer utile de transmettre des variables, il est tout aussi utile de connaitre l’origine de l’évènement qui est souvent plus intéressant que la balise qui l’a déclenché*.

l’utilisation de la fontion eval s’avère une solution :

function addEvent(element, action, fct, bool){
	if (element.addEventListener) {
		element.addEventListener(action, function(){eval(fct)}, bool);
	} else if (element.attachEvent) {
		element.attachEvent("on"+action, function(){eval(fct)});
	}
}
addEvent(
    document.getElementById('test'),
    'click',
    'alert(\''+document.getElementById('test').getAttribute('id')+'\');alert(new Date())',
    false
)

Balise Test

Voilà, avec cette méthode vous pouvez transmettre tout paramètre à vos évènements.

A noter que cela est aussi utilisable pour les handlers présent dans settimeout ou dans setintervalle.

*En effet, sous ces deux navigateurs, un évènement intégré dans une balise de niveau n serait reconnu par les balise de niveau n+m, et c’est la balise finale qui enverrais son identification et non la balise portant l’évènement. Avec IE, il n’existe pas de variable simple afin de récupérer cette balise, avec le dom, event.currentTarget permet de la connaitre.

Récupérer flux de sortie en php

juillet 4th, 2008

Fonctions très utiles pour qui veux mélanger php et html sans avoir peur de perdre la coloration syntaxique ou les possibilités d’auto complétion permises par les éditeurs modernes. Vous éditer un fichier html comportant quelques balises php pour les variables à afficher, et vous le trater à partir d’une fonction similaire à celle-ci :

Exemple :

function affich($vars, $url_du_fichier_a_inclure){
    //rend disponible les variables dans la fonction
    foreach($vars as $n=>$v)$$n=$v;
    //Stoppe le flux de sortie et le bufferise
    ob_start();
    include("url_du_fichier_a_inclure");
    //Sauvegarde du tampon dans une variable
    $buffer = ob_get_flush();
    ob_end_clean ()
?>
Author: Nicolas de Marqué - Fromentin Categories: Web, html, php Tags: ,

Bench php

juillet 4th, 2008

Pour se rappeler des bonnes pratiques voir sur phpbench.com

Les benchs proposés permettent de comparer les méthodes suivantes :

  • Boucle de lecture:foreach() vs. for() vs. while(list() = each())
  • Boucle compteuse: For-loop test
  • Coucle de Modification: foreach() vs. for vs. while(list() = each())
  • Using the & -ref-operator…as a so called “alias”
  • Using the =&-ref-operator $obj = $someClass->f() vs. $obj =& $someClass->f()
  • Sortie chaines : echo vs. print
  • Using the =&-ref-operator $obj = new SomeClass() vs. $obj =& new SomeClass()
  • Structure de control : switch/case/default vs. if/elseif/else
  • Boucle compteuse : For vs. While
  • Test du type de variable : isSet() vs. empty() vs. is_array()
  • Type de guillement : double (”) vs. single (’) quotes
Author: Nicolas de Marqué Categories: Web, php Tags: ,

Nocturne au Mamac

mars 22nd, 2008

Piensa, Cage et danse contenporaine

Entrecoupé par de nombreuses représentations, la soirée était centrée sur la musique et particulièrement sur l’utilisation de musicale de 12 gongs installés au milieu de l’expo.

Gongs piensa

L’ambiance familiale s’accordait à merveille avec le charme oriental de la musique, qui oscillait de rythmes alanguis en rythme trépidants. Ce fil rouge, point de rencontre était au milieu de trois séries d’hommes assis ceux là même qu’affectionne Piensa.

Homme assis1 Homme assis2

La visite présentée et commentée à deux voix se terminait par l’exploration de deux cabines translucides dont la couleur variait périodiquement.

Les présentations musicales s’entrecroisait avec un cocktail maison à base de jus de fruit et de perrier, ainsi que d’amusants spectacles de cirque réalisé par Arutiste et (Terrain vague) et de délicieux moments de danse contemporaine réalisés par le projet sillage.

Evidanse
Author: Nicolas de Marqué Categories: Art Tags: , ,

Inclusion javascript - include javascript

mars 5th, 2008
function include(url){
	if ( document.all ){
		var xml = new ActiveXObject("Microsoft.XMLHTTP");
		xml.Open( "GET", url, false );
		xml.Send()
		document.writeln(xml.responseText);
	}else{
		if ((location.host=='' &amp;&amp; url.indexOf(location.protocol)==-1) || url.indexOf(location.host)==-1){
			netscape.security.PrivilegeManager.enablePrivilege("UniversalConnect");
		}
		var dest = new java.net.URL(url);
		var dis = new java.io.DataInputStream(dest.openStream());
		var res = "";
		while ((line = dis.readLine()) != null){
			res += line + java.lang.System.getProperty("line.separator");
		}
		dis.close();
		document.writeln(res);
		return res;
	}
}

Louis Cane

mars 3rd, 2008

Médiation réalisé par Mars au musée au Fond de scène de Valrose

Présentation de Louis Cane dans l’arrière scène du château de Valrose.

Louis Cane 1 Louis Cane 2

Author: Nicolas de Marqué Categories: Art Tags: ,

Thomas Shütte

avril 29th, 2007

Vernissage à la Galerie Nelson

Dans une ambiance allemando-guindé était exposé hier le dernière oeuvre de Thomas Schütte. Quelque acquarelles d’une qualité moyennes, aux couleurs néanmoins bien choisies rencontraient des bronzes et des sculptures au dimensions généreuses. Quelques constructions, musées virtuels et vides dans lesquels n’étaient plus présent que les hommes d’entretients sont présenté à l’étage. Cette expo trop rigide mais néanmois très bien présentée peut faire l’objet d’une visite rapide. Les esprits les plus curieux s’attarderont peut être sur un détail ou une singularité.

Aquarelles Sculptures Bronzes

Author: Nicolas de Marqué Categories: Art Tags: ,

Ouverture de la Galerie Magda Danysz

avril 28th, 2007

Dans une ambiance surchauffé par la musique et le campari, une foule hétéroclite et bonne enfant appréciait l ouverture de la galerie

Dès l’ouverture un orchestre, ou plutôt une fanfare nous entraine dans une ambiance électrique et décalé qui emplit la rue entière. Une foule composée tout aussi bien d’amateurs éclairées, de dandies et de femmes aux tenues calibrés, de jeunes clubbers que de passants se massaient devant la galerie.

le concert à l\'entrée - fanfare et campari

Le vernissage était principalement destiné à Mike Giant, qu occupait a presque l’intégralité du premier étage. C’est un artiste américain né à New York, ces premières expériences artististiques provenant du tatouage et de du dessin, son oeuvre s’en trouve inspirée. Ainsi ces toiles ou plus exactement ces reprographies d’encres sur papier sont des noirs et blancs ou s’entremêlent courbes féminines et dessins réalistes dans lesquels s’imbriquent messages textuels. Certaines de ces créations d’une sensualité exacerbée frappe et pénètre notre moi profond.

Mike Giant - Photo Mike Giant - From web

Au sous sol, des vidéo d’UltraLab ont précédés un show de musique post bourgeaoise qui se présentait sous la forme d’untrio composé d’un poète ou conteur récitantson texte à travers un mégaphone, d’un acteur centre de la performance qui posaient en gestes parfois exacts parfois delirants les différentes histoires, et d’un clavier modernes lançant des boucles sonores d’une tonalité moderne et réellement agréable. Cet ensemble hétérogèned’apparence arrivait à formait une unité surprenante et raffraichissante.

Icone Tada

Les autres parties de l’expo était composé par des artistes comme Miss Van, Kosta Kulundzic, Irwin Olaf, Icon Tada, et bien d’autres…

Miss Tan Kosta Kulundzic Collectif

Une exposition bien agréable et rythmé, présentant des artistes d’une qualité réelle, des artistes qui créent et montrent, des artistes qui recherchent de nouveau concepts. Ils ont chacun leur propre identité, leur propre savoir faire.

En somme, une expo à voir et revoir, en réel ou sur le site.

Author: Nicolas de Marqué Categories: Web Tags: