https://d-pa.ppstatic.pl/frames/pa-def/b5/7e/il20251030_947362439_xlarge.jpg
za mało nasrane, ja bym jeszcze dał napis TARCICA TANIO 505-555-123
Ciekawe wsm skąd się wzięło canvas API. Wiadomo że te półmózgi JavaScriptowe nie zdołałyby wymyślić czegoś co się jako tako trzyma kupy, więc zacząłem szperać. Cairo sprzed 2003 roku używa prawie identycznych funkcji. Ale geneza to chyba tak naprawdę postscript, też jest stack, macierz transformacji, fill, stroke I inne pierdolety. A to już wczesne lata 80
Ujdzie, czy przesada i dzwonicie po policję? XD
Chciałem sobie otypować grupę podobnych metod i po prostu użyć dekoratorów jak normalny człowiek, które co prawda w TS są trochę upierdliwe, ale da się je doprowadzić do działania. Tylko potem zmusić TS do wykminienia, jaki jest typ udekorowanej metody to jednak jest trochę koszmar, więc spłodziłem takie gówno.
W pythonie jakoś sobie poradzili z tym sprawniej, ale pewnie mieli łatwiej, bo dosłownie wszystko jest obiektem, a w JS to null niby jest prymitywną wartością, ale typeof null === 'object' zwraca true i nie są tego w stanie naprawić od 30 lat, bo internet by wybuchł xd
export const vecOp = <T>(op: (this: Vec, v: IVec) => T) => { function wrapped(this: Vec): T function wrapped(this: Vec, v: IVec): T function wrapped(this: Vec, x?: number, y?: number): T function wrapped(this: Vec, vx?: IVec | number, y?: number) { return op.apply( this, typeof vx === 'number' ? [{ x: vx, y: y ?? 0 }] : vx === undefined ? [{ x: 0, y: 0 }] : [vx], ) } return wrapped}
export class Vec implements IVec { add = vecOp(v => new Vec(this.x + v.x, this.y + v.y)) sub = vecOp(v => this.add(-v.x, -v.y)) dot = vecOp(v => this.x * v.x + this.y * v.y) dist = vecOp(v => this.sub(v).norm)
Mój graf niedomaga przy obliczaniu pozycji wierzchołków i jej dwóch pochodnych przy liczbie ~5k node'ów (na jednym wątku jedna klatka się renderuje około minuty xd) więc sobie przepisuję obliczenia do webgpu, bo to coś nowego a nie te upośledzone workery ciągle. Napisałem już shader, poustawiałem bufory. Teraz już tylko muszę wepchnąć do nich dane i zobaczymy czy działa. Czymajcie kciuki
kurw, zaraz zaczne ubliżać firmie aple tak jak już od dawna ubliżam mikrosoftowi
ja dopiero dzisiaj zauważyłem, że mi kursor laguje w terminalu, a mam już tego srahoe od 1,5 miesiąca
bawię się tym wyświetlaniem grafu wywołań funkcyj, chyba mi wyszła jakaś galaktyka z poprzeczkom
jjuż jest coraz lepiej, wierzchołki reprezentujące funkcje próbują się zgrupować według odległości w łańcuchu wywołań i tego, w jakim pliku siedzą i mi nie spierdalają poza canvas xd
Wczoraj wieczorem zacząłem się po raz kolejny zastanawiać, jak bardzo spierdolony jest projekt tego typka od dependency injection, więc zacząłem szukać sobie jakichś analizatorów kodu, które by wyszukiwały zależności po wywoływanych funkcjach, a nie tylko importowanych plikach.
No i znalazłem i zajebiście to działa, tylko że to narzędzie ma absolutnie obleśną i nieergonomiczną wizualizację grafu wywołań (to nie ty mi @Deykun mówiłeś o tym cytoscape? oni tego właśnie użyli, ale chyba niezbyt im poszło xD)
No to sobie zacząłem robić swoją własną wizualizację, bo mnie kurwa stać. No i tak robię robię i kminię jak zmierzyć siłę powiązań między danymi funkcjami, żeby ten graf się jakoś ładnie układał, żeby te wierzchołki miały wporzo grawitację, a nie że 10k node'ów nasranych na przestrzeni stu pikseli kwadratowych, c'nie
No i tak powoli rozkminianie tego przeszło w zwyczajne bawienie się canvasem i kolorkami, jak to zazwyczaj bywa. No i tak sobie myślę jescze w międzyczasie o tym jak liczyć tę grawitację i się bawię, i kiminię, i bawię
od dwóch godzin wpisuję jakieś pierdoły w wyszukiwarce guthubowej
https://i.imgur.com/5c2AhiP.png
nie wiem co o tym myślec
cikawe czy w gta vi będzue ciekawa mapa czy tak jak w gta v mapa 5 mln km² z czego 90% to kurwa góry i las
Mamy taki projekt na podstawie szeroko wykorzystywanego core'a, w którym z powodu szczątkowej dokumentacji i ogólnego burdlu (Microsoft, heh) po zbudowaniu podstawowego projektu wstrzykujemy skrypty js na chama do index.html. skrypty są koszmarne, bo połowa kodu to document.createElement, a funkcje tego rozszerzenia są dość obszerne (bluetooth, transpilator, I inne ciekawostki). Ogarnięcie skąd bierze się dany stan i dokąd zmierza graniczy z cudem.
Więc piszę teraz od nowa w typescripcie. Nadal będzie to osobno budowane i wstrzykiwane, ale ponieważ przynajmniej jest teraz jakaś struktura i typowanie, to jest to gra warta świeczki.
Aha, i pisze też do tego customowy jsx-runtime z bieda-reaktywnością, żeby się nie szarpać z DOMem ręcznie. Nawet to jakoś działa xD
Mój chomik wabił się dangerouslySetInnerHTML, ale zdechł po tym jak ktoś go obwiązał taśmą klejącą przez XSS
Witajcie, drodzy chomikujący!
Mój chomik, na którym właśnie jesteście, nie jest takim sobie "zwykłym" chomikiem
- u mnie można znaleźć takie pliki, których nie ma w swojej spiżarce żaden inny!
Istnieje od stycznia 2016 roku, ale rozwijany jest intensywnie od czerwca 2023 roku.
Lubię być kreatywnym, więc dokładam wszelkich starań, by mój chomik był
jednym z najbardziej rozpoznawalnych na platformie.
Każdą wolną chwilę czasu poświęcam na szukaniu w Internecie i zamieszczaniu w tej spiżarni plików, które mogą być tak cenne, że trzeba je zachować, zanim "nagle
i niepostrzeżenie" znikną z całego cyfrowego świata na zawsze!
Ponad 49 tysięcy plików w ponad 930 GB (stan na 3 października 2025) -
do wyboru, do koloru. Wszystko ładnie posortowane - i alfabetycznie, i kategorycznie!
Treści pochodzą z bezpiecznych i legalnych źródeł - żadnych wirusów i cracków.
Obiecuję każdemu odwiedzającemu dwie najważniejsze rzeczy
- 0 procent nudnych treści i 100 procent satysfakcji z przeglądania!
Tak więc... bez obaw, zapraszam do zwiedzania mojej spiżarni!
Zachęcam też do odwiedzania moich znajomych w LIŚCIE POLECANYCH!
CO CZWARTEK KOŁO GODZINY 16:00 1 GB TRANSFERU W WERSJI FREE.
POZA CZWARTKIEM TEŻ TYLE SAMO, JAK NABIORĘ WYSTARCZAJĄCO PUNKTÓW.
:) :) :)