Posts Tagged ‘CLI’

Sonntag, 6. Juni 2021

PHP-Scripts mit Xdebug profilen

Einleitung: Xdebug: Documentation » Profiling

Hierzu muss man PHP Xdebug auf seinem System installiert haben. Anschliessend lässt man ein PHP-Script folgendermassen laufen:

$ php -d xdebug.profiler_enable=On index.php

Nachdem das Script durchgelaufen ist, findet sich unter /tmp eine Datei im Namensformat cachegrind.out.%ZUFALLSNUMMER%. Bei mir war die Datei satte 140MB gross.

Doch was man nun damit? Zuerst einmal auf den Mac kopiert, dann mit qcachegrind (eigentlich: kcachegrind) analysiert. Dieses installiert man sich mit MacPorts:

# port install qcachegrind

Mittels Spotlight sucht man nach „qcachegrind“ und startet die präsentierte App. Man wählt cachegrind.out.%ZUFALLSNUMMER% und erhält folgendes zu Gesicht:

image-10252

Tags: , , , , , , ,
Labels: Web

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 1. Dezember 2020

Mehrere Unix Timestamps auf der macOS Kommandozeile in Daten umwandeln

Voraussetzung: MacPorts und das Utility gdate (unter Linux: date) (Teil des Pakets coreutils) sind installiert.

$ python -mjson.tool < netatmo.json | grep utc | cut -d ":" -f 2 | awk '{print $1}' | xargs -I '{}' gdate -d "@{}"
Mon Nov 30 22:28:06 CET 2020
Mon Nov 30 22:27:57 CET 2020
Mon Nov 30 22:28:03 CET 2020
Mon Nov 30 22:27:38 CET 2020
Mon Nov 30 22:28:03 CET 2020
Mon Nov 30 22:28:03 CET 2020
Mon Nov 30 22:28:03 CET 2020
Mon Nov 30 17:07:34 CET 2020
Mon Nov 30 17:07:21 CET 2020
Mon Nov 30 17:07:21 CET 2020
Mon Nov 30 20:03:52 CET 2020
Mon Nov 30 20:03:52 CET 2020
Mon Nov 30 20:03:52 CET 2020
Mon Nov 30 20:03:52 CET 2020
Mon Nov 30 20:03:46 CET 2020
Mon Nov 30 22:07:42 CET 2020
Mon Nov 30 22:07:00 CET 2020
Mon Nov 30 22:07:07 CET 2020

Im vorliegenden Fall nahm mich Wunder, wann meine Netatmo-Sensoren das letzte Mal einen Wert an den Server übertragen hatten.

Mindestens zwei Stationen mit einer handvoll Sensoren haben den Wert seit gestern nicht mehr aktualisiert. Ich vermute auf Grund dieses Absturzes.

Hierzu lud ich über die Netatmo API das JSON mit den Daten aller meiner Stationen herunter, gab das JSON schön formatiert aus (ein Key-Value Pair pro Zeile), selektierte die Zeilen mit dem Attribut time_utc, isolierte deren Wert — die Unix Timestamp (ein Integer), entfernte die Leerzeichen vor und nach dem Wert und übergab die Liste der Werte mittels xargs dem Tool gdate zur Umwandlung in ein menschenlesbares Datum.

Tags: , , , , , , , , , , , , , ,
Labels: Apple, IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 5. April 2017

Zeichenkette auf der Linux-Kommandozeile in mehreren Dateien suche und ersetzen

Heute hat Cyon meinen Web-Server gezügelt. Dies machte es nötig, dass ich meine Postfix-Konfiguration auf einem halben dutzend Linux-Servern anpassen musste.

Da ich für jeden Server spezifische Konfigurationsdateien verwende, machte ich mich auf die Suche nach einer einfachen Lösung, wie man die Zeichenkette server41.cyon.ch mit s056.cyon.net ersetzen konnte.

Und zwar auf der Kommandozeile, mit einem Befehl?

Wie üblich half Stackexchange weiter:

$ sed -i -- 's/server41.cyon.ch/s056.cyon.net/g' *

Quelle: How can I replace a string in a file(s)?

Und schwupp-di-wupp waren die Konfigurationsdateien angepasst.

Tags: , , , , , ,
Labels: IT, Linux

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 30. April 2015

Duplikate und Müll aus OS Xs „Open with“ Menu entfernen

Folgender Befehl bewirkt eine gehörige Entschlackung des Menus:

# /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain user
# killall Finder

Quelle: Remove Duplicates from the “Open With” Right-Click Menu in Mac OS X

Tags: , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 29. April 2015

KeePass Portable unter Windows mit einer bestimmten Passwortdatenbank starten

Nichts leichter als das! Man erstelle eine Datei „KeePass.cmd“ und füge folgenden Inhalt ein:

\\Server\Benutzer$\Documents\PortableApps\PortableApps\KeePassPortable\KeePassPortable.exe \\Server\Benutzer$\Documents\passwords.kdb
exit

Mit Doppelklick startet sich KeePass Portable und öffnet den Passwort-Prompt der angegebenen Passwortdatenbank.

Tags: , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 7. Oktober 2012

Syntax eines PHP-Scripts auf der Kommandozeile überprüfen

Nicht immer produziere ich auf dem lokalen Mac Code in einem Verzeichnis, welches über den lokalen Web-Server angesprochen werden kann. Wenn ich den Code auf den Server des Kunden kopiert habe und mir dort eine gähnende Leere entgegenblickt, ist die Vermutung in der Regel ein Syntax-Problem, welches den PHP-Parser zum Abbruch bewegt. So genau weiss man das natürlich nicht, da man als guter Entwickler display_errors auf einem Produktivsystem auf 0/off/false gesetzt hat und Fehlermeldungen nur in das error_log ablegt.

Entweder öffnet man das error_log via FTP, oder aber man lässt die Syntax auf dem Mac selber von der Kommandozeilenversion von PHP überprüfen:

php -l <Pfad zum syntaktisch defekten PHP-Script>

Dies führt entweder zur Absolution mit

No syntax errors detected in <Pfad zum syntaktisch defekten PHP-Script>

oder aber im unglücklicheren Fall zur folgenden oder ähnlichen Fehlermeldung:

Parse error: parse error in <Pfad zum syntaktisch defekten PHP-Script> on line 146
Errors parsing <Pfad zum syntaktisch defekten PHP-Script>

Tags: , , , , ,
Labels: Programmierung

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 9. Januar 2011

Digitaler Mitschnitt eines Telefonanrufs unter Mac OS X

Soeben packte mich der Reiz, einen Telefonanruf (auf eine nicht mehr gültige Rufnummer, notabene) mitzuschneiden und zwecks Belustigung an meine Kollegen zu versenden.

Unter Mac OS X absolut kein Problem. Man benötigt:

Nachdem man sowohl Skype wie auch Audio Hijack installiert hat, startet man zuerst Audio Hijack und eröffnet eine neue Session, die auf die Applikation „Skype“ zeigt. Ein Klick auf den Knopf Hijack startet Skype und macht Audio Hijack bereit für den Mitschnitt.

Nachdem man die Handy-Nummer in das Wählfeld von Skype eingegeben hat (aber noch ohne den Wählen-Knopf zu drücken), muss man die Audio Hijack-Aufnahme mittels Record starten. Anschliessend wechselt man umgehend zurück nach Skype und wählt die Nummer.

Die Audiodaten, die über den Lautsprecher ertönen, werden im Hintergrund digital mitgeschnitten und im Session-Profil angegeben Ordner im AIFF-Format abgelegt.

Nachdem die Aufnahme abgeschlossen wurde, konvertiert man sich die übergrosse AIFF-Datei ins MP3-Format, damit die Mailserver sich nicht verschlucken:

$ ffmpeg -i Skype\ 20110109\ 1702.aiff -f mp3 -ab 192k -ar 44100 41790000000-2011-01-09.mp3

Es erschien bei mir zwar die Fehlermeldung

[libmp3lame @ 0x189ac00]lame: output buffer too small (buffer index: 8777, free bytes: 1015)
Audio encoding failed

doch das MP3 liess sich mit VLC problemlos abspielen.

Tags: , , , , , , , ,
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Samstag, 3. Oktober 2009

c’t offline update unter Mac OS X – es geht (doch nicht)!

Damit man das äusserst nützliche Tool c’t offline update unter Mac OS X zum laufen kriegt, sind folgende Schritte notwendig:

  1. MacPorts herunterladen und installieren
  2. sudo port install wget
  3. sudo port install cabextract
  4. sudo port install xmlstarlet
  5. sudo port install dos2unix

Anschliessend führt man folgenden Befehl aus:

$ cd ctupdate/sh
./DownloadUpdates.sh

… und folgt den Anweisungen auf dem Bildschirm.

Usage: ./DownloadUpdates.sh [system] [language] [parameter]

Also beispielsweise:

./DownloadUpdates.sh wxp deu

Schick!

wget: unrecognized option `--connect-timeout=1'

Nachtrag

Unter Mac OS X 10.6 funktioniert der Download der WindowsUpdates.

Tags: , , ,
Labels: Allgemein

1 Kommentar | neuen Kommentar verfassen

Sonntag, 13. September 2009

Druckaufträge von der Kommandozeile aus verwalten

Gerade würgt sich mein HP Laserjet 1300 – immerhin ein Postscript-Drucker mit einem RAM-Upgrade – durch einen Druckauftrag, den ich aus Adobe Acrobat 9 ausgelöst habe. Da für den Druck einer Seite etwa 10 Minuten vergehen (!), wurde mir die Sache zu blöd und ich suchte nach Möglichkeiten, den Druckauftrag zu löschen.

Da er unter Mac OS X bereits an den Druckerserver raus ist, muss ich Linux und lprng bemühen. Wie es sich herausgestellt hat, ist die Verwaltung von Druckjobs äusserst simpel – wenn man denn weiss, wie:

Druckerwarteschlange anzeigen

# lpq -Plaserdrucker
Printer: Laserdrucker@ALPHA 'HP Laserjet 1300'
 Queue: 2 printable jobs
 Server: pid 26486 active
 Unspooler: pid 26487 active
 Status: waiting for subserver to exit at 00:51:43.257
 Rank   Owner/ID               Pr/Class Job Files                 Size Time
stalled(672sec) mario@beta+327      A   327 657247.pdf        19804211 00:41:08
2      mario@beta+514               A   514 657247.pdf         8249902 00:47:05
done   mario@beta+970               A   970 studium:glossar-fra 326256 16:17:30

19804211 Bytes? 19 MB sind viel, kommen aber offensichtlich hin, denn ich drucke einen 18-seitigen Scan eines Artikels, den ich auf JSTOR gefunden habe.

Druckauftrag löschen

Um einen Druckauftrag in der Warteschlange zu löschen, muss man sich die Zahl unter Job merken und gibt anschliessend auf der Kommandozeile folgendes ein:

lprm -Plaserdrucker 327
Printer Laserdrucker@ALPHA:
  checking perms 'mario@beta+327'
  dequeued 'mario@beta+327'

Quelle: In Unix, how do I print files and list or remove print jobs?

Tags: ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Samstag, 8. August 2009

Auf einen Rutsch alle neuen Dateien ins SVN (svn add)

Selbstverständlich kann man sich streiten, eine Dokuwiki ins SVN zu laden, doch da ich die nächste Woche offline in Frankreich verbringen werde, möchte ich einen einfachen Weg haben, um die an der Côte d’Azur erfassten Änderungen einfach in die Serverinstallation zurückzuspielen.

Doch da ich in der Zwischenzeit noch an einigen Zusammenfassungen weitergeschrieben habe, wurde es nötig, dass ca. 20 neu hinzugekommene Dateien noch ins Repository eingecheckt werden sollten. Wie macht man das möglichst einfach?

Ich habe mich für folgenden Befehl entschieden, den ich im root des versionierten Verzeichnisses ausführte:

svn status | grep "^?" | cut -d ? -f 2 | xargs svn add

Ein

svn add *

ginge natürlich auch, spuckt aber hässliche Fehlermeldungen aus.

Habt ihr einen noch effizienteren Tipp?

Tags: , ,
Labels: Linux

2 Kommentare | neuen Kommentar verfassen