reklama

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.


Témata - Ondřej Novák

Stran: [1] 2 3 4
1
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?

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

3
Desktop / Tip na primitivní windows manager
« kdy: 05. 07. 2019, 22:31:53 »
Zdravím.

Sháním nějaký dobrý tip na velice jednoduchého window managera který bych nasazoval na vncserver. Kdysi jsem používal metacity, ale jeho integrace do unity je už tak velká, že mi občas nefunguje, nebo se chová divně, vypisuje tuny chybových hlášek o nepřístupnosti DBUS a tak dále, prostě to vypadá, na samostatné použití není. Navíc přepínání oken ALT+TAB moc na VNC nefunguje, protože to viewer neodchytí a přepínám okna na lokálním stroji.

Zkoušel jsem evilwm, ale na některých strojích dostávám hlášku o tom, že mu chybí nějaký font a nespustí se.

Nejspolehlivěji funguje twm, akorát ho považuju za vykopávku z dob, kdy jsem unix poprvé viděl někdy kolem roku 2000 na solarisech. Na twm oceňuji prostřední tlačítko myši, které přesune okno do pozadí (takže žádné ALT+TAB)

Takže něco takového, co ideálně stáhnu přes apt, a pak spustím ve stylu DISPLAY=:1 XXXwm &  a získám prostě nějakou kontrolu nad těmi okny.

Dík

4
Vývoj / C++ konverze na const reference
« kdy: 12. 10. 2018, 09:50:17 »
Zdravím.

Stává se mi, že když napíšu něco na blog o programování, odněkud se vyrojí spoustu znalců normy, kteří ji znají zpamětí i po zpátku a hned vědí, co jsem udělal špatně, co řeší lépe std knihovna, se skrytým odkazem "nauč se pořádně normu a standardní knihovnu, než sem něco napíšeš". Upřímě tyto znalce obdivuju, protože mají čas ty stohy dokumentace studovat. A proto je teď moc prosím o pomoc.

Potřebuji toto:

Mám šablonu klasicku
Kód: [Vybrat]
template<typename T> void foo(...). Předpokládá se, že uživatel šablony T explicitně určí, například

Kód: [Vybrat]
foo<int>(...) nebo
Kód: [Vybrat]
foo<int &&>(...)
A nyní hledám v std něco, co mi z T udělá typ vhodný pro předání argumentu. Dle nějakých směrnic se doporučuje aby

  • Pouze jednoduché typy předávat hodnotou
  • Složite typy lépe předávat const referenci
  • Samotné refernece předávat tak jak jsou
  • Pointery jakbysmet

Takže bych to viděl že.
Kód: [Vybrat]

T -> const T &
const T & -> const T &
T & -> T &
T && -> T &&
T * -> T *
scalar<T> -> T

Já si tohle dokážu samozřejmě napsat pomocí částečných specializací. Ale nechce se mi věřit, že ve standardní knihovně nic takového není. Ať hledám jak hledám, nic nemůžu najít. Pomůžete mi? Zase nechci vypadat jako někdo, kdo nemá nastudováno.

PS: Forward to není. Forward je funkce, já potřebuju typ.

Dík.

5
Vývoj / Synchronizace - obrácený semafor
« kdy: 29. 10. 2017, 18:49:18 »
Ve svém kódu jsem začal používat objekt, který funguje obráceně než semafor. Je to counter, který mohu zvyšovat a snižovat a případně mohu nařídit jinému vláknu, aby bylo zastaveno, dokud se na counteru neobjeví nula.

Typicky to používám tak, že chci aby thread počkal, dokud se nedokončí všechny paralelní operace, přičemž stačí počítat, kolik jich ještě běží. Pokud všechny skončí, klesne čítač na nulu a thread může pokračovat.

A teď hledám na google, jak se toto synchronizační primitivum jmenuje. Protože klasický semafor to není, bariera taky ne. Google mi nepomůže, protože se ho neumím zeptat. Pomůže mi někdo?

6
Vývoj / Problém s C++ : ios::ate
« kdy: 28. 09. 2017, 13:31:26 »
Narazil jsem na následující problém.  Mám tento kód

Kód: [Vybrat]
std::fstream out(fname.c_str(),std::ios::out|std::ios::ate);

když ale pustím strace, vidím následující:

Kód: [Vybrat]
open("./backup-1506250110-btcusd-orders.json", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 4
lseek(4, 0, SEEK_END)                   = 0
lseek(4, 0, SEEK_CUR)                   = 0

Tušíte někdo, proč tam je to O_TRUNC následované zbytečným seekem na konec?  Mám to hlásit jako bug, nebo je to WAI?

Kód: [Vybrat]
gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12)

PS: nemůže být problém v tom, že bych koukal na jiný řádek v programu, jelikož je to jediný místo, kdy se tento konkrétní soubor otevírá. Taky jsem před testem udělal full rebuild

7
Vývoj / K čemu jsou message brokers?
« kdy: 11. 07. 2017, 20:21:34 »
Vysvětlete mi někdo k čemu se hodí ty všude oblíbené message brokers? Třeba rabbit nebo zeromq. Přijde mi že věci spíš komplikují, než zjednodušují. Třeba teď mi byl předhozen zeromq a potřebuji od něj asynchronní req/rep a to po jednom spojení neumi, přičemž sám si to nad TCP stackem naprogramuju za odpoledne, bohužel klient na použitém mq trvá. Na jaký usecase bych měl tenhle typ komponenty použít, když to evidentně někteří nepoužívají správně. (Někdy mi přijde že výběr technologie manažeři provádí podle toho kolik jejich kamarádů danou technologií mají v portfoliu nebo jak moc je cool, free a in aniž by se někdo zamyslel nad tím, zda se na problém hodí)

PS: subscriber publisher pattern zvládnu do toho dopsat za druhé odpoledne

8
Palce u ostatních komentářů vidím, u svého mám jen možnost svůj komentář sledovat nebo se nahlásit jako spammer (což nevím, proč bych dělal).

Když chci vidět, jak můj komentář hodnotí ostatní, musím se odhlásit. Je to trochu nepohodlné

9
Server / Http na backendech a čím jej nahradit (a zda vůbec)
« kdy: 06. 05. 2017, 11:27:39 »
S nástupem Http/2.0 a snahou vytlačit HTTP z prohlížečů opět řeším problém, jaký protokol používat na komunikaci mezi webserverem a nějakým pokročilým backendem. Doposud jsem si vystačil s proxypassem přes protokol http. Nevidím důvod, proč bych na backendu měl používat http/2.0, už kvůli tomu, že nevyužiju ani multiplexing ani šifrování, ale spíš honím maximální rychlost při přenosu dat z backendu na webserver.

Uvažoval jsem také o fastcgi, ale po prostudování dokumentace jsem ty úvahy znechuceně opustil. Je to protokol ze staré školy, podle mě moc komplikovaný a necítím to jako inovaci (spíš jako krok do historie). Zatím mi zpravidla http protokol přes proxypass postačoval, byť na můj vkus ukecaný. Obávám se ale, že zejména z pohledu managerů tlačených mainstreamem bude snaha věci zbytečně komplikovat.

Co se používá v jiných firmách a projektech?

10
Vývoj / Musí webdesigner znát základy Linuxu?
« kdy: 25. 04. 2017, 11:48:49 »
Zdar musím si postěžovat :)

Chápu, že nemohu po některých web designerech chtít programovat, byť by dneska základy JS měl asi každý zvládnout, nebo aspoň umět pomocí JS skrýt element na obrazovce, nebo vyplnit položky v select boxu. Ale někdy se setkávám se základními neznalosti, které mi stěžují práci s nimi.

Valná většina serverů běží na linuxu. Občas bych potřeboval, aby web designer věděl minimálně
 - co je to ssh veřejný klíč
 - co je to sftp protokol
 - co je to proxypass a jak si ho nastavím na svém lokálním serveru
 - co je to git a jak si z něho stáhnu projekt k sobě na disk
 - co je to konzole
 - proč je špatný nápad na server instalovat ftp
 - jak vypadá http request a jak response a co zhruba každá položka znamena (a kde to ve webové konzoli najdu)
 - proč není divný že /aaa/bbb  vrací 404 když /aaa/bbb/ccc funguje

Chci toho moc od člověka, který si řekne půl litru za hodinu? Nebo jsem se zbláznil a mám přehnané požadavky? Nebo jsem narazil na obyčejného grafika, který občas udělá i webovou stránku (ve wordpressu)

11
O serveru Root.cz / Tlačítko zpět na Lupě a na Rootu
« kdy: 14. 10. 2016, 16:26:06 »
Nevím jestli se to děje i vám, ale mně se často stává, že jdu na homepage Lupy nebo Root a otevřu si tam nějaký článek. Po přečtení článku dám zpět a odctnu se na stránce, na které jsem byl, než jsem přešel na homepage, tedy jako by to udělal 2x zpět. Mohu kdykoliv reprodukovat.

Děje se mi to v Chrome a to jak na linuxu, tak na windows, tak v mobilní verzi chrome. Netušíte čím by to mohlo být?

12
Nabízím zakázku / Javascriptář (Praha)
« kdy: 26. 02. 2016, 11:40:33 »
Zdravím.

Hledám do týmu malého startupu javascriptáře pro delší spolupráci (OSVČ)

Firma: Adveri s.r.o

Hlavní náplní práce by bylo vývoj webových aplikací (HTML5, JS, AJAX)
Příklady:
 - vývoj webové verze mobilní aplikace
 - aplikace pro snadnou administraci dat informačního systému.

(nejsou vyžadovány grafické dovednosti)

Sídlo společnosti je v Praze, není nutná trvalá fyzická přítomnost, přesto je třeba počítat s občasnými návštěvami v sídle.

Zájemci pište PM, nebo na nov.ondrej@gmail.com

13
O serveru Root.cz / Úvodní článek vypadá jako reklama
« kdy: 30. 01. 2016, 11:28:33 »
Já vím, že je tady vlákno, ale nechtěl jsem aby zapadl můj postřeh.

Dřív jsem si při návštěvě rootu přečetl úvodní článek a pak zbytek. Nyní narazím na novinku. Pak si uvědomím, že je to jen novinka a přečtu si... druhý článek. Proč přeskakuju první..?

sakra teprve dneska jsem si ho všimnul, on totiž vypadá jak reklama.

Tolik zpětná vazba.

14
O serveru Root.cz / blog.root je mrtvý?
« kdy: 10. 12. 2015, 11:57:59 »
Poslední příspěvek vidím z července. Je ta služba mrtvá, nebo jen jednoduše nikdo od té doby nic nenapsal?

15
Vývoj / Vícejazyčné texty v DB
« kdy: 14. 11. 2015, 13:14:18 »
Snažím se někde vygooglit rozumnou strategii pro vícejazyčné texty v databázích. Samozřejmě že nejprve jsem to řešil extra tabulkou, ve které byly pro každý řádek v primární tabulce textové popisky pro konkrétní jazyk s tím, že primární tabulka má take textové popisky, které suplují "default" jazyk, tedy situaci, kdy někdo žádá o jazyk, který není v jazykové tabulce.

Tohle řešení dost komplikuje některé dotazy a moc se mi nelíbí, je málo univerzální.

Pak mě napadlo dávat vícejazyčné texty dohromady do jednoho sloupečku a nějak to rozlišit uvnitř, s tím, že by po vrácení z DB došlo k nějaké filtraci textu podle toho, co žádá uživatel za jazyk. Zpracování textu by bylo obecnější, ale dělal by to až backend, ne databáze (maximálně, že by se napsala funkce pro databázi, která by to dělala).

Poradí někdo řešení, jak se to třeba dělá jinde? Nebo stačí jen poradit vhodný dotaz pro googla.

Stran: [1] 2 3 4

reklama