Compilateur d'automate (juillet 2008)
:
Voici un projet qui n'est plus tout jeune. Cependant, il a fait
l'objet d'une publication dans le regretté magazine
Pascalissime (numéros 62 et suivants). Le concept
proposé est de modéliser un automate bien réel
ou purement informatique en une suite d'instructions simples le
décrivant sous tous ses aspects et de transformer cette
description en un programme activant l'automate. Le programme
tourne avec Think Pascal 4.0. Texte de
l'article (PDF). Sources du
programme (1.0a - Pascal). Sources d'un exemple
d'automate (Pascal).
Reprise du projet en langage Ada pour le présenter au
concours organisé par Ada
France, il finit troisième au classement en 2001.
Il présente toujours une abstraction des automates à
états finis par un script formé de quelques mots
clés. Ces scripts sont alors convertis en packages Ada avec
un moteur événementiel pour être
utilisés au sein d'un logiciel en faisant l'usage. (Version
2.0a)
Légère modification en début 2002 pour le
support des caractères accentués. Il passe la
compilation avec GNAT sous Mac OS X. (Version 2.1a)
Ajout de la prise en compte des commentaires d'une seule ligne
commençant par --, les unités externes ne sont plus
mises dans l'unité spécification
générée, le mode Debug affiche les
éléments chaînés par un +, le status de
terminaison du programme est rendu à l'OS, quelques
fonctions utilitaires sont réécrites avec la nouvelle
bibliothèque Ada 2005. Coloration de la syntaxe propre
à l'automate avec l'utilitaire SubEthaEdit. (Version 2.2a) Sources, texte
explicatif et exemple (2.2a - Ada 2005 - 284 Ko - texte
accentué en UTF-8). Retour en haut de la page
Portage de gpc sur Mac OS X
(février 2003) :
Mise à jour du projet de
portage du compilateur Pascal gpc sur Mac OS X 10.0 (la public
beta a cessé de fonctionner). Gpc s'appuie sur gcc.
Notamment, gpc 2.0 s'appuie sur cc 2.7.2.1
Dans un premier temps suivons les instructions pour
compiler cc avec le package de fichiers à remplacer : modifs_gcc.
Dans un second temps suivons les instructions
pour compiler gpc avec le package de fichiers à
remplacer : modifs_gpc (307
Ko).
Son exécution reste sujette à un problème
de compilation. Regardons les résultats.
Lancement du portage des dernières versions de gpc -
2.1 en version beta et alpha - sur gcc 2.95.2. Ce portage
s'avère provoquer quelques dysfonctionnements que je
vous soumets. J'ai envoyé le texte au site GNU en Allemagne.
Je n'ai pas de réponse pour le moment. Ceux d'entre vous
ayant des idées sur le sujet sont les bienvenus.
Adaptation du portage à la version finale de Mac OS X
(10.0), c'est à dire sur Darwin 1.3 et les sources de
gcc (926-3) correspondant à gcc 2.95.2. Cette version
parait plus "propre". La difficulté revient à
intégrer les modifications réalisées par
Apple pour son gcc dans gpc. C'est à dire manipuler
quatre fichiers en même temps :
celui de gcc 2.95.2,
celui de gcc 926-3,
celui de gpc 2.1,
celui de gpc résultant.
Cela concerne une dizaine de fichiers de plusieurs dizaines de
milliers de lignes de C avec des dizaines de modifications pas
toujours bien identifiées. Je suis actuellement sur le
dixième...
GPC compile avec GCC sur Mac OS X !
Dans un premier temps suivons les instructions
pour compiler gpc avec le package de fichiers à
remplacer : modifs_gpc (462
Ko).
Pourtant, son exécution reste sujette à un
problème de compilation. Regardons les résultats.
Changeons de stratégie. La
première consistait à suivre celle
indiquée par GPC. La seconde consiste à suivre
celle utilisée pour g77 le compilateur fortran. Cette
dernière démarche nous est donnée par
Keisuke Fujii pour g77 (merci à l'indication de Michael
L. Love sur GNU-Darwin). Dans un premier temps suivons les instructions
pour compiler gpc avec le package de fichiers à
remplacer : modifs_gpc.
Pourtant, son exécution reste sujette à un
problème de compilation. Regardons les résultats.
Le préprocesseur (gpcpp) est lui aussi
modifié pour prendre en compte les macros
spécifiques du Pascal Mac.
Version modifiée : GNU Pascal Compiler PreProcessor
version 20011202, based on gcc-2.95.2 19991024 (release)
Je l'emploi avec la commande suivante :
gpcpp -ki -C -P -DTARGET_API_MAC_CARBON -DMWERKS=200
-DPOWERPC=TRUE -DMAC68K=FALSE -DPROCTYPE=TRUE -lang-pascal
toto.p
Option -ki : n'expense pas les "includes", mais les traite,
Option -C : garde les commentaires,
Option -P : ne génère pas les commandes
"#line",
Option -D... : définit une macro.
Utilisons le portage de gpc-osx
proposé par Adriaan van Os. Le site de gpc-osx fourni un package pour
Mac OS X 10.2, 10.3 et 10.4 (PPC et Intel) avec les
bibliothèques Carbon.
Pour ceux qui sont restés sur Mac OS X 10.1, suivons les
instructions
pour compiler gpc.
La structure d'arbre binaire exposée ci-dessous a
été utilisée pour le compilateur d'automate, décrit plus
haut.
À ce qui a déjà été dit dans
l'article consacré au compilateur d'automate, j'apporte
ici un complément sur l'utilisation de l'arbre binaire
pour mémoriser les identificateurs du langage et son
optimisation. Texte de
l'article. Source du module
(1.0a - Pascal). Exemple
(Pascal).
Utilisation d'Ada pour généraliser le concept
d'arbres binaires sur des types de données quelconques
sans les contraintes imposées par le Pascal. Source du module
initial (2.0b - Ada - texte accentué en UTF-8)
Cette première idée consistait naturellement
à construire un arbre équilibré au fur
à mesure des ajouts d'éléments
supplémentaires. Mais à l'époque le temps
manquait, sans accès à Internet... Je me suis
rabattu sur une solution béton mais brutale : l'arbre
binaire est réalisé par construction
dichotomique. J'ai donc codé une procédure
"Balance" qui reconstruit la dichotomie comme cela est
expliqué précédemment.
Récemment,je suis tombé coup sur coup sur un
livre traitant des arbres binaires "Arbres, Tables et
Algorithmes" (J. Guyot - Ch. Vial - 1989) et sur une
impressionnante liste de sites sur Internet (ceci même en
ne retenant que les sites de langues françaises). Les
auteurs du livres expliquent la construction d'un arbre binaire
AVL pour G.M. Andelson-Velskii, E.M. Landis (1962). Cette
construction reprenait mon désir premier de construire
un arbre équilibré à chaque ajout
d'éléments. Pour cela l'astuce est d'ajouter
à chaque noeud un attribut qui indique si les
sous-arbres de chaque noeud penche plutôt à
gauche, à droite ou sont en équilibres. L'action
résultante consiste à rééquilibrer
l'arbre chaque fois que l'écart de chaque sous arbre est
supérieur d'un niveau. Source du module
AVL (1.0a - Ada - texte accentué en UTF-8)
Généralisation de la bibliothèque Arbres
Binaires avec de nombreuses fonctions utilitaires donnant la
hauteur, le minimum, le successeur, etc.
(Source
- Ada 95 - V1.0a - texte accentué en UTF-8, résultats)
Application en Java avec Project
Builder : Crypt (novembre 2001) La première étape consiste à suivre
l'exemple donné en Java dans l'aide de Project Builder. Pour
ce faire, lancer Project Builder, sélectionner dans le menu
Help, l'élément Developper Center. Une fois l'aide
lancée, sélectionner Cocoa puis Java tutorial (PDF).
Suivre ensuite les explications données pour bâtir sa
première application Java avec mac OS X.
La deuxième étape consiste à obtenir de l'aide
sur l'API Java de Cocoa, sélectionner Aide Mac dans le menu
d'aide du Finder, puis cliquer sur le point d'interrogation en bas
à gauche faisant apparaître le centre d'aide puis
cliquez sur Aide Développeurs. Cliquer sur Cocoa puis sur
Application Kit, le document afficher est : PATH Documentation >
Cocoa > Application Kit API Reference: Java. Vous avez alors
tout loisir de découvrir l'API Java de Cocoa. Avec en
particulier les objets NSView, NSResponder. L'application
JavaBrowser permet de faire la même navigation dans les
classes Java.
La troisième étape consiste à réaliser
une petite application qui va crypter une phrase. Texte des
explications.
La fenêtre d'affichage des informations de l'application "A
propos" ou "About" se personnalise en modifiant le fichier
"InfoPlist.strings" et en éditant "Active Target /
Application Settings" dans le menu "Project" de PB. Source de Crypt
(Java) Retour en haut de la page
Calcul d'un thème astral (V2.0b -
janvier 2002)
Pour mettre en pratique nos connaissances récentes sur Cocoa
et Java, Astro est une petite application qui calcule des
thèmes astraux en version 2.0 alpha.
Le fichier astro.java contient le code de gestion de l'interface
utilisateur. Le fichier astrologie.java contient le code de calcul
du thème astral - ce code provient d'un programme en basic
d'où sa structure... Cet exemple illustre un moyen de
transférer des informations entre deux objets Java ayant des
rôles très différents.
Le transfert des informations en entrée de l'objet du calcul
se réalise classiquement via le constructeur de l'objet.
Dans notre cas, nous avons codifié et regroupé les
informations des divers objets graphiques en une chaîne de
caractères représentant plusieurs champs
séparés par des virgules.
En sortie les informations de l'objet de calcul sont
récupérées par des fonctions
spécifiques. Source et
application Astro (Java). Retour en haut de la page
Bibliothèque mathématique et
algorithmique (avril 2013)
Calculs avec des listes d'éléments
génériques construites à partir du
container Doubly_Linked_Lists francisé pour certaines
opérations, transformé par des fonctions pour
d'autres et augmenté des opérations
création à partir d'un tableau, application d'une
fonction de transformation des éléments, partage
en sous-liste, pour un emploi plus naturel comme avec le
langage Caml.
(Sources
- Ada 2005 - V1.0a)
Calculs avec des matrices de réels : opérations
usuelles +, -, *, puissance, trace, transposée,
déterminant, inverse, ..., utilisation d'unité
générique et du container Vectors.
(Sources
- Ada 2005 - V1.1c, résultats)
Codage en Ada des exemples et exercices du livre
"Programmation Avancée, Algorithmique et structures de
données" de J.C. Boussard et Robert Mahl (Eyrolles 1984)
: PGCD, SWAP, BubbleSort, BigFact,Power Xn,
N_Uplets, Permutations, Jeu du Plus Grand Diviseur Premier, Jeu
Crypto-Arithmétique, Optimisation du remplissage d'un
sac à dos avec quatre procédures de parcours
générique d'un arbre (standard, partiel, min-max,
alpha-beta) utilisant des fonctions spécifiques à
l'arbre en paramètres, calcul de factorielle n et du
nombre de combinaison de n objets pris p à p, coloriage
planaire, palindromes.
(Sources
chapitres 1 à 4 - Ada 2005 - V1.7a, résultats)
... suites contiguës bouclée, tris d'une suite par
interclassement, par segmentation, selon une base "radix sort",
simulation de files d'attentes, tables de hachage, intersection
et union de deux ensembles par adressage dispersé,
dérivation formelle, transformation en expression
postfixée, évaluation d'une expression
postfixée, tri arborescent, graphes à
représentation linéaire fonctionnelle,
associative contiguë et non contiguë, matricielle,
par plexes, par adressage dispersé, chemin de longueur
donnée.
(Sources
chapitre 5 à 8 - Ada 2005 - V1.17a, résultats).
Et toujours, les grands nombres sont à l'honneur avec
la classe Java BigIntCombinatoire
(V1.0a - Java).
Essayez donc le calcul de factorielle 1000 !
Calculs avec des nombres complexes en Java avec la classe Complexe (V1.0a -
Java).
Outils Ada GNAT sur Mac OS X
(décembre 2012)
Le projet GNAT ou "GNU NYU Ada ToolChain" a démarré
à l'université de New York pour développer un
compilateur Ada 95 GNU.
GNAT a été validé sur plusieurs plates-formes
et il est maintenu officiellement par AdaCore. GNAT est gratuit dans sa version GPL, conforme à Ada 2012 (manuel du
langage) et intégré au compilateur libre GCC de la FSF avec sa
documentation. GNAT pour Mac OS X / Darwin est
disponible pour Mac OS X 10.1, 10.2, 10.3, 10.4, 10.5 et 10.6.
Une liste de diffusion existe sur gnat-osx.
Installation de GNAT :
Voici les instructions de mise en place et l'utilisation du
compilateur GNAT avec le Terminal, ProjecBuilder voire XCode
(comprenant des modèles de projets, des scripts, les API
Carbon Ada) suivant les versions :
10.4:
gcc-3.3-1650 de gnat-osx (mai 2005), gcc-4.3 de gnat-fsf
(février 2008) et gcc-4.3 de gnat-gpl avec asis et
les utilitaires associés (mai 2009). Le compilateur
GNAT GPL 2009 (juillet 2009) déjà prêt
à l'emploi est disponible pour Mac OS X PPC sur Source Forge,
10.5
à 10.8 : gcc 4.5 de GNAT GPL 2012 (juin
2012).
Intégration avec XCode et
Carbon : En prime, l'utilisation d'Ada est possible avec XCode, le Terminal,
l'API Carbon Ada (299 Ko) et l'ensemble des compilateurs
GNAT par paramétrage des projets XCode ou du Terminal.
Voir en complément page Alpha
l'intégration dans XCode d'Ada et des dernières
versions de GNAT avec icône Ada personalisée.
Ce mois-ci regardons dans le détail l'interface de
programmation du module de dessin QuickDraw : le
système de coordonnées, les rectangles, les
régions, les polygones, la couleur, le crayon, les
figures, les motifs, le texte, l'espace graphique. N'est plus valable avec Mac OS X supérieur à
10.5.
Outils de développement :
Différents outils et
scripts sont disponibles en complément du
compilateur proprement dit :
P2Ada : le traducteur Pascal en Ada (P2Ada) avec son utilisation sur des
exemples,
C2Ada : le traducteur C en Ada C2Ada avec quelques
modifications en page Alpha et son
utilisation sur des
exemples,
Reformat : outil de formatage des textes sources
Reformat,
LookUp : Deux outils nous aident à la
recherche de la bonne routine : Lookup pour Carbon Ada et XDoc pour Carbon C.
GPS : l'environnement de programmation GNAT
Programming Studio avec son installation en français
et en anglais sur
Mac OS 10.4 PPC.
- GPS GPL 2009 (août 2009) déjà
prêt à l'emploi avec les compilateurs GNAT et
JVM-GNAT est disponible pour Mac OS X PPC sur Source Forge.
- GPS GPL 2012 (juin 2012) déjà prêt
à l'emploi disponible pour Mac OS X Intel par AdaCore.
- Voir son utilisation.
AdaStudio : Visual Ada Developer (VAD) est un
logiciel libre pour construire des interfaces utilisateurs
graphiques en Ada, voir son utilisation.
Tutoriaux : Vous trouverez aussi en page à savoir :
Multi-tâche : un
exemple d'utilisation du multi-tâche.
JVM-GNAT GPL 2011 par AdaCore (juin 2011) est
l'environnement de développement Ada 2005 pour la
plate-forme Java. À partir d'un code source en Ada, il
génère un ByteCode compatible de l'environnement
d'exécution Java 1.5 comme par exemple les applets. Voir
son installation
sur Mac OS X, les exemples
JGNAT 1.3p (344 Ko), l'exemple en ligne Connect Four (GPL
2009) et le status
complet de compilation des exemples.
Les compilateurs JVM-GNAT GPL 2009 (juillet 2009) et 2011 (juin
2011) déjà prêts à l'emploi sont
disponibles pour respectivement Mac OS X PPC et MAC OS X Intel sur Source Forge.
GTKAda GPL 2012 par AdaCore (en version 2.24.2 de juin
2012) est la bibliothèque graphique en Ada basée
sur GTK+ la bibliothèque
graphique Linux conçue à l'origine pour
fonctionner sur les systèmes Unix avec X-Windows...
- Voir son installation
et sa construction pour X11 sur Mac OS X. Elle est inclue dans
la bibliothèque XAdaLib déjà prête
à l'emploi pour Mac OS X 10.6 (fonctionne avec 10.8) sur
Source Forge comprenant également Glade, GnatColl, Florist et AICWL. Addendum : Gate3. (Les addenda seront ajoutés
à une future version de XAdaLib sur Source Forge).
- Voir son utilisation
détaillée.
- Également les développeurs de GTK-OSX ont incorporé
l'interface native du Mac utilisant le moteur graphique Quartz.
Un programme peut donc être conçu pour tourner sur
Mac sans activer le sous-système X11, voir son installation
pour Quartz avec l'outil graphique de développement
d'interfaces utilisateurs Glade
pour MacOSX.
Bibliothèque Turbo Pascal en Ada
(V2.7a - novembre 2012) Les API CarbonAda facilitaient la programmation en Ada sur Mac,
et aussi facilitaient la migration d'une application Pascal en Ada.
GTKAda prend la relève avec avantage d'être
multi-plateforme. Pour ceux qui souhaitent migrer des programmes
depuis le Turbo Pascal, je fournis, en version préliminaire,
une bibliothèque des unités de Turbo Pascal en
langage Ada. Il s'agit d'une toute première version des
unités basées sur GTKAda. Dans la bibliothèque
vous trouverez plusieurs exemples de test. Source de la
bibliothèque (Ada 2005 - V2.7a)
ou la version en cours de développement sur Source Forge.
Historique :
- 2.7a : ajout des polices de caractères vectorielles CHR
- 2.6a : mise en oeuvre de l'unité TP7.Mouse
- 2.5a : mise en oeuvre de l'unité TP7.CRT
- 2.4a : mise en oeuvre de l'unité TP7.DOS
- 2.3a : mise en oeuvre de l'unité TP7.Graph
- 2.2a : intégration de la saisie à la fenêtre
texte
- 2.1a : mise en oeuvre de l'unité TP7.System
- 2.0a : deuxième version basée sur GTKAda
- 1.0a : première version basée sur CarbonAda Retour en haut de la page
Bibliothèque Think Pascal en Ada
(V1.0f - octobre 2005) Les API Carbon facilitent la programmation en Ada, et aussi
facilitent la migration d'une application Pascal en Ada. Pour ceux
qui souhaitent migrer des programmes depuis le Think Pascal, je
fournis, en version préliminaire, une bibliothèque
des unités de Think Pascal en Ada. Il s'agit d'une toute
première version des unités basées sur Carbon.
Les unités ont été recréées
à partir de la documentation mais ne sont pas encore
totalement fonctionnelles. Elles ne contiennent que la partie
spécification pour certaines. Les corps complets des
unités sont disponibles. Source de la
bibliothèque (Ada)
Historique :
- 1.0f : ajout de quelques corrections pour la compatibilité
avec
la dernière version de XCode.
- 1.0e : ajout d'une procédure avertissant lorsqu'une
fonction n'est plus supportée, ajout d'une procédure
émulant "SystemTask".
- 1.0d : ajout du code de la gestion des fenêtres et
complément du code de la gestion des routines de
l'unité 'system'.
- 1.0c : ajout du code de la gestion des chaînes de
caractères et du code de la gestion des routines de
l'unité 'system'.
- 1.0b : modification de la gestion de fichier
(spécification et code) avec une unité de base pour
la sélection des fichiers avec le Finder et deux
unités filles pour la gestion des fichiers textes et des
fichiers typés.
- 1.0a : première version des parties spécifications
des unités émulant Think Pascal. Retour en haut de la page
Automate d'écriture
interactive (octobre 2003) Imaginez une histoire dont vous êtes le héros. Ce
nouveau genre littéraire, assez peu répandu, il est
vrai, se présente sous forme de petites scènes avec
un choix laissé au lecteur qui permet de se diriger vers une
autre scène. L'histoire n'est pas linéaire. D'un
autre côté, l'ordinateur "multimédia" nous
propose des possibilités immenses qui sont malheureusement
souvent sous exploitées car trop linéaires. Le
mariage des deux peut nous apporter une réelle
nouveauté. Définissons le cahier des charges et
donnons un exemple de page avec une syntaxe de description de
script de notre récit
interactif multimédia.
Appel à contribution : Je concentre ce travail
principalement sur l'automate et non sur le texte lui-même,
alors que le texte est le résultat principal de ce projet.
Si un de vous ou une de vos connaissances permet que
j'expérimente l'automate sur un de ses textes (un texte
court, même pour jeunes, fera très bien l'affaire), il
en sera grandement remercié. Retour en haut de la page
Construire une base de donnée pour
bibliothèque (1.7a - août 2005)
S'il y a bien un emploi typique pour un ordinateur, c'est celui de
gérer une base de données. La première d'entre
elles est bien sûr la base des fichiers de l'ordinateur. Nous
allons donc mettre à profit cette faculté pour
construire une base de données d'une bibliothèque
bien réelle, celle des livres que nous possédons.
Nous allons aussi utiliser les composants disponibles pour Mac OS X
mais qui le sont aussi sur d'autres plateformes (Win, Linux...).
Définissons le cahier des charges de notre bibliothèque
(450 Ko), la composition et la création des tables de
données avec MySQL, la programmation avec Java, l'interface
utilisateur, l'import depuis un fichier et depuis Internet, la
recherche d'une oeuvre. Sources de la
bibliothèque (36 Ko - Java - texte accentué en
UTF-8). Historique : - 1.7a : Création de la table des textes "textes".
Ajout des champs biographie et commentaire à la table des
auteurs
Modification écran saisie et info auteur
Ajout des champs résumé et commentaire à la
table des oeuvres
Modification écran saisie et info oeuvre
Correction saisie enumérés - 1.6a :
Création de la table des énumérés
"enums".
Création de l'écran saisie des
énumérés.
Clarification des champs "Nature" et "Genre".
Affichage des ISBN et lignes non créés lors des
imports CSV et Internet.
Ajout du champ genre dans les oeuvres.
Le champ nature est remplacé par genre dans l'import CSV. - 1.5a :
Limitation du nombre de lignes affichées par pages
(navigation avec prem, pred, suiv et der).
Ajout d'une fonction de récupération d'une valeur
d'une liste chaînée sous forme d'un entier.
Affichage des possessions sous forme de nombre dans les listes
d'oeuvres.
Changement "group by" en "distinct".
Correction cvs en csv, voilà où mène la
dyslexie !!! - 1.4a :
Filtrage des informations de debug si le propriétaire n'a
pas l'autorisation.
Correction liste des oeuvres d'un propriétaire (suppression
colonne emplacement).
Ajout de la recherche sur les possessions (acquisition, emprunt,
prêt, lecture).
Affichage de l'auteur "nom, prénom" dans info oeuvre.
Correction de l'import HTML avec conversion des NCR (utilisation de
la classe NCRDecoder), nb pages, séries dans les titres.
Correction recherche série.
Ajout des statistiques dans info Éditeur, Auteur,
Collection, Propriétaire. - 1.3c :
Évolution des possessions avec des champs communs pour
l'acquisition,
l'emprunt, le prêt, la lecture.
Évolution des propriétaires avec un champ
autorisation d'affichage de débug.
Évolution des possessions avec la création d'une
fiche par possession.
Affichage auteur nom et prénom dans les
sélections.
Simplification et correction des requêtes SQL sur les
compteurs.
Évolution des possessions avec la création d'une
fiche par possession.
Ajout de la gestion des prêts. - 1.2a :
Ajout de la fonction supprime Éditeur, Auteur,
Collection.
Ajout de l'écran remplace / supprime Éditeur, Auteur,
Collection
et nettoie Groupe Auteur.
Prise en compte dans une recherche d'une oeuvre
possédée.
Structure BD V5, ajout champ série et modification longueur
titre à 80.
Ajout du champ série dans info et saisie oeuvre, import CSV
et Internet.
Ajout de la fonction de liste chaînée copyTo.
Correction de l'affichage des oeuvres avec des
éléments inconnus. - 1.1b :
Titre des pages HTML plus explicite.
Le lien accueil s'affiche toujours même après une
exception.
Amélioration du fonctionnement de l'importation Internet.
Reformatage du code Java.
Ajout de l'écran recherche_oeuvres avec opérateurs
logiques entre rubriques.
Affichage des listes en colonnes formatées. - 1.0d :
Correction de la prise en compte ISO-8859-1 dans l'import
Internet.
Enregistrement et lecture sur disque des pages HTML en
ISO-8859-1.
Ajout sauvegarde, restauration, vidage de la liste
sauvegardée des ISBN
Ajout des écrans d'identification et d'inscription du
possesseur au lancement de l'application.
Ajout d'une fonction de saisie des possessions et lectures pour une
oeuvre.
Ajout de l'importation d'une oeuvre avec Internet.
Ajout d'un écran de description de l'application.
Ajout des sources Java de gestion de la base de données avec
import d'un fichier.
Ajout des champs nécessaires à l'importation dans la
structure de la base de données.
Modification de la structure des tables : l'index d'un auteur dans
son groupe est directement le numéro de l'oeuvre et non plus
un nom interne. Ajout des sources Java de gestion de l'interface
utilisateur. - 0.0a :
Création des tables. Accès à la base
bibliothèque avec JDBC. Retour en haut de la page
Unité Ada.Text_IO
multi-format (2.0a - novembre 2005)
Par défaut, Ada lit les caractères et les
interprète avec le codage Latin1. L'objet de cet article est
d'ajouter l'interprétation en Ada des codages de
caractères Mac Roman par les routines de l'unité
Text_IO. Le paramètre "FORM" sert à cela pour peu
d'avoir modifié quelques codes sources de l'unité
"Text_IO". Les modifications proposées ajoute les codages
Mac Roman avec la traduction en Latin1 pour les routines
d'entrées et de sorties de l'unité Text_IO. Le
paramètre FORM peut ainsi prendre deux nouveaux attributs.
Le premier pour le codage des caractères : "cem" pour
"Character Encoding Method" peut valoir "1" pour Latin1 ou "m" pour
Mac Roman. Le second pour le codage des fin de lignes : "lem" pour
"Line Ending Mark" peut valoir "u" pour Unix ou "m" pour Mac.
Utilisation : "Open(Fin, In_File, "journal.txt", "cem=m,
lem=m");"
Voir le programme source donné en exemple :
"write_mac_roman.adb".
$ gnatmake -a -gnatf write_mac_roman.adb
$ ./write_mac_roman
De même Wide_Text_IO est modifié pour accepter le
codage des caractères Mac Roman avec "wcem=m" et le codage
des fins de ligne Mac avec "wlem=m".
Utilisation : "Open(Fin, In_File, "journal.txt", "wcem=m,
wlem=m");"
Voir le programme source donné en exemple :
"wide_write_mac_roman.adb".
$ gnatmake -a -gnatf wide_write_mac_roman.adb
$ ./wide_write_mac_roman
Le texte résultant est enregistré dans le fichier
journal-mac-ada.txt.
Merci de me signaler si ces modifications sont dans "l'esprit" de
gnat.
Ne pas hésiter à me faire toutes remarques. Sources
modifiés de Gnat (60 Ko - Ada). Historique : - 2.0a :
. Mise en conformité avec GNAT PPC-Darwin 2005.
(Modification : a-textio.adb, a-textio.ads, a-tigeau.adb,
a-witeio.adb, a-witeio.ads, a-wtenau.adb, a-wtgeau.adb,
s-wchcnv.adb, s-wchcon.ads, s-wchstw.adb.
Ajout : s-schcnv.adb, s-schcnv.ads, s-schcon.ads.)
- 1.1a :
. s-schcon.ads : correction commentaires sans "wide"
. s-schcnv.adb : ajout "constant" sur une variable locale,
correction nom d'une variable
. wide_write_mac_roman.adb : exemple d'utilisation de Wide_Text_IO
avec Mac Roman
. s-wchcon.ads : gestion des caractères Mac Roman
. s-wchcnv.adb : gestion des caractères Mac Roman
. a-witeio.ads : ajout du support des fins de ligne Mac
. a-witeio.adb : ajout du support des fins de ligne Mac
. a-wtgeau.adb : ajout du support des fins de ligne Mac
. a-wtenau.adb : ajout du support des fins de ligne Mac
. read-me.txt : explication d'utilisation des fichiers en
anglais
- 1.0a :
. s-schcon.ads : gestion des caractères Mac Roman
. s-schcnv.ads : gestion des caractères Mac Roman
. s-schcnv.adb : gestion des caractères Mac Roman
. a-textio.ads : ajout de la gestion des options CEM et LEM dans le
paramètre FORM
. a-textio.adb : ajout de la gestion des options CEM et LEM dans le
paramètre FORM
. a-tigeau.adb : ajout du support des fins de ligne Mac
. write_mac_roman.adb : exemple d'utilisation de Text_IO avec Mac
Roman Retour en haut de la page
Les entités HTML (V1.0a -
mars 2005) Les entités HTML facilitent la diffusion de textes en
HTML avec des caractères accentués. Ceux-ci sont
codés soit avec leur position numérique dans le code
ISO 10646 (Numeric Character Reference) soit par un nom symbolique.
Pour moi la dernière option est la plus lisible. Par
exemple, å représente le a nordique avec un rond
au-dessus, bien plus facile à ce rappeller que å.
La classe NCRDecoder que nous propose Patrick Hargitt (merci
à lui pour la diffusion sous la licence GPL) permet de
traduire une chaine de caractère HTML en une chaine Java. Source de
la classe (Java). Retour en haut de la page
Traducteur Java en Ada (V1.4b - avril
2010) J2Ada traduit un code source Java valide en code source Ada.
Dans cette première version, une grande partie de la syntaxe
générale du langage Java est traduite. Ces essais
(version 1.4b) sont vraiment très préliminaires, les
parties spécification et corps de l'unité Ada
générée sont valides avec quelques
modifications manuelles, voir la page Alpha. Retour en haut de la page
Générateur de mots de passe
(octobre 2009) Un mot de passe doit répondre à des
critères strict pour être suffisamment efficace en cas
d'attaque. C'est à dire, contenir des chiffres, des
majuscules, des signes, avoir au moins 8 caractères,
être différents les uns des autres sont autant de
critères communément acceptés pour
définir un mot de passe efficace mais contraignant lorsqu'il
faut sortir un mot de passe de suite pour une inscription en
ligne.
La solution est de s'en remettre à un logiciel libre. Ces
derniers ont l'énorme avantage de publier leur code source
et donc par la même de faire la preuve de leur
innocuité. Malheureusement, ils sont seulement disponibles
en ligne de commande avec le Terminal.
Qu'à cela ne tienne, nous allons construire un générateur de mots de
passe (230 Ko) et profiter de nos acquis avec XCode et
AppleScript pour lui construire une interface Mac. Retour en haut de la page