jAbLoK

blog už dávno nejen o javě

Nečekané důsledky

leave a comment »

$ python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 1.40
1.3999999999999999

Tak tohle asi nikoho nepřekvapí (i když Python 2.7 se už v tomto chová příčetněji).

Ale teď si představte, že máte utilitu, která kopíruje metadata z jedné hromady nadruhou. A že součástí produktu je automatická migrace metadat.

Takže při loadu metadat verze 1.39 se provede migrace na verzi 1.40, která by ovšem měla velmi velmi bizarní důsledky, pokud by se provedla na metadatech vytvořených již verzí 1.40.

Jestli to tady ještě někdo čtete, budu rád, když se v komentářích podělíte o podobné nečekané důsledky notoricky známých banalit.

Written by Pavel Kolesnikov

4 února, 2011 at 3:49 pm

Zasláno do Miscellaneous

Stručný výběr z Twitteru

leave a comment »

… na téma čerstvě udělené Nobelovy ceny za mír:

RT @annimaniac: 64% of people found Google Wave easier to understand than Obama’s Nobel Peace Prize

RT @patentlyfalse: Emboldened By Nobel Prize, US President Obama Re-Opens Discussion On Bringing Closures To Java



Written by Pavel Kolesnikov

10 října, 2009 at 12:44 pm

Zasláno do Miscellaneous

Tagged with , ,

as-a-service taxonomy

leave a comment »

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í 🙂

Written by Pavel Kolesnikov

29 června, 2009 at 10:56 pm

Zasláno do Miscellaneous

Tagged with

Java, I/O a performance?

17 komentářů

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?

Aktualizace: podle komentářů důvodem bude hlavně konverze do Unicode a zpět, kterou se perlový kód narozdíl od Javy neobtěžuje (zmínili Zamboch a Petr Holík). Další rozdíl může být v tom, že System.out.println pokaždé provede flush (zmínil podlesh). Díky všem zúčastněným diskutérům!

Written by Pavel Kolesnikov

17 června, 2009 at 3:50 pm

Zasláno do Java

Tagged with , ,

Amazon a „kabelový“ přenos dat

leave a comment »

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“.

Written by Pavel Kolesnikov

21 května, 2009 at 10:56 am

Zasláno do Miscellaneous

Androidi na Šumavě

leave a comment »

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é!

Written by Pavel Kolesnikov

19 května, 2009 at 12:45 pm

Zasláno do Java

Komentář

3 komentáře

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
   ...
}

Written by Pavel Kolesnikov

28 dubna, 2009 at 5:07 pm

Zasláno do Tech

Java, Hosting a AppEngine

leave a comment »

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.

Written by Pavel Kolesnikov

14 dubna, 2009 at 11:50 am

Zasláno do Java, Scalability

AppEngine podporuje Javu!

leave a comment »

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?

Written by Pavel Kolesnikov

8 dubna, 2009 at 10:42 am

Zasláno do Miscellaneous

MapReduce as a Service

leave a comment »

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 🙂

Written by Pavel Kolesnikov

2 dubna, 2009 at 11:34 am

Zasláno do Tech