Catégorie : Code

Flux Rss
<< previous 1 | 2 |
 

[DEV] MyCalc - Ma première appli Java

By esion - the 2007-09-05 12:33:00 - in Code

(0) Comments

Après un retour aux sources de quelques jours, c'est à dire avec pour seule connexion un bon vieux modem bas-débit facturé au coût d'une communication locale, je me lance dans le langage Java.

Ok, ce langage a fait ses preuves (en tout cas il reste à la mode). Je me devais alors de prendre un aperçu pour ne pas rester dans le flou intersidéral à ce sujet. Alors avant de prendre mon billet pour la cambrousse je charge sur mon portable (l'ordinateur) une documentation (avec quelques fautes de frappe, succincte mais suffisante et assez claire) ainsi qu'un JDK (Java Dev Kit) un peu au hasard.

Je n'ai pas encore tout capté des concepts du langage comme par exemple la création d 'évènements multi-thread ou ce genre de bizarreries sûrement très pratique pour une meilleurs optimisation des ressources (bla blabla), mais quelle joie d'avoir une interface utilisateur fonctionnelle en quelques jours.

Le résultat, une application qui ne sert à rien et qui affiche le contenu des boutons sur lesquels on clique... (Mais c'est z'ubër!) Le but serait de réaliser une petite calculette.

C'est partit pour un code source commenté :
/**File : MyCalc.java
* version : 0.000000.1
* Ma première application en Java
* Ne fait rien mis à part afficher les boutons cliqués
*/


//Compilation : javac MyCalc.class
//2 warnings sur le jdk 1.5 :'(
//Lancement : java MyCalc

import javax.swing.*;
//je dois melange swing et awt pour l'interface graphique : a revoir
//import javax.swing.border.*;
import java.awt.*;
//permet de gerer les évennements utilisateurs
import java.awt.event.*;

//definition d'une classe correspondant au nom de fichier
public class MyCalc extends JFrame implements ActionListener{

//Message par défaut
protected JLabel view_msg = new JLabel("Hello World!");

public MyCalc(){
super();
setTitle(" My Calc ");

//Définition de la fenêtre principale
this.initGraphic();

//Todo: implement action in menu
//setMenuBar(new InitMenu());

//Style de layout principal (5 positions de composant possible)
//(haut, bas, gauche, droite, centre : NORTH, SOUTH ...)
setLayout(new BorderLayout());

this.initBody();
this.buttonBoard();

//Pour que les composants de l'interface soient correctement placés
//Mais fout en l'air la taille de la fenêtre quand elle est spécifiée
pack();
//Remplace show() qui est deprecated :
setVisible(true);
}

protected void initGraphic(){
//taille de la fenetre
setSize(205, 155);
//setResizable(false);
//position de la fenetre
setLocation(250, 250);
//permet de quitter l'application
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
}

protected void initBody(){
Panel p_body = new Panel();
add(p_body, BorderLayout.NORTH);
//Message d'accueil et boutons cliqués dans un panel au nord
//faire 5 pas après le cocotier pour trouver le trésor
p_body.add(view_msg);
}

protected void buttonBoard(){
//Ah! et le panel est un composant conteneur de composants
//pratique!
Panel p_btns = new Panel();
add(p_btns, BorderLayout.SOUTH);

//FlowLayout affiche les composants à l'affilé
//La grille est mieux ici
p_btns.setLayout(new GridLayout(4,3));

for (int num = 1; num <= 9; num++){
String name = "b_" + num;
//On ne fait pas n'importe quoi avec les types : Integer.toString
//Mon chiffre devient une chaîne de charactères
JButton $name = new JButton(Integer.toString(num));
//$ pour accéder à "l'adresse" de la variable (merci pif)
$name.addActionListener (this);
p_btns.add($name);
}

//Button c'est moins stylé
JButton b_star = new JButton("*");
b_star.addActionListener (this);
JButton b_0 = new JButton("0");
b_0.addActionListener (this);
JButton b_diese = new JButton("#");
b_diese.addActionListener (this);

p_btns.add(b_star);
p_btns.add(b_0);
p_btns.add(b_diese);

//une class "bouton" serait utile pour éviter de se repeter (DRY)
}

public void actionPerformed (ActionEvent e) {
//Le meilleur moyen pour activer telle ou telle action en fonction de l'interaction
//Object source = e.getSource();
//if(source == b_star) this.view_msg.setText("Star");
//Sinon utiliser le texte du bouton (pas bien):
//if(e.getActionCommand() == "*") this.view_msg.setText("*");

this.view_msg.setText(e.getActionCommand());
}

//pas necessaire pour un applet
public static void main(String argv []){
new MyCalc();
}
}
 
 

[php]Caddy-x6tm

By esion - the 2007-04-26 01:15:00 - in Code

(0) Comments

Et bien avec une cheville à moitié détraquée depuis samedi dernier (mais je ne regrette rien), j'ai eu le temps de pauffiner un petit projet dans lequel je me suis lancé il y a quelque temps.

Voici donc Caddy, un gestionnaire de produits, commandes et factures en ligne.

Les ingrédients :

 

  • Cakephp le framework qui va pas mal
  • Php en programmation orienté objet
  • Ajax sans abuser
  • Acl (liste de controle d'accès, comme sur windows ou linux)
  • Sanitize pour éviter les exploits Xss

Bien sûr, l'appli n'est pas "parfaite" (quoique très largement exploitable) alors j'ai mis les sources du projet sur google code sous licence MIT (comme cakephp d'ailleurs :| )

Pour finir j'ai mis l'appli en production sur http://upward.esion99.info

- hebergement 1and1 (presque no soucy mais ça c'est la fatigue).

... Prochain jeu : création d'un blog écrit en python avec Pylons ou Django (mais je penche plus pour le premier).

 
 

Lite.x6tm 0.2

By esion - the 2006-09-26 16:53:49 - in Code

(0) Comments

Il y a quelques temps, je présentais un projet de site en php/sqlite sur lequel je travail.

Aujourd'hui je peux exposer la mise à jour de celui-ci et surtout la possibilité de voir à quoi cela ressemble dans le fond.

Un peu plus d'info par ici : x6tm.esion99.info

Et par ici une version demo en accès complet dans un style welcome in ze trou perdu dans la campagne,
login : admin
pass : admin
demo lite.x6tm

Commentaires et critiques sont les bienvenues.
 
 

lite.x6tm

By esion - the 2006-09-09 22:21:20 - in Code

(0) Comments

Un nouveau petit billet histoire de dire que je ne suis pas mort, et pour donner des nouvelles de ce que je fais.

Et oui je ne glande pas sans relache, depuis quelques mois je me suis remis au php pour creer un cms (content management system) type blog ou site perso (peu importe).

Pour l'instant ça ressemble à ça :


J'ai finalement trouvé un nom pour ce projet, voici lite.x6tm (autrement dit lite.extended system).

Et pourquoi un nouveau cms alors qu'il en existe déjà plein?
Car je voulais quelque chose de simple, rapide à mettre en oeuvre et ne nécessitant quasiment aucune connaissance en informatique.

J'essai de regrouper dans ce projet tout ce qui est interressant à utiliser :
-une base de donnée sqlite qui a la qualité de n'avoir aucune installation particulière à la différence d'une bdd mySQL.
-des templates pour l'affichage de skin, ce qui signifie que l'élaboration d'un skin devient très facile, quelques connaissances en html, css et design suffisent.
-du code orienté objet ... mais pour l'instant j'apprend.

En 3 mots je recherche à creer quelque chose de simple, utile et agréable.

Pour l'instant une démo du site se trouve ici : http://x6tm.esion99.info (le lien n'est pas permanent (avis aux chiasmaphobes)
Prochainement je mettrai une démo "ouverte" avec accès à l'admin.
 
<< previous | 1 | 2 |