Wszystkie wpisy

Post

Programowanie dynamiczne #2

Wprowadzam pojęcie programowania dynamicznego i pokazuję, jak zastosować go do rozwiązania problemu Longest Common Subsequence. Przedstawiam koncepcję rozdzielania problemu na mniejsze części i wykorzystywania wyników tych części do uzyskania rozwiązania głównego. Na przykładzie ilustruję, jak wykorzystać wiedzę o najdłuższych wspólnych podciągach do obliczenia najdłuższego wspólnego podciągu dla dwoch ciągów znaków.

Post

Programowanie dynamiczne #1

Wprowadzam pojęcie programowania dynamicznego i pokazuję, jak zastosować go do rozwiązania problemu Longest Increasing Sequence. Przedstawiam koncepcję rozdzielania problemu na mniejsze części i wykorzystywania wyników tych części do uzyskania rozwiązania głównego. Na przykładzie ilustruję, jak wykorzystać wiedzę o najdłuższych podciągach do obliczenia najdłuższego podciągu po dodaniu nowego elementu do ciągu.

Post

Zadanie rekrutacyjne #4

Analizuję różne sposoby znalezienia najmniejszej liczby uint32_t, która nie występuje w zadanym zbiorze: od sortowania, przez zliczanie i struktury std::set/std::unordered_set, aż po podejścia oparte na podziale zakresu. Porównuję użycie pamięci, złożoność czasową i praktyczne ograniczenia przy bardzo dużych zbiorach.

Post

Zadanie rekrutacyjne #3

W zadaniu rekrutacyjnym #3 zaimplementowano funkcję, która liczy elementy w liście jednokierunkowej, korzystając z referencji do obiektu. Przedstawiono dwa rozwiązania: jedno z wykorzystaniem odległości do początku i końca listy, a drugie z wykorzystaniem garbage collector'a do znalezienia referencji do obiektu. Opisano również ograniczenia i zastosowania takiego podejścia w praktyce.

Post

Zadanie rekrutacyjne #2

Na klasycznym zadaniu z cyklem w liście jednokierunkowej porównuję kilka podejść: z dodatkowymi strukturami danych, z modyfikacją listy oraz algorytm „żółwia i zająca” Floyd’a. Omawiam złożoność, zużycie pamięci i praktyczne zalety każdego rozwiązania.

Post

Zadanie rekrutacyjne #1

Analizuję różne sposoby liczenia ustawionych bitów w liczbie całkowitej: od prostego przesuwania i maskowania, aż po wykorzystanie tablic pomocniczych. Porównuję czytelność, wydajność i zastosowania w praktyce.

Post

Wzbogacanie kontrolek WPF #1

Wzbogacanie kontrolek WPF - sposób na rozszerzenie możliwości kontrolki ListBox w WPF + MVVM.

Post

Async command #2

Pokazuję, jak zbudować AsyncCommand w C#, który wspiera opóźnione wykonanie (np. debouncing akcji użytkownika). Omawiam anulowanie poprzednich wywołań oraz typowe zastosowania w interfejsach reagujących na szybkie zmiany danych.

Post

Bind to enum C#

Bind to enum C# - sposób na wyświetlenie opisów dla wartości Enum w listach wyboru.

Post

Podręczne narzędzia #3

Przegląd przydatnych pluginów do Notepad++: porównywanie plików z Compare, podgląd w trybie hex, wielokrotne schowki, wbudowany eksplorator plików oraz narzędzia do pracy z JSON i XML. Pokazuję, jak te dodatki potrafią zamienić Notepad++ w lekkie, ale całkiem potężne IDE.

Post

Java pułapka

Java pułapka - komentarz z specjalnym znakiem Unicode.

Post

Podręczne narzędzia #2

Przegląd dwóch narzędzi do pracy z tekstem i plikami w Windows: WinGnu32 jako zestaw unixowych klasyków (grep, sed, awk itd.) oraz Windows Grep do szybkiego wyszukiwania wzorców w wielu plikach naraz. Z przykładami typowych zastosowań w debugowaniu i analizie kodu.

Post

Pionowe zaznaczanie tekstu.

Pokazuję, że w wielu popularnych edytorach można zaznaczać tekst pionowo (kolumnami), a nie tylko wierszami. Omawiam skróty klawiszowe, typowe zastosowania w pracy programisty i kilka praktycznych trików przy edycji kodu oraz logów.

Post

Przekierowanie wyjścia [Python]

Wyjaśniam, czym jest stdout w Pythonie i jak działa przekierowanie standardowego wyjścia – zarówno na poziomie systemu, jak i wewnątrz samego Pythona. Na przykładach pokazuję zapis do pliku, przechwytywanie wyjścia oraz integrację z logowaniem.

Post

Podręczne narzędzia #1

Krótkie omówienie trzech narzędzi, które ułatwiają życie w Windows: Rapid Environment Editor do wygodnej edycji zmiennych środowiskowych, ConEmu jako elastyczny emulator konsoli z kartami oraz Notepad++ jako lekki, ale bardzo rozbudowany edytor tekstu dla programistów.