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/22 10:49] – [Avantage CB] 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 ====== +
-🧾 Résumé de tes cartes et de leurs avantages aux États-Unis +
- +
-^Carte ^Paiements $ ^Retraits $ ^Taux de change ^Notes clés^ +
-|Revolut Metal |✅ Gratuits |✅ Gratuits jusqu’à env. 800 €/mois |🔥 Interbancaire (le top)|Meilleur taux de change| +
-|Hello Prime |✅ Gratuits |✅ Gratuits (chez Bank of America) |🟢 Taux Visa (bon) |Top pour retraits| +
-|N26 Standard |✅ Gratuits |❌ 1,7% de frais |🟢 Taux Mastercard |Pas idéale pour retraits| +
-|Boursorama Welcome |❌ 1,94% de frais |❌ 1,94% de frais |🔴 Frais élevés |À éviter à l’étranger| +
- +
-🛡️ Comparatif assurance voyage – tes cartes +
-^Carte ^Assurance Voyage ^Assistance Médicale ^Responsabilité civile ^Annulation/Retard vol ^Location voiture^ +
-|Revolut Metal |✅ Très bonne (Allianz) |✅ Jusqu’à 10M € |✅ Incluse |✅ Incluse (retard, bagages) |✅ Franchise remboursée| +
-|Hello Prime |✅ Bonne (carte Visa Premier) |✅ Jusqu’à 155 000 € |✅ Incluse |✅ Retard/annulation |✅ Franchise remboursée| +
-|N26 Standard |❌ Aucune |❌ Non couverte |❌ Non couverte |❌ Non couverte |❌ Non couverte| +
-|Boursorama Welcome |❌ Aucune |❌ Non couverte |❌ Non couverte |❌ Non couverte |❌ Non couverte| +
- +
- +
- +
-<code> +
-<?php +
-$filepath = 'script.ps1'; // chemin vers le fichier PowerShell +
- +
-if (!file_exists($filepath)) { +
-    die("Fichier introuvable : $filepath"); +
-} +
- +
-$content = file_get_contents($filepath); +
- +
-// Recherche de la ligne qui contient la variable $Version (en début de ligne, optionnellement avec des espaces) +
-if (preg_match('/\$Version\s*=\s*"([^"]+)"/', $content, $matches)) { +
-    $version = $matches[1]; +
-    echo "Version trouvée : $version\n"; +
-} else { +
-    echo "Aucune version trouvée dans le fichier.\n"; +
-}+
  
 </code> </code>
bloc_note.1753174175.txt.gz · Dernière modification : de admin