Udało mi się w końcu osiągnąć przybliżenie zbioru Mandelbrota na poziomie 10^-31 na piksel. W javoskrypcie! W przeglądarce!
Zajebisty jest ten trik z perturbacjami. Teraz tylko optymalizacja i mogę zająć się szukaniem pracy xD
tak wygląda zbieżność ciągu z_n+1 = z_n^2+p dla punktów p blisko brzegu głównej kardioidy zbioru mandelbrota
sory za jakość, dbam o transfer
Bawię się tym webgpu, tym razem renderuje sobie zbiór mandelbrota. Już kiedyś pisałem to w C używając 128-bitowych floatów. Oczywiście na GPU to zupełnie inna bajka, bo okazuje się że max co zdecydowana większość GPU obsługuje to 32 bity.
Na 32 bitach to sobie można przybliżyć kilka razy i robi się pikseloza. No to najpierw zaimplementowałem emulacje 64 bitowych floatów. Można przybliżać dwa razy dalej. No ale to nadal trochę sraka, bo fajnie by było przybliżać z dowolną precyzją xd
Okazuje się że jest fajny trik pochodzący z teorii perturbacji czy innego znerdziałego działu matematyki. Ale chodzi mniej więcej o to, że zamiast liczyć sobie każdy piksel z osobna, to liczy się tylko centrum tzw. orbity z wysoką dokładnością, a potem liczy się tylko delty między centrum a interesującym nas punktem. Z niezrozumiałego dla mnie na razie powodu, nie potrzeba do tego większej liczby bitów, żeby działało.
Ofc jest to przybliżenie i trzeba dobrze wybrać to centrum orbity, żeby było ładnie. Później prześlę wam jakiś obrazek xd
A tak, proszem państwa, optymalizuje się obliczenia na dużych zbiorach punktów. Dzieli się rekurencyjnie przestrzeń na części, jeżeli dany obszar ma dużo punktów. Dla blisko położonych liczy się dokładnie, a dalekie obszary przybliża się, redukując do pojedynczego, uśrednionego punktu
Ten gemini lepszy niż czat gpt (pomijając to, że czyści dyski vibe coderom xD, ale w sumie GDZIE WADY??). Szybciej odpowiada, daje lepsze wskazówki i mi podpowiedział firmę, dla której rzeczywiście chciałbym pracować i która rzeczywiście ma jakieś wakaty, a nie jakieś pierdololo schujałe zalewające portale z ofertami kołchoźniczymi.
I nie ma tego zjebanego stylu wypowiedzi, że rozmawia z tobą, jakbyś był mocno upośledzony i trzeba ci wszsytko ładnie wypunktować i nasrać emoji
@sens:
Wczoraj oglądałem coś o dev containers i on stawia obraz na dokerze i nie zje dysku przez przypadek:
https://youtu.be/kPMA9cnpScU
W sumie wygląda ok, ale ja dockera tylko dotykam jak muszę. dx
Z normalnej rozmowy to Gemini jak do sprawdzałem z rok temu to był mocno niedojebany.
Z normalnej rozmowy to Gemini jak do sprawdzałem z rok temu to był mocno niedojebany.
@Deykun: a to ja tak samo, ale musiał jakiś apdejcik dropnąć, bo ogarniał dobrze dzisiaj.
Pytanie do kuców, stawiam że np @Deykun ma świeże CV xd dajesz jebanie o te ATSy? Tzn teraz żeby czatbot nie odrzucił CV to się pisze takie smutne jakby wyplute z LaTeXa na pierwszych ćwiczeniach jednokolumnowe CV. To tak robisz?
Bo ja ostatnie CV to oddałem w 2018 roku xd więc nie jestem na czasie
No i wgl czego używacie do tworzenia CV. Jakieś templatki, MD -> html -> pdf, LaTeX, Google docs, jakieś online gówno?
@Deykun: ja to rzadko używam kopiujwklejek w ogóle, wolę przepisywać manualnie, bo wtedy mam wrażenie, że robię to ze zrozumieniem xD czy tak jest w rzeczywistości? nwm. ale boje sie że już zdziadziałem zupełnie
XD okazuje się że CEO mojej firmy jest oskarżony o przekręty finansowe w firmie której był CEO wcześniej xdddd
Ech i skończył się ciepły kurwidół. Moje przedsiębiorstwo dla którego robię już 8 lat właśnie upada i sobie głupi ryj rozwala xD
Boje się że skończę na hotdogach w żabce
@sens: dobrze by było, takie klepacze jak wy dzięki AI na szczęście stają się anachronizmem jak szwaczki w XIX wieku dzięki maszynie do szycia. Z nieoszukiwaną radością patrzę jak ta cała bańka buchelterów kodzenia upada na ryj i wyrobnicy jak wy se głupi ryj o to rozwalają. Czarodzieje kodu- XD
Heh wczoraj myślałem że jestem geniuszem. Ale dzisiaj patrzę i ten jupiter notebook ma canvas, markdown I jeszcze w kurwę widgetów jakichś plus potrafi wykonywać lodzik
Kurwa lodzik, lodzik pewnie też ale chodziło o kodzik
No to pozamiatane krwa
Ale przynajmniej notatki będę miał ładne
@Deykun: nie no ja km coś jest i działa no to chuj trudno. Chciałbym się jakimś ciekawym projektem zająć bo czuję że marnuję swoje zasoby kucowej many.
Ale nie dla robaka to. Innowacje są dla zarządu panie areczku, dla pana jest ustawianie kwadratów w typescripcie i zadanka z advent of code raz w roku
@sens: ja lubię userscripty z tempermonkey i miałem rozrzucone po 7 projektach process buildu środowiska do testowania ich live podczas developmentu, i za każdym razem musiałem czyścić, i ostatnio trochę to ogarniam i stawiam repo templatkę pod userscript z testowaniem i ts. I już mam nawet fajne, typescript build i host przez pnpm dev i lepsze rzeczy ograne niż wydłubane na szybko.
Takie mamy czasu wspaniałe że można sobie osadzać w markdownie przeróżne gówna (poza oczywistym htmlem, ale to jest niewygodne i przeczy idei czytelności). Od jakichś grafów, przez interaktywne modele 3d aż po renderowanie LaTeXa. I wszystko się wyświetla ładnie w podglądzie w vscode, cnie.
A ponieważ trzymam różne notatki markdownowe i sporo wizualizuję w canvasie jsowym, to szukałem i wsparcia dla tego. Bo mermaid jest ograniczony, svg za dużo klepania, a osobno robić i eksportować obrazki to się robi burdel w drzewie plików.
No ale nie znalazłem. Zatem zabrałem się za pisanie rozszerzenia do pisania skryptów canvasoeych. To będzie kurwa hit mówię wam. Juz mi się świecą przed oczami gwiazdki na githubie i donejty od sponsorów hehe
Bo będzie wszystko. Będzie można pisać zgodnie z API, ale będzie opcjonalny syntax sugar I podświetlanir składni. I jeszcze bogata obsługa operacji na wektorach i macierzach. Mówię wam kurde, za pół roku przeprowadzam się do San Francisco I zakładam startup
I wiecie jak się kurwa skończyło z tymi GUI pythonowymi? XD python robi okienko z WebView i podaje mu dane z bazy, reszta to zwykła stronka
Jakbym robił to dla siebie to bym sobie pewnie pisał swoje widgety i robił system layoutów w pytongu ale kurwa pomyślałem se, nie mój cyrk, zrobię to po prostu w pythonowej wersji elektrona
Naprawdę obsługa eventów w tkinter to jest jakieś średniowiecze. Qt nie będę bo powody, a reszta nie ma nic kurwa żadnych kontrolek najwyżej button co se możesz go przycisnąć I usnąć
Z perspektywy czasu doceniam wprowadzenie := w pytongu. Jest to na tyle składniowo obrzydliwe i przypominające Pascala (kto indeksuje od 1 ten zapierdala) rozwiązanie, że używa się tego w ostateczności, a jednak czasem się przydaje.
@sens: nie krytykuję, tylko twierdzę, sam w nim rzezbie od jakiegoś czasu, bo jest uniwersalny i fajny, ale smietnik i pierdolnik wokół niego jest czasami ciężki.
@spam_only: z moich doświadczeń to pierdolnik dotyczy głównie bibliotek, które mocno zależą od kompilowanych w c lub cpp modułów właśnie jak pyqt. Wiadomo, idealnie nie jest ale wydaje mi się, że ekosystem jest dużo łagodniejszy w obsłudze niż cpp a już na pewno js/ts bo to jest dopiero prawdziwie koszmarne, a długoterminowe utrzymanie projektu większego niż wizytówka januszexu wymaga sporego wysiłku
Jprls, całą dobę mi zajęło ustawianie nowego repozytorium. Miliony tsconfigów, jebanie się z zależnościami, konfiguracja pnpm i workspace'ów, linkowanie .d.ts na 7 różnych sposobów.
Obsługa tych wszystkich narzędzi wokół js to jest jakiś kurwa dramat. Jak układanie puzzli z jakimś obrazem dwurnika, którym nadpobudliwe dziecko poobrywalo końcówki, zalało sokiem, a potem przyszedł pies i na to nasrał.
Naprawdę kurwa, te nerdy od C++ to może i ohydne, ale przynajmniej mają jakieś standardy ustalone na sztywno, a nie kurwa dziś robisz repo, a pojutrze ci się wszystko rozpierdala, bo ktoś uznał że jednak trzeba coś robić zupełnie inaczej
Jest taka zajebista apka na MacOS betterdisplay. Jest w chuj użyteczna, pozwala na ustawienie wyższej jasności niż Apple pozwala w ustawieniach i ogólnie ma miliard innych opcji .
Oczywiście jest płatna, ale ma pro trial dwutygodniowy. Co dwa tygodnie odpalam sobie skrypt który mi kasuje kilka plików konfiguracyjnych i mi się ten trial resetuje.
Chore? Ale mam do tego prawo (chyba, przecież kasowanie plików z komputera to nie zbrodnia?)
@Deykun: od razu bym wypierdolil xD ale to jeszcze pół biedy. Ja miałem kiedyś taki theme, który zżerał mi CPU tak że mi się vscode zacinał I chyba z pół roku mi zajęło dojście do tego że to jest źródło problemu
W nawiązaniu do ostatniego postu użytnika @ajdajzler chciałem się pochwalić swoim znaleziskiem. Szukałem jakiegoś symulatora tych komputerków pokładowych w samolotach pasażerskich, żeby obczaić jak to w sumie działa i znalazłem
https://www.equicom.net/mcdu/index.php
Wiadomo, nie ma się co śmiać, bo to jest robota jednego człowieka, który nie jest programistą, więc nawet dość imponujące, ale niektóre kawałki kodu są przeurocze xD
<body style="overflow-x:hidden;"> <!-- this is used to catch keypress --> <input type="text" value="" id="keycatcher"> <!-- end of keypress thing -->
You should use this site with Chrome or Chromium browser for best results because other browsers may have too many keyboard quirks that will quickly become annoying (for example, the QuickFind feature in Firefox, or the way Firefox uses the backspace key for navigation).
Czyli nie odpalisz na FF, bo autor nie zna preventDefault
/////////////////////////////////////////////////////////////// // Key E // MCDU.keyE.node.onclick = function(){ if(powerStatus=="on"){ if(canUserEdit==true){ if(textBufferSize<31){ textBuffer=textBuffer + "E"; updateScratch(); }; }; }; };
I tak dla każdego przycisku xD
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
@sens: nie wiem czemu szkalowanko, wszedł w HTML5 i próbował zastąpić flasha (powodzenia xd), no ale faktem jest, że jak mówimy o chujowym sofcie to Flash stał na podium.
@Deykun: nie no, źle mnie zrozumiałeś, ja chwalę canvas API i dlatego byłem przekonany, że to nie jest pomysł jsowych soyboyów, tylko skopiowali istniejące od dawna, dojrzałe rozwiązanie
i oczywiście miałem rację
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)
@sens: aha, jak powyższe nie wywołuje u was odruchu wymiotnego, to co powiecie na emulację przeciążania operatorów używając template tagów? XD
export class Vec implements IVec { static expr(ops: TemplateStringsArray, ...args: any[]): Vec | number;
A po dopisaniu jakiegoś prostego shunt yarda można sobie używać takiego lukru składniiwgo :--DD
const u = new Vec(2, 1)const v = new Vec(3, 7)const p = Vec.expr`|${u} - ${v}|^2`
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
@sens: działa! XD z jednej klatki na minutę udało się zrobić prawilne 60 fps (no może nie jest stabline podczas interakcji z UI, ale to wina raczej tego, że nie dzielę renderowania na mnijesze części, żeby się renderowało bardziej asynchronicznie)
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
@sens: https://i.imgur.com/7Wxhv76.jpeg
pamietacie jak jakies 10 lat temu wszyscy słuchali makintosz plus i byli AESTHETIC?
ja kurwie
to było 15 lat temu
x__X
15 lat temu był 2010 rok
## SZOK
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ę
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
Zrobiłem jakiś czas temu rozszerzenie do vscode, dziś patrzę a tu jakiś typek który projektował którąś tam wersję AutoCAD pisze mi issue że super rozszerzenie, podał listę ficzerow, które by chciał i zaproponował 50$ dla Polaka robaka jeżeli zaimplementuje przynajmniej jeden xD
Czuję dobrze open sos kontrybutor
Hajsik przyjmę chętnie ale fajnie że mojego kodu używa z własnej woli 80 letni gość z dużym doświadczeniem a nie że Mati po bootcampie Vibe koduje bota i spamuje gównianymi issuesami żeby umieścić changelog.md w repo, bo on tak lubi
To bardzo budująca myśl, że nie ważne czy wstrzykujesz asynchroniczne korutyny do kontenera, czy trenujesz wielowarstwową sieć neuronową czy tworzysz grę o ruchaniu psów. Pod spodem to i tak jest tylko zegarek, kalkulator i goto