Pondělí, březen 27, 2006

Bill Gates s hosty v Las Vegas

Zajímavý projev měl Bill Gates na konferenci Microsoftu MIX06 v Las Vegas 20. března 2006. Billa Gatese nepovažuji za moc úspěšného vizionáře, ale nepochybně je důležité jeho myšlenky sledovat. Je to mocný muž, který je schopen informační technologie silně ovlivňovat. Pokud se Vám nechce sledovat celé video, které je volně ke stažení, dovolím si uvést heslovitě pár myšlenek, které osobně považuji za zajímavé (kráceno, mé poznámky jsou uvedeny kurzivou):

Bill GatesMicrosoft doposud považoval web a aplikace za dvě samostatné věci. Nyní je spojí a to ho přenese na novou úroveň. Web klient bude téměř stejně bohatý jako klasická tlustá aplikace. Máme architekty a vývojáře pro všechny typy aplikací. Na webu budou úplně nové aplikace, které v současné době žádné stránky neobsahují (Gmail?). Jednou z důležitých věci na webu je personifikace. Na web přijdeme s nástroji, které umožní aplikacím být "bohatší", než kdy před tím. Potom bude lhostejné, zda s aplikacemi budeme pracovat pomocí prohlížeče, telefonu nebo nějakého jiného zařízení. Stále lepší připojení k internetu umožňuje pracovat s videem, web aplikací s komfortním ovládáním nebo dokonce stažení tlusté aplikace.

Webový prohlížeč je klíčový prvek systému, ve kterém většina uživatelů stráví nejvíce času. Usilovně pracujeme na nové verzi Internet Exploreru 7. Jde o významnou verzi s novým lepším vzhledem a především lepší bezpečností. IE 7 bude volně ke stažení pro Windows XP a samozřejmě bude součástí Windows Vista. Máme ověřeno, že uživatelé jsou ochotni stahovat nové a nové verze webového prohlížeče (Firefox?). Nové verze prohlížeče budou mnohem častěji, než jsou nové verze operačního systému Windows. Nyní pracujeme na dalších dvou verzích. Zde vidíme naši velkou příležitost (zaspání?).

Za další důležitou věc považujeme RSS. Již dnes je velké množství zdrojů poskytovaných pomocí RSS a v budoucnu bude ještě větší. To se blíží k programovatelnému webu, kde je vlastně každá stránka je skoro jako komponenta v software aplikaci. Máme mnoho nástrojů, které usnadní tyto aplikace naprogramovat. Především Windows Communication Framework, kódové jméno "Indigo". Nyní jsme na začátku věku webových stránek, kde uživatel může vzít jejich části a znovu je spojit podle svých představ a potřeb.

Pro vývoj webových aplikací nové generace, které umožňují maximální interaktivní zážitek uživatele, připravujeme technologii Atlas (Ajax). Byli jsme v minulosti  první, kteří přišli s takovou aplikací - Outlook Web Access v roce 1997. Atlas bude nová úroveň u webových aplikací.

V roce 2005 jsme prodali 6 milionů Windows Media Center, z toho 48 procent v prosinci. Zde očekáváme velký rozkvět trhu.

Aber Whitcom z MySpace se pochlubil, že mají 65 milionů registrovaných členů, 260 000 členů se registruje každý den a v únoru letošního roku měli 38 milionů unikátních návštěv a 23 miliard zobrazených stránek. To vše dosáhli pomocí MS SQL 2005 a ASP.NET 2.0. Technologie Microsoftu se používají i pro vývoj aplikací.

Úterý, březen 21, 2006

Open Source vývojáři preferují web (tenké) aplikace

Brouzdal jsem po SourceForge.net a napadlo mne zajímat se o to, jaké aplikace se v Open Source aktuálně programují. Je preferován tlustý GUI klient nebo web aplikace? Všechny údaje jsou k počátku března 2006:

Grafické prostředí Počet projektů Podíl (%)
Web-based 21 071 36,69
Win32 (MS Windows) 16 570 28,85
NET/Mono 598 1,04
Java (AWT/Swing/SWT) 2 823 4,91
Mac OS 10 (Carbon/Cocoa) 2 195 3,82
X (Gnome/KDE/X) 14 180 24,59
Celkem 57 437  

Na první pohled tabulka říká, že web projektů je (pouze) necelých 37 procent. Pokud se ovšem podíváme na nová grafická uživatelská prostředí (GUI), tj. NET/Mono a Mac OS 10, tak zjistíme, že nových projektů v nich moc nevzniká. Kdybych já dnes měl programovat tlustou GUI aplikaci, určitě bych jí dělal NET/Mono nebo pro Mac 10. Přímé programování pod Win32 nebo X je velmi náročné a navíc je při dnešním běžném výkonu osobních počítačů zbytečné. Proč tedy nové aplikace pro tlusté klienty nevznikají. Asi protože, až na nezbytně nutné výjimky, programátoři upřednostňují programování pro web.

Ještě zajímavější otázkou je: chtějí uživatelé aplikace pro web nebo chtějí tlusté klienty? Já osobně tomu totiž moc nerozumím. Sám jsem velmi aktivním uživatele osobního počítače, který používám jak v prácí, tak ve svém volnu. Mezi spoustou různých aplikací v několika oborech ale není ani jedna webová. Jsem staromódní nebo je to v něčem jiném?

Pátek, březen 17, 2006

Code Project píše o Mono

Na oblíbeném serveru The Code Project vyšel velmi zajímavý a obsáhlý článek o Mono projektu (MONO: an alternative for the .NET framework). Mimo popisu, historie, aktuálního stavu a dlaších informací autoři provedli i několik testů rychlosti, kde porovnávali platformu .NET a Mono.

Středa, březen 15, 2006

Apache poráží IIS i u největších web serverů

Podle březnového měření Netcraftu je podíl HTTP serveru Apache 68,70 procent (podíl stoupá) a Microsoft IIS 20,51 procent (podíl klesá). Já jsem se ve svém měření zaměřil na nejnavštěvovanější servery na světě podle služby Alexa Top 500. Zde jsem zjišťoval jaké http servery používá 100 nejnavštěvovanějších web serverů. Informace jsem získával z hlaviček Home Page stránek jednotlivých služeb. Bohužel spousta těchto webů skrývá identifikaci svých serverů nebo mají servery různě upravené. Například Google používá svůj vlastní server GWS, aktuálně ve verzi 2.1. Celkem u 13 procent serverů se vůbec nepodařilo identifikaci zjistit.

Co se týká vlastních výsledků mého měření, tak Apache potvrdil své vítězství, a to s 52,3 procentním podílem. Microsoft IIS byl na druhém místě 15,2 procent. Ostatní servery neměly významný podíl. Výsledek by mohl být pro Microsoft IIS ještě horší, pokud bych předpokládal, že minimálně část serverů u kterých se nepodařilo identifikaci zjistit, používá upravený Apache. Tento můj malý test potvrdil, že určité marketingové materiály, které uvádějí, že Apache není vhodný pro velmi zatížené servery a jeho vysoký podíl je dán velkým počtem malých serverů, nejsou pravdivé. Navíc, pokud bychom odpočítali servery přímo vlastněné Microsoftem (firemní, MSN, Passport) a servery eBay, které sice běží pod IIS, ale používají aplikační server WebSphere (Java), tak by se podíl Microsoft IIS snížil na 7,6 procenta!

Pár zajímavostí:

  • Nejrozšířenějším modulem pro Apache je PHP a na druhé místě Perl.
  • Apache 2 používá 7,6 procenta, Apache 1.3 používá 18,5 procenta, zbytek verzi 1.2 nebo se nepodařilo zjistit. Většina služeb tedy raději zůstává u prověřené technologie.
  • Zhruba polovina uživatelů Microsoft IIS používá verzi 5 a druhá polovina verzi 6.

Čtvrtek, březen 09, 2006

TIOBE: Java 6x populárnější než .NET

TIOBE Programming Community Index je velmi zajímavá služba podle které lze orientačně zjistit, jaké programovací jazyky jsou na na světě nejpopulárnější a v jakém jsou vzájemném pořadí. Index může sloužit k tomu, aby si vývojář zkontroloval, zda jsou jeho znalosti a schopnosti stále moderní, nebo jaké má udělat strategické rozhodnutí o tom, který programovací jazyk zvolit při vývoji nového systému.

TCPI index (únor 2006)

Velmi zajímavá je i metodologie měření. Index je aktualizován každý měsíc a je založen na celosvětové dostupnosti vývojářů, kurzů a produktů založených na příslušném jazyku. Je důležité podotknout, že index není o nejlepším programovacím jazyku a ani nesleduje v kterém jazyku bylo napsáno nejvíce řádků programovacího kódu. Vlastní metodologie je popsána na stránkách indexu. Velký výkyv v grafu v dubnu 2004 je zapříčiněn změnou technologie ratingu (PageRank) u Google. Toto se projevilo velkým poklesem především u Javy a C++. TIOBE vývojáři za účelem minimalizování podobných kolísání v budoucnu zahrnuli dvě další vyhledávací služby (MSN a Yahoo).

Služba funguje již od roku 2001 a její výsledky jsou někdy překvapující. K dnešnímu měsíci, březen 2006, je nejrozšířenějším programovacím jazykem na světě Java s 22%. Jako druhý jazyk je C s 18% a třetí programovací jazyk C++ má 11%. Základní tabulka a graf, který ukazuje vývoj od roku 2001 je k dispozici pro prvních dvacet programovacích jazyků. Největší meziroční vzestup má opět Java (+3,01%). Hned za ní je Basic (+2,99%). Na druhé straně největší meziroční pokles je u skriptovacího jazyku Perl (-2,73%). Procedurální jazyky celkově meziročně poklesly o 3%, objektově orientované naopak stouply o 4%.

Největším překvapením pro mne je naprosté vítězství Javy. I když bychom sečetli VB.NET a C#, je stále Java 6x populárnější než .NET a nůžky se stále otevírají. Pro Microsoft to v žádném případě není dobrá zpráva. To, že si C dlouhodobě drží svou pozici a naopak C++ klesá, podle mého znamená: systémové programování bude stále v C, C++ bude alespoň částečně nahrazeno Javou a v některých případech technologií .NET.

Pondělí, březen 06, 2006

.NET 2 - čtení ze souboru (MSDN)

.NET 2 přinesl nové API pro třídu File, které umožňuje jednoduché čtení a zapisování celého textového souboru. Jde o metody File.ReadAllLines, ReadAllBytes a ReadAllText. Název metod je samopopisný a tyto metody velmi snadno umožní načíst do jednoho objektu, nebo do pole objektů, celý obsah souboru. Pokud potřebujete získat obsah celého souboru jsou tyto nové třídy k nezaplacení. Například jestli potřebujete načíst celý obsah souboru a vložit do do Textboxu,  použijte metodu ReadAllText:

Načtení souboru pomocí StreamReader:

StringBuilder sb = new StringBuilder();
using (StreamReader sr = new StreamReader(filename))     {
    while (sr.Peek() >= 0)    {
        sb.AppendLine(sr.ReadLine());
    }
}
textBox1.Text = sb.ToString();


Načtení souboru pomocí  ReadAllText:

textBox1.Text = File.ReadAllText(filename);

Zajímavé je, že ReadAllText nemusíte zabalit do try bloku. Z hlediska výkonu jsou oba vzory podobné, ale použití ReadAllText je zřetelně jednodušší. Kód s ReadLine je možno psát i jiným způsobem, toto je pouze jedna z možností.  Při použití metod File.ReadAllLines, ReadAllBytes a ReadAllText je soubor samozřejmě načten najednou a celý obsah souboru je uložen do paměti.

Parsování souboru pomocí StreamReader.ReadLine

Dim lp As New List(Of Person)
Using sr As New StreamReader(filename)
    Do While sr.Peek() >= 0
        Dim p as Person
        If Person.TryParse(sr.ReadLine(), p) Then lp.Add(p)
    Loop
End Using
Return lp

Parsování souboru pomocí File.ReadAllLines

Dim lp As New List(Of Person)
For Each nextPerson As String In File.ReadAllLines(filename)
    Dim p as Person
    If Person.TryParse(nextPerson, p) Then lp.Add(p)
Next
Return lp

Ve výše uvedeném případu je situace trochu jiná. Použití ReadAllLines není o moc kratší a navíc je celý soubor zbytečně v paměti. Varianta s ReadLine je zřejmě lepší i když rozdíl by se projevil až u významně velkého souboru.