Seiten: 1 2 3 ...5 6 »

Endlich eine schöne Lösung in zumindest in PHP, um einen komplexen String in seine Bestandteile zu zerlegen. Jeder der schon mal eine “google-like” Suchmaschine gebaut hat kennt das Problem, den eingegebene Suchstring in einen SQL-Querystring umzusetzen. Ein einfaches explode(' ',$suchStr) ist da leider nicht leistungsfähig genug, da u.a. komplexe bzw. verschachtelte Suchworte ( Blabla “Bla Bla” FooBar ‘Foo Bar’ ) also mit Anführungszeichen innerhalb des Suchstrings falsch zerlegt werden. Eine Google-Recherche nach einer pragmatischen Lösung brachte die abenteuerlichsten Routinen anderer Entwickler. Damit wollte ich mich noch nicht zufrieden geben aber auch nicht selbst beginnen, über evtl. reguläre Ausdrücke einen eigenen Stringparser zu bauen. Also habe ich erstmal etwas anderes gemacht. Eine erneute Recherche zu einen späteren Zeitpunkt führte mich zu: PHP explode the string, but treat words in quotes as a single word. Dort fand ich putzig, das oben ein interessantes RegExp-Pattern diskutiert wurde, am Schluß jedoch der schnörkellose Satz auftaucht: “This would have been much easier…”. Gemeint war die PHP Funktion, str_getcsv(), welche seit PHP 5.3 in zu den Standard-Funktionen gehört. Ich übernehme der Einfachheit halber einfach mal das “Lorem ipsum” Beispiel vom Stackoverflow, um das Ergebnis von str_getcsv zu demonstrieren.

Für alle die, die noch nicht PHP 5.3 einsetzen können, sollten sich die str_getcsv-Manualseite bei PHP.net durchsehen, dort sind abwärtskompatible Übergangslösungen gelistet.

$string = 'Lorem ipsum "dolor sit amet" consectetur "adipiscing elit" dolor';
var_dump(str_getcsv($string, ' '));

Ergebnis:

array(6) {
     [0]=>   string(5) "Lorem"
     [1]=>   string(5) "ipsum"
     [2]=>   string(14) "dolor sit amet"
     [3]=>   string(11) "consectetur"
     [4]=>   string(15) "adipiscing elit"
     [5]=>   string(5) "dolor"
   }

  • Problem 1:
    Beim Verbinden zum Server taucht lediglich ein kleines schwarzes Fenster auf, mehr passiert nicht.
    _
    Lösung zu 1:
    Der NetAuthAgent-Prozess hat sich am Client aufgehängt und muss gestoppt werden.
    Das geht entweder über den Aktivitätsmonitor oder übers Terminal mit:
    sudo killall NetAuthAgent
    Anschliessend sollte die Verbindung wieder wie gewohnt funktionieren.
    _
    siehe auch: http://forums.macrumors.com/showthread.php?t=441030 bzw. die deutsche Google-Übersetzung, hier sollte man besonders die “Anklagebank” beachten ;-)

 

  • Problem 2:
    ARD ist auf dem Server nicht gestartet, bzw. startet nicht mehr.
    _Lösung zu 2: (Bedingung, min. ein Zugang via ssh)

    # mit ssh auf Server einloggen
    ssh <remote-user>@<remote-server>
    
    # komplett auf "root" switchen
    sudo su -
    
    # ARD Service stoppen
    /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart \
    -deactivate \
    -configure \
    -access \
    -off
    
    # Letzte (wahrscheinlich defekte) Einstellungen wegschieben
    mv /Library/Preferences/com.apple.RemoteManagement.plist /tmp
    mv /Library/Preferences/com.apple.RemoteDesktop.plist /tmp
    
    # ARD Service jungfräulich starten, erstmal dass jeder Zugang hat.
    /System/Library/CoreServices/RemoteManagement/ARDAgent.app/Contents/Resources/kickstart  \
    -activate \
    -configure \
    -access \
    -on \
    -restart \
    -agent \
    -privs \
    -all

Kleines Copy / Paste Snippet um einen gesamten Mac (oder ein Linux) in ein beliebiges Zielverzeichnis auf einen anderen Rechner zu übertragen. Zuerst wird ins Root-Directory ” / ” gewechselt und von dort aus relativ in das entfernte Zielverzeichnis übertragen. Da dieses sehr wahrscheinlich etwas länger dauert, habe ich dem “rsync” ein “nohup” vorgeschaltet. Hierdurch kann man den laufenden Befehl mit der Tastenkombination Ctrl-z anhalten und anschliessend mit ” bg ” als Hintergrundprozess weiterlaufen lassen und das Terminal schliessen. Evtl. Fehler kann man später dann in der Datei ” nohup.out ” nachlesen.

cd /
nohup rsync \
 --relative \
 --archive \
 --executability \
 --compress \
 --exclude=/Volumes/* \
  . <user>@<zielrechner>:/<zielpfad>

Mein Entenkopf (Duckhead) ist mir tatsächlich aus sehr geringer Höhe heruntergefallen. Ein Pin des 220V Steckers war ca. 5mm nach innen verbogen, gerade so viel, dass er nicht mehr in die Steckdose passte. Ganz vorsichtig wollte ich ihn zurückbiegen und **KNACK** ab war er. Beim genauen Hinschauen war auch der Grund schnell klar. Unter den weißen Kunststoff verbirgt sich massives, jedoch sehr prödes Messing. Dieses ist von Haus aus zwar bestimmt gut leitend, aber extrem biegeempfindlich. (wie ich schmerzlich erfahren musste). Vor allem auf Reisen kann es da schon mal eng werden, wenn einem der “Juice” ausgeht. Daher entweder den Duckhead schützen wie den eigenen Augapfel, oder einen Ersatz-Entenkopf einstecken. Glücklicherweise gibts die Dinger als Einzelteil, jetzt weiß ich vor allem auch WARUM!


Terminal Befehl gleich mit Copy/Paste übernehmen.

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister \
-kill \
-r \
-domain local \
-domain system \
-domain user

Als Anwort bekommt man die wenig ausdrucksstarke Meldung:
ThrottleProcessIO: throttling disk i/o
Wieso für das Entfernen ungültiger Einträge der Disk I/O gedrosselt wird, wissen anscheinend nur die “Apfel-Leute”, aber mir soll’s recht sein.


Durch dieses Werk nimmt mein Liebäugeln mit Git weiter Fahrt auf. Für mich war es stets elementar, den geschichtlichen Hintergrund zu kennen, um mich für ein Werkzeug zu begeistern. Und dieses wird auf den ersten Seiten des Buches sehr gut dargestellt.

Siehe auch:


Seiten: 1 2 3 ...5 6 »