Aj2.pl

Ajout de Journal 2 (au carré) ou Add Journal 2 (too)

alain Adelmar
aadelmar@numericable.fr beuuh c est quoi ca

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:

  • le script plus bas
  • le manuel aj.html le manuel aj.1
  • le script aj2.pl et aj
  • une ancienne versionet son script jago et son manuel jano.1
  • NOM

    aj

    Usage

      [ -cdgp ][ --h --heure ][ nom_du_fichier ]
      

    DESCRIPTION

    aj est un script Perl qui permet d'éditer directement des notes sur la console.
    Il créé également une sauvegarde automatique de ces notes dans un répertoire.
    Il créé aussi un journal en HTML (journal.html) dans ce même répertoire.
    Ce journal regroupera tous les liens menant à vos notes sous trois rubriques.
  • p
    pour programmation
  • g
    pour gestion
  • d
    pour divers

  • (voir plus en détails sur OPTION) ainsi qu'une rubrique historique, ou vos notes seront classées par date de modification. aj peut ouvrir tout fichier de texte, il suffit de saisir son nom en guise d'argument. Pour les fichiers du répértoire courant ainsi que ceux se trouvant déjà dans le répertoire jrnl_perso, il est inutile d'entrer leur PATH. aj sert à faire des notes et à les classer de façon � pouvoir les consulter dynamiquement depuis le journal "HOME/jrnl_perso/journal.html". Pratique pour les têtes en l'air comme moi.


    Le script

      #!/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\nJournal é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.\nQui 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
    \n
    Programmation :<\/H3\>\n\n\n\n"; $lbl_g = "<\/BLOCKQUOTE\>\n
    \n
    Gestion de fichiers :<\/H3\>\n\n\n\n"; $lbl_d = "<\/BLOCKQUOTE\>\n
    \n
    Divers :<\/H3\>\n\n\n\n"; $lbl_down = "<\/BLOCKQUOTE\>\n
    \n
    ré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;

    ca tourne