👋 Nový obsah na borekb.cz

Info Tento blog je v "read-only módu" a nový obsah již nebude přibývat. O vývoji píšu na DevBlog.

Databinding u ovládacího prvku ListView

ListView je komponentou, která je známá třeba z průzkumníka Windows. Umožňuje zobrazit obsah v podobě ikon nebo seznamu a poměrně dobře se hodí na zobrazení read-only tabulkových dat (asi lépe než DataGrid nebo DataGridView). Nepříjemností je, že ListView neobsahuje podporu databindingu, takže je pro zobrazení dat potřeba napsat trochu kódu, na což my, zhýčkaní vývojáři .NETu, nejsme zvyklí :) .

Pokud s ListView pracujete pouze občas, asi bude nejrychlejší splodit pár řádků kódu a data naplnit ručně nějakou iterací přes řádky datového zdroje. Pokud jste však nadšenými příznivci prvku ListView a plánujete ho používat často, doporučuji přečíst článek Creating a Data Bound ListView Control. Ten obsahuje postup, kterak pomocí dědičnosti vytvořit vlastní prvek obsahující všechny vymoženosti ListView rozšířené o možnost velmi jednoduchého navázání na datový zdroj.

Zařazeno do kategorií |

Re: Jak blogovat a přežít

Na ILblogu vyšel článek Jak blogovat a přežít, který mě donutil k malému zamyšlení nad rolí autora blogu ve vztahu ke svým čtenářům.

Ivo Lukačovič doporučuje autokrativní přístup, kdy má autor být neomezeným pánem svého blogu, nemá se stydět za mazání komentářů z jakéhokoliv důvodu apod. Typickým příkladem je Hulánův blog WELL.DONE (i když vlastně není jasné, zda články vůbec od pana Hulána pocházejí).

Zařazeno do kategorií |

QueryADataSet - SQL dotazy pro DataSet

DataSet je zajímavým objektem technologie ADO.NET. Jedná se o in-memory databázi, která může obsahovat tabulky, relace, omezení, pohledy apod. Řádky v tabulce je možno třídit a filtrovat, lze vyhledávat řádky podle hodnoty primárního klíče nebo provádět další kousky pomocí metody Compute(), plnohodnotý SQL jazyk však k dispozici není. Není tak snadné provádět subdotazy, různé joiny apod.

Alespoň částečným řešením je knihovna QueryADataSet, která přináší implementaci podmnožiny jazyka SQL ke snadnému použití v DataSetech. Zde je příklad z domovské stránky produktu:

Zařazeno do kategorií |

Proč Google strká tolik věcí do query stringu?

Pokud chci někomu poslat odkaz na výsledek hledání v Googlu, rád bych jen zkopíroval URL, které by vypadalo následovně: http://www.go­ogle.com/sear­ch?q=stahnete­+si+listicku. Z nějakého záhadného důvodu však Google do URL nacpe i kupu dalších věcí, takže odkaz ve výsledku vypadá takto: http://www.go­ogle.com/sear­ch?hs=Zto &hl=cs&safe=of­f&c2coff=1 &client=firefox-a &rls=org.mozi­lla%3Aen-US%3Aofficial &q=stahnete+si­+listicku &btnG=Hledat &lr=.

Zařazeno do kategorií |

Nové ikony ve Visual Studiu 2005

Zhruba před rokem Soma na svém blogu oznámil, že nové Visual Studio bude obsahovat aktualizovanou sadu ikon pro použití ve vlastních programech zdarma. Dneska jsem se chtěl na tyto ikony podívat a ejhle – nikde jsem je nemohl najít. Pokud máte stejný problém, hledejte v adresáři C:\Program Files\Microsoft Visual Studio 8\Common7\VS2005I­mageLibrary – zde leží soubor VS2005ImageLi­brary.zip, který všechny ikony v několika formátech obsahuje.

Zařazeno do kategorií |

Nasazení ASP.NET aplikace využívající SQL Server Express na běžném hostingu

Až doposud jsem si myslel, že nasazení ASP.NET aplikací je snadnou až triviální záležitostí. Podle všech reklamních sloganů i logiky architektury ASP.NET by měl fungovat zázrak jménem xcopy deployment, zvlášť když nový SQL Server 2005 umožňuje databáze jednoduše nahrát jako jeden nebo několik MDF souborů. Jak ale vypadala realita, když jsem někde na netu potřeboval zprovoznit ASP.NET aplikaci do školy?

Začal jsem na svém hostingu, kde ASP.NET a SQL Server 2005 Express běží někdy od listopadu. Jakýkoliv pokus o práci s databází však končil chybou „Failed to generate a user instance of SQL Server due to a failure in starting the process for the user instance. The connection will be closed.“ Asi hodinu jsem se problém snažil řešit s pracovníkem podpory, na webu jsem pročetl mnoho článků a diskuzních fór, ale vše bez úspěchu (mezi nejlepší zdroje patřil článek Tomáše Petříčka Nejčastější chybové hlášky SQL Express 2005 a diskuze na MSDN forums). Chyba je kdoví kde – možná jsou na nějaký soubor špatně nastavená práva, možná by pomohla reinstalace, ale jisté bylo jen to, že na mém hostingu aplikaci zřejmě nezprovozním.

Zařazeno do kategorií |

There is already an open DataReader associated with this Command which must be closed first

Představte si následující kód, ve kterém je využíváno jediné připojení k databázi (detaily jsou vynechány):

reader = command.ExecuteReader();
while (reader.Read()) {
  ...
  updateCommand.ExecuteNonQuery();
  ...
}

Tento kód skončí výjimkou „There is already an open DataReader associated with this Command which must be closed first“.

První věcí je, že popis výjimky moc vývojáři nepomůže. Zpráva totiž napovídá, že je s jedním Commandem asociováno víc DataReaderů, což ale na první pohled není pravda – jediný otevřený DataReader je asociován s objektem command, který není totožný s objektem updateCommand. Navíc vykonáváme ExecuteNonQuery a žádného DataReadera nevytváříme. Pro začátečníka mého typu je tedy hláška zcela k ničemu, naopak je spíše matoucí. (V souvislosti s tím doporučuji shlédnout skvělý track PRS223: Getting Users to Fall in Love with Your Software: 2005 Editionvideí z PDC 05, kde se na téma zbytečných hlášek pobavíte a poučíte zároveň.) Jen pro úplnost poznamenám, že hláška svůj smysl má, protože oba objekty command jsou propojeny přes objekt Connection a DataReader se vytváří i při ExecuteNonQuery, protože tento příkaz vrací počet ovlivněných řádků. Ale to je celkem jedno, hláška prostě dobrá není.

Zařazeno do kategorií |

Historie jazyků C a Visual Basic (tak trochu jinak)

Pokud se chcete dobře pobavit, přečtěte si články History of the BASIC family of languages a History of the C family of languages. Zde je malý aperitiv:

1997 – Taking the advice of hallucinating industry analysts, Corel decides to rewrite all their applications, including WordPerfect, in Java. The end result is the first known word processor that is slower to use than a typewriter.

Zařazeno do kategorií |

Omea končí?

JetBrains Omea je zajímavý kousek softwaru, který primárně používám jako RSS čtečku, ale umí pracovat třeba s usenet skupinami, s maily, s webovými záložkami atd. Právě byla vydána nová verze 2.1 (release notes), což je prima, ale současně jsem se v diskuzní skupině dočetl, že Omea je už od září oficiálně nepodporovaný projekt:

Since September'05, development team was cut significantly. JetBrains decided to not support the product anymore, and most of the latest development/fixes were done in our free time (those Omeans who remained in the JetBrains have their new responsibilities in IntelliJ IDEA project). Thus I hope everybody understands now that the latest months were just really hard.

Zařazeno do kategorií |

Tohle je hrozný web

Chcete vidět typický příklad špatně udělaného blogu? Právě se na něj díváte.

  • Je použit defaultní skin WordPressu, což je trapné a velmi málo nápadité. Autor, který si neumí zařídit aspoň trochu osobitý design, pravděpodobně ani sám moc osobitý nebude.
  • Přeložena je pouze část uživatelského rozhraní. Slovíčka „posted in“, „comments“, ale i divný formát data (Leden 12th, 2006) svědčí o značném amatérismu.
  • Kategorie jsou nekoncepčně připravené a články nejsou vždy zařazeny do odpovídající rubriky.
Zařazeno do kategorií | |

Komentáře jsou uzavřeny (blog je v read-only módu). Pokud mě chcete kontaktovat, můžete mailem.