#eksperymenty

wszystkie notatki oznaczone etykietą "eksperymenty"

Balonowy eksperyment stratosferyczny VLF

Stowarzyszenie TRCN wraz z Politechniką Warszawską przeprowadziło dziś balonowy eksperyment stratosferyczny. Zapewne głównym celem naukowym było wykonanie badań atmosfery, ale oprócz tego balon zabrał ze sobą trochę sprzętu radiowego do przeprowadzenia też innych radiowo-indukcyjnych eksperymentów. Można by pomyśleć, że to nic nadzwyczajnego, przecież krótkofalowcy i radioamatorzy co jakiś czas wypuszczają balony stratosferyczne z nadajnikami radiowymi. Tym razem oprócz “standardowych” radiowych elementów, jak APRS, czy RTTY, balon zabrał ze sobą nadajnik pracujący w pasmie VLF na częstotliwości dawnej radiostacji Babice (AXL) - 14.

Czytaj dalej

Konwersja liczb binarnych do kodu BCD (AVR)

Na forum elektrody natrafiłem na temat związany z operowaniem na dużych liczbach na małych mikrokontrolerach AVR. W istocie temat dotyczył algorytmu szybkiej konwersji dużych liczb zapisanych w naturalnym systemie dwójkowym na ich reprezentację w kodzie BCD. Zagadnienie to wydało mi się na tyle ciekawe i praktyczne (w kilku projektach będę przechodził podobny problem), związane też jest to pokrótce z multipleksowaniem 7-segmentowych wyświetlaczy LED, dlatego postanowiłem zrobić kilka testów (porównań) różnych algorytmów.

Czytaj dalej

Shellcode: moje eksperymenty

Nigdy nie zajmowałem się szczególnie tematyką security, nie interesowało mnie pisanie czy zabawa z shellcode-ami czy exploit-ami. Za to często zdarzają mi się różne eksperymenty, które w wielu przypadkach są dobrym sposobem na poznanie nowych rzeczy. A także pomagają ugruntować swoją wiedzę i przekonania. Bo pomimo, że wiem co i jak w teorii oraz praktyce, to często nie miałem jeszcze okazji tego dotknąć i poczuć. Dotyczy to nie tylko programowania, inżynierii wstecznej czy elektroniki, ale szeroko pojętej techniki (i w zasadzie nie tylko)…

Czytaj dalej

Monitorowanie OPS

W poprzedniej notce, namawiałem do eksperymentów, które mogłyby uprościć proces i implementację przedstawionego tam sposobu limitowania operacji. Wspomniałem o możliwości dodania adekwatnego mechanizmu, który byłby w stanie monitorować dane operacje i wyznaczać wartość określającą ilość wykonywanych operacji (np. na sekundę), czyli mierzenie przepustowości. Obecnie nie planuję implementacji takiego mechanizmu monitorowania, ale temat wydaje się ciekawy, wiec notka ta będzie jedynie krótkim (może nieco dłuższym) komentarzem do tego tematu. Troche o tym myślałem, ale aktualnie nie mam czasu, a nawet nie jest mi takowy potrzebny, wiec skupiłem się tylko na teoretycznych dywagacjach.

Czytaj dalej

Limitowanie OPS

Spędziłem ostatnio trochę czasu nad tematem limitowania operacji wykonywanych w określonym przedziale czasu. Sama idea zapoczątkowana została potrzebą szybkiej implementacji ograniczenia szybkości łącza, czyli typowe limitowanie transferu na potrzeby aplikacji, aby jeden program nie zajmował wszystkich dostępnych zasobów sieciowych. Nie będzie to typowe zagadnienie klasyfikowania, kolejkowania operacji lub kształtowania ruchu. Będzie to przedstawienie bardzo prostej metody, dosyć często wykorzystywanej w różnych aplikacjach. Idea Działanie jest bardzo proste, poniekąd podobne do typowych metod kontrolowania ruchu sieci, bazujący na odrzucaniu lub opóźnianiu pakietów.

Czytaj dalej

Odwracanie kolejności w SSE/AVX

W ostatniej notce, o możliwościach zmiany kolejności uporządkowania bajtów i bibliotece ByteOrder, wspomniałem, że w wolnej chwili postaram pobawić się SSE i spróbować, w prosty i w miarę wydajny sposób, zaimplementować operację bswap znaną z 32/64-bitowych rejestrów na rejestrach 128-bitowych, a nawet 256-bitowych. Poniekąd udało mi się to zrobić ;) SSE2 Druga wersja strumieniowych rozszerzeń SMID dodała 144 nowych instrukcji do SSE. Kilka z nowych instrukcji całkowitoliczbowych, potrafiących zmieniać kolejność 16- i 32-bitowych elementów w 128-bitowym wektorze oraz instrukcji logicznych, będących w rzeczywistości rozszerzeniami instrukcji MMX dla wektorów XMM, mogą nam posłużyć do implementacji funkcji bswap128.

Czytaj dalej

Bezpieczne iteratory w VC++

Od wersji 2005 Visual C++ posiada opcję sprawdzania ważności iteratorów. Może to być przydatna funkcjonalność, która powoli uchronić się przed typowymi błędami związanymi z niepoprawnym użyciem iteratorów. O szczegółach działania można poczytać na stronach MSDN w kilku ciekawych artykułach: Checked Iterators, Debug Iterator Support. W uproszczeniu mówiąc, przy włączonym Debug Iterator, program w wersji debug poczęstuje nas assertami, kiedy spróbujemy wykonać jakąś operację na niepoprawnym (unieważnionym1) iteratorze lub funkcji go wykorzystującej.

Czytaj dalej

Konwersja wskaźnika do iteratora

Czym jest iterator w STL każdy wiedzieć powinien. Mogę wspomnieć ze jest to typ z zachowaniem podobnym do wskaźnika, który służy do poruszania się po kontenerach biblioteki standardowej, ale nie jest to wskaźnik, mimo iż w większości implementacjach jest to opakowany w obiekt wskaźnik. Kilka flejmów na ten temat można znaleźć w usenetowych archiwach pl.comp.lang.c ;) Konwersja (słowo tutaj zbytnio nie pasuje) iteratora wskazującego na dany element kontenera do typowego wskaźnika jest bardzo prosta.

Czytaj dalej

Prosty object tracing

Potrzebowałem w prosty sposób i łatwy sposób logować moment tworzenia i niszczenia obiektów. W najprostszym wypadku wystarczyłoby przeciążyć operator new i delete, ale wtedy logowanie dotyczyłoby tylko obiektów tworzonych na stercie. A ja chce i stos, i stertę ;) No to wystarczy w konstruktorze i destruktorze umieścić wywołanie funkcji logującej i problem znika. Tylko, że w każdej klasie musimy dodać ten kod, a jak wspomniałem sposób powinien być najprostszy i najłatwiejszy.

Czytaj dalej

Alpha blending

Potrzebowałem jak najprostszym sposobem uzyskać efekt alpha blending (przezroczystość). Z racji, że nie miałem o tym większego pojęcia1 to próbowałem zaczerpnąć informacji w niezliczonych zasobach sieciowych ;) Szukałem jakiegoś prostego sposobu wyznaczania średniej wartości składowej koloru danego piksela. W różnych źródłach znalazłem kilka różnych działań obliczających tę wartość, od bardzo prostych i wydajnych, to złożonych i ociężałych. Poniżej kilka znalezionych przykładów ;) Na początek mała legenda używanej w dalszej części symboliki.

Czytaj dalej