RSS

  • YouTube
  • LinkedIn
  • Google

Archiv nach dem Monat : Dezember2015

Benennen von Dateien mithilfe der Liste aus 0 bis Z

Heute ich war einige Skripte programmieren und habe ein wenig Mühe zu ein definiertes Muster verwenden.

Das Muster ist, Dateien zu erstellen, wo die Reihenfolge in beginnt 0 (0 (null)) und kann nicht wiederholt werden, bis Z.

Beispiel:

myfile0.ext, myfile1.ext, myfile2.ext, (...), myfile9.ext, myfileA.ext, myfileB.txt, (...), myfileZ.txt

Gut, Dies ist kein großes Problem, so dass ich diesen Code verwenden.

// Filename
$seq = $last_used_seq = '';
$seqs = array_merge(range('0','9'), range('A', 'Z'));]
$l = 1;
while (!in_array($seq, $seqs)) {
    $seq = chr(ord($last_used_seq) + $l++);
}

Aber

$Seq

nicht gab der erwartete Wert des nicht 0 (0 (null)) bei der ersten Ausführung. Stattdessen, Es war leer.

Debuggen die Variablen, Ich sah, dass die while nie ergibt true. Auf der Kommandozeile zu reproduzieren versucht sah ich, dass

in_array($Seq, $seqs);

immer zurück true. Ich versuchte, verwenden “”, “R” und egal, welchen Wert ich habe, noch zurückgeben true.

So ändern ich, um zu verwenden STRICT Argument für in_array to true and works for ‘;A’; through ‘;Z’;, but not for ‘;0; through ‘;9;.

while (!in_array($seq, $seqs, true)) {
    $seq = chr(ord($last_used_seq) + $l++);
}

Damn…; PHP ist richtig, ;0; ist nicht unbedingt gleich 0. Die Chr Funktionsrückgabe string und

Bereich('0', '9')

erstellt ein array mit integer Werte.

Also, Ich änderte den Ansatz auf alle Werte mit auswerten STRICT, Da ich einen schönen und sauberen Code ohne keine anderen Funktionen möchte verwendet werden zu erstellen.

This is the final code that I’;m mit:

// Anfangswerte $seq = '';
$Seqs = Array_merge(Bereich(Ord('0'),Ord('9')), Bereich(Ord('A'), Ord('Z')));
$Seqs = Array_map("chr", $seqs);
$l = 1;
während (!in_array($Seq, $seqs, wahr)) {
    $Seq = chr(Ord($Infos['Last_seq']) + $l ++);
}

// Dateinamen foreach ($itens_for_files as $key =>; $itens) {
    // ... Eine andere Codes, die Datei $seq füllen = chr(Ord($Seq) + 1);
    während (!in_array($Seq, $seqs, wahr)) {
    $Seq = chr(Ord($Seq) + 1);
    $Filename = 'Myfile' . $Seq . . 'ext';
    // ...
}

Wie Sie sehen können, Ich änderte die $seqs initial values from ‘;0; zu Ihrem ASCII Code und auf Ihren Wert, der gab mir wieder ein array mit allen Werten im string Typ.

Bis bald!

PHP-Vergleich-Fehler

Heute, Ich schrieb ein Skript in PHP beim stieß ich auf unerwartetes Verhalten in der Befehlszeile verwendet werden (zumindest von meiner Seite).
Das Skript sollte drei Argumente erhalten., das letzte von ihnen eine Liste mit einem oder mehreren numerischen Codes.
Versuch, diese letzte Argument zu überprüfen war ein anderes Ergebnis bekommen als gedacht.
Finden Sie das Code-Snippet, das war ich mit:

// Test.php wenn (php_sapi_name() == 'Cli') {
    $di = Isset($argv[1]) ? $argv[1] : Datum('Y-m-d'); // Erste $df = Isset($argv[2]) ? $argv[2] : Datum('Y-m-d'); // Termin $prods = Isset($argv[3]) ? explodieren(',', $argv[3]) : Array(); // Codeliste

    ##### Überprüfen von
    // Erste wenn ($di != Datum('Y-m-d', strtotime($di))) {
        Echo "\n";
        Echo "FEHLER! Ungültige Fixierung!\n";
        Ausfahrt;
    }
    // Finale ausgehen, falls ($DF != Datum('Y-m-d', strtotime($DF))) {
        Echo "\n";
        Echo "ERRO! Ungültiges Datum endgültig!\n";
        Ausfahrt;    
    }

    // Codes, wenn (Graf($Viehtreiber) >; 0) {
        foreach ($prods als $prod) {
            if ($Prod != (int)$Prod) {
                Echo "\n";
                Echo "FEHLER! Der CODE " . $Prod . " ist ungültig!\n" ;
                Ausfahrt;
            }
        }
    }
    Echo "FERTIG!";
}

Lesen Sie weiter >>

Wie zu ansetzen von Datum/Uhrzeit auf Centos 6. X für Ihre Zeitzone in Protokollen

Heute stieß ich auf ein Problem bei der Verwendung der Fail2ban Que me Ajuda Demais ein Manter o Servidor keine Ar Mesmo sob Ataques de Brute-Force-.

Einer der meine Filter wurden mehrere Versuche zur Authentifizierung nicht Sperrung einer meine Dienste obwohl es war in Ordnung. Ich beschloss, erhöhen die Findtime Allgemeine Konfiguration, und es begann zu verbreiten.

So war es Zeit zu verstehen, warum mit einem findtime ab konnte nicht er verbreiten. Ich fing an, die Einstellungen zu überprüfen und ich erkannte, dass, obwohl ich die Zeit für meine Zeitzone zu den offiziellen Zeitplan von Brasilia gewechselt, die Protokolle, die weiterhin den Zeitplan in UTC anzeigen. Der Verdacht, dass es könnte dies und beschloss, den Zeitplan zu ändern, der in den Protokollen gesetzt wird (/Var/Log/messages).

Bingo!

Após a Alteração e Confirmar Que os meldet Estavam Usando o Mesmo Horario Que o Reportado em

Datum 

in Werte wollten die Findtime geändert und alles funktioniert wie erwartet.

Folgen Sie dem Rezept um den Zeitplan zu ändern.

Zeitzoneninformationen werden auf Datei /Etc/localtime und wenn er nicht was Sie wollen-einfach ersetzt ihn für das, was er will und das ist im /Usr/Share/Zoneinfo /. In meinem Fall, wie möchte ich den Zeitplan von Brasília, Früher habe ich /Usr/Share/Zoneinfo/America/Sao_Paulo.

# LN-sf/Usr/Share/Zoneinfo/America/Sao_Paulo/Etc/localtime

Jetzt nur versuchen, den Befehl Datum und prüft, ob die ausgegeben werden sollen, so etwas wie:

# Mi Dez bis heute 9 15:55:58 BRST bin 2015

Auch nach diesen Änderungen, die Protokolle werden weiterhin die Zeit haben die altmodische Art. Diese bearbeiten die Datei/Etc/Sysconfig/Clock ändern und fügen Sie die Zeilen unten, um Ihre Zeitzone zu reflektieren.

ZONE ="America/Sao_Paulo"
UTC = falsche ARC = False

In meinem Fall, Starten den Server für die Änderungen an Surtissem Effekt aber nur Neustarten der Dienst Rsyslog bereits lösen musste.

# Rsyslog Dienstneustart

Bis zum nächsten.

Unter Debian Linux/Ubuntu LOCALE-Fehler beheben

Heute hatte ich die Protokolle auf einen ftpserver betrachten, die unter ausgeführt wird die Pure-ftp und ich erkannte, dass die Flugpläne, die alle in waren UTC .
Wie ich brauchte, um Teil der Protokolle an Dritte zu senden, dass macht davon Gebrauch und sind nicht mit Systemen vertraut, könnte statt Missverständnisse am Ende. Ich beschloss dann, dass die Protokolle aller Anwendungen auf brasilianischen Zeitzone halten.
Gemäß der Dokumentation über die pure-ftp verwendet es Umgebungsvariablen, um festzustellen, welche den Zeitplan in den Protokollen enthalten

Lesen Sie weiter >>