Ich habe auf The Nitty Gritty einen Gastbeitrag zum Thema AngularJS: 6 Common Pitfalls Using Scopes gemacht.
Proof Of Concept: Proxy-Download von S3
Aufgabe
Die Verwendung von Amazon S3 soll a) nicht öffentlich gemacht werden und/oder man b) möchte den Zugriff per zusätzlicher Authentifizierung absichern. Es gilt also, durch eine Anfrage per HTTP einen Download bei S3 anzustoßen und den Inhalt entsprechend zurückzuschreiben.
Option 1: Download auf Temp-File / Speicher
Zunächst kann man natürlich ganz allgemein den Download abstoßen, den Inhalt lokal auf dem Server in eine Datei packen und anschließend dem Client zurückzuschicken.
Problem 1: Selbst bei guter Anbindung des Servers an S3 muss man erst alles laden und erst bei Beendigung des Downloads kann man dem Benutzer die Datei schicken. Dieser Delay ist unschön.
Problem 2: Sollte die Datei größer sein, verbraucht man (unnötigerweise) Platz auf dem Server.
Problem 3: Eventuell ist es aus Sicherheitsgründen auch nicht wünschenswert.
Option 2: Download direkt auf Client speichern
Sobald der Download angestoßen wurde und Daten liefert, werden die Chunks (Buffer-Pakete) sofort dem Stream der laufenden HTTP-Anfrage rausgeschrieben. Damit wird sichergestellt, dass weder auf der lokalen Platte oder im Speicher des Servers unnötige Daten gespeichert werden müssen.
Code liegt bei GitHub, wo denn sonst.
Sonstiges
- Die NodeJS Library knox setzt auf aws-sdk auf und bietet ein Wrapper um die AWS-S§-Response. Damit ist dies Lösung oben geringfügig einfacher zu realisieren.
- Eine Alternative zu der ganzen Thematik können auch so genannte Signed URLs sein. Eine Signed URL auf S3-Content ermöglicht auch temporären Zugriff auf nicht öffentliche Dateien. Signed URLs sind relativ simpel, weil sie nur aus dem Expiry Date und einer Signatur (auf Basis des privaten Schlüssels des Owners) dessen bestehen.
Spring 3.2 + JodaTime + Jackson2
Möchte man in seinem frischen Spring 3.2 Projekt auch gerne Jackson 2 (Version 2 von fasterxml, Version 1.x bei codehaus) mit Joda Time verdrahten, um beispielsweise eine schöne ISO-Formatierung bzw. Konvertierung (also “rein” und “raus”) zu ermöglichen, dem sei folgende Lösung ans Herz gelegt. Jegliche eigenen Date-Serialisierer aus früheren Versionen sind nicht mehr notwendig.
Schlicht ist das neue Besser.
Jahresbericht 2012
Fwd: JIT-Compiler-Bug im Firefox 18
Grunt.js Workflow
Ein netter, kleiner Artikel über was Grunt ist, wie man es einsetzt und wie man sogar einen eigenen Task baut. Für den Schnelleinstieg.
IntelliJ IDEA 12
Da ich mittlerweile ja auch im Fan-Club von IntelliJ IDEA bin: Vor wenigen Stunden hat JetBrains Version 12 veröffentlicht.
Dies ist eine IDE, die wirklich ihr Geld wert ist: Funktionsumfang als auch Performance geben in der Kombination mehr als ein Eclipse. Das Produkt funktioniert und denkt mit.
Das neue Darcula Theme sagt mir nicht zu.. ist aber ja auch nicht als Standard aktiviert.
OS X und Fusion Drive auf Macs älter als Late 2012 (Update 02.12.2012)
Update 25.11.2012: Siehe unten!
Update 02.12.2012: Mit Videos!
Als Ende Oktober diesen Jahres Phil Schiller von Apple die neuen Macs vorstellte, ließ er auch ein paar wenige Worte im üblichen Awesom-Wirrwarr über “Fusion Drive” fallen. Dabei handelt es sich um eine Kombination von SSD und HD, um die Vor- und Nachteile beider Techniken effizient auszunutzen: Geschwindigkeit aber wenig Speicher bei der SSD, viel Speicher aber langsamer bei der üblichen HD.
Spring Task Worker
Als Demonstration und Proof-of-Concept habe ich unter github.com/knalli/task-worker ein Projekt gestartet, welches mit Hilfe von Spring Integration und einem Message Broker separate Tasks ausführen kann.

