Outils pour utilisateurs

Outils du site


bloc_note

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
bloc_note [2025/07/19 09:54] – [💺 Résumé des meilleurs sièges Air France Premium Eco] adminbloc_note [2026/01/08 13:54] (Version actuelle) – admin
Ligne 1: Ligne 1:
 Bloc Note rapide  Bloc Note rapide 
 +<code>
 +#!/bin/bash
 +# --------------------------------------------------
 +# Cron API – rate‑limit (30 req/min) → 429 Too Many Requests
 +# --------------------------------------------------
  
 +# ---------- Configuration ----------
 +MAX_PER_MIN=30               # nombre max de requêtes par minute
 +RATEFILE="/var/lib/cron_api/ratelimit"
  
-Memo avion : +# ---------- Fonctions ---------- 
 +# Retourne le timestamp (epoch) actuel 
 +now() { date +%s; }
  
 +# Nettoie les anciennes entrées du fichier rate‑limit
 +cleanup_ratefile() {
 +    local now_ts=$(now)
 +    # Si le fichier existe, on garde uniquement les lignes < 60s d'ancienneté
 +    if [[ -f "$RATEFILE" ]]; then
 +        # On lit chaque ligne : epoch|count
 +        while IFS='|' read -r ts cnt; do
 +            # Si l'entrée a plus de 60s, on la ignore (fenêtre expirée)
 +            (( now_ts - ts > 60 )) && continue
 +            echo "$ts|$cnt"
 +        done < "$RATEFILE" > "${RATEFILE}.tmp"
 +        mv "${RATEFILE}.tmp" "$RATEFILE"
 +    fi
 +}
  
- ====== ✈️ Air France vols entre Paris-CDG et New York-JFK (AF6, AF8, etc.) : ====== +# Retourne le nombre d’appels valides dans la fenêtre courante 
-^Numéro de vol ^Avion ^Destination ^Cabine Premium rénovée ?^ +get_current_count() { 
-|AF6 / AF7 |Boeing 777-300ER (rénové) |CDG ⇄ JFK |✅ Oui| +    local cnt=0 
-|AF8 / AF9 |Airbus A350-900 |CDG ⇄ JFK |✅ Oui (mais un peu moins spacieux que le 777)| +    if [[ -f "$RATEFILE" ]]; then 
-|AF16 / AF17 |Airbus A350-900 |CDG ⇄ JFK |✅ Oui| +        while IFS='|' read -r ts cnt; do 
-|AF62 / AF63 |Boeing 777-200ER |CDG ⇄ JFK |❌ Non (ancienne cabine Premium Economy)|+            (( now_ts - ts <= 60 )) && ((cnt+=cnt)) 
 +        done < "$RATEFILE" 
 +    fi 
 +    echo "$cnt" 
 +}
  
- ====== ✅ Résumé retour  ======  +# Incrémente le compteur et réécrit le fichier (appelé après validation) 
-^Vol ^Avion ^Pitch ^Confort ^Note ^ +increment_and_store() { 
-|AF007 (AF7) |777-300ER rénové |96 cm |Excellent |⭐⭐⭐⭐⭐| +    local new_ts=$(now) 
-|AF015 (AF15) |A350-900 |96 cm |Très bon |⭐⭐⭐⭐| +    # Si le fichier est vide ou la fenêtre a expiré, on recommence à 1 
-|AF023 (AF23) |787-9 |~94 cm |Moyen |⭐⭐⭐|+    if [[ ! -s "$RATEFILE" ]] || (( $(now) - $(cut -d'|' -f1 "$RATEFILE") > 60 )); then 
 +        echo "${new_ts}|1" > "$RATEFILE" 
 +    else 
 +        # On incrémente le compteur de la première entrée (ou on en crée une nouvelle) 
 +        local first_ts=$(cut -d'|' -f1 "$RATEFILE") 
 +        if (( $(now) - first_ts > 60 )); then 
 +            # Nouvelle fenêtre : on repart à 1 
 +            echo "${new_ts}|1" > "$RATEFILE" 
 +        else 
 +            # On incrémente le compteur existant 
 +            local new_cnt=$(( $(cut -d'|' -f2 "$RATEFILE") + 1 )) 
 +            echo "${first_ts}|${new_cnt}" > "$RATEFILE" 
 +        fi 
 +    fi 
 +}
  
 +# ---------- Middleware de rate‑limit ----------
 +cleanup_ratefile                 # nettoie les entrées expirées
 +current_count=$(get_current_count)
  
 +if (( current_count >= MAX_PER_MIN )); then
 +    # Trop de requêtes -> renvoyer 429 + JSON d’erreur
 +    printf "Status: 429 Too Many Requests\r\n"
 +    printf "Content-Type: application/json\r\n\r\n"
 +    cat <<EOF
 +{
 +  "error": "Rate limit exceeded. Try again later."
 +}
 +EOF
 +    exit 0   # arrêt du script CGI (apache ne lit rien d’autre)
 +fi
  
 +# Si on arrive ici, on peut continuer le traitement habituel
 +increment_and_store   # incrémente le compteur
  
- ====== 💺 Résumé des meilleurs sièges Air France Premium Eco ======  +# -------------------------------------------------- 
-^ Avion ^Siège idéal         ^Pourquoi ^ +# Votre logique métier habituelle (exemple) 
-|777-300ER | 10A / 10L / 10C / 10J | Plus d'espace, pas de siège devant| +# --------------------------------------------------
-|A350         | 10A / 10L / 10C / 10J | Première rangée = jambes étendues |+
  
-✅ Meilleures places Premium Economy : +# Exemple : lire le fichier de logs de cron et renvoyer du JSON 
-  * 10A / 10L : fenêtre + rangée avant +# (remplacez par votre logique réelle)
-  * 10C / 10J : allée, devant, plus d’espace +
-  * 10B / 10K : au milieu de la rangée avant, bon compromis+
  
-      * Ces sièges sont à l’avant de la cabine Premium, donc : +# 1) Récupérer la dernière ligne du log de cron (ou syslog) 
-      * Aucun siège devant → plus d’espace pour les jambes +#    Ici on suppose que le fichier de log est /var/log/cron.log 
-      * Service plus rapide +CRON_LOG="/var/log/cron.log" 
-      * Débarquement plus rapide +if [[ -r "$CRON_LOG" ]]; then 
-      * Cabine plus calme +    # Extraire la dernière ligne qui contient notre job (exemple : "myjob") 
-      *  +    LAST_RUN=$(grep -m1 "myjob" "$CRON_LOG" | tail -n1) 
-  * [[https://seatguru.com/ | site pour info sur les espace cabine ]] +    # Si aucune ligne trouvée → état "not run" 
-  * [[https://www.skyscanner.fr/ |Recherche de billets ]] +    if [[ -z "$LAST_RUN" ]]; then 
-  * [[https://www.bons-plans-voyage-new-york.com/ |Astuces NY]] +        STATUS="{\"state\":\"not_run\",\"last\":\"never\"}" 
-  * [[https://www.cityexperiences.com/new-york/city-cruises/statue/new-york-crown-reserve/?date=09/08/2025&openSdk=1]]+    else 
 +        # Exemple d'extraction : date/heure + code de sortie 
 +        # Supposons que le format soit: "Jun 12 08:34:56 server CRON[12345]: (myuser) CMD" 
 +        # Vous pouvez adapter l'extraction selon votre format de log 
 +        LAST_TIME=$(echo "$LAST_RUN" | awk '{print $1,$2,$3}') 
 +        EXIT_CODE=$(( RANDOM % 4 ))   # placeholder 
 +        STATUS="{\"state\":\"last_run\",\"when\":\"$LAST_TIME\",\"exit_code\":$EXIT_CODE}" 
 +    fi 
 +else 
 +    STATUS='{"error":"log not found"}' 
 +fi
  
 +# ---------- Envoi de la réponse JSON ----------
 +printf "Status: 200 OK\r\n"
 +printf "Content-Type: application/json\r\n\r\n"
 +printf "%s\r\n" "$STATUS"
  
- +exit 0
- +
-====== Avantage CB ====== +
-  - Revolut :  +
-            - change illimité en semaine +
-            - assurance franchise location +
-            - assurance Responsabilité civile +
-            - assurance medical 10000000€ pour la famille +
-            - assurance sport d'hiver +
-            - assurance bagage +
-  - HelloBank +
-            - paiement partout sans frais   +
- +
- +
-<code>+
  
 </code> </code>
bloc_note.1752911669.txt.gz · Dernière modification : de admin