flexiabler Titel Rotating Header Image

Webentwicklung

flexilog Oktober

In unregelmäßigen Abständen beschreibe ich in der Kategorie “FlexiLog” meine Siege über die Technik, Computer und die Matrix.
Die Lösungen und Gedanken möchte ich für mich – aber auch für alle anderen – dokumentieren.
Ich hoffe, es hilft jemandem! Ich freue mich aber auch über Kommentare oder Tipps.

Calibre Magazin/Website Autodownload (The Evil Methode)

Calibre ist ein eBook Verwaltungs Programm das durch seine zahlreichen “Grabber Recipies” auch den Download von Webseiten insbesondere von News Magazinen bekannt ist.

Bis vor kurzem habe ich das Grabben der Webseiten noch manuell in Calibre angestoßen, noch dazu musst ich mein Kindle per USB anschließen und so das konvertierte Mobi File übertragen. Viel zu umständlich, soll sich doch mein Homeserver darum kümmern:

Erste Voraussetzung ist die Installation des Calibre Severs, die Binary Version reicht hierfür völlig aus.

Per Cron starte ich nun in der Nacht den Download, das konvertieren und das hinzufügen zur Calibre Datenbank:

#Spiegel_online                                                                                                                                       
/home/thilo/calibre/calibredb list -s 'authors:=SPON' --with-library /home/thilo/calibre_library/ > ids.txt                                                       
/home/thilo/scripts/clean.py                                                                                                                                
/home/thilo/calibre/calibredb remove $(cat del_id.txt) --with-library /home/thilo/calibre_library                                                                 
/home/thilo/calibre/ebook-convert /home/thilo/scripts/calibre_recipes/Spiegel_Online.recipe /home/thilo/scripts/calibre_output/Spiegel_Online.mobi --output-profile kind
le --authors "SPON" --title "Spiegel Online" --tags "autodownload"                                                                                    
/home/thilo/calibre/calibredb add -d --with-library /home/thilo/calibre_library /home/thilo/calibre_output/Spiegel_Online.mobi

Die erste Zeile durchsucht die Library nach dem authors = SPON und schreibt die ID des Eintrags in die Datei ids.txt. Eigentlich wollte ich die ganze Prozedur so einfach wie möglich nur per Linux Shell abfackeln, es ist jedoch ein Python Script nötig, jedenfalls mit meinem Know-How (Verbesserungen sind gern willkommen, awk?):

#!/usr/bin/python
f = open("ids.txt","r")
text = f.readlines()[1].split(" ")
w = open("del_id.txt","w")
w.write(text[0])
w.close

Das Python Script extrahiert aus der ids.txt das zu löschende File und schreibt es in die del_id.txt. Der Cron-Befehl des in Zeile 3 kann nun die veraltete Ausgabe löschen. In Zeile 4 wird nun das Spiegel Online Recipe gestartet, welches die Webseite nach Artikeln durchsucht und absaugt. Als Output entsteht eine Spiegel_Online.mobi. Zeile 5 fügt dieses File der Calibre Datenbank hinzu.

Um vom Kindle auf meine Library zugreifen zu können habe ich mir den Calibre-PHP Content Server installiert, per Webbrowser lade ich mir so die neusten Ausgaben direkt auf mein Kindle.

Die Calibre Recipes kann man sich aus dem Programm selber holen. Über das Recipe Forum kommt man oft auch an neuere Versionen. Ich kann folgende Seiten empfehlen:

  • Spiegel Online
  • Telepolis
  • The Economist
  • Brand_Eins
  • Wired_Magazine

One more thing:

In Zuge der Calibre Server Installation  habe ich meine schon existierende Libary auf meinen Homeserver kopiert und greife nun per Samba Freigabe drauf zu. Der so installierte Calibre Server und mein Calibre Client auf dem Mac nutzen so eine gemeinsame Library.

Tunneln von SSH durch HTTPS

Viele größere Unternehmen setzen Proxys und Firewall ein um brave Entwickler zu ärgern :) Alles außer die Webports 80 und 443 sind gesperrt.

Um trotzdem an z.B. GitHub teilnehmen zu können, benötigt man unter  Linux Corkscrew sowie diese Eintragung in der “.ssh/config”:

Host github.com
  User git
  HostName ssh.github.com
  Port 443
  ProxyCommand /path/to/corkscrew proxy.host  proxy.port %h %p
  IdentityFile path/to/the/ocrrect/ssh.key

Quellen:

Access GitHub repositories from work (take that, firewall!)

Corkscrew: So tunnelt man SSH durch HTTP-Proxies

Update 27.2.2012

SSH TimeOuts umgehen

AES encryption mit Python und PyCrypto

Vor Kurzem beschäftigte ich mich mit der Verschlüsselung von Strings in Python, anbei einige Links und Bemerkungen:

Gute Dokumentationen war schwer zu finden:

PKCS7 padding code Methode:

(Füllt ein String auf damit er ein vielfaches der Block Größe ist)

Using Encrypted Data Between Python and Silverlight

Umfangreiche Erklärungen und Beispiel Code:

AES encryption of files in Python with PyCrypto

Kompaktere Anleitung mit Code:

AES Encryption in Python Using PyCrypto

Mein Code:

link = <Some String>
iv = ''.join(chr(random.randint(0, 0xFF)) for i in range(16))
encoder = PKCS7Encoder()
# pad the plain text according to PKCS7
pad_text = encoder.encode(link)
aes = AES.new(secstring, AES.MODE_CBC, iv )
ciphertext = aes.encrypt(pad_text)
sec_link = "    bgbw" + iv + ciphertext
b64encoded = base64.b64encode(sec_link)
urlencoded = urllib.quote(b64encoded)

flexiLog July

In unregelmäßigen Abständen beschreibe ich in der Kategorie “FlexiLog” meine Siege über die Technik, Computer und die Matrix.
Die Lösungen und Gedanken möchte ich für mich – aber auch für alle anderen – dokumentieren.
Ich hoffe, es hilft jemandem! Ich freue mich aber auch über Kommentare oder Tipps.

Truecrypt 7 mit Debian 6 Squeeze

Nach dem Update auf Debian 6 bekam ich beim versuch meine Truecrypt Container zu mounten diese Fehlermeldung:

Error: Kernel cryptographic service test failed. The cryptographic service of your kernel most likely does not support volumes larger than 2 TB.

Erst durch das mounten mit dem Parameter  “- nokernelcrypt” verschwand dieser Fehler. Leider wird dadurch der Zugriff auf den Truecrypt Container sehr langsam und es können wohl auch Schreib/Lese -Fehler auftreten.

Das Problem kann gelöst werden indem man auf einen Kernel höher als 2.6.38 updated. Damit lassen sich dann auch Container größer als 2 TB erstellen.

Quellen:
http://forum.ubuntuusers.de/topic/ubuntu-kernel-bug/#post-2505980

http://debianforum.de/forum/viewtopic.php?f=33&t=122202&sid=ea4bcb5edb62963d3ebd6373321f8c8f

Subsonic reagiert langsamer nach Update auf Debian 6 Squezze

Da ich Subsonic täglich nutze ist mir die schlechtere Performance nach dem Debian Update sofort aufgefallen.

Das Debian Update wechselt auf das freie OpenJDK, dies ist jedoch langsamer als das JDK von Sun.

Die Installation von “sun-java6-jdk beschleunigt Subsonic wieder:

apt-get install sun-java6-jdk
update-java-alternatives -s java-6-sun

Quellen:
http://wiki.debian.org/Java
http://www.debian.org/doc/manuals/debian-java-faq/ch4.html

Akku Reset HTC Desire

Falls Euer HTC Desire schon bei einem Akku Stand von 20% ausgeht. Ist es Zeit für ein Battery Stats Reset:

1) Schritt: Den Akku bei eingeschaltetem Gerät vollständig laden bis die grüne LED leuchtet.

2) Schritt: Das Ladekabel abziehen und das Gerät dann ausschalten.

3) Schritt:  Das Ladekabel wieder anschließen und das Gerät im ausgeschaltetem Zustand wieder bis zur grünen LED laden.

4) Schritt: Das Ladekabel nun wieder abziehen und in das Recovery System booten.

5) Schritt: Dort navigiert ihr zu advanced -> Wipe Battery Stats

6) Schritt: Das Gerät neustarten und ganz normal benutzen.

Plone and TinyMCE

Wer in Plone 3 den TinyMCE als WYSIWYG Editor nutzt, sollte dies beachten:

Use version 1.1.9 for Plone 3 and 4.0. Products.TinyMCE 1.2.x is for Plone 4.1

 Plone und Solr

Um Solr in Plone einzubinden gibt es zwei Addons:
alm.solrindex und collective.solr

Für jeden der sich mit diesem Thema beschäftigt sollte dies gelesen habe:

Subversion global-ignores für SVN Projekte

Da ich es mir jetzt schon das zweite mal raus suchen musste, schreib ich es mir nun ein letztes mal in mein WebDing!

Unnötige python, macos, egg und eclipse Dateien kann man am Besten per “global-ignores” ignorieren:

global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store *.egg-info *.pyc *.pyo .project .pydevproject

Diese Zeile einfach in die Subversion Config im Home Verzeichnis einfügen (Windows: \Subversion\config, Linux ~\.subversion\config).

Achtung: Schon in SVN eingecheckte Dateien werden von global-ignores nicht beachtet. Diese aus dem SVN wieder löschen.

[Update 11.10.10]

Für VIM User ist noch das excluden der *.swp Dateien wichtig:

global-ignores = *.o *.lo *.swp *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store *.egg-info *.pyc *.pyo .project .pydevproject

[Update 11.11.10]

Um auch kompilierte *.po Dateien auszuschließen (http://tinyurl.com/24j3jff):

global-ignores = *.mo *.o *.lo *.swp *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store *.egg-info *.pyc *.pyo .project .pydevproject
http://tinyurl.com/24j3jff

Finde ich sensationell super: flattr.com !

Es ist der wirkliche “Gefällt mir” / “I like” Button!

Ich bin dafür, dass flattr toll wird!

Ich denke, das ist der richtige Weg!

Lobenswerte Idee.

Ich habe mich heute bei flattr.com vom The Pirate Bay Mitbegründer (Peter Sunde, den ich super sensationell finde) angemeldet.

Wer noch nie von flattr gehört hat, sollte sich dieses Video anschauen:

Mehr Erklärungen gibt es bei Wikipedia (würde ich jetzt auch gern flattrn) und bei Spiegel Online!

Anfangs werde ich jeden Monat 5 Euro verteilen. Bisher habe ich ein Anteil an Tim Pritlove vom Chaosradio Express Podcast abgetreten, er hat es verdient, seine Sendung finde ich super sensationell :)

Ich glaube nicht, dass jemand meine geistigen Ergüsse flattrt, aber die Sache muss unterstützt und verbreitet werden, deshalb haben jetzt auch alle meine Artikel einen flattr Button.

Noch ist flattr.com in der geschlossenen Beta, wer möchte, kann sich aber bei mir melde, ich habe noch 3 Invites.

Erstellen von Python Eggs per setuptools (in 3 Minuten)

Hier wird beschrieben welche Schritte zum Erstellen eines neuen Python Eggs oder einer neuen Version notwendig sind.

Generierung von *.egg Files aus Development Eggs (meist im /src Ordner)

  1. In setup.py und profiles/default/metadata.xml die Version erhöhen.
  2. Im docs/ Verzeichnis die HISTORY.txt aktualisieren. Um Versionsnummer erweitern und die Änderungen vermerken.
  3. Mögliche Anpassungen in der README.txt oder docs/INSTALL.txt vornehmen.
  4. Im Egg-Verzeichnis z.B: flex.plonetheme/ diesen Befehl ausführen:
  5. python setup.py bdist_egg
  6. Im dist/ Verzeichnis befindet sich das automatisch erstellte Egg.

Weitere Infomationen

Detailierte Versionsinformationen

Über die Datei setup.cfg können weitere Versionseigenschaften gesteuert werden.

Z.B:

[egg_info]
tag_build = dev
tag_svn_revision = true

Hier bekommt das Egg diesen Namen “flex.plonetheme-0.9.9dev_r584-py2.4.egg”. Es wird ein “dev” sowie die SVN Revision angehängt. Löscht man die setup.cfg wir ein Produktiv-Egg erstellt (flex.plonetheme-0.9.9-py2.4.egg).

Versionen und Buildout

Buildout versucht immer das aktuellste Egg zu holen. Höhere Versionen haben Vorrang!

Verweise

http://log.onthebrink.de/2008/02/python-egg-fun.html

http://ianbicking.org/docs/setuptools-presentation/

Choose a better programming font

Dank dem Blog post bei Hivelogic habe ich eine neue Lieblings-Programmier-Schriftart: Deja Vu Sans Mono

Der Beitag Top 10 Programming Fonts stellt noch weitere Schriftarten vor und ein Update mit einer weiteren freien Schriftart gibt es auch schon.

Für die Verwaltung/Installation verwende ich den Linotype FontExplorer X, die Version 1.2.3 kann kostenlos runtergeladen werden.

In Eclipse kann man den Font unter

General > Apperance > Color & Font > Basic > Text Font

wechslen.

I ♥ US keyboards, too :)

Mit dem Kauf meines Macs bin ich auch gleich auf eine US Tastatur umgestiegen. Vor allem beim Programmieren macht sich das ergonomischere Layout bezahlt. Man spart sich die Finger-Verrenkungen bei @, {}, [], \, |.
Leider ist es umständlicher an die deutschen Umlaute ranzukommen (ALT + U + uaos). Zum Glück wurde das USGerman Keyboard Layout erfunden :) Dieses mappt die Umlaute auf Option + ouas um, was wesentlich leichter zu erreichen ist.

Alle Infos zur Installation bei der RTWH Aachen.

Gefunden bei philiKON.

Lies es alle 6 Monate – 7 Habits of a Highly Successful Freelance Web Designer

Diesen Blogeintrag (aus dem Jahre 2006) von Andy Budd sollte man sich alle 6 Monate durchlesen:

“I’ve had a few people contact me recently, asking how to make it as a freelance web designer. Rather than answer everybody individually, I thought I’d post my thoughts online. So in my best impression of a self help book, here are my 7 habits of a highly successful freelance web designer.” read more

Stefan Nitzsche hat es ins deutsche übesetzt.

Kosten: Amazon Cloud Instance mit Plone / Monat

Testweise habe ich vor einigen Monaten drei meiner Plone Instancen in die Amazon Cloud gebeamt.

Das Preis/Leistungsverhältnis stimmt leider “noch” nicht:

Amazon AWS Abrechnung

Für März habe ich $ 95,34 bezahlt. Dort ist wenig bis kein Traffic eingerechnet. Außerdem kein S3 Speicherplatz und nur eine small-Instance.

aws_creditcard_balance

Meine Kreditkartengesellschaft hat mir 73,96 Euro abgezogen. Dafür bekomme ich anderswo einen ausgewachsenen Root-Server.

Cloud-Fazit: Noch ziemlich teuer, aber nutzbar. Es gab keine Downtime/Probleme. Die Bedienung ist dank ElasticFox sehr einfach. Für Plone reicht eine small-Instance jedoch nicht. Trotzdem fühlt sich alles sehr sexy an und es macht Spass mit Linux-Instance und “unbegrenzten” Speicherplatz zu spielen!

Mein einzigster Typo3 Blogpost, versprochen!

“Wenn man ein CMS will dann nimmt man Typo3. Wenn man ein ordentliches CMS will dann nimmt man was anderes!”

(oder Plone ;) )

Edit: Dies ist mein fünfstigster (50!) Blogpost. Das ist wieder ein Applaus wert. (Vorsicht: Immer aufwärmen!)