Ostatnie wpisy

Allegro Seller Info 0.1.19

Jak to zawsze bywa z UserScripatmi, niespodziewanie i nagle przestają działać. Allegro znów musiało coś pod maską pozmieniać, bo brakuje wyświetlania lokalizacji użytkownika na stronach aukcji. Po szybkim sprawdzeniu okazuje się, że nic się tym razem nie wywala, tylko ten node, który zawsze zawierał bebechy Reacta już ich nie ma i getReactInst zwraca undefined. Po testach wyszło na jaw, że po pierwszym odpaleniu zakładki (boxa) z informacjami o “Dostawie i płatności” te wewnętrzne elementy pojawiają się w obiekcie DOM-owym.

Czytaj dalej
tech

Ciekawe zastosowania klas lokalnych w C++

Po odkopaniu mojego starego hacka na pseudo-lambdy sprzed ery C++11 z wykorzystaniem klas lokalnych, postanowiłem trochę głębiej pogrzebać wokół tego niezbyt popularnego i chyba mniej znanego elementu języka C++. Może ktoś wykorzystuje takie klasy i uda mi się znaleźć jakieś ciekawe zastosowania i użycia tej konstrukcji.

tech

Lokalne klasy w roli funktorów i funkcji lambda w C++03

Natrafiłem na jakiś stary, sprzed ponad 5 lat, kod mojego autorstwa, gdzie w projekcie z różnych powodów używaliśmy starego środowiska, kompilatora lub języka w standardzie C++03. Były to już czasy grubo po premierze C++11 no i jak to bywa, człowiek zachłyśnięty nowymi elementami języka, strasznie usprawniającymi pracę, musiał sobie jakoś radzić w szarej rzeczywistości. Dla mnie takim największym problemem był brak anonimowych funkcji i wpadłem wtedy na genialną pseudo-protezę funkcji lambda, aby tylko nie trzeba było definiować zewnętrznych funktorów ;)

Czytaj dalej
tech

UserScript: wyścig szczurów przy wstrzykiwaniu styli

Przed świętami zrobiłem kilka poprawek w moich skryptach użytkownika, a teraz po świętach znów czekają mnie hurtowe poprawki, bo po wyczyszczeniu cache-u przeglądarki niektóre skrypty przestały poprawnie działać. W logach konsoli często pojawiał się komunikat o problemach z dodawaniem jakiś elementów do dokumentu, na przykład jak ten poniżej, z jednego z moich innych skryptów próbujący wstrzyknąć jakieś CSS-y do nagłówka dokumentu: Uncaught (in promise) TypeError: Cannot read property 'appendChild' of null at eval (userscript.

Czytaj dalej
tech

Blokowanie Google Consent (GDPR/Cookie)

Do pełni szczęścia w poprawkach moich UserSripts brakuje jeszcze zabawy z YouTube Block Popups (SignIn/GDPR). Skrypt ten nie był dawno aktualizowany, ale na szczęście dobrze sobie radził do tej pory z blokowaniem wyskakujących okienek zachęcających do zalogowania i/lub cookie-zgody i wymuszonym przerywaniem odtwarzania video. W sumie jego logikę można byłoby obecnie zawrzeć w kilku linijkach filtrów do AdBlocka (znalezione na r/uBlockOrigin): ! YT consent youtube.com##+js(set, ytInitialData.topbar.desktopTopbarRenderer.interstitial.consentBumpRenderer.forceConsent, false) youtube.com##+js(json-prune, [].response.topbar.desktopTopbarRenderer.interstitial.consentBumpRenderer) youtube.com##+js(json-prune, topbar.

Czytaj dalej
tech

YouTube Polymer UI Fix 0.1.1

Jak już dziś zacząłem się babrać w JS-ie, to może skrypt do poprawek UI na głównej YouTuba też poprawię ;) Poprawki mało znaczące, takie kosmetyczne, bo jedynie dostosowujące mój wstrzykiwany kod CSS do zmian na stronie. Dotyczących tylko “szkieletu” wyświetlanego przed załadowaniem się decylowej aplikacji, bo od jakiegoś już czasu widoczne było, ze te szare prostokąciki wyświetlane są w oryginalnej wysokości. Ciężko mi powiedzieć co tam się pozmieniało w kodzie strony, ale wystarczyła zmiana nazwy selektora klasy, plus dodatkowe styl dla rodzica, aby wszystko wróciło do normy - utrzymania spójności strony głównej z innym i podstronami listującymi video, do czego w ogóle powstał YouTube Polymer UI Fix.

Czytaj dalej
tech

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

MiniLog ‎@malcompl

Przejdź do MiniLoga