OOP: Kilka słów o abstrakcjach

Do napisania tego postu skłoniły mnie dwie kwestie. Pierwszą był często oglądany przeze mnie kod z wszechobecnymi interfejsami, których jedynym sensem istnienia była rejestracja w kontenerze DI, lub mockowanie dla testów jednostkowych. Druga to dyskusja w której miałem okazję uczestniczyć a która odbyła się jakiś czas temu w mojej pracy. Przyczynkiem do niej było przeprowadzone przeze mnie […]

ML: kategorie nominalne – Dummy Variable Trap

Tak jak obiecałem wcześniej w poście mówiącym o danych kategoryzujących, napiszę kilka słów o problemie związanym z przetwarzaniem danych nominalnych, zwanym Dummy Variable Trap. Dummy variable jest to kolumna przechowująca wartość binarną (oznaczającą przynależność próbki do danej kategorii), utworzona w procesie kodowania jeden do wielu, o którym pisałem we wspomnianym poście. Spójrzmy zresztą na poniższy […]

ML: Obróbka danych: Dane kategoryczne

W poprzednim wpisie była mowa o kwestii brakujących danych w zbiorach. Kolejnym problemem z jakim jesteśmy zmuszeni sobie radzić jest obróbka danych kategorycznych. Spójrzmy na poniższy wycinek, tym razem pochodzący ze zbioru BreastCancer – jeżeli chcecie go ściągnąć znajduje się tutaj Załadujmy wspomniany zbiór i zobaczmy co w nim siedzi (od razu zrobimy też coś z […]

ML: Obróbka danych: Brakujące dane

Dawno dawno temu, w poście mówiącym o przygotowaniu modelu jako części workflow uczenia maszynowego, pisałem że aby nasz model był jak najbardziej skuteczny wymaga dostarczenia dobrej jakości danych. Dobrej jakości dane nie rosną same na drzewach czerwono czarnych. Trzeba niestety samemu o nie zadbać i poprawić trapiące je problemy. Jakie to mogą być problemy? Zastanówmy […]

EF: Konwencje nazewnicze w podejściu Code First

Ten wpis jest odpowiedzią (na tyle na ile pozwala moja skromna wiedza) na komentarz do EF:Relacje między tabelami – Code First.  Dla porządku pozwoliłem sobie podzielić ów komentarz na części, na które będę bezpośrednio odpowiadał. Zaczynajmy 🙂 mógłbyś mi wyjaśnić parę rzeczy z EntityFramework i podejścia CodeFirst w C#?. Jak to wygląda z relacjami?? z […]

.Net: Wykorzystanie System.Speech w celu transkrypcji nagrania do tekstu

DotNet wraz z przestrzenią nazw System.Speech dostarcza łatwą w wykorzystaniu bibliotekę pozwalającą na zaimplementowanie systemu rozpoznawania mowy – niestety nie w języku polskim. Możemy przy pomocy tego narzędzia szybko napisać program przygotowujący transkrypcję tekst -> audio, oraz audio -> tekst. Dzisiaj pokażę tą drugą opcję. Pierwszą rzeczą jaką należy zrobić to w swoim projekcie dodać […]

.Net: Wątki w C# cz.2

W pierwszej części pisałem o podstawach wątków. Były tam poruszane takie tematy jak tworzenie wątków, ich blokowanie, a także współdzielenie stanu. Dzisiaj postaram się pogłębić ten temat i zwrócić uwagę na bezpieczeństwo wątków. Stan współdzielony vs. stan lokalny W ostatnim przykładzie części pierwszej pisałem o stanie współdzielonym wątków. Wrzuciłem tam taki przykład:

Jak w […]

.Net: Wątki w C# cz.1

Jak przystało na część pierwszą – będą podstawy. A skoro będą podstawy o wątkach to warto zadać pytanie: Co to takiego wątek? Otóż jest to ścieżka wykonywania programu. Program może być jednowątkowy, czyli mieć jedną ścieżkę wykonywania, lub wielowątkowy – mieć kilka, niezależnych od siebie lub wręcz przeciwnie, ścieżek wykonywania. W przypadku programów wielowątkowych, zasoby takie jak […]

.Net: Różnice między IEnumerable i IQueryable

W przepastnych czeluściach linijek kodu, które mam przyjemność (lub obowiązek ;)) oglądać w pracy bardzo często widzę interfejs IEnumerable. Przedstawiać go zresztą dotNetowcom nie trzeba bo przecież jest znany i lubiany – jeżeli ktoś nigdy nie korzystał z pętli foreach ten, piszę to z dużą dozą pewności aczkolwiek margines błędu zawsze istnieje, nigdy nie korzystał […]

Code Smells: Błędnie rozumiana odpowiedzialność klas

Dzisiejszy wpis będzie wyjątkowo o dwóch code smellsach, które łączy wspólny mianownik – źle rozumiany zakres odpowiedzialności klasy. Rozbieżna zmiana Pierwszy – Rozbieżna zmiana – objawia się niezgodnością klasy z pierwszą zasadą SOLID czyli zasadą pojedynczej odpowiedzialności, którą można przedstawić tak: “Wszystkie zmiany w danej klasie powinny wynikać tylko z jednego powodu”. W kodzie, w […]