Google I/O Extended Brno

Jsa pln dojmů z dvouhodinové návštěvy akce Brněnské GUG s promítáním live streamu z Google I/O si asi budu nucen ublognout nějaké postřehy a komentáře, i když je jasné, že zítra toho bude plné podhoubí (twittosféra je nasycena už teď). Protože ale paralelně sleduju další stream, tak to bude jen velmi stručně. Akce začala v … Pokračovat ve čtení „Google I/O Extended Brno“

Jsa pln dojmů z dvouhodinové návštěvy akce Brněnské GUG s promítáním live streamu z Google I/O si asi budu nucen ublognout nějaké postřehy a komentáře, i když je jasné, že zítra toho bude plné podhoubí (twittosféra je nasycena už teď). Protože ale paralelně sleduju další stream, tak to bude jen velmi stručně.

Akce začala v 18 hodin našeho času, dostali jsme k ní nějaké doughnuty, pitivo a heslo na wifi, pak se již mohlo začít. Nutno poznamenat, že slibovaní hosté zřejmě nedorazili (utekl jsem dřív pryč a koukám, že Jakub Čížek se nechecknul na Gowalle, spot jsem dokonce musel vytvářet já :-)).

První uvedenou novinkou byly Google Movies (pokud se to fakt tak jmenuje) – služba umožňující pronájem videa a jeho spuštění na jakémkoliv zařízení svázaném s vaším google accountem. Pronájmem mám na mysli opravdu pronájem – za pár dolarů si koupíte práva na zkouknutí filmu, na což dostanete nějakých 30 dní, po započetí sledování 24 hodin. Pro android by měla existovat nová aplikace Movies a jak se dalo čekat, je to US only.

Dalším uvedeným produktem byl Google Music, v betaverzi. Funguje stejně, jako Amazon cloud player – (pouze ve státech) nedá se nakupovat hudba, ale je možné hudbu si tam skrze aplikaci (zmíněna platforma Windows a Mac) nahrát a odtud z jakéhokoliv zařízení se stejným google účtem streamovat. Ano, streamovat – aby se prostor nedal využít k pirátským aktivitám. (pouze bych rád dodal, že doufám v brzké chcípnutí Sony, EMI a dalších ne zkostnatělých institucí, ale rovnou zkamenělých, které by si měly uvědomit, že hudbu nezabíjí kopírování, ale ony!) Pro streaming opět existuje aplikace na marketu, ale na žádném mém zařízení nejde stáhnout :-(.

US Only
US Only

Vývojáři také byli ujištěni, že svoje aplikace budou vyvíjet pouze jednou pro všechna zařízení – i Google TV bude mít android market. Znamená to teda zřejmě, že se vývoj neforkne pro tablety (a další zařízení) a telefony, jak to vypadalo doteď. Neznamená to ale samozřejmě zpětnou kompatibilitu, pořád bude samozřejmě existovat minimalSDK v manifestu.

Další peckou je vydání Accessory development kitu založeného na Arduinu (samozřejmě je vše otevřené, takže je možné očekávat boom hardwarových serepatiček, jako příklad bylo uvedeno sportovní náčiní) a vůbec větší podpora dalšího hardwaru, mimo jiné bude USB fungovat jako host, takže bude možné připojit klávesnice, gamepady a další věcičky. Demonstrace proběhla na gigantickém bludišti ovládaném tabletem s akcelerometry.

Bludiště

S tím souvisí představení dalšího produktu – Android@home – Androidu jakožto centrálního bodu pro ovládání inteligentních domů. A to počínaje nastavováním termostatu, zhášením světel, ale také multimédii – demonstrována byla výše zmíněná služba Music, kdy zakoupenou hudbu bylo možné pomocí telefonu pustit a jako výstupní zařízení nastavit hifi v obýváku a přehrávač v kuchyni.

Android@home
Android@home

To je víceméně vše, na co si z úvodu vzpomínám a teď mi běží ve streamu další android novinky a jsou to takové pecky, že se omlouvám a jdu sledovat! Jasné je, že je možné se v dohledné době těšit na obrovský boom gadgetů a všemožných více či méně praktických zařízení připojitelných k androidu a také samozřejmě S androidem. Jako třeba tablet Galaxy Tab, který dostali účastníci konference jako dárek.

PS. pomocí Moderátoru je možné pokládat otázky pro jednotlivá témata.

Jak se dostat na zabezpečené služby státní správy?

Pod mírně bulvárním názvem tohoto blogpostu nehledejte žádný návod na hákování webů státních institucí. Pouze jsem se snažil vytvořit klienta (v Javě) pro komunikaci s webovými službami nalézajícími se na serveru, který je zajištěn certifikátem vydaným certifikační autoritou PostSignum a aby to nebylo tak jednoduché, tak uživatel je autentikován na základě osobního certifikátu. Každý slušný … Pokračovat ve čtení „Jak se dostat na zabezpečené služby státní správy?“

Pod mírně bulvárním názvem tohoto blogpostu nehledejte žádný návod na hákování webů státních institucí. Pouze jsem se snažil vytvořit klienta (v Javě) pro komunikaci s webovými službami nalézajícími se na serveru, který je zajištěn certifikátem vydaným certifikační autoritou PostSignum a aby to nebylo tak jednoduché, tak uživatel je autentikován na základě osobního certifikátu.

Každý slušný člověk začne nejprve googlením, kdy najde nejeden příklad navazování spojení pomocí https (řekněme HTTP over TLS), další googlení potom poodkryje další příklady, tentokrát jak použít klientský certifikát. Na tomto základě už je možné začít stavět, nejprve tedy metoda pro získání ssl socket factory, kterou použijeme pro kontrolu identity:

[code lang=“java“]
private SSLSocketFactory getFactory(File pKeyFile, String pKeyPassword) throws…{
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
KeyStore keyStore = KeyStore.getInstance("PKCS12");
InputStream keyInput = new FileInputStream(pKeyFile);

keyStore.load(keyInput, pKeyPassword.toCharArray());
keyInput.close();
keyManagerFactory.init(keyStore, pKeyPassword.toCharArray());
SSLContext context = SSLContext.getInstance("TLS");
context.init(keyManagerFactory.getKeyManagers(), null, new SecureRandom());

return context.getSocketFactory();
}
[/code]

Tato factory se předá do vytvářeného zabezpečeného spojení, kdy je tímto způsobem poskytnut údaj pro autentikaci uživatele na straně serveru. Tedy metoda vracející toto spojení:

[code lang=“java“]
public HttpsURLConnection getConnection() throws …{
URL url = new URL("https://server:844/");
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();

con.setSSLSocketFactory(getFactory(new File("cert_sign.p12"), "heslo"));

return con;
}
[/code]

Teď je možné se pomocí zavolání connect() připojit, ale protože nejsou v úložišti důvěryhodných certifikátů vložené certifikátu serveru, snaha o připojení skončí s výjimkou:

[code]
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
[/code]

Nejprve jsem se snažil mezi důvěryhodné certifikáty importovat certifikát kořenové autority PostSignum pomocí nástroje keytool

[code lang=“shell“]
sudo keytool -import -alias gwc.cpost.cz -keystore /etc/java-6-sun/security/cacerts -file root.pem
[/code]

což však nevedlo nikam, potřeboval jsem konkrétní certifikáty konkrétního stroje a s tím mi pomohla utilitka InstallCert (zdrojový kód, takže je to důvěryhodné ;-)). Vytvořený soubor jssecacerts je vlastně původní cacerts s přidanými certifikáty požadovaného serveru, takže je možné jej nakopírovat na odpovídající místo, pomocí keytool -list se podívat, jestli je vše v pořádku a opět vyzkoušet spojení.

Spojuje se, ale to je tak celé, takže se teď zabývám následujícími odkazy:

Spanish inquisition

I stala se mi taková nemilá věc, jako před dávnými časy. Dostal jsem banán na věhlasném českém serveru novinky.cz. Důvod? Není mi známý, pouze jsem zmínil Španělskou inkvizici. Holt asi měl někdo špatný den, nebo zaměstnávají paní Pohlovou, takže jsem jim pro jistotu napsal zpět. Odpovědi se mi bohužel nedostalo, asi to posílal automat. Škoda, … Pokračovat ve čtení „Spanish inquisition“

I stala se mi taková nemilá věc, jako před dávnými časy. Dostal jsem banán na věhlasném českém serveru novinky.cz. Důvod? Není mi známý, pouze jsem zmínil Španělskou inkvizici. Holt asi měl někdo špatný den, nebo zaměstnávají paní Pohlovou, takže jsem jim pro jistotu napsal zpět. Odpovědi se mi bohužel nedostalo, asi to posílal automat. Škoda, docela by mě zajímalo, o co šlo.

Ban na novinkách - email
Ban na novinkách

Proč vyhazovat peníze za čtyři náměstí?

Řekl bych docela slušné peníze na to, že je to taková hovadina. Ano, Yahoo zvažuje koupi location based sociální sítě FourSquare. Mluví se o 80 milionech dolarů. Opravdu má tahle síť takový potenciál? Opravdu další Twitter, jak tvrdí Daniel Dočekal na Lupě? Troufám si tvrdit, že se bude jednat o vyhozené peníze (pokud teda Yahoo … Pokračovat ve čtení „Proč vyhazovat peníze za čtyři náměstí?“

Foursquare logoŘekl bych docela slušné peníze na to, že je to taková hovadina. Ano, Yahoo zvažuje koupi location based sociální sítě FourSquare. Mluví se o 80 milionech dolarů. Opravdu má tahle síť takový potenciál? Opravdu další Twitter, jak tvrdí Daniel Dočekal na Lupě?

Troufám si tvrdit, že se bude jednat o vyhozené peníze (pokud teda Yahoo nemá v plánu celý tento projekt uzavřít), uživatelská základna nemůže být tak veliká, aby šplouchla do moře Yahoo uživatelů a případně rozšířila FireEagle. Nebo je dneska prostě moderní mít svoje uživatele a vědět, kde se nacházejí? Jasně, Google rozdal (i prodal) hromady telefonů s androidem, pomocí Latitude o sobě uživatel pravidelně „práská“ svoji polohu, geotagované fotky vkládané na Flickr, Picassu či kamkoliv jinam už dneska nejsou k divení, stejně tak automatické sdílení polohy při Twitování. Uživatelé na sebe rádi žalují, proto se svou troškou do mlýna spěchá i Facebook. Ok, žádná křeč. Ale že by bylo opravdu tohle odvětví tak lukrativní?

Yahoo logo

Ano, cíleně mířená reklama – víme, kam uživatel chodí, co tam dělá, s kým se stýká… Ale opravdu to uživatelé budou tolerovat? A pokud ano, opravdu na sebe budou žalovat po pravdě? Když si vezmu na paškál zmíněný FourSquare – jedná se defakto o hru, kdy se uživatel přihlašuje na konkrétním místě. Ovšem máme tu (minimálně) dvě ALE: uživatel se musí přihlásit manuálně – nastavení automatiky by bylo už moc velké čenichání do soukromí a asi by to neprošlo. Je to tedy docela otravný proces – provádět znovunačítání, dokud se neobjeví, co hledám, potom check… Je to na dlouho, opravdu; dokonce i nerd potom vypadá ještě více nerdovitě. Druhou věcí je potom „fíčurka“ Foursquare klienta: je možné se odkudkoliv checknout kamkoliv (narozdíl od Gowalla klienta). Čili uživatel může proležet sobotní odpoledne v posteli a „procestovat“ půlku Evropy, poloha není nijak hlídána. Tohle může být kámen úrazu – pokud uživatelé budou brát tuto aplikaci jako hru a ne jako platformu pro doručování reklamy. Přece jde o to, ve kterých podnicích jsem „mayor“ a ne o to, že mi přijde o něco spamu navíc.

Gowalla logo

Když tak mluvím o „platformě pro doručování reklamy“ nedá mi to, abych nezmínil podobnou službu – Gowalla. V tomto případě mi tato síť přijde opravdu jako hra. Pěkné placky, líbivý design, výlety, klient, který opravdu bere v úvahu polohu… prostě v tom má jasno. No a když se podívám na rozhraní FourSquare, připadne mi, že se čeká, až se na ně „něco naroubuje“. Proto mě udivuje, že má tato síť takové množství uživatelů a především, že je někdo ochotný za ni nabídnout takovou sumu.

Libisemi, tvorba bookmarkletu podruhé

Minule jsem popsal způsob vytvoření bookmarkletu a částečně řídicí a zobrazující (odpovídající) logiku na straně serveru s tím, že se nejdená o finální řešení a má svoje mouchy. Tyto mouchy jsem vychytal a vyzkoušel opravené řešení v praxi a zjistil, že jsem zapomněl na poměrně podstatnou věc – zabezpečení a neumožnění croos domain AJAX požadavků, alespoň u slušných prohlížečů: stávající skript totiž přidal k cizí stránce můj kus kódu, který se snažil připojit na můj (=cizí) server. Takže jsem si naběhl a končil na výjimce "Access to restricted URI denied" code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)". Když už jsem ale minule slíbil pokračování stávajícího způsobu, dokončím popis a potom se pokusím problém vyřešit nejjednodušším možným způsobem.

Minule jsem popsal způsob vytvoření bookmarkletu a částečně řídicí a zobrazující (odpovídající) logiku na straně serveru s tím, že se nejdená o finální řešení a má svoje mouchy. Tyto mouchy jsem vychytal a vyzkoušel opravené řešení v praxi a zjistil, že jsem zapomněl na poměrně podstatnou věc – zabezpečení a neumožnění croos domain AJAX požadavků, alespoň u slušných prohlížečů: stávající skript totiž přidal k cizí stránce můj kus kódu, který se snažil připojit na můj (=cizí) server. Takže jsem si naběhl a končil na výjimce "Access to restricted URI denied" code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)". Když už jsem ale minule slíbil pokračování stávajícího způsobu, dokončím popis a potom se pokusím problém vyřešit nejjednodušším možným způsobem.

Protože je člověk od přírody tvor lenošný a já nedělám výjimku svému druhu, nechtělo se mi hrát si httpRequestem a ručně dolaďovat bezpečnostní chybky, optimalizovat… Vzal jsem si proto na pomoc js framework jQuery, který Ajax zvládá za mě a věřím tomu, že mnohem lépe a efektivněji. Hned jsem tímto přístupem zabil dvě mouchy jednou ranou: první moucha je zmíněna na předchozím řádku (nebo spíše hejno much) a ta druhá – v původní verzi bookmarklet fungoval až po druhém kliknutí, což je samozřejmě neomluvitelné. Tuším, že je to způsobeno tím, že při prvním klepnutí se sice skript připojí k dokumentu, ale volané metody se neprovedou s tím, že jsou momentálně neznámé. Divné, ale je tomu tak, po druhém klepnutí na bookmarklet je už všechno v pořádku. Stačí samozřejmě na konec vkládaného skriptu vložit volání potřebných rutin a při jeho přiložení k dokumentu se okamžitě provedou.

javascript:
    void((
        function(){
            var element=document.createElement('script');
            element.setAttribute('src','http://www.libisemi.cz/send.js?i='+new Date().getTime());
            document.body.appendChild(element);
        })()
    )

Stejným způsobem využívám i nové volání pomocí jQuery, které zveřejňuji na následujícím výpise. Do dokumentu pomocí bookmarkletu vkládám tento skript (viz. výše) a zároveň i komprimovanou verzi knihovny jQuery, která se nachází v tomtéž souboru, takže stačí jedno klepnutí na bookmarklet a na lokálním stroji vše funguje jako švýcarské hodinky. Co se týká obsahu bookmarkletu, oproti minulé verzi tam přibyl "parametr" getTime(). Ten je tam proto, aby prohlížeč vzal v potaz změny ve skriptu send.js a nenačítal jej z cache; s getTime() je totiž požadovaná adresa vždy jedinečná, čili načítána znovu.

 /*
 * jQuery JavaScript Library v1.3.1
 * http://jquery.com/
 *
 * zde je vložená komprimovaná verze jQuery knihovny
 */

var u=encodeURIComponent(location.href);

$.ajax({
    type: "POST",
    url: 'http://www.libisemi.cz/addajax',
    data: 'url='+u,
    success: function(s){
        . . .
        window.location = "http://www.libisemi.cz/addform/"+id;
        . . .
    }
});

 V tomto případě ovšem pořád přetrvává výše zmíněná chyba z důvodu cross site requestů. Stačí chybu nacpat do googlu a pár řešení vyjede. Našel jsem ovšem efektivnější možnost posílání url a to tak, jak jsem původně chtěl, takže směle skvěle se vrhnu do něj, je to jednodušší a hlavně pohodlnější, než několik skriptů a využívání třeba JSONu.

edit: Chyba lávky! Ještě jednodušší to je. Nepředával jsem parametr url, takže ono zmíněné řešení mě pokoplo správným směrem – CakePHP dokáže využívat parametry u metody get!!! Takže jsem do controlleru přidal jednoduchou bezparametrickou metodu add(), ve které tyto parametry přečtu:

function add(){
        if(isset($_GET['vstup']))
            $vstup = $_GET['vstup'];
   . . .

A teď můžu tento controller bez problému volat i s adresou jako s parametrem (např. http://www.libisemi.cz/add?vstup=http%3A%2F%2Fshmoulicek.unas.cz/ ) . Aneb potvrzuji moje oblíbené rčení i chování: proč dělat věci jednoduše, když jdou dělat i složitě :-).

Libisemi, tvorba bookmarkletu

Pro potřeby libisemi, "prvního asociálního sociálního serveru" jsem potřeboval vytvořit bookmarklet. Protože to však nešlo udělat jednoduše, jako odeslání adresy pomocí GETu, protože na straně serveru používám framework CakePHP a v něm user friendly URLs ve formátu http://domain/controller/action/param. V tomto případě bych jako parametr nemohl předat http adresu. Z toho důvodu jsem byl nucen poslat tuto informaci metodou POST. A když už takto, tak rovnou asynchronně a počkat si na výsledek. V tomto postu bych se chtěl podělit o získané zkušenosti vzniklé na základě vyřešení vzniklých problémů.

Pro potřeby libisemi, "prvního asociálního sociálního serveru" jsem potřeboval vytvořit bookmarklet. Protože to však nešlo udělat jednoduše, jako odeslání adresy pomocí GETu, protože na straně serveru používám framework CakePHP a v něm user friendly URLs ve formátu http://domain/controller/action/param. V tomto případě bych jako parametr nemohl předat http adresu. Z toho důvodu jsem byl nucen poslat tuto informaci metodou POST. A když už takto, tak rovnou asynchronně a počkat si na výsledek. V tomto postu bych se chtěl podělit o získané zkušenosti vzniklé na základě vyřešení vzniklých problémů.

Začnu nejprve rozhraním na straně serveru. Dovolím si vypustit zbytečnosti a defakto celý zápis zobecnit. Vzhůru tedy do Controlleru. Následující funkce (vlastně spíš metoda, protože je umístěna ve třídě rozšiřující AppController, jen mi tohle vznostné oslovení u PHP nesedí ;-)) přijmě data zaslaná (asynchronně) pomocí metody post a pustí se do zpracování, které předá zobrazovací vrstvě.

function addajax(){
    // prijeti dat
    $formular = $this->params['form'];
    $url = $formular['url'];
      
    // vystupni layout chci xml a nechci zobrazovat debug informace
    $this->layout = 'xml';
    Configure::write('debug',0);
   
    /*
     * Dalsi akce, jako je napr. parsovani ziskaneho dokumentu
     */
       
    // zapsani informaci a ulozeni do session
    $output[0]['url'] = $url;
       
    $this->Session->write('toSave',$innerHTML);
    $sessId = $this->Session->id();
       
    // zapisu jeste cislo session
    $output[0]['sessionId'] = $sessId;
    // a cele pole predam vrstve View
    $this->set('output', $output);
}

 Uvnitř předcházející metody vyžaduju zobrazení v layoutu xml, ten je definován následujícím způsobem, který mi vygeneruje dokument typu text/xml, zapíše do něj záhlaví a vloží vlastní strukturu, která je generovaná uvnitř vrstvy View. Celkový výstup je uveden na výpisu níže.

<?php
    header('Content-type: text/xml');
    echo $xml->header();
?>
<addInfo>
<?php echo $content_for_layout; ?>
</addInfo>

Další činnost prováděná uvnitř metody v Controlleru je vytvoření pole "output", které je předáno vrstvě View. Do prvního prvku tohoto pole ještě přidám požadované url (index "url"), celou tuto konstrukci uložím do session a následovně do toho stejného pole přidám i číslo této session (index "sessionId"). Samotný výstup v podobě XML je generován ve view, kterému předávám data pomocí posledního řádku ve výpisu kontrolleru. View je zhruba následující:

echo $xml->elem('sessId',null,$output[0]['sessionId']);
echo $xml->elem('url',null,$output[0]['url']);
. . .

Tato konstrukce za pomocí helperu Xml vygeneruje tagy sessId a url a vloží do nich dané hodnoty. Výstupem je potom následující XML, které je odesláno zpět skriptu na straně prohlížeče (klienta), který provedl volání.

<?xml version="1.0" encoding="UTF-8" ?>
<addInfo>
    <sessId>4f40061d6ffa5e6a4a8f4b64b79eb4d3</sessId>
    <url>http://domain/page.htm</url>
</addInfo>

Bookmarklet jsem definoval konstrukcí tzv. anonymní funkce – void((function(){ . . . }()), který provede kód umístěný vevnitř. Tímto kódem vytvářím nový element "script", který připojím ke stávající stránce.

 javascript:
    void((
        function(){
            var element=document.createElement('script');
            element.setAttribute('src','http://www.libisemi.cz/send.js');
            document.body.appendChild(element);
            var http=getHttp();
            sendPost(http,encodeURIComponent(location.href));
        }()
    )

Tento skript sestává z metody, která na základě typu prohlížeče vygeneruje tzv. HttpRequest objekt, který je použit pro připojení k serveru a odeslání dat. V prohlížečích Netscape Navigator, Apple Safari a Firefoxu se tento objekt vytváří pomocí konstruktoru objektu XMLHttpRequest(), který je součástí objektu window, takžestačí otestovat jeho existenci. Microsoft samozřejmě musí mít něco extra, takže tento objekt vytváří pomocí ActiveX komponenty, takže pokud nevyjde první testování, otestuju existenci ActiveXObject komponenty. Pokud ani tohle testování nevyjde, ohlásím chybu a uživatel má smůlu.

function getHttp(){
    var http = false;
   
    if(window.XMLHttpRequest){
        http = new XMLHttpRequest();
    }else if(window.ActiveXObject){
        http = new ActiveXObject("Microsoft.XMLHTTP");
    }else alert("nejde vytvorit request!");
   
    return http;
}

Vytvořený HttpRequest objekt předám  funkci, která pomocí něj metodou POST odešle data na server. Pomocí metody onReadyStateChange je ještě nastavena další anonymní funkce, která testuje přijatou odpověď serveru – stav požadavku (readyState), kdy čeká na požadavek, až je kompletní a současně na stavový kód protokolu HTTP 200 – OK. Pokud tato skutečnost nastane, pokračuje ve zpracování, rozparsuje přijaté xml a přesměruje stávající dokument na novou adresu, ke které přiloží získané informace (v tomto případě číslo session, které vygeneroval server na základě přijatých dat POST metodou). Jedná se o jednoduchý AJAX, spousta dalších informací se válí volně na síti, nebo někde v archívu mého blogu.

function sendPost(http,url){
    http.open("POST","http://www.libisemi.cz/addajax");
    http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    http.setRequestHeader("Connection","close");
    http.onreadystatechange = function(){
        if(http.readyState == 4 && http.status == 200){
            var response = http.responseXML;
            // … parsovani odpovedi a ziskani promenne 'id' – cislo session
            window.location = "http://www.libisemi.cz/addform/"+id;
        }
    }
    http.send("url="+url);
}

 Tímto způsobem je vytvořen (polo-)funkční bookmarklet, který funguje po druhém kliknutí a pouze na stejné doméně. Nemám ale rád polovičatá řešení, tak už mám rozdělané řešení. Tohle bych si ale dovolil popsat až příště, tenhle post mi připadá už dost dlouhý ;-).

Webovosti

http://www.nextdb.net/

http://aviary.com/tools/phoenix

http://www.roadsharing.com/

 http://mobilizy.com/

http://www.icerocket.com/?tab=web

http://www.oswd.org/

http://opengoo.org/

http://www.howstuffworks.com/

http://earth-api-samples.googlecode.com/svn/trunk/demos/milktruck/index.html

http://remindr.info/

http://www.nextdb.net/

http://aviary.com/tools/phoenix

http://www.roadsharing.com/

 http://mobilizy.com/

http://www.icerocket.com/?tab=web

http://www.oswd.org/

http://opengoo.org/

http://www.howstuffworks.com/

http://earth-api-samples.googlecode.com/svn/trunk/demos/milktruck/index.html

http://remindr.info/

Webovosti

Oukej, mám tu další nášup google-mapoidních zajímavostí. Asi nejzajímavější zajímavost, která by mohla zajímat 🙂 je streetview pro Francii, jednotlivé etapy Tour De France. Začít je vhodné ve městě nad Seinou a výhledem na Eifelovku a doufat, že záhy začnou přibývat i další části Evropy!

Oukej, mám tu další nášup google-mapoidních zajímavostí. Asi nejzajímavější zajímavost, která by mohla zajímat 🙂 je streetview pro Francii, jednotlivé etapy Tour De France. Začít je vhodné ve městě nad Seinou a výhledem na Eifelovku a doufat, že záhy začnou přibývat i další části Evropy!

Jak je možno ve streetview pozorovat zloděje v akci, nebo prodavače cracku (bohužel, už jsou v systému nové fotky, takže např. tady je vidět původní), tak je možné i pomocí satelitních snímků pozorovat táhnoucí hejna ptáků, potápěče, slony a mnoho dalších věcí; a jako že to jsou mnohdy opravdu spectacularrrr fotky :-).

Ale teď už do jiných vod, nějaké to společenství, to je dneska moderní… 

Image Hosted by ImageShack.us          

Mikroblogování je dneska docela rozšířená věc, stejně tak internet v mobilu a jejich spojení taktéž. Ale možnost spojení ještě s dalšími lidmi v dané lokalitě, informací, kdo je nejblíž, co se dá nalézt za rohem… to sice někdo vytvořil jako aplikaci pro Androida, ale kolik lidí má dneska Androida plně běžícího v mobilu? Proto je tu služba Plazes, nyní navíc zabraná Nokií, takže by za něco stát mohla ;-), případně my.loki dělající totéž, navíc nezabraná nokií, takže by taky za něco stát mohla :-D.

Dnešní internetový člověk se nechává šmírovat kdečím – dobrovolně sděluje aplikacím při registraci svoji mejlovou adresu i s heslem, rodné příjmení své matky, nechává obří společnosti jako je google čmuchat u sebe na pevném disku a indexovat tajné soubory ze sobotní pařby, tak proč by v reálném čase nemohl naprášit i svoji polohu? Stačí telefon s GPSkou a datovým připojením a samozřejmě registrace na ipoki.

Image Hosted by ImageShack.us

Asi nejsem sám, kdo zjistil, že zjišťovat počasí pomocí pocasi.cz je uplně na ho*no a začal používat např. pohled z okna, wunderground, pluginy do prohlížeče, případně widget na nějakém osobním portálu, jako je netvibes, či iGoogle, nebo rovnou v systému. Nevím proč to sem píšu, ale přijdou mi zajimavé novinky, že wunderground či FOX weather news používají na mapách nově vrstvu se zobrazením aktuální teploty, samozřejmě všechno pěkně scrollovatelné a zoomovatelné, enjoy!

No a na závěr si nechám pomocníka s cestováním, když už dneska byla řeč o dobrovolném bonzování informací – tripit. Tento pomocník funguje tak, žese mu pošlou veškeré mejly ohledně cesty – letenky, booky aut, hotelů… a on na jejich základě postaví itinerář, navrhne trasy a všechno přehledně zobrazí… Užitečná věc. Jen bych se potom moc nedivil, kdyby místo mě nasttupoval do letadla nějaký mr. Anderson :-). (Jen mě vrtá v hlavě, proč tato aplikace, tvářící se jako regulerní web2.0 nepoužila italskou topdoménu? Aha, ono trip.it už funguje a má v záhlaví docela praktickou radu :-)).

Moderní webové aplikace

Dovoluji si prilozit k nahlednuti mou bakalarku. Anotace je uvedena dale, prace je ke stazeni ve formatu PDF, mirne oklestena od smlouvy…

 

Dovoluji si prilozit k nahlednuti mou bakalarku. Anotace je uvedena dale, prace je ke stazeni ve formatu PDF, mirne oklestena od smlouvy…

 

Anotace

Tato práce se zabývá analýzou dostupných systémů pro správu dokumentů a obsahu, výběrem vhodného systému a realizací základní funkčnosti portálu pro správu multimediálních dat. V úvodní části se zabývá využívanými technologiemi a druhy systémů pro správu obsahu, v další části je provedeno srovnání používaných systémů a výběr vhodného kandidáta pro realizaci portálu pro uchování multimediálních dat, v závěrečné fázi části je popsána realizace základní funkčnosti komponent tohoto systému. Jedná se o součást Projektu MPO ČR evid. č. FT-TA3/121 „Výzkum a ověření systému pro záznam a dlouhodobou archivaci multimediálních dat s inteligentním vyhledáváním“.

Klíčová slova

CMS, DMS, Java, JSF, Alfresco, Portal, Multimedia

Abstract

The objectives of this project are to analyse systems for content or data managing, and to find suitable systém for realisation base functions of multimedia content portal. The project contains comparison of systems in use, selection of suitable candidate and parts of realization of this project – multimedia content portal. This portal is a part of Ministry of Industry and Trade of the Czech Republic project evid. nr. FT-TA3/121 „Research and verification system for record and longtime archiving multimedia data with intelligent searching“.

Keywords

CMS, DMS, Java, JSF, Alfresco, Portal, Multimedia

PDF ke stazeni

Smrdi.com konečně ve 100% provozu

Jak tak koukám, tak první příspěvek "spouštím betu" na smrdi.com jsem psal už před téměř třemi měsíci!!! Od té doby systém zahálel, jen jsem sem tam koukl, jestli se někdo zaregistroval… A neopravil jsem ani problemy se zbrazovani v IE, tomu je teď ale konec!

Jak tak koukám, tak první příspěvek "spouštím betu" na smrdi.com jsem psal už před téměř třemi měsíci!!! Od té doby systém zahálel, jen jsem sem tam koukl, jestli se někdo zaregistroval… A neopravil jsem ani problemy se zbrazovani v IE, tomu je teď ale konec!

Dnes jsem díky deiwimu na fóru grafika.cz tento problém dořešil a i ten debilní IE už zobrazuje stránky korektně. Takže asi začnu pomalu s kampaní a nějakými úpravami, které mám už nějakou dobu namyšlené, snad to vyjde a web začne žít, zatím tam je sotva pár rezidentů (a samozřejmě smrdící komunisti).

Možná by ještě nebylo od věci zmínit, proč jsem dal dohromady web, na kterým si uživatelé můžou vzájemně nadávat a plivat jeden na druhýho… Je to jednoduchý, stal se ze mě pěknej parchant, kterej nemá v sobě už ani kapku slušnosti či úcty ke svým bližním a tak podobně… Kecám, jen jsem prolízal diskuzní fóra a různé blogísky a podobně a uvědomil si, že lidi především na všechno nadávají, vzájemně si nadávají… Tak proč jim nevyjít vstříc? Proto www.libisemi.cz nechám ještě chvíli zaparkované a uvidíme, jestli budu mít chuť, náladu a čas na tom začít dělat.