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
Sítě / Re:Kontaktuje WireGuard peera vždy?
« kdy: 30. 08. 2023, 17:51:43 »
WireGuard co vím, tak pouze balí pakety a posílá je na cílovou IP adresu a port. Pokud tam nikdo neposlouchá, tak se paket ztratí. Opakování paketů řeší vyšší síťová vrstva. WireGuard je normálně potichu, pokud neprobíhá síťová komunikace, nic se nikam neposílá.

Pokud je cíl za NATem, musí si neustále obnovovat kanál a optimálně pomocí

Kód: [Vybrat]
PersistentKeepalive = 15

... v konfiguráku (toho co je za NATem). Tím zajistíš, že klient bude neustále pingat na server pakety, takže i když se z nějakých důvodu NAT rozpadne a zavře ten kanál, po obnovení spojení se obnoví pingání a client se zase stane dostupný. Mělo by to zvládnout i případnou změnu IP adresy/portu toho clienta


2
/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.

3
/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í.

4
/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šíš?

5
/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é

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

7
/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?

8
Ř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.

9
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.

10
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

11
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?

12
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.

13
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

14
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?

15
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();
}

Stran: [1] 2 3 ... 38