Zobrazují se příspěvky se štítkemProgramování. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemProgramování. Zobrazit všechny příspěvky

pondělí 27. října 2008

Nové weby do vašich oblíbených odkazů

Možná se budete se divit, ale i v tomto měsíci vznikají zajímavé webové projekty a servery. Vybral jsem dva, které mě zaujaly a které by neměly chybět ve vašich oblíbených odkazech.

Microsoftí web nejen pro web designéry
Petr Tichý, toho času zaměstnanec firmy Microsoft, otevírá svůj nový blog ohledně Expression Studia a zajímavostí ze světa Silverlightu. Vzhledem k tomu, že půjde z nějaké té části i o osobní blog, můžete se těšit i na nějaké perličky a záliby týkající se samotného autora. Pokud vás tedy zajímají internetové technologie firmy Microsoft, nezapomeňte sledovat adresu http://blogs.msdn.com/designer/


Root pro Webové vývojáře
Dlouho dobu tu neexistoval kvalitní, česky mluvící, pravidelně aktualizovaný a patřičnou šíři zabírající zdroj informací o vývoji aplikací pro web. Snahu napravit tento nedostatek dostal server Root.cz. Pod jeho taktovkou rozjíždí Martin Hassman nový internetový projekt Zdrojak. Zaměření nového serveru bude právě na komunitu vývojářů využívající webové technologie. Server Root.cz je považován v našich krajích za jistou známku kvality a tak se můžeme těšit na kvalitní „masáž“ pro všechny vývojáře. Do svých oblíbených odkazů si tedy přidejte adresu zdrojak.root.cz .

středa 3. září 2008

Google Chrome a HTTP_USER_AGENT

Chcete vědět jak se Google Chrom tváří pro váš webový server? Hledáte pro svoji statistiku proceduru, která dokáže z PHP proměnné HTTP_USER_AGENT zjistit jaký prohlížeč resp. jaký operační systém používá návštěvník vašich stránek? Chcete aby tato procedura/funkce uměla i nejnovější prohlížeče jako je Mozila Firefox 3.x a  Google Chrome? Právě jste našli. Moje procedura/funkce detect_browser právě všechny tyto podmínky splňuje.

Tato PHP funkce/procedura je založena na rozboru řetězce obsaženém v proměnné $HTTP_USER_AGENT. Výsledkem procedury je naplnění třech globálních proměnných $BName, $BVersion, $BPlatform, které obsahují název prohlížeče, verzi prohlížeče a operační systém na kterém prohlížeč běží.

V poslední verzi 4.1 byla přidána ještě globální proměnná $FceVersion která obsahuje číslo verze detekční procedury/funkce. Tuhle hodnotu lze poměrně dobře využít při dalším zpracovávání vašich statistik nebo při přechodu na novější verzi.

Dále je ve verzi 4.1 je přidána podpora nového prohlížeče GOOGLE Chrome. Pro detekci tohoto nového prohlížeče je použit následující regulérní výraz
...
elseif(eregi("(Chrome)/([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})",$user_agent,$match))
{
$BName = "Chrome"; $BVersion=$match[2];
}
...
A jak vlastně HTTP_USER_AGENT u Google Chrome vypadá? Asi takhle:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13
Úplný výpis zdrojového kódu funkce detect_browser verze 4.1 najdete na stránce http://www.provaz.cz/sector02/clanky-179.html.

pondělí 18. srpna 2008

Problémy s Uploadem souborů na server v PHP

Za poslední zhruba měsíc jsem dostal několik dotazů ohledně mojí PHP procedury pro upload souborů na stranu serveru (http://www.provaz.cz/sector02/clanky-23.php). Více méně řeší všichni programátoři pořád stejný problém. Nedostatečná práva na straně serveru.

I poslední dotaz na toto téma obsahuje následující hlášení:

Warning: move_uploaded_file(indis.gif) [function.move-uploaded-file]: failed to open stream: Permission denied in xxx/www/upload/upload.php on line 25

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'xxx/tmp/phpzfAUn9' to 'indis.gif' in xxx/www/upload/upload.php on line 25
Error - Nemáte dostatečná přístupová práva

Přesto že jsem se s tím setkal již několikrát, univerzální rada na pomoc prozatím asi neexistuje. Nakonec jsem byl nucen tenhle problém většinou řešit z provozovatelem serveru. Jednou stačilo pomoci CHMOD nastavit práva na cílový adresář, jindy byl nutný zásah správce pro nastavení práv přímo v TMP adresáři na serveru. Radím vám všem proto jediné. Pokud někdy narazíte na podobný problém, zkuste kontaktovat nějakou technickou podporu vaše hostingu a poradit se sní, jak příslušná práva nastavit.

Podstatně hůře na tom jsou ty, jenž mají svůj hosting na některém serveru zdarma. Pro tyto typy serverů většinou platí, že podobný přístup je pro ně ohrožující a proto jej nechtějí povolovat.

středa 23. července 2008

HTTP_USER_AGENT a detekce prohlížeče

Proceduru, která umí detekovat typ prohlížeče (browseru) a operačního systému z PHP proměnné HTTP_USER_AGENT jsem již jednou zveřejňoval. Tato procedura je založena na rozboru řetězce obsaženém v proměnné $HTTP_USER_AGENT. Výsledkem procedury je naplnění třech globálních proměnných $BName, $BVersion, $BPlatform, které obsahují název prohlížeče, verzi prohlížeče a operační systém na kterém prohlížeč běží.

Využití této procedur je rozličné. Buď potřebujete generovat pro různé prohlížeče rozdílné kusy kódů nebo jen chcete mít k dispozici nějakou menší statistiku.

Nyní Vám přináším nejnovější verzi (4.0) této procedury. Úpravy jsem provedl hlavně v detekci nových verzí FireFoxu. Do této verze se navíc dostali i další změny, které se u mě nahromadili v průběhu doby. Nově byla přidána např. detekce browseru FLOCK (dnes již ve verzi 1.2.4), opravena detekce verze prohlížeče Safari a přidán OS MS Windows Vista i několik dalších OS založených na Linuxovém jádře (Ubuntu, Debian ...). Protože nový iPhon 3G bude zajisté populární, neopomněl jsem ani na detekci OS iPhone. Celkem umí tato procedura rozpoznat již 12 downloaderů, 27 prohlížečů a 36 operačních systémů. Tento výsledek je mimo jiné postaven na datech získaných v posledních dvou letech. Díky poměrně vysoké návštěvnosti některých mých webových projektů jsem nasbíral více jak 30tisíc hlaviček HTTP_USER_AGENT.

Pro ty šťouravější doporučuji zkontrolovat výsledky této procedury nad libovolným zadaným řetězcem z HTTP_USER_AGENT na stránce http://www.provaz.cz/sector02/statistika_test.php.

V současné době tedy umí tato procedura detekovat následující:

Seznam detekovaných downloaderů, crawlerů a robotů:
  • Offline Explorer
  • Web Downloader
  • Mass Downloader
  • Web Copier
  • Ask Jeeves/Teoma
  • Googlebot
  • Nuk
  • Openbot
  • Slurp
  • IA Archiver
  • MSNBot
  • Yammybot
Seznam detekovaných browserů nebo programů umožňujících zobrazovat webové stránky:
  • Amay
  • Camino (www)
  • Epiphany (www)
  • Chimera (www-unix)
  • FireFox (2.0.0.14; 3.0.1;www)
  • Galeon
  • Flock (1.2.4)
  • Maxthon
  • iCab
  • K-Meleon
  • Konqueror
  • Links
  • Lunascape (4.7.3;www)
  • Lotus
  • Lynx (2.8.4)
  • Mosaic
  • Mozilla
  • MSIE
  • Netscape
  • NetCaptor (7.0.2)
  • Opera (7.0)
  • Safari
  • Songbird (0.5)
  • Sylera (2.2.13)
  • SeaMonkey (www)
  • Sleipnir (www)
  • W3M
Seznam detekovaných operačních systémů:
  • SunOS
  • BeOS
  • CentOS
  • Debian Linux
  • Fedora
  • FreeBSD
  • HP-Unix
  • IRIX
  • iPhone OS
  • Mac OS
  • Mandriva
  • NetBSD
  • OpenBSD
  • OSF
  • OS/2
  • Plan9
  • Red Hat
  • SunOS
  • Symbian OS
  • SUSE Linux
  • Ubuntu Linux
  • Unix
  • Linux
  • Windows 3.11
  • Windows XP
  • Windows 3.11
  • Windows 95
  • Windows 98
  • Windows 2000
  • Windows XP
  • Windows Server 2003
  • Windows Vista
  • Windows 7
  • Windows NT
  • Windows ME
  • Windows CE
A jak tedy vypadá zdrojový kód této procedury? Podrobný výpis této procedury najdete na adrese http://www.provaz.cz/sector02/clanky-179.html .

Pokud je tato procedura pro vás přínosná nebo jiným způsobem vám pomohla, budu rád, když mě o tom dáte vědět. A budu samozřejmě rád i za jakékoli náměty nebo připomínky k této proceduře. Pokud najdete lehce detekovatelnou HTTP_USER_AGENT hlavičku, kterou ještě nemám ve svém seznamu, budu rád, pokud ji pošlete. V tomto případě prosím pošlete celý text, který byl obsažen v HTTP_USER_AGENT a připojte samozřejmě i název OS, název prohlížeče a verzi prohlížeče.

sobota 2. února 2008

Použití knihovny Scriptaculous a efektů SlideUp a SlideDown

Chtěli byste na vašich stránkách nějaké pěkné vizuální efekty pomocí java-scriptu. V tomto týdnu jsem dostal od jednoho ze svých kolegů (StefanoCZ) typ na dobře vypadající knihovnu scriptaculous-js (aktuální verze 1.8.1 na stránce http://script.aculo.us/) .

Je postavena jako ADD-ON knihovny „prototype“ a její použití je opravdu jednoduché. Zvládne to i začínající uživatel. Ihned jsem implementoval efekty SlideUp/ SlideDown na úvodní stránce mého webu http://www.provaz.cz/sector02/ .

A jak vypadá výsledná implementace? Podívejte se sami. Nejdříve je nutné přidat knihovnu do stránky. Provedete například tímto způsobem:

<script language="JavaScript" src="js/prototype.js" type="text/javascript"></script>

<script language="JavaScript" src="js/effects.js" type="text/javascript"></script>


Následuje zapsání jednoduché funkce, kterou budete volat ze stránky. V případě funkce Effect.SlideUp/ Effect.SlideDown jsem použil následující zápis:

<script type="text/javascript">
BoxUpDown = function(idElement,idObr)

{

if( $(idElement).visible() )

{

new Effect.SlideUp( $(idElement) );

}

else

{

new Effect.SlideDown( $(idElement) );

}

}

</script>


Funkce BoxUpDown má kromě parametru „idElement“ ještě parametr „idObr“. Ten je použit například pro změnu obrázku v kódu který zde pro zjednodušení neuvádím.

Poslední věc, která nám chybí, je implementace na nějaký objekt stránky. V tomto případě jde o jednoduché zasunutí/vysunutí boxu s novinkami. Funkce BoxUpDown je implemtována v kliknutí na obrázek. Implementace je tedy např. následující:

<div id="headnews"> Novinky

<a href="#" onClick=" BoxUpDown ('news-programing', 'menu_icon_01'); false;">

<img src="images/icon_menu_up.gif" alt="" name="menu_icon_01" id="menu_icon_01" width="15" height="15" border="0">

</a>

</div>

<div id="news ">

<div>text xxxxx</div>

</div>


A to je opravdu vše. Je to opravdu jednoduché! Jen připomínám že knihovnu můžete stáhnout na drese http://script.aculo.us/ . Knihovna obsahuje i framework prototype.js. Popis implementace zde uvedený najdete také dostupný na stránce http://www.provaz.cz/sector02/clanky-172.html

Jiří Provazník

čtvrtek 24. ledna 2008

Příklad použití FindFirstFile a FindNextFile v DELPHI

Pokud sháníte příklad jak používat funkce FindFirstFile a FindNextFile v DELPHI, musíte rozhodně navštívit moje stránky. Připravil jsem tam v sekci programování nový příklad právě na tyto funkce. Najdete tam informace například o funkcích FindFirstFile, FindNextFile, FindClose, informace o strukturách TWIN32FINDDATAA, WIN32_FIND_DATA a WIN32_FIND_DATAA. Tak neváhejte a navštivte adresu http://www.provaz.cz/sector02/clanky-170.html

neděle 30. prosince 2007

MetaWeblog API

Již nějakou dobu uvažuji o využití blogovacích programů pro vlastní webové stránky. Proto sem se poohlížel o nějaké jednoduché implementaci, která by podobnou komunikaci dovolila. Jako nejschůdnější cestou se mě zdálo využít standardu Metaweblog API.

Jde o univerzální standard, který umožňuje komunikaci aplikací. Zejména se jej využívá při komunikaci s blogy. Umožňuje jak snadnou správu jejich obsahu tak a nastavení doplňujících informací. Základem komunikace je vzdálené volání procedur XML-RPC na cílové webové aplikaci. MetaWeblog API je rozšířením staršího Blogger API. To bohužel bylo navrženo jen pro jednoduché aplikace a některé věci proto nepotřebovalo. Proto bylo vytvořeno MetaWeblog API které jej podstatně rozšiřuje. Komunikace využívá HTTP protokolu, pomocí kterého dochází k přenášení XML informací pro obě zúčastněné strany.

Na straně WINDOWS aplikace se mě poslední dobou nejvíce zamlouvá aplikace WINDOWS LIVE WRITER. Tato aplikace umožňuje i napojení na blogy podporující MetaWeblog API. Na straně vlastního webu, psaného převážně v PHP, se mě nejvíce zamlouvalo využití XML-RPC Library for PHP (v 2.5) z KeithDevens.com. Jde vlastně o jednu unitu, která výrazně zjednoduší psaní kódu. Na stránkách je i jednoduchý příklad jak implementaci provést.

Vlastní dokončení implementace pak již znamenalo akorát zapsat několik procedur v PHP, které by odpovídali procedurám MetaWeblog API. Pokud si přece jenom nejste jisti s tím, jak by měli některé XML pakety vypadat, najdete určitě pomoc na následujících odkazech.

[1] XML-RPC Library for PHP (v 2.5) ... http://keithdevens.com/software/xmlrpc

[2] BLOGGER API 1.0 ... http://www.blogger.com/developers/api/1_docs/

[3] RFC: MetaWeblog API ... http://www.xmlrpc.com/metaWeblogApi

[4] metaWeblog API ... http://www.sixapart.com/developers/xmlrpc/metaweblog_api/

[5] Movable Type API ... http://www.sixapart.com/developers/xmlrpc/movable_type_api/

[6] Tři zajímavé články o MetaWeblog a ASP.NET od pana T. Hercega

Tento článek najdete také na stránkách http://www.provaz.cz/sector02/clanky-165.html

Značky Technorati: ,,,,