Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 >

dimanche 8 juin 2008

Au calme (et seul) à Montpellier, ce week-end...

Samedi 7 Juin, sur les coups de 17h00, je me suis décidé à prendre la voiture pour rentrer sur Montpellier. Je suis arrivé sur les coups de 20h30. A mon grand étonnement, en descendant de voiture un de mes voisines de l'immeuble m'a interpelé en disant qu'avec les voisins, ils faisaient un repas dans le parc au fond. J'y suis allé, mangé un peu, revu quelques têtes que je n'avais pas vu depuis un moment déjà. J'ai tapé un peu la causette avec un des voisins avant de repartir.

Je suis ensuite passé au bar de Castelnau, prendre un remontant et retourner à l'appart! Après les déboires de cette semaine (carte bleue livré par la poste par mon locataire de Montpellier, voiture parti au garage (etc...), j'ai besoin d'être au calme ce week-end pour me poser! J'en ai profité pour poser ma journée de lundi, histoire aussi de régler certains choses administratives sur Montpellier.

Ma voiture et ma carte ne sont pas réellement des soucis mais c'est juste que ces temps-ci, j'ai besoin d'être au calme absolu au moins 2 jours pour me poser et attendre les évolutions des semaines à venir! Beaucoup de choses risquent de changer, l'avenir me le dira. Depuis que je suis sur Antibes, beaucoup de choses ont changé aussi.

On verra tout ça dans les semaines à venir ;)

dimanche 1 juin 2008

Un blog sur Jana Defi et des nouvelles de Montpellier

0. Mise à jour du 2009-11-17

Petite vidéo de lacharmante Jana Defi


Vidéo "Jana Defi Day With Part 01 / Pinupfiles.com"

1. Le blog sur Jana Defi

Il y en a des sites sur Jana Defi alias Maria Swan pour les connaisseurs., charmante fille d'europe de l'Est qu'on ne présente plus.

Mais il y en a un site qui a particulèrement retenu mon attention car c'est vraiment celui d'un vrai fan. Le site est http://jana-defi.blogspot.com/... ....Les images sont assez belles et on voit que c'est un fan le mec , comme moi avec mes fonds d'écran. Car y'a pas dire rien ne remplace ce bon vieux vi et un bon fond d'écran comme IDE pour développeur......Personnellement je suis fan...et là comme fonds d'écran y'a ce qu'il faut...Je me suis même amusé à faire le slideshow ci-dessous en utilisant Ming/Php






Petite slideshow de Jana Defi réalisé à partir de Ming/Php et la classe FlashSlideshow
Comme je dis toujours "On en fait de belles choses avec l'open source et tout ce qui est open d'ailleurs ! (à méditer)"

2. Simba et mon prochain week-end sur Montpellier

A part ça, mon coloc' de Montpellier devrait s'absenter une semaine. Celà lui fera du bien que de bouger un peu de Montpellier. Nous avons pu nous arranger pour garder Simba chez une de ses copines pendant son absence. Nous avons passé un moment à parler au téléphoe, histoire de tout planifier à nouveau pour l'appart et le reste le temps de son absence. A mon bibou d'amour ,


Mon gros bibou d'amour, au plaisir de te revoir le week-end prochain sur Montpellier...ton piti papa qui t'embrasse fort!.

Le week-end du 7 juin, celà fera un mois que je ne suis pas remonté sur Montpellier mais celà ne saurait tardé. Un mois c'est bien long loin de ceux qu'on aime même si certains sont à quatre pattes...

Ca me fera du bien que de retourner au pays même si ce n'est qu'à pas moins de 300km d'Antibes. Cette semaine au taf les après-midi m'ont paru bien long à ne plus en finir avec le temps de m... qu'on a eu...Vivement le beau temps!

Installation de FreePascal 2.2.0 sous Gutsy Gibbon et test avec PostgreSQL 8.3

Le compilateur FreePascal (FPC) permet de se connecter à une base de données PostgreSQL. Ici nous allons voir un exemple d'utilisation. On procédera successivement à

  1. l'installation de FPC sous Ubuntu Gutsy Gibbon;
  2. la mise en place de la base de données et de la table pour le test.
  3. l'élaboration d'un petit programme en Pascal qui se connectera à la base de données.

1. Installationde FPC

Il faut commencer par installer le paquet bourré de binaires près à l'emploi. Ce qu'il y a de bien c'est qu'il est livré avec ce qu'il faut pour utiliser PostgreSSQL. On le télécharge à ftp://ftp.no.freepascal.org/pub/fpc/dist/i386-linux-2.2.0/fpc-2.2.0.i386-linux.tar

Ensuite
mkdir freepascal
cd freepascal
mv ../fpc-2.2.0.i386-linux.tar .
tar xvf  fpc-2.2.0.i386-linux.tar
sh install.sh
En guise d'installation, on aura l'affichage suivant
david@bremko:~/freepascal$ sh install.sh 
This shell script will attempt to install the Free Pascal Compiler
version 2.2.0 with the items you select

Install prefix (/usr or /usr/local)  [/home/david/fpc-2.2.0] : 
Installing compiler and RTL for i386-linux...
Installing utilities...
Install Textmode IDE (Y/n) ? Y
Install FCL (Y/n) ? Y
Installing fcl-base
Installing fcl-db
Installing fcl-fpcunit
Installing fcl-image
Installing fcl-net
Installing fcl-passrc
Installing fcl-registry
Installing fcl-web
Installing fcl-xml
Install packages (Y/n) ? Y
Installing a52
Installing bfd
Installing cairo
Installing cdrom
Installing dbus
Installing dts
Installing fftw
Installing forms
Installing fpgtk
Installing fpmkunit
Installing fv
Installing gconf
Installing gdbint
Installing gdbm
Installing ggi
Installing gnome
Installing graph
Installing gtk2
Installing gtk
Installing hash
Installing httpd-1
Installing httpd-2
Installing httpd-2
Installing ibase
Installing imlib
Installing ldap
Installing libasync
Installing libc
Installing libcurl
Installing libgd
Installing libpng
Installing mad
Installing modplug
Installing mysql
Installing ncurses
Installing netdb
Installing newt
Installing odbc
Installing oggvorbis
Installing openal
Installing opengl
Installing openssl
Installing oracle
Installing pasjpeg
Installing paszlib
Installing pcap
Installing postgres
Installing pthreads
Installing regexpr
Installing sqlite
Installing svgalib
Installing syslog
Installing tcl
Installing unixutil
Installing unzip
Installing utmp
Installing uuid
Installing x11
Installing zlib
Installing zvt
Done.

Install documentation (Y/n) ? Y
Installing documentation in /home/david/fpc-2.2.0/share/doc/fpc-2.2.0 ...
Done.

Install demos (Y/n) ? Y
Install demos in [/home/david/fpc-2.2.0/share/doc/fpc-2.2.0/examples] : 
Installing demos in /home/david/fpc-2.2.0/share/doc/fpc-2.2.0/examples ...
Done.

Running on linux
No write premission in /etc.
Found libgcc.a in .
/home/david/fpc-2.2.0/lib/fpc/2.2.0/samplecfg: 148: fpc: not found
Writing sample configuration file to /home/david/.fpc.cfg

End of installation.

Refer to the documentation for more information.

2. Mise en place de la base de données

Ici les tests ont lieu avec PostgreSQL 8.3. On se créed'abord une petit base pour nos tests. Connectons-nous donc en tant q'utilisateur postgres
su postgres
export PATH=/usr/local/pgsql/bin:$PATH
export PGDATA=/mnt/pgdata
pg_ctl start
createdb dbblob
Créons la table qui contiendra nos données
create table testblob(numero serial,nom text,source oid)with oids;
Le but ici est d'insérer des images en base

3. Tests

On élabore donc le programme pgimg.pas dont le contenu est
Program testpg;

Uses postgres,strings,sysutils,strutils;

Procedure usage();

begin
   writeln('- permet d''importer une image en base');
   writeln('- pgimg dbname=<database> img=<path_to_image>');
   writeln('Exemple: pgimg dbname=mabasededonnees img=/home/toto/tata.png');
   halt(1);
end;

Procedure exit_nicely(Conn : PPGconn);

begin
  PQfinish(conn);
  halt(1);
end;


Var
  pghost,pgport,pgoptions,pgtty,dbname,img : Pchar;
  nFields,i : longint;
  conn : PPGConn;
  res,sel : PPGresult;
  dummy,stdummy : string;

begin
  pghost := 'localhost';       
  pgport := '5432';       
  pgoptions := NiL;    
  pgtty := NiL; 
  if (paramcount<>2) then
  begin
   usage;
 end;
  if (paramcount=2) then
    begin
    dbname := 'xxx';
    img := 'xxx';
     if AnsiContainsStr(paramstr(1),'dbname=') then
      begin
    	dummy:=paramstr(1)+#0;
    	dbname:=@dummy[8];
      end;
     if AnsiContainsStr(paramstr(2),'img=') then
      begin
    	stdummy:=paramstr(2)+#0;
    	img:=@stdummy[5];
      end;    
    writeln('dbname => ',dbname,' img =>' ,img); 
    end
  else
    ;

  { make a connection to the database }
  conn := PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);


  if (PQstatus(conn) = CONNECTION_BAD) then
    begin
    Writeln (stderr, 'Connection to database ',dbname,' failed.');
    Writeln (stderr, PQerrorMessage(conn));
    exit_nicely(conn);
    end;

  res := PQexec(conn, Pchar('INSERT INTO testblob(nom,source) VALUES ('''+ExtractFileName(img)+''',lo_import('''+img+'''));'));
  if (PQresultStatus(res) <> PGRES_COMMAND_OK) then
    begin
    Writeln (stderr, 'Insertion n''a pas réussie!');
    PQclear(res);
    exit_nicely(conn);
  end;


   sel := PQexec(conn,Pchar('SELECT * FROM testblob WHERE nom='''+ExtractFileName(img)+''''));

  nFields := PQnfields(sel);
  Writeln('|',PQfname(sel, 0),'|',PQfname(sel, 1),'|',PQfname(sel, 2),'|');
 { writeln ('+----+------------------+');}

  { next, print out the instances }
  for i := 0 to PQntuples(sel)-1 do
    begin
    write('|',PQgetvalue(sel, i, 0),' ');
    write('|',PQgetvalue(sel, i, 1),' ');
    write('|',PQgetvalue(sel, i, 2),' ');
    writeln ('|');
    end;
 
  PQclear(sel);
  PQclear(res);

  { close the connection to the database and cleanup }
  PQfinish(conn);
end.
Pour la compilation
./fpc-2.2.0/bin/fpc -Fl/usr/local/pgsql/lib/ pgimg.pas
ou si on préfère
./fpc-2.2.0/bin/fpc -Fl$(pg_config --libdir) pgimg.pas
Pour l'utilisation
PGUSER=postgres ./pgimg dbname=dbblob img=/home/david/jana/jana-experimental02-set1/JANA-EXPERIMENTAL02-SET1.JPG
Si par exemple, on a tout un répertoire contenant des images
for file in $(ls /home/david/jana/jana-experimental02-set1/*.JPG);do PGUSER=postgres ./pgimg dbname=dbblob img=${file};done
On peut vérifier que tout a bien été importé
dbblob=# select * from testblob ;
 numero |               nom               | source 
--------+---------------------------------+--------
      1 | JANA-EXPERIMENTAL02-SET1-01.JPG |  24685
      2 | JANA-EXPERIMENTAL02-SET1-02.JPG |  24687
      3 | JANA-EXPERIMENTAL02-SET1-03.JPG |  24689
      4 | JANA-EXPERIMENTAL02-SET1-04.JPG |  24691
      5 | JANA-EXPERIMENTAL02-SET1-05.JPG |  24693
      6 | JANA-EXPERIMENTAL02-SET1-06.JPG |  24695
      7 | JANA-EXPERIMENTAL02-SET1-07.JPG |  24697
      8 | JANA-EXPERIMENTAL02-SET1-08.JPG |  24699
      9 | JANA-EXPERIMENTAL02-SET1-09.JPG |  24701
     10 | JANA-EXPERIMENTAL02-SET1-10.JPG |  24703
     11 | JANA-EXPERIMENTAL02-SET1-11.JPG |  24705
     12 | JANA-EXPERIMENTAL02-SET1-12.JPG |  24707
     13 | JANA-EXPERIMENTAL02-SET1-13.JPG |  24709
     14 | JANA-EXPERIMENTAL02-SET1-14.JPG |  24711
     15 | JANA-EXPERIMENTAL02-SET1-15.JPG |  24713
     16 | JANA-EXPERIMENTAL02-SET1-16.JPG |  24715
     17 | JANA-EXPERIMENTAL02-SET1.JPG    |  24717
     18 | JANA-EXPERIMENTAL05-SET1-01.JPG |  24719
     19 | JANA-EXPERIMENTAL05-SET1-03.JPG |  24721
     20 | JANA-EXPERIMENTAL05-SET1-11.JPG |  24723
     21 | JANA.JPG                        |  24725

Faire un collage de plusieurs images

ImageMagick fournit un utilitaire montage qui peut s'avérer très puissant pour coller à la suite des images et en faire un fond d'écran Par exemple pour coller les images

montage JANA-EXPERIMENTAL05-SET1-01.JPG JANA-EXPERIMENTAL02-SET1-03.JPG JANA-EXPERIMENTAL02-SET1-04.JPG\
 JANA-EXPERIMENTAL02-SET1-09.JPG JANA-EXPERIMENTAL05-SET1-03.JPG ../jana6/JANA17.JPG JANA-EXPERIMENTAL02-SET1-10.JPG \
JANA-EXPERIMENTAL02-SET1-12.JPG JANA-EXPERIMENTAL02-SET1-13.JPG ../jana6/JANA19.JPG \
-geometry 330x527 -tile 5x2 JANA.JPG
Ici j'ai listé les images de gauche à drote pour qu'elle tienne sur deux rangées de 5 images par ligne. L'image finale est JANA.JPG Pour obtenir les dimensions de l'image d'output, on installe libimage-size-perl
apt-get install libimage-size-perl
puis on fait
for img in JANA.JPG;do echo "dimension de $(basename ${img}):$(imgsize -r ${img})";done
dimension de JANA.JPG:1650 1054
Pour obtenir une imagette (réduire l'image d'un rapport de 4 par exemple), il faut d'abord calculer les nouvelles dimensions
 for dim in $(imgsize -r JANA.JPG);do echo $(expr ${dim} / 4);done
412
263
On utilise ensuite convert pour obtenir l'imagette
convert JANA.JPG -resize 412x263 jana.jpg
Au finale, on a l'image suivante

Imagette résultante du collage d'images
On en fait de belles choses avec Linux......notamment avec Jana Defi...