seeseekey.net - Invictus Deus Ex Machina

Das Terminal ist geöffnet und ein Befehl wie:

rm -rf img*

soll abgesetzt werden. Nun stellt sich die Frage ob man diesen Befehl wirklich so ausführen möchte. Natürlich könnte es sein, das der Befehl zu weit greift, was dazu führt das man mehr löscht als einem lieb ist. Einen Ausweg aus dieser Misere bietet das in Python geschriebene Tool maybe. Installiert werden kann dieses auf der Konsole mittels:

pip install maybe

Führt man nun ein Skript mittels maybe aus:

maybe test.sh

so ermittelt maybe, welche Operationen das Skript vornehmen möchte und zeigt diese an. Nach einer Bestätigung kann der Befehl anschließend ausgeführt werden. Technisch funktioniert das ganze dabei indem der Prozess unter der Kontrolle von ptrace ausgeführt wird. Hierbei werden allerdings nur einige Systemaufrufe blockiert, so das man maybe nur mit Skripten nutzen sollte, welchen man vertraut. Der Quelltext von maybe ist auf GitHub zu finden. Lizenziert ist das Tool unter der GPL in Version 3 und damit freie Software.

Kreativität treibt manchmal seltsamem Blüten – wie sonst würde man auf die Idee kommen ein Skript zu schreiben, welches Buildvorgänge nur dann erlaubt, wenn Planeten im Sonnensystem nicht in einer Reihe stehen.

INFO [dfe36319] Running /usr/bin/env python astro_build.py as lhartikk@188.166.5.240
DEBUG [dfe36319] Command: python astro_build.py
DEBUG [dfe36319]BUILD FAILED
DEBUG [dfe36319]PLANETS ALIGNED: ['Mercury', 'Jupiter']
DEBUG [dfe36319]ALIGNMENT: 149 degrees
(Backtrace restricted to imported tasks)
cap aborted!

Genau für diesen Zweck wurde das Python-Skript AstroBuild geschrieben, welches auf GitHub zu finden ist. Lizenziert ist es unter der Apache Lizenz und damit freie Software.

Bei Tweepy handelt es sich um eine freie unter der MIT-Lizenz lizenzierte Twitterbibliothek für Python, deren offizielle Webseite unter tweepy.org zu finden ist. Unter anderem wird diese Bibliothek für den Twitter Radiergummi genutzt. Im Gegensatz zu früher hat sich die Installation der Bibliothek etwas verändert. Hierfür sollte man jetzt pip nutzen. Dabei handelt es sich um ein Tool zur Paketverwaltung unter Python. Zur Installation gibt man im Terminal folgendes ein:

curl -O https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

Damit ist pip installiert und kann genutzt werden:

sudo pip install tweepy

Pip installiert hiermit die Bibliothek Tweety und löst alle Abhängigkeiten auf, so das diese anschließend systemweit genutzt werden kann.

Wenn eine Software auf den Namen Jasper hört, dann klingt das irgendwie ein bisschen nach Jarvis aus dem Film Iron Man. Und genau dies bietet die Jasper. Die Steuerung des Rechners mittels der Stimme. Dabei bietet Jasper die Möglichkeit auf Kommandos zu reagieren oder informiert den Nutzer wenn bestimmte Ereignisse eingetreten sind.

Technisch setzt Jasper dabei unter anderem auf die Projekte Pocketsphinx und Phonetisaurus auf. Bevorzugt entwickelt wurde Jasper dabei für Rechner wie den Raspberry Pi, wie man im Video sehen kann. Die Autoren der Software sind die Priceton-Studenten Shubhro Saha und Charlie Marsh. Als Programmiersprache kam Python zum Einsatz. Jasper verfügt eine API mit welcher man eigene Erweiterungen für das System schreiben kann.

Jasper ist freie Software und unter der MIT-Lizenz lizenziert. Die offizielle Webseite ist unter jasperproject.github.io zu finden. Auch der Quelltext ist auf GitHub verfügbar.

Es gibt einige Webmail Clients unter freier Lizenz, wie z.B. Roundcube und SquirrelMail. Allerdings wird man feststellen, das die Auswahl nicht sonderlich groß ist. Ein neuer Stern am Webmail-Himmel ist Mailpile welches unter http://www.mailpile.is/ zu finden ist.

mailpile.is

Mailpile orientiert sich dabei vom Interface her an Google Mail, was man auf den ersten Blick erkennt. Es bietet dabei natürlich Dinge wie eine Suche, verschiedene Importfunktionen, Tag-Support, eine Kontaktverwaltung und soll eine integrierte PGP Verschlüsselung und Signierung enthalten. Dadurch wird das ganze Paket wesentlich interessanter, da eine eingebaute Verschlüsslung, die Anwendung für Jedermann enorm vereinfacht.

Für das Hosting benötigt man einen Pythonstack, so das es sich nicht für das normale LAMP Webhosting Paket eignet (es sei denn das P steht für Python). Das ist schade, da dadurch sicherlich der Kreis der Benutzer eingeschränkt ist. Mailpile ist freie Software und steht unter der AGPL. Der Quelltext ist auf Github zu finden. Im Moment wird auf Indiegogo Geld für die weitere Entwicklung des Clients gesammelt. Wem das Projekt also zusagt, sollte die Brieftasche zücken.

Das schöne an zentralen Sammlungen ist das man sie relativ einfach auswerten kann. In diesem Fall geht es um die Auswertung der GitHub Repositories. Wie der Name „Popular Convention“ andeutet geht es darum aus den Quelltexten bestimmte Informationen über bevorzugte Konventionen wie z.B. Leerzeichen vs. Tabs zu extrahieren.

Popular Convention und Scala

Das Ergebnis kann man sich auf der Webseite http://sideeffect.kr/popularconvention/ für die Sprachen Javascript, Java, Python und Scala anschauen. Die Software zur Auswertung ist dabei freie Software und steht unter der MIT Lizenz und kann unter https://github.com/outsideris/popularconvention bezogen werden.

Wer mal schnell einen HTTP Server unter Linux aufsetzen möchte, der sollte einfach in das entsprechende Verzeichnis gehen und dort:

python -m SimpleHTTPServer

ausführen. Anschließend ist dieses Verzeichnis per HTTP (standardmäßig unter Port 8000) erreichbar. Möchte man einen anderen Port benutzen so gibt man einfach die entsprechende Portnummer als letztes Argument mit an.

Weitere Informationen gibt es unter:
http://docs.python.org/library/simplehttpserver.html

ChronoTweet ist ein kleines Pythonskript welches alle Twittereinträge innerhalb einer bestimmten Zeitspanne wieder löscht. Da Twitter nun nur noch Authentifizierung mittels OAuth zulässt, habe ich das ganze mal daran angepasst. Das Skript steht dabei unter der GPLv3 Lizenz und ist in der aktuellen Version unter http://code.google.com/p/seeseekey/source/browse/trunk/Python/chronotweet.py zu finden. Viel Spaß damit 🙂

Aus meinen Bedürfnis heraus bestimmte Tweets nach einer bestimmten Zeit wieder zu löschen entstand folgendes kleines Skript, welches hier nun in der Version 0.30 vorliegt. Es wurde ein Fehler behoben der verhinderte das die Tweets gelöscht werden wenn man zu viele Tweets in der vorgebenden Zeit geschrieben hat:

# ChronoTweet v0.30
# http://seeseekey.net
#
# Installation
# http://pypi.python.org/pypi/simplejson installieren (apt-get install python-simplejson)
# http://code.google.com/p/python-twitter/ installieren
# wget http://python-twitter.googlecode.com/files/python-twitter-0.6.tar.gz
# tar -xf python-twitter-0.6.tar.gz
# cd python-twitter-0.6
# python setup.py build
# python setup.py install
#
# chrono_tweet - Dateirechte 700
# crontab -e

# Import
import time
import twitter

# Optionen
twitter_account_name = "seeseekey"
twitter_account_password = "1234567890"

remove_time_in_seconds = 151200 # 42 Stunden

hashtag_sensitive=False
hashtag="#ChronoTweet"

# Programmlogik
api = twitter.Api(username=twitter_account_name, password=twitter_account_password)
stati = api.GetUserTimeline(twitter_account_name, 9999999)

for s in stati: #Fuer jeden Status
	currentTime = time.mktime(time.localtime(time.time()))
	createTime = s.GetCreatedAtInSeconds()
	diffTime = currentTime-createTime
	
	if diffTime > remove_time_in_seconds: #Wenn Zeit groesser remove_time_in_seconds
	
		if hashtag_sensitive==True:
			if s.text.find(hashtag) != -1: #Wenn ChronoTweet
				print(s.id)
				api.DestroyStatus(s.id)
		else:
			print(s.id)
			api.DestroyStatus(s.id)

Aus meinen Bedürfnis heraus bestimmte Tweets nach einer bestimmten Zeit wieder zu löschen entstand folgendes kleines Skript, welches hier nun in der Version 0.20 vorliegt in welcher man einstellen kann nach welchem Hashtag gesucht werden soll und ob überhaupt nach einem Hashtag gesucht werden soll:

# ChronoTweet v0.20
# http://seeseekey.net
#
# Installation
# http://pypi.python.org/pypi/simplejson installieren (apt-get install python-simplejson)
# http://code.google.com/p/python-twitter/ installieren
# wget http://python-twitter.googlecode.com/files/python-twitter-0.6.tar.gz
# tar -xf python-twitter-0.6.tar.gz
# cd python-twitter-0.6
# python setup.py build
# python setup.py install
#
# chrono_tweet - Dateirechte 700
# crontab -e

# Import
import time
import twitter

# Optionen
twitter_account_name = "seeseekey"
twitter_account_password = "123456789"

remove_time_in_seconds = 151200 # 42 Stunden

hashtag_sensitive=True
hashtag="#ChronoTweet"

# Programmlogik
api = twitter.Api(username=twitter_account_name, password=twitter_account_password)
stati = api.GetUserTimeline(twitter_account_name)

for s in stati: #Fuer jeden Status
	currentTime = time.mktime(time.localtime(time.time()))
	createTime = s.GetCreatedAtInSeconds()
	diffTime = currentTime-createTime
	
	if diffTime > remove_time_in_seconds: #Wenn Zeit groesser remove_time_in_seconds
		if hashtag_sensitive==True:
			if s.text.find(hashtag) != -1: #Wenn ChronoTweet
				print(s.id)
				api.DestroyStatus(s.id)
		else:
			print(s.id)
			api.DestroyStatus(s.id)