
wombatDaiquiri
- 559wpisów
- 7296komentarzy
Tech enthusiast. Not a real human.

Tech enthusiast. Not a real human.
Zaloguj się aby komentować
fakty mają tę przewagę nad emocjami, że totalnie nie musicie mi wierzyć żeby sprawdzić czy Was robię w c⁎⁎ja;
wielki mur chiński ma 62,119km długości
jestem bardzo zainteresowany wynikami tej ankiety
ale jak mogę jeszcze zadać pytanie, to wynik sondażu nie musi odzwierciedlać totalnie niczego xD
#polityka #psychologia#wybory #srajzhejto #gownowpis
Zaloguj się aby komentować
Tomasz Nikodem Hajto, ps. „Gianni” [...] – Ja kupuję tylko firmy Gianni Versace – powiedział i w ten sposób został na długie lata „Giannim”
Lubię przekazywać nazwami funkcji / podprojektów jakieś skojarzenie w formie easter-egga. Mam nadzieję, że śmieszne. #lajko <---- tag z #hejto dad jokes
No więc dzisiaj - frontend z użyciem Vue (nazwany właśnie `gianni` - sprawdź repo, daj gwiazdkę https://github.com/wombatDaiquiri/lajko ). Znowu pojęcie o tym jak działa framework mam mgliste. Ale działa. Jak chcielibyście mnie poprawić, to zapraszam do komentarzy
Jak po sznurku, z tutoriala https://vuejs.org/guide/quick-start.html#creating-a-vue-application
> npm create vue@latest
tutaj poklikałem co mi się wydawało sensowne na czuja xD
>
>
>
>
>
>
>
>
>
no więc mamy folder z przykładową apką vue.
> cd gianni
> npm run dev
wchodzimy z przeglądarki na http://localhost:5173/ - no coś tam się wyświetla.
ponieważ jestem totalnym beztalenciem graficznym, to po prostu odtworzę wygląd z hejto.
Efekt końcowy na screenie poniżej;
No więc jak teraz sobie użyć apki? (tutaj jak otworzyć terminal: ) Otóż musicie;
1. odpalić `nodejs scrape.js` żeby pobrać dane z hejto
2. skopiować nazwę pliku utworzonego w data-snapshots ( będzie wyglądała mniej-więcej tak: 2023-09-21T23
2.1. (już w tym momencie możecie sobie przejść do kroku X ale wtedy dostaniecie normalne hejto tylko brzydsze)
3. odpalić skrypt do przesortowania postów (możecie odpalić oba)
3.1. `nodejs process.js --cmd=likes_total --source=data-snapshots/2023-09-21T23
3.2. `nodejs process.js --cmd=comment_likes_sum --source=data-snapshots/2023-09-21T23
4. wskazać w pliku ./gianni/src/App.vue skąd pobrać posty ( `import posts from '../../data-processed/cls/2023-09-21T23
5. wejść do folderu gianni: `cd gianni`
6. odpalić serwer z frontendem xD kiedyś se o tym też pogadamy ( `npm run dev` )
7. wchodzicie na http://localhost:5173/ i widzicie brzydkie hejto, ale z postami być może w innej kolejności niż na hejto
8. zauważcie, że tylko raz kopiowaliśmy nazwę i wszędzie ją podmieniliśmy - to oczywiście super kandydat na automatyzację/flagę. Ale napisanie aplikacji w taki sposób to albo zdrowy rozsądek albo doświadczenie. Nie chcę na Was wywierać presji więc pozwolę sobie być nieskromny.
wszystkie te kroki można zautomatyzować - ale automatyzowanie czas. a moja doba ma jedynie 24 godziny, tak samo jak Wasze. Więc mam jeszcze dużo tematów na posty.
#programowanie #javascript #frontend #webdev
inb4 czemu nie czysty js: bo wymaga więcej tłumaczenia a tutaj można robić "cargo cult" i używać magicznych formułek do tworzenia interfejsów
permalink do repo: https://github.com/wombatDaiquiri/lajko/tree/v0.0.3

Zaloguj się aby komentować
Hot tejk: zamiast głosowania na PO będę głosował na Lewicę, żeby przypadkiem nie skończyła pod progiem.
W szczególności polecam tę strategię osobom które wahają się nad trzecią drogą.
Konfederatów to również dotyczy, ale oni raczej nie myśleli o głosowaniu na inne partie.
#polityka #wybory #gownowpis #przemyslenia
Zaloguj się aby komentować
Znowu do pytania inspiruje mnie @smierdakow dzięki za wrzucenie newsa https://www.hejto.pl/wpis/skrywany-majatek-morawieckich-onet-ujawnil-adresy-i-zdjecia-onet-pisze-ze-wedlug
Załóżmy że jutro dostajecie dziesięć milionów złotych. Kupujecie mieszkanie, auto, jedziecie na wakacje na rok. Wracacie z wakacji, kolejny rok leżycie na d⁎⁎ie. Zostaje Wam pięć milionów, bo sobie nie żałowaliście.
I co dalej? Ja bym pewnie wrócił do pracy (programowanie) i sobie pracował, no bo ocipieć można od siedzenia i nic nie robienia. Może rozwijał pet projecty zamiast pracować dla kogoś, ale z nich też kiedyś przyjdzie jakiś hajs, bo tak już działa kapitalizm xD
pytam, bo nie umiem zrozumieć - jaki jest cel zbierania majątku 120 milionów poza podniecaniem się rosnącymi liczbami na koncie w banku?
I jeszcze rozumiem jak to się dzieje u Bezosa albo Muska - grają w grę, publiczna giełda, większość tego siana i tak jest w akcjach i nigdy nie zostanie skapitalizowana, a jak chcą się dalej bawić w biznes to liczby będą rosły.
Ale kraść i robić na wałkach 120 milionów? Jaki jest sens? Przecież pozostałe powiedzmy 40 lat życia i tak musi przeżyć, i tak musi coś robić. A że majątek jest na żonę, to nawet na k⁎⁎wy i kokainę nie przepuści xD
Quiz vadis, Pinokio?
#pytanie #socjologia #psychologia #wiadomoscipolska #polityka
@wombatDaiquiri Da się tyle przepuścić. Zobacz na co wydawają najzamożniejsi. Sama tylko działka budowlana potrafi kosztować 10 milionów. Budowa domu kolejne 10. A można mieć ich parę, w górach i na morzem...
Każdy ma swoją sprzątaczkę i ogrodnika.
Kilka samochodów po milion każdy, helikopeter, najdroższe hotele i dziwki biorące po 200 tys za tydzień na jachcie i tak czas płynie.
Hmm.. A co jeśli ma się miliardy, to co można z tymi pieniędzmi jeszcze zrobić? W kosmos polecieć? A no okazuje się że tak. I prywatny wyczarterowany samolot, z masażystką, dziwkami, osobistym kucharzem który będzie ci gotował to co dokładnie chcesz ect.
Potem poza fizycznymi przyjemnościami chodzi o poczucie bycia królem, buduje się jachty wielkości miasteczek na których jest się właścicielem, prywatne cokolwiek, wojsko, firma w której jest się szefem i w której zidiociałe kuce mają cię za pół-boga. Oprócz posiadania wszystkiego no i władzy to jeszcze wchodzi chęć chwały, chęć bycia zbawcą świata i tak bogacze czasem zbiegają się na w jakiś Davos i udają że ratują świat.
Oto co Polacy ufundowali Kulczykowi:
Każdy człowiek przyjmie każdą ilość pieniędzy. Im wyższe kwoty tym mniejszą mają realnie wartość dla człowieka, ale zagospodarować je zawsze można. Tym bardziej że ma się wtedy 100% czasu wolnego, co zmienia perspektywę, a oszczędność staje się zbędna.
@wombatDaiquiri Morawiecki ma 55 lat, być może, że już w tym roku skończy z polityką po przegranych wyborach więc pieniądze mu się przydadzą żeby nadal utrzymać wysoki poziom życia. Z resztą on ma też 4 dzieci ludzie też czasem po prostu chcą zostawić coś po sobie dla dzieci, tak aby te miały lepszy start w życiu i ich dzieci miały jeszcze lepszy start wtedy każde pokolenie jest coraz bardziej zamożne. Każdy ma też inne cele w życiu są ludzie którym właśnie gromadzenie pieniędzy sprawia przyjemność a nie ich wydawanie.
Zaloguj się aby komentować
Last Exile to #anime które właściwie zdefiniowało moje poczucie estetyki.
- Diesel Punk
- Wyścigowe samoloty kurierskie i smugi wiatru reagujące na manewry.
- Lavie Head, pinupowa w estetyce, silna i niezależna w totalnie naturalny sposób. Chyba pierwsza kobieca bohaterka w którą wierzyłem i którą podziwiałem.
- Claus Valca z którym się utożsamiałem. Imponował mi swojemu oddaniu zasadom i wykorzystywaniu umiejętności by czynić to co słuszne
- Alex Row, to jest totalnie Sigma Male i moje "power fantasy" tego czym jest najlepsza wersja mnie xD
- Gildia. Potężna. Wolna. Zdeprawowana. Piękna. Pociągająca.
Nie mogę znaleźć kiedy dokładnie leciało na Hyperze, ale od kiedy usłyszałem opening i odwiedziłem ten świat towarzyszy mi pewien zawód, że nie mogę dłużej nacieszyć się tym jak działa.
https://pl.m.wikipedia.org/wiki/Last\_Exile
Opening moim zdaniem świetnie oddaje czego doświadczymy: https://youtu.be/q6MVLxyQAZI?si=0kivk48fRRLw5unw
Kilka animacji 3D zestarzało się słabo, ale dalej #polecanko . Można obejrzeć na Crunchyroll używając VPNa przez USA (działa ExpressVPN ale niestety nie płaci mi jeszcze za reklamę)
#filmy #seriale #animedyskusja #randomanimeshit

bez VPN itp
https://freedisc.pl/Quellehir,d-1453586,last-exile-2003
zaraz jajko zniosę przy tej walce Frezera z Songoku xD
Zaloguj się aby komentować
Jak byłem mały, to mój stary zawsze jak widział takiego "dresiarza z E36" to mówił "o, przyjechał z Pcimia dolnego do miasta"
Albo jak się działo wydarzenie typu dożynki czy potańcówka przy disco polo to też się działy w pcimiu dolnym.
A już jak uważał że rząd przesądza to mówił zawsze, że na pewno wzięli eksperta z Pcimia dolnego.
Mój stary aby nie obrażać mieszkańców miejscowości wiejskich kurwił na populację Pcimia dolnego.
Otóż wójtem Pcimia był Jego Wysokość Daniel Obajtek;
https://en.m.wikipedia.org/wiki/Daniel\_Obajtek
Czy Wasi starzy też nienawidzili Pcimia? Czy tylko mój stary wiedział więcej?
#gownowpis #prawdziwehistorie #pytanie #polityka #wiadomoscipolska #teoriespiskowe
Zaloguj się aby komentować
#lajko , html, parsowanie, pierwszy niedoszły cross w historii hejto xD
w tym odcinku opowiem czym odpowiada serwer na tak zwane "zapytanie HTTP" i jak z tego zrobić "czyste dane" w postaci wpisów i komentarzy.
jeśli irytują Was przekleństwa albo nieformalny styl pisania, a chcielibyście mieć taki efekt jak w moim repozytorium, to moglibyście np. zapłacić @letsscrape żeby zrobili to za Was. chciałem również polecić stronkę i tutoriale tego użytkownika, ale stronka nie istnieje a tutoriale zwracają błąd xD
Moje przeczucie i doświadczenie podpowiada sformułowanie następującego twierdzenia;
prawdopodobieństwo odniesienia sukcesu w robieniu czegokolwiek rośnie wykładniczo względem czasu zajmowania się zagadnieniem.
źródło: instytut badań z d⁎⁎y vel moja intuicja ( ͡° ͜ʖ ͡°) "wykładniczość" jest figurą retoryczną a purystom znowu c⁎⁎j w d⁎⁎ę.
długi grafomański wstęp za nami, krótka treść przed nami.
Hejto w odpowiedzi na zapytanie HTTP odpowiada plikiem zapisanym w tak zwanym "HTML". Definicja jest taka, że "HTML" to język ZNACZNIKI które cośtam cośtam, ale c⁎⁎j Was to obchodzi. Zastąpimy to przykładami i chłopskim rozumem, bo obchodzi nas bardzo mały wycinek zagadnienia.
No więc w HTML istnieją wspomniane ZNACZNIKI. I te znaczniki mogą "zawierać" w sobie inne znaczniki. Jak foldery na Twoim komputerze.
Póki co zajmijmy się tekstem który widzimy - znajduje się on niejako "wewnątrz" znacznika który nie zawiera w sobie innych znaczników. Jeśli będziemy w stanie wskazać z którego znacznika chcemy wyciągnąć tekst - możemy zrobić takie rzeczy jak wyciągnięcie autora wpisu albo treści wpisu, a także jego lajków.
Więc brakuje nam jednej zasadniczej umiejętności - wskazywania znaczników. Na całe szczęście ktoś już wcześniej miał ten problem i stworzył "selektory" - tu macie pełną listę na stronce ZS7 w Wałbrzychu. Pozdrawiam Wałbrzych ( ͡° ͜ʖ ͡°) http://zs7.walbrzych.pl/HTML-CSS-JS/css_selektory.html a wyjaśnienie po angielsku na stronie W3Schools https://www.w3schools.com/cssref/css_selectors.php wraz z demem na żywo - https://www.w3schools.com/cssref/trysel.php
Jeśli chcieliście to wszystko zapamiętać, to w mojej ocenie jesteście pie⁎⁎⁎⁎⁎ięci xD
Jak sobie zobaczycie plik `scrape.js` to ja w nim używam tylko kilku tricków i one Wam wystarczą prawie wszędzie;
- wybranie znacznika (np. $('article') albo $('div'))
- użycie metody `each`, która wywołuje funkcję podaną jako argument kolejno na każdym elemencie który został wybrany (takim elementem będą na przykład kolejne znaczniki `article` w przypadku selektora `$('article')`).
- użycie metody `children` która wybiera wszystkie dzieci wybranego elementu
- sprawdzenie z którym elementem mam do czynienia za pomocą instrukcji `if` i pominięcie tych, które mnie nie interesują oraz pobranie zawartości z tych, które mnie interesują
- użycie metody `text` która zwraca tekst znajdujący się wewnątrz wybranego elementu
- użycie selektora `.` która wybiera wszystkie znaczniki mające daną klasę. Czasem w połączeniu z selektorem znacznika, np. `.find('div.parsed.text-sm')` - znalezienie znaczników `div` które mają co najmniej dwie klasy które wybrałem - `parsed` i `text-sm`
- użycie selektora ` ` która wybiera wszystkie które jest wewnątrz - na przykład `.find('div.w-full img')` wskaże wszystkie znaczniki `img` które są wewnątrz znaczników `div` które mają klasę `w-full`.
W tym momencie uważny czytelnik powinien ciągle mieć conajmniej dwa pytania (a przynajmniej te wydają mi się istotne i na nie odpowiem - jeśli masz inne, zapraszam do komentarzy);
- skąd mam wiedzieć jaki selektor wybrać?
- czym do ciężkiej k⁎⁎wy jest klasa?
Łatwe znalezienie selektora wymaga posiadania przeglądarki (w moim przypadku Google Chrome po angielsku - może jakaś dobra dusza napisze co kliknąć w Polskiej wersji - natomiast w każdej przeglądarce istnieje taka funkcja i działa podobnie). Klikamy prawym przyciskiem myszy na element który nas interesuje (np. treść wpisu - obrazek 1) a następnie wybieramy ostatnią opcję (u mnie "Inspect", po Polsku chyba "Zbadaj"?) i szukamy jakiegoś "charakterystycznego wzorca" w nowym okienku które nam się otworzy (obrazek 2 - klasy `.text-sm` i `parsed` - sprawdziłem i wyszło, że faktycznie trafiają tylkow treść wpisu). Zauważanie tych wzorców będzie Ci szło lepiej z czasem. W pliku scrape.js używam około 20 selektorów. Napiszesz takich parserów dziesięć i ciężko Ci będzie takich wzorców nie zauważać.
Na koniec używamy jakiejś biblioteki żeby wykonać akcję "pobierz zawartość selektora". W moim przypadku jest to `cheerio` bo wyskoczyła jako pierwsza jak wpisałem `javascript html parsing` xD (nie wiem czy nie powinienem o tym napisać na początku ale to jest właściwie istotny detal a nie "mięso" artykułu).
comment.content = $(el).find('div.parsed.text-sm').text();
A wspomniana "klasa" to po prostu tak zwany "artybut" o nazwie "class" - widać to dobrze na obrazku 2. Istotnym jest na zakończenie dodać, że artybuty również możemy pobierać - w ten sposób na przykład zapisuję linki do avatarów pobierając atrybut `src` znacznika `img`;
comment.avatar = $(el).find('img').first().attr('src');
Chciałbym niebawem pobawić się w sortowanie i wyświetlanie wpisów wymyślając różne algorytmy i sprawdzając czy któryś feed szczególnie mi się podoba. Jednak aby to zrobić potrzebuję sposobu na wyświetlenie wpisów w jakiejś formie graficznej, którą będzie mi wygodnie konsumować. Zajmiemy się więc tworzeniem "prawdziwego frontendu" i poznawaniem jakiejś "biblioteki do widoków".
Nadgorliwym proponuję poczytanie na przykład o vue.js ( https://vuejs.org/ ).
Ambitnym, kompetentnym i pie⁎⁎⁎⁎⁎⁎ętym proponuję poczytanie o innej technologii której nie znają albo która najbardziej do nich przemawia - do wyboru;
- react.js ( https://reactjs.org/ ) - z tego będzie korzystało kolejne pokolenie profesorów na uczelniach jeśli kiedyś wyewoluują poza ręczne pisanie HTMLa xD
- angular.js ( https://angular.io/ ) - ja nie korzystałem bo nie mam tego hasła w moim 'buzzword bingo' technologii o których się rozmawia przy piwie
- tailwind.css ( https://tailwindcss.com/ ) - reklamuje się sloganem “Best practices” don’t actually work. Więc brzmi conajmniej na rzecz wartą uwagi.
- bootstrap ( https://getbootstrap.com/ ) - nie wiem czy dalej się używa bootstrap, ale widziałem kiedyś gościa co używał i szybko robił widoczki, więc pewnie spoko.
- jquery ( https://jquery.com/ ) - kiedyś pisałem całkiem skomplikowaną stronkę używając jquery. Okazało się że wnioski do których doszedłem w bólu zostały już wysnute przez mądrzejszych ludzi i opakowane w `vue` i `react`. Mam nadzieję że pracownicy naukowi są już na tym etapie, ale szczerze mówiąc to nadzieja taka jak na zwycięstwo Polskich piłkarzy ( ͡° ͜ʖ ͡°)
#programowanie #javascript #frontend #webdev #tworczoscwlasna


@wombatDaiquiri - dzięki za wpis!
Ja w Pythonie polecam Beautiful Soup .
A do robienia stron SvelteKit .
@wombatDaiquiri
- react.js ( https://reactjs.org/ ) - z tego będzie korzystało kolejne pokolenie profesorów na uczelniach jeśli kiedyś wyewoluują poza ręczne pisanie HTMLa xD
Ale z Ciebie optymista. Na wielu uczelniach do dzisiaj na kolokwiach masz pisać kod na kartce xDDD
Zaloguj się aby komentować
#polityka #orlen #bekazpisu #jebacpis #wybory2023
Z okazji ręcznego sterowania cenami na stacjach benzynowych polecam tankować dużo i często. Jeśli chcieliście pojechać na wycieczkę po Polsce ale było Wam szkoda kasy - to teraz jest na to czas.
Skutki i tak Was skopią po d⁎⁎ie. Korzystajcie póki możecie, bo nic innego Wam (albo raczej nam) nie zostało.
Zaloguj się aby komentować
Tak odnośnie #pegasus to jak się przed tym zabezpieczyć? (Teoretycznie, jako służby i politycy jakiegoś kraju)
- jakiś "hardened android" który będzie w pełni open source z dużym bug bounty i zespołem "kontrolującym wersję krajową" instalowaną na podzespołach również open source i produkowanych w kraju?
- zapłacić Apple i liczyć że nie dadzą backdoora nikomu poza USA i liczyć że USA nie upadnie ani się nie spierdoli, co tworzy z nas puppet state, ale w sumie taki w którym nie żyje się mega tragicznie?
zapraszam do dyskusji #programowanie #polityka #cybersecurity #android #iphone
Zaloguj się aby komentować
z komentatorów politycznych to #audytobywatelski jest moim ulubionym xD https://www.youtube.com/watch?v=H79i_ApZCwo #polityka #youtube #policja najostrzejsze ołówki to u granatnika nie zostały xD
Zaloguj się aby komentować
kurde miałem robić #lajko jako silnik rekomendacji dla #hejto a tu widzę że bardziej by się przydał stabilny mirror #programowanie #networking #siecikomputerowe
Zaloguj się aby komentować
jak zmienię miejsce głosowania, to dostanę i tak listę ze swojego okręgu, czy z tego do którego się przepisałem? zapraszam @dsol17 do rozmowy chciałbym stworzyć nową teorię spiskową (albo strategię wygrywającą wybory XD) a Ty znasz takie smaczki.
#pytanie #polityka #wybory
@wombatDaiquiri : nie wnikam, a jak zamierzasz ze mnie heheszkować to zrób to w temacie w którym nie dostrzegę ironii.
Tu jest zbyt oczywista.
chciałbym stworzyć nową teorię spiskową (albo strategię wygrywającą wybory XD) a Ty znasz takie smaczki.
Uchylę rąbka z 8-ej gęstości : Nie ma czegoś takiego jak "teoria spiskowa" tak naprawdę. Są błędne i poprawne teorie na temat prawdopodobnych spisków,a termin "teoria spiskowa" stworzyła najprawdopodobniej CIA.
https://theconversation.com/theres-a-conspiracy-theory-that-the-cia-invented-the-term-conspiracy-theory-heres-why-132117 - oczywiście artykuł negujący to wszystko i przedstawiający fakt w odpowiednim świetle.Ale TO JEST KOMENTARZ, komentarza nie należy traktować jako rzetelnej recenzji oryginału. Oryginał masz poniżej:
I do niego się odnosząc powinno się dopiero oceniać,czy "foliarze" nie mają czasem racji - bo jeśli CIA zabiła Kennedyego (oczywiście że tak,wspólnie z Kubańską mafią !) to miała interes w wyciszaniu opinii ludzi którzy o tym mówią. Miała interes,a opinii osób które mają w czymś interes nie należy bezkrytycznie przyjmować !
. Ponieważ takich artykułów jak powyżej czy komentarzy typków takich jak @maximilianan czy @GordonLameman nie należy traktować jako prawdę objawioną.
Należy samodzielnie zapoznawać się z faktami i je oceniać samodzielnie.
Zaloguj się aby komentować
async await - nie będę Wam jeszcze wyjaśniał co to jest, ale wyjaśnię jak sobie z tym radzić (chyba)
No więc ten post jest w pewien sposób eksperymentalny - nie mam mianowicie pojęcia, czy to co piszę jest prawdą i nie chce mi się szukać informacji i źródeł na ten temat.
Powód jest prozaiczny - chciałbym sprawdzić tolerancję odbiorców na drobne nieścisłości, oraz czy są wśród nas eksperci, którzy mogliby mnie poprawić. Jeśli będę zawsze chciał potwierdzać u źródeł czy dobrze mi się wydaje, to odcinki nie będą wychodziły codziennie, tylko co miesiąc. Pożyjemy, zobaczymy. Może mam dostatecznie dobrą intuicję, żeby nie wprowadzać Was za często w błąd.
W szczególności - pojęcia "wątków", "procesów", "korutyn", "przerwań", "rdzeni" zostanie w tym poście spłaszczone do abstrakcyjnej koncepcji "procesów wielowątkowych i jednowątkowych". Moje stosowanie zwrotu "wątek" nie ma na myśli pojęcia "thread", a abstrakcyjny "wątek który wykonuje się niezależnie na osi czasu". A purystom c⁎⁎j w d⁎⁎ę.
Zacznijmy od programów "jednowątkowych". Jak mogliście do tej pory zakładać czytając wpis o process.js: https://www.hejto.pl/wpis/tlumacze-jak-lajko-sortuje-posty-zeby-stworzyc-inaczej-posegregowana-liste-to-na, wątek działa tak, że wykonuje kolejno komendy linijka po linijce. A to `console.log` coś wypisze, a to `let twoj_stary = 'na⁎⁎⁎⁎ny'` przypisze jakąś wartość do zmiennej. Dzień jak co dzień.
No i wszystko byłoby spoko, tylko w pewnym momencie się okazało, że właściwie to nie za bardzo się da zrobić tak żeby wątek (czyli lista instrukcji) wykonywał się szybciej.
No to wymyślono zamiast tego, że można zrobić kilka wątków i one będą się wykonywały w tym samym czasie. Pomyśl o tym tak - dziewięć kobiet nie urodzi dziecka w miesiąc, ale jeśli każda zajdzie w ciążę to urodzą dziewiątkę dzeci w dziewięć miesięcy. Średnio 1 dziecko/miesiąc. Pointa tego żartu to właśnie wyjaśnienie czym jest programowanie wielowątkowe i co może nam dać oraz jakie ma ograniczenia.
Zamieniając życie na programowanie, zamiast rodzenia dziecka przez kobiety porozmawiamy o wykonywaniu zapytań HTTP. Zapytanie HTTP to to co robi przeglądarka jak wpiszesz `hejto.pl/najnowsze/strona/1`. Ja będę to symulował pisząc `axios.get(...)` - axios to tak zwana biblioteka (ta służy do robienia zapytań HTTP), ale nie potrzebujesz jeszcze szczegółowej wiedzy w tym zakresie.
Z zapytaniami HTTP jest trochę jak z rodzeniem dziecka - czasem długo trwają. Myślę, że zauważył to każdy, kto odwiedza regularnie #hejto.
Więc programując w JavaScript używa się do tworzenia takiego "wątku" funkcji z napisem `async`. Z tego co rozumiem zwraca ona `Promise`. `Promise` będzie się wykonywał niezależnie od tego, co zrobimy w wątku który go stworzył (np. przez wywołanie funkcji). Jeśli w funkcji głównej wywołacie `sleep`, czyli nie robienie niczego na np. 20 sekund, to taki request (czyli ZAPYTANIE HTTP ale po angielsku i widzę że notorycznie wtrącam to słówko i jestem już zmęczony przepisywaniem) pewnie zdąży się wykonać i kolejne funkcje korzystające z odpowiedzi (response) na zapytanie (request) będą działały poprawnie.
Problem z JavaScriptem jest taki, że jeśli funkcja jest zadeklarowana jako `async` to po prostu będzie się wykonywała w tle (osobnym wątku - tzw. asynchronicznie) i trzeba robić specjalne sztuczki, żeby poczekać na jej wynik. No i `axios.get(...)` właśnie taką funkcją jest xD
Na przykładzie - załóżmy że przypiszemy `Promise` zwrócony przy wykonywaniu zapytania to zmiennej `p` (pewnie coś w stylu `let p = axios.get(...)`). Proces wysyłania zapytania i odbierania odpowiedzi odbywa się "w tle". `Promise` (czyli typ zmiennej `p`) pozwala nam na poczekanie na odpowiedź na dwa sposoby;
- napisanie `await p()`, żeby poczekać aż się wykona przed wykonaniem kolejnych instrukcji
- napisanie `p().then()`, żeby zrobić coś po tym jak się wykona
Oprócz `then` można zrobić też `catch`, żeby sobie np. wypisać błąd jak się wydarzy (w przypadku hejto - czasem jest to błąd z "klasy 500" czyli błędów serwera typu wszelakiego. O tym pogadamy za dość długi czas). W przypadku `await` wydaje mi się, że używa się bloków `try { ... } catch { ... }`, natomiast sugeruję po prostu robić tylko `.then(...).catch(...)` podczas "prototypowania".
No i tutaj kolega @VonTrupka słusznie przewidział w jednym z historycznych wpisów, że wybór nodejs był w pewien sposób pójściem na kompromis xD Otóż w wypadku `nodejs` nie można zrobić `await` w głównym wątku, jak początkowo chciałem. Wydawało mi się, że powinno się dać zrobić `let resp = await axios.get(...)`. No ale się nie da. Zajęło mi ze trzy godziny pogodzenie się z wrzuceniem tego co faktycznie chcę żeby się wykonało w ramach tego "skryptu" (czyli małego programu) do funkcji `main` i użycie `main().then(...).catch(...)` w głównym wątku.
Żeby zrozumieć czemu ten cały cyrk ma sens trzeba wiedzieć jak działa nodejs na dość specjalistycznym poziomie. Ja mam swoją teorię spiskową że jest jednowątkowe i tylko "udaje" wielowątkowość. Ale nie wiem czy to prawda, a Ty ani nie musisz tego wiedzieć ani tym bardziej rozumieć o czym mowa.
Moje eksperymenty doprowadziły mnie do przeczucia, że czekanie na to aż funkcja kryjąca się pod `p` typu `Promise` się wykona, to zastosowanie formatu - `p().then(...).catch(...)` - w ten sposób możemy w `then` po prostu przypisać zwracaną wartość do jakiejś zmiennej i udawać że cały program jest jednowątkowy.
Jeśli udało Wam się zrozumieć co się dzieje z mojego opisu - gratuluję. Trochę Wam, trochę sobie, bo wydaje mi się że koncept "rzeczy dziejących się jednocześnie" i czekania na nie żeby nie działy się jednocześnie tylko po kolei nie jest super intuicyjne.
W nagrodę kolejny wpis będzie łatwy - o tym co zwraca hejto i jak wyciągnąłem z tego treść Waszych wpisów.
#lajko <--- mój tag (przesunąłem na pierwsze miejsce i posortowałem resztę w takiej kolejności, w jakiej uważam że trafienie do ich odbiorców jest dla mnie istotne, sorki memorki jeśli kogoś uraziłem)
#programowanie #tworczoscwlasna #gruparatowaniapoziomu #javascript
@wombatDaiquiri panie, praktyka tak, ale w parze z rownolegla nauka. Inaczej bedziesz uskutecznial cargo cult programming czyli nigdy nie zrozumiesz jak dziala kod i czego sie spodziewac.
w wypadku `nodejs` nie można zrobić `await` w głównym wątku, jak początkowo chciałem
oczywiscie ze mozna. Od node v15+ jest to mozliwe LINK
Kolejna rzecz to jednowatkowosc node.js. Wszyscy tak pisza a prawda jest taka ze node.js od samego poczatku jest wielowatkowy out of the box. wszelkie operacje i/o (operacje sieciowe, czytanie dysku, itp) przetwarzane sa w osobnym watku (czy tam procesie).
Przykladowo:
console log('xxxxx');
const data = axios.get(....); <- node.js wlasnie tworzy nowy watek i kiedy zakonczy pobieranie danych zwroci wartosc. Wykonywanie kodu leci dalej i nie czeka na axios
const xx = 'ala ma kota' <- kod wykonywany w glownym watku rownoczesniej z pracujacym axiosem w innym watku
logger('wiadomosc'');
console.log( await data); <--- glowny watek wroci tutaj do wykonywania kodu w momencie kiedy watek obslugujacy polaczenie sieciowe zwroci dane
Do ksiazek a nie "zobaczymy co sie stanie"!
@666 node działa na jednym wątku.
```const xx = 'ala ma kota' <- kod wykonywany w glownym watku rownoczesniej z pracujacym axiosem w innym watku```
nie wykonuje się równocześnie, a później (tylko że, wbrew temu co myśli dużo ludzi, obecne wersje node są bardzo szybkie) , a raczej wtedy, kiedy nadejdzie jego kolej wyznaczona przez event loop. Synchroniczny kod ma pierwszenstwo, po wykonaniu całego zakolejkowanego synchronicznego kodu, watek jest zwalniany i asynchroniczne funkcje mogą się wykonać.
Jeśli chcesz "prawdziwą" wielowątkowość, to masz od tego Worker Threads.
@666
Inaczej bedziesz uskutecznial cargo cult programming
No i zajebiście ( ͡o ͜ʖ ͡o) możesz mnie przepytać ze specyfikacji Golanga na wyrywki xD to jest projekt po godzinach, bez napinki, żeby pokazać ludziom że programowanie jest w sumie proste jak chcesz tylko "coś uzyskać". Nie zamierzam się kreować na eksperta jsa, to mój pierwszy projekt od czasów jQuery xD
Do tematu: "change file extension to mjs" sorry, ale podziękuję za takie odczarowanie. Z artykułu brzmi jak syntactic sugar.
@wombatDaiquiri należałoby jeszcze dorzucić do tego, że część się wykonuje na wątkach react, część jest oddelegowana do przeglądarki.
@Flaaj, @666, poprawcie mnie, proszę.
```
console.log(0);
const defferred = async function timeouted2() { await new Promise(resolve => setTimeout(() => { console.log(1); resolve(); }, 5)); };
setTimeout(() => {console.log(2);}, 5);
new Promise(resolve => setTimeout(() => { console.log(3); resolve(); }, 5)).then(() => console.log(4));
defferred().then(() => {setTimeout(() => {console.log(6); }, 5);});
setTimeout(function timeouted() { console.log(7) }, 5);
console.log(8);
```
Zaloguj się aby komentować
przyznaję, że post o #lajko powinien być wczoraj, a będzie dzisiaj (w sensie, w czwartek, ale później)
no ale chociaż wrzucę zajawkę czym będziemy się zajmować w nieodległej przyszłości - robieniem "hejto które mamy w domu" czyli używania potężnego frameworka do prostego wyświetlania treści xD jutro o async/await z perspektywy człowieka który nie wie do końca jak działa async/await. ale jakoś tam dałem sobie radę #javascript

Zaloguj się aby komentować
Jak jest taka ch⁎⁎⁎wa pogoda jesienno/padająco/depresyjna to mam ochotę leżeć i patrzeć w sufit aż pogoda się zmieni. Niestety to wywołuje u mnie poczucie winy, że marnuję czas. Nie polecam. #gownowpis
@wstreczyciel
Nie pocę się,
technologia to rozwiązała - antyperspirant, bloker, klimatyzacja
słońce nie świeci mi prosto w ryj
technologia to też rozwiązała - feng shui, rolety
piwo lepiej smakuje gdy pije je o 19 i jest już ciemno
sounds like a you problem
jak wracam nad ranem lekko pijany to nikt mnie widzi
weird flex but ok
krótko - nie zgadzam się
@wombatDaiquiri "to wywołuje u mnie poczucie winy, że marnuję czas." wychodzi na to że zmarnowałem 12 lat życia bo po pracy komputer + konsola. Ale wiesz co mimo wszystko jestem szczęśliwy że tak właśnie marnuję czas bo mam przyjemność gdy zamykam się w pokoju czytając książki, grając w gry i oglądając filmy.
Zaloguj się aby komentować
kurde chyba jestem trochę spóźniony
#leagueoflegends #gry #pcmasterrace #angielski #chcialbymumicangielski

Zaloguj się aby komentować
zanim powstało lajko - WebStorm ratuje mi życie, a copilot mnie wkurwia, czyli jak wytwarzać oprogramowanie w skończonym czasie
jeśli nie wiesz o co chodzi, albo nie wiesz co to terminal, to tutaj post wprowadzający: https://www.hejto.pl/wpis/programowanie-javascript-tworczoscwlasna-gruparatowaniapoziomu-lajko-lt-moj-tag-?commentId=13977332-7772-4f89-a067-d76784aa5c18
jeśli wyobrażacie sobie, że odpaliłem notatnik i piszę sobie różne magiczne komendy z pamięci, no to grubo się mylicie. Oczywiście, pamiętam że istnieje kilka podstawowych "klocków" - moduły, funkcje, zmienne, `if`, `for`, `let` i `const` do zmiennych i kilka innych jak nawiasy klamrowe.
Ale co do zasady, ani ja ani żaden inny programista którego znam nie pamięta "wszystkiego". Po ponad pięciu latach pewnie pamiętam dużo z biblioteki standardowej Go w którym przez ten czas pisałem, ale w innych językach - nie.
Z drugiej strony - przerywanie pisania żeby googlować, bo nie pamiętam jaka jest sygnatura każdej metody też jest bez sensu. Zajmuje to bardzo dużo czasu, i wybija mnie z twórczego rytmu.
Ponieważ najwyraźniej nie tylko ja mam słabą pamięć i nie tylko mnie to irytowało, powstały programy które nazywają się IDE. To taki notatnik, tylko oprócz "zapisz" i "wczytaj" mają dużo więcej opcji;
- informacja czy funkcja istnieje czy nie istnieje
- podpowiedzi jakie argumenty ma funkcja którą wywołuję
- podpowiedzi w którym miejscu zapomniałem nawiasu zamykającego albo otwierającego
- przeglądanie plików
- podłączanie debugera (o tym kiedy indziej)
- odpalanie programu
- zmiana nazwy obiektu w wielu plikach
- UI (interfejs graficzny zamiast terminala) do przeglądania bazy danych
i pizdylion innych. Każde IDE wspiera też tak zwane "pluginy" - czyli rozszerzenia, pisane przez indywidualnych twórców albo firmy. A jak firma chce zarabiać, to musi mieć klientów. A jak klient używa IDE, to łatwiej mu sprzedać produkt jak można go wpiąć w środowisko w którym już pracuje.
Przykładem takiego pluginu jest copilot. Ale za nim o copilocie, to linki do dwóch IDE;
- WebStorm - https://www.jetbrains.com/webstorm/ IDE z którego ja korzystam. Płatne. Ciężko mi powiedzieć w sumie, dlaczego za nie płacę. Prawdopodobnie dlatego, że korzystałem z niego w pierwszej firmie i nigdy nie chciało mi się uczyć gdzie co jest w darmowych.
- Visual Studio Code - https://code.visualstudio.com/ IDE które jest darmowe i z tego co mi wiadomo posiada takie same funkcje jak WebStorm (tzn. IDE od JetBrains) - polecam jeśli dopiero się uczysz. Jeśli zaczniesz z vscode, to potem oszczędzisz pieniądze na subskrypcjach, a jeśli nie widać różnicy - to po co przepłacać?
I teraz temat który w tym roku eksplodował - GitHub Copilot. Copilot to narzędzie, które podpowiada "co prawdopodobnie chcesz napisać dalej". No i w zależności od tego jak go używacie - może być błogosławieństwem lub przekleństwem.
Na przykładzie - jeśli napisałem już funkcję `savePosts`, ale z jakiegoś powodu chciałbym zapisywać posty pojedynczo, to wystarczy że zacznę pisać `function saveSinglePost` - copilot zasgeruje właściwie dokładnie to co sam bym zrobił (obrazek pierwszy).
Dzięki temu mogę znacząco skrócić swój czas pracy nad kodem, bo zamiast zastanawiać się nad pierdołami, korzystam z "domyślania się copilota". W tym momencie wystarczy, że "zatwierdzę sugestię" klikając "tab" i nie muszę się męczyć w myślenie gdzie subtelnie zmienić kod żeby uzyskać efekt.
Istnieje jednak druga, dużo bardziej mroczna strona copilota. I poza oczywistym (czyli sugerowaniem totalnych głupot w kodzie) chciałbym zwrócić uwagę na dwa mniej oczywiste problemy;
Problem pierwszy - w przypadku pisania tekstu (np. takiego jak ten) copilot generuje bardzo rozpraszające podpowiedzi, które nie mają sensu. Przykład - w następnym zdaniu napiszę tylko pierwsze słowo, a reszta zdania będzie dokończona przez copilota. Dowód na drugim obrazku. W tym przypadku copilot sugeruje mi, że "nie ma sensu" pisać o tym, że copilot sugeruje mi co mam napisać. No i ma rację, ale to nie jest to o czym chciałem napisać.
Problem drugi - komentarze funkcji. Copilot pisze totalne oczywistości, ponieważ nie jest w stanie zrozumieć czym są "informacje które mogą ciekawić potencjalnego odbiorcę". Ponieważ nie ma świadomości - nie wie, że istnieje jakikolwiek "odbiorca".
Jeśli chcecie natomiast zaimponować swoim kolegom programistom, to możecie dorzucić informację że copilot nie sugeruje usuwania tekstu, oraz nie sugeruje zmiany tekstu - a jak wszyscy wiemy ( ͡° ͜ʖ ͡°) w programowaniu nie chodzi tylko o to kto napisze więcej tekstu, ale też o zrozumienie kodu który zastaniemy i wprowadzanie zmian w kodzie w przyszłości, w sposób który nie ro⁎⁎⁎⁎⁎doli całego systemu.
Lennyface został zaproponowany prez copilot. Także może bywa wkurwiający, ale przynajmniej memiczny.
#programowanie #ai #tworczoscwlasna #gruparatowaniapoziomu #lajko <--- mój tag


Zaloguj się aby komentować
Ziobro na bezczela oskarża Grodzkiego (marszałka Senatu) o łapówkarstwo w #tvpis xD czekam na karę KRRiT
#jebacpis #polityka #bekazpisu #wiadomoscipolska
sami nakrecacie hejt!! Brak słów do tych wszystkich trolli obu stron!!! Dla mnie Grodzki to nie źle ziolko zniego jest każdy lekarz bierze rękę świadkowie co dawali mu rękę nawet znam osobiście człowieka co mu dał pieniądze!! Dla mnie Tusk to największy oszust i złodziej nie działa dla Polski tylko dla sąsiadów
@General_Jaruzelski ja też i co z tego? Dopóki nie jest skazany, oskarżanie go w mediach jest pomówieniem. A jak robi to prokurator generalny, to już w ogóle jest skandal.
Po pierwsze naucz się pisać, a po drugie przestań się martwić jakimś pojedynczym lekarzyną, kiedy system sądownictwa jest tak przeorany, że zaraz lekarze będą dawali prokuratorom łapówki żeby ich za przerywanie ciąży zagrażającej życiu nie zamykali xD
Zaloguj się aby komentować
dzisiaj bardzo dziękuję koledze @smierdakow za inspirację i zamiast poprawiać jego post, dziś mogę go co najwyżej rozwinąć o mój factcheck;
minimalna w Indiach (najwyższa - w Delhi) w 2023 - https://www.india-briefing.com/news/guide-minimum-wage-india-2023-19406.html/ dla pracowników "bez żadnych umiejętności" - 17,234.00 INR miesięcznie
minimalna w Indiach w 2014 to albo 272.19 INR albo 146 INR dziennie, z tym że wyższa kwota obowiązuje dopiero od końca 2014, czyli nie w pełni "za czasów Tuska" https://www.betterplace.co.in/blog/minimum-wages/#:~:text=INR%20146.00%20per%20day%20was,272.19%20per%20day%20in%202014.
minimalna w Polsce 2023/2014 - https://pl.wikipedia.org/wiki/P%C5%82aca_minimalna (netto, odpowiednio - 1242.20 i 2709.49
średni kurs wymiany z google - [PLN / INR] to usd 2014
₹1 INR = $0.0162
Average exchange rate in 2014: 3.1568 PLN
średni kurs wymiany z google - [PLN / INR] to usd 2023
Average exchange rate in 2023: 82.2945 INR
1 PLN = 0.24120 USD
google raz podawało w jedną raz w drugą, ale nie chce mi się szukać żeby były podane tak samo bo to tylko wpis w internecie xD
PODATKI W INDIACH DLA MINIMALNEJ (do 250k INR) TO 0% WIĘC PORÓWNUJĘ Z POLSKIM NETTO (!!!) źródło: https://topsourceworldwide.com/blog/different-types-of-payroll-taxes-in-india-exploring-the-importance/#:~:text=Income%20between%20INR%200.0%2DINR%202.5%20Lakhs%20annually%20%3D%20No%20tax,INR%2010.00%20Lakhs%20annually%20%3D%2015%25
minimalna w USD Polska 2014: 1 242,20 / 3.1568 = 393.50 USD
minimalna w USD Indie 2014: [146 | 272.19] / 8 (żeby dostać stawkę "godzinową" - pewnie zawyżoną, bo pewnie dłużej pracują, ale już c⁎⁎j z tym) * 168 (godzin w etacie) * 0.0162 = 49.67 USD [dla 146] lub 92.60 dla 272.19
minimalna w USD Polska 2023: 2 709,49 * 0.24120 = 653.53 USD
minimalna w USD Indie 2023: 17,234.00 / 82.2945 = 209 USD
Czyli w 2014 minimalny Polak zarabiał w zależności od tego jak liczyć albo 393.50 ÷ 49,67 = 7.92 razy więcej od Hindusa albo 393.50 ÷ 92.60 = 4.25 razy więcej
Natomiast w 2023, Polak od Hindusa zarabia 653.53 / 209 = 3.12 raza więcej xD
co oznacza, że człowiek zarabiający minimalną jest względem Hindusa po rządach Pisu o połowę mniej bogatszy xD a nawet patrząc łaskawym okiem - jest conajmniej odrobinę biedniejszy w porównaniu niż był za Tuska.
Dobra robota Mati, prosperity jak c⁎⁎j. dziękuję raz jeszcze @smierdakow za zwrócenie mi swoim postem uwagi na ten blamaż głowy państwa wielkiego ekonomisty i polityka xD #wybory #ekonomia #polityka #jebacpis #bekazpisu
jeśli gdzieś się pomyliłem to nie bójdzie się wytykać błędów i wyzywać mnie w komentarzach, pozdrawiam.
Super porównanie. Tylko wiesz nas nie trzeba przekonywać że PiSowcy są jacy są albo że PO to też nie jest szał. A wyborca PiS widzi kwoty z postu Matiego i jak myślisz co mówi? Musieliby wszyscy pójść na wybory to się może to jakoś odmieni albo musiał by nie pójść nikt czy tam 5% to by się kapnęli że coś jest nie tak
Zaloguj się aby komentować