<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
>
<channel>
	<title>pberndt.com: News &amp; Blog</title>
	<link>http://www.pberndt.com/index.html</link>
	<description>Summary of index.html</description>
	<pubDate>Fri, 09 Jul 2010 22:04:53 +0000</pubDate>
	<language>de</language>
	<ttl>2880</ttl>
	<item>
	<title>gCryptMount Update</title>
	<link>http://www.pberndt.com/_Newsdata/gCryptMount-update.html</link>
	<comments>http://www.pberndt.com/_Newsdata/gCryptMount-update.html</comments>
	<description><![CDATA[ 
		<p>
			<img src="_Newsdata/exposeSource.jpg?ct=raw" alt="Quelltext zur News" class="float"/>
			Es gibt wieder einmal ein Update für <a href="/Programme/Linux/gcryptmount/index.html">gCryptMount</a>:
			In der neuen Version wird die neueste stabile Version von <a href="http://code.google.com/p/cryptsetup/">libcryptsetup</a>
			verwendet, außerdem gibt es Unterstützung für <em>luksResume</em>. Wer das noch nicht kennt:
			Seit einigen Versionen können LUKS-Partitionen gesperrt (und der Key aus dem Speicher entfernt) werden, ohne offene
			File-Handles zu beeinträchtigen. Hibernation ist jetzt also endlich trotz verschlüsselter Partitionen halbwegs
			angstlos möglich!
		</p>
		
		 ]]></description>
	</item>
	<item>
	<title>Bejeweled KI</title>
	<link>http://www.pberndt.com/_Newsdata/bejeweled_ai.html</link>
	<comments>http://www.pberndt.com/_Newsdata/bejeweled_ai.html</comments>
	<description><![CDATA[ 
		<p>
			<img src="_Newsdata/bejeweled.jpg?ct=raw" alt="Bejeweled" class="float" />
			Ich habe vor Ewigkeiten mal zum Einarbeiten in .NET ein C#-Programm
			geschrieben, dass Minesweeper gelöst hat. Damals war ich begeistert,
			dass das in der Microsoft-Sprache in unter 200 Zeilen Code machbar war
			und wirklich super funktionierte. Das in Linux mit Mines auszuprobieren
			wäre zu langweilig, also habe ich das erst mal gelassen.
			Nachdem Slashdot nun heute berichtete, dass <a
			href="http://games.slashdot.org/story/10/05/01/1340259/Man-Spends-2200-Hours-Defeating-Bejeweled-2">ein
			Mann die Maximalpunktzahl in Bejeweled erreicht hat</a>, hatte ich endlich einen Vorwand,
			mal wieder zu scripten ;-)
		</p>
		<p>
			<a
			href="http://www.spielaffe.de/Spiel/Bejeweled_2_PopCap">Bejeweled</a>
			ist ein typisches Gem-Sammel-Spiel. Hier muss man Steine gegeneinander
			austauschen, sodass Dreier entstehen. Austauschen darf man allerdings nur,
			wenn dadurch Punkte gemacht werden. Meine KI ist bislang sehr simpel:
			Per GTK mache ich einen Screenshot, suche darin nach dem Spielfeld, versuche,
			die Steine zu erkennen und simuliere dann den erstbesten möglichen
			Spielzug mithilfe von <a
			href="http://www.semicomplete.com/projects/xdotool/">xdotool</a> die
			entsprechenden Mausklicks. (Ich weiß, das geht auch per Xlib. Aber
			Xlib-Programmierung ist eine Qual..)
			Bislang sieht das Resultat so aus:
		</p>
		<div style="text-align: center" id="news_15_vid">
			<a href="http://www.youtube.com/watch?v=ePKS9NwPEDM">Zum Video</a>
		</div>
		
		<p>
			Dafür, wie naiv das bisher ist, meiner Meinung nach erstaunlich gut. :-) <a href="_Newsdata/solve-bejeweled.py">Zum Script</a>.
		</p>
		
		 ]]></description>
	</item>
	<item>
	<title>Huawei-Modem von O2 und Linux</title>
	<link>http://www.pberndt.com/_Newsdata/huawei-o2-stick-linux.html</link>
	<comments>http://www.pberndt.com/_Newsdata/huawei-o2-stick-linux.html</comments>
	<description><![CDATA[ 
		<p>
			<img src="_Newsdata/huawei.jpg?ct=raw" alt="Huawei E1550" class="float" />
			Ich habe von Alice einen netten Brief bekommen, dass sie mir einen
			Surfstick von O2 schenken. Das ist natürlich sehr nett, habe ich mir
			gleich abgeholt. Es handelt sich um einen <em>HUAWEI E1550</em> Stick,
			der von Linux als serielles USB-Modem erkannt wird und daher ohne
			weiteres funktioniert. Im Network-Manager von Ubuntu ist allerdings ein
			falscher APN voreingestellt (es geht auch mit dem, der voreingestellt ist,
			aber das kann dann natürlich mehr kosten) - der richtige ist <em>pinternet.interkom.de</em>.
		</p>
		<p>
			Dummerweise gibt es für <em>Linux</em> keine mitgelieferte Software, die das
			<em>Aufladen</em> der Prepaid-Karte erlauben würde. Überhaupt: Das einzige Softwareprojekt,
			das in die Richtung geht, heißt <a href="http://mwconn.m.i24.cc/">ixconn</a>, ist
			aber nicht Open-Source (aber Freeware) und mir daher suspekt ;-) Die
			Windowssoftware funktioniert in VirtualBox leider nur willkürlich -
			meistens eher nicht - mit nicht nachvollziehbarem Grund für das
			Verweigern der Aktivität.
		</p>
		<p>
			Ich wusste noch von meinem alten Handy, dass das Aufladen meist über eine Service-Nummer
			funktioniert. Das muss doch auch irgendwie per serieller Konsole gehen... die Windows-Software,
			VirtualBox und WireShark (das kann mittlerweile USB mitschneiden, sehr nett) haben
			zusammen ergeben, dass es um <em>AT+CUSD</em>-Befehle geht. Das
			Huawei-Modem kodiert die Nummern in einem bestimmten Code, <em>PDU</em>
			genannt, zu dem ich nach einiger Zeit eine <a
			href="http://www.nobbi.com/sms_pdu.html">tolle Anleitung</a> gefunden habe.
		</p>
		<p>
			Daraus und mithilfe von <a href="http://www.prepaid-wiki.de/index.php5?title=O2">einer
			ausführlichen Liste von Befehlen</a> habe ich ein kleines Programm geschrieben,
			dass per CUSD den Kontostand abfragen und aufladen kann. Dank einer
			<a href="http://www.developershome.com/sms/howToSendSMSFromPC.asp">Hilfe auf
			Developershome.com</a> kann das Programm auch empfangene SMS lesen.
		</p>
		<p>
			Wie (fast) immer bei meinen Scripts braucht man zur Ausführung Python, PyGTK und diesmal
			auch <a href="http://pyserial.sourceforge.net/">PySerial</a>. Zum Download geht
			es <a href="_Newsdata/recharge-o2-huawei-linux.py">hier</a>.
		</p>
		<p>
			Damit macht unterwegs surfen nun richtig Spaß :-) Danke an Alice und O2 für das nette
			Geschenk. Und an die Ersteller der verlinkten Seiten für das Abnehmen von viel
			Arbeit beim Reverse Engineering.
		</p>
		
		 ]]></description>
	</item>
	<item>
	<title>pdfshrink</title>
	<link>http://www.pberndt.com/_Newsdata/pdfshrink.html</link>
	<comments>http://www.pberndt.com/_Newsdata/pdfshrink.html</comments>
	<description><![CDATA[ 
		<p>
			<img src="_Newsdata/python.jpg?ct=raw" alt="Python" class="float"/>
			Wie immer am Semesterende kommen die sinnvollen Ideen. <a
			href="/Programme/Linux/Scripte/pdfshrink">pdfshrink</a> entfernt aus
			einer PDF-Datei Seitenumbrüche. Das braucht man nicht oft, aber
			wenn man's braucht, fehlt's.
		</p>
		<p>
			Usecase in meinem Fall: Alle Übungszettel von einem Semester auf einmal
			ausdrucken. Da die meistens nur eine Viertelseite lang sind, wäre
			das sonst Platzverschwendung.
		</p>
		<p>
			Tradeoff ist, dass ich die PDFs rasterisiere. Achja: In Python geschrieben,
			braucht PIL, ImageMagick und das pdftk.
		</p>
		
		 ]]></description>
	</item>
</channel>
</rss>
