Rechercher sur arkzoyd.com

30 novembre 2006

Pourquoi RAC change tout ?

J'ai publié, il y a quelques temps, une présentation enregistrée de 45' qui présente la technologie Oracle Real Application Clusters et ses multiples intérêts. Ce tutorial a un succès d'estime et plusieurs personnes m'ont demandé si elle pouvaient le télécharger... Biensûr :
-GarK!

Bascule, Load balancer, VIP, Reverse Proxy et... Enterprise Manager Grid Control

Une des questions qui revient souvent à propos du GridControl, c'est "Comment le sécuriser ou plutôt le fiabiliser ?". Si vous aussi, vous vous posez cette question, voici quelques réflexions et liens qui vous seront utiles :
Voilà, avec un peu d'efforts, vous arriverez sans trop de difficulté à fiabiliser votre Enterprise Manager Grid Control. Ne restera plus, et c'est une autre histoire, qu'à gérer les identités et les accès ! ou même déployer les agents sur toutes les cibles. Alors, retournons au travail !

GarK!

18 novembre 2006

Un peu d'interaction /*+Web 2.0*/

Grâce à pollhost.com, il est possible de créer simplement des questionnaires pour interagir entre nous. Par exemple, répondrez-vous à la question suivante...


Comment trouvez-vous mon blog?
Utile
Inutile
  
Free polls from Pollhost.com



-GarK!

17 novembre 2006

FireFox plugins pour LinkedIn.com /*+Web 2.0*/

La plugin 3.0 pour Firefox 2.0 de LinkedIn.com permet de faire le lien direct entre votre compte Google Mail et vos contacts... Un exemple ci-dessous :

Passez un peu de temps dans le catalogue de plugin FX. Et si vous voulez entrez en contacts... Invitez moi sur LinkedIn en m'envoyant une invitation à "arkzoyd at gmail dot com" !

-GarK!

Apologie de JavaServer Faces (JSF) /*+Quoique*/

Un modèle de développement "MVC" (Model-View-Controller) est un canevas qui permet de séparer les aspects de développement du modèle métier (le "Model"), de la logique de présentation (la "View") et de la logique d'interaction avec l'utilisateur (le "Controller"). Il y a plusieurs intérêts à utiliser un framework MVC ; en particulier, ça permet de séparer les tâches et ainsi de diviser pour régner :
  • Un graphiste peut développer les écrans, un spécialiste du SOA ou des bases de données, développer le model et un développeur web de coder les interactions
  • Vous pouvez simplement remplacer un des aspects de votre développement et :
    • créer rapidement une maquette en ramplaçant vos composants métiers ne sont pas encore disponibles par des "bouchons"
    • changer la présentation et la logique d'interaction en réutilisant la couche métier (pour passer du client/serveur au web, au web 2.0 ou fournir plusieurs type d'interfaces pour la même application)
  • Vous pouvez ré-utiliser le code métier, en offrant une couche d'interaction sous forme de services
  • Les tests de chaque partie de votre application peuvent être séparés.
  • Le modèle MVC structure vos développements et améliore leur lisibilité... Si en outre, vous utilisez le best of breed des technologies pour développer chacun de ces aspects, vous accélèrer vos développements
  • ...
Apache Struts est L'implémentation d'un "Controller" (le C de MVC). Il a vraiment contribué à populariser cette approche. Ceci dit vous pouvez utiliser un modèle de développement MVC avec la plupart des langages et/ou interfaces. Avec J2EE 1.4 et son successeur Java EE 5, cette approche devient universelle. JavaServer Faces, non seulement implémente un "Controller" mais en plus rend son modèle de programmation aussi simple qu'en client/serveur :
  • Avec Struts, il fallait dire : "Si l'utilisateur demande telle page et que grâce aux attributs qu'il envoie (et que je récupère quasi-explicitement) je m'apercois qu'il a cliqué sur tel bouton... Alors". Ce modèle a vraiment changé la façon de développer des applications web et est éprouvé mais...
  • Avec JSF, vous dites simplement : "Si l'utilisateur clique sur tel bouton (ou lien...), alors". Comme vous le faîtes en Swing ou (peut-être) en Visual Basic.
En outre JavaServer Faces :
  • récupère implicitement l'ensemble des composants d'une page et offre une API pour y accèder de manière programmatique,
  • déclenche les évènements liés aux modifications saisies par les utilisateurs,
  • offre un référentiel pour permettre à tous de créer et partager des composants intelligents. De nombreuses implémentations existent d'ailleurs (cf JSFCentral) et permettent de développer des interfaces web riches (cf AJAX, RIA, Web 2.0) sans connaître toutes les technologies des navigateurs web,
  • adresse des presentations différentes pour des terminaux différents,
  • permet i18n et L10n,
  • fait parti du standard Java EE,
  • est capable de tirer parti de nombreuses technologies de présentation (Java Server Pages *JSP*) et de nombreuses technologies de type Model (Enterprise JavaBeans 3.0 *EJB3*)
  • Est facile à utiliser et est intégré dans la plupart des Environnements de développements Java, comme ci-dessous

Parfait... Si tout est si bien et facile pour développer des applications qui suivent le modèle MVC grâce à Java EE et JavaServer Faces, pourquoi en parler ? Pour poser une question : Comment fait-on pour intégrer de manière simple et souple M-V-C ? Et bien justement, c'est le sujet que j'aborderai dans une de mes prochaines discussions.

-GarK!

16 novembre 2006

Editeur WYSIWYG et JavaServer Faces

Dans les applications web, les utilisateurs veulent parfois pouvoir saisir du texte formaté (i.e. avec des caractères gras, des images, des hyperliens, etc...). Voici un truc très simple pour transformer un "textarea" en éditeur HTML dans vos applications. Ceci, si vous développez votre application en JavaServer Faces (JSF) ou avec les composants ADF Faces ou Trinidad.


Il existe un ensemble de packages javascript pour transformer une balise HTML "testarea" en editeur WYSIWYG. Il suffit pour cela de downloader TinyMCE. Allez sur la page de download du package
  1. copiez l'ensemble du répertoire tinymce/jsscripts/tiny_mce dans la racine des fichiers html de votre application
  2. dans la page dans laquelle vous voulez utiliser un textarea sous la forme d'un editeur HTML WYSIWYG, ajoutez la ligne tiny_mce/tiny_mce.js
  3. Ajoutez le composant standard JSF "h:textarea"
  4. Avant ce composant et dans une balise "h:verbatim", ajoutez une balise script qui contient tinymce.init({mode : "textareas"}); ou une variante. Pour plus d'exemples, regardez dans la documentation tinyMCE, cet exemples ou d'autres et leur code source.
Voilà, ça prend 5 minutes et si je comprends bien le principe de la licence LGPL, vous pouvez utiliser ce package dans vos logiciels. Ensuite, vous manipulez un composant JSF "textarea" classique. Seule la présentation change ; le cycle de vie JSF n'est pas du tout modifié !

TinyMCE offre de nombreuses possibilités (plugin) de personalisation... mais c'est déjà une autre histoire. En attendant, vous pouvez télécharger un projet JDeveloper 10.1.0.3.1 qui illustre l'utilisation de TinyMCE dans une page simple.

-GarK!

14 novembre 2006

Ayez confiance en Oracle comme en vous-même /*+SQL Amer #5*/

Le 5e volet de mes exemples qui illustrent le fonctionnement du Cost Based Optimizer Oracle est désormais disponible. J'ai mis du temps mais je pense que vous comprendrez pourquoi à sa lecture.

D'autre part,
  • Si vous voulez accéder aux exemples précédents, n'hésitez pas à vous reporter à la page d'index de la série ici
  • Syndiquez vous à mon blog grâce à ce newsfeed Atom pour recevoir mon prochain article directement.
Voilà, encore un mot pour dire que, pour l'instant , j'ai abandonné l'idée de rédiger en anglais. Si vous vous sentez de me relire et de me corriger dans la langue de Shakespeare, envoyez moi un mail. J'attends vos commentaires,

-GarK!

12 novembre 2006

25 ans d'ordinateurs en video

Un article qui regroupe 25 ans de publicités d'ordinateurs. Ca permet de comprendre à quoi sert YouTube ! Remarquez c'est un peu cher (1,65 milliards de dollars US) pour un article. Enfin, c'est pas mon argent.

Jetez un oeil ici pour le fameux article !

-GarK!

11 novembre 2006

JSF et Test Driven Development /*+Facile*/

Bonjour,

Dans les 1,000 questions pour développer des applications web en Java auxquelles j'ai finalement réussi à répondre, il y a :
  • Comment tester des applications web sans y passer des heures ?
  • Comment développer des tests fonctionnels complets sans LoadRunner ou d'autres outils évolués ?
  • Comment développer des tests de charge qui ne soient pas trop simples et toujours sans LoadRunner ou d'autres outils évolués ?
  • Comment inter-agir avec des sites web de manière programmatique (cf une première tentative ici) ?
  • Comment appliquer le "Test Driven Development" aux développements JavaServer Faces ?
La réponse à toutes ces questions (à quelques bugs de JavaScript prêt pas encore très bien supporté mais qui ne devraient pas trop vous poser de problèmes avec les composants standards JSF ou ADF Faces) est HTMLUnit . HTMLUnit est un projet qui permet de tester des applications web de manière simple. Avant de développer vos applications JavaServer Faces, développez les tests de vos écrans web : en effet, dans une approche "Test Driven Development" (TDD), on développe les tests avant l'application. Pour développer des tests, il suffit de (1) télécharger la librairie Java HTMLUnit depuis la page correspondante et ajouter tous les fichiers .jar dans le CLASSPATH et (2) développer un programme qui simule un utilisateur qui utilise un navigateur web. Voici quelques exemples d'utilisation d'HTMLUnit ci-dessous :
  • WebClient wc = new WebClient(); permet de simuler un navigateur web et de stocker ce simulateur dans la variable "wc"
  • HtmlPage page = (HtmlPage) wc.getPage("http://www.google.com"); permet d'ouvrir la page d'accueil de Google avec le navigateur web
  • String title = page.getTitleText(); met le titre de la page dans la variable "title"
  • HtmlForm form = page.getFormByName("f"); met le formulaire HTML dont le nom est "f" dans la variable "form"
  • HtmlTextInput input = (HtmlTextInput)form.getInputByName("q"); récupère le champ dont le nom est "q" et le met dans la variable "input"
  • input.setValueAttribute("arkzoyd"); ajoute le texte "arkzoyd" dans le champ contenu dans la variable "input"
  • HtmlSubmitInput button = (HtmlSubmitInput) form.getInputByName("btnG"); met le bouton "Submit" du formulaire "form" dans la variable "button"
  • HtmlPage page2 = (HtmlPage)button.click(); simule un clic sur le bouton "button" et récupère la page HTML correspondant dans la variable "page2"
  • ...
Vous pouvez récupérer un exemple complet sous la forme d'un projet JDeveloper ici. N'oubliez pas d'ajouter l'ensemble des librairies HTMLUnit dans les propriétés du projet avant d'exécuter le programme. Si vous avez un proxy HTTP sur votre réseau pour accéder à Google, il faut modifier l'appel du constructeur WebClient().

Par ailleurs, pour développer des tests plus complets ou gérérer de la charge, servez vous de :
  • L'API de journalisation (java.util.Logger) de Java SE
  • Le projet Apache Jakarta JMeter qui permet de générer de la charge avec des scénarios complexes si vous les développez sous forme de programmes Java comme celui qui précède
J'y retourne... Il y a encore 100,000 questions auxquelles il faut que je réponde (et ça c'est seulement pour celles que je me suis déjà posé)

-GarK!

09 novembre 2006

SQL Developer 1.1 Evaluation /*+Wow*/

SQL*Developer 1.1 (aka Raptor) est désormais téléchargeable en version d'évaluation... "Evaluation" signifie que les équipes de développement veulent partager leur enthousiasme; ça ne signifie pas que cet outil va devenir payant ! Pourquoi pas Beta ou Early Adopter comme d'habitude ?

La liste des nouvelles fonctionnalités est très intéressantes et vraiment utile... Pour télécharger l'outils en bypassant le questionnaire, cliquez ici.

Surtout cette annonce est très importante parce qu'elle nous rapproche encore de la version suivante qui devrait permettre de tirer le meilleur parti d'AWR, ADDM et les Tuning et Access Advisors.... Si j'ai bien compris !

GarK!

08 novembre 2006

Règles et licences Oracle

Une des choses qui m'a toujours le plus étonné d'Oracle, c'est à quel point les informations sont disponibles... Si bien que certaines réponses sont aussi bien (ou mal) connues d'Oracle que de ses clients.

Pour savoir ce que vous pouvez faire avec une licence ou quelle(s) licence(s) il faut pour faire ceci ou cela, les informations sont aussi disponibles. Enfin, disponible ne signifie pas toujours simple à trouver et comprendre... Je vous propose quelques clés pour vous aider.

Les sources d'informations sont multiples :
  1. les "Licencing Information Guide" font désormais parti des documentations standard livrées avec les produits... Par exemple, Oracle Database 10.2, Oracle Application Server 10.1.2.0.2 ou Oracle Enterprise Manager 10.2
  2. Oracle Software Investment Guide (e.g. les métriques, les batchs, les multi-cores, les technologies de virtualisation) est disponible à partir de la page qui lui est dédiée sur le site Oracle.com
  3. Oracle Store peut vous aider à évaluer vos coûts sur la base des prix listes et des niveaux de discount standard.
  4. Metalink également quelques informations précieuses sur les licences.
  5. Les équipes commerciales Oracle répondent à vos questions et vous aident à transposer les règles à votre contexte particulier
Certaines questions sont récurrentes et les réponses pas toujours bien connues. Voici quelques exemples :
  • Faut-il payer des licences base de données ou du serveur d'applications pour installer le GridControl sur une machine tierce ? Non, la réponse est dans le Licence Information Guide de la base de données. De même qu'il est possible d'utiliser Oracle Internet Directory (OID) pour stocker les alias TNS ou une base de données pour gérer le catalogue Recovery Manager, ces possibilités sont couvertes par vos licences de bases de données
  • La technologie Real Application Clusters est incluse dans la version Standard Edition jusqu'à concurrence de 4 processeurs et 8 "cores" pour l'ensemble de la configuration qui ne doit pas être évolutive au-delà (cf Oracle Software Investment Guide). Est-il possible de faire du cluster distant (autrement dit stretch-cluster ou geo-cluster) avec une version Standard Edition ? Non, la réponse est sur Metalink
  • Les packs Diagnostic et Tuning pour les bases de données sont-ils des options du GridControl ? En fait, Non. Ces packs sont liés à l'utilisation de la base de données : si vous utilisez certaines vues ou certains packages PL/SQL (comme DBMS_SQLTUNE ou DBMS_ADVISOR) de votre base de données, il faut licencier ces options. Leur métrique doit donc correspondre à la métrique de la base de données sur laquelle vous comptez utiliser ces options. Biensûr, si vous utilisez les pages "Performances" ou "Historique des alertes" du Grid Control, il faut les licences correspondantes de ces packs de la base de données (cf Licence Information Guide de la base de données)
  • Est-il possible d'utiliser le GridControl pour superviser des bases de données Standard Edition ou Standard One ? Oui, la réponse est sur Metalink. Cette question vient probablement du fait qu'il n'est plus aujourd'hui possible de licencier des packs d'administration du GridControl avec une autre version que l'Enterprise Edition. Pourtant il est possible d'utiliser Enterprise Manager GridControl sans avoir payé les packs, même si dans ce cas, certaines fonctions ne peuvent pas être utilisées.
  • Que faut-il comme licence pour utiliser le clusterware d'Oracle ? Il faut avoir au moins une licence Standard Edition pour une des machines qui fait partie du cluster. Il n'y a pas besoin de licencier toutes les machines si par exemple vous vous en servez pour sécuriser des services non Oracle. Le clusterware n'est donc pas lié à la technologie Real Application Clusters (cf Licence Information Guide de la base de données)
  • Que faut-il comme licence pour faire de l'ASM en clusters pour des bases de données qui ne sont pas en RAC ? Apparamment il ne faudrait pas nécessairement de licences Real Application Clusters sauf, biensûr, si vos bases sont aussi en RAC. Si vous arrivez à confirmer ce point, cela serait très intéressant car permettrait de mutualiser du stockage pour plusieurs machines. Je n'ai trouvé aucun document officiel sur ce point mais j'ai une bonne raison de penser que c'est le cas.
  • Que faut-il comme licence pour faire du RAC ou du Data Guard pour les référentiels GridControl, RMAN ou OID (pour gérer les TNS) ? Je n'en sais rien et j'aimerais le savoir... à votre avis ?
Biensûr ces règles méritent que vous les vérifiez et ne font que réflèter les conditions standard que vous pouvez lire dans les documentations publiques. Votre entreprise peut avoir des conditions particulière avec Oracle. Si vous avez d'autres questions (et/ou réponses) à ce propos, n'hésitez pas à les partager ou à les poser à vos contacts.

-GarK!

03 novembre 2006

Real Application Clusters en 45' /*+Recorded*/

Bonjour,

Suite à mes tutorials enregistrés précédent, on peut faire un bilan : vous appréciez la méthode mais les solutions opensource, c'est à dire CamStudio puis Wink, me posent pas mal de problèmes. Je devrais dire, c'est sans doute ça, que j'ai de trop gros doigts pour m'en servir. J'ai donc pris le parti d'investir dans Qarbon ViewletBuilder et de reprendre mes tutorials autours des technologies Java EE et d'Oracle 10g.

Ca donne un premier volet autour de la technologie Real Application Clusters. Il s'agit d'une présentation de 45' environ qui répond aux questions "Qu'est la technologie RAC ? Qu'est-ce qu'elle apporte ? et Comment peut-on s'en servir pour transformer les infrastructures existentes en infrastructures Grid ?". Son titre est :
J'espère que cette initiative vous intéressera. N'hésitez pas à me faire part de vos feedbacks en commentant ce thread ou en m'envoyant un mail à "arkzoyd at gmail point com". Syndiquez-vous à mon blog en ajoutant mon flux atom à votre solution de News Feed.

A bientôt,

-GarK!