aj2.pl permet de créer et de gérer des notes directement sur la console vers un journal HTML.
Il créé, sauvegarde automatiquement des notes ou des fichiers textes dans un répertoire ~/jrnl_perso/ et place dans le journal
les liens, dates de création et sujet (programmation, gestion, divers) qui vous l'ouvrirons automatiquement sur votre navigateur.
Alain Adelmar
Vous pouvez trouver:
[ -cdgp ][ --h --heure ][ nom_du_fichier ]
#!/usr/bin/perl -w # remd: aj "Ajoute au Journal". Est un script permettant les "postit" il * # edite vos notes, log, etc ... en mode console. Au premier lancement il * # initialise un dossier (HOME~/journal) ou il centralisera vos notes * # ainsi qu'un fichier journal.html, permettant d'y acceder dynamiquement * # En cas d'oubli, il sauvegardera automatiquement votre note dans le rep * # ~/journal/trav_date.log, ajoute une lien dynamique dans la rubrique * # voulu du fichier Journal.html. * # rubriques défini pour le moment: (programmation, gestion de fichier et * # divers) appelé réspéctivement par l'option -p -g -d (par defaut) donc: * # * # usage: aj [-rdgp][nom_du_fichier] * # -r (restreint) affiche un récapitulatif (debut ...fin) => 8lignes * # alors que par defaut il affiche la totalitée du fichier. * # * # Il accepte le nom de fichier en arguments et s'utilise depuis le shell * #------------------------------------------------------------------------* # concu & écrit par alain Adelmar mailto: aadelmar@free.fr * #************************************************************************* # Fonctionne sur Environnement Linux, Windows, Cgwin * # Cette version tourne bien et se suffit (pas besoin de FrDate.pm) * # Certe la prochaine sera mieux écrite car j'ai honte quand je relis ce * # code (trés maladroit) mais ca tourne, alors que demande le peuple... * # realease du 18 Mai 2006 tiré de la version 2.03 du 19 Fév 2005 * #------------------------------------------------------------------------* #$ID$ $vers = "2.05"; use Cwd; $dir = cwd; # Initialisation des différantes variables *************** $x = ("x*" x 34) . "\n"; $path1=""; $somedate = '
'; @debut = @interm = @somd; $prems = $travail = $argv = $deb = 0; $auteur = "Alain Adelmar\naadelmar\@free.fr\n"; $prompt = "Entrer votre choix: (0)nouveau, (1)ouvrir, (2)sauvegarder\n(q)quitter ou (Enter) pour continuez\.\.\.\n"; # initialisé à undef $choix; my $filename = ""; my $filetmp = ""; #------- format de date pour file (normal = aaammjj | complet = aaammjj:%%%) @lsjour = qw( Dimanche Lundi Mardi Mercredi Jeudi Vendredi Samedi ); for $i(0 ..6) { $fj{$i} = $lsjour[$i]; } $min =(localtime(time()))[1]; $h =(localtime(time()))[2]; $an =(localtime(time()))[5]; $sjour =(localtime(time()))[6]; $fjour = $fj{$sjour}; $datos = localtime (time); # au cas ou @lstnow = localtime (time()); $j = $lstnow[3]; $m = $lstnow[4]+1; if ($min <= 9) { $min = "0" . $min; } if ($h <= 9) { $h= "0" . $h; } if ($j <= 9) { $j= "0" . $j; } if ($m <= 9) { $m = "0" . $m; } if ($an > = 100) { $an=~ s/1()/20/; } else { $an= "1" . $an; } #----------- pour centieme de journée exp: 25 = 25% de journée ou 25 quart d'heures (99 = 1440min = 24h) $tmp_h2m = ($h * 60) + $min; # ---- pour $qdh (quantité de jour exprimé de 01~99) ------ $qdh = int ($tmp_h2m/14.5); # pour avoir le centieme de journée sur 2chiffres de 01 à 99 if ($qdh <= 9) { $qdh = "0" . "$qdh"; } # ---------- pour $qdh (quantité de jour exprimé de 01~99) ------- uncomment if ($qdh <= 9) { $qdh = "0" . "$qdh"; } # ---------- pour $qdm (quantité de jour exprimé de 001~999)------ $qdm = int ($tmp_h2m/1.44); # pour avoir le milliéme de journée sur 3chiffres de 1 à 999 if ($qdm <= 9) { $qdm = "00" . "$qdm"; } elsif ($qdm <= 99) { $qdm = "0" . "$qdm"; } #--------------------------------------------------------------------------------- $ma_date_v = "$fjour $j\/" . "$m\/" . "$an" . ":" . "$h" . ":$min"; # Mercredi 30/07/2003 17:30 $ma_date = "$an" . "$m" . "$j" . ":" . "$qdh"; # 20030730:72 $ma_date_h = "$an" . "$m" . "$j" . ":" . "$qdm"; # 20030730:726 $dt = $ma_date_v; #print "ma_date = $ma_date | ma_date_v = $ma_date_v | qdh = $qdh | dt = $dt\n"; $bienvenu = "$x\tx $dt x\n$x\nBienvenu sur l'eéditeur aled\n ecris par Adelmar alainr\nTaper Ctr-D pour sortir\n\n$x\n\n"; &verifj; #-- arg & option possible usage: alEd [-dgp] [--h,--heure] [nom_de_fichier] if (defined $ARGV[0]) { foreach $_ (@ARGV) { ($arg = $_ and &traite_mode($arg)) if /^-\w/; ($ma_date = $ma_date_h) if /^--h/; if ($_ =~ /\w{3,}.*?$/) { $filename = $_; $argv++; &ouvrir($filename); } } } else { print "Usage:\taj [-pgd] [nom_de_fichier]\n"; $argv = 0; } #$bienvenu = "$x\tx $dt x\n$x\nBienvenu sur l'eéditeur aled\n ecrispar Adelmar alainr\nTaper Ctr-D pour sortir\n\n$x\n\n"; &menu; sub menu { #&verifj; print "$prompt"; chomp($choix =); #----------------- while($choix ne "q") { if($choix eq "1") { &watarg; undef $choix; &ouvrir; } elsif($choix eq "2"){ undef $choix; &sauv; } else { &watarg; undef $choix; &nouveau; } } die "$x\nTchao !!! bonne journnee\n$x\n"; } sub nouveau { print "$bienvenu"; @contenu = ; print "si vous ne sauver pas votre travail\nou il le sera (par defaut) en tant que trav_" . "$ma_date\n"; $filetmp = "$dir_journal" . "\/trav_" . "$ma_date" . "\.log"; $file = "\~\/trav_" . "$ma_date" . "\.log"; &lbling; #-----ajout a journal.html--- &ajout_lnk($filetmp); open FTMP, ">$filetmp" or die "Ouverture impossible $!"; print "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n"; print FTMP @contenu; close FTMP or die "fermeture a l'os gros_caca $!"; $travail++; &menu; } sub ouvrir { print "ouverture de $filename\n"; if ($argv == 0) { &lequel; } $argv = 0 ; unless (-e $filename) { &lequel; } # sortir le path du fichier ouvert @rep = split(/\//, $filename); $file = pop @rep; # nom du fichier seul $path1 = join('/', @rep); # rep de travail #------------------------------------ print "alEd va ouvrir $filename pour vous\n"; open FO, "<$filename" or die "Ouverture impossible $!"; @contenu = ; &lbling; close FO or die "fermeture impossible $!"; # printer le fichier a completer suivant l'option if ($argv =~ /^c/) { my $u = my $fin = 0; my $pl; my $numel; foreach $ligne(@contenu) { next if ($ligne eq ""); if ($u <= 3) { print $ligne; $u++; } elsif ($u == 4 & $fin == 0) { $pl = "\." x 15; print "$pl" . "\n"; for ($i = 3; $i == 0; $i--) { $numel = $#contenuf; $dl = $contenuf[$numel - $i]; print "$dl" . "\n"; } } } } else { foreach $ligne(@contenu) { print $ligne; } } print "\n"; print "$bienvenu\n"; @nwcontenu = ; push @contenu, @nwcontenu; # ---on sauvegarde quand même dans journal $filetmp = "$dir_journal\/" . "trav_" . "$ma_date" . "\.log"; open FTMP, ">$filetmp" or die "Ouverture impossible $!"; print "$x\nsup à $file édite automatiquement par alEd le: $dt --\>\n$x\n"; print FTMP @contenu; close FTMP or die "Makash Oualou pour fermer $file \non\nl\'a\ndans\nl\'os\n$x\n $!"; #---------------------------------------et on demande si on veut aussi sauver sur l'original print "voulez vous sauver l\'ensemble du travail sur:\n [Oui] le fichier d\'origine $filename\n[Non] (par defaut) sur un fichier temporaire\n [nom_du_fichier] donner un nom pour sauvegarder ce fichier\n Récapitulation :\[Oui-Non-nom_du_nouveau_fichier]?\n"; chomp($respond = ); if($respond =~ /^o|oui/i) { print "$filename\n"; &ajout_lnk($filename); open FO, ">$filename" or die "Ouverture impossible $!"; print FO @contenu; close FO or die "fermeture impossible $!"; # placer ici le moyen de copier $filename dans jrnl_perso et effacer trav_date ($filtmp) # $newdir = "$dir\/jrnl_perso\/"; } elsif ($respond =~ /^n|non/i) { $filetmp = "$dir_journal\/" . "trav_" . "$ma_date" . "\.log"; print "Votre travail a eéteé sauver dans $filetmp\n"; #-----ajout a journal.html--- &ajout_lnk($filetmp); } else { if ($respond !~ /^"\.\/\w"|\w{4,}/) { s/\.\/()/$1/; $respond = "$dir" . "\/" . "$respond"; } while (-e $respond) { print "attention, un fichier existe déjà sous ce nom de fichier,\nVeuillez changer de nom\n"; chomp ($respond = ); } $filename = $respond; #-----ajout a journal.html--- &ajout_lnk($filetmp); } &menu; } sub sauv { system ('clear'); print "\nentrez un nom pour votre travail\n"; #-----ici tronquer le debut du fichier deux lignes pour ce rappeller #---plutot que @ (voir sysread ou troncate ou (seek et pop) print "\n" . @contenu . "\nPour ce travail\nnom du fichier:\t"; $filename = ; chomp $filename; if (path1 ne "") { print "voulez vous le sauver sur $path1\/$filename\n"; $yes = ; chomp $yes; if($yes =~ /^y|o/i) { $filename = "$path1" . "\/$filename"; } else { $filename = "$dir_journal" . "\/$filename"; } } # controler si un fichier n'a pas le meme nom if (-e $filename) { ($file, $ext)= split(/./, $filename); $filename = "$file" . "_" . "$ma_date" . "\.$ext"; $filetmp = $filename; #-----ajout a journal.html--- &ajout_lnk($filetmp); print "Votre travail sera sauvegarder sous $filename\n"; open(FO, ">$filename") or die "Ouverture impossible $!"; print "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n"; print FO @contenu; close FO || die "fermeture impossible $!"; $travail--; &menu; } else { print "Votre travail sera sauvegarder sous $filename\n"; $filetmp = $filename; #-----ajout a journal.html--- &ajout_lnk($filetmp); open(F, ">$filetmp") or die "Ouverture impossible $!"; print F "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n"; print F @contenu; close F || die "fermeture impossible $!"; $travail--; } &menu; } sub lequel { #--- permettre l'ouverture d'un fichier sans le path pour HOME et ~/journal print "cacaouette\n"; if ($filename !~ /^\//) { if (!( -e "$dir\/$filename")) { $filename = "$dir_journal" . "\/$filename"; } else { $filename = "$dir" . "\/$filename"; } } while (!(-e $filename)) { print "Quel fichier desirez vous ouvrir:\n"; $filename = ; chomp $filename; } } sub eb_sauve_alors { print "Sauvegarder votre travail d'abord\n"; &sauv; } # Ce petit programme est une petite merveille # alain Adelmar, 12 Mai 2003, aadelmar@free.fr sub ajout_lnk($filetmp) { my($filetmp)= @_; @rep = split(/\//, $filetmp); $file = pop @rep; $path1 = join('/', @rep); $ajout_jrnl = "$filetmp<\/A\>\t =\>\t fait le<\/I\> $dt<\/font color=\"#666666\"\>\n
"; $recap_date = "$file<\/A\>\t" . '.....' . "Date : $datos\n
"; # $somedate = " ; close OLD || die "Fermeture de $old impossible $!"; #open NEW, ">$new" or die "Ouverture de $journal impossible $!"; if ($arg eq "p") { $mode = "
"; &coupe; } elsif ($arg eq "g") { $mode = "
"; &coupe; } else { $mode = "
"; &coupe; } # print NEW "@debut\n"; # print NEW "$ajout_jrnl\n"; # print NEW "@interm\n"; # print NEW "$recap_date\n"; # print NEW "@somd\n"; # close NEW || die "Fermeture de $journal impossible $!"; rename($old, $bak) or die "can't rename $old to $bak: $!"; rename($new, $old) or die "can't rename $new to $old: $!"; } #--------------si nouveau au dessus pas marcher oter et uncommente dessous #system ('clear'); # remet une page blanche au shell. sub lbling { $rem = "# remd: $filename"; $ajout = "\n$rem\n#== ajout a $file éffectué par alEd le :$dt ==\>\n"; push @contenu, $ajout; } sub traite_mode($arg) { $arg = $_; $arg =~ s/-//; print "votre choix $arg\n"; } #--------ici création du fichier journal. html sub init_journal { unless (-e $dir_journal) { mkdir $dir_journal || die "Ouverture du repertoire $journal impossible $!"; } $lbl = "\n\nJournal des modifications \n\t\n\t\n\n\n
Journal édité par alEd <\/U\><\/H1\>\n
Ce journal est créer par alEd<\/I\><\/B\> (script Perl<\/I\>). Il vous permettra d\'accéder à tout les documents créént par alEd.\n
Qui ce veux être un éditeur style \"carnet de note<\/I\>\" ou \"pense bête<\/I\>\".
Grace à son jeu d\'options (-p<\/B\> (pour programmation), -g<\/B\> (pour gestion) et -d<\/B\> (pour divers (par defaut<\/I\>))) il classe vos notes par rubriques suivant Programmation<\/a\> | Gestion<\/a\> | Divers<\/a\> que vous trouverez ci-dessous.
usage : alEd [-pgd] [--h, --heure] [nom_de_fichier]
\tMade by Alain Adelmar<\/A\><\/BLOCKQUOTE\><\/U\>\n" . "\tdebuter le [$dt]
\n\tdernier accés le [" . "$dt]\n"; $lbl_p = "\n
\nProgrammation :<\/H3\>\n
\n\n
\n"; $lbl_g = "<\/BLOCKQUOTE\>\n
\nGestion de fichiers :<\/H3\>\n
\n\n
\n"; $lbl_d = "<\/BLOCKQUOTE\>\n
\nDivers :<\/H3\>\n
\n\n
\n"; $lbl_down = "<\/BLOCKQUOTE\>\n
\nrécapitulatif par date :
\n
\n
\n
aal
\n\n<\/HTML\>\n"; open FJ, ">$journal" or die "Ouverture de $journal impossible $!"; print FJ "$lbl\n$lbl_p\n$lbl_g\n$lbl_d\n$lbl_down\n"; close FJ || die "Fermeture de $journal impossible $!"; } sub coupe { $dac = "\tdernier accés le \[(..)\]\n"; foreach $l(@contenu_jrnl) { if ($l =~ /$dac/) { print "$x you win \n"; $ld = "\tdernier acc" . 'és le [' . "$dt\]\n"; # s/"$l"/"$ld"/; #ou $l = $ld; push @debut, $ld } if ($deb == 0) { if ($l =~ /$mode/) { $deb++; } push @debut, $l; } else { if ($prems == 0) { if ($l =~ /$somedate/) { push @interm, $l; $prems++; } else { push @interm, $l; } } else { push @somd, $l; } } } open NEW, ">$new" or die "Ouverture de $journal impossible $!"; print NEW "@debut\n"; print NEW "$ajout_jrnl\n"; print NEW "@interm\n"; print NEW "$recap_date\n"; print NEW "@somd\n"; close NEW || die "Fermeture de $journal impossible $!"; } #-----------vérifier si ~/journal/journal.html existe sinon le créer sub verifj { $dir_journal = "$dir" . "\/jrnl_perso"; $journal = "$dir\/jrnl_perso\/journal.html"; if (!(-e $journal)) { &init_journal; } $old = $journal; $new = "$journal.tmp.$$"; $bak = "$journal.bak"; } sub watarg { print "votre travail ce classera dans:\n[p] pour programmation\n[g] pour gestion de fichier\n[d] pour divers (qui est la mention par defaut)\n"; chomp ($arg =); } # ce merveilleux script vous à été offert par alain Adelmar (celui qui fait du Perl en se curant le nez); # pour plus de détail jetez un oeil au man aj (pour peu que vous l'ayez installez) trouvable sur http://aadelmar.free.fr/man_aj.html END;