as-a-service taxonomy
Před časem jsem na tomto blogu zmínil několik “as-a-service” akronymů.
Peter Laird k témuž přistoupil vědečtěji a zkompiloval takřka as-a-service taxonomii (nechybí ani crimeware-as-a-service!). Jen Romanův Maas tam chybí
Java, I/O a performance?
Vezměme si jednoduchý kousek kódu, který po řádcích čte data ze standardního vstupu a bez velkých cirátů je přeposílá na standardní výstup:
import java.io.*; public class StreamEcho { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); for (String line = br.readLine(); line != null; line = br.readLine()) { System.out.println(line); } } }
Teď si vezměme perlový ekvivalent:
#!/usr/bin/perl -w use strict; while (<STDIN>) { print; }
A nakonec oběma verzemi prožeňte pár GB textových dat (data napřed něčím přečtěte jen tak, ať se v obou případech využívá disková cache). Taky vám perlová verze běží třikrát rychleji? Co s tím?
Amazon a “kabelový” přenos dat
Amazon právě oznámil, že rozšiřuje nabídku svých Amazon Web Services (AWS) o službu AWS Import/Export, zatím v omezené beta verzi.
Fakticky se jedná starý dobrý “kabelový přenos” – strčíte data do kabely a necháte dopravit na místo určení
Ale vážně – když už si vyrobíte aplikaci, která je schopna svižně přežvýkat terabajty dat, logicky se nabízí otázka, jak k ní ty terabajty dopravíte.
A poštou zaslaný externí disk se nejspíš ukáže jako spolehlivější a svižnější transport než TCP/IP. A dovolím si spekulaci, že tato služba by mohla i podpořit adopci “Enterprise SaaS” odbouráním psychologické bariéry ohledně “posílání cenných dat po Internetu”.
Androidi na Šumavě
Píšu na Jablok málo, protože poslední dva roky jsem se k programování dostával spíš okrajově. Spoluzakladatel Jabloku Tomucha naopak nepíše vůbec, protože programuje pořád. A teď o tom dokonce napsal na český Google Blog. Pěkné!
Komentář
Na Stackoverflow.com se objevilo vlákno s neobvyklými a místy i vtipnými komentáři kódu. Nejvíc mě pobavilo suché
try { ... } finally { // should never happen ... }
Java, Hosting a AppEngine
Roman rozebírá, jak se po technické stránce liší nabídka GAE pro Javu od toho, co by se dalo očekávat od běžného hostingu a zda GAE bude těmto hostingům konkurencí.
Podíval bych se na to z jiného úhlu – takový “běžný hosting” řeší úplně opačný problém než GAE, a to efektivní hostování mnoha relativně málo zatěžovaných aplikací. Z pohledu provozovatele je cílem nacpat na jeden stroj co nejvíc virtuálních webů, což přináší známé problémy, díky nimž si hosting Javových aplikací nezískal místo ve standardní nabídce hostingových firem.
Tyto problémy samozřejmě odpadají v okamžiku, kdy zákazník provozuje aplikaci natolik náročnou, aby si pro ní zaplatil vyhrazený server. Ale jakmile kvůli zvyšující se zátěži aplikace přidáváme další a další servery, začínáme najednou řešit problémy zcela jiné.
Namátkou: Chceme rovnoměrně rozkládat zátěž a předejít přetížení jednotlivých uzlů v clusteru aplikačních serverů. Takže mj. musíme zajistit co nejkratší zpracovávání jednotlivých požadavků a nastavit hard limit pro dobu jejich zpracování, abychom udrželi zátěž serverů jakž takž predikovatelnou. Potřebujeme roztahat data přes mnoho serverů, pak se ale z prostého JOINu tabulek stává netriviální úloha a z transakcí stávají distribuované transakce. A tak dále.
Zkrátka AppEngine vám nakonec nabízí plus minus obdobná omezení, jaká byste si na sebe upletli sami. A porovnávat AppEngine s nabídkou průměrné hostingové firmy je jako srovnávat jabka a hrušky, obojí má své místo a své uživatele. V čemž se samozřejmě shoduju i se závěrem výše linkovaného eleborátu.
AppEngine podporuje Javu!
Je to tak. Ještě na podzim jsem se ptal na Google Developer Day chlapíka od AppEngine, jestli se chystá podpora Javy. Dozvěděl jsem se, že nesmějí ani naznačovat, a k tomu moře problémů, které by museli řešit.
Podle dnešního oznámení se zdá, že se Google s footprintem JVM a podobnými zádrheli popasoval, a k tomu nabídl i plug-in do Eclipse. Sláva.
Jen si říkám, není škoda, že jsem přišel o silnou motivaci naučit se pořádně Python?
MapReduce as a Service
Amazon před chvíli oznámil veřejnou betu služby Elastic MapReduce. Tedy službu ideální pro úlohy, které lze efektivně řešit paralelizací, za předpokladu, že vám vyhovuje MapReduce přístup.
Služba je postavena na Hadoopu (původně od Yahoo, nyní vyvíjen pod Apache Foundation).
Samozřejmě ani před oznámením služby nikomu nebránilo Hadoop na AWS provozovat (viz notoricky známý případ Dereka Gottfrida, který AWS využil k převodu 4TB článků New York Times z Tiffu do PDF během 24 hodin za 240 dolarů).
Oproti Derekovi si teď (za příplatek 1.5 až 12 centů za EC2-hodinu dle typu instance) můžete ušetřit administrační otravu jako přípravu imagí s Hadoopem, spouštění instancí a podobně.
Na Okounu jsem čas od času na víkend zahltil server zpracováváním logů návštěvnosti diskusí a generoval z nich matici podobnosti. Myslím, že to přepočítávání brzo začnu spouštět častěji
Vše o výjimkách
Přehledná dokumentace častých výjimek v Javě: http://rymden.nu/exceptions.html
(via Crazyjoe @ Java @ Okoun)
CSS sprite image snadno a rychle
ImageMagick obsahuje nástroj montage.
Příkazová řádka montage má spoustu parametrů
A pro vyrobení CSS sprite budete chtít nejspíš:
montage -mode Concatenate -tile 1x \
-background transparent \
-border 0x20 -bordercolor none \
*.gif sprite.gif
A protože jsem to nevygoogloval, ale musel vyčíst z manuálu, tak si aspoň ublognu, ať na to nezapomenu.