Family killed by Ninjas – Need money for Karate lessons
Tutorials
Samsung Galaxy i7500+HTC Hero Sense ROM Tutorial
26. Dez
Einleitung
Heute, am ersten Weihnachtstag, hatte ich mal genug Muße, mein Samsung Galaxy i7500 von der Original-Software auf eine andere Firmware zu flashen. Weiter unten gibt es nun eine Anleitung, die zwar bei mir funktioniert hat, aber nur zu Ansichtszwecken veröffentlicht wird. Ich übernehme also keine Haftung für eventuell entstehende Schäden am Telefon!
Anleitung
Vorgehensweise
- Download der benötigten Software
- Installation des Android Developer SDKs
- Flashen des Recovery-Image
- Flashen der Firmware
Download der benötigten Software
Ich habe die Prozedur unter Ubuntu 9.10 i386 ausgeführt. Folgende Dateien benötigt man dazu:
- Android SDK für Linux von http://developer.android.com/sdk/download.html?v=android-sdk_r04-linux_86.tgz
- Ersatz für die ADB-Binary: http://floe.butterbrot.org/external/adb.gz
- Fastboot von http://android-dls.com/files/linux/fastboot
- Root/recovery image 4.4 von http://forum.hdblog.it/showthread.php?t=3995 (vorher registrieren)
- GalaxHero ROM von http://forum.hdblog.it/showthread.php?t=5348
- Originale II5-Firmware von Samsung; etwas selber suchen, z.B. hier: http://www.android-hilfe.de/root-hacking-modding-fuer-samsung-galaxy/6010-fuer-profis-updates-customroms-fuer-galaxy-mit-odin-mulit-downloader-einspielen.html)
- ION-Update von http://developer.htc.com/google-io-device.html
Installation des Android Developer SDKs
Da das Samsung Galaxy nicht sofort von der Android Developer Bridge (adb) erkannt wird, muss erst eine udev-Regel erstellt warden mit folgendem Inhalt:
“SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"”
Anschließend sollte der udev-Daemon einmal neugestartet werden.
Das Android SDK muss irgendwo entpackt werden und im Ordner “tools” (den man bequem in den PATH kann) sollte adb durch die neu heruntergeladene ersetzt werden. Der Befehl “sudo adb devices” müsste jetzt das Samsung Galaxy anzeigen.
Flashen des Recovery-Image
Nun kann es losgehen: Entpackt das Recovery-Image in einen Ordner eurer Wahl und navigiert über die Shell dorthin.
Nun bootet mit gleichzeitigem gedrückt Halten der Anruf- und Powerbuttons das Samsung in den Recovery-Modus, einmal dort angekommen, kann man mit dem Befehl “fastboot flash recovery recovery.img” den ersten Schritt tun. Ist dieser Vorgang abgeschlossen, geht es mit “adb push RECTOOLS.tar.gz /sdcard/” weiter, dieser Vorgang sollte mal zweimaligen OKAY quittiert werden.
“adb shell sync” und “adb shell reboot recovery” sind die abschließenden Arbeiten, welche das neu geflashte Recovery-System booten.
Flashen der Firmware
Jetzt gehts ans Eingemachte: Das Ersetzen der Original-Firmware. Zuallererst sollte man im Menü des Recovery-Systems mit nandroid ein komplettes Backup seines Telefons machen, falls später etwas schief geht.
Weiter gehts mit entpacken GalaxHero-Firmware und umbenennen der folgenden Dateien:
- Die Original-Firmware von Samsung: Neuer Name ist II5.tar
- Das ION-Update: Neuer Name ist HTC.zip
Danach sollen alle Dateien mit den folgenden Befehlen auf das Handy übertragen werden:
- GalaxHero Firmware: adb push update.zip /sdcard/
- Samsung Original-Firmware: adb push II5.tar /sdcard/
- ION-Update: adb push HTC.zip /sdcard/
Sind diese Schritte durchgeführt worden, kann man über das Recovery-Menü im Telefon folgende Schritte durchführen:
- Flashen mit der update.zip
- Restore der G.Apps
- Restore der libhgl
Anschließend sollte über das Menu neugestartet werden, der erste Boot dauert erfahrungsgemäß ein bisschen länger, da die Anwendungen initialisiert warden müssen. Viel Spaß!
Quellen
Diese Anleitung ist eine Zusammenstellung aus der hervorragenden Vorleistung der Jungs bei hdblog.it, welche sowohl das Recovery-Image, als auch die GalaxHero-Firmware bereitstellen.
Original-Link zum Flashen des Recovery Image:
http://forum.hdblog.it/showthread.php?t=3995
Original-Link zum Flashen der Firmware:
http://forum.hdblog.it/showthread.php?t=5348
Original-Link zum deutschen Root-Howto:
http://www.receptorblog.com/wordpress/german-howto-root-fur-das-samsung-galaxy
SEO-friendly URLs in PHP (5) w/o mod_rewrite
08. Jul
I showed Sebastian my little SEO-friendly PHP example, so why shouldn’t I share it with you people?
Many of you know one or more PHP frameworks like Zend, CakePHP or Symfony which provide SEO-friendy URLs via so called routing functions. Routing it is, because there is a centralized object instance, which delegates function calls to the appropiate class. Implementing this is quite easy with PHP 5 which provides autoloading of classes and (due to its typeless language structure) function loading on demand via “string” variables.
Lets start with a simple class named booking:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php class booking { private $params; function __construct($params) { $this->params = $params; echo 'Constructor of class booking. <br />'; } function sayHello() { echo 'Hello World in class booking. <br />'; echo var_dump($this->params); } } ?> |
The real logic takes place in the class router, which explodes the request uri and resolves the classes/methods we want to call:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <?php class router { private $origUrl; private $controller; private $action; private $params; public function __construct($origUrl) { $this->origUrl = $origUrl; $this->extractController(); } private function extractController() { $urlParts = explode('index.php', $this->origUrl); $mvcParts = explode('/', $urlParts[1]); $this->controller = $mvcParts[1]; $this->action = $mvcParts[2]; $this->params = $mvcParts[3]; } public function connect() { $controller = $this->controller; $action = $this->action; $params = $this->params; if (class_exists($controller, true)) { $controllerInstance = new $controller($params); } else { throw new Exception('There was no controller named ' . $controller); } if (method_exists($controllerInstance, $action)) { $controllerInstance->$action(); } else { throw new Exception('There was no action named ' . $action); } } } ?> |
This is our index.php which instantiates the router object:
1 2 3 4 5 6 7 | <?php require_once('config.inc.php'); $router = new router($_SERVER['REQUEST_URI']); $router->connect(); ?> |
And a config.inc.php, which extends our include path for classes and defines the required autoload function:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . DIRECTORY_SEPARATOR . 'classes'); function __autoload($class_name) { require_once $class_name . '.php'; } ?> |
A call of index.php/booking/sayHello/123456 will result in the following output:
Constructor of class booking.
Hello World in class booking.
123456
Further explanation needed? Comment please
PS: Attached example files as zip.
PPS: This is no production code!
ShutDownListener in Java
29. Apr
Manchmal ist es in Java vernünftig, eine Art Destruktor zu schreiben, der z.B. permanent geöffnete Datenbank- oder Netzwerkverbindungen beendet. Dies kann man über einen sogenannten ShutdownHook in der Java Virtual Machine realisieren:
Runtime.getRuntime().addShutdownHook(new ShutdownHook());
public class ShutdownHook extends Thread { public void run() { // TODO: Implement } }
Nachtrag: Irgendwie will mein wp-syntax keine Zeilenumbrüche machen.
Die Geburt der Rubrik “Tutorials für J2EE”
11. Okt
Da ich mich in letzter Zeit privat stärker mit J2EE-Themen auseinandersetze, möchte ich in meinem Blog in Zukunft auch einige Sachen präsentieren. Deshalb werde ich in Kürze ein kleines Tutorial zur Datenbank-Verwendung mit Hibernate in Java veröffentlichen.
Nachtrag: Leider verschiebt sich die Veröffentlichung des Tutorials etwas, da ich gestern auf einen Fehler gestoßen bin, dem ich erst noch auf den Grund gehen muss.





Letzte Kommentare