Webdesign

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

Jak na (šablonu) RSS 2.0 v PHP?

Posílal jsem včera Jirkovi Lahvičkovi, weblogy.cz, šablonu pro RSS 2.0, aby měl její zapracování na jeho web poněkud rychlejší. A myslím, že by to mohlo pomoci více lidem, takže, uvádím jednoduchý algoritmus pro vytvoření RSS 2.0 šablony v PHP.

Jednotlivé funkce jsou komentované přímo v kódu, takže nepotřebují moc dalšího komentáře:

// exportuje posledních 20 článků jako RSS
function exportRSSS(){
 putHeader();
 $q=mysql_query(
  'select title, body, link, '.
  '       UNIX_TIMESTAMP(datum) as dt '.
  'from items '.
  'order by dt desc '.
  'limit 0,20');
 while ($row=mysql_fetch_object($q)) 
  putItem($row);
 putEnd();
}
Celý článek 0 komentářů

Blogger.com - get rid of that ugly upper banner!

So, you have a blog at blogger.com. For free. You happen not to like the upper banner, showing google AdWords? No problem! Just add this to your template, as ad is displayed as a table:

/* do not display blogspot table ad */
table {display:none} 
/* your tables in article should remain */

... and republish your blog. It will look like this: l0phreak.blogspot.com.

Warning: this "ad-filtering" is against blogspot.com rules (16. PARTICIPATION IN PROMOTIONS OF ADVERTISERS). Your site may be terminated if you do this.

0 komentářů

PHP skript na automatické generování PDF souborů

adobe acrobat

Looging for English version of this article?

Na http://www.fpdf.org/ je dostupná třída pro generování PDF souborů v PHP. Nicméně, jedná se o dost "syrový" produkt. Není možné jen tak jednoduše vzít XHTML soubor, poslat jej do toho, a vytvořit PDF.

Z tohoto důvodu jsem k této 40kB třídě vytvořil další 2 třídy (cca 15kB), které umožňují generovat PDF z XHTML komfortně, za pomocí 2 řádků v PHP!

Příklad:

Základem je třída createPDF. Její použití je nejjednodušší ilustrovat na příkladu:

$pdf =& new createPDF(
 $_POST['html'], // html text to publish
 $_POST['title'], // article title
 $_POST['url'], // article URL
 $_POST['author'], // author name
 time() );
$pdf->http='http://localhost/html2pdf/';
$pdf->directory='/www/html2pdf/';
$pdf->delete=10;
$pdf->useiconv=false;
$pdf->run();

Chcete si vyzkoušet převést text do PDF online?

Další možné způsoby použití této třídy, a její parametry, naleznete přímo v dobře komentovaném zdrojovém souboru html2pdf.php, nemá smysl je zde opisovat.

V souboru index.php naleznete jednoduché použití této třídy, uvedený příklad převede text vložený do uživatelem (do pole textarea), na PDF.

Zvláště upozorňuji na nutnost nastavení proměnných http a directory, udávají URI a lokální cestu, kde se bude vytvářet dočasný soubor (problém s tím měl Petr Weida, About, díky za upozornění). Rovněž, podporovány nejsou GIF soubory (licenční problémy, PHP třída pro PDF je nepodporuje).

$pdf->http='http://localhost/html2pdf/';
$pdf->directory='/www/html2pdf/';
Celý článek 0 komentářů

Export your article to Adobe Acrobat PDF (via PHP script)!

adobe

I’ve created a new plugin which allows a current article to be automatically exported into Adobe Acrobat PDF file format. This plugin is based on FPDF PHP class, from www.fpdf.org.

Main Features

The plugin can do the following:

  • display bold, italics, underline text.
  • display red and blue text.
  • understands and converts NP_FancyText plugin pseudo-text.
  • removes tags specific to NP_Poll plugin.
  • displays h1, h2, h3, h4 tags with appropriate font sizes and colors.
  • displays lists <li> with a proper list-style.
  • displays XHTML links as Adobe Acrobat links.
  • can embed pictures / images and/or link them!
  • displayes blockquote tags.
  • displayes <pre> and <code> tags with Courier font.
  • displays other text with Times New Roman font.
  • allows not to embed fonts into a PDF file, thus making them efficient, and very small.
  • displays ™, € and © characters.
  • supports iconv character conversions, if necessary.
  • creates a filename like this-is-a-title.pdf.
  • features automatic temporary files deletion after 60 minutes.
  • displays article name and URI in page header.
  • displays page number, and total number of pages in page footer.
  • creates a :banner: page with article name, article URI (hotlink), author name, creation date, and site URI.
  • allows to specify directory for creating temporary files (by default MEDIA_DIR/rsscache/). You have to issue chmod 777 command to this directory.
Celý článek 0 komentářů

Gmail má v Evropě problémy

GMail

Před pár týdny se hlupáci z evropské komise rozhodli ukrást 500 miliónů € Microsoftu. Nyní se evropská Privacy International chystá na Google a jeho Gmail. Připomíná mi to opět hon na čarodejnice.

O co Privacy International jde?

Nelíbí se jim, dle oficiálního vyjádření, to, že Google bude skenovat Vaše emaily, a na základě toho, Vám nabízet reklamu. Formou textových AdWords. Také se jim prý nelíbí, že Google bude uchovávat i uživatelem smazané emaily.

O co ale skutečně jde?

Nabídnout zdarma 1GB prostoru pro email, s pokročilými vyhledávacími službami, znamená velice nepříjemně konkurovat lokálním, evropským, portálům, a mizerným emailovým službám s kapacitou schránky 1000x menší. Navíc, pokud uživatel GMailu souhlasí s licenčními podmínkami, tedy, že jeho emaily budou nějakým automatem skenovány, a na tyto podmínky dobrovolně přistoupí, není důvod, aby jakási evropská organizace, zakazovala takovéto podnikání. Proč potom nezakáže různé SpyWare a AdWare, které se instalují s každým druhým softwarem?

To, že program Google bude skenovat Váš email, není problematické. Vaše emaily stejně skenuje FBI, BIS, či řada dalších organizací. Váš email si bez problémů přečte Váš poskytovatel SMTP serveru a POP3 serveru.

Co mi zde ale mimořádně vadí, je rozdílný přístup evropských pitomců k úspěšným, velkým firmám, a k těm ostatním. Ty špatné firmy dostávají subvence (které se berou od firem úspěšných). Také Vám to připomíná komunismus?

0 komentářů

Alternativní CSS styly a jejich přepínání lépe - objektově

Předchozí řešení, přepínání CSS stylů, které jsem popisoval, je plně funkční a komfortní. Lepší přístup je nicméně, místo pár funkcí s parametry, vytvořit si třídu, objekt styleSwitcher.

Pokud budeme předchozí skript používat pro jeden, jediný projekt, není zrovna nutné psát třídu, nicméně, je to, obecně, vhodné. Proč? Třídy jsou o znovupoužitelnosti programového kódu. Za měsíc, dva, budete dělat další projekt, a myslíte si, že je vhodnější pokaždé mírně upravovat zdrojový kód, nebo mít jednu otestovanou třídu, které jen předáte parametry, popřípadě některé funkce podědíte? Samozřejmě, správným řešením je objektové programování 🙂

Tento článek je reakcí na jeden konkrétní, nepovedený seriál na Interval.cz, který obsahuje značně neforemný a nedotažený skript.

Celý článek 0 komentářů

Přepínač CSS stylů (PHP skript) na straně serveru

CSS stylesheets

Na Interval.cz vyšel článek, jak na alternativní CSS styly stránek pomocí serverového skriptování. Domnívám se ale, že pro začátečníka je takovýto seriál málo podrobný, obsahuje pár faktických nedostatků, a pro pokročilého programátora je k ničemu. Ten to dávno zná.

V čem je tento skript podstatně lepší:

  • funguje i v Internet Exploreru a jeho nadstavbách.
  • automaticky generuje formulář, pro volbu a změnu stylu.
  • doplňuje textové popisy stylů.
  • zajišťuje verzování stylů, nutné pro měnící se weby.
  • řeší situaci, kdy v cookie je již neexistující styl.

Nově jsem napsal i třídu styleSwitcher, pro přepínání CSS stylů, je to lepší řešení, podívejte se na ně.

Celý článek 0 komentářů

Zapomeňte na MySQL - podruhé

Děkuji Ottymu za pěkný link na porovnání MySQL a PostgreSQL. Přes hloupoučké reakce některých klučíků na můj předchozí článek, tato nezávislá analýza na openacs.org... zcela s mým článkem souhlasí. 😉

Přeji příjemné čtení!

Co jsem psal já?

Ona MySQL totiž není databáze. Je to primitivní filesystém. Filesystém, který navíc ani nepodporuje (pořádně) transakce, což je další obrovský problém. Pro libovolné aplikace.

Je načase říci, že MySQL je špatná databáze, která je v konečném důsledku pomalá a nepodporuje správné programátorské zvyky a postupy. Tahat data na klienta, kvůli sub-SELECTu, či TRIGGERu je mimořádně špatná koncepce!

Kdyby se lidi weboví chtěli naučit trošku více SQL a PL/SQL a začali používat (taky open-source) PostgreSQL či Firebird, namísto MySQL, řada složitých aplikací by běžela mnohem rychleji!!

Co píše ta analýza?

MySQL is just a glorified filesystem with a SQL interface. MySQL has no subqueries. MySQL has no stored procedures. MySQL has no triggers. MySQL only has table-level locking.

Jinak řečeno, moje dlouhodobé znalosti, mají drtivou převahu oproti flames klučíků, co se mezi sebou poplácávají po ramenou, to jediné jim jde 😉 Moc pěkné 😉 Před pár dny zavedené recenze komentářů, a publikování těch smysluplnných, má smysl. Flames... už nejsou.

PS: ta analýza MySQL byla psaná v roce 2000, před 4 lety, a smutné je, že je stále platná!!!

0 komentářů

Zapomeňte na MySQL! Nic horšího není!

MySQL

Lidé kolem webu mají rádi MySQL. Proč? Protože je to skvělá databáze? Ne. Protože to je primitivní, a v konečném důsledku i mimořádně pomalá databáze, které ovšem ONI rozumí. Pár triviálních SELECT, INSERT, UPDATE příkazů se totiž naučí každý a hned si myslí, že "rozumí databázím"…

Je načase říci, že MySQL je špatná databáze, jednoduchý filesystém, která je v konečném důsledku pomalá a nepodporuje správné programátorské zvyky a postupy. Tahat data na klienta, kvůli sub-SELECTu, či suplovat funkci TRIGGERu v PHP je mimořádně špatná koncepce!

Kdyby se lidi weboví chtěli naučit trošku více SQL a PL/SQL a začali používat (taky open-source) PostgreSQL či Firebird, namísto MySQL, řada složitých aplikací by běžela mnohem rychleji.

Celý článek 2 komentáře