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 - Filip Jirsák

Stran: 1 ... 141 142 [143] 144 145 ... 375
2131
Vývoj / Re:Naivní závislostní typ (úvaha)
« kdy: 15. 11. 2019, 16:58:49 »
Jak by ten váš typový systém řešil tohle?

Kód: [Vybrat]
plus :: Numeric, Numeric → ?
? a
Numeric b
for (;;) {
  a := plus(a, b)
}

Jaké typy by byly místo otazníků?

2132
Vývoj / Re:C# a POST požadavek nebo náhrada Webclineta
« kdy: 15. 11. 2019, 08:17:11 »
Myslím, že není nikde definováno, že každý POST požadavek má používat multipart/boundary.
Nikde to definováno není, v POSTu samozřejmě může být jakýkoli obsah, stejně jako u všech ostatních metod.

K tomu se klient uchyluje, pokud chce v rámci jednoho požadavku odeslat více bloků (různých) dat.
Ve skutečnosti to používají jenom prohlížeče pro upload souborů z webového formuláře, a pak aplikace, které tenhle upload chtějí simulovat. Žádné jiné použití multipart/form-data jsem neviděl – pokud nějaké API potřebuje získat více částí, dělá se to samostatnými voláními. Ostatně povšimněte si, že ten typ se jmenuje form-data, má to přímo v názvu, že je určen pro odesílání formulářových dat.

Nevím, zda PUT nedovoluje použít také podobný přístup (multipart/boundary)
Povoluje, resp. HTTP standard vůbec neřeší, jaké mime-typy se kde mohou poslat. Ten typ samozřejmě můžete použít, ale musíte vědět, že server ho umí zpracovat. A bude to vaše unikátní řešení – ten typ se normálně používá jen v prohlížečích pro odeslání formuláře se souborem, a pro to se vždy používá metoda POST. Prohlížeče samy o sobě metodu PUT na webu nikdy nepoužívají. (Něco jiného je samozřejmě AJAXový kód v JavaScriptu, tam si zase můžete HTTP požadavky sestavovat, jak chcete. A něco jiného je případná podpora WebDAVu nebo jiných protokolů v prohlížeči.)

2133
Vývoj / Re:C# a POST požadavek nebo náhrada Webclineta
« kdy: 15. 11. 2019, 08:06:33 »
Doplním, že ten ukázkový příklad z dokumentace k API také nefunguje, Chrome tam také rve boundary=-----
Pokud se k tomu dostanu, zkusím i nějakou historickou verzi IE, jestli se něco změní.
Nezmění. Z prohlížeče odesíláte formulář, v jehož rámci se uploaduje soubor. To je něco úplně jiného, než odeslání XML dat na server.

V těle HTTP požadavku se mohou posílat libovolná data (v libovolném formátu). Aby server věděl, o jaký formát dat jde, posílá se hlavička Content-Type. Váš REST server očekává jako typ dat na vstupu XML. Prohlížeče při odesílání HTML formulářů používají typ dat pro HTML formulář (existují dva, jeden pro formuláře bez uploadu souboru, druhý pro formulář se uploadem souboru). Váš server s tím formulářovým typem neumí pracovat (což je celkem logické).

Vaše pokusy posílat formulář tam, kde je očekáváno XML, jsou stejné, jako kdybyste se pokoušel otevřít video soubor v textovém procesoru. Když se vám nepovedlo otevřít video v Libre Office, je zbytečné zkoušet to ještě ve starší verzi a v MS Wordu. Prostě textové procesory video otvírat neumí. A stejně tak váš REST server umí zpracovat „soubor“ XML ale ne soubor s HTML formulářem.

2134
Vývoj / Re:C# a POST požadavek nebo náhrada Webclineta
« kdy: 14. 11. 2019, 23:23:27 »
Ne. Když je to RESTové API, očekává se, že v těle požadavku jsou rovnou data. Ne že posíláte obsah webového formuláře. Je to API, ne web. Ale mělo by být zdokumentováno i to, co se má posílat v těle požadavku. Jak jste přišel na to, že tam máte posílat zrovna XML a v jakém formátu? Proč tam neposíláte nějaký divnější formát, třeba JSON? To jste nevyčetl z dokumentace toho API?

2135
Vývoj / Re:C# a POST požadavek nebo náhrada Webclineta
« kdy: 14. 11. 2019, 23:10:36 »
Ano, to boundary tam patří. Je to způsob, jakým je implementován upload souborů přes formuláře v HTML (v prohlížečích).  typ je multipart/form-data, který umožňuje posílat v jednom požadavku víc částí, boundary definuje hranici mezi těmi částmi a každá část je pak buď jedno formulářové pole nebo uploadovaný soubor.

Ale pokud je to klasické RESTové API, nejsou tam žádné formuláře a veškerý obsah se posílá v těle požadavku. Takže tam není žádný upload souboru a nebudete používat metodu UploadFile. Ta je určená pro upload souboru tak, jak to dělají webové prohlížeče s uploadem souboru přes formulář.

2136
Vývoj / Re:C# a POST požadavek nebo náhrada Webclineta
« kdy: 14. 11. 2019, 22:53:08 »
Když použijete POST, dělá ta metoda klasický formulářový upload souboru. Když teda odstraníte ten váš Content-Type a necháte metodu vložit tam správný. Otázkou samozřejmě je, zda cílové API očekává formulářový upload souboru.

Žádný prohlížeč neodesílá formuláře metodou PUT, takže pro tuto metodu není upload souboru nijak definován. Podle vašeho výstupu metoda dělá to, že v těle požadavku odešle obsah souboru. Takové chování dává smysl.

Podle vašeho popisu je to ale klasické RESTové API, které POSTem vytváří nový záznam a PUTem přepisuje existující záznam. Takové API bude určitě fungovat s tím, že dostane v těle požadavku obsah – tak, jak to máte s tím curl. teoreticky tam může být nějaké berlička, že to bude přes POST akceptovat i upload souboru, aby se to dalo otestovat i v prohlížeči, ale to byste si musel ověřit, že to tak opravdu funguje (třeba aspoň tím curl). Ale spíš bych se na to vykašlal a posílal bych data normálně v těle požadavku.

A pokud tam posíláte XML, doporučoval bych Content-Type nastavovat na application/xml (nebo text/xml). Server teď asi Content-Type ignoruje – když mu pošlete, že je to formulář a místo toho pošlete XML, on to akceptuje. Ale třeba to bude v nějaké příští verzi opravené a ten váš rozbitý kód pak přestane fungovat.

Převedením souboru na stream a jeho odesláním se problém vyřešil, ale teda...
Když jste si uvědomil, že nechcete dělat formulářový upload souboru, ale poslat data, opravil jste kód, aby to skutečně dělal, a ono to funguje. Co je na tom divného?

2137
Vývoj / Re:C# a POST požadavek nebo náhrada Webclineta
« kdy: 14. 11. 2019, 22:14:58 »
Proč tam ručně cpete Content-Type form-urlencoded, když chcete uploadovat soubor, tedy multipart/form-data? Ta metoda tam pošle správnou hlavičku, ale vy to pak přebijete svou špatnou hlavičkou.

Taky byste si měl ujasnit, co vlastně chcete posílat. Pomocí curl posíláte obsah souboru, v kódu pak ale uploadujete celý soubor. Chcete tedy posílat data nebo soubor?

2138
Vývoj / Re:SQL dotázek
« kdy: 13. 11. 2019, 12:26:50 »
Je to čisté řešení?
Není, čisté řešení je ty tabulky normalizovat.

Případně to jde udělat nějak přes WHERE auto="Nissan" AND/OR auto="Audi" -> group by jmeno -> having(count(auto))>=2 ?
S AND to určitě nebude fungovat, nebudete mít v jednom řádku Nissan i Audi. COUNT(auto) vám vrátí 2 i v případě, že tam budete mít dva záznamy s Nissan. Tj. pokud je podmínkou, že má Nissan i Audi, je ta podmínka špatně.

Začněte ale tou normalizací. A pak bych použil SELECT FROM seznam_osob WHERE EXIST (vlastní Audi) AND (vlastní Nissan) (pokud je podmínkou, že vlastní oba). Je to přesný popis toho, co chcete získat, a optimalizátor dotazů si s tím nejspíš poradí.


2139
Windows a jiné systémy / Re:Tisk A5 na šířku
« kdy: 12. 11. 2019, 08:43:26 »
Co se týká přesnosti tak by mě zajímalo co je to vlastně za tiskárnu. Nikdy jsem se nesetkal s tak nepřesným tiskem že by to někdo řešil. Odhaduji, že běžná tiskárna se vejde do milimetrů což je na obálce nic. Co to máš za tiskárnu?
Např. se stále používají doručenkové obálky s kompletním předtiskem (pro psaní rukou výborné, pro tisk z počítače dost nevhodné), které mají zaškrtávací políčka 3×3 mm. Pár milimetrů se na té obálce tedy pozná na první pohled.

2140
Rekl bych, ze domena bez www se v pripade webovych stranek presmerovava na www. Asi to bude nepsane pravidlo protoze to tak delaji vsichni. Mozna to je prezitek, ale proc to menit?
Všichni to tak nedělají – např. Twitter, iHNed, Medium.com nebo GitHub přesměrovávají opačně. Nebo všichni, kdo používají domény třetího (a vyššího) řádu. Ale těch přesměrování domény 2. řádu na www je asi víc, než opačně – myslel jsem si, že už je to vyrovnanější.
Ale s tím, jak teď Chrome začal www skrývat, se to podle mne rychle změní ve prospěch domén bez www – obvykle nebude důvod (kromě hostingů řešených CNAME záznamy) používat jinou doménu, než která se zobrazuje uživateli, a lidé získají pocit, že www už se nepoužívá.

3/ Ten můj výčet reagoval na obtížnost upgradů LE daemona v čase
Pokud „reagujete“ na něco, co nikdo nenapsal, komplikuje to diskusi.

2141
LE a certbot je jedna práce a je pokoj "na vždy"
S tím „navždy“ bych byl opatrný, LE přestává podporovat API verze 1, takže je dobré si ověřit, že používáte aktuální verzi (ať už certbota nebo jiného softwaru na automatickou obnovu).

2142
Certifikát potřebujete pro variantu s www i bez www, na HTTPS by mělo běžet vše, co na webu je. Jednu variantu budete přesměrovávat na druhou – kterou kam je otázka vkusu, před pár lety to podle mne bylo nerozhodně, dnes už se asi směřuje spíš k variantám bez www, tj. www přesměrovávat na variantu bez www. Je ale potřeba přesměrovávat vše na jednu doménu, tj. http://exmaple.comhttps://example.com, http://www.example.comhttps://example.com, https://www.example.comhttps://example.com a jenom na tom https://example.com bude skutečný obsah – aby byl unikátní a měl jednoznačnou adresu.

Pro obnovu certifikátů se používají skripty. Certifikáty se pak nevyměňují těsně před koncem platnosti, ale třeba o měsíc dřív. Let's Encrypt vám pak posílá e-mail (pokud jste ho správně uvedl) asi 15 dní před koncem platnosti, takže kdyby se automatická obnova nezdařila, dozvíte se to.

Navíc pokud to bude e-shop, asi tam budete mít i nějaký externí monitoring, a ty už dnes umí kontrolovat i blížící se expiraci certifikátu.

Hlavní sponzoři používají jiné certifikační autority, protože jsou to velké společnosti a mají certifikáty od zavedených certifikačních autorit, měly by mít i certifikáty vystavené na jméno firmy, ne jen na doménu. Osobně mi připadá zvláštní, že třeba Seznam používá Let's Encrypt – pokud by všichni používali jednu autoritu, bude to velmi nebezpečné. Osobně pořád věřím, že Let's Encrypt je jen dočasná záležitost, než se certifikáty začnou dávat do DNS. Každopádně pro vaší současnou situaci je Let's Encrypt ideální.

2143
Windows a jiné systémy / Re:Tisk A5 na šířku
« kdy: 03. 11. 2019, 21:38:29 »
No to fungovat nebude, protože A4 má 2× větší délku a každá tiskárna pozná, že už papír skončil a ohlásí chybu.
Vyzkoušeno mnohokrát a žádná tiskárna chybu nehlásila. A i kdyby vaše tiskárna chybu ohlásila – potištěný papír už máte venku, takže případná chyba vám může být jedno. Je pravda, že to všechno byly levné domácí inkoustové tiskárny, s velkou kancelářskou laserovkou jsem to asi nikdy nezkoušel. Ty domácí inkoustovky umí i menší formáty, než A5.

Pozor na volbu tisku na výšku / na šířku – některé programy (myslím teď na starší Adobe Reader) mají svůj vlastní tiskový dialog, kde se tyhle věci nastavují, a občas si to ne úplně dobře rozumí s ovladačem tiskárny (byl tam nějaký fígl typu v Acrobatu nastavit tisk na šířku, ale v ovladači tiskárny ponechat tisk na výšku, nebo tak něco).

2144
Tak opravdu bezpečná řešení jako vlastní servery by u BFU asi neprošlo.
Vlastní server není zárukou bezpečí. Málokdo má schopnosti starat se o takový server tak, aby to opravdu bylo bezpečné. Navíc tady se bavíme o komunikaci dvou subjektů, takže by vlastní server museli mít oba a musela by být bezpečná ta komunikace mezi servery.

2145
Windows a jiné systémy / Re:Tisk A5 na šířku
« kdy: 03. 11. 2019, 10:21:21 »
A5 na šířku je A4 klasicky na výšku
Vypadlo mi slovo – „A5 na šířku je polovina A4 klasicky na výšku“

Stran: 1 ... 141 142 [143] 144 145 ... 375