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 … Czytaj dalej Limitowanie OPS

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ń … Czytaj dalej Odwracanie kolejności w SSE/AVX

ByteOrder – kolejność bajtów

Architektury współczesnych mikroprocesorów powszechnie używają dwóch różnych metod i konwencji przechowywania danych w pamięci, zwane „kolejnością bajtów” (byte order). Niektóre komputery umieszczają najbardziej znaczący bajt w słowie jako pierwszy (big-endian), a inne jako ostatni (little-endian). Przez większość czasu, kolejność bajtów może być ignorowana, programista nie musi się martwić o to, jaki format jest używany, ale … Czytaj dalej ByteOrder – kolejność bajtów

Wykrywanie hardlinków

Hardlinki, inaczej łącza stałe lub dowiązania twarde są alternatywnymi nazwami dla pliku, referencjami wskazującymi istniejący wcześniej obiekt. Niestety nie istnieją żadne metody pozwalające określić, które nazwa lub referencją jest oryginalna, a która dodana później. Wszystkie nazwy/referencje wskazują ten sam blok danych. Dosyć dawno temu starałem się znaleźć prosty sposób na wykrywanie łączy stałych oraz ich … Czytaj dalej Wykrywanie hardlinków

Wielowątkowość w Bashu

Jakiś czas temu pracowałem nad kilkoma agentami/serwisami w bashu – prostymi (choć może nie tak bardzo) skryptami shellowymi, przetwarzającymi sukcesywnie dane oraz wykonywujące pewne określone operacje w miarę napływania do nich zadań. Chcąc usprawnić i przyspieszyć processing, eksperymentowałem i szukałem bardzo prostego sposobu na zrównoleglenie kilku procesów, dokonywujących podobne zadania… Bash sam w sobie nie … Czytaj dalej Wielowątkowość w Bashu

MPU: klasy cech kontenerów STL

Kolejna notatka z serii MPU, opisująca kilka ciekawych konstrukcji zawartych w mistycznym MetaPrograming-Unit. Tym razem o klasach cech opisujących typy kontenerów zawartych w STL. Każdy programista C++ zaznajomiony jest z klasami cech (traits) i ich wielkim potencjałem. Dla tych wszystkich, którzy nie do końca łapią temat, dwa zdania wprowadzające. Klasy cech w C++ są specyficznym … Czytaj dalej MPU: klasy cech kontenerów STL

Wielowątkowość w JavaScript

JavaScript nie posiada wielowątkowości, we wszystkich przeglądarkach (z wyjątkiem Chrome), kod JS wykonywany jest w jednym wątku. Niejeden webdeveloepr „naciął się” na zamrożenie przeglądarki (lub ostrzeżenie w Firefoksie) w czasie wykonywania intensywnego kodu zajmującego zasoby. W takich wypadkach JS blokuje przeglądarkę, podobnie aktualizacje interfejsu użytkownika i zawartość strony, do czasu zakończenia wykonywania bieżącej operacji, co … Czytaj dalej Wielowątkowość w JavaScript

MPU: begin i end

Według obietnicy w pierwszej notce odnośnie MPU chciałbym przedstawić najczęściej wykorzystywane element, które ułatwiają wykorzystywanie standardowych algorytmów operujących na zakresach dla danych przechowywanych w zwykłych tablicach. Oczywiście żaden problem, do tej pory (pomijając wszelkie biblioteki), tablice w łatwy sposób mogły być używane jako zakresy w dowolnej funkcji algorytmu z STL-a. Przeważnie robiło się to w … Czytaj dalej MPU: begin i end

MPU: Meta-Programing Unit

Wraz ze wzrostem doświadczenia, a raczej „wyklepanych linii kodu” i „przemielonych” projektów rośną nasze zasoby wiedzy, ale także zasoby elementów i własnych konstrukcji najchętniej wykorzystywanych w nowych projektach. Oczywiście pomijam tutaj sens robienia lub składowania czegokolwiek co znajduje się w bibliotece standardowej, boost lub milionie innych popularnych bibliotek, niemniej czasami, nawet te standardowe i najczęściej … Czytaj dalej MPU: Meta-Programing Unit

Use C++11

Jakiś czas temu trafiłem w sieci na jakiś artykuł opisujący powody, dla których warto używać nowej odsłony języka C++. Nowy standard oficjalnie został zatwierdzony przez komitet 12 sierpnia 2011 roku, ale na długo przed tym wydarzeniem większość liczących się kompilatorów w jakimś stopniu wspierała nowe możliwości języka. Zatem pewnie większość deweloperów nie tylko zna większość … Czytaj dalej Use C++11