Portfólio

FileUtils

FileUtils je jednoduchá aplikácia, ktorej hlavnou funkcionalitou je hľadanie duplicitných súborov na disku podľa ich obsahu. Je vhodná pri veľkom množstve PDF-iek alebo fotiek na disku. Medzi ďalšie funkcie a vlastnosti patrí:

  • spájanie a rozdeľovanie súborov,
  • skartovača súborov,
  • lokalizácia aplikácie,
  • systém pluginov.

Zaujímavosťou tohto programu je spôsob hľadania duplicitných súborov, využíva sa na to HashSet objektov reprezentujúcich súbor. Tieto objekty si uchovávajú cestu k súboru a jeho veľkosť. Veľkosť súboru sa používa v metóde GetHashCode , metóda Equals najskôr porovná veľkosti súborov, ak sa zhodujú prečíta ich a vypočíta ich MD5 hashe, ktoré následne porovná. Vďaka tomu je hľadanie duplicitných súborov rýchle (na bežnom notebooku z Intel i5 a točivým diskom cca. 1GB priemerne 300-500KB súborov, prehľadá za 30 sekúnd) a pamäťovo nenáročné.

Použité technológie

C# 4.0, WPF, lokalizácia pomocou T4 generátora resx súborov a vlastný WPF MarkupExtension pre dynamické načítavanie lokalizácie.

Hľadanie zhodných súborov

Nastavenia

UnitologyIs

Medicínsky informačný systém.

Kompletná dokumentáciu s popisom nájdete tu - UnitologyIs

UnitologyIs obrázok 1

UnitologyIs obrázok 2

PerDia2012

PerDia2012 je jednoduchá webová aplikácia, ktorá ma slúžiť ako denník a organizátor pre poznámky a pripomienky s možnosťou fulltextového vyhľadávania, anotácií záznamov v denníku, súkromnou časovou osou, možnosťou exportu do "offline" html balíčka a iných.

Ide o single page aplikáciu postavenú na OWIN-e, Web Api, SimpleInjector, MS SQL. Na klientskej strane TypeScript prekladaný do ES5, knockout.js, Director.js, Promise.es6 a Bootstrap.

Šlo mi o to postaviť veľmi ľahkú a rýchlu aplikáciu, pomocou technológií používaných v SPA aplikáciách, a triku používanému v CQRS architektúre – tam, kde by dopyt do databázy používal JOIN sa nahradí databázovým pohľadom, použitie interného event publisher-a pre asynchrónnu aktualizáciu nepriamo súvisiacich dát (napríklad tabuliek pre používaných pre fulltext vyhľadávanie).

Použité technológie

C# 4.6, Owin, ASP.NET Web Api, SimpleInjector, Data reader a MS SQL 2016 (stored procedúry, Fulltext index, CTE, pôvodne aj SQL Service Brooker), TypeScript, knockout.js, Director.js a Bootstrap.

Pre unit testovanie: knižnice Sould, a Moq.

Mapper Performace

MapperPerfomace je jednoduchý projekt pre porovnanie výkonnosti mapovania databázového rezultu na aplikačné POCO objekty. Porovnávam ručné mapovanie pomocou SqlDarareaderu, mikro ORM Dapper, Entity Framework (manuálne mapovanie), Entity Framework s projekciou pomocou Autommaperu a iné (Tiny Mapper, Value injector,…).

Odkaz na zdrojové kódy MapperPerformace.

MassiveDynamic Proxy Generator

MassiveDynamicProxyGenerator je miniatúrna a ľahká knižnica pre dynamické generovanie proxy objektov a dekorátorov.

Generovanie proxy objektov ide využiť napríklad na vytváranie NULL implementácii rozhraní (vzor Null object), zakrytie prístupu ku vzdialenej službe (rovnako to robí WCF-ko) napríklad cez JSON-RPC, alebo REST-om. Alebo pre inú automatickú implementáciu rozhraní (logovanie volania, správanie určené mennou konvenciou metód,….).

Dynamické dekorátory sa dajú výhodne použiť ako interceptory, oddelenie infraštruktúrneho kódu od doménového (verifikácia prístupových práv, logovanie, sledovanie perfomace),…

Knižnica umožňuje vytvárať:

  • Dynamické proxy objekty s interceptorom,
  • Inštancie dekorátorov s interceptorom,
  • Dynamické proxy objekty pre riadenie vytvárania inštancií reálneho objektu.

Vytvorený Nuget balíček, ktorý je určený pre .Net 4.0, 4.5, 4.6, 4.6.1, .NetStandart 1.6, 2.0 a .NetStandart 1.4 (UWP aplikácie).

Odkaz na zdrojové kódy spolu s ukážkami použitia MassiveDynamicProxyGenerator.

MassiveDynamic Proxy Generator intergrácia pre SimpleInjector

K MassiveDynamicProxygenerator-u som vytvoril integračnú knižnicu pre SimpleInjector, ktorá umožňuje do IoC kontainera registrovať:

  • mock (null implementácia služby),
  • proxy implementácie rozhraní,
  • dekorátorov pre služby v IoC konatienry,
  • inštančných provaiderov.

Táto knižnica má aj „nebezpečné“ registrácie, ktoré nezodpovedajú best practise razených vývojármi SimpleInjector-u, nimi sú:

  • namokovanie všetkých neregistrovaných služieb v IoC kontajnery,
  • použitie vlastných inštančných providerov.

Vytvorený Nuget balíček, ktorý je určený pre .Net 4.0, 4.5, 4.6, 4.6.1, .NetStandart 1.6, 2.0 a .NetStandart 1.4 (UWP aplikácie).

Ukážky použitia a príklady so zdrojovými kódmi sa nachádzajú na Github stránke projektu.

MassiveDynamic Proxy Generator intergrácia pre Microsoft.Extensions.DependencyInjection

K MassiveDynamicProxygenerator-u som vytvoril integračnú knižnicu pre Microsoft.Extensions.DependencyInjectio, je určená pre použitie v štandardných ASP.NET Core 2.0 projektoch. Umožňuje do IoC kontainera pridať:

  • triedu v roli dekorátora (samo o sebe to nesúvisí s MassiveDynamicProxygenerator),
  • proxy implementácie rozhraní (pomocou interceptoru),
  • dekorátory pre služby v IoC kontainery (pomocou interceptoru),
  • inštančných provaiderov.

Táto knižnica podporuje zatiaľ iba .NetStandard 2.0. K tomu použitie Microsoft.Extensions.DependencyInjection prináša svoje obmedzenia, napríklad pri použití „otvorenej generiky“ (angl: open generic) - v dekorátoroch ju nie možné použiť, vždy treba dekorovať konkretne typy alebo konkrétne generické typy.

Vytvorený Nuget balíček, ktorý je určený pre .NetStandart 2.0.

Ukážky použitia a príklady so zdrojovými kódmi sa nachádzajú na Github stránke projektu.

SoftHSMv2 (as nuget) for testing

SoftHSMv2ForTesting nuget balík, ktorý zabaľuje SoftHSMv2 spolu s minimálnym kódom pre inicializáciu a zmazanie SoftHSMv2. Automaticky inicializuje jeden token, no je možné ich inicializovať viac.

Je určený pre unit testovanie .Net (Core) projektov využívajúcich PKCS#11 zariadenia (napríklad čipové karty, eID, HSM,…) v CI/CD prostredí.

Vytvorený Nuget balíček je určený pre Windows.

Ukážky použitia a príklady so zdrojovými kódmi sa nachádzajú na Github stránke projektu.