Nie będę oryginalny pisząc, że nie jestem oryginalny i zbliżający się koniec konkursu "Daj się poznać" odnotuję krótkim podsumowaniem. A zatem oto i podsumowanie.
Celem mojego udziału nie było skończenie projektu, bo realnie patrząc, wiedziałem, że się z tym nie wyrobię. Chciałem jednak zmotywować się do działania. O motywacjach pisałem przed rozpoczęciem konkursu. Biorąc pod uwagę ogrom dodatkowych “zaangażowań”, które miałem przez ten trzymiesięczny okres, za
największy sukces uważam fakt, że w ogóle dotrwałem do końca!
Ale przechodząc od ogółu do szczegółu, co się udało, a co nie? Więcej...
W rozwoju każdego oprogramowania przychodzi ten moment, że zdarza się pierwszy bug. Potem są już kolejne. No i ja mam za sobą ten etap – aż z wrażenia założyłem Issue we własnym projekcie:
Więcej...
Projekt MemoryVisualizera toczy się w kilku wątkach, ale jak na razie dość mało poświęciłem jednemu z najważniejszych - analizy pamięci. Planuję bardziej rozbudowany post o tym jak można się do pamięci dobrać i co tak naprawdę siedzi pod spodem. Na razie jednak jako "zajawkę" przedstawię sposób, którym się będę przez dłuższy czas posługiwał. A chodzi o świetną bibliotekę ClrMd, która to jako dostępna na Nuget, oferuje interfejs .NETowy do analizy pamięci. Szukając go w Visual Studio pamiętajmy zaznaczyć opcję "Include prerelease" ponieważ jest to wciąż biblioteka w wersji rozwojowej.
Więcej...
Memory Visualizer wymaga udostępnienia języka zapytań odnośnie obiektów i struktur w pamięci. Jak pisałem w części Cypher, co to jest?! , język ten nazywam MQL - Memory Query Language. W istocie jest to jednak po prostu Cypher, który rozszerzę o elementy kontrolujące sposób wyświetlania.
Aby sobie przypomnieć, co chcę osiągnąć, wróćmy do przykładowego rysunku z opisu projektu:
Więcej...
To będzie tutorialowy wpis dla początkujących, ale mam nadzieję, że komuś się przyda. Mimo że nie dotyczy wprost projektu MemoryVisualizera, od początku istnienia konkursu obiecywałem sobie przygotować taki mini poradnik nt. jak rozpocząć nowy projekt na GitHub. Cel - tworzymy nowe repozytorium na GitHubie, commitujemy pierwsze zmiany, tworzymy brancha na jakiś feature. Potem go mergujemy. Przy okazji nauczymy się trochę używania gita i może jakiś innych, fajnych narzędzi. Ze względu na długość, poradnik podzielony jest na kilka części. W tej stworzymy repozytorium i zaczniemy je lokalnie modyfikować. Więcej...
Kilka godzin pracy z F# w Visual Studio i kilka niespodzianek już za mną. Zainstalowanie Visual F# Tools (pozwalające tworzyć projekty F# w Visual Studio) jak się okazuje to był dopiero początek. Więcej...
Wstępniak: Uczę się używać F# wraz z postami o tym projekcie. Nie wszystko więc pewnie od razu będzie idealne. Za to w zamian cenne może być to, że dzielę się uwagami, spostrzeżeniami i zaskoczeniami w ramach tego procesu.
Po trzech pierwszych, wprowadzających postach pora wreszcie przejść do konkretów - kodu! MemoryVisualizer ma być aplikacją desktopową, napisaną w WPF. Nie mam jeszcze ani jednej linijki kodu, zacznę zatem od pustej aplikacji z jakiegoś szablonu. Gdybym zdecydował się na C#, sprawa byłaby prosta - startuję z pustego szablonu WPF Desktop Application i już. Mamy tam z pudełka obsługę XAML, code behind, designer itd. Jednak jak najwięcej chcę napisać w F#, zatem rodzi się pytanie - czy i jak zintegrować WPF z F#? Więcej...
Po części opisującej projekt MemoryVisualizera oraz jego techniczne aspekty, pora na opis metodyki prac, jaką chciałbym zastosować. Aczkolwiek nie będzie to długi opis bo...
MVP, MVP, MVP!
Właściwie główną koncepcją, której chcę się trzymać, to podejście MVP - Minimal Viable Product. Świetnie się sprawdziło ostatnio, gdy z chłopakami tworzyliśmy cfp.help. Jestem głęboko przekonany, że to jedyne słuszne podejście do tworzenia swoich pet projectów. O co chodzi? W skrócie - piszemy jak najmniej, byle działało. Nie brniemy w tygodniowe wybieranie idealnej biblioteki, idealnej architektury, idealnej nazwy i idealnego wszystkiego innego. Piszemy szybko działający prototyp i później go rozwijamy. Daje to bardzo ważną rzecz - statysfakcję. Dość szybko zobaczymy, że "coś mamy". Potem na naszych oczach możemy to "coś" ulepszać, co również motywuje. Więcej...
W poprzedniej części opisałem wymagania wobec projektu MemoryVisualizer. Teraz pora przejść do konkretów, czyli technologii. Dla przypomnienia, piszę narzędzie, które pozwoli za pomocą jakiegoś języka zapytań wizualizować pamięć procesu .NETowego - czy to z memory dumpa, czy poprzez podpięty debugger. Wizualizacja ma być ładna - by posłużyć kiedyś do celów ilustracyjnych. Oraz szybka - by docelowo analizować gigabajtowe procesy.
Więcej...
Podziwiam dev-społeczność! Konkurs polegający na tym, że dwa razy w tygodniu, przez trzy miesiące, pisze się na swoim (nowym bądź reaktywowanym) blogu o projekcie open source, to nie lada wyzwanie. Komu by się chciało?! Wyobrażacie sobie "Daj się poznać!" u lekarzy, mających dwa razy w tygodniu pisać o jakimś swoim ulubionym temacie? Za darmo?! Z całym szacunkiem, ale może jedna osoba by sie zgłosiła i to przypadkiem.
Więcej...