J'y suis !

Une journée devant moi, redevenir celui que j'étais (dans mes rêves …), le développeur fou.

C'est parti.

D'abord, il faut une idée de programme (en général, tout part de là, sinon dodo.). Il se trouve que vos élèves vous ramènent quotidiennement la carte mémoire de leur appareil photos avec dessus pêle-mêle :la photo du chien,celle des grand parents ,3 vues floues d'une improbable expérience de chimie liée à un projet pédagogique incertain et enfin une dernière représentation d'une forme inconnue et peut-être non recommandable. A moins qu'il n'y ait 500 Mo de données … (ça ne prend pas de place ,ça tiens sur une clef !). Les bambins désirent en faire un site internet rapidement

Vous disposez de tout ce qu'il vous faut dans le monde du libre pour passer à l'action, si en plus vous participez à linuxedu, alors …

Le projet

Présentation

Nous allons créer un logiciel capable de transformer un simple répertoire contenant des photos en présentation dynamique sous forme de site internet qu'il ne restera plus qu'à publier par ftp par exemple. Si cela existe déjà, ce n'est pas grave, on fera moins bien , cela sera toujours mieux! Pour le nom, on utilisera fais-moi-un-site (fmus), noter la référence au petit prince, comme logo, on pourra prendre un mouton sur une vue simplifiée de la planète.

les ressources utilisées:

  • Lazarus ( dans toutes les distributions) pour la partie programmation
  • Un site ou tout est déjà fait pour la partie html (web 2 point zéro) ici
  • ImageMagick présent dans toute bonne distribution .

Pour ceux qui veulent suivre le tutoriel à la lettre , j'ai mis en ligne les 6 photos issues directement d'un appareil photo ,numérique et de vacances en Corse un jour ou l'éclairage était mauvais , elles sont donc moches et prennent beaucoup de place . Elles sont ici

La réalisation

Les essais

Notre interface graphique (logiciel) se contentera de mettre en œuvre des outils existants, il faudra donc les tester avant de finaliser notre projet. Ouvrir une console , créer le répertoire de travail:

Les images

Ouvrir un terminal, créer un répertoire nommé mon_projet, entrer dans ce répertoire et créer les trois répertoires sources, photos et fmus.
le répertoire fmus contiendra le code source de l'application,
le répertoire source contiendra les codes externes que nous allons utiliser et
le répertoire photos contiendra les photographies
aller dans le répertoire photos, et télécharger les photos pour la démo:
wget ftp://garonne.ac-toulouse.fr/linuxedu/photos.tar.gz
Décomprésser ensuite l'archive avec la commande tar -zxvf photos.tar.gz
Supprimer le fichier archive avec rm photos.tar.gz
Vérifier la taille des fichiers avec du -sh *
Il est temps de tester le traitement des images avec ImageMagick.
Entrer la commande convert -resize 400×300 DSC05288.JPG DSC05288P.JPG
puis d'enchaîner avec du -sh DSC05288*

Le code html

Ici , on va préparer la sortie (les fichiers générés par le logiciel). D'abord, comme pour les images, on va tout faire “à la main”. Après une rapide lecture de la documentation du plugin , on constate qu'il faut différents fichiers , soit à télécharger, soit à écrire nous même.

aller dans le répertoire nommé source.
cd ../sources
puis, on télécharge le code javascript,
pour le plugin : wget http://www.dynamicdrive.com/dynamicindex4/stepcarousel.js
et pour jquery : wget http://code.jquery.com/jquery-1.5.1.min.js

Sinon , directement tous les fichiers utiles avec wget ftp://garonne.ac-toulouse.fr/linuxedu/sources.tar.gz
ensuite tout décompresser avec tar -zxvf sources.tar.gz

Supprimer ensuite le fichier sources.tar.gz (rm sources.tar.gz).

Lancer un navigateur , puis ouvrir avec ce navigateur le fichier index.html situé dans sources, cela peut paraître trés laid, mais en fait, on est content, il n'y a qu'à réduire les images et cela sera correct. Il restera bien sûr à modifier les sources pour que tout soit aux normes, bien citer les codes qui ne nous appartiennent pas , leur origine .

La programmation

Lazarus

Voir la présentation rapide de lazarus

Le fonctionnement du logiciel

1) Dans la pratique, on récupère un média contenant des photos, simulé ici par le répertoire photos: Le logiciel devra être capable d'ouvrir un répertoire à la demande. 2) On doit pouvoir ensuite afficher les photos présentes dans ce répertoire , les sélectionner individuellement ou en bloc, les retailler, copier le résultat dans un espace cible (disons dans un répertoire nommé images), ensuite, un clique sur un bouton pourra générer les codes html accompagnant les images. 3) L'utilisateur n'aura qu'a ensuite publier les rpertoire sur le web.

Structure des répertoires

Il nous faut un répertoire photos qui simulera le media (dans lequel on a déja placé 6 photos d'exemple).
Un répertoire contenant le code de notre application fmus.
Un répertoire contenant les fichiers qui ne sont pas à nous, ou qui servent de modèle.

Construction de l'interface graphique

Une fois lazarus lancé, il faut commencer par tout enregistrer (menu tout enregistrer) le fichier sources ufms.pas et le fichier projet pfms.lpi.

Ensuite, on place les différents composants sur la form (le formulaire), il suffit de choisir l'onglet correspondant dans l'EDI, cliquer une fois sur le composant, et cliquer une fois sur le formulaire pour y placer le composant.

Ecriture du code

A venir …

Que faire du code

La gestion des versions

Voir aussi : Gérer son code et gestion des versions

Voir aussi : Utiliser un editeur WYSIWYG

Comme notre but est de publier notre logiciel sur internet (via launchpad), il nous faut gérer les versions de notre logiciel avec un outil simple et compatible avec le futur dépôt sur launchpad. On utilisera bazar.

installation : sudo aptitude install bzr

se rendre dans le répertoire contenant les sources du projet: cd fmus, puis taper la commande d'initialisation : bzr init

Si on liste les fichiers présents dans ce répertoire , l'affichage met en évidence un problème:

drwxr-xr-x  4 yves yves     4096 2011-03-08 11:14 .
drwxr-xr-x 22 yves yves     4096 2011-03-08 07:35 ..
drwxr-xr-x  2 yves yves     4096 2011-03-08 11:14 backup
drwxr-xr-x  6 yves yves     4096 2011-03-08 07:08 .bzr
-rw-r--r--  1 yves yves       10 2011-03-08 07:19 .bzrignore
-rwxr-xr-x  1 yves yves 20626468 2011-03-08 11:14 pfms
-rw-r--r--  1 yves yves      521 2011-03-08 11:14 pfms.compiled
-rw-r--r--  1 yves yves   137040 2011-03-08 11:14 pfms.ico
-rw-r--r--  1 yves yves     6627 2011-03-08 11:14 pfms.lpi
-rw-r--r--  1 yves yves      368 2011-03-07 11:53 pfms.lpr
-rw-r--r--  1 yves yves   417519 2011-03-08 11:14 pfms.lrs
-rw-r--r--  1 yves yves      791 2011-03-08 11:14 pfms.manifest
-rw-r--r--  1 yves yves   186968 2011-03-08 11:14 pfms.o
-rw-r--r--  1 yves yves      270 2011-03-08 11:14 pfms.rc
-rw-r--r--  1 yves yves     3594 2011-03-08 08:42 ufms.lfm
-rw-r--r--  1 yves yves     3687 2011-03-08 08:42 ufms.lrs
-rw-r--r--  1 yves yves   215300 2011-03-08 11:14 ufms.o
-rw-r--r--  1 yves yves     6600 2011-03-08 08:42 ufms.pas
-rw-r--r--  1 yves yves    16619 2011-03-08 11:14 ufms.ppu

le fichier binaire pèse 20 Mo ! Avant d'apprendre à réduire sa taille, on va l'exclure du système de mise à jour, car ce qui nous intéresse, c'est le code source, on pourra recompiler autant que l'on veut ! Principe du logiciel libre.

les commandes bzr add * , puis bzr ignore pfms permettent de mettre en place la gestion des versions du logiciel.

la commande bzr commit -m “premiere version” va mettre en place la toute première version (voir)

Un exemple sur un autre projet (tp sur la structure électronique niveau seconde)

Reduire la taille des exe

strip nom_exe upx nom_exe (paquet upx-ucl)

lire la discussion sur le sujet, mais il faut revoir ce passage …

Dans le menu "Projet" choisir "options du compilateur"

Dans l'onglet "Code" choisir sans toucher au reste

- Table des liens intelligente
- Code plus petit

Dans l'onglet "Edition des liens" sans toucher au reste

- dans le groupe "Déboguage" décocher tout sauf "éliminer les symboles de l'exécutable"
- dans style de liens cocher "lien intelligent"

Dans l'onglet "messages" sans toucher au reste

- décocher "Insérer un logo FPC"

Compiler avec "Exécuter" "Construire tout"

Utiliser launchpad

Cette partie est fondamentale, elle permet le travail en groupe , l'échange et aussi le travail en solo, mais de façon tout à fait transparente. Les exemples sont pris à partir du groupe linuxedu, mais on peut travailler de façon autonome . D'abord aller sur launchpad , se créer un compte, ensuite votre président / chef de groupe bien aimé doit vous intégrer à son groupe de travail (ou vous pouvez tout faire vous même).

Pour publier les sources, il faut générer les clefs ssh et les intégrer dans son profil

Comme exemple, je prendrai la encore un autre projet, pour gagner du temps ..

Quand on est connecté sur la page, cliquer ur son login en haut à gauche

Ensuite cliquer sur code

Ensuite, sur la gauche, cliquer sur register a branch (pour créer un espace ou stocker le code source)

Compléter le formulaire, dans notre cas, la branche est directement hébergée sur launchpad

On valide le formulaire, on peut ensuite repasser en mode console sur notre pc, la commande bzr login-id yves-dhenain m'attribue le login que j'ai sur launchpad

ensuite bzr push –use-existing lp:~linuxedu/+junk/tp-se-seconde permet de publier les sources

et après quelques minutes :

Créer un paquet deb

Vite fait pour l'instant , il y a visiblement plusieurs façons pour créer ses paquets, je vais tenter avec pbuilder

sudo apt-get install pbuilder debootstrap devscripts

Puis , on tape la commande sudo pbuilder create qui va générer une longue litanie , visiblement, cela correspond à la création d'un chroot

Pour mettre à jour le chroot: sudo pbuilder update. La page officielle ubuntu sur pbuilder

Ouvrir le fichier /etc/apt/sources.list Vérifier que la ligne deb-src http://archive.ubuntu.com/ubuntu <ubuntu_version> main restricted universe multiverse est n'est pas commentée , puis

Créer un paquet deb en dehors de launchpad

 
developper/tout-en-un.txt · Dernière modification: 2014/10/23 08:30 (modification externe)
 
Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : GNU Free Documentation License 1.3
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki