pátek 13. února 2004

Únik zdorojových kódů Windows 2000 and Windows NT 4.0

Na každého jednou dojde... Zdrojové kódy operačního systému Windows 2000 a Windows NT 4.0 se ilegálně objevily na internetu. V Redmondu je z toho asi pěkný poprask, o tom, že se nejedná o žádnou kachnu svědčí oficiální vyjádření Statement from Microsoft Regarding Illegal Posting of Windows Source Code. No a pak že Microsoft nepochopil open source(informace via. ienik).

čtvrtek 12. února 2004

A zase tunelujeme...

A jsem tu podruhé - znovu bujuju s administrátory v naší firmě :) ... Pokus s tunelováním pomocí programu Socks via Http bohužel nevyšel - po několika dnech si administrátor naší proxy všiml velkého počtu requestů na konkrétní ip adresu (ono totiž irc/icq je hodně ukecaná záležitost...) a zakročil. Nyní jsem protuneloval icq přes jabber transport - ten totiž využívá protokolu HTTP verze 1.1 a konkrétně funkce CONNECT. Abych byl přesný - jde o klienta, který toho využívá a tím je program jménem jajc. Jde o binárku, která se nemusí instalovat a navíc toho hodně umí - včetně SSL. Zatím Vám určitě nedochází o co jde a ani nemůže - ono totiž pokud se na naší (netuším jak je to s jinými proxy server - to stojí za otestování) proxy použije metoda CONNECT, pak se samozřejmně vytvoří k danému serveru tunel skrz proxy, ale co je zajímavější - proxy neumí sčítat data a jednotlivé requesty jsou brány jako jeden - ten počáteční. Z toho vyplívá, že pokud admin nebude mít nějaký nástroj na sledování příchozího/odchozího trafficu, pak nemá šanci mě vystopovat :) - samozřejmně pokud nečte tento blog... :] ... Samozřejmně, že si může přečíst log soubor, ale na něm nebude nic moc nápadného - pár CONNECTů na jeden server za celý týden a téměř žádná data (samozřejmně, že občas na net budu chodit klasickým způsobem aby to nebylo moc podezřelé :) )...

Takže je tu fáze přípravy - musím totiž naprogramovat obalovací třídu, která bude přijímat inputStreamy a zabalovat je do jednoho, který bude spojen s proxy - bude to program sedící na mém počítači a naslouchající na určitém portu. Navíc program nesmí přijmout více jak jeden inputstream najednou aby z toho klientská část neměla guláš. Na tento program bude připojen třeba browser a bude dávat klasické requesty - ty poputují dále skrz proxy až do Internetu - tam je zase na nějakém spřízněném serveru mít pustěný program, který bude číhat na určitém portu a všechny requesty bude posílat dál - například squid proxy na localhostu - ta se postará o vše další. Asi si říkáte, že je to moc povyku pro nic, ale tady opravdu existují restrikce, které nám znesnadňují používat Internet tak jak bysme potřebovali :)...

Navíc mě napadlo zabalit tím requesty starého známého Socks via Http - na druhé straně by samozřejmně musel být serverovská část tohoto programu (namísto squida) a tím pádem by bylo možné tunelovat nejen http...

Takže teď už je jen na mě dokopat se k tomu abych vše nakódil a doufal, že náš admin nečte tenhle blog :)

FindBugs 0.7.1 release

Yesterday 11-Feb-2004 was release 0.7.1 version of code mistake and bug detector FindBugs. This version focused major feature enhancements and incorporated an eclipse plugin.

středa 11. února 2004

EclipseCon 2004

Dojmy a postřehy z nedávné EclipseCon 2004 věnované open source projektu Eclipse, která se konala 2.2-5.2 v Anaheimu přináší v reportáži EclipseCon 2004 Report Miko Matsumura a Adib Saikali. Mezi hlavní témata patřilo Rich Client ve spojitosti s Eclipse 3.0, postoj Sunu k Eclipse a mnoho dalších

Související články

pondělí 9. února 2004

Programovat znamená psát testy

Programovaní stejně jako programovací techniky se neustále rozvíjejí, v současnosti se stále začínají prosazovat metodiky na stolené odnoží, v budoucnu třeba mainstreamem, jménem Xtrémní programování. Především důraz na testování a testovací techniky a jejich metodické rozpracování, které zavedlo jako naprosto nepostradatelnou součást vývoje softwaru, dalo vzniknout směru vývoje, který se označuje jako test-driven development (TDD).

Prvním krokem, který sem musí vždy udělat není implementace vlastní funkčnosti, ale testu který tuto funkčnost prověří. Pokud bychom například chtěli implementovat jednoduchý objekt pro základní matematické operace, napsali bychom nejdříve test, který by tyto prověřil. Test je ve své podstatě pouze vyjádření toho co od dané implementace očekáváme. Pokud očekáváme, že volání metody public int secti(int a, int b) vrátí součet argumentů a a b můžeme napsat jednoduchý test.

 
   int ocekavanaHodnota = 2;
   int vracenaHodnota = secti(1, 1);
   if(ocekavanaHodnota != vracenaHodnota) {
	//Implementace metody secti nenaplnila naše očekávání,
	//je třeba jí opravit. 
   }

Kouzlem testů je fakt, že naše očekávaní určité funkčnosti se nemění, je pevně dané rozhraním objektu. Oproti implementaci, která se může časem měnit. Pokud budu mít například metodu pro třídění pole tak je věcí implementace jestli se použije bubble sort nebo quick sort, výsledkem(očekáváním) je stejně setříděné pole. Jinými slovy testy píšeme pouze jednou a zůstávají napořád. Jednotlivé testy se průběhem času na sebe nabalují a tak není problém zautomatizovat proces, který je bude spouštět jejich výsledky reportovat k vyhodnocení.

Výše uvedený příklad testování je poněkud neohrabaný ovšem svůj účel plní. V současnosti je mnoho nástrojů, které umožňují efektivní tvorbu testovacích objektů při vývoji za všechny bych jmenoval JUnit. Testy a vlastní proces testování snižuje náklady na vývoj a údržbu neboť pomáhá odhalit chyby při jejich počátku. Samozřejmě i testování má své hranice, pro mě osobně to je například testování logiky pracující nad databázovými daty.

Pokud Vás letmé intro do testů a testování zaujalo, pak následujte sic trochu javovské nicméně zajímavé odkazy Using JUnit With Eclipse IDE a Effective Unit Testing with DbUnit.

Související články

Další pohled na CVS

Na všechno lze nahlížet z různých úhlů pohledu a softwaru to platí dvojnásob. Systém CVS patří mezi nejpoužívanější řešení pro správu zdrojů a využívá jej mnoho open source i komerčních projektů. Michal Kára se pokusil najít v článku Stinné stránky CVS nejpalčivější problémy a neduhy, kterými CVS trpí.

V některých bodech bych s autorem polemizoval. Správa binárních souborů není to co by uživatele především tlačilo. Osobně považuji systém CVS vhodný pro správu především zdrojových resp. textových souborů. Se soubory binárního charakteru nelze z jejich podstaty zacházet jako se soubory textovými. Nelze je slučovat ani porovnávat podle obsahu, k čemu by to také bylo?

Další omezení jako přejmenování souborů, adresářů a mazání adresářů považuji stejně jako autor za horší, jak bylo trefně poznamenáno v diskusi pod článkem, refactoring adresářové struktury je takřka nemožný. Mezi další nevýhody či spíše nepříjemnosti patří synchronizace mezi jednotlivými větvemi. Pokud někdo zkoušel přepnout(update) z jedné větve do druhé u velkého projektu, dobře ví o čem je řeč.

Pokud Vás výše uvedené řádky postrašily tak je třeba dodat, že s kvalitním GUI klientem např. WinCVS není základní práce(update, commit, diff) nikterak složitá a i začátečník do ní po několika chvílích pronikne. CVS má určitě několik vad na kráse a určitě i chyb, ale při poměru cena/výkon najde těžko konkurenci.