Skip to content

Instantly share code, notes, and snippets.

test "unicode decoding" do
encoded_val = "\u00C4ffle"
decoded_val = JSON.parse("{\"x\": \"#{encoded_val}\"}")['x'].gsub("\\n", "\n")
assert_equal decoded_val, "Äffle"
end
# 1.9.2 passes
# 1.8.7
# <"u00C4ffle"> expected but was
@youngbrioche
youngbrioche / add_encoding_headers.sh
Created December 2, 2011 12:12
Add encoding headers to Ruby files
find -name "*.rb" | \
while read filepath; do \
{ echo -n "$filepath: "; head -n1 "$filepath"; } | \
grep -v encoding | sed -e "s#.*#$filepath#"; \
done | \
while read filepath; do \
{ echo "# encoding: UTF-8"; echo; } | \
cat - "$filepath" > "$filepath.tmp"; \
mv "$filepath.tmp" "$filepath"; \
done
puts RUBY_VERSION
class Foo
def info(*args)
puts args.inspect
end
end
initializer "iqvoc.load_migrations" do |app|
app.class.configure do
config.paths['db/migrate'] += Iqvoc::Engine.paths['db/migrate'].existent
end
end
module Foo
end

Phil Calçado lernte ich bereits vor einiger Zeit auf einem Event in Berlin kennen und hatte daher hohe Erwartungen an seinen Vortrag APIs: The Problems with Eating your Own Dog food. Ich sollte nicht enttäuscht werden. Nachdem die Frage: "Was ist Soundcloud?" und die damit verbundenen Anforderungen an Performanz geklärt waren, wurde dargestellt wie sich die Soundcloud Architektur über die Zeit entwickelt hat.

Während dieser Evolution wurde zeitweise das Rendern der Webseite auf den Browser verlagert, was zu ungefähr 159 API-Anfragen pro Seitenanfrage führte. Nicht nur dem Publikum machte diese Zahl Angst sondern auch der Soundcloud Crew, jedoch war man zuversichtlich dass durch zusätzliche Server diese Last zu schaffen sei. Schnell lernte man, dass nach dem Zusammenbruch des HAProxy weitere Komponenten (memcached/Rails/MySQL) der Masse an Anfragen nicht gewachsen waren.

Building Hypermedia APIs with HTML war für mich einer der überzeugendsten Vorträge auf der diesjährigen GOTO in Berlin. Ich ging mit etwas Vorwissen in den Vortrag, da ich selbst momentan in einem Projekt HTML für eine Suchschnittstelle einsetze.

Jon Moore ist es gelungen, nachvollziehbar darzulegen, dass HTML sich - entgegen weitverbreiteter Ansicht - sehr gut als Media Type für APIs eignet und den Alternativen (etwa XML oder JSON) überlegen ist. Dies liegt vor allem daran, dass in HTML die notwendigen Mittel bereits standardisiert sind -

Da wir uns bei der innoQ regelmäßig nicht nur in Projekten sondern auch auf Konferenzen und im Rahmen von Artikeln intensiv mit den Möglichkeiten zum Aufbrechen von Monolithen auseinandersetzen war der Talk Microservices - adaptive architectures and organisations von James Lewis eine willkommene Gelegenheit Einblicke in die Erfahrungen anderer zu dem Thema zu erhalten.

Ein anschauliches Beispiel für die Gefahren von Monolithen lieferte James u.a. mit einer war story von einer Fluggesellschaft, die im Anschluss an den Ausbruch des Vulkans Eyjafjallajökull keinerlei Flugstart

Ich war im Vorfeld sehr gespannt auf den Talk von Simon Willnauer zum Thema „Elasticsearch“. Der Vortragende gehört zum Team des Open-Source-basierten, verteilten Suchservers und hat schon vorher als Lucene-Committer viel Erfahrung im Bereich Volltextsuche gesammelt. Da ich Elasticsearch gerade für ein Projekt evaluiere, hoffte ich aus dem Vortrag vor allem eine bessere Vorstellung über die grundlegenden Konzepte dieses Produktes mitnehmen zu können.

Grundlage seines Vortrages „With a hammer in your hand... Elasticsearch“ war - gemäß dem Motto „No slides - no bullshit“ — ein Shellscript. Dieses enthielt primär Curl-Aufrufe, da die Kommunikation mit dem Elasticsearch-Cluster über REST-konforme HTTP-Schnittstellen stattfindet. Wer sich einen detaillierteren Eindruck verschaffen möchte, findet das Skript hier: https://github.com/s1monw/hammertime/blob/master/hammer_it.sh.

Um die grundlegenden Funktionen von Elasticsearch zu demonstrieren, streamte er in Echtzeit Tweets aus dem globalen Twitterstream nach Elast

Test

for ( Element e : meineListe ) {
    // mach etwas Intelligentes mit e
}
meineListe_ist_jetzt_eine_Sequence.each(