Webdesign

Adobe a grafika 35 Google 27 PHP 78 Webdesign, CMS 304

PHP vytváří i dnes banda pitomců

Spousta lidí nadává na PHP kvůli naprostému nedostatku koncepce. Někteří lidé říkají, že je to věc minulosti, nedostatečného vzdělání jeho prvotních tvůrců, a že dnes je vše zcela jinak. Nemyslím si to.

Vezměte si třeba základní funkci str_replace(), ta má jako poslední parametr řetězec, v němž se hledají a zaměňují řetězce na první a druhé pozici. Funkce strpos() to má ovšem zcela naopak, první parametr je řetězec, v němž se hledá, a druhý parametr hledaný výsek. Podobný "bordel" (kdy si člověk nikdy není jistý, jaké pořadí parametrů která funkce právě akceptuje) je ve všech starších funkcích PHP, a to nejenom v pořadí parametrů. Problém je i v názvosloví funkcí, onomu str_replace() by daleko více odpovídalo str_pos(), které ovšem neexistuje.

Nekoncepčnost a naprostá zmatenost vývojářů PHP je ovšem vidět i dnes. Například podpora pro MySQL 4.1 a vyšší byla implementována jako zcela nová sada funkcí mysqli(), zcela ignorující existující mysql() řadu funkcí. Nová řada mysqli funkcí je de-facto identická té předchozí, jen má zcela opačné argumenty volání (a také je ji možno volat jako objekt). Takže místo mysql_query($query, $db) píšete nově a úžasně mysqli_query($db, $query).

A to není zdaleka celé. Databázového mišmaše je mnohem více. PHP obsahuje od verze 5.1 vestavěnou podporu pro SQLite, která se volá funkcemi sqlite(). Nicméně, zase to není tak docela pravda, tato podpora je funkční jen pro nestabilní a bugovou SQLite 2.8, takže pokud uvidíte hlášku "DATABASE SCHEMA HAS CHANGED", víte, že musíte použít SQLite 3.x.

PDO v PHPnejen v DB driverech má PHP problém

Průser je ovšem v tom, že SQLite 3.0 má zase jinou sadu funkcí, přistupuje se k ní jen a pouze přes PDO objekty, tedy například new PDO("sqlite:$db"😉. Pokud tedy chcete, aby vaše aplikace používající SQLite nepadala až tak často, musíte ji celou zásadně a koncepčně přepsat, zapomenout na sqlite() funkce a používat PDO. Stejně tak musíte zásadně přepsat aplikaci používající MySQL 4.1 namísto MySQL 3.x / 4.0.

Kdyby vývojáři PHP nepostrádali mozek, dávno zavedou alias str_pos() pro funkci strpos(), naprogramují přístup k MySQL 3.x / 4.x / 5.x zcela transparentně, bez zavádění mysqli() funkcí, naprogramují podporu pro SQLite 3.x i pro sqlite() funkce, nikoliv jen pro PDO (ony sqlite funkce mimochodem vyžadují pro svoji funkčnost PDO knihovny!), prostě nebudou zjednodušovat život sobě, ale PHP programátorům.

Bohužel, hlavní cíl vývoje PHP je zřejmě získat jazyk s co možná největším počtem podivných funkcí na každou trivialitu, které nejsou vzájemně kompatibilní. Ať se na to dívám z jakéhokoliv pohledu, musím říci, že nejenom v minulosti, ale i dnes vytváří PHP banda naprostých pitomců.

0 komentářů

Internetové společnosti neumí prodávat online

Vždy mě šokuje, když společnosti výrazně zaměřené na internet neumí prodávat svoje produkty online. Dnes jsem se s tím setkal u Microsoftu. Microsoft nabízí opravdu vynikající softwarový balík Expression Web, který je více než zdatným konkurentem pro Macromedia (dnes Adobe) Dreamweaver. Plus má další výborné  produkty pro webdesign, jako je Expression Design, konkurent pro Illustrator / Photoshop, a další, ale s podstatně lepší cenou než Adobe.

Stáhnul jsem si Expression Web před pár týdny  pro testování, je možné jej používat 60 dní zdarma, a dnes jsem si jej chtěl zakoupit. Normálně jsem zvyklý na to, že jdu na web výrobce, kliknu na purchase,  zadám číslo platební / kreditní karty, a na email mi přijde během pár sekund aktivační kód, který z trial verze udělá plnou, popřípadě si stáhnu nový instalační soubor plné verze. Zrealizoval jsem tento postup již minimálně 50x, nakupuji software téměř výhradně online.

Microsoft nic takového ovšem nenabízí, jediný způsob nákupu Expression Web je odkaz na retail balení dostupné na Amazon.com za $262. Nerozumím tomu. Produkt pro web prodávaný jen jako retail?

Hledám tedy české obchody na Google, ale hledání "koupit Microsoft Expression Web" nenabídne také nic. Co to má znamenat? Zkouším tedy Seznam zboží, a hledání toho samého výrazu. Seznam zboží funguje. Cena produktu již ovšem není $260, ale kolem $450 (s DPH).

Budiž, s tím bych se smířil. Zásadní problém je ale zcela jinde, nevím, co si přesně koupit. Veškeré weby odkazují v popisu typu licence jen na www.msemealca.com/currentpurs.htm, kde je DOC dokument, v němž se nevyznám (co to je AE či NL licence, s cenou 3x nižší?), a Expression Web v něm stejně zmíněn není, je tam jen sto jiných produktů Microsoftu.

Microsoft má prodej svých produktů pro koncové uživatele, kromě Windows XP / Vista a Office 2007, mimořádně špatně zvládnutý. Osobně se divím, že vůbec něco prodává. Expression Web je fantastický produkt, ale nemožnost jej snadno koupit musí snižovat (mimo USA) jeho prodeje k nule.

Chtěl jsem si jej koupit, nedozvěděl jsem se jak si jej koupit (a to jsem se snažil cca 60 minut, který klient má takovou trpělivost?), nekoupil jsem si jej… Microsoft zjevně koncovým uživatelům nic prodat nechce.

Microsoft Expression WebMicrosoft Expression Web
0 komentářů

SPAM a podivné praktiky Atlas.cz

Atlas.cz má téměř nulovou návštěvnost a nízké příjmy (každý člověk používá pro hledání Google.cz a pro portál Seznam.cz), a tak se začíná uchylovat k nelegálním praktikám jak s tím něco udělat. Dorazil mi dnes SPAM od Kautský, Richard [kautsky@atlas-as.cz], který mi nabízí abych zaplatil 7.680,- Kč na jeden rok, a zařadil se do bezcenné databáze Atlasu.

(Český) SPAM nemám rád, a tak jsem na něj následně zareagoval:

Vážený pane Kautský, nesnáším SPAM, a to zvláště, pokud má 200KB přílohy [poznámka: email kromě nevyžádané obchodní nabídky obsahoval i 200KB prezentaci v PowerPointu]. Váš protiprávní skutek bude po zásluze potrestán…

Nic osobního proti Atlas.cz v tom nehledejte, ale lidé posílající SPAM jsou dle mého názoru prasata. A lidé, živící se internetem (nikoliv provozující hotel), prostě internetoví profesionálové, a posílající SPAM jsou podle mého názoru velká prasata.

Kautský na to odpověděl následovně:

Vážený pane Hulán, po prozkoumání všech webů jsem na Vaší osobu nenašel jiný kontakt kromě Skype, MSN, Emailu.(první dva nepoužíváme) Za normálních okolností potencionální klienty obvoláváme, navíc byli údaje z veřejných zdrojů (databáze společnosti Albertina – vychází ze statistik ČSÚ) takže vcelku nechápu Vaší reakci.Každopádně Vám nenabízím Viagru nebo podobné služby, takže doufám že přijmete mojí omluvu jestli Vám to nějakým způsobem vadilo …

S pozdravem a webdesignu zdar J (jsem také z „oboru“) …

Takže protože mi Kautský nenabízí Viagru, ale placený zápis do jakéhosi jejich firemního katalogu, není to vlastně dle něho SPAM, a mám být navíc rád, že mě neobtěžoval ještě telefonicky na mobil či přes Skype.

Úřad pro ochranu osobních údajů asi Atlas.cz nic neříká, každopádně na Atlas.cz a jeho obchodního zástupce p. Kautského byla podána stížnost za nevyžádané obchodní sdělení na www.uoou.cz. Další lidé, kteří se budou chovat jako prasata a budou "od fochu", dopadnou stejně. Použít na nahlášení nevyžádaného obchodního sdělení můžete tento formulář.

0 komentářů

Zatraceně dobré SEO

V poslední době, když něco hledám na Google.com, nacházím stále více a více jen a pouze moje vlastní články. Na jednu stranu to je fajn, být na tisíce klíčových slov v první desítce (či vůbec první) ze stovek tisíc výsledků potěší, nicméně, ne když něco hledám já sám.

Svoje články totiž znám.

Bylo by skvělé, kdybych si mohl sám pro sebe upravit Google hledání tak, aby myego.cz, hulan.cz a forum.hulan.cz ignoroval, protože mi neřeknou nic nového. To, co jsem napsal si pamatuji, a nepotřebuji to opakovat znovu.

Včera jsem zrovna hledal informace o PHP a MySQL na Vista x64, řada stránek (751 tisíc) o tom píše řadu měsíců, můj webzine o tom napsal jednou, a přitom je na první a druhé pozici, na třetí pozici je moje fórum, kde se článek diskutuje, na čtvrté pozici je RSS odkaz z cizí čtečky na můj webzine a na šesté pozici je odkaz z Weblogy.cz na můj webzine.

Pět pozic z prvních deseti, mezi 751.000 výsledky, to považuji za zatraceně dobré SEO 🙂

SEO na Google - příklad 1
Celý článek 0 komentářů

Webové aplikace jsou obrovský krok zpět

Webové aplikace jsou hitem posledních dvou let. Google nabízí email, spreadsheet, editor a jabber klienta jako online "aplikace", jiné firmy nabízí grafické editory, icq a yahoo klienty, a mraky dalších věcí. Nic z toho se ovšem nehodí rutinně používat. Stále je to jen "nouzovka". A osobně opravdu nechápu, proč jsou lidé z těchto služeb nadšení.

Vezměme si třeba GMail, nejlepší online emailovou službu s obrovskou kapacitou. Ve své třídě nemá konkurenci. Velký problém ovšem začne mít, pokud ji srovnáme na běžné aplikace na PC, ať už je to Microsoft Outlook, TheBat! či další. Ať se Google snaží sebevíc, přes pouhé XHTML a JavaScript není nikdy schopen nabídnout ani setinu zážitku a komfortu, co umožňuje nativní lokální aplikace.

GMail má samozřejmě pro někoho výhodu v tom, že máte svá data kdykoliv a kdekoliv (jste online), nicméně, kolik lidí, co pracuje s velkým množstvím dat, to skutečně potřebuje? Pokud potřebujete svá data kdykoliv a kdekoliv, pravděpodobně máte notebook a na něm napojení na firemní Exchange server, popřípadě emaily stažené lokálně, a na něm Windows Desktop Search pro jejich prohledávání.

Tyto aplikace jsou funkčností a komfortem ovládání na absolutním vrcholu, a libovolná JavaScriptové hříčka se jim nikdy nemůže ani přiblížit.

Snad jen pár chudých studentů bez notebooku a online připojení pobíhajících po internetových kavárnách potřebuje data "kdykoliv a kdekoliv" (míměno, kdykoliv jsou v internetové kavárně u pronajatého PC). Ostatní lidé mohou nosit na notebooku onen Outlook, a mít na něm data dostupná vždy, ať už jsou online či offline.

I pokud migrujete mezi více počítači, bývá prostě snazší nainstalovat si Outlook a v něm přistupovat na onen GMail pomocí POP3 a SMTP, takže jej vlastně nikdy neuvidíte, jen budete benefitovat z toho, že na dovolené, bez notebooku, se na Gmail můžete podívat, a patřičný přijatý či odeslaný email si dohledat. Používat GMail jen jako záložní skladiště dat, ale zpracovávat je lokálně.

Představa, že bych měl denně místo luxusního Wordu, Excelu a Outlooku používat nic neumějící, pomalé, s vysokou latencí, a principiálně nespolehlivé, online aplikace, mít data jen a pouze u nějakého vzdáleného providera, a nemoci si offline dohledat všechny soubory, emaily a dokumenty jednoho projektu, je zcela nepředstavitelná.

Online aplikace jsou synonymen pro nízkou produktivitu práce a postrádání klíčových dat.

Tipoval bych si, že hlavní klientelou online služeb jsou pubescenti, tedy "nezakotvení", pobíhající sem a tam, pro které je mobilita hlavní prioritou, a použitelnost aplikace jde nutně stranou. Člověk pracující, ten většinou již sedí v nějaké kanceláři na jedné židli, a jeho hlavní prioritou bývá použitelnost, komfort obsluhy a efektivita, což online JavaScript prostě neumí a nikdy umět nebude.

Webové aplikace jsou obrovský krok zpět a rozruch kolem nich je pouze hype neurotických analytiků. Nedokážu si představit, že by skupina mimořádně nenáročných uživatelů, kterým online aplikace mohou stačit, byla nějak významná…

GMailMicrosoft Outlook
GMailMicrosoft Outlook
0 komentářů

bCompiler - kompilace a ochrana PHP kódu zdarma

PHP kód je ve standardní konfiguraci v jedné věci poměrně nepříjemný pro vývojářské firmy - kdokoliv má přístup k serveru, má přístup i ke zdrojovým kódům, navíc se při každém spuštění PHP skriptu všechno musí znovu a znovu kompilovat, tisíckrát denně, což drasticky snižuje výkon aplikace a zbytečně zatěžuje server.

Kompilace PHP do bytecode (podobně jako v Javě) může být kromě zrychlení aplikace použita i jako určitý (samozřejmě nikoliv stoprocentní) způsob ochrany.

Pokud si například klient chce vyzkoušet redakční systém na své síti, nahrávat mu tam desítky MB vašich zdrojových PHP kódů není zcela určitě to pravé. Kompilace do bytecode tuto situaci v praxi uspokojivě řeší, pokud tedy neexistuje pro daný kompiler volně dostupný decode proces (dekompiler).

bCompiler - zdarma dostupný kompiler PHP

Pro komerčně dostupný Zend Encoder dekompiler bohužel existuje, pro Ioncube rovněž, pro bCompiler, dodávaný v PHP licenci (tedy zdarma, navíc je zde možnost modifikace bez nutnosti zveřejnění zdrojových kódů a tím kompromitace případného uživatelského šifrování) a zdokumentovaný na webu PHP ovšem zřejmě nikoliv (Google hledání: (bcompiler decompiler, bcompiler decode).

Začal jsem bCompiler používat a jsem velice spokojen.

Výsledek je 100% kompatibilní s originálem, soubor je menší, a celá aplikace je (i při použití BZ2) podstatně rychlejší, zvláště pokud používáte rozsáhlé třídy.

Na Windows si můžete bCompiler.dll stáhnout pro různé verze PHP na pecl4win.php.net. Následně již jen povolíte v php.ini bCompiler a případně i bz2 a můžete kompilovat do bytecode:

extension=php_bcompiler.dll
extension=php_bz2.dll
Celý článek 0 komentářů

Ukládání stránek do webových archívů (MHT)

Některé věci, pro jiné naprosto samozřejmé a velice užitečné, jsou občas pro jiné lidi úžasným objevem. Osobně jsem nikdy nepoužíval možnost ukládat stránky do webového archívu, protože Opera to do nedávné doby neuměla (verze 9.20 a možná i starší to už umí, Firefox nikoliv), a MSIE jsem si často nespouštěl.

Webový archív je jeden soubor s příponou MHT, který obsahuje vlastní XHTML kód, JavaScript, obrázky, CSS a další součásti webové prezentace. Prostě jeden soubor znamená kompletní a realistický pohled na web. Opera i MSIE umí v posledních verzích vytvářet MHT pomocí Soubor / Uložit jako.

Dosud jsem klientům posílal screenshoty, které ukazují jen pár procent reality. Jsou statické. Před pár dny jsem konečně "objevil ameriku", a začal posílat webové archívy / MHT. A jsem z nich nadšený a klienti také 🙂

Příklad webového archívu (MHT)

(jedná se o BETA verzi nového, velice rozsáhlého, sportovního portálu; jen MySQL tabulek je v něm 176 a PHP kód má kolem 50MB)

Statický screenshot

klasický screenshotklasický screenshot je pasé
0 komentářů

Základy SQL, část 2.

Tento článek navazuje na Základy SQL, část 1., kde jsem psal především o SELECTech a JOINech na MySQL databázi.

V této části se budu věnovat tvorbě VIEW a TRIGGER. Na uvedenou logiku je potřeba minimálně MySQL 5.0 a vyšší (popřípadě libovolná 15 roků stará Oracle databáze).

CREATE VIEW

Představte si, že pracujete na projektu, který má za úkol sjednotit dva velice rozdílné projekty pod jedním uživatelským účtem a společným přihlášením. Třeba BLOG:CMS pro publikaci článků a IP.Board jako fórum.

BLOG:CMS používá pro autorizaci tabulku members, IP.Board pro stejný účel používá hned 3 tabulky, a to ipb_members (přihlašovací jméno), ipb_member_extra (email) a ipb_member_converge (hash hesla). Naštěstí jsou veškeré údaje, které BLOG:CMS potřebuje, obsažené i v IP.Board tabulkách. Toto celé svádí k tomu zjednodušit si práci tím, že tabulku members v BLOG:CMS dropnu a místo ní udělám pohled (VIEW) na 3 tabulky IP.Boardu.

Například takto:

DROP TABLE `member`;

CREATE VIEW `member` AS 
SELECT 
	`m`.`id` AS `mnumber`,
	`m`.`name` AS `mname`,
	`m`.`members_display_name` AS `mrealname`,
	`m`.`email` AS `memail`,
	`e`.`website` AS `murl`,
	`e`.`notes` AS `mnotes`,
	`c`.`converge_pass_hash` AS `mpassword`,
	`c`.`converge_pass_salt` AS `mcookiehash`,
	`m`.`member_login_key` AS `mcookiekey`,
	`e`.`mcanlogin` AS `mcanlogin`,
	`e`.`deflang` AS `deflang`,
	`e`.`madmin` AS `madmin` 
FROM (
	(`ipb_members` `m` 
	JOIN `ipb_member_extra` `e` ON ((`m`.`id` = `e`.`id`))) 
	JOIN `ipb_members_converge` `c` ON 
		((`m`.`id` = `c`.`converge_id`)));

Pro PHP kód bude celá operace zcela transparentní, nepozná, zda se autorizuje proti TABLE member či nově proti VIEW member. Tímto jednoduchým způsobem je možné docílit toho, že dvě zcela různé aplikace sdílejí během pár sekund jednu databázi uživatelů (a protože IP.Board má skvělé prostředky pro správu uživatelů, byla zvolena jeho databáze).

Podobně je VIEW možné používat kdekoliv, kde jinde použijete tabulku s WHERE podmímkou. V redakčním systému je dobré si vytvořit VIEW, které bude filtrovat zatím nepublikované články (drafts) a články, které jsou určeny k publikaci k pozdějšímu datu. Tvorbou tohoto jednoho VIEW ušetříte programátorský čas a zpřehledníte aplikaci (nehovoře o snazším uzpůsobení), nebudete totiž muset na desítkách míst opakovat ty samé WHERE podmínky. Také je to dobrá prevence chyb, jedno VIEW se ladí lépe než desítky WHERE podmínek v PHP kódu.

Používat VIEW místo natvrdo psaných WHERE podmínek je základ dobrého programátorského stylu. Bohužel, mimořádně primitivní MySQL databáze (nazývám ji spíše filesystém) tuto triviální funkčnost umí až od verze 5.0.

Celý článek 0 komentářů

Jak open-source pomáhá rozšiřování Windows

Jak jsem psal před pár dny, Linux na desktopu se již 10 let nechce příliš rozšiřovat, a pořád alokuje kolem 0.5% trhu. Poslední 2-3 roky sice již existují distribuce, které lze většinou nainstalovat skoro stejně snadno jako Windows XP (Windows Vista instalace je ještě snazší), a fungují na slušné množině hardware, přesto se očekávaný boom Linuxu nedostavuje.

Nejen podle mého názoru je vina v nedostatečném rozmachu Linuxu i na samotných vývojářích open-source aplikací.

Vezměte si takovou Mozillu a později Firefox. Před vznikem tohoto prohlížeče řada lidí pokukovala jinam, MSIE 5.0 a 6.0 nejsou právě etalony bezpečnosti, ani funkčnosti. Existovala sice naprosto špičková Opera 7/8/9, ale v té době nebyla zdarma. Poté ovšem přišel Firefox, a 10-15% uživatelů, kteří jej začali používat namísto MSIE 5/6, najednou mělo o důvod méně (ano, nikoliv více) proč přejít na Linux. A Microsoft tím také získal čas na vývoj MSIE 7, který je vynikající.

Linux jim nenabízel najednou vyšší bezpečnost, naopak znamenal menší svobodu volby. Na Linuxu mohu spustit onen Firefox, ale MSIE 6/7 už ne (tedy, přes Wine to jde, nicméně řada uživatelů toto není schopna zprovoznit a navíc to není zcela legální).

Podobný příklad je s OpenOffice.org. Před masivním příchodem OpenOffice.org ze světa open-source i na platformu Windows si každý de-facto musel kupovat Microsoft Office. Tento kancelářský balík od Microsoftu je objektivně nejlepší, nicméně možná až desítkám procent lidí by OpenOffice.org vyhovovala, jako naprosto dostatečná (a navíc zdarma) alternativa.

Zatímco dříve museli pokukovat po Linuxu, dnes nemají důvod, zůstávají o svých Windows. Migrace se nekoná. Na Microsoft Windows dnes skvěle běží jak open-source OpenOffice.org, tak všechny verze Microsoft Office.

Vývojáři open-source programů si mysleli, že vývojem stejných aplikací pro Windows i Linux (Firefox, Thunderbird, Evolution, OpenOffice.org, Blender, Gimp, GimpShop) usnadní lidem přechod z Windows na Linux. Nicméně, zcela ignorovali samotnou podstatu věci - proč by měl někdo přecházet z Windows na Linux, když pod Windows má ty samé aplikace, co na Linuxu, ale také mraky aplikací navíc, které na Linuxu neexistují?

Celý článek 0 komentářů

Dostupnost x64 verzí Apache, MySQL a PHP pro Windows

S Windows Vista 64b přišla i možnost provozovat oblíbené open-source produkty pro webdesign / webhosting, tedy Apache, MySQL a PHP, v 64-bitových edicích. Tedy, alespoň teoreticky. Pokud se podíváte na stránky vývojářů, tak pouze MySQL je zatím dostupné ke stažení i v x64 verzi, zatímco PHP a Apache nikoliv.

Řešením je ApacheLounge.com a neoficiální buildy Apache a PHP.

Zatím je testuji pod Windows Vista Ultimate 64b, a vypadají stabilně, nicméně do produkce bych je rozhodně nenasazoval a počkal si na oficiální build.

Odkazy:

Mohu potrvrdit, že uvedená kombinace na Vista x64 funguje, a v průběhu příštího týdne přinesu první testy a srovnání rychlosti XP 32b versus Vista 64b pro tuto platformu.

0 komentářů