Bestehendes Subversion Repository in Google Code importieren

Möchte man ein bestehendes Subversion Repository ín Google Code importieren so geht muss man im ersten Schritt auf seine Google Code Seite dort dann auf Source -> Browser und unten dann auf „reset this repository“ und dort klickt man dann den Punkt „Did you just start this project and do you want to ’svnsync‘ content from an existing repository into this project?“ an.

Danach ist das Repository auf Revision 0 zurückgesetzt worden. Nun wird in der Konsole mittels

svnsync init –username YOURUSERNAME https://YOURPROJECT.googlecode.com/svn file:///path/to/localrepos

das Projekt initialisiert und mittels

svnsync sync –username YOURUSERNAME https://YOURPROJECT.googlecode.com/svn

die Synchronisation begonnen werden. Das ganze kann dabei durchaus ein paar Stunden dauern. Ausgefüllt sieht das ganze dann z.B. so aus:

svnsync init –username seeseekey https://invertika.googlecode.com/svn https://invertika.svn.sourceforge.net/svnroot/invertika

svnsync sync –username seeseekey https://invertika.googlecode.com/svn

Sollte die Synchronisation zwischendurch unterbrochen werden so ist das kein Problem da sie jederzeit wieder gestartet werden kann und bei der letzten synchronisierten Revision anfängt.

Mono und resgen2

Da ich privat wie beruflich die meiste Zeit in C# programmiere ist der Umstieg dank Mono nicht all zu schwer gefallen. Gestern wollte ich dann mal meine Projekte unter Mono kompilieren und wurde dabei auf einen Fehler beim kompilieren einer resx Datei hingewiesen. Es fehlte wohl die Anwendung resgen2. Glückerlichweise lässt sich er Fehler schnell durch die Installation einiger Pakete beheben:

sudo apt-get install mono-gmcs mono-mcs mono-2.0-devel

Neben diesen Paketen sind für die Monoentwicklung außerdem noch folgende Pakete:

sudo apt-get install monodoc-browser monodevelop monodevelop-versioncontrol

von Interesse.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Mono-Projekt
http://de.wikipedia.org/wiki/MonoDevelop

Android Entwicklung unter Ubuntu/Kubuntu

Der erste Schritt um für Android Entwicklung auf einem Ubuntu System zu betreiben ist eine IDE. Dazu wird das Paket eclipse installiert. Danach sollte das Android SDK für Linux unter http://developer.android.com/sdk/index.html heruntergeladen werden und auf der Festplatte entpackt werden.

Dann geht es in den Ordner tools des SDKs und dort wird dann

./android update sdk

ausgeführt. Sollte das fehlschlagen hilft es die Datei ~/.android/androidtool.cfg zu erstellen und dort folgendes hineinzuschreiben

sdkman.force.http=true

Danach sollte der Updatevorgang erneut angestoßen werden.

Beim ersten Start erscheint ein Begrüßungsbildschirm den man schließen kann. Danach sollte man unter Help -> Install new Software die Android Development Tools installieren. Dazu wird in dem sich öffnenden Dialog die URL http://dl-ssl.google.com/android/eclipse/ eingegeben und durch einen Druck auf den Add Site… Button hinzugefügt. Dann klicken wir die Checkboxen für Android Development Tools und Android DDMS an und betätigen dann die Installation mit dem Install… Button. Mittels eines Assistenten wird man nun durch die Installation geleitet. Nachdem die Installation beendet ist empfiehlt Eclipse einen Neustart der Umgebung. Diesem sollte Wunsch sollte man Folge leisten.

Sollte bei der Installation ein Fehler auftreten welcher in etwa so aussieht:

Cannot complete the install because one or more required items could not be found.
Software being installed: Android Development Tools 0.9.4.v200910220141-17704 (com.android.ide.eclipse.adt.feature.group 0.9.4.v200910220141-17704)
Missing requirement: Android Development Tools 0.9.4.v200910220141-17704 (com.android.ide.eclipse.adt.feature.group 0.9.4.v200910220141-17704) requires ‚org.eclipse.gef 0.0.0‘ but it could not be found

sollte die Seite http://download.eclipse.org/releases/galileo/ hinzugefügt werden und bei Work With –All Available Sites– stehen. Wenn das eingestellt ist, kann die Installation ein weiteres Mal in Angriff genommen werden.

Nun benötigt Eclipse die Information wo das Android SDK sich auf der Festplatte befindet. Dazu geht man auf Window -> Preferences -> Android. Dort wählt man den Pfad des Android SDKs aus und bestätigt den Dialog mit OK.

Die grundlegende Konfigurationsarbeit ist damit geleistet. Nun kann mit dem ersten Projekt begonnen werden. Dazu gehen wir auf File -> New -> Project und wählen dort das Android Project aus und klicken dann auf Next. In dem darauffolgenden Dialog geben wir dem Projekt einen Namen z.B. Hello World. Im Feld Package Name geben wir den Namen des Package an z.B. net.seeseekey.hello_world und bei Activity name z.B. hello_world und bei Application name z.B. Hello World und bestätigen das ganze mit dem Finish Button.

Danach wird automatisch das Grundgerüst für eine Android Applikation erzeugt. Sollte es beim Erzeugen der Anwendung der Fehler

Project ‚RuntimeAndroid‘ is missing required source folder ‚gen‘
The project cannot be built until build errors are resolved

auftreten so hilft es die R.java Datei zu löschen. Sie wird danach automatisch neu erzeugt. Auch ein Cleanen des Projektes wirkt manchmal Wunder :)

Wenn wir nun auf den grünen Play Knopf (Run) in der Symbolleiste klicken so startet Eclipse das Programm im Android Emulator. Beim ersten Start sollte allerdings ein Dialog erscheinen welcher einem anbietet ein virtuelles Gerät für den Emulator anzulegen. Nachdem dies geschehen ist, wird das Hello World Programm im Emulator geladen und ausgeführt. Und schon ist das erste Hello World Programm geschrieben :)

ChronoTweet 0.30

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
# https://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)

ChronoTweet 0.20

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
# https://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)