Texy2 pro PHP 4 - killer jedničky?
I letos jsou tomu právě tři roky, co se objevilo PHP verze
5. V soupeření s předchůdcem PHP 4 zatím moc úspěšné není.
Zastoupení obou verzí je cca 17% vs. 83% ve prospěch čtverky. Mimochodem,
z toho by šla vymyslet zajímavá matematická hádanka na téma
pravděpodobnost, že?
Nové aplikace nemá smysl psát ve starém PHP4. Stejně tak i Texy2 jsem pojal jako čistě pětkovou knihovnu, plně využívající nový objektový model a lehce i výjimky. Nicméně mezi aplikací a knihovnou je rozdíl – knihovna nemá aplikaci omezovat. A proto chápu, že absence podpory pro PHP4 je velmi omezujícím faktorem Texy2.
Rozhodl jsem se oprášit svůj PHP 5 →
4 převodník, při vší skromnosti zcela jedinečný programátorský
zázrak
a pokusil se vygenerovat Texy2 pro PHP4. Převodník se
pochlapil, úkol zvládl výborně a stačilo jen několik manuálních zásahů
do kódu. Knihovnu jsem otestoval na cca 25.000 fragmentech a šlape naprosto
skvěle.
Ba co víc! Objekty se nyní chovají „pětkově“, to znamená, že se nemusíte trápit s ampersandy:
// místo
$texy = & new Texy;
// stačí
$texy = new Texy;
Texy2 je zatím stále ve fázi beta. Na základě uživatelského feedbacku mám připravený asi tříbodový TODO seznam, který chci do ostré verze zapracovat, půjde však o hlubší zásahy do celkové koncepce, takže zatím vyčkávám, až bude tzv. „volný čas“. Nevíte, kde se dá sehnat? Dlouho jsem ho nikde neviděl, koupím, dobře zaplatím!
Parádní Texy nástroje
Mohli chodit s kamarády do hospody. Mohli dovádět s děvčaty. Mohli si vydělat slušné peníze. Ale oni řekli NE a raději psali open source.

S radostí se podělím o pár tipů na nástroje, díky kterým může být život s Texy ještě více sexy.
Texy editory
Když píšete text ve formuláři, může vás zajímat, jak bude vypadat po zformátování. Zobrazit náhled bez nutnosti znovunačíst celou stránku (resp. odeslat formulář) umí technologie AJAX. Ta dokáže webovou aplikaci učinit mnohem uživatelsky příjemnější.
Když se k tomu ještě přidá hezké a intuitivní prostředí, vznikne editor Texyla od autorů Petra Vaňka a Honzy Marka. Vyzkoušejte si ho! Vážně paráda.
Texy naruby
Přesněji řečeno „na Ruby“. Převod celé knihovny do jazyka Ruby má na svědomí Rane a projekt nese název Texier.
Přes webovou službu XML-RPC zprovoznil Texy pod platformou .NET Aleš Roubíček – Texy.net.
A teď úplně naruby
Nástroj pro zpětný převod z HTML do Texy se jmenuje … (chvíle napětí) … html2texy!. Toto řešení od Jakuba Roztočila je zajímavé v tom, že jde o XSL skript.
Neodpustím si upozornění: dokument zapsaný v Texy není ekvivalentem výsledné HTML stránky. Tedy není možné ve webové aplikaci ukládat do databáze HTML kód a ten před editací zpětně převést do Texy a nabídnout uživateli. Do databáze vždy ukládejte zdrojový text v Texy.
Znáte nějaká další udělátka pro Texy? Svěřte se v komentářích.
Texy2 - ještě více sexy!
Texy2 je obrovským skokem kupředu. Dokonalejší, šikovnější, maximálně přizpůsobitelné. A především – ještě více sexy! Programátoři webových aplikací si mohou spokojeně pochrochtávat ;)

A to dvojka původně vůbec vyjít neměla. Ale nepředbíhejme…
Jak se navrhuje software
Nejlepší analýzu programu uděláte tak, že ho naprogramujete. Teprve poté zjistíte, co od něj skutečně potřebujete. A teprve poté ho můžete napsat doopravdy a perfektně.
Toho jsem si byl vědom při psaní Texy 1. Nechtěl jsem sepisovat dokumentaci API, nepřekládal jsem web do jiných jazyků. Věděl jsem, že tohle je jen cvičení na to doopravdické Texy.
První verze byla porod, protože jsem musel rozlousknout hromadu oříšků.
Vymyslet, jak to vůbec dělat. Není to legrace. Ono se třeba řekne:
„Texy bude vkládat nedělitelné mezery mezi předložku a slovo“. A ono
by se myslelo, že se na to napíše regulární výraz, který najde v
lese a zamění za v lese.
Jenže, poradí si i s tímhle: v
<strong>lese</strong>? Ano, sem nedělitelná mezera patří
taky. Jakpak by ne? Že budeme filtrovat řetězce v ostrých závorkách?
Fajn, ale co třeba tento vstup:
v <span title="3 > 2">lese</span>
Říkáte důmyslnější filtrování HTML značek? Moment, ale pokud se tam
objeví kupříkladu značka <br>, tak už tam nedělitelná
mezera nemá co pohledávat. Tedy žádné filtrování, ale analýza.
Nebo … nebo prostě co třeba tohle? ![]()
v <span title="les > obora">  
<!-- hehe --></span>   lese
Stále jde o písmenko v následované mezerou a slovem
lese. Tak, a teď si zkuste jen v hrubých rysech navrhnout ten
regulární výraz ;)
Texy2 to samozřejmě umí. A jde jen o jednu z tisíce vlastností.
Nicméně preciznost převodu není hlavním tahákem Texy2. Kdepak, to je jen takový projev dozrávání starších myšlenek. Tou skutečnou bombou je maximální přizpůsobitelnost.
Texy je flexi + bilní
Nyní můžete snadno změnit chování jakéhokoliv prvku dokumentu. Potřebujete nad Texy2 postavit wiki? Tj. ovládat všechny odkazy na stránce? Mně na to stačilo jen několik řádků kódu.
Potřebujete generovat obsah podle titulků? Chcete vkládat flashové
animace pomocí [* movie.swf *]? Chcete všem frázím "ahoj
.(popis)" automaticky přidat CSS třídu? Můžete! A nesmírně
snadno.
Některá řešení najdete přímo v distribuci, především však
v dokumentaci, která zatím není
Existuje alespoň stručný changelog. Je mi líto, mám teď tak
důležité úkoly, že na psaní manuálu není čas. Nicméně web Texy je
včil koncipován tak, že vznik dokumentace nemusí záviset jen na mně.
Texy2 je tu
Texy2 nemělo vyjít. Zjistil jsem, že nemám žádnou motivaci uvolňovat svůj software jako open source. Nese to sebou řadu omezení, ve vatě nebudete (tedy v ČR), kdekdo otravuje s podporou, narážíte na idioty. Kdyby mě neukecala Žirafka & spol. na minulé HBWBH, asi bych si je syslil jen pro sebe.
Dnes vypuštěná revize s hezkým číslem 111 je první oficiální betaverzí Texy2. Stahujte, hrejte si, testujte.
Texy! proti komentářovému spamu
S komentářovým spamem se na La Trine prakticky nesetkávám. Lví podíl na tom má funkce náhled komentáře, jejímž vedlejším efektem je odrazení spamerů. Takže konkrétní podobu spamů příliš neznám, ale tipuji, že většinou půjde o pouhé shluky odkazů. Je to tak?
Pokud formátujete komentáře pomocí Texy!,
pak by se vám mohla hodit následující finta. Texy všechny odkazy, na které
při formátování narazí, zapisuje do sumáře. A je jedno, jestli byl odkaz
zapsán HTML značkou <a href> nebo Texy syntaxí.
$texy = new Texy;
$html = $texy->process($text);
// seznam odkazů
$links = $texy->summary->links;
// pozor - pro verzi 1.2 a novější je to
$links = $texy->summary['links'];
print_r($link);
Takže po zformátování komentáře se mu můžeme podívat na zoubek a zjistit, zda-li nejde o spam. V praxi by nejspíš stačilo omezit počet odkazů v komentáři…
if (count($links) > LINK_LIMIT) ...
…případně stanovit nějaký rozumný poměr mezi délkou textu a počtem odkazů…
if (strlen($text) / count($links) < LINK_RATIO) ...
…nebo dokonce jednotlivé odkazy analyzovat.
foreach ($links as $url)
{
if (...)
}
Ale to už je jen na vás
Taková nominace je tuze fajn věc
Jo, nominace Texy! je tuze fajn věc, člověk se díky tomu dozví spoustu nových a zajímavých postřehů, zadiskutuje si s milými lidmi a jak se říká, posune ho to zase trošku dopředu.
Abych uvedl chudáka nic netušícího čtenáře do děje: Texy je takové udělátko, které jsem si kdysi (to
je let! to jsem byl ještě krásný a nadějný) naprogramoval a dal zdarma
k dispozici, aby usnadnilo blogerům psaní článků a programátorům tvorbu
webů. A stalo se celkem populární, běží na něm kdejaký blog, a dostalo
se (aniž bych to chtěl) do soutěže popularity podobných nástrojů nazvané
Czech Open Source. Tento článek je přehlídkou urážek, které jsem si
kvůli tomu přečetl. Nejsem člověk, který by očekával pochvalu (byť by
byla zasloužená, béééé!
), ale podobná atmosféra moc motivace
nedodá…
Texy už není jen sexy, František Brakon našel nové přívlastky:
Zajímalo by mě, KDO konkrétně vybíral jednotlivé nominace. To se muselo udělat v nějaké uzavřené partčce u piva, to není možné. Jak může vedle sebe být napríklad lamoidní „jednovečerové“ Texy a světové NetBeans
Spalda pomocí Google a operátoru link dokazuje ubohost Texy a já se tak trošku začínám stydět:
Kupříkladu, již výše naťuknuté CMS, poradím-li se s bratrem googlem: phpRS: 2 190 000 výsledků, United-Nuke: 692 000 výsledků, BlogCMS: 170 000 výsledků
Rozhodně je nepoužívá jen hrstka lidí, oproti např. naprostému úletu jménem Texy
Spaldu nadále mrzí, že nebylo nominováno oblíbené CMS:
Jinak já ty CMS tady začal propagovat jen z toho důvodu, že když je nominován úlet jménem Texy, tak tyhle CMS by si to oprávněně zasloužily mnohonásobně více
Spalda dedukuje jedna báseň:
Nominace Texy pouze hezky dovršuje úroveň/zprofanovanost poroty a tím i celé ankety
Spaldu vážně znepokojuje, že bych případně mohl mít z Texy! i drobný profit (jak jsem mohl, jak jsem jen mohl?).
A když už se oháníš tím Texy zdarma (jako kdyby to ostatní zdarma nebylo). Oba víme, že zas tak zdarma Texy neni… nejde příliš ani o obětavou práci pro komunitu… ale pouze o využití formulek free software a open source k propagaci a prodeji komerčních licencí
Stydět by se měly ty milióny ikonek DONATE na všech webech OpenSource projektů (Texy ji nemá), hanbou nechť zčervená ceník MySQL. Soudruzi, takhle ten komunismus nikdy nevybudujeme!
Ale pak přichází něco, čím mě Spalda doslova odzbrojil (jen dodám, že za nominaci nemůžu, nikoho z poroty neznám a rozhodně ji neobhajuji):
Nepřipadá ti trapné obhajovat nominaci něčeho co sebralo místo evidentně něčemu co si to zaslouží víc?
Chvíli jsem lapal po dechu, a když jsem jej konečně popadl, tak přišla dorážečka:
Já chápu, že konexe a bussiness dělá svoje, ale alespoň to takhle vokatě nerozmazávej.
František Brakon připomíná ošklivý plivanec, který na Texy! „kdosi“ (RH) nedávno účelově zanechal:
Máte pravdu, Texy! je o nápadu. A světe div se, mohl napadnout každého na světě. A taky že napadl. Ještě před tím, než Texy spatřilo světlo světa, byl již dávno přítomen formátovač Textile. A světe div se, má skoro stejné nejen jméno, ale i syntaxi!
Dgx se onehdá do krve pohádal s tím-jehož-jméno-se-nevyslovuje, který ho nařkl z krádeže. Diskuse dospěla k tomu, že dgx zdrojáky samozřejmě nevykradl, ale u Textile se inspiroval a podobného výsledku dosáhl svým vlastním kódem a doplnil několik rozšíření. Přesto geniální nápad „newysiwyg editoru“ od dgx nepochází a i název mohl volit do očí méně bijící.
Slova mi už docházejí. Ano, „NEWYSIWYG“ editory tu byly dříve, než WYSIWYG – přišly s vynálezem psacích strojů. Včetně všech zažitých konvencí, kterým dnes říkám Texy syntaxe. Nemá proto smysl porovnávat kdo dřív, ale kdo lépe. František Brakon však má k Texy další vážné výhrady:
Mně ten návrh připadá jako taková hurá akce „umím regulární výrazy, zkusím napsat parodii na lexikálně syntaktickou analýzu“. Jediné co na tom můžu ocenit je úporná snaha o kompatibilitu PHP4/5. Oceňuji to však ve smyslu „ten se ale potrápil“, než ve smyslu „tak je to dobře“. Kdybyste se na PHP4 vykašlal, výsledek by byl lepší. A mohl byste si odpustit komentáře a kusy kódu php4_sucks. Asi jste se nechtěl připravit o slávu mezi lamami, odkázané na pochybné hostingy.
Na mé uporoznění, že Texy vzniklo v listopadu 2004, zatímco první použitelná verze PHP 5.0.4 se datuje 31. 5. 2005, odpovídá
… v changelogu vidím „version 5.0.4 31-Mar-2005“, to je 31. 3. 2005, zkreslujete o dva měsíce. Ale nebuďme úzkoprsí.
Úzká prsa jsou mimochodem věc, která se mi na ženách vůbec nelíbí.
Takže, ehm
Tedy prvním výsledkem účasti v anketě, která má popularizovat myšlenky open-source a vyzdvihnout tuzemské projekty, je to, že mám opět obrovskou chuť poslat celou open-source komunitu do prdele a už nenapsat ani řádku ;)
Doplněno o 5 let později: dnes mám za sebou mnohem větší projekt (opět je zdarma), takže
i nadávek je mnohem víc
Samotnému mi to přijde spíš vtipné, nekecám.
Rodina už to vnímá krapet hůř. Faktem ale zůstává, že v naší zemi
má potřebu se o vás otřít nestandardní množství kokotů, takže všem
tvůrcům open source bych doporučil, ať hodí bobek na vlast, odmítají
účast v podobných pochybných soutěžích a tvoří jen anglicky, pro
zahraničí.

