spájame
slovenskú
IT komunitu
pridaj sa
Registrácia · Login
Miroslav Martinovič

Miroslav Martinovič

31 ročný HTML+CSS kóder, Programátor, Bratislava


V čom sa vyznám:

PHP, C#, .NET, XNA

Overený používateľ, členom od 28.7.2011

(zatiaľ žiadne)

Miroslav Martinovič nenapísal žiadne články/novinky

Miroslav Martinovič napísal 12 komentárov

1 0 Miroslav Martinovič 2012-09-06 09:42:35
@Nomak - bude musieť, situácia sa zmenila, a IE už nie je lídrom na trhu, ľudia si budú musieť uvedomiť že internet nie je "to modré e na ploche", a s rozšírením HTML5 sa buď IE zobudí (čo už sa vlastne aj deje) a začne plne podporovať štandardy, čím umožní ľuďom ďalej si myslieť že "internet je to modré e na ploche", a získa späť aspoň časť svojho bývalého trhu, alebo sa zobudia ľudia a na IE sa definitívne vybodnú. V oboch prípadoch bude výsledok používanie prehliadačov plne podporujúcich moderné štandardy.

ps: súhlasím, ale rovnako tak je hlúposť plne sa spoliehať len na css3
K článku QtCreator - IDE
1 0 Miroslav Martinovič 2012-09-06 09:38:49
@Peter Bočan nemáš za čo, ale toto som presne povedať nechcel. Nemyslím že sa tu vyskytuje zväčša laická komunita, alebo aspoň dúfam, nemala by sa, ale na druhú stranu nie každý (nelaik) robí s C++kom, a mnoho takých ľudí si tento článok otvorí, čiže kľudne by stačilo na úvod "QtCreator je IDE zamerané na kódenie v C++ za použitia Qt frameworku", a už by vedeli aj tí čo majú ako hlavné nástroje iné jazyky. Netreba vysvetľovať jazyk ani framework, stačí človeku povedať o ktorý jazyk/framework ide (zober si to takto, ani nie každý C++kar musí vedieť že niečo ako Qt framework existuje, a ako sa z tohto článku dozvie že ide o niečo pre neho relevantné? Nedozvie.). Príklad s brašňou nástrojov nemal hovoriť o laikoch úplných, laik v danom príklade bol skrátka len "osoba nezainteresovaná v konkrétnej technológií ktorej sadu nástrojov rozoberáš".

"Ináč, ak ti mám povedať pravdu o tomto IDE, je to fakt jednoduché na ovládanie a niet nejako čo vypichnúť, až na "design mód" - teda Drag & Drop grafického rozhrania. To je tak všetko, čo by som v skutočnosti mohol vypichnúť, a čo len-tak nejaký editor nemá. To by na 3000 znakov nebolo"

Tak v tom prípade ak ti mám povedať pravdu už vôbec nechápem pointu tohto článku, mimo informácie "aha, aj takéto IDE" existuje, a sám si sa vlastne priznal k tomu že ide do veľkej miery o "article for the sake of having article". Ak to má byť úvodný článok v sérií o danom frameworku (niečo také si naznačil), a predstavuješ prostredie ktoré budeš počas série používať, tak môže byť, ale sám osebe tým pádom článok zmysel príliš nemá a vieš o tom...

Chápeme sa?
0 0 Miroslav Martinovič 2012-09-06 09:27:14
@Peter Špireng
"V knihe Dokonalý kód tvrdí Steve McConnell, že ich je sedem. Ja si myslím, že je to ešte celkom optimistický odhad."

Nejedná sa o odhad, ale o záver psychologickej štúdie (ktorému sa hovorí Millerov zákon), uverejnenej v roku 1956 profesorom Georgom Millerom z Princetonskej univerzity, ktorá sa berie tak vážne a doslovne, že sa od nej napríklad odvíja veľká časť organizačnej štruktúry operačných armádnych zložiek USA, takže to čo si o tom myslíš ty je oproti tomuto zdroju tak trochu irelevantné.

"Inak povedané, ak navrhujete niečo, kde musíte podrobne uvažovať o viac ako siedmych triedach naraz, tak máte problém."

to teda máme, ale jedná sa skôr objektívny problém vychádzajúci zo zlého návrhu aplikácie, jednoducho riešiteľný korektným použitím OO a dôkladným dodržiavaním black-box paradigmy.

"Je to preto, lebo zachytiť celý ten problém tak, ako ho vidí váš rozum na 2D papieri, chce mimoriadnu zručnosť v kreslení."

čo je presne dôvod z ktorého raz jeden múdry človek myslel, až vymyslel UML a flow diagramy.

"Tento preklad z jednej polovice do druhej vôbec nie je jednoduchý a často sa nepodarí (vy pritom máte pocit, že tomu rozumiete, ale neviete to nakresliť ani opísať)."

Čo v praxi znamená, že tomu nerozumieme. Tento pocit je len ilúzia vznikajúca keď je človek príliš namyslený a ochotný preskakovať detaily implementácie a komunikácie medzi jednotlivými časťami aplikácie, ktoré sa v takýchto prípadoch stávajú veľmi dôležitými. Pokiaľ má programátor tento pocit, a neuvedomí si že to znamená že niečo (pravdepodobne uvažovanie o probléme) robí zle, tak je to zlý programátor. Pokiaľ to nevyrieši predtým ako začne programovať, veľmi skoro sa zakódi do slepej uličky, alebo začne tvoriť program ktorý je štruktúrou špagetový. Skrátka začať programovať z tejto pozície je asi druhý najhorší možný východiskový bod.

"Ak má váš rozum za úlohu pojať jeden objekt, tak má na to dostatočnú kapacitu, aby ho pojal dobre."

nie nutne, na to aby to platilo potrebuje mať človek dobre rozvrhnuté kompetencie jednotlivých objektov. Mnohokrát som sa stretol s objektami pri ktorých bol problém udržať si v hlave polovicu z nich, ale pôvodný programátor mal pocit že "všetko je v poriadku, lebo veď kompetencie jednotlivých objektov má jasne definované.", čo bola síce pravda, ale buď boli príliš široké, a previazanosť funkcionality vrámci objektu a týchto kompetencií stále príliš komplikovaná, alebo naopak, príliš úzke, kedy síce pochopiť jeden objekt nebol problém, lebo boli maličké, ale na druhú stranu na pochopenie samotného procesu musel človek držať v hlave naraz desať či 15 takýchto maličkých objektov a vzťahov medzi nimi, čo je zas ten istý problém, len prichádzajúci z inej strany.

" Dobrá trieda je konzistentná, má len jednu zodpovednosť, robí práve to, čo má a nič viac."

a ten problém vzniká práve z toho že je problematické definovať samotný výraz "jedna zodpovednosť". Ak máte tento pojem definovaný zle, tak vám "program plný takýchto tried" nepomôže o nič viac ako špagetkód a migréna z neho bude rovnako zlá.

"Opakom takého prístupu sú triedy bez jasných hraníc (majú napríklad zverejnené premenné na popis vnútorného stavu)"

každá premenná ktorú objekt poskytuje vonkajšiemu svetu nejakým spôsobom popisuje vnútorný stav objektu, dôležité je, či je konkrétne táto časť vnútorného stavu potrebná aj pre zvyšok kódu alebo nie, to je to čo odlišuje dobrú a užitočnú property od tej zbytočnej.

"Globálnou premennou je premenná jednej triedy, ktorá môže byť nastavovaná skupinou triedy (najhoršia možnosť je ktoroukoľvek triedou v aplikácii) alebo je lokálna premenná nejakej triedy, ktorá ale má niekoľko zodpovedností a skryté pod-časti triedy komunikujú cez jednu takúto premennú."

wrong. väčšina verejných properties môže byť nastavovaná odkiaľkoľvek v aplikácií, ale to z nich nerobí globálne premenné. Globálna premenná je premenná definovaná v globálnom scope/namespace, čiže na najvyššej možnej úrovni, nepatrí žiadnemu objektu, ale aplikácií samotnej. Lokálna premenná nejakej triedy, bez ohľadu na to koľko má zodpovedností, je lokálnou premennou. Použitie lokálnej premennej vrámci triedy na komunikáciu medzi jednotlivými časťami triedy je normálna vec. Jediné čo v tejto vete dáva zmysel a je naozaj zlé je, keď má jedna premenná niekoľko zodpovedností, tzn. význam informácie v nej je nekonzistentný (podľa toho aká procedúra zbehla posledná mi napr. buď drží info o počte klientov pripojených na server, alebo o počte úspešných požiadaviek ktoré prebehli od posledného cyklu).

"Prečo je to také nebezpečné? Ak trieda, ktorú píšete, číta globálnu premennú a podľa toho sa nejako správa, tak pri jej čítaní musíte uvažovať o všetkých triedach (a ich správaní), ktoré ju nastavujú."

zasa, na základe tvojej vlastnej (nesprávnej) definície "globálnej" premennej táto veta nedáva zmysel. Samozrejme že sa trieda bude správať podľa toho ako jej ktorýkoľvek kus kódu nastavil verejné properties, to je pointa verejných properties, umožniť riadenie správania triedy ktorémukoľvek kusu kódu. Ak však kvôli tomu musí programátor uvažovať o všetkých triedach ktoré s danou property pracujú, naozaj niečo spravil zle, a pravdepodobne nemá toľko inštancií danej triedy, koľko by mať mal, alebo s ňou nepracuje takým spôsobom ako by mal.

"a ani si neuvedomíte a pristihnete sa pri tom, že pri písaní jednej triedy musíte uvažovať o ďalších troch."

definuj "uvažovať". v mojej definícií daného slova je takýto prípad úplne štandardný a v poriadku, v dnešnom objektovom programovaní je úplne bežné že v jednej procedúre pracuješ s troma inými objektami, a že jeden objekt obsahuje aj desať premenných ktoré sú inštanciami rôznych objektov, na tom nie je nič zlé.

...naozaj si programátor? Z tohto článku to tak vôbec nevyzerá a v tom prípade neviem prečo píšeš o programovaní. A ak si, tak sa prestaň snažiť o populárnonáučné a verejnosti zrozumiteľné texty, toto je zajtra.sk, sem verejnosť nechodí, pokiaľ viem tak by tu mala byť pomerne úzka skupina ktorá si môže vrámci slovenska dovoliť nazvať sa profíkmi, tak to skús brať pri písaní ďalších článkov do úvahy, lebo keď ti viem článok takto zdrbať ja, osoba ktorá rozhodne nie je profíkom (aj keď ani amatérom), tak to o danom článku príliš lichotivo nehovorí...
0 0 Miroslav Martinovič 2012-08-22 03:00:37
@Tomáš Stankovič @viťo presne tak, "aspoň sčasti", a to je práve problém. pokiaľ viem tak jednou z hlavných poínt CSS3 okrem rozšírenia funkcionality malo byť zjednotenie syntaxe rôznych "pokročilejších" efektov, ktoré si každý prehliadač vymyslel po svojom. Kým nebudú všetky prehliadače podporovať CSS3 PLNE, bez výnimiek a bez odlišností, tak tento účel skrátka neplatím zase treba produkovať len kód ktorý má mnoho častí viacnásobne v rôznej syntaxi pre rôzne prehliadače, a to je presne to o čom hovorím.
K článku QtCreator - IDE
3 0 Miroslav Martinovič 2012-08-21 23:38:09
hmmm... len som preletel screenshoty, a... nechalo ma to úplne chladným, napriek tomu že IDEčká rád testujem a skúšam, rovnako ako nové jazyky/technológie. vieš prečo? pretože netuším čo je QT/qml, čiže netuším pre akú technológiu toto IDE je, čiže netuším či ma zaujíma daná technológia, čiže ma nezaujíma dané IDE, aj keď vyzerá zaujímavo... okrem toho, takéto... "tutorialy" na najzákladnejšie funkcie nejakého programu mi vždy prišli divné, ľudia v nich opisujú funkcie ktoré spadajú do kategórie "pozriem a vidím", alebo prinajhoršom "párkrát kliknem a vidím", skrátka industry-standard veci, miesto toho aby sa zamerali na odlišnosti a na to čo má dané IDE originálne.

čiže preto je podľa mňa toto slabý "článok", aj keď spadá do kategórie článkov ktoré majú potenciál byť dobré a zaujímavé a rozširovať ľuďom obzory. každopádne naozaj by som nezačínal IDEčkom, alebo keď už hej, tak by som aspoň v úvodnom odstavci v skratke odprezentoval/vysvetlil technológie pre ktoré je určené. to máš ako prísť za laikom s brašňou plnou nástrojov, po jednom ich vyťahovať, a vysvetľovať (primitívny príklad, ale princíp rovnaký) "toto je kladivo, s ním sa zatĺkajú klince. toto je šroubovák, s ním sa zakrúcajú šrouby". Big picture proste MUSÍ byť prvý, ak chceš zaujať aj laikov, čiže v našom príklade by bolo ideálne začať vetou "Chceš si postaviť vlastný dom v americkom štýle, čiže celodrevený? Je to omnoho rýchlejšie ako murovaný, lacnejšie a jednoduchšie, aj keď zas nemá takú trvanlivosť a odolnosť. Každopádne ak by ti takýto dom vyhovoval, budeš potrebovať takúto brašňu s nástrojmi, kde máš kladivo s ktorým budeš zatĺkať klince v prípadoch takých a takých, šroubovák ktorý budeš potrebovať pre také a také čiastkové úlohy..." atď.
0 0 Miroslav Martinovič 2012-05-31 13:57:13
skvelá vec, to css3. začnem jeho featury používať akonáhle ho prehliadače budú normálne podporovať a nebude potrebné sa s prepáčením trtkať s -moz a -webkit hackmi.
0 0 Miroslav Martinovič 2012-05-31 13:42:59
aha, tak to je pravda, v tom configu si custom funkciu napísať nemôžeš, a teraz som zasa nešiel do hĺbky ja, ale som si veľmi istý že si môžeš subclassnúť objekt validátora a doplniť si doň funkcie na ktoré sa potom vo validation configu odkážeš tak ako na ktorékoľvek iné vstavané
0 0 Miroslav Martinovič 2012-05-29 21:09:34
@Milan Vodička - validačné pravidlo si nemusíš napísať priamo v controlleri, pravdupovediac CI som sa začal učiť priamo prácou na jednej appke v ňom písanej, a to že existuje možnosť zapisovať validačné pravidlá priamo v controlleri pred samotným volaním na isValid bola vec ktorú som sa prekvapene dozvedel po troch mesiacoch čo som s ním robil. vygoogli si niečo o config/form_validation.php súbore ;)

a áno, ako som už povedal v predošlom komente, ostatné veci mi prídu ako malichernosti. to CSRF je len kvázyproblém, nepripadá mi to ako nič na čo by bolo potrebné aby mal framework vstavanú funkcionalitu, pretože je to zaprvé pomerne zriedkavo používaná vec a zadruhé ako som už povedal veľmi jednoducho ošetriteľná s nástrojmi ktoré máš. o nejakom duplikovaní kódu nemá význam hovoriť, to nastáva len keď si dodžubeš štruktúru aplikácie.

na článok to kľudne môže byť, nejakú tú informačnú hodnotu to má a mnohým ľuďom to môže byť užitočné, len som povedal že pre mňa subjektívne to nie je ani užitočné, ani zaujímavé čítanie, ani nič s čím by som extrémne súhlasil
0 0 Miroslav Martinovič 2012-05-29 21:01:03
všeobecný, ešte stále platiaci princíp v informatike je, že najpomalšie operácie sú diskové I/O, čiže ukladanie súborov na disk alebo ich načítanie z neho. pričom pri relatívne malých súboroch (povedzme menej ako 100 mega) je najpomalšou časťou celej operácie nájdenie fyzického umiestnenia súboru na disku a jeho otvorenie, či už na čítanie alebo zápis. samotné čítanie a zápis už je rýchlejšie. čiže teoreticky je rýchlejšie mať jeden veľký súbor, čím sa počet otváracích operácií zredukuje na jednu. includy sú teda, prinajmenšom v teórií, pomalšie. v praxi je to však takmer jedno, musel by si mať tých includov niekoľko stoviek, aby bol rozdiel viditeľný a dôležitý.

@Milan Dvorský - tvoja odpoveď je podľa mňa offtopic, rozdiel medzi include a require je len v tom že pokiaľ require súbor nenájde, tak je z toho error ktorý zastaví vykonávanie kódu. include svoj fail ignoruje a ide ďalej. a zasa ich ekvivalentné _once varianty sa ignorujú pokiaľ už daný súbor includnutý/requirenutý bol. rozdiel v rýchlosti jednotlivých týchto príkazov by teda mal byť minimálny (nepozeral som link), a aj keby nie, tak neodpovedáš na otázku ;)
0 0 Miroslav Martinovič 2012-03-27 11:28:26
hmm, okej, prečítané, a... neviem, prídu mi tie sťažnosti trochu zvláštne, ja mám teda voči CI veľa výhrad, ale to čo si v blogu popísal ty sú pre mňa viacmenej nepodstatnosti... to že je všetko v $this, to beriem, ale že je validácia formu v controlleri? a kam inam by si ju chcel dať? pokiaľ viem tak controller má slúžiť ako mediátor dát medzi modelom a view... ak by sa v controlleri definovali validačné pravidlá formu, potom by som tvoju výhradu chápal, ale jednoduché volanie $form->validate, či $form->isValid, či ako to je? čo iné by si tam chcel dať/ako inak to spraviť? veď v každom prípade potrebuješ vetvu na úspešné a neúspešné odoslanie formu, a inde ako v controlleri to nemáš riešiť kde.

...a čo sa týka toho hlasovacieho kvázy CSRF, k tomu už som sa ti vyjadril v komente priamo na blogu, mne to znie ako pomerne jednoduchá záležitosť (ale možno by sa moje riešenie ukázalo ako nesprávne/nefungujúce, netvrdím že som si tým 100%ne neomylne istý)
0 0 Miroslav Martinovič 2012-03-27 11:12:53
...a čo diakritika? videl som nejaký rad kláves nad bežnými písmenami, zvykne byť na anglických/medzinárodných klávesniciach označený číslami, ale kupodivu obsahuje diakritiku. v komentoch je jej absencia ešte akceptovateľná, aj keď nepríjemná, ale v blogu? ešte k tomu v takom ktorý chce ašpirovať na to byť článkom? (samotný blog som ešte neprečítal, toto mi padlo do očí ako prvé)
0 0 Miroslav Martinovič 2011-10-27 15:55:42
hmm, priznávam sa že článok som nečítal podrobne a celý, lebo keď som si všimol o čom je (a ten graf), tak som ho len tak preletel, pretože podľa mňa je založený na zlom predpoklade - že množina vždy a často používaných funkcií je pre všetkých používateľov rovnaká, čo je nezmysel. asi pred rokom som presne o tomto probléme čítal článok na blogu Oldnewthing Raymonda Chana, ktorý pracuje v Microsofte, a ktorý vysvetľoval, že VŠETKY funkcie officu sú využívané často, pretože aj keď jednotlivý užívateľ používa často len 20% funkcií alebo menej, a o niektorých ani nevie, každý užívateľ pracuje v inej oblasti, takže iné funkcie sú pre neho kľúčové.
napr. spisovateľ nebude vo worde používať hromadnú korešpondenciu, čo zas pre právnika môže byť jedna z dôležitých funkcií, atď...
Zajtra.sk > Ľudia > Miroslav Martinovič