Samstag, 11. Juli 2015

Boilerplate-Code für AngularJS Projekte

Kürzlich habe ich wieder mit einem neuen AngularJS-Projekt angefangen. Erneut habe ich als Basis das hervorragende Boilerplate-Projekt von Jake Marsh benutzt. Es enthält so gut wie alles was man braucht, um ein gutes Projekt zu starten: Test-Frameworks, Gulp-basiertes Build-System, BrowserSync, SASS, UI-Router, RequireJS, Minifizierung, etc.

Es ist auch schon sehr gut durchstrukturiert, da einzelne Funktionalitäten in kleine Einzelfiles aufgesplittet sind, die per require oder bulk-require injected werden. Ich ändere allerdings immer eine Sache: ich gruppiere meine JavaScript- und SASS-Files nach Feature und nicht nach Funktion. Also statt

app/js/controllers/checkout.js
app/js/services/checkout.js

benutze ich z.B. 

app/js/checkout/checkout.controller.js
app/js/checkout/checkout.service.js

So hat man alle Resourcen zu einem Feature gebündelt. Das Feature-Modul muss dann noch in der main.js geladen werden.

Für's Deployment empfehle ich außerdem noch einen SFTP gulp task einzubauen.

Mittwoch, 28. August 2013

Apple Application Loader und Proxy-Server

Da Apple es scheinbar für ein unwahrscheinliches Szenario hält, dass jemand seine Apps mit dem Application Loader aus einem Firmennetzwerk mit Proxy-Server hochladen will, scheitert man beim Versuch, dies zu tun, kläglich mit folgender (oder einer ähnlichen) Meldung:

Communication error. Please use diagnostic mode to check connectivity. You need to have outbound access to TCP port 443.

Damit das ganze hinter einem Proxy funktioniert, beschränken wir uns für die Übertragung auf das HTTPS-Protokoll. Dazu wählen wir unter Preferences > Advanced nur DAV aus.

Nun sollte es mit einem Web-Proxy funktionieren. Der Application Loader basiert jedoch auf Java, was interessant ist, wenn man bedenkt, dass Apple Java sogar vor einiger Zeit noch vom Mac verbannen wollte und es nun für ein solch essentielles Tool verwendet. Ärgerlich daran ist, dass die Java-Applikation scheinbar nicht die Proxy-Einstellungen des Systems übernimmt. Also müssen wir diese selbst nachziehen. Dazu bearbeitet man die Netzwerkeinstellungen des Application Loaders:
sudo vi /Developer/Applications/Utilities/Application\ Loader.app/Contents/MacOS/itms/java/lib/net.properties
Von den entsprechenden Zeilen muss das Kommentarzeichen (#) entfernt und der Proxy-Server (bzw. dessen IP) und-Port eingetragen werden:
http.proxyHost=192.168.1.1
http.proxyPort=8080

https.proxyHost=192.168.1.1
https.proxyPort=8443
Anschließend den Application Loader neustarten und nun sollte er brav seinen Dienst verrichten!

Sonntag, 29. Januar 2012

iPhone 3GS iOS 5.0.1 Jailbreak Untethered & 05.13.04 Unlock

Da es doch mal wieder nicht ganz nach den üblichen Anleitungen im Netz geklappt hat, hier noch mal die Schritt-für-Schritt-Anleitung, die für mein iPhone 3GS funktioniert hat:

  1. iOS 5.0.1 für das iPhone 3GS herunterladen
  2. redsn0w 0.9.10b4 herunterladen und starten
  3. redsn0w starten und Extras > Custom IPSW auswählen. Die heruntergeladene Firmware auswählen und die Frage nach dem Bootrom mit No beantworten. redns0w erstellt nun eine Firmware ohne Baseband-Update
  4. Anschließen mit redsn0w in den Pwned DFU Modus wechseln
  5. Nun in iTunes die Firmware wiederherstellen (beim Klick auf Wiederherstellen die ALT-Taste gedrückt halten und die Datei NO_BB_OLDROM_iPhone2,1_5.0.1_9A405_Restore.ipsw auswählen)
  6. Warten bis das Update beendet ist
  7. Nun die Originalfirmwarre iPhone2,1_5.0.1_9A405_Restore.ipsw umbenennen in iPhone2,1_5.0.1_9A404_Restore.ipsw.
  8. Nun in redwn0w diese umbenannte Datei unter Extras > Select IPSW auswählen
  9. Mit redsn0w den Jailbreak durchführen (Dabei einen Haken bei Install Cydia setzen)
  10. Nach dem Reboot des iPhone die Konfiguration abschließen.
  11. Dann Cydia starten (Profil: Hacker oder Entwickler) und aktualisieren
  12. Anschließend in Cydia "ultrasn0w" suchen und installieren.
  13. Fetig!
Viel Spaß mit iOS 5! :)

Donnerstag, 22. Dezember 2011

Automatischer Standby/Ruhezustand unter Mac OS X bei nieriger Akkuladung

Seit einiger Zeit wird mein Mac nicht mehr in den Ruhezustand versetzt, wenn der Akku leer ist. Dieses Problem scheinen einige User zu haben.

Bei genauerer Analyse, musste ich feststellen das Mac OS X den Ruhezustand bei leerem Akku z.T. erst zu spät startet (z.B. bei 1% Ladung). Dann reicht die Zeit nicht mehr aus, um den Standby/Ruhezustand auszuführen und der Mac geht einfach aus. Neben dem nervigen Reboot können dabei auch Daten verloren gehen.

Das gleiche Problem kann auch bei älteren Akkus auftreten die schon nicht mehr genug Saft liefern, bevor sie die 1% Ladung erreichen. Leider bietet Mac OS X keine Möglichkeit die Schwelle/Mindestladung für den automatischen Standby festzulegen. Abhilfe schafft da ein kleines Script, das regelmäßig per cron gestartet wird.

Dazu wie folgt vorgehen:

1) Das Script /bin/standby.sh mit folgendem Inhalt anlegen:

#!/bin/bash
pmset -g batt | grep -E "\W[2-4]%;" | grep discharging && pmset sleepnow


2) Die folgende crontab mit crontab -e erstellen, um das Script jede Minute auszuführen:

#min hour mday month wday command
* * * * * /bin/standby.sh

Nun wird einmal pro Minute gecheckt ob der Akku sich gerade entlädt (discharging) und nur noch zwischen 2-4% Ladung hat. Wird eines dieser Ladungslevel erreicht, wird der Mac in den Standby/Ruhezustand versetzt.

Das Level lässt sich hier von 0-9% festlegen, was in den meisten Fällen ausreichen sollte. Über eine Anpassung des regelären Ausdrucks des grep Befehls, können auch noch höhere Level eingestellt werden. Das ist u.U. für ältere Akkus interessant.

Sonntag, 17. Juli 2011

Debugging von PHP mit IntelliJ IDEA, MAMP und Xdebug unter MacOSX

Die neuste Version von MAMP herunterladen.

Die neuste Version von IntelliJ IDEA (Ultimate für PHP-Support) herunterladen.

Die neuste xdebug-Version hier herunterladen. Nach dem Entpacken die xdebug.so aus dem Verzeichnis mit der richtigen Version ins php-Verzeichnis von MAMP kopieren.

cp xdebug.so /Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/

Anschließend muss noch die php.ini von MAMP angepasst werden.

vi /Applications/MAMP/conf/php5.3/php.ini

Nun nach dem Abschnitt [xdebug] suchen und diesen wie folgt ersetzen bzw. ergänzen.

[xdebug]
zend_extension="/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
xdebug.remote_enable=true
xdebug.remote_port=9000
xdebug.profiler_enable=1


Jetzt mit IntelliJ IDEA ein neues Projekt und Modul ("from scratch") erstellen und eine .php-Datei hinzufügen. In den Einstellungen unter Preferences > PHP > PHP Home den Pfad /Applications/MAMP/bin/php5.3/bin angeben. Anschließend kann man einen Breakpoint setzen und die Datei debuggen (Rechtsklick > Debug "myfile.php").

Das ganze sollte auch mit anderen IDEs funktionieren.