Yepa!!! Juste un p'tit mot de joie pour dire que j'ai reussi a avoir lalex.fr... Je ne sait pas encore si ca va pointer sur le même site ou pas...
Ca fait du bien de se sentir localisé! ![]()
vendredi, juin 23 2006
Par -Alexandre LEGOUT aka LAlex- le vendredi, juin 23 2006, 15:09 - [ Divers ]
Yepa!!! Juste un p'tit mot de joie pour dire que j'ai reussi a avoir lalex.fr... Je ne sait pas encore si ca va pointer sur le même site ou pas...
Ca fait du bien de se sentir localisé! ![]()
mardi, juin 13 2006
Par -Alexandre LEGOUT aka LAlex- le mardi, juin 13 2006, 13:37 - [ Divers ]
... oui bon, les livres sans pages ca existe pas, mais je trouvais pas de titre! ![]()
Il m'a été demandé recemment d'améliorer un livre dont les pages se tournent. Le script utilisé jusqu'à maintenant était celui dont j'ai déjà parlé sur ce blog, le fameux pageFlip. Il est vrai que le mouvement des pages est admirable de souplesse, mais il posait quelques problèmes que j'avais à résoudre:
Si, comme je l'ai dis, le mouvement de pageFlip est admirable, il faut bien avouer qu'il n'en est pas de même pour la lisibilité du code! :\ Autant le dire, rajouter ce type de fonctionnalité au code existant, c'était mission impossible. J'ai donc recodé le moteur de A à Z, replongeant pour l'occasion dans les calculs de vecteurs, intersections de droites, et autres considérations du programme de maths de 1ere... Le calcul des matrices pour les dégradés des ombres (dont je ne m'étais jamais servis) m'a aussi pas mal accaparé. Sans compter le fait de redessiner systématiquement les contours du livre pour pouvoir appliquer des effets, étant impossible de le faire sur un composant....
Une autre problèméatique était aussi de rendre le composant "accessible", étant donné que c'est un graphiste pas codeur pour un sou qui devra s'en servir.
Bref, voilà mon resultat (sans preloading, pour moins de 700Ko):
Les images sont d'un dessinateur Chilien que j'ai découvert sur deviantart: pyromaniac
Le site auquel est destiné ce livre sera bientôt en ligne, je ferais une mise à jour à ce moment là ![]()
vendredi, juin 9 2006
Par -Alexandre LEGOUT aka LAlex- le vendredi, juin 9 2006, 18:49 - [ AS2 ]
Number, en plus d'être une classe, est également une fonction, tout comme le sont Array, Boolean et String. Elle permet de convertir un objet quelconque en une instance de Number.
Seulement, ce qui n'est pas précisé dans la doc, c'est que cette fonction suit les mêmes règles que parseInt, sans pouvoir toutefois lui passer de second paramètre, qui précise dans quelle base doit se faire la conversion. Ce qui signifie que :
Et c'est sur ce dernier point que je me suis fait avoir, en cherchant un long moment pourquoi mon "062" devenait 50... :\ J'ai donc du remplacer toutes mes conversions :var num:Number = Number("062") // num = 50
// par
var num:Number = parseInt("062", 10) // num = 62
Donc voilà, si ca peut profiter à quelqu'un.. ![]()
mercredi, mai 10 2006
Par -Alexandre LEGOUT aka LAlex- le mercredi, mai 10 2006, 15:06 - [ AS2 ]
Lors qu'une classe hérite d'une autre, tout l'interêt est bien évidemment de ne pas réimplémenter les methodes de la classe mère. En effet, en l'absence d'une méthode portant le nom demandé, la méthode de la classe mère est appelée, transmettant ainsi tous les arguments. Eh bien ce qui est dommage, c'est que ce n'est pas le cas du constructeur... :\
En effet, si une classe mère prend un argument en paramètre, et qu'une classe fille hérite de cette dernière sans implémenter de constructeur, les paramètres passés au constructeur de la classe fille ne seront pas transmis.
La preuve par l'exemple: j'utilise actuellement un ensemble de managers gérant chacun des objets (Contacts, Articles, etc...) dont les classes implémentent toutes la même interface. Le but est donc de créer un manager "de base" (non instanciable) qui factorise les comportements communs... Chaque manager est lié à un contexte dans l'application, qui est passé en paramètre au constructeur du manager:
/* == Classes utilisées
Ceci est trés certainement du à la conversion en AS1. En effet, en AS1, déclarer une classe revient à déclarer son constructeur, et donc a relayer "manuellement" les paramètres du constructeur si besoin. Le "compilo" AS2 du coup crée automatiquement un constructeur dont le code est:
interface Item
class Contact implements Item
class Context
*/
// Classe mère
class BaseManager {
private var _context:Context;
private var _selectedItem:Item;
// Le constructeur prend un paramètre
private function BaseManager(ctx : Context) {
_context = ctx;
}
public function getContext() : Context {
return _context;
}
public function getSelectedItem() : Item {
return _selectedItem;
}
private /*protected*/ function setSelectedItem(i : Item) {
if (i != _selectedItem) {
_selectedItem = i;
dispatchEvent({type:"selectionChanged", selected:_selectedItem});
}
}
}
class ContactManager
extends BaseManager {
// Force le typage à 'Contact'
private function setSelectedItem(c : Contact) {
super.setSelectedItem(c);
}
public function getSelectedContact() : Contact {
return Contact(getSelectedItem());
}
}
// Création du contexte
var ctx:Context = new Context("mainApp");
// Création du ContactManager
var contactManager:ContactManager = new ContactManager(ctx);
// Affichage du contexte
trace(contactManager.getContext()); // undefined function ContactManager() {
alors que dans mon cas, il faut que je crée le constructeur moi-même:
super();
}function ContactManager(c : Context) {
super(c);
}
C'est peut-être déjà connu de beaucoup, mais moi j'ai cherché un p'tit moment quand-même... Bref, cela revient encore et toujours au problème d'appeler le constructeur d'une classe mère avec un nombre indéfini d'arguments (l'idéal étant avec apply)... :\
mercredi, avril 5 2006
Par -Alexandre LEGOUT aka LAlex- le mercredi, avril 5 2006, 17:52 - [ Liens ]
Il est beau, il est tout neuf!
Le Flash player est enfin disponible en version 7 pour les plateformes PocketPC. Le geek que je suis va enfin pouvoir se pavaner avec ses propres applications sur son téléphone! ![]()
Pour le téléchargement, rendez-vous sur la page dédiée du site de Macromedia, euh.... Adobe pardon! ![]()
mercredi, mars 8 2006
Par -Alexandre LEGOUT aka LAlex- le mercredi, mars 8 2006, 14:20 - [ Liens ]
La leçon d'aujourd'hui consiste à étendre ses connaissances en Flash, notamment en terme de composants et de programmation videoludique. Pour cela, foncez sur gumBlog, le tout nouveau blog de l'ami Foxy, qui vient tout juste d'ouvrir. ![]()
Allez, on ouvre son aggregateur, on on copicolle l'adresse du fil RSS! Plus vite que ca! ![]()
mercredi, mars 1 2006
Par -Alexandre LEGOUT aka LAlex- le mercredi, mars 1 2006, 17:57 - [ Liens ]
Un certain nombre de librairies AS3 viennent d'être mises à disposition sur Adobe Labs. Elles offrent un accés à quelques API comme RSS, Atom, Flickr, et bien d'autres. Du feedback est le bienvenu évidemment! ![]()
Arghhhh, ce que c'est rageant de ne pas avoir le temps de me mettre à l'AS3... ![]()
mercredi, février 15 2006
Par -Alexandre LEGOUT aka LAlex- le mercredi, février 15 2006, 14:19 - [ AS2 ]
Pour ceux qui ne lisent pas la mailing-list de OSFlash, Ralf Bokelberg y donne une petite astuce pour tester la classe d'une variable, et de manière plus globale comment éviter une succession de if...else if...else.
En fait, le switch...case a pour limitation de ne servir qu'à comparer une valeur à une autre (ou plusieurs autres), alors qu'un if va vérifier si une condition est vraie. Mais, et c'est là qu'est l'astuce, vérifier si une condition est vraie consiste uniquement à comparer son résultat à true... et voila!
Petit exemple:public static function getEnvironement(eng : Engine) : String {
var env:String = "Twilight zone";
switch(true) {
case (eng instanceof Boat):
env = "Water";
break;
case (eng instanceof Car):
case (eng instanceof Motorcycle):
case (eng instanceof Bus):
env = "Road";
break;
case (eng instanceof Plane):
env = "Sky";
break;
case (eng instanceof Spacecraft):
env = "Outerspace";
break;
default:
trace("ET???");
}
return env;
}
C'est peut-être connu, et certainement utilisable dans de nombreux langages, mais moi j'ai découvert aujourd'hui, et je trouve l'astuce bien élégante! ^^
vendredi, février 10 2006
Par -Alexandre LEGOUT aka LAlex- le vendredi, février 10 2006, 10:18 - [ Liens ]
Didier Brun aka Foxy, programmeur Flash freelance de son état, propose aujourd'hui une structure de formation d'une nouvelle forme : Flashead. Basée sur des années d'experience sur le terrain et dans le domaine de la formation, cette formule originale propose à tous de se former à la programmation Actionscript sur des cas concrets, avec à la fin de chaque section un veritable module qui tourne, directement utilisable dans le travail quotidien de tout programmeur AS! Vous l'aurez compris, cela consiste à rendre le stagiaire operationnel dés sa sortie de la session de formation.
Super concept, formateur trés compétent, Flashead ne peut être qu'une réussite! ![]()
lundi, février 6 2006
Par -Alexandre LEGOUT aka LAlex- le lundi, février 6 2006, 12:26 - [ Divers ]
Une matinée entière à se casser les neurones sur un stupide problème de compilation. :\ En effet, un code qui fonctionnait parfaitement avant le week-end refusait de se compiler ce matin. Aucun modification depuis, mais je me retrouvais avec un message : "The name of this class conflicts with the name of another class"... Changement de classpath, modification des chemins, suppression des .aso, j'ai tout essayé!
Au final j'avais avancé de deux mois la date de mon ordi pour des tests de versions trial limitées dans le temps, fait 2-3 modifs à mon code, recompilé, et une fois tout ça opérationnel, je suis revenu à la date en cours... Eh ben le compilateur de Flash est incapable de gérer des fichiers dont la date de création est dans l'avenir.
La solution m'est venue du blog des développeurs de XPComponent, confronté à une problématique bien plus fréquente qui est celle du travail entre plusieurs duseaux horaires... J'en profite donc pour diffuser l'info afin d'éviter les frappages de tête contre le mur à ceux qui se retrouveraient face au même problême! ![]()
jeudi, janvier 5 2006
Par -Alexandre LEGOUT aka LAlex- le jeudi, janvier 5 2006, 15:58 - [ AS2 ]
Le passage à FDT n'est pas toujours sans douleurs... Les habitudes évoluent, et la façon de coder varie inmanquablement. Un des problèmes auxquels je me suis trouvé confronté a été l'utilisation de la commande 'trace', que l'on peut bien évidemment remplacer par un appel de méthode via l'option -trace de MTASC... Comme j'en ai déjà parlé, j'utilise la console SOS, pour le côté pratique de la connexion socket que sont la connexion à une console sur une machine distante, ou la gestion d'une couleur de fond différente par application (TRES utile !!!)
Le moyen que j'utilise aujourd'hui afin d'éviter les problèmes de non-importation de la classe s'occupant de se connecter à la console consiste à créer un petit répertoire utilitaire contenant les classes utiles à FDT, et de l'inclure dans mes "Linked librairies", et d'en appeler une méthode start(). Pour l'instant, seule le connecteur à la console est présent, mais il se peut que d'autres suivent (notamment mon petit framework de profiling, a venir plus tard :P)
Bref, voici ma classe SOSTracer, utilisée par MTASC avec l'option -trace SOSTracer.out :
/**
Le but est ici d'être indépendant de tout autre package, d'où l'utilisation d'une classe XMLSocket "de base" (j'en ai implémenté une plus évoluée), et l'utilisation d'un Delegate "à la main"
* @author LAlex
* @version 0.1
* @since 2006-01-05
*/
class SOSTracer {
// Console infos
public static var SOS_HOST:String = "localhost";
public static var SOS_PORT:Number = 4444;
// Used for static method 'out'
private static var __instance:SOSTracer;
// Used for line number display
private static var __lineNumber:Number = 1;
// Allow to display line numbers
public static var enableLineNumber:Boolean = false;
// Static function, used for MTASC -trace option
// SOSTracer.start() must be called before
public static function out(o) {
__instance.trace(o);
}
// Launch the static SOSTracer with
// given background color
public static function start(col:Number):Boolean {
__instance = new SOSTracer(col);
return true;
}
private var _bufferize:Boolean = true;
private var _socket: XMLSocket;
private var _isConnected:Boolean = false;
private var _color:Number;
// For later ;oP
// private var _itv:Number = -1;
// Buffer
private var _stack: Array;
function SOSTracer(col:Number) {
if (col != undefined) {
_color = col;
}
_stack = [];
_socket = new XMLSocket();
_socket.onConnect = function (suc) {
var tr = arguments.callee.tracer;
tr._connected(suc);
};
_socket.onConnect.tracer = this;
_socket.connect(SOS_HOST, SOS_PORT);
}
// Launched on socket connection
private function _connected(sc:Boolean) {
if (sc) {
if (_color != undefined) {
_socket.send("!SOS<appColor>" + _color + "</appColor>");
}
_flush();
_isConnected = true;
} else {
_bufferize = false;
throw new Error("SOS Socket connection failed");
}
}
// Flush buffer
private function _flush() {
while(_stack.length) _socket.send(_stack.shift());
}
// Display a string (or object representation)
public function trace(o) {
var no:String = (enableLineNumber ? "[" + __lineNumber++ + "] " : "") + o.toString();
if (_isConnected) {
_socket.send(no);
} else if (_bufferize) {
_stack.push(no);
}
}
}
Afin d'éviter de surcharger la connexion, je prévois ensuite d'utiliser un système de bufferisation éventuel, au moyen du buffer utilisé avant la connexion, et d'un setInterval (vous avez surement remarqué que la propriété pour l'intervalle est déjà prévue, mais pas utilisée encore :$).
Pour l'utiliser, rien de plus simple, je lance un start() dans mon main et j'utilise trace() dans mon code :
public static function main() {
SOSTracer.start(0XFFFFCC); // Couleur de fond dans la console
}
Pour le déploiement, il suffit de changer dans MTASC l'option -trace SOSTracer.out par -trace no, et de commenter la ligne SOSTracer.start() (pas de import à commenter, du fait de l'absence de package 8))
mardi, janvier 3 2006
Par -Alexandre LEGOUT aka LAlex- le mardi, janvier 3 2006, 17:26 - [ Divers ]
Mon employeur est à la recherche d'un autre développeur Flash pour travailler avec moi (chercher le café, apporter les affaires au pressing, etc... Naaaan, j'déconne :P). Etant donné que je suis sequestré au bureau tant qu'on a pas 10 CV, je pousse un peu la propagande via mon blog! ![]()
Plus sérieusement, l'ambiance est bonne, l'équipe jeune et compétente, et le travail passionnant : une vraie boite d'informaticiens!
C'est un CDD menant à un CDI, et ça se passe à Sophia Antipolis (06), technopole sous le soleil de la région niçoise.
Voici le libellé de l'annonce :
Centile est une société de développement de serveurs Java de Voix sur IP en pleine croissance (actuellement une trentaine de personnes).
Nous avons développé un softphone en ActionScript 2. L'application a beaucoup de succés, et nous recevons de nombreuses demandes de fonctionnalités supplémentaires (Instant messaging, Vidéoconférence, Envoi de mails...). D'autres applications clientes sont également destinées à être développées en Flash/AS2.
Nous sommes à la recherche d'un développeur AS2 capable d'être rapidement opérationnel à mes côtés.
Outils utilisés :
1) Flash MX 2004 Professionel / Eclipse+FDT (ou ASDT, SEPY, ...)
2) MDM Zinc V2
Profil recherché :
Nous recherchons une personne passionnée, dynamique, ayant l'esprit d'équipe, autonome et ayant surtout une forte capacité d'assimilation.
Compétences techniques :
1) Indispensable
- Actionscript 2 avancé
2) Fortement souhaité
- Connaissances dans le développement d'applications Client/Serveur en AS2.
- Connaissances du développement flash "Standalone", pour applications autonomes Windows/Linux/MacOS.
- Connaissances des techniques d'optimisation de la mémoire et du CPU pour Flash.
- Connaissance d'un language de programmation objet (C++, C# ou Java)
3) Serait un gros plus
- Expertise dans une ou plusieurs technologies Microsoft (développement de plugins et de dll).
- Expertise dans les algorythmes de sécurité et encryption.
- Expertise en ergonomie et design graphique.
- Expertise dans le webdesign.
Rémunération :
Entre 30K€ et 40K€ selon compétences
Vous pouvez envoyer votre CV à flash.job@centile.com
Bon courage à ceux qui sont interessés! ^^
jeudi, décembre 22 2005
Par -Alexandre LEGOUT aka LAlex- le jeudi, décembre 22 2005, 14:12 - [ AS2 ]
Il peut être trés pratique, voire parfois indispensable pour obtenir un code "clean", de ne pouvoir passer une valeur à une méthode, qui doit obligatoirement être une des valeurs "possibles"... C'est ce que l'on appelle des énumérations. Java gère cela nativement grâce à la classe Enum.
De même, avoir la possibilité de créer des constantes est également bien utile. Dans la pratique, il s'agit en fait de créer une propriété statique en lecture seule. Le moyen le plus sûr de faire cela serait de créer une variable statique privée, et un getter statique public.
Voici ce que cela pourrait donner dans le cadre d'une classe d'encryptage:
class Crypter {
Bien que tout cela soit quand-même assez clean, cette implémentation pose quelques problèmes:
// Private static members
private static var _NONE:String = "none";
private static var _MD5:String = "md5";
private static var _SHA1:String = "sha1";
// Public constants
public static function get NONE():String {
return _NONE;
}
public static function get MD5():String {
return _MD5;
}
public static function get SHA1():String {
return _SHA1;
}
private var _cryptMode:String;
function Crypter(mode:String) {
_cryptMode = mode;
}
function encrypt(s:String):String {
// Case use private vars, to avoid decreasing
// performances by using a getter
switch(_cryptMode) {
case _NONE:
return s;
case _MD5:
var md5crypted:String = "";
// Perform MD5 cryptage
return md5crypted;
case _SHA1:
var sha1crypted:String = "";
// Perform SHA1 cryptage
return sha1crypted;
}
}
}
// Usage
var myCrypter:Crypter = new Crypter(Crypter.MD5);
trace(myCrypter.encrypt("String to be encrypted"));
// Enum
class CryptMode
extends String {
public static var NONE:CryptMode = new CryptMode("none");
public static var MD5:CryptMode = new CryptMode("md5");
public static var SHA1:CryptMode = new CryptMode("sha1");
private function CryptMode(content:String) {
super(content);
}
}
class Crypter {
private var _cryptMode:CryptMode;
function Crypter(mode:CryptMode) {
_cryptMode = mode;
}
function encrypt(s:String):String {
// Case use private vars, to avoid decreasing
// performances by using a getter
switch(_cryptMode) {
case CryptMode.NONE:
return s;
case CryptMode.MD5:
var md5crypted:String = "";
// Perform MD5
return md5crypted;
case CryptMode.SHA1:
var sha1crypted:String = "";
// Perform SHA1
return sha1crypted;
}
}
}
// Usage
var myCrypter:Crypter = new Crypter(CryptMode.MD5);
trace(myCrypter.encrypt("String to be encrypted"));
Cette méthode à tous les avantages:trace(CryptMode.MD5 == "md5"); // true Bref, je suis assez content d'avoir trouvé ce moyen de rendre mes codes un peu plus clean. J'utilise dorénavant énormément cette astuce, notamment concernant la diffusion d'évenements, en créant une classe collection contenant les évenements diffusables par une classe définie, puis en utilisant le typage dans la signature de mes addEventListener (en parlant de ça, bientôt un tool de diffusion d'évenements maison).
Wala, wala! ^^
mercredi, décembre 14 2005
Par -Alexandre LEGOUT aka LAlex- le mercredi, décembre 14 2005, 10:47 - [ Divers ]
Je n'avais jamais vraiment voulu changer d'environnement de développement. SEPY associé au compilo Flash fonctionnait trés bien, surtout que SEPY permet de compiler directement dans Flash d'un simple CTRL+ENTREE, habitude que j'avais prise depuis bien longtemps, alors que les éditeurs externes n'étaient pas au point, et que je codais donc dans l'IDE Flash...
Puis, la taille du projet sur lequel je travaille devenant de plus en plus importante, les temps de compilation se sont rallongés de manière assez exponentielle... C'est alors, qu'il y a 2 jours, lassé de passer plus de temps à regarder la jauge de compilation plutôt qu'à coder, j'ai tenté une intégration de MTASC dans mon processus de dev. Là-dessus rien à dire: SEPY gère vraiment trés bien cette intégration (avec un raccourci CTRL+SHIFT+ENTREE, comme le mode debug de Flash :P), ouvrant une petite pop-up pour saisir les paramètre de MTASC, et un deuxième onglet pour afficher le SWF. Restait le problème de la sortie standard, vite réglé avec l'option -trace de MTASC et la trés agréable console de LuminicBox...Notez que SEPY est disponible en beta 1.5, parfois buggy, mais bien agréable la nouvelle barre latérale ;))
Mais je suis entouré de codeurs Java au travail. Et évidemment, voir des programmeurs utiliser un JBuilder rempli d'une foultitude de fonctionnalités interessantes en terme de gestion d'un projet de développement, c'est tentant!
Alors, ayant entendu de nombreuses appréciations positives sur Eclipse, j'ai un peu louché de ce côté là, malgré mes réticences (IDE en Java, grosse application bien lourde...). Je m'y étais déjà tenté, mais avec peu de succés, et je n'en gardais pas le meilleur souvenir...
Evidemment, le premier réflexe fut de me tourner vers les solutions OpenSource, notamment la fameuse combinaison FAME (Flashout, ASDT, MTASC, Eclipse), en laissant le peu de travail à faire pour la création du SWF de base à Flash. Je dois avouer que je me suis complètement perdu... Ca ne doit pas être bien compliqué, mais je n'ai rien trouvé d'intuitif dans l'installation et l'utilisation de la fameuse combinaison, pourtant si prometteuse...:( Je ne dis pas que ca ne vaut pas le coup, mais juste que moi je ne suis pas arrivé à m'en servir correctement....:$
Restait Flash Developper Tools (FDT), sur lequel je partais avec un avis positif mais dubitatif quand-même. Une première installation, rentrant quelque peu en conflit avec mon FAME m'a plutôt refroidi. Mais pas découragé pour autant, je choisi de supprimer totalement eclipse et de partir sur une installation "clean"... Eh bien en un mot comme en cent, C'EST LE BONHEUR!!!
Je ne suis pas prêt de lacher cet IDE dorénavant... La gestion des classes est parfaite, l'autocomplétion, l'ouverture d'une classe depuis une autre par un simple raccourci clavier, la visualisation facile des chaines d'héritages, des surcharges de méthodes, l'organisation automatique des imports, etc... Bref, ca change la vie! Associé à la console SOS (des développeurs de FDT), on se retrouve avec tous les outils permettant d'augmenter sa productivité d'une manière incroyable... Je regrette juste que SOS ne soit pas un pugin eclipse, le tout-intégré c'est plus pratique quand-même!
Enfin bref, la conclusion de ces aventures est donc que je vous conseille vivement FDT. Certes, ce n'est pas gratuit (moi-même, je suis encore en Trial), mais les 200 euros demandés sont largement justifiés...:D
vendredi, décembre 9 2005
Par -Alexandre LEGOUT aka LAlex- le vendredi, décembre 9 2005, 17:02 - [ AS2 ]
Le compilateur de Flash 8 semble contenir un bug qui, s'il est mineur, peut provoquer quelques arrachages de cheveux. En fait, lorsque l'on hérite d'une classe en précisant son chemin complet (donc sans import), le compilo va la considérer comme importée, mais ce n'est pas le cas à l'éxecution. La où l'on s'attend donc à obtenir une erreur de compilation, tout se passe bien, et on comprend donc mal où est l'erreur... :\
Petit exemple :class com.lalex.myappli.CustomSocket extends com.lalex.net.ExtendedSocket {
function CustomSocket() {
/**
* ExtendedSocket.CONNECT_FAILED sera 'undefined'
* car on a pas importé com.lalex.net.ExtendedSocket
* Pourtant, le compilo laisse passer
*/
addEventListener(ExtendedSocket.CONNECT_FAILED, this, handleConnectionFail);
}
private function handleConnectionFail(o) {
trace("Connection failed");
}
}
Bon, je vous l'accorde, on pourrait dire "Ben il n'avait qu'à importer la classe", ou "Il n'avait qu'à donner le chemin complet de la classe!"... mais le compilateur n'est-il pas là pour nous signaler ce genre d'oublis? :o
Par -Alexandre LEGOUT aka LAlex- le vendredi, décembre 9 2005, 09:57 - [ Liens ]
Ca y est, c'est fait! Macromedia, face à la grogne des développeurs et hébergeurs a revu sa copie concernant le pricing de Flash Media Server 2.
En attendant que tout le système de licence soit ré-implémenté, Macromedia propose une licence "Interim", qui permet pendant 90 jours de profiter de 2500 connexions simultanées pour une bande passante limitée à 25Mbps. Cette licence sera ensuite renouvelable définitivement. Une trés bonne nouvelle pour les développeurs d'applications "data", qui préfèrent utiliser FMS2 à un serveur de socket XML, pour des applications telles que des jeux multi-utilisateurs ou de la messagerie instantanée.
Ca fait plaisir de voir que Macromedia écoute ses utilisateurs... Pourvu que Adobe en fasse de même... :o
mercredi, novembre 16 2005
Par -Alexandre LEGOUT aka LAlex- le mercredi, novembre 16 2005, 12:27 - [ Divers ]
Flash Media Server 2 est enfin disponible! Plein de choses qu'elles sont bien, comme les connections côté serveur a des XMLSocket, XML et autre LoadVars. Pour moi, il s'agit également d'une découverte des fonctionnalités de base de FCS. J'apprécie beaucoup la simplicité avec laquelle on peut créer des applications multi-utilisateurs, ou des échanges de flux audio/video!
Bon, ils auraient quand-même pu faire l'effort de l'AS2, surtout que le compilo AS1->AS2 existe déjà... ![]()
Seulement voilà, le débat fait rage. Le changement de nom de Flash Communication Server en Flash Media Server influe énormément sur les différentes licences proposées. En effet:
Cela pose un énorme problème, surtout qu'avec la sortie de FMS2, FCS n'est plus du tout vendu, et donc son système de licence n'est plus disponible...
De nombreux développeurs de multi-user vont donc probablement se tourner vers des solutions de type SocketServer, ou pourquoi pas vers le trés prometteur Red 5 qui se pose aujourd'hui comme la seule alternative OpenSource à FCS/FMS avec de nombreuses features supplémentaires!
Un trés mauvais point pour Macromedia, qui devrait perdre du coup un grand nombre de développeurs, et donc de clients (car n'oublions pas que les développeurs sont quand-même les premiers commerciaux de Macromedia)! :\
PS: La solution de Macromedia en terme d'échange de données temps-réel nous viendrait peut-être de Flex, avec les Data Services de Flex Enterprise Services 2 qui peuvent, entre autres, utiliser le protocole RTMP.
mardi, novembre 15 2005
Par -Alexandre LEGOUT aka LAlex- le mardi, novembre 15 2005, 17:03 - [ AS2 ]
Eh oui, ce détail anodin du compilateur qui nous empêchait de typer avec Object est enfin résolu dans Flash 8. Je trouve ca bien, ca permet de spécifier explicitement que n'importe quel objet peut être transmis en paramètre ou affecté à une variable, et cela fait aussi bien la différence aussi entre une méthode qui ne retourne rien (Void) et un objet quelconque (Object)... ![]()
PS: Je suis en plein dans les entrailles de la communication temps réel actuellement: Flash Media Server 2 et connexions XMLSocket... Je devrais avoir de la matière sur ce blog prochainement! ![]()
lundi, octobre 24 2005
Par -Alexandre LEGOUT aka LAlex- le lundi, octobre 24 2005, 21:57 - [ Divers ]
Eh oui, je viens de le dire, je n'ai pas beaucoup de temps pour faire de la veille technologique en ce moment... En fait, il s'agit surtout de finir mes projets actuels, afin de prendre un nouveau départ!!!
En fait, je quite bientôt mon employeur actuel (avec une petite larme à l'oeil, CTC va me manquer quand-même :(), pour rejoindre l'équipe de Centile (avec la banane aux lèvres :D) pour un projet passionnant! Au coeur de ce que l'on peut appeler un "paradis pour développeurs" (y a que ca là-bas) dans ce qui semble être une super ambiance, ca va coder dur, et surtout en ActionScript (ben oui, malgré les nombreuses années depuis lesquelles je code en AS, c'est quand-même la première fois que c'est un travail a plein-temps, non freelance :P). Une nouvelle compétence chez eux, qui utilisaient plutôt des langages plus "institutionnels" (Visual, Java, ...). Bon, il faut avouer que celui qui a fait la première maquette est carrément balaise quand-même! ![]()
Au programme, connexion serveur temps réel et applications "standalone" de type mProjector... Je boût d'impatience! ![]()
Par -Alexandre LEGOUT aka LAlex- le lundi, octobre 24 2005, 20:51 - [ Divers ]
Argh... Que de nouveautés... Je vous passerai l'annonce de la sortie de AS3 avec l'alpha1 de Flex 2 avec quatre train de retards...
Pensez aussi que MySQL5 vient de sortir, tout en entrant dans la cours des grands avec triggers et procédures stockées, de quoi s'assurer de modèles de données robustes...
Bon, j'espère que je trouverai bientôt un peu de temps aprés avoir fini le TAF en cours pour me lancer dans l'AS3 (j'en suis encore au stade de dessiner un carré, vive drawRect() :mrgreen:)...
« billets précédents - page 3 de 15 - billets suivants »