Archive for the ‘tech’ Category

Tipps von Sysadmin zu Webentwickler

Dienstag, März 15th, 2011

Als Systemadministrator beobachtet man bestimmte Fallen immer wieder, in die unerfahrene Entwickler von Webanwendungen tappen. Ich habe hier die Top Ten der mißachteten Punkte zusammengestellt:

  1. Ruft regelmässige Aufgaben über richtige Cronjobs auf, nicht mit Curl/wget/lynx per HTTP, setzt eine E-Mail-Adresse als Empfänger der obigen Cronjobs, die ganz sicher immer funktioniert, und produziert in euren Cronjobs nur dann eine Ausgabe, wenn Fehler auftreten. Keine Debuginfos, zwischen denen echte Fehler einfach untergehen, weil die Mail eh jeden Tag kommt — kurz, schreibt ordentliche Cronjobs
  2. Entwickelt von vornherein in UTF-8, früher oder später kommen Finnen, Franzosen, Dänen, Asiaten, mit lustigen Sonderzeichen
  3. Achtet auf sinnvolle Rechtevergabe, prüft, unter welchem User die Webanwendung per Webserver aufgerufen wird, und mit welchen Privilegien ihr per SSH oder FTP auf die Daten zugreift. Setzt sinnvolle Gruppenrechte oder veranlasst, dass alles unter der selben UID läuft — z.B. per suPHP
  4. Kalkuliert die Datensicherung ein, vor allem daß während eines Datenbank-Snapshots z.B. per mysqldump oft ein globales Write-Lock verhängt wird
  5. Legt gerade bei ausfallsicheren Plattformen auch die Cronjobs entsprechend an — entweder mit globalem Locking oder so, daß auch mehrere gleichzeitig arbeiten können
  6. Baut von vornherein vernünftige Fehlerseiten und Fehlerbehandlung, die so wenig Abhängigkeiten wie möglich haben. Nichts ist peinlicher als die Meldung Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
  7. Bereitet eine Wartungsseite vor, die alle Anfragen sauber beantwortet, wenn die Anwendung mal aktualisiert wird oder aufgrund von technischen Problemen deaktiviert werden muss. Teilt eurem Hoster mit, wie diese Seite aktiviert werden kann, falls mal etwas schlimmes schiefgeht
  8. Stellt sicher, dass zumindest eure Kollegen und der Hoster die Fehlerseite von der Wartungsseite unterscheiden können. Sonst wird im Ernstfall der Sysadmin die Fehler-Wartungsseite zu sehen bekommen und von Wartungsarbeiten ausgehen, wenn vielleicht gerade die Datenbank Probleme macht
  9. Legt nur solche Infos im Cache ab, deren Erzeugung wirklich Rechenzeit spart — Datenbankabfragen sind schneller als ein Festplattenbasierter Cache, und eine Datenbank ist Backup-tauglicher
  10. Räumt von vornherein eure Daten auf — wenn z.B. die an User verschickten Mails erstmal dreistellige Gigabyte in der Datenbank belegen, ist es zu spät

Ich hoffe, damit dem ein oder anderen angehenden Programmierer hilfreiche Tipps gegeben zu haben, und vielleicht auch die Nerven manches Sysadmins zu schonen…

flattr this!

Objektivwechsel leichtgemacht

Dienstag, März 8th, 2011

Wer, wie ich, ein bisschen Gefallen an der digitalen Spiegelreflexfotographie gefunden hat, besitzt früher oder später mehr als ein Objektiv. Dann kommt irgendwann der Moment, in dem man unterwegs einen Objektivwechsel vornehmen will. Im Normalfall bedeutet das folgende Arbeitsschritte:

  1. Schutzkappe aus der Tasche kramen
  2. Objektiv abnehmen
  3. Schutzkappe an Objektiv anbringen
  4. Objektiv verstauen
  5. Austauschobjektiv aus der Tasche nehmen
  6. Schutzkappe vom Austauschobjektiv abnehmen
  7. Objektiv anbringen
  8. Schutzkappe verstauen

Das sind viele Schritte, und wenn man keine zusätzliche Schutzkappe lose in der Tasche haben möchte braucht man zwischendurch theoretisch drei Hände. Da man aber bisher nur dreiköpfige Affen, aber nicht dreiarmige Menschen kennt, ist das ein Problem.

Im auch ansonsten trotz des etwas altmodischen Designs sehr zu empfehlenden Striewisch Fotolehrgang im Internet habe ich aber einen guten Tipp gefunden: Man klebt einfach zwei Objektivkappen aneinander. Damit reduziert sich der Objektivwechsel auf folgende Schritte:

  1. Objektiv aus der Tasche nehmen
  2. Objektiv von der Kamera entfernen
  3. bisheriges Objektiv auf die Kappe am Austauschobjektiv schrauben
  4. Austauschobjektiv von der Kappe abschrauben
  5. Objektiv an der Kamera befestigen
  6. bisheriges Objektiv in der Tasche verstauen

Hierbei reicht das normalerweise vorhandene Paar Arme aus, und man verkürzt die Zeit, in der die Kamera objektivlos den Elementen ausgesetzt ist. Für diejenigen, die sich das bildlich nicht vorstellen können, habe ich beim letzten Mal alle Arbeitsschritte photographiert.

Kleiner Tipp am Ende: Die benötigten Objektivdeckel kann man natürlich als Originalzubehör kaufen. Günstiger ist allerdings der Direktimport aus Asien, z.B. über FocalPrice

flattr this!

Nagios: Check-Ergebnis invertieren mit negate

Dienstag, Februar 8th, 2011

Schon seit längerer Zeit hatte ich eine Idee im Hinterkopf, einen speziellen Nagios-Check zu schreiben, der das Ergebnis eines anderen Checks invertiert, d.h. meldet der Check “OK”, ist das Ergebnis “Critical” und umgekehrt. “Unknown” und “Warning” bleiben erhalten.

Dieser Check war zum Beispiel dafür gedacht, dass ein Router sich, wenn eine Standleitung ausfällt, über eine alternative Verbindung einwählt. Diese soll aber, wenn sie nutzungsabhängige Kosten verursacht, nicht ständig aufgebaut sein. Es ist also ein Ping-Check nötig, der dann alarmiert, wenn die Verbindung aufgebaut ist. Ein anderes Beispiel ist, dass man auf einem SSH-fähigen Cisco-Router sicherstellen möchte, dass telnet deaktiviert ist.

Jetzt habe ich festgestellt, dass ich nicht der einzige mit dieser Idee war, und sie offenbar schon vor einiger Zeit in dem “negate“-Check umgesetzt wurde. Dieser macht genau das oben beschriebene, und kann zusätzlich noch im Ergebnis die Zeichenketten “OK” und “WARNING” entsprechend ersetzen.

Hier ein Konfigurationsbeispiel. Man nimmt die ursprüngliche Konfiguration, um Telnet zu checken:

define command{
	command_name	check_telnet
	command_line	/usr/lib/nagios/plugins/check_tcp -H '$HOSTADDRESS$' -p 23
}

Vor die command_line stellt man dann das negate-Plugin:

define command {
        command_name    check_telnet_disabled
        command_line    /usr/lib/nagios/plugins/negate /usr/lib/nagios/plugins/check_tcp -H '$HOSTADDRESS$' -p 23
}

Und fertig ist ein Check-Command, das Alarm gibt, sobald Telnet aktiviert ist.

flattr this!

Definition: SNMP

Donnerstag, Oktober 28th, 2010

Um den Inhalt hier ein wenig aufzulockern will ich mal wieder etwas technischeres posten. Vor längerer Zeit habe ich jemandem die Grundzüge zu SNMP erklären müssen. Dabei stand zu allererst die Frage, was das überhaupt ist. Diese Definition wollte ich nicht für mich behalten:

SNMP ist ein Protokoll, um Netzwerkgeräte abzufragen und zu konfigurieren. Die Informationen sind in einer Baumstruktur organisiert, die mit Hilfe von Management Information Bases (MIBs) beschrieben wird. Ausserdem haben diese Netzwerkgeräte die Möglichkeit über SNMP-Traps Ereignisse an eine SNMP-Management-Station zu melden.

flattr this!

Canon CanoScan LiDE 80

Sonntag, September 26th, 2010

Ich besitze schon seit langem einen Canon CanoScan LiDE 80 Scanner. Dieser hat mir immer schon gute Dienste geleistet. Leider ist Canon ein Hersteller, der anscheinend bewusst die Treiberunterstützung für ältere Geräte einstellt, wohl in der Hoffnung, dass man sich einfach einen neuen Scanner kauft. Mit den folgenden Tipps bekommt man die alten Treiber auch noch auf einem aktuellen Mac OS X Snow Leopard installiert. Sollte es irgendwann einmal nicht mehr gehen kaufe ich mir eben einen Scanner, der von einem Hersteller mit besserer Treiberversorgung stammt.

  1. Rosetta muss installiert sein
  2. die aktuellen Treiber müssen heruntergeladen und installiert werden
  3. der Ordner, der sich unter “Into Users_Shared” verbirgt muss nach /Users/Shared kopiert werden

Nach einem Rechnerneustart sollte die CanoScan Toolbox wieder funktionieren und nicht abstürzen, sobald man etwas scannen möchte.

Den entscheidenden Tip hierfür habe ich bei mac diddy gefunden.

flattr this!

Apache-Passwortschutz

Donnerstag, September 2nd, 2010

Wie schützt man einfach ein Verzeichnis, so daß nur mit einem Password darauf zugegriffen werden kann? Ganz einfach, erstmal legt man eine Datei namens .htaccess an, mit folgendem Inhalt:

AuthUserFile /home/user/pwd_file
AuthName "Secret Area"
AuthType Basic
require valid-user

Hierbei muss der Dateiname des AuthUserFile angepasst werden. In dieser Datei stehen die Benutzerdaten, am einfachsten pflegt man sie auf der Kommandozeile mit dem Befehl htpasswd. Der erste Befehl legt die Datei gleich an (-c):

htpasswd -cm /home/user/pwd_file username1
htpasswd -m /home/user/pwd_file username2

flattr this!

ICQ-Transport via Jabber in Adium nutzen

Dienstag, August 17th, 2010

Um weniger Accounts in meinem Instant Messenger einrichten zu müssen habe ich auf meinem Server zusätzlich zum ejabberd noch den pyICQt installiert. Die Anleitung war klar und verständlich, und der Dienst schnell eingerichtet. Doch dann die grosse Frage: Wie benutze ich ihn?

Ganz einfach:

  1. im Menü auf File -> <Jabber-Account> -> Discovery-Browser
  2. Doppelklick auf ICQ Transport
  3. im dann erscheinenden Dialog die ICQ-Zugangsdaten eingeben
  4. die auftauchenden Authorisierungsanfragen beantworten, damit alle Kontakte übernommen werden können

flattr this!

Booklet-Druckprobleme aus InDesign unter MacOS X Snow Leopard

Dienstag, August 10th, 2010

Es fing mit einem neuen Intel-Mac und dem gleichzeitigen Wechsel auf MacOS X 10.6 Snow Leopard an. Das Problem: Ein Ausdruck aus InDesign als Booklet wurde abgeschnitten, und zwar genau auf der gleichen Höhe, wie A4 breit ist – d.h. das Druckbild war genau quadratisch.
Alle Lösungsansätze liefen ins Leere – neueres InDesign, neuer Benutzer, anderer Rechner, nichts half.

Kurz vor dem Aufgeben und nach Wochenlanger Suche kam dann spontan eine Idee. Man kann in den Druckereinstellungen auswählen, ob ein Druckerspezifischer Treiber (in diesem Fall für den HP Color LaserJet 2605dn) benutzt werden soll oder ein generischer. Kaum hatten wir den Druckertreiber auf “Generic PostScript Printer” gestellt, kam prompt der erste Testdruck wie gewünscht aus dem Drucker.

Vielleicht hilft dieser Beitrag ja jemandem, der das gleiche Problem hat!

flattr this!

Portfolio mit WordPress

Dienstag, August 3rd, 2010

Ich habe kürzlich bei der Gestaltung der Webseite Sandpunze.de von Anita Aleite mitgeholfen.

Es handelt sich um ein Web-Portfolio auf der Basis von WordPress. Eine Inspirationsquelle, diese Seite überhaupt mit WordPress anzugehen war das Smashing Magazine. Allerdings habe ich im Endeffekt doch das komplette Template selber gebaut, da sowohl Layout als auch Design sehr individuell werden sollten. Jeder Beitrag besteht neben dem Text aus einer variablen Anzahl von Bildern, die allerdings nicht alle auf einmal angezeigt werden, sondern immer nur eines. Durch Mausklick kann man die Bilder durchschalten. Vorbild hierfür war die Webseite von Jesse Kirsch.

Nun mussten diese Komponenten aber noch zu einer funktionierenden Webseite zusammengefügt werden. Hierbei half das Plugin WordCycle von Esther S. White. Ein paar kleine Anpassungen waren erforderlich, aber dann tat es seinen Dienst. Diese Anpassungen werden wohl auch in die nächste Version des Plugins einfliessen.

Die statistische Auswertung macht Piwik, das sich in der letzten Zeit deutlich verbessert hat.

flattr this!

iPad Pro und Contra

Dienstag, Juli 20th, 2010

Bald wird mein iPad seinen zweiten Monat vollenden. Ein guter Zeitpunkt, um ein wenig Resümee zu ziehen. Welche Argumente und Informationen würde ich einem iPad-Interessierten auf keinen Fall unterschlagen wollen?

Pro:

  • super Display, schön hell, z.B. für Filme
  • Gute Onscreen-Tastatur, in Details besser als beim iPhone
  • sehr Praktisch auf dem Sofa, zum RSS-Feeds lesen, Recherchieren etc.
  • Dank 3G/UMTS ist man immer Online, einen passenden Tarif vorausgesetzt
  • Für bestimmte Spiele ideales User-Interface (ich sag nur: Harbor Master HD)
  • eine unglaubliche Akkulaufzeit

Contra

  • Das Display ist im hellen Sonnenschein unbrauchbar
  • Es gibt (immer Noch!) kein iOS 4
  • Der Bildschirm fettet extrem schnell und macht einen zum Wischfanatiker
  • Nicht alle Webseiten (vor allem Videos) können dargestellt werden, da Flash vorausgesetzt wird

Fazit: Ich würde mir jederzeit wieder ein iPad zulegen!

flattr this!