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 - eMko

Stran: 1 ... 19 20 [21] 22 23 ... 31
301
Vývoj / Re:Objasnění volání uvnitř class
« kdy: 16. 10. 2013, 10:50:54 »
Ryder Díky. Až se zas budu snažit psát v PHP, čemuž se vyhýbám téměř jako čert kříži, budu na to myslet :-) .

302
Vývoj / Re:Objasnění volání uvnitř class
« kdy: 16. 10. 2013, 10:49:56 »
Kolemjdoucí Mám zcela opačný názor. Takovéto chyby vznikají především díky tomu, že se lidi učí sami "jen praktické věci" a na formální věci se vyprdnou, bo "to je teorie, tak to přece není a zajímá mě praxe". To vede k tomu, že nechápou ani základní návrhové vzory, stejně jako jak v objektech zachytit jaké vazby.

Každý jazyk/prostředí je pouze implementací formální teorie. Např. to, že zaslání zprávy = volání metody. Nedávno kolega nevěřícně koukal na třídu Messenger v MVVM Light frameworku, která je zobecněním zasílání zpráv objektům* a došlo mu to až ve chvíli, kdy jsem mu sdělil tuto poučku.

Ne vždy je to samozřejmě chyba pouze těch konkrétních lidí - mnoho knih nebo učebních materiálů se věnuje právě jen implementačním detailům a myšlenku, která je za tím ("The Big Picture"), nechává bez povšimnutí. Nicméně pokud se chceš bavit na toto téma, založ na to prosím separátní thread. Sem to IMHO nepatří a pokud vím, tak toto fórum nemá moderátora a tudíž to nikdo jiný neudělá.

* Jde tam o to, že na mnoho objektů, na kterých potřebuješ volat metody, nemáš referenci. Občas znáš typ, někdy ani to ne.


303
Vývoj / Re:Objasnění volání uvnitř class
« kdy: 15. 10. 2013, 19:24:36 »
Sten a Jehovista to napsali správně.


class Bar {
    public function barMethod() {
        return ...;
    }
}

class Foo {
    /**
     * $bar je typu bar
     * @var Bar
     */
    var $bar;

    public function __construct() {
        $this->$bar = new Bar(); //někde se instance třídy Bar musí dostat do $bar. Například v konstruktoru, ale je to jedno
    }

    function callBar(){
        //volání metody barMethod na objektu typu Bar, který je v proměnné $bar
        $this->$bar->barMethod();
    }
}


Rozhodně to není volání potomka - potomek je pojem týkající se dědičnosti.


class Cat extends Animal {


Kočka je zvíře - má stejné vlastnosti a "rozumí stejným zprávám" (v ne-akademickém hantecu čti "má stejné metody") jako Zvíře, ale může přidávat vlastní. Kočka je v tomto případě potomek, zvíře předek. Jedná se o modelování vazby "potomek konkretizuje předka" nebo "potomek je předek".

Naproti tomu první příklad je tzv. kompozice. Tedy modelování vazby "Bar má Foo" nebo "Bar se zkládá z Foo".

Občas jsem zděšen, že si zde někdo takto zplete základní pojmy.

304
Vývoj / Re:Dělá tu někdo s Nette frameworkem?
« kdy: 15. 10. 2013, 12:59:09 »
Po nocích si teď čtu jeho dokumentaci a doufám, že se to bude s chápáním zlepšovat

Eh, nebude. Pokud budeš jen pasivně číst dokumentaci, tak nebude.

Samozřejmě je důležité pochopit myšlenku, která za tím frameworkem je (např. Nette je založeno na návrhovém vzoru MVP, který se mírně liší od jiných MVC frameworků a i implementace MVC vzoru je mezi frameworky jiná). Ale tam by pasivní čtení mělo skončit a měl bys začít s tím frameworkem pracovat. Vymysli si jednoduchou aplikačku - třeba správu kontaktů - je to úplně jedno - stejně nepůjde do produkce. Ale osaháš si framework a naučíš se na tom. A i když z toho pravděpodobně vznikne kýbl hnoje, vyplatí se ji si nechat - až budeš kódit něco produkčního, vzpomeneš si, že tady jsi to řešil a podíváš se do toho jak.

Tohle je IMHO jediný způsob, jak se naučit s nějakou netriviální knihovnou/frameworkem pracovat.

305
Vývoj / Re:Dělá tu někdo s Nette frameworkem?
« kdy: 15. 10. 2013, 09:35:45 »
Já jsem naposledy pracoval s verzí 1.1 a je možné, že se tyto věci radikálně změnily (komunita, dokumentace, podpora...), byť zběžný průzkum stránek a fóra svědčí spíš o opaku a 2.0 je "jen technicky" lepší. Učil jsem se hlavně z české dokumentace - nicméně MVC frameworky jsem znal některé už před tím (hlavně MS MVC na web, Swing a ten ze Smalltalku na desktop ...), není to až tak velký rozdíl. Moje rada je: postupuj podle dokumentace a ptej se na fóru - základní věci tam lidi dokázali poradit.

Jinak Nette alespoň tehdy nemělo rozumnou anglickou dokumentaci a anglické fórum bylo spíš mrtvé než živé - ačkoliv to není špatný framework, toto z něj dělá pouze česko-slovenskou lokální věc a tím pádem značně limituje uživatelskou komunitu. Chceš-li dobrou dokumentaci, velkou a živou komunitu, fungující tutorialy (na verzi 1.1 polovina z nich byla blbě) a podporu pro IDE (pro verzi 1.1 existoval plugin do NetBeans, ale přiznejme si, že nebyl nic moc a raději jsem pracoval bez něj; možná se něco změnilo?), asi se poohlédni jinde. Země původu nějakého Frameworku celkem nehraje roli - co hraje roli je velikost aktivní komunity a kvalita dokumentace. Zend, Symfony, CakePHP nebo Codeinteger jsou na tom v tomto ohledu lépe.

306
V Praze budou tyto hodnoty krapet vyšší.

Ale nesmíš zapomínat, že se asi těžko bude jednat o nástupní platy absolventů, ty budou mnohem mnohem níž. Stejně tak se mezi jednotlivými firmami platy liší a mnohdy i řádově - v Brně lidi, co dělali na vývoji ve finančnictví (HomeCredit), měli 3x vyšší plat, než lidi v běžném soukromém sektoru. A tito lidé budou ten průměrný plat uměle zvyšovat.

Při přípravě na pohovor se IMHO vyplatí se spíš řídit mediánem (polovina lidí má méně a polovina více) pro danou lokalitu, je-li zveřejněn, a potom připočíst svou cenu pro tu firmu. Pokud splňuješ opravdu všechny požadavky v nabízené pozici a umíš i něco navíc, co se té firmě může na dané pozici hodit (a máš zkušenost z komerční praxe), pak si klidně řekni o víc. Pokud máš mezery, nemáš praxi apod. tak střel raději méně, jinak riskuješ, že Tě nevezmou.

Pokud platí Tvoje věta "mam zkusenosti s programovanim asi 5 let, ale nikdy jsem ... nepracoval v teamu.", znamená to "něco umím, ale nemám praxi". Promiň, ale je to tak - práce v teamu není jen o programování, ale je nutno zvládat i interakci s kolegy, což je dost jiná disciplína. V takovém případě je argumentace celorepublikovým průměrem mimo a 32 000 mi připadá přestřelené i na Prahu. Obecně je pro firmy lepší vzít člověka, který není takový master, ale ví se o něm, že je dobrý týmový hráč, než naopak. Na druhou stranu pokud se jim osvědčíš, není důvod, aby Ti po nějakém čase nepřidali - v menší firmě se dá obvykle o mzdě celkem dobře jednat. A pokud ne, je to důvod se poohlédnout jinde - já jsem to cca 3 měsíce zpět udělal a nelituji.

307
Vývoj / Re:NetBeans bug
« kdy: 10. 10. 2013, 12:03:23 »
Co přesně nefunguje? Můžeš poslat link na bugreport?

Já jsem s rozběhnutím NetBeans na linuxu problém nikdy neměl. Osobně jsem narazil jen na 2 nepříjemnosti:

- Základní vzhled (= systémový) vypadal na Gnome šíleně, menu mělo zle zvětšené fonty a některé položky nebyly vidět. Přepnul jsem ho na Ocean nebo na Nimbus (až vyšla Java 7)

- Některé věci se nevykreslovaly správně. Vyřešeno tím, že jsem zrušil OpenJDK a nainstaloval Javu od Sunu (Oraclu)

308
Vývoj / Re:Mám se učit Python 2 nebo 3?
« kdy: 10. 10. 2013, 10:19:18 »
Krátce: Není.

Dlouze: Před pár lety, v dobách 3.0 vs 2.5, opravdu platilo, že 3 byla obecně pomalejší než 2, ale nijak zvlášť citelně. Nyní je důležité, že verze 3 se stále ještě vyvíjí, kdežto 2 už moc ne. Poslední major verze 2.7 je z roku tuším 2010, od té doby bylo několik minoritních releasů, ale bez velkých změn. V Python 3 je pár jazykových konstrukcí, které jsou jiné a pokud je použiješ stejně jako v 2, můžeš napsat ve výsledku pomalejší kód - např. map/zip vrací generátor, ne seznam a tím se u kratších kolekcí může projevit vyšší overhead (na druhou stranu můžeš pracovat s nekonečnými kolekcemi a nezapráskat paměť).

A i kdysi to zpomalení nebylo nijak citelné - chceš-li napsat větší aplikaci, která poběží rychle, sáhni po něčem jiném. Síla Pythonu je jinde.


309
Vývoj / Re:Mám se učit Python 2 nebo 3?
« kdy: 10. 10. 2013, 06:58:49 »
Pro začátečníky bych obecně doporučil Python 3 a knihu typu 'Head First Programming'.

Nicméně není vše tak jednoduché, jak se zdá. Python 3, ač jej mám raději, je prostě jiný a ne všichni autoři knihoven na něj přešli, což může být velký problém.
Dobrý seznam je tu https://python3wos.appspot.com/ . (Mám dojem, že původně se jmenovala "Wall of Shame", na "Wall of Superpower" to přešlo až od určitého počtu portovaných knihoven, ale můžu se mýlit.) Pokud chceš použít některé z těch knihoven, které Python 3 nepodporují (Django, WxPython...?), tak budeš muset zatím zůstat u dvojky. Jinak k tomu není důvod a je lepší se učit přímo Python 3. Budoucnost je tam.

Osobně bych ten rozdíl přirovnal k rozdílu Favorit (1993 - s motorem s jednobodovým vstřikováním) a Felicia (1998 1.3MPI). Filcka je hezčí auto, táhne líp, nehnije tolik, ovládací prvky jsou příjemnější a může mít pár vychytávek jako airbag a posilovač, které ale ve výsledku nehrají až tak extra velkou roli - posilovač trochu zpříjemní parkování a průser-vyhýbací manévry, airbag je (v tomto případě) na ozdobu pro dobrý pocit. Ale když se na to podíváš s odstupem, až tak velký rozdíl v nich není.

310
Vývoj / Re:Jazyk a framework pro stránky
« kdy: 07. 10. 2013, 21:25:10 »
Pro mne byla volba jednoducha, protoze jsem chtel napsat neco pro sebe a ne komercne. Takze MS .Net jsem zavrhl a PHP taky. Python se mi libil pro moznost mit i funkcni [exe] program na win/linux. Navic je pouzivan tusim v Blenderu, Gimpu atd. Umi export do .net a ten Google na nem jede i kdyz co je dulezite je [tusim] v C. Prave moznost napsat rychle aplikaci a pak doladit v pripade potreby vyssi rychlosti casti v C a v tomhle dobra spoluprace Python - C se mi libilo. Ale PHP, SQL, JS atd se stejne uzivi.
U Pythonu mi prijde, ze je kam rust, u PHP mi to tak neprijde.

Tvoje zpráva vyznívá velmi zvláštně a je napsána celkem nešťastně a hlavně velmi zmateně. Připomíná mi to spolužáka, který dorazil do školy na přednášku sjetej kokešem.

  • jsem chtel napsat neco pro sebe a ne komercne. Takze MS .Net jsem zavrhl
    I v .Netu se dá psát nekomerčně. Kompilátor je zcela zdarma, run-time knihovny také, Visual Studio Express edition (čti Crippled edition) je také zdarma; existuje SharpDevelop, který je celkem ucházející vývojové prostředí.
  • Python se mi libil pro moznost mit i funkcni [exe] program na win/linux
    .Net a Mono (multiplatformní, byť neúplná implementace .Netu) toto umí taky. S Monem můžeš mít spustitelný .exe soubor i na linuxu - on to totiž není "pravý" exe a dll, není to nativní kód - proto je to stejné pro všechny platformy.
    Pokud bychom zabrousili do Java světa, tak i tam existují nástroje, které zabalí javový .jar do .exe (osobně mám dobrou zkušenost s JSmooth a Launch4j) a přibalí k němu Java Runtime Evnironment, takže na cílovém počítači nemusí být Java předinstalovaná. To samé se dá udělat i pro většinu skriptovacích jazyků.
  • Navic je pouzivan tusim v Blenderu, Gimpu atd.
    Pokud nechceš psát pluginy pro tyto grafické aplikace, je to argument k ničemu. To je jako kdybych si jej vybral proto, že byl použit v Civilization IV (což mimochodem skutečně byl).
  • Umi export do .net
    WHAT THE F*CK?????? Implementace pythonu jménem Iron Python se kompiluje do MSIL a běží na .Netu, Jython zase do bytecodu JVM a běží na Javě. Ale jsou to trochu "second-class citizens" v tomto světě. Originální implementace je jen jedna. Při použití IPythonu nebo Jythonu můžeš narazit na celkem dost problémů s knihovnama.
  • a ten Google na nem jede
    To je pravda jen z části.
  • i kdyz co je dulezite je [tusim] v C
    CPython (to, co všichni známe pod názvem Python) je napsáno v C (až na části,  které jsou v Pythonu nebo TCL). Iron Python (ten co umí "export do .net") nikoliv. Jython také ne.

    Nechci Ti brát vítr z plachet, ale PHP je také napsáno v C. .Net bude buď C++ nebo C. Java to samé. Perl je také v C.
  • dobra spoluprace Python - C
    Ještě aby ne :-) . Ostatně Cčkové knihovny se dají natáhnout celkem slušně v .Netu (už jsem si z .Netu vyzkoušel co to je hrabat přímo na hardware ... nebylo to tak zlý), v Javě, PHP nebo Perlu taky. Někde je to trochu lepší, někde trochu horší. Ale hele, interpret JavaScriptu, který je součástí Firefoxu (nevím jak u ostatních - tam jsem to nezkoušel), má také celkem slušné rozhraní pro volání C knihoven.

311
Vývoj / Re:Jazyk a framework pro stránky
« kdy: 07. 10. 2013, 20:49:36 »
@Jack: OK, jsi-li na střední, pak chápu dotaz. Přestože některé střední školy jsou OK, většinou je úroveň IT vzdělání dost nízká a nelze než doporučit jít na IT vysokou. Já jsem také programoval již během střední (byť v té době letěla Delphi 7 a Visual Basic 6) a pracovat jsem začal během druháku na výšce - půl roku PHP, pak .Net (+ občas PHP - Nette, Drupal, Slim framework (REST služby)). Formální vzdělání a totální peklo, čímž IT vysoká škola je, doceňuji až časem. Ale rozhodně doporučuji na školu jít.

V takovém případě je lepší volba onen Python - ten jazyk není navržen úplně zle a dá se v něm psát i desktop aplikace. (To se dá v PHP samozřejmě taky, ale je to jako hrát na kytaru půleurovkou místo trsátka - tj. ve stavu těžké nestřízlivosti dobrá sranda, ale praktické využití 0. :) ) Hlavní výhodou Pythonu oproti PHP je to, že PHP je jazyk a prostředí původně určené na blití textů na standardní výstup (CGI skripty), což prostředím samotným a kulturou uživatelské komunity stále prosakuje. Chceš-li dělat weby, není to špatně. Python je od počáku navržen jako skriptovací jazyk - univerzální jazyk na malé aplikace. Ano, má své mouchy a má jich hodně (nejvíc asi Global Interpreter Lock, na což narazíš pokud se rozhodneš psát netriviální GUI aplikaci - pokud chceš, aby něco běželo paralelně, musíš to pustit jako samostatný proces, nestačí vlákno - ale existuje knihovna, která to řeší za Tebe, jen je třeba dbát určitých omezení), ale je to celkově univerzálnější a pro Tebe jako programátora myslím si výhodnější platforma. Ostatně na MIT přešli při výuce základů programování z Scheme na Python.

312
Vývoj / Re:Webové stránky
« kdy: 07. 10. 2013, 09:56:47 »
Jako zivnostnik a brzy snad mala firma muzu rict, ze to takhle zdaleka neni vzdy. IMHO kvalita produktu nezavisi temer vubec na zvolenem jazyce nebo technologii.

Netvrdím, že je (a doufám, že jsem se Tě nedotkl :-) ). Drupal zcela jistě je kvalitní produkt (byť ke stylu, jakým je napsána a zdokumentována verze 5 a 6 mám výhrady; ale přiznávám, že u novějších verzí jsem si na jeho střeva nesáhl, možná, že to už neplatí), podobně Wikipedia ... btw stále platí, že Facebook má UI napsané v kombinaci PHP a C?

Jakkoliv je PHP prasácky navržený jazyk (dá-li se o smysluplném návrhu vůbec hovořit), jedná se o technologii, kterou je:
  • snadné se z hlediska programátora naučit (a sehnat dobrého PHP programátora je pdobné jako sehnat dobrého .Neťáka - poměr idiot:použitelný je podobný, jen PHPčkaři jsou zpravidla levnější), oficiální dokumentace není špatná, informačních zdrojů je také dost
  • z hlediska architekta existuje celkem dost použitelných frameworků a "business ready" řešení, které jsou dobře rozšiřitelné (např. Drupal - sám jsem si zkusil do něj psát pluginy a je to celkem pohoda; nebo Slim framework (http://www.slimframework.com/))
  • z hlediska product ownera je relativně snadné najít relativně levnou dobrou pracovní sílu a administrátory
  • z hlediska administrátora je poměrně jednoduché rozjet hostingový server a udržet jej při životě

Pokud bych měl, stejně jako Ty, zakládat firmu, asi bych o tomto také uvažoval (na malé aplikace), byť mám k PHP silnou averzi. Každopádně už několikrát jsem narazil na to, že PHP bylo nepřekonatelně pomalé a paměťově náročné a to i s využitím Zend serveru. Víkend strávený s profilerem, zkoušení různých knihoven (a nakonec napsání některých vlastních) a ladění s prominutím každé kraviny (a přepisování části věcí do C), aby ta aplikace byla rozumně použitelná, si velice živě pamatuji.

Nicméně byť je interpret PHPčka nepřekonatelně pomalý a žravý, jeho výkon je na menší aplikace více než dostačující. MySQL také nedává moc možností (např. ve srovnání s MSSQL), na druhou stranu je pro většinu věcí také postačující.

313
Vývoj / Re:Webové stránky
« kdy: 07. 10. 2013, 07:45:31 »
@Jack020: To je otázka jak cyp.

Citace
Back in 1995, we knew something that I don't think our competitors understood, and few understand even now: when you're writing software that only has to run on your own servers, you can use any language you want.
Paul Graham, Beating the Averages - http://www.paulgraham.com/avg.html

Jestli máš vlasntí server, použij si co chceš - mně se hodně líbí Tapestry (http://tapestry.apache.org/), Play (http://www.playframework.com/) nebo MS MVC (http://www.asp.net/mvc). U všech třech mám za sebou platformu, kde není nouze o knihovny téměř na všechno (u Javy je situace trochu lepší s knihovnama; u .Netu je zase příjemnější "základní jazyk" - C#)  a mohu využít funkcionální/hybridní jazyky (Clojure, Scala, F#). V práci používám Microsoftí věci (WCF a MS MVC).

Jestli se Ti dobře píše ve Smalltalku nebo přesněji "zvykneš-li si na Smalltalk a jisté odlišnosti, které má Seaside", a máš vlastní server, na kterém to můžeš hostovat, není důvod to nevyužít, pokud Ti to přinese konkurenční výhodu. Dokonce i Windows Azure nabízí linuxové servery*, takže se nemusíš vázat jen na sdílené hostingy a jejich klasiku - PHP verze 4 a obstarožní MySQL. Stejně tak jako Azure není jediný cloud hosting, kde můžeš dostat k dispozici vlastní server, takže se zcela jistě bude dát sehnat levnější varianta.

A jestli tím "k nám dorazí" myslíš "kdy malé firmy přejdou z PHP", tak to bude trvat. K volbě technologie, resp. k přechodu na jinou musí být celkem silný důvod. Zatímco "hobby" programátor nebo freelancer si zpravidla vybere to, v čem napíše program co nejrychleji (klidně Smalltalk/Common Lisp/Python ... RoR neznám, Ruby šel mimo mě), menší firma si zpravidla vybere to, kde může najít nejlevnější hosting a nejvíc nejlevnějších programátorů a administrátorů (= PHP a MySQL na linuxovém serveru, zažil jsem to, že většina programátorů byly maturanti z gymplu, co se nedostali na vysokou a PHP se naučili z 10 stránkového tutorialu na netu).

Velký zaměstnavatel má motivy jiné - "talent pool" (= když někoho vyhodí, může si vybírat z dostatečného množství nových kandidátů?), "cover your ass" (= nobody was ever fired for choosing WebForms/Spring/JSF), "knowledge pool" (= kolik firem podporuje danou technologii; stojí za danou technologií velká stabilní firma?), "stability" (= budou velké změny? Hlavně abychom programátory nemuseli učit něco nového, to jsou náklady navíc, hlavně abychom si nemsueli snížit vlastní plat (€3000/měsíc)), "backward compatibility" (= mám 10 let starý projekt, zprasený tak, že se v něm nikdo nevyzná, poběží aniž bych do něj musel zasahovat?). Ve větších firmách není problém i v dnešní době vidět věci jako je ColdFusion, Javová webová aplikačka z doby před JSF (v novějších částech je použito JSP, ve starších jsou jenom servlety) nebo velký tlustý klient ve Visual Basicu 3 (16bitová aplikačka; na 64bitových systémech neběží, proto jsou u zákazníků nasazeny Windows Server 2003, na kterých je to nainstalované a přes Terminal Services si to pouští ženské v kancelářích).

Dokud se u firem nezmění tyto výchozí podmínky, "tak k nám nic nového nedojde". Rozhodně ne pro to, že porgramový kód je přehlednější. Upřímně, já osobně na uživatelské rozhraní/weby/služby preferuji jazyk, ve kterém sice není tak přehledný kód, ale má dobrou podporu ze strany vývojových prostředí (Java, C#). Na samotnou funkcionalitu pak mám nejraději co nejjednodušší a nejpřehlednější jazyk (Clojure, Lisp).



* viděl jsem tam Ubuntu Server, Open SUSE a SUSE Enterprise, Oracle Linux a jako preview (= zatím za sníženou cenu, zákaz použití pro produkci) několik dalších věcí od Oraclu, např. systém s předinstalovaným WebLogic; osobně jsem z těchto zkoušel jen Ubuntu server z příkazové řádky - ruční instalaci Oracle Javy, Jetty a Apache (z balíčků) s reverse proxy na aplikačku na Jetty - bez problémů. Je to levnější než Windows Server, který na tu diplomku stejně nepotřebuju.

314
Studium a uplatnění / Re:Bc. studium FIT VUT vs FI MUNI
« kdy: 19. 09. 2013, 14:34:47 »
S MUNI neporadím, byl jsem tam 1 semestr. Ale prošel jsem bakaláře na FITu (srovnávám s VŠB, kde jsem nyní na navazujícím) a musím říct, že FIT není moudrá volba. Přístup akademiků ke studentům a výuce je obecně tristní a z předmětů, které byly za nás jen pro zajímavost, se stává čím dál víc peklo. Napsal jsem tady o škole věcí dosti - pokud Tě zajímají, můžeš si je najít (případně pokud, jak píšeš, jsi již spoustu věcí četl, tak toto určitě bylo mezi nimi).

315
Vývoj / Re:Jak se naučit Java EE?
« kdy: 18. 09. 2013, 17:14:27 »
kazdy doporucuje HTML+CSS.

Z toho, co psal, jsem měl pocit, že chce dělat webovky - všimni si, že zmínil samé webové frameworky, ale např. EJB nechal bez povšimnutí ;-) .

Stran: 1 ... 19 20 [21] 22 23 ... 31