Bananas Development Blog: share your thoughts

Copy & Paste kann gefährlich werden

Copy & Paste vereinfach das Leben.
Man sollte aber aufpassen was man woher kopiert. Folgend ein Beispiel das zeigt was passieren kann wenn man einfach was kopiert und ohne Überprüfung ausführt:

website-terminal-copy-paste
You surely know this: You're looking at some website with some useful shell commands. However, those commands are long as hell and you know you're probably not gonna need them for a few years or so (so there's no need to memorize them).


Also aufpassen. Am Besten solche Sache in einen reinen Texteditor rein kopieren. Somit sollte dann sichtbar werden was man alles kopiert hat.


Wem es nicht gleich auffällt der soll sich den Quelltext der Seite anschauen oder einfach das Kopierte in einen Texteditor einfügen.

Cheat Sheets

Es gibt ja schon viele davon (einfach mal hier im Blog suchen) aber es gibt leider nur wenige die sich auf eine DIN A4 Seite drucken lassen.

Nun hat Dave auf cheatography.com ein Portal erstellt, dass viele solcher Cheat Sheets zur Verfügung stellt. Alle passed auf DIN A4 Seiten.
Cheatography is a cheat sheet generator and repository where you can build and share cheat sheets and quick reference material for your hobbies, home, holidays or work.


Einfach anmelden und mitmachen


Linux Befehl Fundgrube

Es gibt unzählige Programme und Helferlein für die Kommandozeile unter GNU/Linux. Man kann nicht alle kennen.

Auf reddit hat nun einer die Frage gestellt, welcher Befehl in die Kategorie " hätte ich das schon früher gewusst " rein passt. Dabei ist eine ordentliche Fundgrube zusammengekommen. Manche Befehle werden auch ausführlich erklärt.

Give me that one command you wish you knew years ago.

Lesenswert !

Macports ssh/scp vs. OSX ssh/scp

Sollte jemand mal das Problem haben, dass mit der Verwendung von Macports und ssh/scp, die Dialogbox zur Eingabe des Passwortes nicht mehr erscheint, dann habe ich hier die Lösung ( Nach langer Suche und Experimenten ) :

su
cd /opt/local/bin
mv ssh _ssh
mv scp _scp


Das Problem ist folgndendes. Das ssh von OSX verwendet die Dialogbox um automatisch ssh-agent anzusteuern. Nun legt aber Macports den /opt/local/bin Pfad an erste Stelle und somit wird das OSX ssh nicht mehr angesprochen. Das Macports ssh kann das aber mit der Dialogbox nicht. Daher muss das Macports ssh umbenannt werden.

( Ja ich kann su verwenden, denn ich habe aus dem pseudo root nen richtigen root gemacht. Denn sudo nervt. )

via: Leopard, SSH-agent, and a macports gotcha


OSX Tools: dtrace

DTrace is a performance analysis and troubleshooting tool that is included by default with various operating systems, including Solaris, Mac OS X and FreeBSD. A Linux port is in development.


Damit kann man eine Menge über das System erfahren und was denn gerade so alles aktiv ist.

Ein man -k dtrace gibt eine Liste aus, was es alles an Befehlen gibt:
bitesize.d(1m)           - analyse disk I/O size by process. Uses DTrace
cpuwalk.d(1m)            - Measure which CPUs a process runs on. Uses DTrace
creatbyproc.d(1m)        - snoop creat()s by process name. Uses DTrace
dappprof(1m)             - profile user and lib function usage. Uses DTrace
dapptrace(1m)            - trace user and library function usage. Uses DTrace
diskhits(1m)             - disk access by file offset. Uses DTrace
dispqlen.d(1m)           - dispatcher queue length by CPU. Uses DTrace
dtrace(1)                - generic front-end to the DTrace facility
dtruss(1m)               - process syscall details. Uses DTrace
errinfo(1m)              - print errno for syscall fails. Uses DTrace
execsnoop(1m)            - snoop new process execution. Uses DTrace
fddist(1m)               - file descriptor usage distributions. Uses DTrace
filebyproc.d(1m)         - snoop opens by process name. Uses DTrace
hotspot.d(1m)            - print disk event by location. Uses DTrace
httpdstat.d(1m)          - realtime httpd statistics. Uses DTrace
iofile.d(1m)             - I/O wait time by file and process. Uses DTrace
iofileb.d(1m)            - I/O bytes by file and process. Uses DTrace
iopattern(1m)            - print disk I/O pattern. Uses DTrace
iopending(1m)            - plot number of pending disk events. Uses DTrace
iosnoop(1m)              - snoop I/O events as they occur. Uses DTrace
iotop(1m)                - display top disk I/O events by process. Uses DTrace
kill.d(1m)               - snoop process signals as they occur. Uses DTrace
lastwords(1m)            - print syscalls before exit. Uses DTrace
loads.d(1m)              - print load averages. Uses DTrace
newproc.d(1m)            - snoop new processes. Uses DTrace
opensnoop(1m)            - snoop file opens as they occur. Uses DTrace
pathopens.d(1m)          - full pathnames opened ok count. Uses DTrace
pidpersec.d(1m)          - print new PIDs per sec. Uses DTrace
plockstat(1)             - front-end to DTrace to print statistics about POSIX mutexes and read/write locks
priclass.d(1m)           - priority distribution by scheduling class. Uses DTrace
pridist.d(1m)            - process priority distribution. Uses DTrace
procsystime(1m)          - analyse system call times. Uses DTrace
runocc.d(1m)             - run queue occupancy by CPU. Uses DTrace
rwbypid.d(1m)            - read/write calls by PID. Uses DTrace
rwbytype.d(1m)           - read/write bytes by vnode type. Uses DTrace
rwsnoop(1m)              - snoop read/write events. Uses DTrace
sampleproc(1m)           - sample processes on the CPUs. Uses DTrace
seeksize.d(1m)           - print disk event seek report. Uses DTrace
setuids.d(1m)            - snoop setuid calls as they occur. Uses DTrace
sigdist.d(1m)            - signal distribution by process. Uses DTrace
syscallbypid.d(1m)       - syscalls by process ID. Uses DTrace
syscallbyproc.d(1m)      - syscalls by process name. Uses DTrace
syscallbysysc.d(1m)      - syscalls by syscall. Uses DTrace
topsyscall(1m)           - top syscalls by syscall name. Uses DTrace
topsysproc(1m)           - top syscalls by process name. Uses DTrace
weblatency.d(1m)         - website latency statistics. Uses DTrace


Mehr Details und Beispiele gibt es hier.

git diff history auf eine Datei

Wenn man wissen möchte was den so alles mit einer Datei innerhalb eines git Repository so passiert ist, dann sollte man folgenden Befehl verwenden:

git diff -p /path/to/file


Somit hat man eine schöne Übersicht mit über alle Änderungen. Wenn einem die Liste zu lang ist, einfach noch ein "| more" hinten an hängen.

Textmate Shortcuts

Wer mit Textmate arbeitet, der sollte sich folgenden Artikel mal anschauen/durchlesen.
Even after six years, TextMate is still considered by many to be the best code editor available for Mac. The reason why is simple: it’s incredibly powerful, and offers features that even the newest editors don’t yet offer. Add a robust plugin/bundle community on top of it, and you get one heck of a code editor.

Essential TextMate Shortcuts, Tips and Techniques

Git GUI Client für OSX

Ich bin ja eher der Terminal tipper aber manchmal freut man sich doch über ein GUI.

Bisher sind die Git clients für OSX eher dünn gesät. Also die die nichts kosten und auch funktionieren.

Nun bin auf gitti gekommen und bin bisher sehr zufrieden. Endlich mal ein Client der auch funktioniert und fast alle CLI Befehle unterstützt.

Wer sich damit nicht zufrieden gibt, der kann hier und hier sich ein Bild machen was es sonst noch so gibt.


Mit curl HTTP-Request-Method testen

Wenn man wissen möchte wie die eigene Anwendung auf die HTTP-Request-Methoden reagiert muss man nicht irgendein kompliziertes Script erstellen.

Man nimmt einfach curl ( Sollte auf jedem vernünftigen Entwicklungsrechner installiert sein )
curl -X OPTIONS -I http://localhost/path/to/project/file.php


Der Parameter -X gibt die Methode an [GET,POST,HEAD,OPTIONS ...]

Der Parameter -I gibt den HEAD der Antwort zurück. Somit kann man überprüfen ob das Richtig zurück kommt, wenn die Antwort keinen Body hat.

Multitail logfiles via ssh

Scrollende Log files sind schon was wichtiges. Je mehr Fenster und Monitore damit voll sind, so "wichtiger" sieht es aus ;-)

Wenn man nun mehrere Server hat die sich die Arbeit teilen kann es unter Umständen zu Problemen kommen wenn es einen Fehler gibt. Denn woher sollte man wissen welcher Server nun genau angesprochen wird ? Der Loadbalancer ist da nicht immer hilfreich.

Nun gibt es aber mit Hilfe von Multitail eine Möglichkeit mehrere Log files in einem Terminal von verschiedenen PCs via SSH anzuschauen.
Ich würde dies mal als "mach mich extrem wichtig" einstufen ;-)

( ist ein Einzeiler ! )
multitail -l "ssh user@host tail -f /var/log/file.log" -l  "ssh user@host2 tail -f /var/log/file.log"


Erfolgreiches Eindruck schinden.

Terminal Tools

Auf der Konsole kann man viel machen, fast schon zu viel.

Hier ist eine kleine feine Übersicht über nützliche Tools mit Screenhots:

A little collection of cool unix terminal/console/curses tools


Speicherplatz pro Dateityp berechnen

Wenn man wissen möchte wie viel Speicherplatz für einen speziellen Dateityp verbraucht wird, dann kann man das so machen:

Bash Einzeiler:
find . -name '*.gz' | xargs stat -f"%z" | awk '{ sum+=$1 } END { print sum/1024/1024 }'


Nun hat man den Speicherplatz für alle *.gz Dateien in MB.

Ausgabe auf der Kommandozeile in Farbe mit PHP

Jeder hat sicherlich nicht nur PHP Scripte erstellt, die über den Apache ablaufen, sondern auch Scripte dir nur auf der Kommandozeile laufen und nicht für den Browser gedacht sind.

Oft lässt man sich ja das Ergebnis oder Statusmeldungen ausgeben. Man kann diese mit Hilfe vo ASCII Zeichen formatieren aber mit Farbe sieht das schon besser aus.

Farben in der Kommandozeile nutzen

Bash Spielerei. Doomsday.sh

Nette Spielerei auf Bash Art.

Jedes mal wenn man ein neues Terminal auf macht, wird man gefragt welcher Wochentag an dem Datum nun ist. Hat man falsch
geantwortet, schließt sich das Terminal wieder ;-)

doomsday-sh | BASH script for testing your ability to calculate day-of-week for a given date
A BASH script for testing your ability to calculate day-of-week for a given date. Download from here: http://doomsday-sh.googlecode.com/hg/doomsday.sh

You may use whatever means you like to work out what day it will be. I like the Doomsday Algorithm:

http://en.wikipedia.org/wiki/Doomsday_algorithm
Invented by John Horton Conway. "To improve his speed, he practices his calendrical calculations on his computer, which is programmed to quiz him with random dates every time he logs on.[citation needed]". This script is intended to do just that.



Mac Terminal und Keyboard Shortcuts

Schöne Sammlung von Keyboard Shortcuts für das Mac Terminal und die Arbeit mit Mac OSX

- Cycle through history in linux/mac terminal ( Mirror )
- Mac OS X Keyboard Commands ( Mirror )
- Top 15 Terminal Commands for Hidden Settings in Snow Leopard ( Mirror )
- A Crash Course in Using the Mac Terminal ( Mirror )