Něco jako když zahlédnete plakát ke koncertu kapely, kterou
si vybavujete z mládí. Oni stále hrají? Nebo se dali dohromady po letech,
protože potřebují peníze? Něco vyždímat na strunách nostalgie?
Texy je můj první open source projekt. Začal jsem ho psát před patnácti lety.
Texy přežilo několik verzovacích systémů. Několik webových služeb
hostujících repositáře. Několik kódování řetězců. Několik
značkovacích jazyků pro tvorbu webových stránek. Několik mých životních
vztahů. Několik měst, ve kterých jsem bydlel.
Texy je tady stále, protože neexistuje nic
lepšího.
Takže jej patnáct let udržuji up-to-date. Začínali jsme v PHP 4, což
byl ten nejhorší programovací jazyk na světě a tedy výzva, pak s úlevou
přešli na PHP 5, o pár let později se ukryli do jmenného prostoru
(Texy::Parser
místo TexyParser
, wow), sledovali, jak
PHP přestávalo být nejhorším jazykem na světě, což otrávilo spoustu
programátorů, kteří si našli náhradu v JavaScriptu, poté bůh stvořil
PHP 7 a s ním typehinty (Texy::process(string $text): string
megawow) a do módy přišla striktnost declare(strict_types=1)
a
tu my ctíme.
A proto je tu Texy 3.0.. Jde
o úplně totéž, jako předchozí verze, ale má všechny vychytávky PHP
7.1. Je to úplně totéž proto, že do dokonalých věcí se nezasahuje.
Texy tu bylo, když jste se narodili. Programátorsky. Texy jednou bude
formátovat váš epitaf. A mezi v
a pokoji
vloží
nedělitelnou mezeru.
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!
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 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.
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 
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čí.
Ještě včera večer jsem si stýskal Jirkovi Chomátovi, že už dlouho toužím po
prohlížečovém editoru se zvýrazňováním syntaxe.
Nic takového jsem na internetu nenašel a tudíž se mě zmocňoval pocit, že
jde o technicky neřešitelný kousek. Ale už krátce po deváte jsem hrdě
hlásil JohnymuB: „Heuréka!“
Jak nejspíš tušíte, zvýrazňovat jsem chtěl právě Texy! syntaxi. Aby
se úpravy textů stala ještě příjemnější, aby byla sexy
Ukázku technologie si
můžete už teď prohlédnout.
Zatím funguje pouze v IE verze 5.5 a 6 a podporována je jen část syntaxe
(nicméně ta nejpoužívanější). Chyb si prosím nevšímejte, skutečně
jde jen o náhled, kam se bude další vývoj ubírat.
Ironií osudu WYSIWYG
Pro některé příznivce může znít spojení slov WYSIWYG Texy!
Editor jako aprílový žertík. Žádný paradox v tom ale není. To jen
z alternativy se stává
killer ;)
Příběh první
Dobrý den,
chtěl bych vám říct, že se chystáme začlenit Texy do CMS, který naše
společnost vyvíjí. Rád bych si s Vámi ujasnil podmínky licence. Pokud
klientovi dodáme náš systém bez Texy! a teprve on si ho doinstaluje, bude to
v souladu s GPL licencí? Náš systém je samozřejmě funkční
i bez Texy!
Děkuji za odpověď a jsem s pozdravem
### #######
######## ### s.r.o.
(podle informace z webu stojí základní modul CMS od této firmy cca
20.000 Kč)
Příběh druhý
Ahoj DGX!
Píši si vlastní CMS. Velmi se mi líbí TEXY!. Takže tímto za něj velmi děkuji. :) Mám
v plánu zabudovat ho do svého systému, a nebyl by pro mne problém ten
systém uvolnit pod GPL licencí, ale rád bych tě nějak „podpořil“, tím
myslím finančně. Chtěl bych se zeptat, kolik by stála licence (kterou sice
zas tak nutně nepotřebuji, ale rád ty peníze na vývoj skutečně
geniálního Texy věnuji). Mé finanční zdroje nejsou neomezené, ale pokud
to jen trochu půjde, rád bych Tvoji snahu podpořil. Díky!
Tomáš Vítek
(Tomáš mi poslal 1000 Kč, což je vůbec první dobrovolný
příspěvek a tímto mu děkuji)
Co dodat?
To první „story“ mě vážně netrápí, takovým věcem se prostě
směji. Navíc jde o ojedinělou záležitost. Což vlastně platí i pro
druhý příběh, ale ten mě naopak velmi potešil. Jen zatím nevím, jak to
vyřešit účetně… 
Texy! už žije a má
se čile k světu!
Když jsem si pročítal Vaše e-maily a ohlasy týkající se Texy!,
uvědomil jsem si, že se zrodil zajímavý fenomén. Texy!
se stal symbolem, Godotem, na kterého spousta lidí čeká. Mnohdy
netrpělivě. Některé weby s Texy! počítají
jako cestou budoucího vývoje, jiné jej
dokonce už nasadily. Četl jsem názor, že Texy! odstartuje revoluci
v oblasti CMS a nahradí WYSIWYG editory. A naopak jiný chlapík se ptá, zda
bude mít Texy! i WYSIWYG? „Cekam na to jako na smrt!“ zaznělo
v komentářích.
Vzhledem k tomu, že o Texy! byl donedávna publikován jen jeden
jediný článek a nikdo jej
neviděl, je to výborné skóre ?
Texy! už je sexy
Takže odedneška je Texy! oficiálně venku. Zatím v betaverzi, je třeba
vychytat chybičky, doladit syntax. Proto budu rád, když jej podrobíte
náročným zkouškám. V betaverzi je i samotný web. Chci vylepšit
texty, stránku Syntax rozdělit na více menších a možná
i přidat fórum.
O výběru licence jsem
už dříve informoval, nakonec jsem zvolil duální model – GPL + komerční licence.
Takže jej můžete zdarma používat pro svou potřebu (budu rád za link) a můžete jej zahrnout do
svých GPL aplikací. A pokud jej chcete implementovat ve svém
komerčním CMS, kontaktujte mě a domluvíme si podmínky zvláštní
licence.
A abych nezapomněl: najde se někdo s výbornou znalostí
angličtiny (případně jiného jazyka), který by mi za cenu zveřejnění
jména s odkazem a z toho plynoucí věčné slávy pomohl s překladem?
Díky ?
A ještě pár odkazů:
Drazí čtenáři a především zájemci o systémek Texy!. Mám pro Vás dobrou
zprávu, Texy! je připraven k finálnímu testování a pak hned vypuštění
do světa. Neprozřetelně jsem v diskuzi na webu Jak psát web slíbil,
že včera večer odstartuji testování. Nestalo se tak, kvůli
zdánlivé drobnosti. A tou byla volba licence.
Místo snadného rozhodnutí mě čekalo celonoční studium problematiky
svobodných licencí a jejich srovnávání. K ránu navíc uzavřené
zjištěním, že v našem právním řádu je stejně všechno jinak. Je mi
teď jasné, že Texy! budu muset distribuovat pod dvěma licencemi, zatím si
však nejsem jist, které zvolit.
Licence GPL je pro Texy!
nevhodná. Znemožnila by totiž jeho použití v každém proprietárním programu. Uvažoval
jsem tedy nad kombinací GPL + jiná licence pro komerční využití. Nebo bude
vhodnější LGPL? Či snad
Mozilla Public License?
A jakou zvolit onu komerční licenci?
Pokud jste v tomto oboru erudovaní, poprosil bych Vás o názor.
A naopak, chcete-li si přečíst o tomto tématu něco zajímavého, mám pro
Vás pár tipů: