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
@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ę
Valve zmieniło, że za 5 czerwonych broni można zrobić nóż teraz w CS i jebnął rynek.
Ja mam rękawicę i noża i spadło 1.3k -> 0.6k i 0.7k do 0.4k. Ale w całym rozrachunku chyba nie wiele się mi zmieniło, bo fioletowe i czerwone poszły do góry.
Ja te skiny głównie mam zaszłości, bo coś wypadło i skrzynki z 2016 są warte teraz więcej i generalnie mam, bo sobie zbierałem te co mi się podobały, i niech ludzie widzą, że mnie stać. I w sumie dobrze, bo nigdy tego nie traktowałem jako inwestycje, bo to siedzi na steamie więc rybka, ale faktycznie trzęsienie ziemi i faktycznie widać, że niektórym nerwy puszczają, bo byli inwestorami w pixele w grze. xD
Czasami jestem hakerem i napierdalam terminalem i czasami za szybko i czasami przerywam proces i zdarzyło mi się więcej niż 1 raz że lint-staged coś spierdolił i zestashował moje zmiany w kodzie i je wyjebał z przerwaniem procesu, i gówna nie da rady odstashować, jeszcze lepiej jak się w trakcie coś klepie w plikach i zapisuje nie scomitowane.
Maszyna do sprawdzania updatedu przed comitem co potrafi wyjebać updated super architektura kurwo. Dobrze, że jest VSCode local history. xD
https://github.com/lint-staged/lint-staged/issues/1311
Oczywiście, że dejkun mógł z resolvować konflikty w git stash entej libki do robienia dobrego kodu. xD
dobra naszitpostowałem znowu komci jakieś 200 ponad chuba
ranking jeszce się nie zaktualizował zobaczymy za minutę czy o pełnej odzinie wskoczę znowu na iersze miejsce xd
dobra naszitpostowałem znowu komci jakieś 200 ponad chuba
ranking jeszce się nie zaktualizował zobaczymy za minutę czy o pełnej odzinie wskoczę znowu na iersze miejsce xd
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`
U klienta w kodzie.
*,::before,::after { box-sizing: border-box; border-width: 0; border-style: solid; border-color: #e5e7eb;}
I w sumie da się lepiej ustawić border domyślny i to jest overkill, ale to nie jest takie głupie. Wystarczy border-bottom-width: 1px; albo border-b potem gdzie się chce. Więc nawet trochę szanuję.
po klasach z tailwinda widać, że zjebał ktoś.
@Deykun: no, pełna zgoda, zjebał, bo użył tailwinda xD
U klienta w kodzie.
*,::before,::after { box-sizing: border-box; border-width: 0; border-style: solid; border-color: #e5e7eb;}
I w sumie da się lepiej ustawić border domyślny i to jest overkill, ale to nie jest takie głupie. Wystarczy border-bottom-width: 1px; albo border-b potem gdzie się chce. Więc nawet trochę szanuję.
@sens: a w svelte super mi się podoba, że mogę komponenty sobie pisać używając kilku czystych tagów na kryż i je stylować bezpośrednio, praktycznie nie wstawiam klas żadnych
U klienta w kodzie.
*,::before,::after { box-sizing: border-box; border-width: 0; border-style: solid; border-color: #e5e7eb;}
I w sumie da się lepiej ustawić border domyślny i to jest overkill, ale to nie jest takie głupie. Wystarczy border-bottom-width: 1px; albo border-b potem gdzie się chce. Więc nawet trochę szanuję.
@Deykun: tailwinda nie lubię bo potem cały HTML jest zaćkany jakimiś p-4 b-0 q-420. Za to przemawia do mnie scope'owanie w svelte xd czysty scss też wspiera to, ale źle się tego używa, a jeszcze gorzej to popsuli w ASP net
Chcę tylko powiedzieć, że ten dowcip o braniu 6 gaci na 4 dniowy wyjazd jest bez sensu, jak ja gdzieś jadę to chodzę w chuj dużo wracam do mieszkanka, biorę prysznic i nowe gatki, świeżość cywilizacja i easy można zlecieć więcej par.
U klienta w kodzie.
*,::before,::after { box-sizing: border-box; border-width: 0; border-style: solid; border-color: #e5e7eb;}
I w sumie da się lepiej ustawić border domyślny i to jest overkill, ale to nie jest takie głupie. Wystarczy border-bottom-width: 1px; albo border-b potem gdzie się chce. Więc nawet trochę szanuję.
@Deykun: jak dla mnie smrut (pomijając to, że CSS zazwyczaj śmierdzi, jaki by on tam nie był).
Zresztą shorthand jest dużo wygodniejszy, border: 1px solid var(--twoj-zasrany-kolorek-w-zmiennej-jak-juz-chcesz-byc-taki-genryczny);
Z ciekawych snippetow: * { all: unset ! important; }
W ogóle to zawsze podefiniuja jakieś breakpointy, kolory, a potem i tak każdy nakurwia hexy z łapy XD
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)
Mitnick niezmiennie ma rację - najsłabszym ogniwem nadal jest człowiek, odrobina odpowiednio opakowanej manipulacji i człowiek może zostać ugotowany:
https://blog.daviddodda.com/how-i-almost-got-hacked-by-a-job-interview
@Deykun: hehe, muszę se przeczytać znowu książkę "JavaScript w 24 godziny" którą dostałem od starego jak miałem jakieś 12 lat xd, to jeszcze czasy xmlhttprequestow i obsluga_klopotliwych_znizek(czy_wybrano_psa)
Mitnick niezmiennie ma rację - najsłabszym ogniwem nadal jest człowiek, odrobina odpowiednio opakowanej manipulacji i człowiek może zostać ugotowany:
https://blog.daviddodda.com/how-i-almost-got-hacked-by-a-job-interview