Užitečné nástroje II. (nejen) pro .NET

Nedávno jsem zde chválil a doporučoval svůj oblíbený ReSharper. Dnes jsou na řadě další šikulové kteří umí ušeřit nějakou tu hodinku práce. A protože je ošklivé počasí, tak to tentokrát bude trochu jiné čtení…

Tak trochu si na to posvítit

Několikrát jsem se dostal do situace, kdy bylo z různých důvodů nutné analyzovat již zkompilovanou .NET assembly. Pro tyto případy mějte po ruce .NET Reflector.

 

Otevře zkompilovanou assembly a zobrazí její strukturu – namespaces, třídy a jejich členy, obdobě jako když si otevřete Class View ve Visual Studiu. Doubleclickem na metodu nebo property se v pravé části Reflectoru zobrazí okno "Disassembler" s dekompilovaným zdrojovým kódem.

Může se ale stát, že (nedej bože) máte assembly ve které by bylo potřeba udělat nějakou malou úpravu, ale zdrojové kódy nemáte – Reflectorem si ji sice prohlédnete, ale vy by jste potřebovali vyextrahovat a upravovat kompletní zdrojové kódy. Takové nástroje se dají nalézt, ale povětšinou jsou placené, což je jistá drobná nevýhoda. My se proto raději porozhlédneme po něčem dostupnějším – například po šikovném pluginu do Reflectoru, který se jmenuje FileDisassembler. V menu View/Add-Ins stačí stažený add-in načíst, pak přes Tools/File Disassembler aktivovat okno pluginu a vybrat jednu z otevřených assembly. Po kliknutí na "Generate" máte zdrojové kódy včetně projektového souboru…..dříve než si stihnete vypít kafe.

Databázová pohádka

Znáte pohádku o Jiříkovi a Zlatovlásce ? Jak zlý král snědl kouzelného hada, slyšel vrabce jak se hádají o zlatý vlas princezny Zlatovlásky a poslal si pro ni Jiříka…představte si ale, že by to bylo třeba takhle….

"Zlatovlásku ti dám, ale musíš si ji zasloužit", prohlásil její otec, který byl manažerem velkého databázového projektu. "Když splníš dva úkoly, každý den jeden …". Vzhledem k tomu že Jiřík měl již s manažery své zkušenosti, dostal trochu strach. Že by Zlatovláska ztratila někde v transakčním logu svůj prsten, nebo rozsypala do clusterovaného indexu svoje perly ? Kdepak….

"Zítra ti ukážu vývojovou, testovací a provozní databázi", začal její otec, "moje dcera se učila T-SQL a trochu ty databáze pocuchala a nikdo teď neví jak je porovnat a zjistit rozdíly" . Na druhý den si Jiřík vyzvedl loginy a připojil se k databázím. Nebyly zrovna malé, řádově několik set objektů. "Kdyby tu tak byli moji mravenci, povzdechl si…ale ti by mi stejně nepomohli. Zkusím proto raději SQL Server Compare".

Šikovná free utilitka napsaná ve VB6 dokáže takovou práci udělat za vás. Stačí zadat přihlašovací údaje a název databáze a vybrat co vše se má kontrolovat. Ve výsledkovém okně se po skončení objeví seznam nalezených rozdílů, který lze vyexportovat do Excelu. Po rozkliknutí řádků indikujících rozdíl se objeví porovnání rozdílných skriptů v prográmku ExamDiff. Rozdíl si můžete uložit jako Unix-diff soubor (formát který používá pro zobrazování rozdílů např. i WinCVS).

Jiřík měl za hodinku databáze porovnané a aby se nenudil tak výsledky zpracoval do powerpointové prezentace – s tím zabodujete u každého manažera. Zlatovlásčin otec byl večer nadmíru spokojen zálibně si přehrával stále dokola animované sekvence v powerpointu. Ten chlapík se mu začínal líbit. "Zítra budeš ale mít mnohem těžší úkol". Ráno si Jiříka zavolal a vytasil se s druhým úkolem: "Abychom napravili všechny číselníky, musíš udělat INSERT skript jejich obsahů z provozní databáze. Ten si jednak uchováme pro případ budoucí potřeby a také z něho znovu naplníš ostatní databáze". Jiřík se zachmuřil – 60 číselníků s celkově tisíci položek není zrovna málo…Vzpomněl si na malé krkavce, třeba by mu pomohli – a už mu křičí nad hlavou : "Počej chvíli a nic se neboj, něco ti doneseme". Za chvíli byli zpátky a v zobáku drželi CD s vypáleným ApexSQL Script. "Je to 30-denní trial, ale snad ti pomůže", zakrákorali a byli pryč.

ApexSQL Script je následovníkem prográmku "SQL Inserts", který již delší dobu používám, má stejné, lehce modernizované GUI a vylepšenou funkcionalitu. SQL Inserts uměl vygenerovat INSERTy z existujících dat zvolených tabulek, ApexSQL nabízí s podobným GUI totéž, navíc umí i generovat i schema. K vygenerování INSERTů stačí označit požadované tabulky a sloupce a spustit průvodce vytvořením skriptu, na jehož konci získáte úhledný INSERT skript.

Vytvoření skriptu bylo otázkou 10 minut. Manažer šikovnému chasníkovi rád dal svou všetečnou dceru, a Jiřík mu nádavkem přidal odkazy na další nástroje z dílny firmy Apex.

PH