OLX.pl Modern UI Fix 0.1.1

Skoro wydałem poprawki do skryptu na Allegro to skusiłem się też na naprawienie długo olewanego przeze mnie problemu ze skryptem do serwisu Olx i wypuszczenie nowej wersji tegoż skryptu. Jedną z wykonywanych rzeczy przez olxowy skrypt użytkownika jest poprawienie wygody korzystania z paginacji. Skrypt dodaje własne elementy z odnośnikami do poprzedniej/następnej strony wraz z bardziej adekwatnymi ikonkami. Ikonki te to nic innego jak glify pochodzące z ikonkowej czcionki. Kody znaków na sztywno dodałem w stylach:

Czytaj dalej
tech

Allegro Seller Info 0.1.18

Ostatnia wersja allegrowego skryptu długo utrzymywała się na powierzchni bez potrzeby poprawek. Niestety czas ten minął, bo na stronach aukcji nieco zmieniono strukturę i wygląd, co wymaga interwencji i nowej wersji. Głównym zadaniem skryptu na stronach aukcji jest dodanie informacji o lokalizacji sprzedającego. Idealne do tego miejsce znajduje się tuż nad “Szczegółami o dostawie i płatności”. Kod do szukania kontenera na wstawkę jest banalny: // wstawiamy nad wierszem z wyszczegolnionymi info o dostawie // dlatego szukamy poprzednika diva zawierajacego pierwsza linie node = itemNode.

Czytaj dalej
tech

Automatyczne linki do dokumentacji w Hugo

W ostatnich moich wpisach o C++ odwoływałem się często do opublikowanego w sieci, w postaci strony HTML, standardu tego języka. Pomyślałem sobie, że zamiast w treści surowego wpisu dodawać bezpośrednie odnośniki do linkowanych fragmentów, dobrym pomysłem będzie używanie identyfikatorów (tych ze standardu) i przerzucenie całej roboty na generator strony. Nie ograniczając się tylko do cpp mógłbym obsłużyć też inne często linkowane dokumentacje. Taki mechanizm ma też inną zaletę – czystsza treść i prostsza forma wpisu bez linków do dokumentacji, a tym samym bezproblemowa zmiana miejsca docelowego wskazujących odnośników.

Czytaj dalej
tech

Przeciążenia, specjalizacje i wyszukiwanie nazw w C++

Po ostatnim wpisie, gdzie w przedstawionych sposobach w wielu miejscach bazowałem głównie na możliwościach oferowanych przez przeciążenia funkcji i specjalizacje, dalej chciałbym poruszyć te ciekawe elementy i mechanizmy języka C++ jakimi bez wątpienia są właśnie przeciążania i specjalizacje, a także cały mechanizm wyszukiwania nazw. Ten obszar języka C++ wydaje się trochę skomplikowany, o czym może poświadczyć objętość materiału go opisującego. W dokumencie standaryzacyjnym języka C++ znajdziemy całe rozdziały o przeciążeniach (doc:cpp20:over), wyszukiwaniu nazw (doc:cpp20:basic.

Czytaj dalej
tech

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