Blokowanie niejawnej konwersji w C++

W ostatnim wpisie napomknąłem coś o dawnych problemach z konstruktorami konwersji odnosząc się do mojego starego wpisu o niejawnych przekształceniach typów. Po przypomnieniu sobie jego treści postanowiłem podzielić się kilkoma, pewnie ogólnie znanymi, sztuczkami kontrolowania i blokowania niejawnych konwersji nie tylko przy typach zdefiniowanych przez użytkownika, ale też te standardowe konwersje zachodzące mimowolnie pod maską języka C++ ;) Wykluczenie metody z niejawnej konwersji (explicit) We wspomniane notce do zapobiegania niejawnych konwersji do typu użytkownika użyto specyfikatora explicit w towarzystwie konstruktora konwersji.

Czytaj dalej
tech

Niespójne i mylące konstruktory w std::string

Kiedyś często problemem były niejawne konwersje między typami w C++, które szczególnie uwidaczniały się przy konstruktorach konwersji… Kto by pomyślał, że dziś nadał trywialne błędy można popełnić przez jakieś zaszłości historyczne, usilne zachowanie kompatybilności i brak spójności w definiowaniu konstruktorów, nawet tych w Standardzie ;) Problemy te co jakiś czas są na nowo “odkrywane”, ostatnio powróciły w nieco prześmiewczym kodzie na twitterze: const std::string str = "Modern C++"; std::string s1 { "Modern C++", 3 }; std::string s2 { str, 3 }; std::cout << "S1: " << s1 << "\n"; std::cout << "S2: " << s2 << "\n"; Intuicyjnie mogłoby się wydawać, że obiekty s1 i s2 będą zawierać taką samą zawartość.

Czytaj dalej
tech

Generowanie plików z pomocą Hugo Pipes

W ostatniej mojej notce przedstawiłem prosty sposób na tworzenie w Hugo dodatkowych plików za pomocą niestandardowych formatów wyjściowych, a dzisiaj chciałbym spróbować do tego celu wykorzystać “pipki” (Hugo Pipes). Tematyka nadal będzie poruszać się wokół mapy przekierowań ;)

tech

Generowanie mapy przekierowań z Aliasów w Hugo

Hugo posiada możliwość udostępniania stron pod różnymi adresami za pomocą aliasów, które “przekierowują” do głównej treści. Może to być bardzo przydatne przy zmianach adresu danej podstrony. Ja nie korzystam z tego mechanizmu, ale chciałem sprawdzić czy można zmusić Hugo do wygenerowania pliku z mapą przekierowań (redirects.txt), bazując na zdefiniowanych w treści aliasach. To pozwoliłoby przekształcić je w pełnoprawne przekierowania 301. Aliasy w Hugo Dokumentacja dotycząca aliasów jest dość krótka i w prosty sposób opisuje działanie tego mechanizmu.

Czytaj dalej
tech

Masowe przekierowania z RewriteMap (Apache)

Przy migracji i poprawianiu starych wpisów zaktualizowałem niektóre tytuły, tym samym ich adresy URL uległy zmianie. Dla zachowania kompatybilności, szczególnie z zewnętrznymi odnośnikami, wypadałoby dodać jakieś przekierowania co do niektórych wpisów. I przypadkiem odkryłem ciekawy sposób na masowe przekierowania w Apache. Początkowo chciałem napakować swój .htaccess dyrektywami z mod_alias-a: Redirect 301 /old-post-slug /new-post-slug # old url posted on some external website Redirect 301 /1999/hacking-forum /hacking-forum-scripts Wydawało mi się to jedynym wyjściem.

Czytaj dalej
tech

Przyspieszanie strony - zapytania/cache/kompresja w HTTP

Moje eksperymenty z przyspieszeniem bloga, czyli minimalizacja zapytań, cache i kompresja w HTTP. Minimalizacja zapytań Cache Kompresja

tech

Kanały RSS/Atom w Hugo

Mój statyczny blog już działa, choć wymaga jeszcze trochę poprawek. Jednym z ważniejszych elementów wymagających dopracowania są kanały RSS/Atom. To przecież wciąż jedyna słuszna metoda syndykacji i notyfikacji o zmianach na stronie. Hugo w standardzie wspiera i automatycznie generuje kanały RSS. Niestety domyślne ustawienia i założenia nie spełniają moich specyficznych potrzeb, więc nadeszła pora na dostosowanie… i generowanie własnego kanału ;) RSS 2.0 i domyślny szablon Hugo posiada wbudowany wewnętrznie szablon dla kanałów RSS 2.

Czytaj dalej
tech

MalLog już statycznie!

Po dwóch tygodniach opóźnienia, wreszcie udało mi się ogarnąć większość rzeczy na tyle, aby móc wrzucić do sieci jako tako działająca wersję nowej statycznej odsłony mojego sieciowego dziennika. Niestety jest jeszcze wiele niedoróbek i o kilku tutaj napiszę w wolnej chwili ;)

MalLog już 15 lat w sieci!

15 stycznia 2021 roku… 19:59… 20:00… i 15 lat stuknęło już tej stronie! Kiedy wysyłałem w świat swojego pierwszego posta w 2006 roku, nie sądziłem, że moja przygoda z blogowaniem przetrwa tyle lat. Blogowanie to może trochę za duże słowo, jak na moje wypociny. W moim przypadku bardziej przypomina to archiwizację myśli i dokumentację projektów, eksperymentów i ciekawych wydarzeń. Taki chyba też jest cel nadrzędny tego bloga. Piszę głównie dla siebie z przyszłości :) Ale czasem muszę się czymś pochwalić, czy wrzucić jakieś info o projektach i releasach, czy skomentować lub podzielić się przemyśleniami… i strona ta wydaje się idealnym miejsce do tego celu.

Czytaj dalej

Rust okiem programisty C++

Po rozwiązaniu AoC w Ruscie, i jako takiej 25 dniowej codziennej pracy z tym językiem, mogę wreszcie powiedzieć kilka słów na jego temat i podzielić się moimi odczuciami i uwagami, widoczynmi z perspektywyw programisty piszącego głównie w C++. [Z powodu braków czasowych wynikłych z migracją nie udało mi się jeszcze skończyć tego wpisu…]

tech