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 - Ondra Satai Nekola

Stran: 1 ... 75 76 [77] 78 79 ... 177
1141

Ono hlavne pro tohle vubec nemusis kod zaplacavat nejakymi makry...

1142
To nebude plnohodnotné GC, ale buď RC nebo v podstatě RAII. Výhody snad vidí každý.

Ano, muzes prudit do ostatnich.

1143
Kód: [Vybrat]
v1 = priprav_objekt();
v2 = pripav_objekt_2(v1);
if (v2 == null) {
   free(v1);
   return;
}
v3 = priprav_objekt_3(v1, v2);
if (v3 == null) {
   free(v2);
   free(v1);
}
Jestli chápu správně, tak pro tebe kód, kde třetinu kódu zabírá memory management...
Právě jsi porušil ten single exit, čímž jsi to dokonale zprasil.
Jestli je podle tebe normální na každý pár alokace a free napsat 4 řádky kódu, který s tím pracuje, pak ano, třetina kódu bude memory management a v takovém případě zůstaň u něčeho s GC, stejně to tím nevytrhneš.

Tak to napis po svem, at mame o cem diskutovat. Potrebujes naplnit tri promenne, jejich priprava potrebuje dynamickou alokaci a muze selhat.

1144
Skoro - použití GC je (velmi často, ne vždy) zbytečnost, ale má svůj super use case - neprogramátoři, prototypování, v některých případech i v produkci.
Nevidím problém v tom si paměť uvolnit sám, přesně v moment, kdy má být uvolněna. Typicky v Cčku na malloc pohlížím jako na blok - když napíšu malloc, hned pod něj píšu free a kód strčím mezi. Při dodržení single exit point je to velmi spolehlivé.
...
Ano, uvnitř bloku se může stát ledacos špatného, ale buď je to správně ošetřeno, nebo to není tak kritické a blok dojede včetně free, nebo to třeba segfaultne a paměť se mi uvolní tak nějak přirozeně :) , nebo je to ve stavu, ve kterém to nikdy nemělo být a musí se to vyřešit. Tohle ani GC nezachrání.
Jasně, takže....:
Kód: [Vybrat]
v1 = priprav_objekt();
v2 = pripav_objekt_2(v1);
if (v2 == null) {
   free(v1);
   return;
}
v3 = priprav_objekt_3(v1, v2);
if (v3 == null) {
   free(v2);
   free(v1);
}
Jasně, dá se to trošku vylepšit těma "goto" a la linux kernel, případně nějakým jedním místem, kde uvolním všechno, co není null... nedejbože, aby na ten objekt ukazovalo něco od někud jinud, že....

Hodně debilní kód, není divu, že software vypadá, jak vypadá. Na tomto příkladu je vidět, jak by javista psal v C, kdyby ho k tomu pustili. Zůstaňte fakt radši u bicyklu s postranními kolečky, přechod na Porsche opravdu nedopadne dobře.

Tak co udelas misto toho? Slozis to ze trech volani v matrjosce, ze kterych nebude jasne, o co jde, ze kod znamena

Kód: [Vybrat]
v1 = priprav1()
v2 = priprav2()
c2 = priprav3()
a zbytek je omacka?

Ne. Ze všeho nejdřív bych se podíval, jestli jde předávat objekty na zásobníku. Pokud ne, tak použiju nějakou formu správy paměti (jako v GCD). A pokud to z nějakého důvodu není v žádném případě žádoucí, tak použiju makro, které mi zajistí úklid ve všech větvích kódu, na unixech by bylo například udělané pomocí __attribute__(cleanup). Existují i jiné způsoby, ale ne tak univerzální, např. jen pro kód běžící v rámci nějaké smyčky událostí, ale to už moc odbočuju.

A co tím získáte, když funkci GC simulujete pomocí makra.

Muze tvrdit, ze nepouziva GC a neni loser.

1145
Skoro - použití GC je (velmi často, ne vždy) zbytečnost, ale má svůj super use case - neprogramátoři, prototypování, v některých případech i v produkci.
Nevidím problém v tom si paměť uvolnit sám, přesně v moment, kdy má být uvolněna. Typicky v Cčku na malloc pohlížím jako na blok - když napíšu malloc, hned pod něj píšu free a kód strčím mezi. Při dodržení single exit point je to velmi spolehlivé.
...
Ano, uvnitř bloku se může stát ledacos špatného, ale buď je to správně ošetřeno, nebo to není tak kritické a blok dojede včetně free, nebo to třeba segfaultne a paměť se mi uvolní tak nějak přirozeně :) , nebo je to ve stavu, ve kterém to nikdy nemělo být a musí se to vyřešit. Tohle ani GC nezachrání.
Jasně, takže....:
Kód: [Vybrat]
v1 = priprav_objekt();
v2 = pripav_objekt_2(v1);
if (v2 == null) {
   free(v1);
   return;
}
v3 = priprav_objekt_3(v1, v2);
if (v3 == null) {
   free(v2);
   free(v1);
}
Jasně, dá se to trošku vylepšit těma "goto" a la linux kernel, případně nějakým jedním místem, kde uvolním všechno, co není null... nedejbože, aby na ten objekt ukazovalo něco od někud jinud, že....

Hodně debilní kód, není divu, že software vypadá, jak vypadá. Na tomto příkladu je vidět, jak by javista psal v C, kdyby ho k tomu pustili. Zůstaňte fakt radši u bicyklu s postranními kolečky, přechod na Porsche opravdu nedopadne dobře.

Tak co udelas misto toho? Slozis to ze trech volani v matrjosce, ze kterych nebude jasne, o co jde, ze kod znamena

Kód: [Vybrat]
v1 = priprav1()
v2 = priprav2()
c2 = priprav3()
a zbytek je omacka?

1146
Jinymy slovy - pouziti GC je (velmi casto, ne vzdy) super, jen musis vedet ze a proc?
Skoro - použití GC je (velmi často, ne vždy) zbytečnost, ale má svůj super use case - neprogramátoři, prototypování, v některých případech i v produkci.
Nevidím problém v tom si paměť uvolnit sám, přesně v moment, kdy má být uvolněna. Typicky v Cčku na malloc pohlížím jako na blok - když napíšu malloc, hned pod něj píšu free a kód strčím mezi. Při dodržení single exit point je to velmi spolehlivé.

Ne ze by si zrovna na tenhle user case musel psat dealokaci rucne (coz mimochodem neni zas takova sranda, pokud zacnes uvazovat i o tom, ze se ti uvnitr bloku muze stat ledacos spatneho). Tohle je ten nejprimitivnejsi priklad escape analysis.
Ano, uvnitř bloku se může stát ledacos špatného, ale buď je to správně ošetřeno, nebo to není tak kritické a blok dojede včetně free, nebo to třeba segfaultne a paměť se mi uvolní tak nějak přirozeně :) , nebo je to ve stavu, ve kterém to nikdy nemělo být a musí se to vyřešit. Tohle ani GC nezachrání. A jinak, to je pořád řečí, jak musí být kód čitelný (někteří to považují za důležitější, než jeho funkčnost) a najednou je používání primitivních postupů špatně? Ono totiž většinou čím primitivnější, tím lepší. Chce to kázeň. A to je právě to, co velmi často chybí a proč vzniká tolik kočkopsů.

Proste jenom pridas k seznamu veci, co musi manageovat rucne i tu nejpouzivanejsi. A pritom tam muzes zrovna v tehle situaci jenom udelat chyby, lepsi nez slusny kompilator + runtime nebudes.

1147
Jinymy slovy - pouziti GC je (velmi casto, ne vzdy) super, jen musis vedet ze a proc?
Skoro - použití GC je (velmi často, ne vždy) zbytečnost, ale má svůj super use case - neprogramátoři, prototypování, v některých případech i v produkci.
Nevidím problém v tom si paměť uvolnit sám, přesně v moment, kdy má být uvolněna. Typicky v Cčku na malloc pohlížím jako na blok - když napíšu malloc, hned pod něj píšu free a kód strčím mezi. Při dodržení single exit point je to velmi spolehlivé.

Ne ze by si zrovna na tenhle user case musel psat dealokaci rucne (coz mimochodem neni zas takova sranda, pokud zacnes uvazovat i o tom, ze se ti uvnitr bloku muze stat ledacos spatneho). Tohle je ten nejprimitivnejsi priklad escape analysis.

1148
Špatné je, když programátor píše kód, spoléhá se na GC, protože se to tak naučil a ve skutečnosti ani netuší, že tam nějaký GC je a co pro něj/za něj dělá.

Jinymy slovy - pouziti GC je (velmi casto, ne vzdy) super, jen musis vedet ze a proc?

1149
A co je kvalitní programátor ?

Ten, co vyresi zakaznikuv problem a vysledek bude pouzitelny a opravovatelny i po tom, co programatora sezere krokodyl.

1150
Vývoj / Re:Objasnění příkazu
« kdy: 27. 03. 2017, 15:25:21 »
Nebudes se ani obtezovat napsat, v cem ten prikaz je?

Dost mozna nahrazuje backslashe dvema backslashi, nebo taky ne. Zalezi na konkretnim jazyce, jaka v nem jsou pravidla bacquotovani.

1151
Server / Re:Kam ukládat statistiky o běhu programu
« kdy: 27. 03. 2017, 14:38:31 »
Poskytuje nekdo rovnou sluzbu, kam by to slo ukladat? (tj. s jednoduchou registraci, treba na rok zdarma)

Hledej BaaS. (Backend as a Service.)
Tech variant je kopec, zalezi na tom, jake API se ti bude libit.

1152
Server / Re:Kam ukládat statistiky o běhu programu
« kdy: 27. 03. 2017, 14:05:12 »
V tehle poctech, maximalne na kolenou - napriklad volat echo server (nebo echo service v existujicim serveru) a pak si vysledky vygrepovat z logu. (Ovsem tezko radit, kdyz nevim, co mate, jak a kde, ja bych trebas sahnul pro primitivni reporty po Splunku, kdyby existoval...)

A nebo pokud nevadi cloud, tak vzit nejaky BaaS.

1153
Server / Re:Kam ukládat statistiky o běhu programu
« kdy: 27. 03. 2017, 12:23:09 »
Kolik toho tak zhruba bude?

(btw: hash uzivatelskeho jmena neni sam o sobe moc dobre zabezpeceni, protoze tech jmen je malo, takze k hashi jmeno, vetsinou, snadno dohledas)

1154
Práce německé tajné služby, umístění článku jako tento https://zpravy.aktualne.cz/zahranici/madari/r~c54634a20f0c11e7b494002590604f2e/?_ga=1.186502624.814779710.1482695440

Pravda v něm je, že takto FSB pracuje, jen Tusk je zaměněn za Orbána. Aby se takto mediálně pokryly očekávané Tuskovy problémy s polskou justicí.

Neblabol

1155
Studium a uplatnění / Re:Přechod do IT ve 30 letech
« kdy: 26. 03. 2017, 11:45:10 »
Nejjednodussi je zacit od znamych. Zkus se poptat, kam zmizeli byvali spoluzaci. Nejspis nebudou na IT pozicich, ale trebas budou mit prehled o te domenove specificke casti...

Stran: 1 ... 75 76 [77] 78 79 ... 177