Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Ondřej Novák

Stran: [1] 2 3 ... 38
1
/dev/null / Devel.cz je mrtvý
« kdy: 11. 05. 2022, 06:08:54 »
Vzhledem k nulové aktivitě uživatelů a zvýšené aktivitě spamerů na těchto stránkách usuzuju, že Devel.cz umřel a tak by stálo za úvahu jej zrušit úplně. Já osobně jsem si vypnul veškeré notifikace, protože mi do schránky chodí jen nabídka neschválených léků namísto otázek o programování.

Jen říkám.

2
/dev/null / Re:Blokace ruských IP
« kdy: 25. 02. 2022, 12:10:28 »
Protože IMO GPU napsal podivnost a protože nemám rád virtue signalling.

Pokud vyloženě nechceš podporovat ruský teror, tak vlastně nic proti němu udělat nemůžeš. Tedy jestli se necháš naverbovat do armády a bojovat přímo, což je asi pointless v tuto chvíli. Ale můžeš manifestovat svůj odmítavý postoj. Co jsem pochopil, dělá to teď hodně lidí z vývoje SW. Aplikace blokují pro ruské regiony, odstraňují se ruské překlady, obecně panuje trend totálně izolovat ruský teror. A i když na mé stránky nikdo z Ruska asi chodit nebude, je to určitá manifestace.

Pokud válka skončí, blokace zmizí.

3
/dev/null / Re:Blokace ruských IP
« kdy: 25. 02. 2022, 11:57:02 »
Rus jako rus, ať si doma udělají pořádek.

Jo. My jsme si udělali "pořádek" až v době, kdy v SSSR po třech změnách v čele nastoupil Gorbačov a všechny státy v okolí už si "pořádek" dělaly. A teď budeme Rusům zavírat stránky, na které stejně pravděpodobně nechodí a kdyby tam chtěli přijít, tak anonymizéry je tam zase přivedou.

A budeme doufat, že půjdou s příborovým nožíkem a matrjoškou v ruce svrhnout vládu, protože ti dva Rusové si nemohli přečíst supercool stránku Ondry Nováka.

Proč to vlastně řešíš?

4
/dev/null / Re:Blokace ruských IP
« kdy: 25. 02. 2022, 11:04:11 »
A k čemu to má být dobré?


Demonstrace postoje, zavřít Ruskému terorismu část světa. Kdyby to udělali všichni, pak to teroristé nebudou mít tak jednoduché

5
/dev/null / Re:Blokace ruských IP
« kdy: 25. 02. 2022, 09:31:56 »
Díky, prozkoumám nabízené možnosti

6
/dev/null / Blokace ruských IP
« kdy: 25. 02. 2022, 08:16:28 »
Chtěl bych na svých stránkách zablokovat ruské IP adresy. Poradí někdo kde sehnat rozsahy a jak to udělat?

7
Řekl bych, že zápis jede přes cache, takže mezi procesem a systémem není žádná I/O a zápis vyřídí System z cache na disk. Pod procesem System se skrývá jakákoliv aktivita jádra, která je viditelná v userspace.

8
Vývoj / Re:signalr ručně - jak ho správně spustit?
« kdy: 20. 01. 2020, 17:04:59 »
Problém vyřešen.

Problém se ukázal v tom, že nezpracovávám cookies. A server si při /negotiate ke klientovi nastavoval cookie "AWSALB", která slouží load balanceru najít správnou instanci při /connect a /start. Takže to náhodně padalo, jak to došlo na různé instance.

Člověk si říká, že tohle by měl přece signalr řešit.

9
Vývoj / Re:signalr ručně - jak ho správně spustit?
« kdy: 20. 01. 2020, 13:21:03 »
Leda že bych se podíval, jak to dělají. Já potřebuju 5% funkcionality nejen samotného protokolu, ale podíl na celé aplikaci je zhruba asi tak malý. A nemám zájem slepovat můj projekt s něčím, co je 2x větší a má 95% kódu který řeší to co již mám vyřešeno jinak

10
Vývoj / signalr ručně - jak ho správně spustit?
« kdy: 17. 01. 2020, 12:15:30 »
Zdravím. Má tu někdo zkušenost s provozováním signalr klienta na nejnižší úrovni? Bohužel jsem musel implementovat klienta vlastními silami, protože to píšu v C++ pod linuxem a nějak jsem nesehnal vhodnou knihovnu pro můj případ. Potřebuju jen číst data ze streamu po websocketu, přesněji kótace na burze

Mám k dispozici HTTPs klienta a websocket klienta. Nemohu postovat kód, je hodně custom

Scénář
1. pošlu /negotiate
2. dostanu ConnectionToken {TOKEN}
3. otevřu websocket /connect?transport=webSockets&ConnectionToken={TOKEN}&clientProtocol=1.5
4. počkám na obdržení první frame
5. pošlu /start?transport=webSockets&ConnectionToken={TOKEN}&clientProtocol=1.5

Problém? Náhodně (v blocích) cca v 50% se mi nepodaří navázat spojení a napíše to, že mám neplatný ConnectionToken. Tato situace se třeba opakuje pět minut jak to můj software neustále po půl minutě zkouší. Pak to najednou naběhne a vše jede OK. Vzhledem k tomu, že klient pak drží spojení a je happy, nové navazování úž nepokouší, dokud to zase není třeba (spadne spojení nebo musím restartovat).

Hledám chybu ve svém kódu. Jak správně navazovat spojení a kdy přesně vyslat /start? Byl jsem dokonce tak zoufalý, že při selhání /start jej opakuju třeba 3x za sebou po prodlevě. Někdy se chytne až na potřetí což je po cca 10 sekundách. Možná že druhá strana je pomalá s navazováním, že tedy problém není na mé straně. Možná že mám něco hledat v odpovědi websocketu, že nyní je spojení navázáno a mohu ho spustit?

11
Server / Re:Maximální počet klientů vlastního TCP serveru
« kdy: 20. 12. 2019, 22:53:05 »
Jen dodám, že select() nedoporučuju používat v žádném případě. Ani na čekaní na jeden descriptor. Stačí, když descriptor má číslo větší než FD_SIZE a program jde do háje. Za určitých okolností se to dá zneužít, takže to zároveň představuje bezpečnostní riziko, například pokud je FD_SET realizován v zásobníku, může útočník způsobit buffer overrun a hacknout se do kódu.

 Když už, tak poll, pak samozřejmě epoll. Na příkaz select() zapomeňte a vyhejbejte se mu jak čert kříži.

12
Sítě / Re:Divně nefunkční IPv6
« kdy: 28. 11. 2019, 18:37:42 »
Vyřešeno.

Problém byl v systemd-resolved. Nenapadlo mne nic lepšího, než ho vypnout, a zadat do /etc/NetworkManager/NetworkManager.conf
 do sekce [main] řádek dns=default

https://askubuntu.com/questions/907246/how-to-disable-systemd-resolved-in-ubuntu

13
Sítě / Divně nefunkční IPv6
« kdy: 28. 11. 2019, 15:21:58 »
Zdravím. Snažím se v Ubuntu 18 LTS nakonfigurovat IPv6 přes Cloudflare Warp. V configu jsem si zapnul pouze IPv6  s tím, že IPv4 dál běhám napřímo (protože když v tom skriptu nechám IPv4, tak mi nejde internet vůbec)

Interface sice správně naběhne s IPv6 adresou, ale na chrome/firefox/curl/wget se stejně nepřipojí. Přitom:

Kód: [Vybrat]
$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether 20:1a:06:9b:c5:03 brd ff:ff:ff:ff:ff:ff
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 0c:d2:92:b3:bf:0f brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.155/24 brd 192.168.100.255 scope global dynamic noprefixroute wlp3s0
       valid_lft 451sec preferred_lft 451sec
    inet6 fe80::d138:b521:1a04:f2b5/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
11: wgcf: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1400 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet6 2001:db8:ab1e:8cb0:d4fc:be3:9b16:bc68/128 scope global
       valid_lft forever preferred_lft forever
    inet6 fd01:5ca1:ab1e:8cb0:d4fc:be3:9b16:bc68/128 scope global
       valid_lft forever preferred_lft forever

$ host www.nebezi.cz
www.nebezi.cz has IPv6 address 2001:1528:132:70::ebe2

$ ping6 www.nebezi.cz
PING www.nebezi.cz(www.nebezi.cz (2001:1528:132:70::ebe2)) 56 data bytes
64 bytes from www.nebezi.cz (2001:1528:132:70::ebe2): icmp_seq=1 ttl=60 time=26.0 ms
^C
--- www.nebezi.cz ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 26.050/26.050/26.050/0.000 ms

$ traceroute6 www.nebezi.cz
traceroute to www.nebezi.cz (2001:1528:132:70::ebe2) from 2001:db8:ab1e:8cb0:d4fc:be3:9b16:bc68, 30 hops max, 24 byte packets
 1  fd01:5ca1:ab1e::1 (fd01:5ca1:ab1e::1)  20,167 ms  9,02 ms  12,569 ms
 2  2400:cb00:31:1000::1 (2400:cb00:31:1000::1)  50,738 ms  22,303 ms  17,724 ms
 3  nix4-ipv6.to.cas.ip-anywhere.net (2001:7f8:14::6:2)  14,405 ms  31,112 ms  20,865 ms
 4  2001:1528:1:10:3ee5:a6ff:fe27:3f00 (2001:1528:1:10:3ee5:a6ff:fe27:3f00)  11,096 ms  42,993 ms  10,048 ms
 5  www.nebezi.cz (2001:1528:132:70::ebe2)  11,936 ms  10,654 ms  25,253 ms

$ wget http://www.nebezi.cz
--2019-11-28 15:19:07--  http://www.nebezi.cz/
Překládám www.nebezi.cz (www.nebezi.cz)… nezdařilo se: Neznámé jméno nebo služba.
wget: adresu počítače „www.nebezi.cz“ nelze přeložit

$ curl http://www.nebezi.cz
curl: (6) Could not resolve host: www.nebezi.cz

Samozřejmě, když si vynutím použití IPv6 přes -6, tak se to připojí. Ale nějak bych radši, aby to fungovalo automaticky.

Kde je problém?

14
Vývoj / Re:JS async / await
« kdy: 10. 11. 2019, 22:50:10 »
Jak to souvisí s async/await? Není to snad záležitost té volané asynchroní funkce, jakou vyhodí výjimku? Může vyhodit cokoliv.

Pokud jde o dotaz "Chci někam vypsat to co mi nějaká API funkce vrátila jako odpověd, kterou, když ji zavolám přímo, vidím na obrazovce v prohlížeči", tak pokud tato odpověď je HTML stránka, pak nezbývá, než nažhavit HTML parser, načíst stránku jako dokument, a vytáhnout z document.body té stránky její innerText.

Mé řešení z jedné starší stránky, která ještě nepoužívá async ani await ani šipkové funkce vypadá takto. V proměnné "e" je chybové responze funkce fetch(). Zprávu hleda v elementu <p>, Pokud tam není, vezme celé <body>

Kód: [Vybrat]
var ct = e.headers.get("Content-Type");
if (ct == "text/html" || ct == "application/xhtml+xml") {
txt = e.text().then(function(text) {
var parser = new DOMParser();
var htmlDocument = parser.parseFromString(text, ct);
var el = htmlDocument.body.querySelector("p");
if (!el) el = htmlDocument.body;
return el.innerText;
});
} else {
txt = e.text();
}

15
Vývoj / Re:Jak vytvořit vlastní debugger?
« kdy: 02. 11. 2019, 16:28:45 »
Teda nevím, ale za dob, kdy jsem programoval v PHP jsem si vystačil s příkazem print_r a die. Bez debuggeru.

Zápis do log souboru je požehnaný debugovací nástroj.

Stran: [1] 2 3 ... 38