Korzystanie z przestrzeni nazw w C++

Dziś chciałbym pomarudzić o tym jak to genialni programiści olewają i ignorują istnienie tak genialnego wynalazku w C++ jak przestrzenie nazw. Przestrzenie nazw rozwiązują problem kolizji nazw, szczególnie znany osobom programującym w C, gdzie istnieje jedna globalna przestrzeń nazw dla wszystkich nazw. A tym samym utrudnia pisanie programów, i odrębnych modułów. Do rozwiązania problemu przestrzeni … Czytaj dalej Korzystanie z przestrzeni nazw w C++

Nadużywanie preprocesora w C++

Wszyscy wiemy czym jest preprocesor Cpp i jak działa (dla niewtajemniczonych czym jest preprocesor, jakie oferuje funkcje i pułapki polecam jeden z rozdziałów Megatutoriala Xiona). Jest to narzędzie odziedziczone z C, operujące na tekście programu, a tym samym nie mające żadnego pojęcia o składni języka jaką przetwarza. Jest narzędziem, które używane nierozważnie może łatwo doprowadzić … Czytaj dalej Nadużywanie preprocesora w C++

Modern C++

W nawiązaniu do poprzedniej notatki, niejakim uzupełnieniem przedstawionych tam informacji i zapowiedzi o dzieleniu się głębszymi przemyśleniami i odczuciami jakimi mnie napełnił kolejny przeprowadzony code review, będą notatki przedstawiające nieco bardziej zaawansowane aspekty i techniki używane w C++. Mam tu na myśli notatki traktujące o tytułowym „modern C++”, czyli nowoczesnym i zaawansowanym C++, gdzie głównie … Czytaj dalej Modern C++

Dlaczego w C++ jest lepiej?

Skusiłem sie do napisania tej notatki w wyniku pogłębiającej się frustracji i zażenowania jakie mnie ogarnia, gdy po raz kolejny przeglądam jakiś kod źródłowy dowolnego oprogramowania napisanego (według jego autora) w C++. Niestety dosyć często się zdarza, że w rzeczywistości w ogóle to niewiele ma wspólnego z tym językiem, zastosowane techniki i styl mówią coś … Czytaj dalej Dlaczego w C++ jest lepiej?

Trudne przypadki: buffer overflow

Buffer overflow, czyli przepełnienie bufora jest jednym z najczęściej wykrywanych błędów w różnej maści oprogramowaniu. Błąd ten polega na zapisaniu do wyznaczonego obszaru pamięci większej ilości danych, niż zostało to przewidziane przez twórcę, powodując nadpisanie sąsiadujących z buforem komórek pamięci, co w ostateczności prowadzi do rożnych nieprzewidywanych zachowań aplikacji. W najlepszym wypadku spowoduje to „wywalenie” … Czytaj dalej Trudne przypadki: buffer overflow

Active Template Library

Ostatnio bawiłem sie z prostą aplikacją embedując kontrolkę Internet Explorera oraz silnik Gecko. Po raz pierwszy miałem nieco szerszy i dłuższy kontakt z technologią COM i XPCOM. Nieodłączny związek z COM ma biblioteka ATL (Active Template Library), która w rzeczywistości jest zbiorem klas szablonowych języka C++ opracowanych przez Microsoft. Jak sie można domyślić z nazwy, … Czytaj dalej Active Template Library

Bakefile: shell rule

O systemie budowania aplikacji bakefile, generującym odpowiednie pliki dla make i projekty dla różnych środowisk IDE, pisałem już w przeszłości. Jest to wspaniale narzędzie, szczególnie przy tworzeniu multi platformowego oprogramowania. Dosyć często zdarza się, że chcemy dorzucić do makefile jakieś niestandardowe reguły oparte na wykonaniu kilku poleceń w powłoce systemowej. Bakefile zawiera odpowiednie mechanizmy do … Czytaj dalej Bakefile: shell rule

WP Math Captcha

W poprzedniej notce wspomniałem o rezygnacji z dotychczas używanego filtru anty-spamowego, a z powodu takiego, że mój devblog ciągle nawiedzają jakieś spam boty i zaśmiecają bazę niepotrzebnymi komentarzami-śmieciami, musiałem coś zaaplikować, coś co ich powstrzyma i zmniejszy ten, jakże paskudny, proceder. W celu tym przejrzałem katalog wtyczek do WP pod etykietą spam oraz rozejrzałem się … Czytaj dalej WP Math Captcha

Opublikowano Kategorie projekty

Zmiany na devblogu

Przez ostanie 2 dni trochę pomęczyłem się z nowym designem i szablonem devbloga, czego skutkiem jest „wisząca” od wczoraj nowa odsłona. Stary szablon od dawna mi się już nie podobał i trochę mnie uwierał, ale nigdy nie chciało mi się tego zmienić, bo albo brak czasu, albo chęci. A ostatnio, robiąc wielki review swoich stron, … Czytaj dalej Zmiany na devblogu

Opublikowano Kategorie webdev

Programowanie wymaga myślenia!

Programowanie, optymalizacja i myślenie… Sztuka programowania łączy w sobie te trzy sfery, umiejętne ich wyważenie staje się dobrym wyznacznikiem dla programisty. Bez jakiegokolwiek z nich traci on swój potencjał i staje się zwykłym koderem, klepiącym bez namysłu kod jaki inni mu każą. No cóż, tacy „robotnicy” są również potrzebni przemysłowi, aby wszystko kręciło się dalej. … Czytaj dalej Programowanie wymaga myślenia!