Ostatni tydzień nie przyniósł żadnych rewolucyjnych zmian do aplikacji Winbot, którą rozwijam już jakieś 10 tygodni 🙂 Pracuję nad nową funkcją, która pozwoli na tworzenie nowych scenariuszy ręcznie (bez nagrywania aktywności myszki lub klawiatury). Postanowiłem to wprowadzić aby była możliwość tworzenia zagregowanych scenariuszy lub też bardziej generycznych (np. scenariusz, który wykonuje inny scenariusz przez godzinę). Ale narazie to zostawmy – jeszcze nie jest gotowe, w...
Strona głównaUżytkownik
jacalapa | użytkownik
Daj się poznać 2017 2749 dni, 3 godziny, 34 minuty temu 44 źrodło rozwiń
W dzisiejszym poście postanowiłem krótko przedstawić definicje wybranych delegatów, które standardowo udostępnia nam .NET.
Daj się poznać 2017 2753 dni, 3 godziny, 26 minut temu 109 źrodło rozwiń
W końcu przyszedł ten moment, w którym stwierdziłem, że pora wypuścić pierwszą wersję Winbota. Zbudowałem instalator i wystawiłem release na githubie. Dostępny do pobrania tutaj. Zanim jednak to uczyniłem, zastanawiałem się co będzie, jeżeli zacznę wypuszczać kolejne wersje. W jaki sposób informować użytkownika z zainstalowaną aplikacją, że pojawiła się nowsza wersja? W tym poście opiszę własne rozwiązanie tego problemu. Jedna rzecz była dla mnie pewna od samego początku. ...
Daj się poznać 2017 2758 dni, 4 godziny, 36 minut temu 79 źrodło rozwiń
Każdy kto miał okazję programować w Javie i C#, zapewne zwrócił uwagę na subtelną różnicę między tym, co oferują nam typy wyliczeniowe w obu językach. Jeżeli chodzi o C#, nie ma tu wielkiej filozofii. Mamy możliwość zdefiniowania zbioru elementów i ewentualnie przypisania im odpowiedniej wartości liczbowej. W Javie mamy znacznie większe pole manewru. Dozwolone jest tutaj definiowanie pól i metod, tak jak w zwykłej klasie. Osoby mające już jakieś doświadczenie związane z pr...
Daj się poznać 2017 2754 dni, 19 godzin, 32 minuty temu 290 źrodło rozwiń
Kolejny tydzień prac dobiegł końca. Aplikacja małymi krokami rozwija się. Cały czas staram się dodawać interesujące funkcje lub rozwijać w miarę ciekawe problemy, aby nie zanudzać czytelników bloga moimi cotygodniowymi raportami z postępu prac. Według mnie, najciekawszy problem z jakim się zetknąłem w ostatnim tygodniu było skojarzenie plików z moim programem. Chciałem aby po zainstalowaniu Winbota, można było eksportować z niego pliki, które później będą możliwe do urucho...
Daj się poznać 2017 2765 dni, 23 godziny, 30 minut temu 25 źrodło rozwiń
Moją przygodę z Entity Framework zacząłem od przeczytania jednej z książek poświęconej właśnie temu frameworkowi. Później miałem jeszcze okazję spotkać się z nim w kilu projektach. Zawsze starałem się pisać kod zgodnie z moją najlepszą wiedzą, tak aby jakość produktu końcowego była jak najwyższa. Możecie sobie wyobrazić, jakie było moje rozczarowanie, kiedy dopiero po kilku latach dowiedziałem się o możliwości wyłączenia śledzenia. Dlaczego rozczarowanie? Dlatego, że mimo ...
Daj się poznać 2017 2761 dni, 16 godzin, 22 minuty temu 302 źrodło rozwiń
W końcu nadszedł ten moment. Uznałem, że moja aplikacja WPF jest już na tyle rozwinięta, że warto by przygotować dla niej jakiś prosty instalator. Robiłem to już w przeszłości w innych projektach, więc miałem już dość wyrobiony pogląd na ten temat. Postanowiłem użyć produktu, który jak do tej pory, nigdy mnie nie zawiódł i pozwalał dostosować instalator do konkretnych wymagań. Chodzi tu o WiX Toolset. Jest to darmowe narzędzie umożliwiające tworzenie instalatorów w oparciu ...
Daj się poznać 2017 2770 dni, 17 godzin, 22 minuty temu 72 źrodło rozwiń
Kiedy zaczynałem swoją przygodę z testami jednostkowymi nie widziałem żadnej różnicy między obiektami typu Dummy, Fake, Stub i Mock. Używałem każdego z nich bez świadomości istnienia jakichkolwiek różnic między nimi. Wszystkie cztery typy były dla mnie dokładnie tym samym – sztucznym obiektem stworzonym na potrzeby testów. Moja ignorancja i brak wiedzy prowadziły do kilku problemów:frustracji w trakcie pisania testów wynikającego z niewiedzy (np. dlaczego ten test wyrzuca w...
Daj się poznać 2017 2771 dni, 20 godzin, 52 minuty temu 134 źrodło rozwiń
Kolejną rzeczą, nad którą pracowałem w ramach mojego projektu Winbot, była edycja różnych obiektów za pomocą interfejsu użytkownika. W aplikacji występuje kilka typów obiektów. Mógłbym przygotować oddzielne kontrolki do edycji każdego typu z osobna, ale takie rozwiązanie mnie nie zadowalało. Za każdym razem kiedy chciałbym wprowadzić nowy typ, musiałbym dodatkowo przygotować nową kontrolkę do edycji. Byłoby to dość niewygodne i denerwujące. Moim celem było przygotowanie gen...
Daj się poznać 2017 2778 dni, 2 godziny, 58 minut temu 32 źrodło rozwiń
Dzisiaj bohaterem mojego posta będzie Satellite Assembly. Jeżeli wiesz co to jest i miałeś już okazję z tego korzystać, to być może Cię rozczaruję, ale nie dowiesz się tutaj nic nowego. Jeżeli jednak jeszcze się z tym nie zetknęliście – zachęcam do krótkiej lektury. .Net daje nam możliwość zdefiniowania różnych zasobów, w zależności od kultury w kontekście której działa nasza aplikacja. Najczęściej wykorzystywane jest to w aplikacjach wspierających wiele języków. Tworzy si...
Daj się poznać 2017 2777 dni, 4 godziny, 56 minut temu 92 źrodło rozwiń
Prace nad moim projektem Winbot wciąż trwają. Chociaż czas mija nieubłaganie szybko, a dzień ma tylko 24 godziny, to staram się systematycznie rozwijać Winbot’a o nowe funkcje i usprawnienia. W dzisiejszym poście postanowiłem przedstawić sposób w jaki rozwiązałem problem z symulacją globalnych zdarzeń (np. kliknięcie myszką, wciśnięcie klawisza Ctrl, itp.). Moim celem było zaimplementowanie logiki, która wywoływałaby konkretne zdarzenie systemowe. Nie było to trywialne zad...
Daj się poznać 2017 2784 dni, 6 godzin, 41 minut temu 79 źrodło rozwiń
Jakiś czas temu poszukiwałem prostej bazy danych dla mojej aplikacji desktopowej. Oczywiście mogłem sam zaimplementować jakieś rozwiązanie, ale wolałem skorzystać z gotowca, a przynajmniej zapoznać się z dostępnymi rozwiązaniami. Moje wymagania nie były zbyt duże. Chciałem żeby było to coś bardzo prostego. Od razu odrzuciłem wszystkie serwerowe bazy danych, ponieważ jednym z podstawowych założeń jest, że moja aplikacja będzie działać offline. Mam świadomość, że prawdopodobn...
Daj się poznać 2017 2786 dni, 20 godzin, 28 minut temu 192 źrodło rozwiń
Jacek ŁapińskiDodaj komentarz Często mam okazję pracować nad projektami, które udostępniają bardzo wąski interfejs na zewnątrz, mimo że zawierają w sobie dużo nietrywialnej logiki. Krótko mówiąc – powstaje bardzo mało klas publicznych i dość dużo klas internal. Testy jednostkowe zawsze umieszczam w oddzielnym projekcie. Przez długi okres, za każdym razem kiedy czułem potrzebę napisania testów dla klasy internal, robiłem to co sprawiało mi najmniej problemów – przekształcałem klasę na publiczną. W takich...
Daj się poznać 2017 2793 dni, 4 godziny, 7 minut temu 81 źrodło rozwiń
Ostatnio w trakcie pracy nad projektem składającym się z kilku rozproszonych, komunikujących się ze sobą komponentów napotkałem problem, którego przyczyny nie były i wciąż nie są do końca jasne. Raz na jakiś czas (bardzo rzadko) pewna operacja kończyła się błędem. Najprawdopodobniej jest to związane z konfiguracją hardware’u lub systemu operacyjnego, ale nie to jest tutaj istotne. Czasem potrzebna jest nam logika, która ponowi operację jeżeli poprzednia próba zakończy się n...
Daj się poznać 2017 2796 dni, 1 godzinę, 23 minuty temu 219 źrodło rozwiń
Prace nad moją aplikacją wciąż posuwają się do przodu. Ostatnio myślałem o wszystkich rzeczach, które zamierzam zaimplementować i doszedłem do wniosku, że przydałby mi się proces automatyzujący część pracy. Zacząłem rozglądać się za jakimś prostym narzędziem continuos integration. Z uwagi na specyfikację Winbot’a, ważne było aby narzędzie umożliwiało:wykrywanie zmiany i pobieranie aktualnych źródeł z repozytorium (Github),ściągnięcie zależności za pomocą Nuget’a,zbudowanie...
Daj się poznać 2017 2799 dni, 3 godziny, 33 minuty temu 54 źrodło rozwiń
Dzisiaj chciałbym przedstawić bardzo fajną bibliotekę Alea GPU, dzięki której możemy wykorzystać kartę graficzną do obliczeń wykonywanych przez aplikację napisaną w .NET. Jest tu wykorzystywana technologia CUDA, którą zaprojektowała firma Nvidia. Zacznę jednak od krótkiego wprowadzenia. GPU (Graphics Processing Unit) Jest to układ obliczeniowy znajdujący się na karcie graficznej. Tego typu jednostki obliczeniowe powstały w celu odciążenia procesora (CPU) od obliczeń zwią...
Daj się poznać 2017 2806 dni, 3 godziny, 8 minut temu 163 źrodło rozwiń
Bardzo często mamy okazję pracować nad aplikacją, która powinna być skonfigurowana odpowiednio do środowiska, w którym ją umieścimy. Najprostszy przykład – aplikacja w środowisku produkcyjnym prawdopodobnie będzie łączyła się do zupełnie innej bazy danych niż ta sama aplikacja w środowisku developerskim lub lokalnym. W dzisiejszym poście przedstawię najlepszy znany mi sposób pozwalający na bezbolesne i eleganckie rozwiązanie tego problemu. Jeżeli znasz coś lepszego, zaprasz...
Daj się poznać 2017 2807 dni, 4 godziny, 24 minuty temu 114 źrodło rozwiń