Identita programátora

Weby a PHP začátky

S weby jsem začal experimentovat již na vyšší odborné škole, nějakých 15 let zpátky. Tehdy to byly sice jen takové testování, jak to funguje a díky tomu, že vývoj vysokorychlostního internetu byl ještě v plenách, tak s připojením na internet přes modem byly možnosti z části omezené. Ze začátku jsem testoval různé technologie, PHP, .NET, JAVA a k tomu přidružené technologie, jako javascript, css, atd. Zjišťoval jsem, co jaká technologie nabízí a včem, řekněme, budu dále pracovat a rozvíjet své zkušenosti.

Již v té době, řekněme po 2 letech zkoušení, jsem si našel první zakázku – vytvoření objednávkového systému pro nákup CD disků pro jednoho vokalistu, který si svá CD sám nahrával a sám vydával. Zakázka celkem za 3000,- (pro studenta dost peněz pro začátek) obsahovala nákup na internetových stránkách s možností platby bankovní kartou a jednoduchou administrací. Byla napsána v PHP za použití jednoduchého javascriptu a dnes již zastaralého vkládání designových značek přímo do kodu HTML (tedy bez CSS). Zakázka byla pro mě odrazovým můstkem v PHP a od té doby pracuji výhradně v PHP.

Nette

S Nette jsem přišel do styku nedávno, ccal před 4-mi lety, kdy se rozhodovalo, na čem se bude stavět nové jádro eshopu pro firmu, pro kterou pracuji. Zajistil jsem si školení přímo u profesora Nette Davida Grudla, kde jsem teprve poznal kouzlo Nette frameworku a od té doby experimentuji s jeho nasazením všude, kde je to jen možné. Ještě nyní se mi někdy zdá, že je to až moc “magic” a některé metody úplně nechápu, ale je to přirozený vývoj a mám takový pocit, že i pan Profesor Grudl někdy tápe a zjištuje, jak daná věc vlastně funguje. 🙂

Mým prvním výsledkem Nette eshopu je http://www.vyfuky-pema.cz . Zakázka, která byla mimo standardní pracovní proces, se vlivem mnoha změn trošičku protahovala a nakonec jsem práci odevzdal zdarma, neboť mým hlavním cílem bylo naučit se fungovat a zvládat první kručky k dokonalému vývoji webů v Nette frameworku.

S Nette jsem pokračoval také v mateřské firmě, kde je na něm postaveno celé nové jádro e-shopů. Byl jsem u zrodu tohoto jádra, pomáhal jsem vymýšlet moduly a vůbec funkčnost celého systému. Celý systém má pak na starosti kolega, ale často se k němu vracím a dodělávám k němu nové potřebné moduly.

Můj nový počin v eshopech na Nette je letos vytvořený soukromý projekt https://www.domaci-nakupy.cz.

Mysql

Kde by byl vývoj PHP, kdyby nebylo pořádného a rychlého databázového enginu, jako je MySQL. Jasně, je to v celku jednoduchá databáze, oproti například Oracle, či PostgreSql, ale pro weby absolutně vyhovující. Tak, jako jsem se zabýval PHP, tak jsem se i zabýval MySQL. Jsem zručný ve vytváření i složitých dotazů s výbornou indexací a tedy i rychlostí. Často důmám nad dotazama a zjištuji, jakým způsobem by šlo dotaz předělat tak, aby byl ještě o malinko rychlejší. Obecně totiž zjišťuji, že MySQL má největší podíl na rychlosti jak stránek, tak hlavně i serveru jako takového. Čím lépe jsou dotazy vytvořeny, tím rychleji fungují stránky (i když jsou používány různé keše, tak databázové dotazy musí běhat rychle) a server obecně dokáže přijímat více požadavků.

Ze začátku jsem pracoval pouze s enginem MyISAM, nyní již vše řeším s INNODB a plně využívám jeho potenciálu na poli cizích klíčů a zamykání řádků namísto celé tabulky. Nyní, když od verze 5.6 je možné v INNODB vytvořit fulltext (který jsem předtím řešil krkolomně přes jinou tabulku v MyISAM), je možné již zcela zavrhnout zastaralý engine MyISAM.

Apache

Webový server Apache je samozřejmou součásti mého webového vývoje. Snad jednou jsem zkoušel i IIS (informační internetovou službu systémeu Windows), bleskurychle jsem přešel zpět na Apache, který je, dle mého názoru, o mnoho jednodužší a navíc jej využívá většina serverů na světě.

Zkušenosti s rozběháním a nastavením běhu serveru mám dlouholeté, i když mě vlastně stačí znát jen pár konfiguračních direktiv, které nutně potřebuji pro nastavení funkčnosti Apache a PHP. Další moduly Apache, pokud jsou potřeba pro funkčnost webu, vetšinou řeším nakouknutím do dokumentace a testováním uvedených příkladů.

Důležitou součástí webového serveru je možnost přesměrování webové stránky na jinou, kterou Apache řeší modulem mod_rewrite, který často využívám pro přesměrování například pěkných URL adres a nebo pro vytváření obrázkové keše.

Javascript

Tak jako jsem spjatý s PHP na straně serveru, tak stejně využívám i možnosti JavaScriptu na straně klienta. Vlastně celou svou administraci pro https://www.nakupy-detem.cz se snažím vytvářet tak, aby byla co nejkomfortnější pro administrátory a tím pádem se bez Javascriptu, a hlavně JQUERY knihovny, neobejdu. Často využívám knihovny třetích stran, jako fancybox (pro vyskakovací okna), nebo Caroufredsel (pro pěkné posuvníky obsahu), tak i základní knihovnu pro JQUERY – UI pro lepší vzhled a funkčnost webu.

A co AJAX (nebo raději AJAJ?). Ano, i toto je mým denním chlebem. Snad vše, co lze, provádím nyní AJAXem a to jak v administraci, tak i na frontové části webů. Vlastně Nette s AJAXem pracuje velmi dobře, proto jej mám rád a často jej využívám.

Linux a server obecně

V Ostravské kanceláři mám na starosti chod všech serverů, i když jsou menežované, tak je nutné zajistit a hlídat jejich chod a v případě přetěžování z jakéhokoliv důvodu, najít příčinu a snažit se o co nejrychlejší odstranění příčiny pomalosti serveru. K tomu mi pomáhá znalost základních příkazů Linuxu a často pracuji v SSH přimo na serverech. Někdy je nutné přenést weby ze serveru na server, což je pro mě již rutinní záležitost (včetně DNS záznamů a přenos případných emailů). Dále, zakládání FTP účtů, vytváření databází v MySQL, či jiné přímo serverově věci mi nejsou v žádmém případě cizí.

Mimo to mám vlastní server, který je menežovaný a umístěn u firmy VSHOSTING. I když veškeré služby spojene s instalací serveru, či softwaru na něj, provádí zmíněný VSHOSTING a jeho administrátoři, i já často chodím na server přes SSH a pracuji přímo tam.

S tímto souvisí i správa certifikátu. Ve firmě máme server, který není menežovaný a všechno si musíme obstarávat sami, včetně přidávání certifikátu. Proto mám i s tímto zkušenosti. Navíc si spravuji i vlastní certifikáty pro mé soukromé eshopy, takže nákup, vytvoření a použití certifikátů pro zapnutí HTTPS na webu je maličkostí.

Git (svn)

Bez verzovacího systému se nedá vyvíjet, to je přece jasné. SVN jsem používal dříve v začátcích, avšak jeho nutnost být neustále napojen na Internet, když chci něco commitnout, mě přinutila začít používat GIT. A dobře jsem udělal, rychlý, bezpečný, perfektní. Díky tomu se vývoj  mnohonásobně zpřesnil a zrychlil, jelikož nemusíme řešit věci jako “Kdo to smazal z toho kodu?”. Já jsem si na něj navykl tak, že když si zakládám nějakou složku, kde si budu jen psát třeba jen nějaké zápisky z výletu, tak ihned ji dávám do GITu.

Pro své projekty navíc používám službu www.bitbucket.com – takže vše mám ihned z jakéhokoliv místa na planetě k dispozici.

Jen poznámka pro mne: trošku mě mrzí, že jsem si ještě nepřivykl používat funkci Stash – možná  někdy konečně na to najdu důvod …..

CSS

Pro své projekty si sám vytvářím HTML šablony, proto vím a umím používat CSS, také se snažím nalézat rozdíly v prohlížečích ( i když např. IE verze nižší než 9 statečně ignoruji) a přizpůsobit tak web všem. Rovněž  mám nemalé zkušenosti s vytvářením responzivních webů.

CSS jako takové se mi jeví nějak moc neohrabané, proto raději používám jazyk SASS (http://sass-lang.com/) což je software, napsaný v RUBY, který zavádí lepší organizaci a psaní souborů CSS a zpříjemňuje tak práci se stylama.

Ruckus

Tak jako pro zdrojové soubory existuje GIT (nebo SVN), pro databáze existuje Ruckus. Jde o verzovací nástroj pro databázi, napsaný v PHP, a používá se hlavně pro práci v kolektivu a hlavně pro Deploy projektů. I když jej pro své soukromé projekty nepoužívám (na projektech pracuji pouze já, takže prozatím nemám důvod jej použít), tak ve firemním prostředí je shledávám velmi účinným řešením databázových verzí projektu. Jelikož jsou soubory pro vytvoření, změny databáze uložené v souborech, tak spolu s využitím verzovacího nástroje (GIT či SVN) je pak zaručena určitá bezpečnost a rychlost vývoje projektu v týmu v oblasti změn v databázi.

Testování softwaru

Testování jsem pro sebe zavedl celkem nedávno. Již kdysi jsem testoval za pomocí PHPUnitu, ale až s příchodem Nette testeru jsem se testování naučil mnohem líp. I když zase, své soukromé projekty ještě pod testem nemám (kde vzít na to čas, že?), ale nové projekty, které vytvářím, se již snažím vždy testovat a to za pomocí právě zmíněného Nette testeru. Ještě mám v hledáčku testování přímo ve vebovém prohlížeči za podpory Selenium testů, také jsem zkoušel, dokonce i některé testy mám vytvořeny pro projekt www.nakupy-detem.cz, ale bojím se, že již jsou testy zastaralé a nefunkční. Mám však v plánu se k nim co možná nejdříve vrátit.

Další znalosti na poli pozice programátora webových projektů

Souhrně zde uvedu další mé znalosti, které snad nepotřebují širší popis.

  • – správa DNS – mám vlastní stránky, proto si také sám spravuji k nim DNS
  • – hardware počítačů – každý správný ajťák si musí umět vytvořit svůj vlastní počítač (samozřejmě ze zakoupených komponent)
  • – nastavení routerů a síťových služeb – znám problematiku, starám se o síť ve firmě + o domácí routery
  • – znalostí produktů Atlasianu – Jira, bamboo, wiki, …  – např. přes Bamboo ve firmě deployujeme všechny projekty – výborný software.
  • – Photoshop – na stříhání grafiky a občasné vytváření bannerů apod.
  • – Balsamiq – software na jednoduchý grafický návrh (wireframe) webového projektu

Leave a Reply

Your email address will not be published. Required fields are marked *