Sentry Application Exception Tracking
Sentry ist ein Event Logging System, um das Handling von Fehlern und Exceptions, die in Applikationen auftreten, zu verbessern und zu zentralisieren. Sentry gibt es auf Github als Open Source oder auch als Hostinglösung. Konnektoren gibt es für div. Programmiersprachen wie Java, Python, PHP, Ruby, Go, Node.js, usw.
Posted at 11:16nachm. Okt. 22, 2012 by cetixx in Links | Kommentare [0]
Langsame MySQL Queries ausfindig machen
Anstatt eines der MySQL Logs (slowquery.log im Speziellen) zu verwenden, um die langsamen Queries heraus zufinden, kann man das Ganze weit weniger invasiv (in Form von CPU und I/O) und genauer gestalten. Man benötigt dafür tcpdump und das Percona Toolkit.
Als Erstes schneiden wir mit tcpdump mal den Netzverkehr mit, der auf dem Standard MySQL Port 3306 läuft (mal angenommen tcpdump läuft auf dem Rechner, auf dem die MySQL auch ist):
tcpdump -s 65535 -x -nn -q -tttt -i any -c 9999999 port 3306 | gzip -c > /tmp/tcpdump.txt.gz
Das kann man dann solange laufen lassen, wie man will. I.d.R. dürften aber 10 bis max. 30 Min. vollkommen ausreichen. Hängt natürlich auch etwas davon ab, wieviel auf der DB so an Queries/Sek. rein gehen.
Dann können wir das Ganze auswerten:
gunzip -c /tmp/tcpdump.txt.gz | /pfad/zu/pt-query-digest --type tcpdump > /tmp/digest.txt
Zu pt-query-digest gibt es unzählige Optionen. Da muss man mal die Doku durchblättern. pg-query-digest kann nebei auch noch PostgreSQL und memcached Queries auswerten. Sehr praktische Sache... :-)
Alternativ finde ich das kommerzielle GUI-Tool Jetprofiler recht schön. Nicht ganz günstig, aber die Daten werden schön aufbereitet (nicht nur Queries, sondern noch viel mehr) und man hat alles im Überblick.
Posted at 11:15nachm. Okt. 22, 2012 by cetixx in Tipps | Kommentare [0]
Freie Editoren für Programmierer
Hier mal eine Auflistung von freien Editoren, die mir in letzter Zeit über den Weg gelaufen sind. Eclipse ist mir inzwischen einfach zu groß und schwerfällig und man braucht das Zeug alles gar nicht, was da drin ist. Die folgenden Editoren haben - wie immer - alle ihre Stärken und Schwächen, aber jeder hat ja auch so seine Vorlieben ;-)
Enki is a text editor for programmers
Ninja-IDE - Speziell (aber nicht nur) für Python-Entwickler mit Code Completion. Gefällt mir persönlich recht gut.
Sublime Text - Nicht OpenSource aber kann man so runterladen. Kostet 59$, wenn man ihn kauft, ansonsten kommt ab und an mal die Meldung, ob man das nicht tun will. Wenn man den Editor aufmacht, denkt man erstmal, was soll das denn sein? ;-) Ziemlich minimalistisch, aber wenn man eine Weile rum macht, sehr mächtig.
Geany - Basiert auf GTK2. Sehr klein und schnell, aber trotzdem schön damit zu arbeiten.
PyCharm - Kostet leider was ;-), aber das Teil ist schon recht gut und ziemlich flott (Python IDE in Java geschrieben - auch nicht schlecht ;-) ). Ist von JetBrains, die auch die Java IDE IDEA machen. Hier ist so ziemlich alles dabei, was das Herz begeehrt. 30 Tage kann man PyCharm kostenlos ausprobieren mit allen Features.
Aptana Studio - Eine ganz gute OpenSource IDE für HTML5, CSS3, JavaScript, Ruby, Rails, PHP and Python.
HTML5 Editoren - Eine Übersicht von 6 HTML5 Editoren.
Posted at 11:13nachm. Okt. 22, 2012 by cetixx in Links | Kommentare [0]
OpenStreetMap in PostgreSQL
Wie man OpenStreetMap Daten in Postgres bekommt, beschreibt dieser Blog von Michal Migurski.
Posted at 11:13nachm. Okt. 22, 2012 by cetixx in Links | Kommentare [0]
Redis in my PostgreSQL
Netter Blog von Craig Kerstiens wie man Redis Datenbanken über die PostgreSQL Foreign Data Wrapper (FDW) abfragen kann. Das Schöne an diesen FDW's ist, das man damit Joins mit externen Datenquellen wie eben einer Redis, MongoDB, MySQL, einer weiteren PostgreSQL, LDAP, usw. machen kann. Gibt sogar einen FDW für Twitter... ;-) Und wenn man das noch weiter spinnt, kann man damit SQL Queries über mehrere NoSQL-DB's machen - man missbraucht also Postgres soz. als SQL-Layer für NoSQL-DBs. Naja, aber der echte Vorteil ist hier, das man Datenquellen verbinden kann. Das kann für einige Anwendungen durchaus sehr interessant sein.
Posted at 01:18vorm. Okt. 19, 2012 by cetixx in Links | Kommentare [0]
VLAN trunking zu KVM VMs
Ein paar Infos zu dem Thema von Matthew Thode.
Posted at 12:19vorm. Okt. 19, 2012 by cetixx in Links | Kommentare [0]
Unit-Tests für Python mit nose
nose vereinfacht das Unit-Tests unter Python etwas und bietet noch etwas mehr. So sammelt nose Tests automatisch, die durchgeführt werden sollen, solange man sich an ein gewisses Schema hält, wie man seine Libs und Code organisiert. Außerdem kann es durch div. Plugins gleich noch Code Coverage, Doctests, Profiling, usw. durchführen.
Posted at 11:59nachm. Okt. 18, 2012 by cetixx in Links | Kommentare [0]
Python Interface für Apache Solr
Wer's etwas komfortabler haben möchte, wenn er von Python aus Solr ansprechen will, der kann das über diese API tun. Macht die Sache viel einfacher und komfortabler und man kann weiterhin die gewohnte Python-Syntax verwenden.
Posted at 11:54nachm. Okt. 18, 2012 by cetixx in Links | Kommentare [0]
Apache Solr Reference Guide PDF
Fast 400 Seite stark ist dieses frei verfügbare PDF von LucidWorks zum Solr Suchserver. Da steht so ziemlich alles drin, was man über Solr wissen muß - vermutlich schon zuviel ;-) Alternativ hier das Ganze in HTML.
Weiter Informationen:
Von Formatübersetzern, Textverstehern und Textsuchern - Lucene, Solr, Tika oder UIMA
Die Neuerungen von Apache Solr 4.0
Posted at 11:51nachm. Okt. 18, 2012 by cetixx in Links | Kommentare [0]
MySQL Index Design und Tipps / MySQL Upgrading
Auf der Percona Seite gibt es zwei sehr interesseante Slides / Webinars zum Thema MySQL (englisch):
Index-Design: Tools und Techniken
MySQL Indexing: Best Practices
Sehr interessant und einfach erklärt, wie man mit Indizes vernünftig in MySQL umgeht und verwaltet. Es werden z.B. div. Tools vorgestellt, mit denen man relativ einfach prüfen kann, ob ein Index überhaupt notwendig ist oder wie man raus findet, auf welche Spalten ein Index sinnvoll ist. Zu viele Indizes sind ja bekanntlich auch nix... ;-)
Dann noch ein weiteres Webinar mit Slides zum Thema MySQL Updates und welche Möglichkeiten es gibt, eine MySQL möglichst schnell und problemlos auf eine neue Minor- oder Major-Release zu heben.
Posted at 12:48vorm. Okt. 18, 2012 by cetixx in Tipps | Kommentare [0]
Teil eines Videos verlustfrei kopieren bzw. herrausschneiden mit Linux und ffmpeg
ffmpeg -ss <start zeit in hh:mm:ss> -t <dauer in hh:mm:ss> -i originaldatei.mpeg -acodec copy -vcodec copy out.mpeg
Posted at 12:31vorm. Okt. 18, 2012 by cetixx in Tipps | Kommentare [0]
Apache Verzeichnis freigeben - außer einem...
Manche Dinge kosten einen wirklich die letzten Haare... ;-) Man hat ein DocRoot-Verzeichnis "/", welches man absperren will, aber einen Ordner "/public" will man für die ganze Welt erreichbar haben. Das kann man sehr schön wie folgt lösen:
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null
Require valid-user
SetEnvIf Request_URI "(path/to/directory/)$" allow
SetEnvIf Request_URI "(path/to/file\.php)$" allow
Order allow,deny
Allow from env=allow
Satisfy any
Also ganz normal die üblichen Auth*-Direktiven rein und Require valid-user, dann setzt man mit SetEnvIf für jeden Pfad bzw. Datei eine allow-Variable und bei "Allow from env=allow" sagen wir dem Apache, das der Zugriff auf Resourcen gestattet ist, wenn sie mit der allow-Variable ausgestattet ist. Ansonsten kommt die Passwortabfrage. Praktische Sache :-)
Im Orginal kann man das hier nachlesen (mit noch etwas mehr Information): Stupid htaccess Trick: Enable File or Directory Access to Your Password-Protected Site
Posted at 10:45nachm. Okt. 17, 2012 by cetixx in Tipps | Kommentare [0]
python-twitter
Twitter API über Python ansprechen mit python-twitter - Alternativ: Python Twitter Tools (Gentoo Paket: dev-python/twitter).
Posted at 10:44nachm. Okt. 17, 2012 by cetixx in Links | Kommentare [0]
Twitter RSS Feed Getter
Wenn schon immer gestört hat, das man bei Twitter nicht so einfach an den RSS-Feed eines Users ran kommt, dem hilft diese Seite von Charlie Harvey: Twitter RSS Feed Getter. Twitter Username oben rein pasten, Fetch RSS klicken und dann kann man sich auf der nächsten Seite einfach die URL kopieren und in den bevorzugten RSS-Reader übernehmen, fertig :-)
Posted at 12:10vorm. Okt. 13, 2012 by cetixx in Links | Kommentare [0]
MongoKit - Dokumentenmapping mit Python und MongoDB
Will man Dokumente in MongoDB mit Python speichern, nimmt man PyMongo - oder MongoKit ;-) Letzterer setzt auf PyMongo auf und wenn man will, kann man auch direkt auf die PyMongo API durch greifen, wenn's pressiert... Aber mit MongoKit ist das Dokumentenhandling sehr schön gemacht. Man erzeugt eine Python-Klasse, die von Document vererbt und definiert dort seine Dokumentenstruktur. Zusätzlich kann man noch sog. Validators hinzufügen, die dafür sorgen, das Constraints eingehalten werden. Das sieht dann z.B. so aus:
def max_length(length):
def validate(value):
if len(value) <= length:
return True
raise Exception('%s must be at most %s characters long' % length)
return validate
class User(Document):
structure = {
'name': unicode,
'email': unicode,
}
validators = {
'name': max_length(50),
'email': max_length(120)
}
use_dot_notation = True
def __repr__(self):
return '<User %r>' % (self.name)
Posted at 11:12nachm. Okt. 12, 2012 by cetixx in Links | Kommentare [0]