Manuell WordPress-Update installieren

Für gewöhnlich funktioniert die automatische Update-Funktion von WordPress ohne Probleme. Doch, was ist, wenn dies einmal nicht der Fall ist und gerade eine schwerwiegende Sicherheitslücke im System klafft?

Solltest du Probleme beim automatischen Update haben, kommst du wohl kaum um ein manuelles Update herum, außer du möchtest mühsam nach Lösungen recherchieren.
Aber auch das manuelle Update ist gar nicht so schwierig. In dem Beitrag möchte ich kurz das Vorgehen verdeutlichen.

„Manuell WordPress-Update installieren“ weiterlesen

HTML5 Cross-Platform Apps mit ionic

Letztes Wochenende habe ich an der Spartakiade 2015 in Berlin teilgenommen und dort coole neue Sachen kennen gelernt. Unter anderem das für hybride Apps entwickelte Ionic Framework, worauf ich auch kurz eingehen möchte.

Das Framework baut auf AngularJS und Apache Cordova auf und bietet zudem viele CSS-Elemente, um eine HTML5-App nativ wirken zulassen. Wer AngularJS und Cordova bereits kennt, sollte mit ionic keine Probleme haben.
Du denkst vielleicht: „Wozu das ganze? Ich kann auch andere coole CSS-Frameworks wie Bootstrap oder Foundation verwenden“ oder „Ich programmiere lieber nativ wegen der Performance“.

„HTML5 Cross-Platform Apps mit ionic“ weiterlesen

HTML5 ApplicationCache sucks!

Die vom W3C publizierte Definition des ApplicationCache ist meiner Meinung nach eine gute Sache. Offline-fähige Websites und Apps sind beim aktuellen Stand der mobilen Netzabdeckung immer noch wichtig.

Leider leidet die Schnittstelle an zu wenig Kontrolle seitens der Programmlogik. Es ist z.B. nicht möglich aus JS heraus einen bestehenden Cache zu löschen oder das Herunterladen von Dateien zu unterbrechen. Das einzige was als Programmierer über die API möglich ist zum einen applicationCache.update() aufzurufen, woraufhin das Cache-Manifest auf Änderungen überprüft wird und zum anderen applicationCache.swapCache(), womit lediglich der alte Cache mit dem neuen ausgetauscht werden kann.

Es ist also eine Read-Only Schnittstelle, wo der Programmierer zum Beobachter wird. Auch wenn kein JS implementiert wurde, kann der Browser nicht daran gehindert werden, das festgelegte Cache-Manifest samt Dateien und Inhalte herunterzuladen (um den Start z.B. selber festzulegen). Hinzu kommen Quota-Beschränkungen seitens des Browsers und unterschiedliche Verhaltensweisen in den Browser-Implementierungen.

Safari z.B. kriegt Probleme, wenn mehrere iFrames auf dasselbe Cache-Manifest zugreifen, da nicht wie in Chrome und Firefox alle iFrames alle Events erhalten, sondern Safari nur einem iFrame das Privileg gibt alle Events (im Speziellen die abschließenden Events wie: noupdate, updateready, cached oder error) zu erfassen.
Die Verwendung im UIWebView einer iOS-App ist zwar möglich, aber dort stößt man bei ca. 50 MegaByte an die Grenze der ApplicationCache-Quota, welche sich im UIWebView nicht anpassen lässt (getestet im IAB von PhoneGap). Apropos Größe, bei einer Datei-Anzahl > 200 kann es bei Safari und iOS schon eine Weile dauern bis alle Dateien erfolgreich heruntergeladen wurden.

Hoffentlich wird es mit HTTP/2.0 und Service Worker bald besser!

Battery Status API

Es gibt eine Battery Status API, vorgeschlagen vom W3C, welche aktuell im Google Chrome implementiert wurde.

Was die API liefert, kann man in dem folgenden Screenshot sehen (Chrome 40)

battery-status-api

Damit könnten performance-lastige Aktionen / Berechnungen / Animationen einer Web-App z.B. für eine bestimmte Zeit beschränkt oder ganz deaktiviert werden. Außerdem vereinfacht es hybriden Apps das Auslesen von Systeminformationen.

Das ganze funktioniert dabei mit Promises, welche man mittlerweile an vielen Stellen (wie jQuery, AngularJS, …) wieder findet.

Weiterführende Links und Themen:

Tests mit Cypress

Cypress ist ein Tool zum Testen von JavaScript-Code und DOM-Elementen direkt im Webbrowser. Ich finde, es sieht sehr vielversprechend aus, allerdings soll es nach der Beta-Version, wenn es „irgendwann 2015“ fertig ist, wohl Geld kosten.

Als Teaser gibt es auf der offiziellen Website folgendes Video zu sehen:

Ich werde die Entwicklung auf jeden Fall weiter beobachten. Sollte es zu teuer sein oder wider Erwarten doch nicht den Anforderungen entsprechen, werde ich weiterhin auf JasminJS setzen.

Quellen:

Termine 2015 für Leipzig und Berlin

Usergroups

Leipzig

PHP Usergroup Leipzig (phpugl)
Regelmäßig am letzten Donnerstag eines Monats ab 20:30 Uhr.
Ort: localhost Leipzig GbR, Sternwartenstraße 31, 04103 Leipzig
URL: http://phpugl.de/

JavaScript Usergroup
Regelmäßig am ersten Donnerstag eines Monats ab 20:00 Uhr.
Ort: Hans-Poeche-Straße 23-25 in Leipzig
URL: http://leipzigjs.github.io/

Berlin

Berlin PHP Usergroup (bephpug)
Regelmäßig am ersten Dienstag eines Monats ab 19:00 Uhr.
Ort: co.up Offices, Adalbertstraße 7-8 in Berlin-Kreuzberg
URL: http://www.bephpug.de/

BerlinJS Javascript Usergroup
Regelmäßig am dritten Donnerstag eines Monats ab 19:30 Uhr.
Ort: co.up Offices, Adalbertstraße 7-8 in Berlin-Kreuzberg
URL: http://berlinjs.org/

Konferenzen

Leipzig

Developer Open Space
16. – 18. Oktober jeweils von 9:00 bis 20.00 Uhr
Ort: Commundo Tagungshotel Leipzig
URL: http://devopenspace.de/

Berlin

Spartakiade
21. – 22. März jeweils von 9:00 bis 18:00 Uhr
Ort: Immobilien Scout GmbH, Berlin
URL: http://spartakiade.org/ 

PHPConference
7. – 11. Juni
Ort: Maritim ProArte, Berlin
URL: https://phpconference.com/

CodeKit 2 – Tool für Frontend-Entwickler

Codekit 2 bietet Frontend-Entwicklern viele automatisierte Prozesse wie z.B. das Kompilieren von SASS-, CoffeeScript, LESS, Jade- oder HAML-Dateien.

Außerdem kann das Tool gleichzeitig sämtliche Dateien komprimieren (Minify) und Linting Tools wie CoffeeLint und JSLint aufrufen und verpackt das Ganze in einer übersichtlichen GUI. Bis hierhin schon ein großartiger kleiner Helfer.

Aber Codekit kann noch mehr: Es kann Assets und Pakete über Bower verwalten und aktualisieren und es startet einen Webserver, der das Projekt im Netzwerk zum Testen für andere Browser und Geräte verfügbar macht.

Beim Kompilieren einer CoffeeScript-File wird das Browserfenster automatisch aktualisiert. Für SASS-Dateien wird das CSS im Browser einfach nur ausgetauscht, so dass nicht mal eine Aktualisierung gemacht werden muss.
Seit dem letzten Update (2.2) werden nun auch alle Eingaben im Browser auf andere Browser, geräteübergreifend übertragen, ähnlich wie es mit BrowserSync möglich ist.

Für mich mittlerweile eine unverzichtbares Tool bei der Frontend-Entwicklung, da ich damit meine Änderungen immer sofort im Browser, auf dem iPad und auf meinem Android Tablet gleichzeitig begutachten kann.