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 [4] 5 6 ... 38
46
Vývoj / Re:problém s C++ : ios::ate
« kdy: 28. 09. 2017, 16:55:08 »
ios::app funguje. Vlastně původně jsem si myslel, že fungovat nebude, protože to používám k detekci toho, zda soubor už existuje nebo ne (C++neumi O_EXCL). Pokud mi tellp vrátí nenulový výsledek, tak vyhodím výjimku. Přišlo mi, že v režimu app nemůže tellp fungovat, protože to víc funguje jak stream.


Co vlastně dělá ios::trunc.... mě tedy nedělá nic, protože samotné ios::out udělá automaticky trunc. Doteď jsem ho všude uváděl, ale koukám, že naprosto zbytečně.

Jen tak si všimněte, že v strace není použit příkaz O_CLOEXEC. Dnešního hlediska bezpečnostní nutnost. (STL je vlastně nebezpečná)

47
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

48
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

49
No nevím ale testy píšu až potom, abych vyzkoušel všechny části kodu,. Aby člověk mohl psát test dopředu, musí mít přesný zadání. Takový luxus jsem neměl ani v Seznamu. Často klient nemá jasnou představu co vlastně chce. Vývoj produktu se pak realizuje jako opakovaná refaktorizace prototypu (a s tím souvisí snaha udržet testy konzistentní)

Zrovna při častých změnách zadání se vyplatí mít zadání specifikované testy. Vždy je jasné, které zadání v daný moment platí. Dost se mi líbí přístup RSpec, který přímo vede ke psaní testů jako dokumentace.

Tak sem nahoďte nějaké URL kde máte nějaké zdrojaky které tak vyvíjíte , ať tady nezapleveluju diskuzi, já si to prostuduju abych věděl jak se to dělá jinde

50
Ja nevím ale tvorba nové funkcionality je často pro mne permanentní refaktoring dokud se kód neusadí na všech místech. Poslední dobou tvořím kód který píšu několik dní aniž bych vyzkoušel, že aspoň část toho funguje, stačí, že to jde přeložit. Nestává se mi, že bych měl problém takový kód finálně odladit.

problém může nastat až po vás ten kód někdo zdědí. Bez testů nejde na první pohled poznat, co to má dělat.

No nevím ale testy píšu až potom, abych vyzkoušel všechny části kodu,. Aby člověk mohl psát test dopředu, musí mít přesný zadání. Takový luxus jsem neměl ani v Seznamu. Často klient nemá jasnou představu co vlastně chce. Vývoj produktu se pak realizuje jako opakovaná refaktorizace prototypu (a s tím souvisí snaha udržet testy konzistentní)

51
Pokud např. přejmenovávám public metodu, obykle to nebude změna jen v jednom souboru. Nevidím důvod, proč by se měla jedna fukční změna  (po které by měl zůstat projekt kompilovatelný), týkat jen jednoho souboru. Samozřejmě by commit neměl obsahovat více změn najednou, ale ne vždy to lze rozumně dodržet a není to dogma.

Nevidím důvod, proč bych měl přejmenovávat nějakou veřejnou metodu. To bych musel nejprve změnit rozhraní. Kromě toho jsem psal o modifikaci funkcionality, nikoli o refactoringu.

Ja nevím ale tvorba nové funkcionality je často pro mne permanentní refaktoring dokud se kód neusadí na všech místech. Poslední dobou tvořím kód který píšu několik dní aniž bych vyzkoušel, že aspoň část toho funguje, stačí, že to jde přeložit. Nestává se mi, že bych měl problém takový kód finálně odladit.

52
Mimochodem jak v gitu udělám revert lokálních změn u jednoho souboru? To tedy možná to není dobře implementované v eclipse který to umí jen u svn. U gitu mi nabízí jen reset vseho. SourceTree to umí na úrovni hunků ale je to funkce jeho UI

53
To asi záleží na stylu práce no, znám maníky kteří commitují každou řádku. Já nevím asi by se mělo commitovat po nějakých logických celních jenže často pracuji na několika věcech současně takže někdy ten logicky celek je na nekolik dní a zahrnuje několik velkých commitu.

Zejména na začátku vývoje používám sc nástroje na dílčí zálohování věci mimo mě PC (což offline samozřejmě nejde dělat) nebo přenášení dat mezi PC. Nechci řešit co je logicky celek, IDE mi poskytuje nekonečné undo a local history, tam chodím nejčastěji když hledám minule úpravy. Commit uprostřed práce mne zdržuje a nevidím důvod, proc by někdo měl nakonec vidět dílčí kroky vzniku finálního kodu

54
Zaloz si projekt na githubu (zdarma) a ten nabízí i subversion

Nechapu, jak si se svn pomuze. Je to (subjektivne) na pouziti slozitejsi nez git, o mercurialu nemluve.

No, není... Na rozdíl od gitu se nemusí potýkat s dvojím "commitovanim" (commit a push) a kolikrát pro nováčka nepochopitelný různý stavy lokálního repozitaře) dokud nemusí intenzivně mergovat a vytvářet branche, tak to stačí. Navíc github má právě tu skvělou vlastnost že k jednomu repozitaři má dva protokoly (svn a git) takže přejít na git je hračka

Pro svn ideálně TortoiseSVN, pro git určitě SourceTree

55
Zaloz si projekt na githubu (zdarma) a ten nabízí i subversion

56
Vývoj / Re:OOP a servisní třídy
« kdy: 27. 06. 2017, 13:41:18 »
A ještě doplnění. v jazycích s třídami předpokládám, že

objekt = instance třídy

57
Vývoj / Re:OOP a servisní třídy
« kdy: 27. 06. 2017, 13:31:29 »
To já samozřejmě znám, ale nějak mi nejde přes pysky "servisní třídy". Rozuměl bych "servisním objektům". V programu totiž třída ztrácí smysl, je to jen pouhá šablona layoutu výsledného objektu a nějakých drobností kolem (jako tabulka vt)
Pozor, tohle rozhodně neplatí o všech jazycích. Ve slušném objektovém systému je třída také normální entita (objekt).

O důvod víc, proč tomu říkat raději "servisní objekt" nebo ve větším měřítku "servisní vrstva".

Svata prostoto. To, ze sa Magda nevie vyjadrovat jednoznacne a neupresnila programovaci jazyk, nechame bokom, ale ak Magda v oboch svojich prispevkoch spomenula podstatne meno zenskeho rodu trieda, myslite si, ze hovorila o implementacii sluzieb (v najsirsom slova zmysle) v:

a) prototypovom jazyku
b) pure funkcionalnom jazyku
c) class based jazyku (cough, cough, trieda) <--------------------- SPRAVNA ODPOVEDtm

A teraz mi prosim vysvetlite, ako inak sa da v class based jazyku vytvorit "servisny objekt" bez tej "servisnej triedy", ktora je "jen pouhá šablona" s jeho implementaciou?

...makes you wonder.

S termínem servisní třída mám problém, protože ho neznám. Pokud jde o nějakou knihovnu bezstavových operací, tak spíš než třídu používám normální namespace. Chápu tedy, že v jazycích, které nemají namespace musím toto zabalit do třídy. Tomu bych rozuměl.

To co já nazývám servisními objekty, nebo často servisními interfacemi jsou objekty/interface, které obsahují hromadu metod, které spolu moc nemusí souviset, některé jsou stavové, jiné bezstavová, často jsou tam továrny. Zahrnutí do interface má ten význam, že skrývám implementaci, buď proto, že nechci aby byla vidět, nebo většinou proto, že v tom místě není definována (je dodána později). To třeba umožňuje nahradit skutečnou implementaci mockupem.

Servisní objekt skrze interface se buď předává do funkčních objektů přes konstruktor, někdy je dodáván později, někdy se dá za běhu změnit, záleží na typu objektu. Někdy jej mám globální nebo thread lokální, pokud jde o něco hodně základního. Třeba logovací service je zpravidla thread lokální, abych služby logování měl k dispozici všude a abych si nemusel logovací objekt předávat mezi objekty do zblbnutí.

Thread lokální objekty nadále neztrácí možnost funkcionalitu dočasně změnit, třeba v rámci následujícího volání mohu chtít změnit logovacího objektu, a po návratu z vrátím stav služby do původního stavu.


58
Vývoj / Re:OOP a servisní třídy
« kdy: 26. 06. 2017, 15:16:26 »
Co je to třída?

Odporucam wikipediu:
https://en.wikipedia.org/wiki/Class-based_programming


To já samozřejmě znám, ale nějak mi nejde přes pysky "servisní třídy". Rozuměl bych "servisním objektům". V programu totiž třída ztrácí smysl, je to jen pouhá šablona layoutu výsledného objektu a nějakých drobností kolem (jako tabulka vt)

59
Vývoj / Re:OOP a servisní třídy
« kdy: 25. 06. 2017, 20:16:11 »
Co je to třída?

60
Odkladiště / Re:Prodej bitcoinů – daň z příjmu
« kdy: 16. 06. 2017, 09:35:51 »
Sekce "ostatní příjmy" daňového přiznání fyzických osob

Stran: 1 2 3 [4] 5 6 ... 38