Am Rande notiert ...

Ymacs — An Emacs-like editor for the Web. Was der Titel sagt. Emacs bootet jetzt auch im Browser. Einen brauchbaren Editor gibts für Emacs aber immer noch nicht.

Fuse4X – The Easiest and Fastest Way to Create File Systems for Mac OS X. MacFuse macht ja derzeit den Dodo, von daher brauchts ne Alternative wenn man Userspace-Filesystems laden will (z.B. einen SSH Server mounten will). Diese Version sieht auch interessanter aus als OSXFuse, denn OSXFuse will primär Kompatibilität mit dem alten MacFuse, wärend Fuse4X primär Kompatibilität mit der Referenz auf Linux ansteuert und damit die  Portierung von Userspace-Filesystems einfacher werden sollte.

Make runfcgi fail when database connection is open before fork. Das ist eine Sache nach der ich schon ewige Zeiten jage, zuletzt in ein paar ziemlich wichtigen Projekten. Flup arbeitet so, dass es die WSGI-Anwendung erst initialisiert und mit dieser initialisierten WSGI Anwendung dann die Forks für die Worker macht. Dummerweise gibt es bei uns aber Datenbankzugriffe wärend der Anwendungsinitialisierung – dadurch hat der Basisprozess schon eine offene Datenbankverbindung, jeder Fork kopiert diese Daten. Aber der Socket der Verbindung geht natürlich nicht mit – der neue Prozess denkt nur er wäre verbunden, ist es aber nicht. Zugriffe von denen neuen Prozessen fallen dann mit einer Exception raus. Man kann im verlinkten Patch auch gut den raise auf die Exception einfach durch connection.connection = None ersetzen. Dann wird einfach die Verbindung die sowieso defekt ist weggeworfen und in neuen Prozessen immer eine neue Verbindung aufgebaut. Damit haben wir zumindestens in einem Produktionsumfeld (mit psycopg2) das ganze beheben können und sind guten Mutes, dass es auch bei der Umgebung  mit pyodbc helfen wird.

ronnix/fabtools. Sieht interessant aus – ein paar Tools für Fabric, mit denen man einfache Systempakete und Pythonpakete (auch innerhalb virtual environments) verwalten kann. Sollte ich mir mal angucken, könnte ein paar Sachen etwas vereinfachen bei der Initialisierung von Arbeitsumgebungen. Allerdings benutzt Vagrant im Moment nur Chef und  Puppet und nicht Fabric, wenn ich das richtig erinnere.

SET TRANSACTION ISOLATION LEVEL Transact-SQL. Da gibts mehr Infos zum Isolation-Level in MSSQL, speziell was die Snapshot-Geschichte bedeutet. Im Prinzip bringt man MSSQL damit dazu sich ähnlich zu PostgreSQL zu verhalten.

#18251 multithreading deadlock in django.models.loading.get_apps – Django. Und noch eine Sache, die uns vielleicht betreffen könnte – Raceconditions zwischen Django-Threads bei der Initialisierung von Django-Applications. Gibt auch schon einen Patch dafür, der das in den Django Internals behebt.

Enabling Snapshot Isolation – SQLAlchemy 0.7 Documentation. Könnte uns das helfen? MSSQL hat scheinbar einen eher ungünstigen Isolation-Level als Default. Hmm, werden wir wohl mal ausprobieren.

apenwarr/bup. Sehr interessantes kleines Tool welches Backups differentiell verwaltet – und zwar auf der Basis der git Datenstrukturen. Im Prinzip könnte man es als einen intelligenten Splitter für große Files mit geringen Änderungen in jeder Version betrachten – also z.B. tar Files von Servern. Dazu wird ein rsync-ähnlicher Algorithmus für die Differenzenermittlung benutzt und das Ergebnis in einem git Archiv abgelegt. Das ganze kann auch noch mit dem vorigen git-annex kombiniert werden und damit eine platzsparende Backup-Lösung bieten.

git-annex. Interessantes Plugin für git mit dem man nur die Metadaten von großen Dateien, aber nicht deren eigentlichen Inhalte in git verwaltet. Die Dateien selber werden als normale externe Files verwaltet, aber die Verzeichnisstrukturen und Verweise werden korrekt versioniert – und das ganze zusammen mit normal versionierten Dateien. Dadurch wird das Problem, dass git mit großen Dateien hat, umgangen. Und damit wird z.B. auch sowas wie ein Foto-Archiv auf git-Basis möglich.

Mumble. Ist zwar irgendwie lustig, wenn man seine Tipps für Software von einer politischen Partei bekommt, aber egal. Mumble ist sowas wie Teamspeak (oder auch ein entfernter Verwandter von Skype Gruppenchats oder Google+  Hangouts), nur halt open source und zum selber betreiben. Clients auch für OSX, Windows, Linux und iOS. Es gibt da übrigens auch Bemühungen, mumble als Alternative zu Vivox in OpenSim als Voice-System zu integrieren.

Ubuntu 10.04: Why is ksmd eating CPU cycles? | Interphero Miscellany. Ok, bin gerade bei meinem Server drüber gestolpert und blogmarke das mal für spätere Referenz. Bei kvm Einsatz taucht bei neuerem Ubuntu der ksmd auf, der eigentlich die Speicherseiten zwischen virtuellen Maschinen vergleicht und doppelte Seiten nur einmal speichert – das spart RAM, aber frisst CPU. Wenn man also kein over-commit beim Speicher macht, kann man den ruhig ausschalten.

Features | ownCloud.org. Hmm, jetzt fehlt nur noch iOS Zugriff auf die OwnCloud und ich glaub ich hab danach eine längere Installationssession vor mir. Ganz werde ich zwar nicht auf Dropbox oder ähnliches verzichten können (und wollen), aber evtl. reicht es schon um auf die freie Version von Dropbox zurückzugehen, wenn ich die großen Datenmengen nur noch auf meinem eigenen Server verwalte.

TeamPostgreSQL – PostgreSQL Web Admin GUI Tools. Sieht gut aus, eine Weboberfläche für die Administration von  PostgreSQL Datenbanken, die an PGAdminIII heranreicht und nicht so spartanisch aussieht wie PHPPGAdmin. Allerdings hab ich Probleme auf Datenbanken aus einem Projekt zuzugreifen – es scheint nicht alles so ganz sauber implementiert zu sein, speziell bei der Behandlung von Sequences. Von daher kann ich noch nichts dazu sagen, ob es performant ist. Das ganze kommt komplett mit Java-Tomcat-Server daher, so das man es direkt lokal installieren und ausführen kann.

Matasano Security – Matasano Web Security Assessments for Enterprises. Analyse von Kryptographie in JavaScript. Kurzfassung: Kryptographie in JavaScript ist in der Regel eine dumme Idee, da man das JavaScript aus einer nicht vertrauenswürdigen Quelle oder einem nicht vertrauenswürdigen Netz bezieht (würde man ihm vertrauen, wäre ja wohl kaum Kryptographie notwendig) und daher ein Henne-Ei-Problem besteht. In bezug auf das vorherige 0bin Projekt: dort ist die Kryptographie nicht eingebaut worden um den Benutzer zu sichern, sondern um den Betreiber des 0bin abzusichern – es ist also relativ egal für den Betreiber, ob die User sicher sind oder nicht, es geht dabei nur um „plausible deniability“ für den Betreiber. Anders sieht es aber aus, wenn anstelle SSL einzusetzen eine Verschlüsselung in JavaScript implementiert wird.

sametmax/0bin. Interessanter Ansatz die Probleme des pastebin-hostings zu umgehen. Bei pastebin-ähnlichen Sites ist ja das Problem im Hosting, dass User jeden Kram posten und der Server-Betreiber dann schnell in Regress genommen wird. 0bin versucht das Problem so zu verschieben, dass der Betreiber nicht wissen kann, was in den Pastebins steht, da sie verschlüsselt abgelegt werden und die Verschlüsselung durch den Client per JavaScript passiert. Das klappt natürlich nur, wenn die Richter dann auch akzeptieren, dass der Serverbetreiber nicht wissen kann, was da läuft – und nicht zum Beispiel argumentieren, er solle dann halt eine andere pastebin-Software installieren bei der er es wissen kann und ihn trotzdem verantwortlich machen. Sicherlich aber ein interessanter Ansatz, speziell die Idee, den Key für die Verschlüsselung in den hash der URL (also das nach dem # in der Adresse) zu packen und so eine funktionerende URL zu haben, aber trotzdem dem Server den Key nicht zu liefern (denn der hash einer URL wird nur vom Client verwendet und nicht dem Server mitgeteilt).

r17 – flexible, scalable, relational data mining language. Sieht ganz interessant aus, im Prinzip sowas wie eine Kreuzung aus AWK und SQL. Das Ergebnis ist nicht wirklich schön, aber wirkt praktisch – speziell weil man auf einfache Weise mehrere Prozessoren nutzen kann, oder sogar mehrere Maschinen (implizite Parallelisierung), und damit auch recht einfach große Datenmengen mit ad-hoc Queries auswerten kann. Dadurch, dass es ein einfaches Format für die Übermittlung von daten an weitere Schritte gibt, kann man es auch leicht auf neue Datenquellen anpassen, ohne dort erst einen langwierigen Exportschritt laufen zu lassen.

Plumbum: Shell Combinators and More — Plumbum: Shell Combinators. Schaut interessant aus und deutlich durchdachter als manche Alternative die ich mir angeguckt habe (und deutlich ausgebauter als shutil+glob).

ownCloud.org | Your Cloud, Your Data, Your Way!. Das werde ich definitiv weiter beobachten, denn wenn da der OSX Desktop Client da ist und der iOS Client, dann wird das eine ganz deutliche Alternative zu Google Drive, Dropbox oder SkyDrive für mich. Den eigenen Server habe ich schließlich sowieso (klassische Ehschonda-Lösung), die Dropbox würde ich dann wohl nur noch für die Integration diverse iOS Anwendungen benutzen und deren Inhalt in meinen eigenen Server integrieren und so auf meine Desktops bringen. Denn egal wie gut ein Cloud-Anbieter ist (und bisher ist Dropbox da einer der deutlich besseren), ein eigener Server gibt mir im Endeffekt dann doch mehr Vertrauen.

pycounters. Muss ich mir mal angucken, damit kann man recht einfach Counter in ein Projekt integrieren, die Daten über z.B. Funktionsaufrufe oder ähnliches liefern – im Prinzip sowas wie die Windows Performancecounter, nur eben für Python-Projekte.

virtualenv-clone 0.2.2 : Python Package Index. Noch nicht ausprobiert, aber nach Beschreibung kopiert es virtualenv Environments und repariert Import-Pfade, Egg-Files und .pth Inhalte sowie Scripte. Und soll vollständiger arbeiten als die relocatable virtualenvs.

uWSGI. Hatte ich scheinbar noch nicht – ein Kollege hat mich gerade darauf hingewiesen. Könnte besonders für Django-Projekte interessant sein, weil es wesentlich flexiblere Prozesssteuerung und Monitoring bietet als der flup-basierte runfcgi in Django.

abique/tmfs. Mal geblogmarkt, könnte hilfreich werden irgendwann – ein user-space Filesystem für Time Machine Backups unter Linux.

the unbearable finality of pixel space. Das dort verlinkte Archivierungstool für Flickr hab ich mal ausprobiert und es läuft richtig gut. Da verzeihe ich auch mal das PHP. Ich hab zwar die Flickr-Bilder auch immer mal wieder hier ins Blog geschoben (die „Neulich auf Flickr“ Posts), aber der Vorteil dieses Backup-Scriptes ist, dass die Struktur und sogar die Flickr Zugriffsrechte erhalten bleiben. Leider werden derzeit Alben und Sets noch nicht mit gesichert, sondern nur der Photostream. Und das Layout ist sehr spartanisch. Aber vielleicht wäre das ein Kandidat um mal mit Bootstrap 2.0 zu spielen und das ganze mal etwas aufzupeppen.

pyp – Python Power at the Prompt – Google Project Hosting. Da ich lieber mit Python als mit awk oder perl rumspiele, ist das hier ein recht interessantes Tool. Man kann damit Textfiles mit ähnlichen Features bearbeiten wie mit awk und perl. Und auch das ganze als Einzeiler – pyp definiert dafür einfach ein paar Variablen und Operatoren, die man verwenden kann. Sieht ganz gut aus.

Gprowl ist ein nettes kleines Script, das einen GMail Account überwacht und Messages schickt, wenn da eine Nachricht im Posteingang auftaucht. Damit kann man sich z.B. Push-Notifications bauen, wenn man Sparrow benutzt (das noch keine Push-Notifications unterstützt). Geht natürlich auch mit forwarding und BoxCar, aber ich will eigentlich nicht meinen Spam weiterleiten an andere Server … (und hey, das Script ist in Python!)

Heroku | Clojure on Heroku. Und noch mehr Lisp. Mit Clojure kann man jetzt auch auf Herok, der Cloud Plattform, arbeiten. Damit eventuell eine Alternative zu zum Beispiel Google App Engine (auf deren Java-Inkarnation läuft Clojure ja auch).

Chrome kann in fünf Minuten geknackt werden | Produkte | futurezone.at: Technology-News. Oy Gevalt! Ich glaube, da müssen jetzt einige Leute ein wenig umdenken. Nein, Sandboxing ist nicht eine garantierte Lösung für Security, das ist bestenfalls ein einzelner Baustein einer kompletten Lösung. Und ja, Programme komplexer zu machen erhöht auch die Komplexität der Sicherheitslage. Und irgendwann gibts dann eben einen Durchmarsch wie hier. (und nein, die anderen Browser sind keinen Deut besser, Chrome galt nur länger als „sicher“ und nach der letzten Pwn2Own wurde er von einigen als „unknackbar“ betrachtet)

Vagrant – Virtualized development for the masses.. Schaut gut aus, man kann sich per  Kommandozeile mal eben eine Entwicklungsumgebung auf Basis von BSD oder Linux aufbauen – und dann damit arbeiten, ohne dass man haufenweise Sachen manuell installiert. Im Prinzip Appliance-Templates, die per Kommandozeilentool installierbar sind. Und als Host werden eine ganze Reihe von Systemen (auch OSX zum Beispiel) angeboten. Also zum Beispiel auch ein sehr einfacher Weg sich mal eben einen LAMP Stack oder ähnliches unter OSX einzurichten.

Hyper-V, virtuelle Maschinen, Laufwerksbuchstaben, Wahnsinn, Microsoft

Jupp, die obige Kombination ist echt nicht toll. Szenario: Hyper-V Maschine, mehrere virtuelle Maschinen, einige davon mit Snapshots, diverse sehr lange laufende Installationen und viel Arbeit in diesen Maschinen. Neue Maschinen anlegen passiert auf Basis vorhandener Images, die mit sysprep … Weiterlesen

Am Rande notiert ...

Deutsche Tastaturbelegung unter Parallels, VMWare, BootCamp und VirtualBox – Info – Schirmacher. Weil ich es gerade brauchte – damit werden die Sonderzeichen die man bei der Programmierung ja nun doch öfter mal braucht auf Mac-ähnlichere Tasten gelegt. Nicht perfekt, aber deutlich besser als die Standard-PC-Belegung, denn da das MacBook in der Regel keine Kennzeichnungen dieser Spezialzeichen hat, sucht man sich sonst den Wolf.