Wesprzyj nas i przeglądaj Hejto bez reklam

Zostań Patronem

#vscode

2
7
Zajmuję się analityką internetową - zbieram i raportuję dane o tym, jak ludzie przeglądają strony internetowe.

Przez ostatnie kilka miesięcy pisałem sobie rozszerzenie do #chrome, które wizualizuje dane o klikniętych na stronie elementach - tzw "heatmapa", czy też "clickmapa".

Była to okazja żeby mieć sporo niecodziennych wyzwań do rozwiązania, i pomyślałem że się nimi podzielę. Ponieważ sporą część tego co musi być zrobione miałem w głowie i nie porywało mnie robienie jej, do stworzenia części kodu użyłem #chatgpt i #github #copilot , co też przyniosło ciekawe doświadczenia.

Są to totalnie geekowskie wynurzenia ale mam nadzieję znaleźć odrobinę przestrzeni gdzie mógłbym też zyskać może jakiś feedback na temat tego rozwiązania 😉

Całość opiera się na zbieraniu selektorów CSS klikniętych elementów, a później pobieraniu tych danych i wizualizowaniu ich.

  • Sama komunikacja z zewnętrznym serwisem w Chrome Extensionie to już jest ciekawy fikoł, bo można to robić tylko z konkretnego kontekstu - service workera (a.k.a. background.js) - wymaga to przerzucania danych w odpowiednie miejsce (np. do otwartego taba przeglądarki), bo nie można ich pobrać "gdzie się chce"

  • Wizualizacja klikniętych elementów to fragment w którym mocno wspomagałem się AI - ChatGPT dobrze był w stanie zrozumieć o co mi chodzi i uwzględnić wymagania, ale jego sposób pracy potrafił się wahać z tygodnia na tydzień. W końcu przerzuciłem się na GitHub CoPilot ponieważ sugeruje na podstawie całego otwartego w #vscode projektu i bieżącego miejsca w kodzie. Czasem jak kulą w płot, ale zaoszczędził mi mnóstwo czasu. W sumie cały algorytm wizualizacji to jego dzieło którego staram się sam nie ruszać 😅 jedną z rzeczy, które AI rozwiązało jest kolejność renderowania elementów na podstawie sprawdzenia, który jest czyim dzieckiem, tak, aby nie było później zwizualizowanych elementów, których nie da się kliknąć.

  • Największym problemem, nad którym dumałem jak memiczny Pablo Escobar przez 1,5 miesiąca odkładając całość w kąt, było jak skonstruować toolbar wyświetlający się po kliknięciu danego elementu. No nie mogłem tego sobie dobrze wymyśleć biorąc pod uwagę to co chciałem zrobić, czyli doklejać go do już istniejącego elementu i pozwalać mu się rozwijać na obszar poza tym elemente. Z pomocą też pewnego wieczora przyszło AI, ale do rozwiązania o co je poprosić musiałem dotrzeć sam.

  • Nadawanie odpowiedniej kolorystyki w zależności od ilości kliknięć na dany element jest czymś co muszę jeszcze dopracować. Pierwsza wersja opierała się na przypisaniu natężenia jednego koloru, teraz już mam 2 kolory. Wymyśliłem sobie żeby dzielić skalę pomiedzy tymi 2 kolorami na liczbę kolorów odpowiadającą ilości elementów do pokolorowania, ale to nie daje wyraźnych wizualnie efektów, więc wprowadziłem dodatkowy model który elementy z największą ilością kliknięć doboostowuje na podstawie tego, które mają miejsce w datasecie (bo jest on posortowany od najbardziej klikanych elementów)

  • Potrafią się też zdarzać uszkodzone dane z niewłaściwymi, urwanymi selektorami CSS - trzeba je w miarę możliwości oczyszczać i wizualizować na najbliższym elemencie

  • Niektóre elementy na stronach, gdy są kliknięte, potrafią zwracać inne selektory np zawierające klasę "active". Żeby te dane łączyć (chociaż chyba mi to jeszcze nie do końca działa 😀 ) też zrobiłem dedykowaną temu funkcjonalność.

  • Problem, którego jeszcze nie rozwiązałem: przy używaniu google translate, mogą się zmieniać wykrywane selektory CSS klikniętych elementów, bo jest w nich dodatkowo umieszczany tag <font> albo i dwa

  • Popełniłem też sporo mniejszych, czeskich błędów przy obsłudze dość złożonego API - tym lepiej miałem okazję się go nauczyć

  • GitHub CoPilot dobrze się u mnie zadomowił. Zrobiłem kilka zrzutów które chcę zmontować w filmik o nim, gdzie mam przykłady i dobrych i kiepskich jego zachowań. Czasem trzeba go lekko szturchnąć w odpowiednim kierunku, i potrafi dużo pomóc, ale czasem jest zupełnie bezużyteczny i kręci się w kółko jak 5 latek

No i taka robota. Mi się bardzo przyda w mojej codziennej pracy. Jak coś, to extension współpracuje z analityką Piwik PRO, która ma dwie zalety - jest robiona w Polsce i jest darmowa do 500 tys. eventów miesięcznie ( ͡° ͜ʖ ͡°) #toniejestreklama, może się komuś przyda, a samo rozszerzenie tu: https://logbaker.com, a filmik mam nadzieję że się osadzi: https://www.youtube.com/watch?v=wJSYjGRO5YM

Jeśli ktoś ma pytania dot. developmentu chrome extensiona też chętnie odpowiem na tyle ile wiem 😃
10

@gonerator dla kogo zbierasz te dane?

@em-te dla właścicieli różnych stron internetowych - prywatnych firm

całkiem ciekawe wyzwanie

pytanie zasadnicze: co cię motywowało do tworzenia własnego rozwiązania?

Gotowych rozwiązań do heatmap było sporo (nie robię w tej branży od wielu lat, toteż na bieżąco już nie jestem) i głównym problemem była ich ociężałość. Ale nie wspomniałeś o gotowcach w ogóle, toteż jestem ciekaw czy krojenie żadnego gotowca nie byłoby "bardziej".


Druga rzecz to selektory.

Jak zbierasz dane dot. selektorów obejmujących całą szerokość lub wysokość widocznego

obszaru (nie wiem jak się tłumaczy viewport)?

@VonTrupka motywacja do stworzenia własnego rozwiązania była taka, że już tej platformy używałem, a rozwiązanie w niej zawarte nie było wystarczające. A nie chciałem do samych heatmap zaprzęgać zawsze kolejnego rozwiązania, skoro to już mam działające. Oczywiście, jest wiele rozwiązań, ale każde ma swoje wady i zalety oraz koszty. A tutaj wiem dokładnie jakie dane przetwarzam i co chcę z nimi zrobić


Jest jeszcze aspekt prywatności przetwarzania danych - dla wielu firm istotny - a przy niektórych rozwiązaniach potrafi to być bardzo niejasne (patrz: MS Clarity). Piwik ma to dobrze ograne dzięki anonimizacji.


Co do selektorów - jeśli element ma całą wysokość lub szerokość viewportu, to jest zbierany tak samo (np body) - i na nim też są wizualizowane kliknięcia, najczęściej te nieintencjonalne - jeśli dobrze rozumiem o co pytasz 😃 ale z defaulta ignoruję wizualizowanie kliknięć na tych elementach właśnie z tego względu - nie mają znaczenia dla analizy tych faktycznie interaktywnych elementów, zaburzają ją

@gonerator

założyłem defaultowo self hosted rozwiązania, chmurowatość to dla mnie ostateczność

przy czym i tak prędzej odpuściłbym 3rd party hosted niż go użył 😉


tzn ogólnie rzecz biorąc i afair liczone były współrzędne kursora podczas wywoływania eventu i normalizowane względem - hgw, jak to określić - rozmiarów strony lub głównego kontenera.

I tutaj pytanie moje dotyczyło selektora elementu który ma dużą szerokość lub wysokość a jest w zasadzie pusty. No jeszcze wypadałoby uściślić jakiego typu selektory i czy są unikatowe, bo w przypadku klas to odróżnienie klikniętego elementu tylko na tej podstawie byłoby ... trudne


takie tam moje geekowskie dywagacje ( ͡~ ͜ʖ ͡°)

Komentarz usunięty

Zaloguj się aby komentować

Zmiana interfejsu w #phpstorm (i pewnie we wszystkich produktach #jetbrains ) tak by wyglądały prawie jak #visualstudiocode to była najlepsza rzecz, jaką ta firma zrobiła, przynajmniej z mojego punktu widzenia.

Jako, że przy okazji tej zmiany wywaliło w kosmos wszystkie moje skrupulatnie ustawiane paski, przyciski i ich położenia (a przy okazji przestała działać spora część innych nie związanych z wyglądem konfiguracji) pomyślałem sobie:

> jeśli coś działa i wygląda jak darmowy #vscode to po co mam płacić co roku grube hajsy za licencję?

I tak oto, skoro i tak musiałem wszystko konfigurować od początku, to zamiast konfigurować storma, spróbowałem VS Code. Chwilę to zajęło, ale pluginami i konfiguracjami odwzorowałem sobie 95% tego co miałem w PhpStorm.

Super decyzja JetBrains 😉 Oszczędziliście mi mnóstwo kasy 😉

#php
c521f6f9-8d08-4fe8-82b8-3eb9b0cf2c95
18

@Barcol @RobertCalifornia przecież można jednym kliknięciem wrócić do starego wyglądu.

@Anteczek można, ale po co?

@Anteczek Doświadczenie mi mówi, że takie zabiegi to często jedynie zyskiwanie na czasie. Na razie można wrócić, ale za wersję albo dwie mogą stwierdzić, że nie mają jednak zamiaru kilku wyglądów jednocześnie wpierać :v

@RobertCalifornia Jak nie lubię Microsoftu to akurat VS Code to jest mistrzostwo. Kiedyś byłem bardzo niechętny i korzystałem z Atoma, ale kiedy Atom praktycznie stał w miejscu i liczył na rozbudowę przez community to zespół pracujący nad VS Code dodawał coraz to nowsze rzeczy a jednocześnie community rosło szybciej niż te Atoma i powstawało coraz więcej rozszerzeń i serio w tym momencie to zaczynam uważać, że VS Code zaraz stanie się edytorem kompletnym którego można używać do większości popularnych języków programowania prawie tak samo wygodnie jak dedykowane IDE.


P.S. tak jak już ktoś wspomniał wyżej, polecam VS Codium czyli wersje VS Code bez telemetrii od MS bo mimo, że odwalili kawał dobrej roboty to nie dajcie się im szpiegować xD

@Thereforee zgadzam się w 100% ten ich dev kit się sypie i co chwile trzeba przeładowywać okno..

Zaloguj się aby komentować

@schweppess No wlasnie. Instalacja na czysto vsc nie pomaga, zmienne srodowiskowe nie tkniete, C/C++ do vsc doinstalowane, nie widac efektow, mam dosyc

@miej_nos_na_pol_mordy polecam ogarnąć CMake

Zaloguj się aby komentować

Dasung Paperlike 253 LUB BOOX Mira Pro
25 cali, 16 odcieni szarości, 3200 x 1800
cena 7000-10000 złotych.
Plusy:
Jest zaskakująco płynny jak na taki ekran.
Nie naświetla oczu, bo to światło odbite. Nie mruga, bo to elektroniczny papier.
Minus:
Smuży, gubi klatki na YouTube(bo od tego nie jest).

Ciekawe czy jest motyw kolorów kodu do VSCode, który potrafi maksymalnie wykorzystać te 16 odcieni szarości? ????
Może jeszcze oprzeć się o grubość, typ fontu? Podkreślenia, pochylenia? Wtedy może dałoby radę odtworzyć różnorodność kolorów kodu.
#technologia #ekran #monitory #programowanie #vscode #zdrowie #oczy #wzrok
https://www.youtube.com/watch?v=_aUizYZNbAE
11

@Jason_Stafford


Do grania w gry? Do oglądania filmików na YT?


Nie


Widzę jedynie zastosowanie tego w jakichś biurach, czy dla innych pisarzy.


No tak.


Znaczy ja się zastanawiam czy jest sens z VSCode (nie wiem czy widzisz w poście to napisałem), i się zastanawiam czy dałoby się na 16 odcieniach szarości ogarnąć/zastąpić kolory kodu. To ma niezłą rozdzielczość, więc można grubością/fontem itp. coś pokombinować, więc może może by się dało.

To takie przeznaczenie by było - kod.


A tak rozszerzając, drugi wielki ekran albo projektor, i wiesz, trochę na ten e-ink, trochę na ten z oddali projektor/wielki ekran, i już oczy się tak nie przesilają.


Wiadomo że lepiej jakby był kolorowy i szybki e-ink, ale nad takim kompromisem się zastanawiam.

No tak.


@fewtoast A piszesz, że to domowy monitor. Więc się zdecyduj czy to jest dla profesjonalistów (pracowników) czy do rozrywki.

@Jason_Stafford W tym sensie domowy, że pod człowieka jednego a nie pod jakieś wystawy. Czyli trochę źle napisałem.


Ale można pracować w domu na nim, i można też hobbystyczne rzeczy robić w domu na nim. No ale myślę że już wiadomo o co chodzi.


Bo że pod programowanie to już w samym poście pytałem.

Zaloguj się aby komentować

Sorry że tak od razu z tematem, ale...
Mam issue "Pin Commands and Pin Projects" na githubie VSCode, ulepszający, używanie częstych komend i projektów.
Potrzeba 20 upvotes żeby weszło na backlog. Proszę o upvote w tym linku:
https://github.com/microsoft/vscode/issues/163509
W ostatnim VSCode, w wersji 1.72, dodali "Pin Tasks" (jak na obrazku), i chciałbym po prostu coś identycznego dla "Command palette..." i "File: Open Recent...".
87e360d9-fa30-4756-9060-bfe4bf94baed
4

A to nie jest tak, że te głosowania są po to, żeby użytkownicy głosowali nad tym, nad czym im najbardziej zależy, a nie żeby zwoływać ludzi po forach żeby głosowali na coś o czym nie mają pojęcia?

@SQ5MLD Znaczy, jeśli ktoś plusuje a mu się to nie podoba, to w sumie nie wiem. Zakładam że jak ktoś wejdzie i plusuje, to ma konto na github, ma coś wspólnego z webdev, używa VSCode, i faktycznie spodobała mu się moja propozycja. Opisałem propozycję najbardziej zrozumiale jak potrafiłem, więc każdy raczej wie o jaką funkcjonalność chodzi?

Na pewno nie każdy webdev używający VSCode wchodzi na githuba VSCode, więc nawet by nie wiedział że ktoś taką propozycję dawał i że ona przepadła przez brakujące kilka upvotes.

Mam nadzieję, że teraz wszystko ok, po wyjaśnieniu?

@fewtoast przy takich założeniach wporządeczku imo

Zaloguj się aby komentować

Teraz widziałem już wszystko

Zaloguj się aby komentować