IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Gérer le numéro de version d'un programme


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut Gérer le numéro de version d'un programme
    Bonjour,

    Sur mon site personnel, j'affiche ceci:

    (again 17 days until the 4.3-RELEASE of OpenBSD!)

    Le nombre de jours restant est obtenu via le script ci-dessous écrit par Jedai.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/usr/bin/perl
    use strict; use warnings;
    use Time::Local;
     
    my $now = time();
    my (undef,undef,undef,undef,$now_month,$now_year) = localtime();
     
    my $next_release;
    if( $now_month < 4 ) {
      $next_release = timelocal( 0,0,0,1,4,$now_year );
    }
    elsif ( $now_month > 9 ) {
      $next_release = timelocal( 0,0,0,1,4,$now_year+1 );
    }
    else {
      $next_release = timelocal( 0,0,0,1,10,$now_year );
    }
     
    my $days_until_next = int( ($next_release - $now) / (60*60*24) ) + 1;
     
    print "Nombre de jours avant la prochaine sortie d'OpenBSD : ", $days_until_next, "\n";
    Je souhaite également gérer la version c'est-à-dire, tous les 1er mai et 1er novembre, afficher X.X-RELEASE.

    J'ai commencé par me baser sur le nombre de jours restant via la variable $day_until_next avec ce premier test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    my $release_logfile='/home.10.16/oregnier/cgi-bin/log/release.log';
    my $start_release=43;
    my $release_number;
     
    if (! -e $release_logfile)
    {
        open (my $FILE,">> $release_logfile");
        print $FILE $start_release;
        close $FILE;
    }
    else
    {
        open (my $FILE,"$release_logfile");
        $release_number=<$FILE>;
        close $FILE;
    }
     
    if ($days_until_next==0)
    {
        open (my $FILE,"+< $release_logfile");
        $release_number=<$FILE>;
        close $FILE;
     
        $release_number=~ s/\s+$//;
        $release_number++;
     
        open (my $FILE,"> $release_logfile");
        print $FILE $release_number;
        close $FILE;
    }
    Je stocke dans un fichier, la version actuelle et je l'incrémente de 1 lorsque le nombre de jours restant = 0. Sauf que le jour J, à chaque rafraîchissement de la page, j'augmente de 1

    Pouvez-vous me rafraîchir la mémoire car je ne trouve pas de solutions.

    Merci

  2. #2
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    J'ai opté pour une autre solution. Créer un script CGI qui sera exécuté tous les 1er du mois de mai et novembre à minuit via une tâche planifiée mise en place via mon hébergeur.

    Le soucis, je n'arrive pas à comparer les dates:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #!/usr/bin/perl
     
    # Declarations
    use strict;
    use diagnostics;
    use warnings;
    use CGI qw(:standard);
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
    use Time::Local;
     
    # CGI security
    $CGI::POST_MAX=1024*100;
    $CGI::DISABLE_UPLOADS=1;
     
    # Variables
    my $cgi=new CGI;
    my $release_logfile='/chemin/cgi-bin/log/release.log';
    my $release_number;
    my $now=time();
    my (undef,undef,undef,$now_day,$now_month,undef)=localtime();
     
    # Operations
    if (($now_day == 1) && ($now_month == 5 ))
    {
        open (my $FILE,"+< $release_logfile");
        $release_number=<$FILE>;
        close $FILE;
     
        $release_number=~ s/\n//;
        $release_number++;
     
        open (my $FILE,"> $release_logfile");
        print $FILE $release_number;
        close $FILE;
    }
    else
    {
        open (my $FILE,"+< $release_logfile");
        $release_number=<$FILE>;
        close $FILE;
    }
     
    print $cgi->header(-charset=>'utf-8');
    print "$release_number";
    Si nous sommes le 1er du mois de mai ou novembre = opérations.

    Ai-je oublié quelque chose ?

    Merci

  3. #3
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Bon j'ai trouvé la solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    my ($mday,$mon)=(localtime)[3,4];
     
    # Operations
    if (($mday == 1 ) && (($mon == 4 || $mon == 10)))
    {
        open (my $FILE,"+< $release_logfile");
        $release_number=<$FILE>;
        close $FILE;
     
        $release_number=~ s/\n//;
        $release_number++;
     
        open (my $FILE,"> $release_logfile");
        print $FILE $release_number;
        close $FILE;
    }
    else
    {
        open (my $FILE,"+< $release_logfile");
        $release_number=<$FILE>;
        close $FILE;
    }
    Qu'en pensez-vous ? Le code fonctionne mais il existe peut-être une manière plus courte pour réaliser cette opération, non ?

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/07/2005, 16h47
  2. Acceder à la version d'un programme
    Par MrMaze dans le forum MFC
    Réponses: 4
    Dernier message: 27/04/2005, 17h24
  3. Gestion de l'évolution de ma base par numéro de version
    Par jackfirst72 dans le forum Outils
    Réponses: 4
    Dernier message: 16/03/2005, 13h38
  4. Numéro de version renvoyé par Firebird 1.51
    Par jibe74 dans le forum Débuter
    Réponses: 2
    Dernier message: 14/12/2004, 15h23
  5. Gestion du numéro de version d'un projet
    Par Chris B dans le forum EDI
    Réponses: 5
    Dernier message: 22/11/2004, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo