Delegaty i wyrażenia Lambda w C#

W tym poście postaram się wytłumaczyć czym są delegaty, anonimowe delegaty (równoważne z wyrażeniem lambda, które jest bardzo przydatne w wielu wypadkach.)

1. Delegaty

Delegaty są podobne do wskaźników i funkcji w C czy C++. Z definicji – delegat to zmienna będąca odniesieniem do innej, przy czym „odniesienie” można zmieniać. Czytaj dalej

Reklamy

Próba stworzenia mechanizmu autoochrony w C#

Przez ostatnie kilka dni siedziałem, wykorzystywałem przycisk „Search” w wyszukiwarce Google aż nazbyt dużo razy, gdyż próbowałem znaleźć jakiś sposób, na autoochronę w C#. Jest to strasznie ciekawe zagadnienie, dlatego postanowiłem o tym napisać. Od razu mówię, post nie będzie zbyt ładny, tekst będzie dość precyzyjny. Czytaj dalej

Wielowątkowość w C# – Threading, Locki + SpinLocki

Często zdarza się, że mamy potrzebę wykonania kilku rzeczy w tym samym czasie. Przykładowo, pijąc herbatę możemy równocześnie oglądać telewizję czy czytać książkę. Podobnie w programowaniu – podczas (przykładowo) wykonywania jakiejś dłuższej pętli nie chcemy zawieszać programu (na czas jej wykonania), tylko wykonać w tym samym czasie inne operacje.

W tym poście omówię pewną klasę i strukturę. Pierwsza z nich to Thread zawierający się w System.Threading; Pozwala on na wykonanie innej funkcji równolegle, nie naruszając działania kodu. Przykładowo: Czytaj dalej

Tworzenie nowego procesu (programowo). C#, C++, Python

Najpopularniejszym dziś sposobem tworzenia nowego procesu jest odwołanie się do odpowiedniej funkcji, gdzie deklarujemy podstawowe informacje o procesie.  Funkcja zwraca nam potem uchwyt do tego procesu (ang. handle) za pomocą którego możemy na nim operować.

Spróbujmy więc napisać w każdym z trzech wcześniej zadeklarowanych języków (C#, C++, Python) utworzyć małe aplikacje, które będą podstawą do dalszej pracy na procesach. Czytaj dalej

Coś prostego – udowadniamy niedokładność liczb zmiennoprzecinkowych

Zacznijmy od tego, czym są liczby zmiennoprzecinkowe. W programowaniu, jeżeli chcemy użyć liczb dziesiętnych, nie możemy zastosować typu int. Kod:

int a = 3; int b = 2;
return a/b;

nie zwróci nam jak oczekujemy wartości 1,5 tylko jeden. Nie działa tu zaokrąglanie, wynik 1.999999999999999999… zostanie zapisany w pamięci jako 1. Programiści by uniknąć tego typu trudności stosują inne zmienne: float (single precision – typ pojedynczej precyzji, dokładność do 7 cyfr po przecinku), double (double precision – typ podwójnej precyzji, dokładność do 15 cyfr po przecinku) Czytaj dalej

Confusio – czyli oprogramowanie do badania plików

Aktualna wersja: 0.0.1;

No dobra przyjaciele, ostatnio zająłem się właśnie tym projektem, w następnej wersji (nie ukrywając – wzorując się na ENT’ie (http://gynvael.coldwind.pl/?id=159)) postaram się dodać graficzny wykres entropii pliku (prawdopodobnie badając n-bajtowe kawałki programu, gdzie n=bajty_programu/128), i te 128 elementów będą dla mnie punktem wyjścia do tworzenia wykresu.

Ale do rzeczy: http://www81.zippyshare.com/v/e1XuIPUt/file.html

Jest to pierwsza wersja, jeśli macie pomysły co mógłbym dodać, ew. jakieś błędy – piszcie śmiało 🙂
Macie tam też sourcecode i wszystko co potrzebne :3