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 - Jiří Havel

Stran: 1 ... 9 10 [11] 12 13 ... 22
151
to korabro: Chybí ti životní náplň. Vykašli se na ostatní, ať si dělají, co chtějí a starej se sám o sebe.
Musíš začít dělat něco, co má smysl. Starej se o zvířata, o důchodce, pracuj rukama, tvoř něco. Ale něco smysluplného, s trvalou hodnotou. Najdi si holku, zploď syna, zasaď strom a postav dům. I takové banality dokáží potěšit. Později zjistíš, že až takové banality to nejsou a může to být velice uspokojující. Návštěva blázince je taky vhodná. V Opavě je to prý hezké. Odpočneš si úplně odříznut od světa okolo. To myslím vážně.

Já jsem kvůli zaměstnání skončil v nemocnici. Mám z toho epilepsii. Výborná věc. Rok jsem se z toho vzpamatovával, ale pak to najednou přišlo. Nic nebyl problém, všechno kolem mě plynulo tak nějak samo, nic mě nerozčilovalo. Ale lhostejnost to nebyla (ta hranice je opravdu tenká). Držel jsem se své práce, svého života. To byl jediný argument proti světu kolem mě.
Jirka

"zploď syna, zasaď strom a postav dům" Tomu se rika mem. Platilo to pred staletimi. Dnes je na planete 7.8 miliardy lidi. Ceny pozemku jsou vysoke.. atd..

Koik je na planete miliard cernochu a cinanu je krapet nezajimave, to at si resi oni.
V CR pocet obyvatel neustale klesa, coz je komplenzovano imigraci do velice mirneho narustu.

Pokud jsou pozemky drahe, musite se vice snazit, pane spravce.

Ty jses fakt Blabol. Nomen omen. Minuly rok pribylo skoro 50 tisic lidi.
https://www.czso.cz/csu/czso/obyvatelstvo_lide
Heh, pochopeni psaneho textu nebude uplne silna stranka.
Zkus si v tom grafu zjistit, co je ta cervena cara, tedy zmena poctu obyvatel bez imigrace.

Apropos, 50000 lidi z 10 mega je 0.5% ...
Ale zas mu jde kreativní zakrouhlování. Skoro 50k, které je vlastně blíž 40k člověk zase tak často nevidí. ;)

152
Vývoj / Re:Kolko cyklov zbehne
« kdy: 16. 08. 2020, 23:29:31 »
V assembleru bohužel není moc čitelná ani ekvivalentní verze s forem a ifem :
https://godbolt.org/z/74WbPa

Na to aby assembler output bol citatelny najskor treba kompilovat bez -O2 :D
Není koukání na assembler bez optimalizací trochu zbytečné? Vždyť většina z toho budou nezajímavé prology, epilogy a přesuny věcí tam a zpět. Pár zajímavých instrukcí je utopených v šumu. Vám ten kód bez optimalizací přijde čitelnější? :o Vždyť to z nějakých 230 řádků udělalo 3k řádků "balastu".
A opravdu si myslíte, že v tom neoptimalizovaném assembleru najde tazatel odpověď na svou otázku?  ::)

153
Vývoj / Re:Kolko cyklov zbehne
« kdy: 13. 08. 2020, 17:10:47 »
Tak neznaje vnitřnosti C++, tak bych to asi prostě přeložil s debug symboly a podíval se do toho oblíbeným debuggerem, případně gcc umělo překládat i do assembleru (pokud nevadí at&t syntaxe)
V assembleru bohužel není moc čitelná ani ekvivalentní verze s forem a ifem :
https://godbolt.org/z/74WbPa
Dát si breakpointy do těch lambd je rozumnější řešení.
Mohl byste jeste vyvsetlit, co znameta ten operator pipe "|". C++ syntaxi trochu znam, ale tohle si nepamatuju. V C++ bych cekal spis neco takovyhleho: boost::irange(1, 12).filtered().transformed()... Nebo je to nejak pretizenej operator?
Jo, je to přetížený operátor.

Verze s tečkama by byla naopak naprosto proti filosofii c++. Ty range vycházejí z STL knihovny. STL poskytuje nezávislé kontejnery a algoritmy. Algoritmy vyžadují od kontejnerů jen minimální nutné rozhraní. Takže si napíšu vlastní kontejner a můžu ho s minimem námahy zkombinovat se všemi kompatibilními algoritmy. Můžu použít kontejner z jedné a algoritmus z druhé naprosto nezávislé knihovny.

A ta kombinace přes přetížený operátor (což je jen maskovaná globální funkce) funguje úplně stejně :
1) Tou řadou adaptérů můžu prohnat jakýkoliv kontejner, který podporuje standardní begin+end. Případně si ty dvě potřebné funkce můžu dopsat i pro nějaký obskurní kontejner třetí party. Dokonce k němu ani nemusím mít zdrojáky. I Cčkovské pole to zvládne.
2) Můžu si napsat nějaký adaptér, který pak můžu aplikovat na cokoliv úplně stejně jako ty standardní. Přes tečku nemůžu kombinovat adaptéry a kontejnery z nezávislých knihoven.

154
Vývoj / Re:Kolko cyklov zbehne
« kdy: 13. 08. 2020, 11:39:45 »
Zalezi na tom, co kazda ta funkce vraci. Neznam tenhle konkretni programovaci jazyk, ale jsou v podstate 2 moznosti.

1. Jedna se o nejake Stream API. Tzn zadna z tech funkci nevraci primo pole, ale misto toho vraci instanci nejakyho streamu. Vy pridavate dalsi a dalsi funkce do toho retezu. Pak to vypada takto:
irange vygeneruje prvni prvek 1, posle ho filtru (overi delitelnost 2), pokud nesplnuje, konec; pokud splnuje, provede se transormace, prvek se vlozi do vysledneho vectoru. Tohle opakuj pro kazdy prvek. Celkem jeden cyklus.

...

Tezko rict, co dela vas kod konkretne. Pokud se pipe chova stejne jako treba v bashi, tak bych tipnul na ty 4 iterace. Na druhou stranu muze v tom jazyce pipe znamena to, co treba jave znamena "." (zretezeni prikazu). Kazdopadne at tak nebo tak, mel byste byt schopny si to projit v debugeru...
Je to stream api z C++.

Range se skládá z iterátoru a zarážky. Iterátor se dá posunout na nový prvek, dereferencovat nebo porovnat se zarážkou.
"filtered" vylepší posun iterátoru
"transformed" vylepší dereferenci iterátoru
Až to "copy" tu range projde a nacpe výsledky do výstupní range (a ta při zápise přidává do vectoru).

Takže ten kód teoreticky odpovídá jednomu for-cyklu. Ale reálně to bude větší binec, protože do toho vstupují i další věci jako realokace toho vectoru. Proto jsem se ptal na detaily.

155
Vývoj / Re:Kolko cyklov zbehne
« kdy: 13. 08. 2020, 09:30:28 »
... kolko cyklov zbehne ...
Šlo by tu otázku trochu rozepsat? Vůbec netuším, na co se ptáš.

156
Vývoj / Re:C++ typ interval
« kdy: 10. 08. 2020, 09:58:30 »
Před časem jsem si s něčím podobným hrál. Povedlo se mi to jenom částečně. Jestli ten výsledek stojí za to je těžko říct.

S kontrolou přiřazení je problém ten, že překladač udělá z literálu normální int dřív než se k němu rozumně dostaneš. Takže z toho literálu musíš udělat něco jako std::integral_constant. Asi nejrozumněji vypadající inicializace bude:
Kód: [Vybrat]
hours = lit<13>();
hours = 13_ic;
Pro druhou verzi bylo třeba si napsat vlastní uživatelsky definovaný literál. Znamená to si napsat parser intů přes šablony. IMO to za to vážně nestojí. Na první verzi stačí:
Kód: [Vybrat]
template<intmax_t I> struct lit : std::integral_constant<intmax_t, I> {};
Pak už může mít ten interval šablonový konstruktor co bere integral_constant a v něm se dá použít ten static_assert.

Co jsem nakonec dotáhl do použitelného stavu nebyly plnotučné intervaly ale jen otypované indexy a velikosti.
  • Rozsahy se kontrolují assertem v runtime. Ale ve chvíli kdy se udělal z intu index, tak žádné další asserty nebyly.
  • Kromě maximální velikosti měly ty indexy i tag. Takže prohození indexů jablek a hrušek se při kompilaci chytlo.
  • Hlavně jsem tím vychytal automatické konverze intů. Index se dal převést na libovolný integer, ale static_assert hlídal jestli se tam vleze. A taky jsem tím zatrhl Cčkovou past kdy "( uint <= -1 ) == true"

Hlavně tyhle hrátky ber jako druh intelektuální masturbace a ne jako něco, co se od tebe čeká. Spíš se nauč pracovat s nějakým statickým analyzátorem. S ním dostaneš daleko víc muziky za míň peněz.

157
Vývoj / Re:C++ stack vs heap.
« kdy: 08. 08. 2020, 21:21:13 »
Už som si niečo vygooglil:

Kód: [Vybrat]
auto chars = make_shared<vector<char>>(initializer_list<char>{'a', 'b', 'c'});

toto posledné sa mi až tak nepáči, neni nato ešte nejaká krajšia syntax?

Trochu odbočím. vector je jedna z tříd, které takřka nedává smysl alokovat na heapu tímhle způsobem. Za nějakých 15+ let programování v c++ jsem udělal "new std::vector..." asi tak jednou a to jsem dělal hodně velkou divočinu. "new vector", "new string" a podobně je celkem spolehlivý způsob jak identifikovat špatně přeučeného Javistu.

Takže syntaxe, kterou chcete je pravděpodobně :
Kód: [Vybrat]
std::vector<char> chars = {'a', 'b', 'c'};

C++ se snaží o hodnotovou sémantiku. Pokud to jenom trochu jde, pak se věci chovají jako int - přímo jako chlívek na hodnoty ne jako nějaká samostatně existující entita někde na haldě.

Na haldě se obvykle vytváří "pár" objektů. Všechno ostatní jsou buď lokální proměnné ve funkcích, nebo membeři nějakých tříd. A i u těch dynamicky alokovaných objektů je často identitfikovatelný jeden zodpovědný vlastník, který má na něj unique_ptr. shared_ptr je pro případy, kdy se nedá obejít bez spoluvlastnictví. Cena za to je, že přestává být z kódu jasně patrné, kdy ten objekt zanikne.

Asi som sa nevyjadril jasne. Tým zápisom som nemyslel syntaktický cukor (inicializácia mimo konštruktoru), ale statickú vazbu. Member vytvorený bez operátoru new (make_shared, make_unique, alebo malloc) by mal vytvoriť objekt na stacku. Ale ak je celý objekt vytvorený na heape tak potom aj jeho member sa vytvorí na heape?
Member - členská proměnná nějaké třídy má pro sebe kus paměti přímo v té třídě. Velikost objektu je daná velikostí jeho memberů, protože jsou poskládané jeden za druhým. Member bude tam, kde ten objekt, kterého je členem.

158
Vývoj / Re:C++ stack vs heap.
« kdy: 07. 08. 2020, 21:07:36 »
Samotný vector (nějaké 3 ukazatele) je přímo tam, kam ho dáte. Pokud bude lokální proměnná ve funkci, tak bude na stacku. Pokud bude jako členská proměnná nějaké třídy, tak bude tam co instance té třídy. Ten objekt vlastně to kde je nemusí vůbec řešit.  (statické vázání jako pojem slyším poprvé, popravdě mi to spíš evokovalo keyword static, který je úplně něco jiného)

Pro svoje data si vector alokuje kus dynamické paměti na heapu. Ta bude na heapu vždycky, bez ohledu na to kde je ten samotný vector. Tu paměť si spravuje ve vlastní režii a programátora zajímá jen to, že přidávání do vectoru může způsobit realokaci. Paměť pro data si musí alokovat dynamicky, protože je její velikost neznámá.

Ten vector samotný nemá smysl samostatně dynamicky alokovat na haldě. Ve chvíli kdy je jako lokální proměnná nebo member, tak má jasně určené odkdy dokdy existuje, automaticky se na konci jeho života vyvolá destruktor a uvolní paměť.

Ten shared_ptr to má stejně. Samotný je na stacku nebo tam co objekt jehož je členem. A odkazuje se na paměť na haldě.

Já osobně paměť prohlížím v debuggeru. Čtení z libovolné adresy mi přijde zbytečné, ale z nějakého objektu se dají byty vykopírovat pomocí memcpy do pole surových charů.

A pro zjišťování velíkostí a rozložení struktur používám :
int a[sizeof(Neco)] = 0;
int b[offsetof(Trida, member)] = 0;
Překlad selže a překladač mi v chybě napíše, do jak velkého pole jsem se snažil ten int nacpat.

159
Vývoj / Re:Windows API - typové aliasy
« kdy: 06. 08. 2020, 18:06:46 »
To mne pobavilo :-). Muzete nejaka makra zminit ?  Ono tam toho je dost co muze byt potenc. nebezpecne, ale pri trose opatrnosti v tom nevidim takovy problem, API jako takove mi prijde celkem rozumne navrzene, doprasili to IMHO az zmenami, kdy uz v MS nejspis puvodni architekti z VMS nebyli...
Min a max jsou provalené. Ale z fleku mě napadají další dva ukázkové příklady:

1) Každá winapi funkce co bere jako parametr string je ve skutečnosti makro. Můžete třeba strávit spoustu času hledáním důvodu proč linker odmítá vaši třídu s metodou CreateFile. Makra nerozlišují třídy a metody a pak stačí aby do jednoho cpp to windows.h probublalo a do druhého ne. A CreateFile je jen jeden příklad z mnoha.

2) Strávil jsem hromadu času zjišťováním, proč mi funkce SetRange( float near, float far ) při kompilaci generuje úplně nesmyslné hlášky. Ještě, že jsem starý a pamatuju DOS. Nic z té chybové hlášky mi nenaznačilo, že se jméno far odmakrovalo do zapomnění.

C preprocesor a makra jsou past vedle pasti. Makra totálně ignorují jmenné prostory a pak záleží na pořadí includů. A ten strom includů je i pro relativně malé projekty něco, co lidský mozek nemá šanci rozumně pobrat. Proto se taky v novém kódu makra definují stylem FIRMA_PROJEKT_VLASTNI_JMENO aby to nemělo šanci vykonfliktit s nějakým příšetným jménem.

Winapi omlouvá jen to, že jeho návrháři ještě netušili, jakou prasárnu právě páchají.

160
Vývoj / Re:Windows API - typové aliasy
« kdy: 06. 08. 2020, 13:38:32 »
Kolem winapi doporučuju používat ty jejich typy. Ono je celé winapi používá konzistentně.

Třeba to HWND nebo HANDLE je pointer na "něco". Není důležité na co, ale že to je rukojeť k nějakému objektu.

Celé použití winapi ale doporučuju nepropustně zabalit do jednoho modulu za nějaké vlastní rozhraní. Pokud se vám #include <windows.h> rozuteče po větším projektu, tak vaše zadek pozná středověk.
Windows.h definuje mračno nenápadných a maximálně destruktivních maker, které můžou dělat neskutečný binec při překladu a linkování.

161
/dev/null / Re:Kvíz:Náš bezpečnostní auditor je idiot
« kdy: 22. 07. 2020, 14:05:41 »
To je postup jak se dostali do twitteru?
Jestli jo, tak potěš koště.

162
/dev/null / Re:Kvíz:Náš bezpečnostní auditor je idiot
« kdy: 22. 07. 2020, 13:48:48 »
Tohle mi zní jako ten nejhrubší a nejjednodušší pokus o phishing. Od auditora by to bylo tak na hranici urážky.

163
Sítě / Re:Optika v novostavbě, na co si dát pozor ?
« kdy: 17. 07. 2020, 15:54:02 »
Druhá věc je to, že 230V se dnes běžně tahá pod omítkou, ale datové rozvody se pořád dávají do krků.
U mědi už je to ok? Protože s hliníkem pod omítkou jsem zažil zajímavé chvilky.

164
Bacha, nadčasovou elektroinstalaci dělají hlavně dobře rozmístěné husí krky. Další krok jsou "blbé" věci jako oddělený jistič pro mrazák. A u těch chytrých věcí je důležité aby to šlo jednoduše přemostit. Ona spolehlivost prudce klesá s počtem komponent.

165

jojojojojojojojojojojo nic nevypoví vo člověkoj tolik jako jedna jediná pitomá skoužka v životě &#129318; &#129318; a vubec toje jako supr nápad dávat nějaký budoucí programátorce do přijímačky čédinu :/ :/ :/ :/ čédina je pavěda postavená na neintuitivních axiomech vycucanejch z prstu který dou často proti sobě nevychází z žádnejch přírodních zákonů půlka věcí vní nefunguje jak by rozumnej člověk jako čekal ale budem tim měřit jak sou lidi jako chytrý :/ :/ si myslim že protěžování čédiny na školách je nějakej pozůstatek českýho nacionalismu kdy to tady byl samej germán a pak vod jistý doby koryta na školách pro zbytečný učitelský můry :/ :/ neni žádnej rozumnej důvod mit na škole povinou čédinu :/ :/

a jako kolik z těch přijatech studentů umí programovat co? ??? ?? si myslim žeby byla pro školu i pro společnost 10000000000000000000000000x cenější než nějakej pitoma co si čédinu na přijímací skoušku jakoby nadřel páč 'rozkaz vod rodičů zněl jasně' nebo pitoma co zase čédinu ovládá maximálně ale zase jako nemá co tou češtinou říct protože je jinak uplně vymaštěnej :/ :/

Pravda pravda... Ale ne... pockat... neni to pravda... je to snuska kecu ;-)

Ale omlouva te fakt, ze jako Svedka mas pravdepodobne problem s pochopenim ceskeho textu.
Nekrm to.

Stran: 1 ... 9 10 [11] 12 13 ... 22