<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блоґ &#124; MrGALL.com &#187; Веб-розробка</title>
	<atom:link href="http://mrgall.com/blog/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://mrgall.com/blog</link>
	<description>блоґ про те, що мене цікавить саме зараз</description>
	<lastBuildDate>Mon, 22 Feb 2010 22:42:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>uk</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Власний домен для комп’ютера з динамічною IP</title>
		<link>http://mrgall.com/blog/2009/09/15/own-domain-for-dynamic-ip/</link>
		<comments>http://mrgall.com/blog/2009/09/15/own-domain-for-dynamic-ip/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 02:11:41 +0000</pubDate>
		<dc:creator>MrGALL</dc:creator>
				<category><![CDATA[Веб-розробка]]></category>

		<guid isPermaLink="false">http://mrgall.com/blog/?p=590</guid>
		<description><![CDATA[Інколи хочеться мати доступ до свого ком’ютера, коли знаходишся поза домом.
Наприклад глянути, як там качаються торенти, або дуже потрібно отримати файл, що лежить вдома на вінті, чи ще щось (в житті всяке буває).
Але от проблема — провайдер хоча і видає реальні IP (що не починаються на 10. або 192.168.) але періодично їх міняє (а якщо [...]]]></description>
			<content:encoded><![CDATA[<p>Інколи хочеться мати доступ до свого ком’ютера, коли знаходишся поза домом.<br />
Наприклад глянути, як там качаються торенти, або дуже потрібно отримати файл, що лежить вдома на вінті, чи ще щось (в житті всяке буває).</p>
<p>Але от проблема — провайдер хоча і видає реальні IP (що <strong>не</strong> починаються на 10. або 192.168.) але періодично їх міняє (а якщо  взагалі не видає то цю статтю далі можна не читати).<br />
Послуга «постійний ІР» рятує, але її надають не всі провайдера, та й коштує вона інколи до половини плати за інтернет.</p>
<p>Для часткового вирішення цієї проблеми існують сервіси типу <a href="http://www.no-ip.com/">no-ip</a> чи <a href="http://www.dyndns.com/">DynDNS</a>.<br />
Реєструєтесь, встановлюєте на комп’ютер клієнт і отримуєте домен виду user.no-ip.com, який постійно вказує на ваш комп’ютер.<br />
Більшість користувачів це б задовольнило, але не мене <img src='http://mrgall.com/blog/wp-includes/images/smilies/imbad.gif' alt=':imbad:' class='wp-smiley' /> </p>
<p>Я б хотів, щоб домен був наприклад <strong>macbook.mrgall.com</strong> (тобто був би субдоменом в моєму власному домені).</p>
<p>Виявляється це не так вже й складно зробити, достатньо дописати в налаштування DNS такий CNAME запис:</p>
<p><img src="http://mrgall.com/blog/wp-content/2009/09/linode2.png" alt="linode" /></p>
<p>Значення TTL (time to live) потрібно вказати мінімально можливе (в мене це 5хв).</p>
<p>Після цього можна зайти на домашній комп’ютер за допомогою ssh (звісно, якщо у вас на ком’ютері встановлений сервер openssh):</p>
<p><code>ssh user@macbook.mrgall.com</code></p>
<p>Найприкольніше це робити сидячи на дивані і керуючи ком’ютером з телефону (для <a href="http://mrgall.com/blog/2008/11/19/t-mobile-g1-google-android/">Android’у</a> є ssh-клієнт) <img src='http://mrgall.com/blog/wp-includes/images/smilies/wink.gif' alt=':wink:' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://mrgall.com/blog/2009/09/15/own-domain-for-dynamic-ip/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>ІЕ6: святкуємо ювілей разом!</title>
		<link>http://mrgall.com/blog/2009/07/28/ie6-must-die-now/</link>
		<comments>http://mrgall.com/blog/2009/07/28/ie6-must-die-now/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 18:51:06 +0000</pubDate>
		<dc:creator>MrGALL</dc:creator>
				<category><![CDATA[Веб-розробка]]></category>

		<guid isPermaLink="false">http://mrgall.com/blog/?p=583</guid>
		<description><![CDATA[ В цьому дописі я не буду писати про те, що таке ІЕ6, чому його ненавидять усі веб-розробники та які є хаки, щоб він поводився більш-менш пристойно.
Я пропоную святкувати. Святкувати 8-му річницю дійсно чудового продукту, який зветься Internet Explorer 6! 
А як же може бути інакше, якщо він з’явився аж 27 серпня 2001 року (за [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://mrgall.com/blog/wp-content/2009/07/3315062242_c21a4fd24c_m.jpg"  alt="Коли ж ти здохнеш, скотино?" title="Коли ж ти здохнеш, скотино?" style="float:right;margin:0 0 20px 20px;width:150px;" /> В цьому дописі я не буду писати про те, що таке ІЕ6, чому його ненавидять усі веб-розробники та які є хаки, щоб він поводився більш-менш пристойно.</p>
<p>Я пропоную святкувати. Святкувати 8-му річницю дійсно чудового продукту, який зветься <strong>Internet Explorer 6</strong>! <img src='http://mrgall.com/blog/wp-includes/images/smilies/jumping.gif' alt=':jumping:' class='wp-smiley' /><br />
А як же може бути інакше, якщо він з’явився аж <strong>27 серпня 2001 року</strong> (за 2 тижні до трагедії 9/11) але ним і досі користуються 20% інтернет-користувачів в світі (в Україні — 15%)? <del datetime="2009-07-28T17:48:27+00:00">Мільйони мух не можуть помилятися!</del><br />
Тому давайте відкинемо всі стереотипи і відзначимо ювілей браузера, який мав, має та ще довго матиме величезний вплив на Веб.</p>
<p>Які ж варіанти святкування? Ось невеликий список того, що ви можете зробити в цей дійсно святковий день. Варіанти йдуть від найпростішого до найрадикальнішого, і нехай кожен веб-майстер обирає самостійно ;)</p>
<p>— Невеликий банер або короткий текст про необхідність дати ювіляру відпочити і пропозицією перейти на актуальні браузери (<a href="http://ukrbash.org/get/opera">Opera 9</a>, <a href="http://ukrbash.org/get/firefox">Firefox 3.5</a>, <a href="http://ukrbash.org/get/ie">Internet Explorer 8</a>).<br />
— Великий банер або цілу статтю про те ж саме.<br />
— Блок в шапці сайту, подібний до того, що вже зараз показується на <a href="http://www.youtube.com/">YouTube</a>, <a href="http://ukrbash.org/">Укрбаші</a>, <a href="http://blogoreader.org.ua/">Блогорідері</a>, <a href="http://masterpiecer.org.ua/">Блозі Masterpiecer’а</a> та багато інших,  якщо зайти на них з ІЕ6 (<a href="http://files.mrgall.com/stuff/ukrbash_noie.png">скріншот</a> для тих, у кого немає можливості це побачити).<br />
— Блок посередині екрану з можливістю його закрити.<br />
— Блок, що буде заміняти собою увесь контент сайту без можливості побачити сайт в ІЕ6.<br />
— Код, що буде спричиняти «вилітання» ІЕ6 (приклад коду в <a href="http://mrgall.com/dev/crashie.html">дії</a>).</p>
<p>Запам’ятайте цей день: <strong>27 серпня 2009 року</strong> та починайте готуватися вже зараз бо таку подію не можна пропустити (і ще невідомо, чи доживе наш ювіляр до 9-ї річниці <img src='http://mrgall.com/blog/wp-includes/images/smilies/wink.gif' alt=':wink:' class='wp-smiley' /> ).</p>
<p>Корисні посилання:<br />
<a href="http://wordpress.org/extend/plugins/shockingly-big-ie6-warning/">Shockingly Big IE6 Warning</a> — плагін для WP<br />
<a href="http://www.stopie6.com/">Stop IE6!</a><br />
<a href="http://upgradebrowser.org.ua/">Upgrade Browser</a><br />
<a href="http://goodbyeie6.org.ua/ua_index.html">Goodbye IE6</a><br />
<a href="http://iedeathmarch.org/">IE Death March</a><br />
<a href="http://ie6update.com/">IE6 Update</a><br />
та багато інших — google it!</p>
<p>Дописи в блогах:<br />
<a href="http://masterpiecer.org.ua/said/emergency-let-ie6-die/">Прийшов час смерті Internet Explorer 6!, або не ґвалтуйте труп</a> — Блог masterpiecer’а<br />
<a href="http://blogoreader.org.ua/2009/07/24/stop-internet-explorer-6/">Internet Explorer 6: прощання з минулим</a> — Блогорідер<br />
<a href="http://www.sidirom.org.ua/?p=258">Який браузер кращий?</a> — Sidirom’s Blog<br />
<a href="http://ged.org.ua/2009/07/velykyj-test-brauzeriv/">Великий тест браузерів</a> — G3Ds blog<br />
<a href="http://skinik.name/blog/795.html">Оголоси війну IE 6</a> — skinik блоґ<br />
<a href="http://linuxman.org.ua/2009/08/27/richnytsya-brazuera-internet-explorer-6/">Річниця бразуера Internet Explorer 6</a> — Блоґ LinuxMan&#8217;а<br />
(присилайте пінґбеки або залишайте лінк в коментарях)</p>
<p><strong>Прохання проанонсувати цей заклик до святкувань у Ваших блогах, твіттерах та інших місцях, де ви зазвичай пишете про подібне <img src='http://mrgall.com/blog/wp-includes/images/smilies/wink.gif' alt=':wink:' class='wp-smiley' /> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://mrgall.com/blog/2009/07/28/ie6-must-die-now/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Веб-(ло)мастери 3</title>
		<link>http://mrgall.com/blog/2008/08/20/web-lomastery-3/</link>
		<comments>http://mrgall.com/blog/2008/08/20/web-lomastery-3/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 21:06:19 +0000</pubDate>
		<dc:creator>MrGALL</dc:creator>
				<category><![CDATA[Веб-розробка]]></category>
		<category><![CDATA[Гумор]]></category>

		<guid isPermaLink="false">http://mrgall.com/blog/?p=384</guid>
		<description><![CDATA[Приблизно рік тому я писав (1 і 2) про різні нісенітниці, що я знаходив у вихідних кодах html сторінок.
І от сьогодні я натрапив на черговий шедевр:
&#60;meta http-equiv="content-type" content="text/html; charset=windows-utf-8" /&#62;
Як то кажуть — без коментарів  
]]></description>
			<content:encoded><![CDATA[<p>Приблизно рік тому я писав (<a href="http://mrgall.com/blog/2007/06/25/web-lomastery/">1</a> і <a href="http://mrgall.com/blog/2007/07/30/web-lomastery-2/">2</a>) про різні нісенітниці, що я знаходив у вихідних кодах html сторінок.<br />
І от сьогодні я натрапив на черговий шедевр:<br />
<code>&lt;meta http-equiv="content-type" content="text/html; charset=windows-utf-8" /&gt;</code><br />
Як то кажуть — без коментарів <img src='http://mrgall.com/blog/wp-includes/images/smilies/wink.gif' alt=':wink:' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://mrgall.com/blog/2008/08/20/web-lomastery-3/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Зручне керування доменами: продовження</title>
		<link>http://mrgall.com/blog/2008/07/31/dns-managment-2/</link>
		<comments>http://mrgall.com/blog/2008/07/31/dns-managment-2/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 12:34:16 +0000</pubDate>
		<dc:creator>MrGALL</dc:creator>
				<category><![CDATA[Веб-розробка]]></category>

		<guid isPermaLink="false">http://mrgall.com/blog/?p=358</guid>
		<description><![CDATA[Півроку тому я писав про те, як зручно керувати багатьма доменами, переносити їх від одного хостера до іншого і т.п.
Ідея полягала в тому, що варто зробити власні ДНС-сервери, а потім, при переїзді, необхідно лише поміняти ІР адреси одного домену, а решта зміниться автоматично.
Але тоді виникла одна проблема — для доменів .org (наприклад ukrbash.org) я не [...]]]></description>
			<content:encoded><![CDATA[<p>Півроку тому я <a href="http://mrgall.com/blog/2008/02/09/dns-managment/">писав</a> про те, як зручно керувати багатьма доменами, переносити їх від одного хостера до іншого і т.п.</p>
<p>Ідея полягала в тому, що варто зробити власні ДНС-сервери, а потім, при переїзді, необхідно лише поміняти ІР адреси одного домену, а решта зміниться автоматично.<br />
Але тоді виникла одна проблема — для доменів .org (наприклад <strong>ukrbash.org</strong>) я не зміг поміняти ДНС-сервери на <strong>ns1/ns2.tereveni.org</strong>:<br />
<code>NameServer ns1.tereveni.org is not a valid Nameserver<br />
NameServer ns2.tereveni.org is not a valid Nameserver</code><br />
Я писав у службу підтримки реєстратора, але вони мені так і не сказали, в чому була причина.</p>
<p>Потім я <a href="http://mrgall.com/blog/2008/07/21/domain-transfer/">змінив реєстратора</a> але і в нього поміняти ДНС-сервери для <strong>ukrbash.org</strong> не вийшло (для <strong>ukrbash.com</strong> і <strong>ukrbash.net</strong> я їх поміняв без проблем).<br />
Я написав у їх службу підтримки — мені відповіли, що треба почекати 24 години після трансферу, а потім вже міняти ДНС-сервери. Я для гарантії почекав 2 дні і ще раз спробував — знову невдало.<br />
Я написав ще раз — і мені нарешті пояснили, в чому справа.<br />
Виявляється, що для того, щоб поставити <strong>ns1/ns2.tereveni.org</strong> як ДНС-сервери для <strong>ukrbash.org</strong>, необхідно щоб <strong>ns1/ns2.tereveni.org</strong> були ДНС-серверами для <strong>tereveni.org</strong> — це вимога зони .org</p>
<p><strong>tereveni.org</strong> в мене підтримувався ДНС-серверами реєстратора dns.com.ua.<br />
Довелося перевести <strong>tereveni.org</strong> на <strong>ns1/ns2.tereveni.org</strong>, але щоб це все працювало, необхідно, щоб у <strong>tereveni.org</strong> були такі записи:<br />
<code>tereveni.org. IN NS ns1.tereveni.org.<br />
tereveni.org. IN NS ns2.tereveni.org.<br />
ns1.tereveni.org. IN A 62.149.12.21<br />
ns2.tereveni.org. IN A 195.149.112.1</code><br />
Якщо не буде 3 і 4 рядків, то відбудеться dns loop і вся конструкція перестане працювати.<br />
Тепер всі мої домени мають ДНС-сервери <strong>ns1/ns2.tereveni.org</strong> і я можу перенести їх на інший хостинг протягом 5-10хв (+ доба на оновлення кешів ДНС-серверів по всьому світу) <img src='http://mrgall.com/blog/wp-includes/images/smilies/smile.gif' alt=':smile:' class='wp-smiley' /> </p>
<p>P.S. Це не означає, що я вже збираюсь міняти Колокол на якийсь інший хостинг (Колокол мене повністю влаштовує) але за півроку-рік все може помінятися.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrgall.com/blog/2008/07/31/dns-managment-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress та кодування</title>
		<link>http://mrgall.com/blog/2008/07/19/wordpress-and-encoding/</link>
		<comments>http://mrgall.com/blog/2008/07/19/wordpress-and-encoding/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 18:30:09 +0000</pubDate>
		<dc:creator>MrGALL</dc:creator>
				<category><![CDATA[Веб-розробка]]></category>
		<category><![CDATA[Сайт]]></category>

		<guid isPermaLink="false">http://mrgall.com/blog/?p=305</guid>
		<description><![CDATA[Оскільки в мене з’явилося трохи вільного часу — я почав переписувати свою домашню сторінку.
Що потрібно зробити:

новий двигунець — зараз фактично є набір скриптів, що мало пов’язані між собою
англомовна версія — хоча б інформація про мене та резюме
новий дизайн — є декілька ідей, але вони ще на стадії створення макету
XHTML 1.0 Strict та utf8 — зараз [...]]]></description>
			<content:encoded><![CDATA[<p>Оскільки в мене з’явилося трохи вільного часу — я почав переписувати свою домашню сторінку.<br />
Що потрібно зробити:</p>
<ul>
<li>новий двигунець — зараз фактично є набір скриптів, що мало пов’язані між собою</li>
<li>англомовна версія — хоча б інформація про мене та резюме</li>
<li>новий дизайн — є декілька ідей, але вони ще на стадії створення макету</li>
<li>XHTML 1.0 Strict та utf8 — зараз це є лише в блозі</li>
<li>AJAX в галереї та скриптах — потрібно не відставати від прогресу <img src='http://mrgall.com/blog/wp-includes/images/smilies/smile.gif' alt=':smile:' class='wp-smiley' /> </li>
<li>та багато іншого…</li>
</ul>
<p>Почав я з 4-го пункту, а саме з перекодування бази в utf8.<br />
Там знаходяться таблиці WordPress’у, <a href="http://mrgall.com/gallery/">галереї</a>, <a href="http://mrgall.com/blog/category/webdev/">подкасту</a> і т.п.</p>
<p>Таблиці <a href="http://mrgall.com/gallery/">галереї</a> були в cp1251, тому перекодування їх в utf8 пройшло без проблем.<br />
В скрипті галереї я додав лише один рядок (оскільки вона і досі генерує сторінки в cp1251, це зміниться лише після переходу на новий двигунець).<br />
<code>mysql_query("SET NAMES 'cp1251';", $link);</code></p>
<p>Таблиці <a href="http://mrgall.com/blog/category/webdev/">подкасту</a> я створював відносно недавно, тому вони вже були в utf8 <img src='http://mrgall.com/blog/wp-includes/images/smilies/wink.gif' alt=':wink:' class='wp-smiley' /> </p>
<p>Таблиці WordPress’у на перший погляд були в cp1251, але спроба поміняти кодування закінчилася невдало — кириличний текст став таким: РЅРµРѕРїСѓР±Р»С–РєРѕРІР°РЅРµ</p>
<p>Після ґуґління™ я знайшов причину цих глюків.<br />
<strong>Раніше (ще 2-3 роки тому) MySQL по замовчуванню налаштовували на cp1251 (якщо це вітчизняний хостинг) або latin1 (якщо зарубіжний). А WordPress взаємодіє з базою в кодуванні utf8 навіть якщо база має зовсім інше кодування.<br />
Тому блоґер спокійно веде свій блоґ навіть не знаючи, які проблеми у нього виникнуть в майбутньому <img src='http://mrgall.com/blog/wp-includes/images/smilies/sad.gif' alt=':sad:' class='wp-smiley' /> </strong><br />
А ці проблеми рано чи пізно з’являться — після переходу на інший хостинг або після оновлення ПО на поточному. Новий MySQL по замовчуванню починає використовувати utf8 і в блозі збивається кодування.<br />
Це можна тимчасово виправити за допомогою таких рядків в wp-config.php<br />
<code>define('DB_CHARSET', 'cp1251');<br />
define('DB_COLLATE', 'cp1251_general_ci');</code><br />
Фактично це повернення статусу-кво — для MySQL кодування бази є cp1251 а WordPress взаємодіє з нею в кодуванні utf8.</p>
<p>В такому вигляді мій блоґ міг жити і далі, але я люблю порядок в усьому <img src='http://mrgall.com/blog/wp-includes/images/smilies/imbad.gif' alt=':imbad:' class='wp-smiley' /><br />
Що потрібно зробити — змінити кодування бази (cp1251 -> utf8), при цьому не перекодовуючи базу (оскільки текст в ній вже є в utf8).</p>
<p>Ну а що ж тут важкого? Беремо дамп бази в phpmyadmin, відкриваємо його в текстовому редакторі як файл в кодуванні utf8 і скрізь міняємо<br />
<code>DEFAULT CHARSET=cp1251</code><br />
на<br />
<code>DEFAULT CHARSET=utf8</code><br />
Але проблема тут в тому, що phpmyadmin бачить, що база в нас в cp1251, тому при експорті автоматично перекодовує її cp1251 -> utf8 (а цього нам якраз і не треба, оскільки база і так вже в utf8).</p>
<p>Є інших спосіб — потрібно змінити тип усіх текстових полів таблиці (CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT) на їх бінарні аналоги (BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB), потім змінити кодування таблиці на utf8 а потім поміняти тип полів назад на текстові.<br />
Лінк в тему — <a href="http://blogoreader.org.ua/2008/06/18/moving-wordpress-to-new-hosting/">Перенесення Wordpress блогу на інший хостинг</a><br />
Таблиць у нас 10-15 (залежно від встановлених плагінів) тому це не шлях справжніх <del datetime="2008-07-19T18:15:32+00:00">самураїв</del> ІТ’шників <img src='http://mrgall.com/blog/wp-includes/images/smilies/smile.gif' alt=':smile:' class='wp-smiley' /> </p>
<p>Я знайшов швидший спосіб, але він потребує доступу до хостингу по ssh.<br />
Експортуємо базу в тому вигляді, в якому вона є<br />
<code>mysqldump -u користувач --password=пароль --opt --default-character-set=cp1251 --skip-set-charset -Q база > dump.sql</code><br />
Завантажуємо дамп собі на комп’ютер, відкриваємо його як файл в кодуванні utf8, скрізь міняємо<br />
<code>DEFAULT CHARSET=cp1251</code><br />
на<br />
<code>DEFAULT CHARSET=utf8</code><br />
і зберігаємо (теж як utf8, бажано без BOM).<br />
Далі створюємо нову базу (вже в кодуванні utf8) та імпортуємо туди цей файл.<br />
Потім модифікуємо wp-config.php (змінюємо базу зі старої на нову) і, для повної гарантії, додаємо такі рядки:<br />
<code>define('DB_CHARSET', 'utf8');<br />
define('DB_COLLATE', 'utf8_general_ci');</code></p>
<p>Все, можна спокійно писати в блоґ <img src='http://mrgall.com/blog/wp-includes/images/smilies/jumping.gif' alt=':jumping:' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://mrgall.com/blog/2008/07/19/wordpress-and-encoding/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OpenID</title>
		<link>http://mrgall.com/blog/2008/06/11/openid/</link>
		<comments>http://mrgall.com/blog/2008/06/11/openid/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 14:35:25 +0000</pubDate>
		<dc:creator>MrGALL</dc:creator>
				<category><![CDATA[Веб-розробка]]></category>

		<guid isPermaLink="false">http://mrgall.com/blog/?p=280</guid>
		<description><![CDATA[Якщо ви активний користувач інтернету, то у вас має бути сила-силенна профілів на різних сайтах. Для входу на сайт потрібно знати пару логін/пароль.
Логін зазвичай використовується однаковий (звісно, якщо він не зайнятий), а пароль вже після 5-го разу набридає придумувати і користувачі починають використовувати один і той же пароль на усіх сайтах.
Продвинуті користувачі використовують 2-3 версії [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://mrgall.com/blog/wp-content/2008/06/openid.gif" alt="" title="OpenID logo" style="float:left;margin:0 15px 15px 0;" />Якщо ви активний користувач інтернету, то у вас має бути сила-силенна профілів на різних сайтах. Для входу на сайт потрібно знати пару логін/пароль.</p>
<p>Логін зазвичай використовується однаковий (звісно, якщо він не зайнятий), а пароль вже після 5-го разу набридає придумувати і користувачі починають використовувати один і той же пароль на усіх сайтах.</p>
<p>Продвинуті користувачі використовують 2-3 версії паролів для різніх рівнів безпеки — наприклад:</p>
<ul>
<li>чати/форуми/блоґи (~90%) — найпростійший пароль</li>
<li>е-пошта/інтернет-пейджери (~7%) — трохи складніший</li>
<li>онлайн-банк/електронні гроші/інші важливі сервіси (~3%) — найскладніший</li>
</ul>
<p>Виникає питання — а чи не має такої технології, що дозволяє на усіх сайтах використовувати один логін/пароль?</p>
<p>Така технологія є, і називається вона <a href="http://openid.net/">OpenID</a>.</p>
<p>Суть її ось в чому — ви реєструєтесь на одному сайті, який є OpenID-провайдером, і використовуєте цей логін на усіх сайтах, що підтримують вхід на сайт за допомогою OpenID.</p>
<p>Де ж знайти OpenID-провайдера?<br />
Виявляється нічого шукати не треба, скоріше за все у вас вже є OpenID, якщо ви зареєстровані на одному з цих сайтів:</p>
<ul>
<li><a href="http://www.livejournal.com/">livejournal.com</a></li>
<li><a href="http://www.blogger.com/">blogger.com</a></li>
<li><a href="http://www.flickr.com/">flickr.com</a></li>
<li><a href="http://www.wordpress.com/">wordpress.com</a></li>
<li><a href="http://www.yahoo.com/">yahoo.com</a></li>
<li><a href="http://www.yandex.ru/">yandex.ru</a></li>
<li><a href="http://sourceforge.net/">sourceforge.net</a></li>
</ul>
<p>Якщо у вас є блоґ на livejournal.com то ваш OpenID буде <strong>ім’я.livejournal.com</strong><br />
Ви можете використовувати його для входу на будь-який сайт, де побачите ось таку іконку: <img src="http://mrgall.com/blog/wp-content/plugins/openid/files/openid.gif" alt="OpenID icon" style="vertical-align:middle;" /><br />
Наприклад, спробуйте <a href="http://ukrbash.org/login">авторизуватися на УкрБаші</a> (де я тиждень тому додав підтримку цієї технології <img src='http://mrgall.com/blog/wp-includes/images/smilies/wink.gif' alt=':wink:' class='wp-smiley' /> ) і для вас автоматично створиться та авторизується користувач <strong>ім’я.livejournal.com</strong> (при традиційній реєстрації потрібно вводити логін/пароль і активувати профіль через лінк, що приходить на вашу е-пошту).<br />
Також підтримку OpenID має <a href="http://mrgall.com/blog/">мій блоґ</a> та <a href="http://blog.ukrbash.org/">блоґ УкрБашу</a> (для коментування дописів).</p>
<p>Але автоматична реєстрація на сайті це ще не все. Ви можете входити на сайт, використовуючи свій OpenID. При цьому, якщо ви обрали постійну авторизацію на сайті OpenID-провайдера, то вводити пароль не потрібно і вхід відбудеться автоматично (крім 1-го разу).<br />
На УкрБаші можна до вже існуючого користувача додати OpenID і використовувати його для входу.</p>
<p>Створений користувач буде мати ім’я та адресу сайту, що використовується як OpenID.<br />
Але чи можна використовувати власний сайт як OpenID?<br />
Виявляється можна — мій OpenID це <a href="http://mrgall.com/">mrgall.com</a> <img src='http://mrgall.com/blog/wp-includes/images/smilies/wink.gif' alt=':wink:' class='wp-smiley' /> </p>
<p>Щоб використовувати власний домен як OpenID потрібно:</p>
<p>1. <strong>Обрати OpenID-провайдера.</strong> Ви можете використовувати ваш існуючий профіль (наприклад на LiveJournal, Яндексі чи Yahoo) або зареєструватися на спеціальному OpenID-провайдері (наприклад <a href="http://myopenid.com/">myopenid.com</a>).</p>
<p>Я зареєструвався на myopenid.com і мій OpenID це <a href="http://mrgall.myopenid.com/">mrgall.myopenid.com</a>.</p>
<p>2. <strong>Дізнатися код, що потрібно додати на ваш сайт.</strong> Для цього потрібно зайти на вашу сторінку на сайті OpenID-провайдера і у вихідних кодах сайту знайти такі рядки:<br />
<code><br />
&lt;link rel="openid.server" href="http://адреса.серверу" /&gt;<br />
&lt;link rel="openid.delegate" href="http://ваш.OpenID" /&gt;<br />
&lt;link rel="openid2.provider" href="http://адреса.серверу" /&gt;<br />
&lt;link rel="openid2.local_id" href="http://ваш.OpenID" /&gt;<br />
&lt;meta http-equiv="X-XRDS-Location" content="http://адреса.сторінки.на.сервері" /&gt;<br />
</code><br />
Це записи для OpenID версій 1 і 2, якщо ваш OpenID-провайдер підтримує OpenID лише 1ї версії то рядки 3й та 4й будуть відсутні. 5й рядок теж може бути відсутній.<br />
Якщо ви не знайшли 2й та 4й рядки то не біда, ви можете зробити їх самостійно, підставивши адресу вашої сторінки на сайті OpenID-провайдера.</p>
<p>Якщо ви вирішили використовувати livejournal.com то ваш код буде таким:<br />
<code><br />
&lt;link rel="openid.server" href="http://www.livejournal.com/openid/server.bml" /&gt;<br />
&lt;link rel="openid.delegate" href="http://<strong>ім’я</strong>.livejournal.com" /&gt;<br />
&lt;meta http-equiv="X-XRDS-Location" content="http://<strong>ім’я</strong>.livejournal.com/data/yadis" /&gt;<br />
</code></p>
<p>Мій код:<br />
<code><br />
&lt;link rel="openid.server" href="http://www.myopenid.com/server" /&gt;<br />
&lt;link rel="openid.delegate" href="http://mrgall.myopenid.com" /&gt;<br />
&lt;link rel="openid2.provider" href="http://www.myopenid.com/server" /&gt;<br />
&lt;link rel="openid2.local_id" href="http://mrgall.myopenid.com" /&gt;<br />
&lt;meta http-equiv="X-XRDS-Location" content="http://mrgall.myopenid.com/xrds" /&gt;<br />
</code></p>
<p>3. <strong>Додати цей код на ваш сайт.</strong> Це потрібно зробити між &lt;head&gt; та &lt;/head&gt;.<br />
Приклад ви можете побачити в мене на <a href="http://mrgall.com/">головній сторінці</a>.</p>
<p>Після цих 3х кроків ви зможете використовувати ваш домен як OpenID <img src='http://mrgall.com/blog/wp-includes/images/smilies/jumping.gif' alt=':jumping:' class='wp-smiley' /> </p>
<p>Вдалого користування <img src='http://mrgall.com/blog/wp-includes/images/smilies/wink.gif' alt=':wink:' class='wp-smiley' /> </p>
<p>Для веб-майстерів, що хочуть додати OpenID на свій сайт:<br />
<a href="http://openidenabled.com/php-openid/">PHP OpenID Library</a><br />
<a href="http://daeq.ru/2007/12/28/openid-integration/">Интеграция OpenID в ваш сайт</a><br />
<a href="http://wordpress.org/extend/plugins/openid/">WP-OpenID</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mrgall.com/blog/2008/06/11/openid/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Автоматичне визначення кодування</title>
		<link>http://mrgall.com/blog/2008/02/13/autoencode/</link>
		<comments>http://mrgall.com/blog/2008/02/13/autoencode/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 13:20:00 +0000</pubDate>
		<dc:creator>MrGALL</dc:creator>
				<category><![CDATA[Веб-розробка]]></category>

		<guid isPermaLink="false">http://mrgall.com/blog/2008/02/13/autoencode/</guid>
		<description><![CDATA[ Існує дуже багато (я б навіть сказав занадто багато) різних кодувань для кирилиці (і української мови зокрема):
&#8211; UTF-8 (Unicode), яка все більше набирає популярності, як серед ОС так і в Інтернеті
&#8211; CP1251 (ака Windows-1251), яка залишилась в спадок від старих версій Windows
&#8211; KOI8-U (або KOI8-R), яка залишилася в спадок від старих версіх *nix&#8217;ів (Linux, [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://mrgall.com/blog/wp-content/2008/02/unicode_logo.gif' style='margin:0 20px 10px 0;float:left;' alt='Юнікод' /> Існує дуже багато (я б навіть сказав занадто багато) різних кодувань для кирилиці (і української мови зокрема):</p>
<p>&#8211; <strong><a href="http://en.wikipedia.org/wiki/UTF-8">UTF-8</a></strong> (Unicode), яка все більше набирає популярності, як серед ОС так і в Інтернеті<br />
&#8211; <strong><a href="http://en.wikipedia.org/wiki/CP1251">CP1251</a></strong> (ака Windows-1251), яка залишилась в спадок від старих версій Windows<br />
&#8211; <strong><a href="http://en.wikipedia.org/wiki/KOI8-U">KOI8-U</a></strong> (або KOI8-R), яка залишилася в спадок від старих версіх *nix&#8217;ів (Linux, FreeBSD)<br />
&#8211; <strong>MacUkraine</strong> (або <a href="http://en.wikipedia.org/wiki/MacCyrillic_encoding">MacCyrillic</a>), яка залишилася в спадок від старих версіх MacOS<br />
&#8211; <strong><a href="http://en.wikipedia.org/wiki/CP866">CP866</a></strong>, яка залишилася в спадок від DOS&#8217;у<br />
&#8211; <strong><a href="http://en.wikipedia.org/wiki/ISO_8859-5">ISO 8859-5</a></strong>, яка майже ніде і не використовувалась</p>
<p>Зараз відбувається міграція на UTF-8, що позбавляє проблем з використанням різних мов.</p>
<p>На одному з моїх проектів я аналізую, звідки користувачі заходять на сайт (в основному мене цікавлять, за якими ключовими словами сайт знаходиться в пошукових системах).<br />
І ось тут виникла проблема з кодуваннями, бо деякі пошукові системи (наприклад Яндекс) ще й досі використовують CP1251, а Google може використовувати різні кодування (в залежності від параметрів).<br />
Тому я написав функцію на php (використавши функцію для визначення UTF-8), яка автоматично визначає кодування (підтримується <strong>UTF-8</strong>, <strong>CP1251</strong> та <strong>KOI8-U</strong>) і перекодовує текст в потрібне.</p>
<p>Вихідний код: <a href="http://mrgall.com/dev/autoencode.phps">Автоматичне визначення кодування</a></p>
<p>Опис:<br />
<code>string autoencode (string $string, [string $encoding])</code></p>
<p>Приклад використання:</p>
<p><code>include("шлях/до/autoencode.php");<br />
$text_utf=autoencode($text, 'utf-8');</code></p>
<p>В цієї функції є недоліки. Основний &#8211; вона визначає кодування, підраховуючи коди маленьких літер (яких в звичайному тексті &#8211; більшість). Але якщо в тексті переважають великі літери, то відбувається плутанина між CP1251 та KOI8-U <img src='http://mrgall.com/blog/wp-includes/images/smilies/sad.gif' alt=':sad:' class='wp-smiley' /> </p>
<p>P.S. Якщо в когось є кращий алгоритм, поділіться <img src='http://mrgall.com/blog/wp-includes/images/smilies/wink.gif' alt=':wink:' class='wp-smiley' /><br />
P.S.S. <a href="http://mrgall.com/dev/ukrainian.html">Таблиця з кодуваннями кирилиці</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mrgall.com/blog/2008/02/13/autoencode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Бути чи не бути субдомену www</title>
		<link>http://mrgall.com/blog/2008/02/09/nowww/</link>
		<comments>http://mrgall.com/blog/2008/02/09/nowww/#comments</comments>
		<pubDate>Sat, 09 Feb 2008 18:25:31 +0000</pubDate>
		<dc:creator>MrGALL</dc:creator>
				<category><![CDATA[Веб-розробка]]></category>

		<guid isPermaLink="false">http://mrgall.com/blog/2008/02/09/nowww/</guid>
		<description><![CDATA[Більшість користувачів вважають частку www. невід&#8217;ємною частиною домену (та Інтернету загалом) та активно її використовують.
Я бачив посилання виду http://www.forum.example.com.ua/ (а це вже домен 5-го рівня)
Але чи так вже необхідна частка www. в адресі сайту?
Історично склалося так, що сервери називали ім&#8217;ям сервісу, що вони надають.
Наприклад:
ftp.example.com (FTP)
news.example.com (Usenet newsgroup)
mail.example.com (Mail)
www.example.com (World Wide Web)
і т.п.
Тому виникла традиція додавати [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://mrgall.com/blog/wp-content/2008/02/httpwww.jpg' alt='Бути чи не бути субдомену www' style="margin:0 10px 10px 0;float:left;" />Більшість користувачів вважають частку www. невід&#8217;ємною частиною домену (та Інтернету загалом) та активно її використовують.<br />
Я бачив посилання виду http://www.forum.example.com.ua/ (а це вже домен 5-го рівня)<br />
Але чи так вже необхідна частка www. в адресі сайту?</p>
<p><span style="color:grey;">Історично склалося так, що сервери називали ім&#8217;ям сервісу, що вони надають.<br />
Наприклад:<br />
ftp.example.com (FTP)<br />
news.example.com (Usenet newsgroup)<br />
mail.example.com (Mail)<br />
www.example.com (World Wide Web)<br />
і т.п.<br />
Тому виникла традиція додавати www. до домену у адресі веб-сайту.<br />
Але насправді www.example.com це лише субдомен у домені example.com і ніякої технічної необхідності у ньому немає.</span></p>
<p>Коли ви додаєте домен до хостингу, субдомен www автоматично створюється і ваш сайт стає доступним одразу за двома адресами &#8211; example.com та www.example.com<br />
Кожен веб-майстер самостійно вирішує, який з них обрати за основний.<br />
Я вже з рік на своїх сайтах використовую варіант example.com, а з www.example.com роблю переадресацію на example.com (наприклад &#8211; <a href="http://www.mrgall.com/">www.mrgall.com</a>)<br />
Переваги:<br />
- Ваш домен стає на 4 символи коротшим (швидше набирати, швидше диктувати (не треба казати &#8220;дабл ю дабл ю дабл ю крапка &#8230;&#8221;), лаконічніше виглядає і т.п.)<br />
- Ваш домен стає на 1 рівень нижчий (www.example.com &#8211; домен 3-го рівня, example.com &#8211; другого), отже визначення його ІР адреси відбувається швидше.<br />
- Немає проблем з пошуковими системи (коли вони паралельно індексують example.com та www.example.com або у видачі видають не той домен, який ви обрали за основний).</p>
<p>Найпростіше зробити переадресацію з www.example.com на example.com можна за допомогою mod_rewrite, додавши в .htaccess таке:</p>
<p><code>RewriteEngine on<br />
RewriteCond %{HTTP_HOST} ^www.example.com<br />
RewriteRule (.*) http://example.com/$1 [R=301,L]</code></p>
<p>Тоді всі запити виду:</p>
<p>http://www.example.com/path/file.html</p>
<p>будуть переадресовуватися на</p>
<p>http://example.com/path/file.html</p>
<p>Посилання в тему:<br />
<a href="http://no-www.org/">no-www.org</a><br />
<a href="http://nowww.ru/">nowww.ru</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mrgall.com/blog/2008/02/09/nowww/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Зручне керування доменами</title>
		<link>http://mrgall.com/blog/2008/02/09/dns-managment/</link>
		<comments>http://mrgall.com/blog/2008/02/09/dns-managment/#comments</comments>
		<pubDate>Sat, 09 Feb 2008 16:44:14 +0000</pubDate>
		<dc:creator>MrGALL</dc:creator>
				<category><![CDATA[Веб-розробка]]></category>

		<guid isPermaLink="false">http://mrgall.com/blog/2008/02/09/dns-managment/</guid>
		<description><![CDATA[Я маю близько 50-ти доменів.
Я б не сказав, що я злісний кіберсквоттер, майже всі домени пов&#8217;язані з моїми проектами (або зареєстровані для друзів), хоча з десяток доменів для продажу є 
Просто доводиться захищатись від інших кіберсквоттерів і скупати домени в різних зонах (ukrbash.org, ukrbash.net, ukrbash.com і т.п.)
І при переїзді від одного хостера до іншого виникає [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://mrgall.com/blog/wp-content/2008/02/domains.jpg' alt='Зручне керування доменами' style="margin:0 0 10px 10px;float:right;" />Я маю близько 50-ти доменів.<br />
Я б не сказав, що я злісний кіберсквоттер, майже всі домени пов&#8217;язані з моїми проектами (або зареєстровані для друзів), хоча з десяток доменів для продажу є <img src='http://mrgall.com/blog/wp-includes/images/smilies/wink.gif' alt=':wink:' class='wp-smiley' /><br />
Просто доводиться захищатись від інших кіберсквоттерів і скупати домени в різних зонах (ukrbash.org, ukrbash.net, ukrbash.com і т.п.)<br />
І при переїзді від одного хостера до іншого виникає морока з їх перенесенням.<br />
Платні домени (в зонах .org, .com, .net) потрібно модифікувати через адмінку реєстраторів (в деяких вони глючать по чорному&#8230;), безкоштовні (в зонах .org.ua, .kiev.ua і .т.п) &#8211; відсиланням листів Хостмастеру (а це 2 відправлених і 9 отриманих для кожного домена).<br />
Як спростити перенесення доменів?<br />
Для цього потрібно зробити декілька простих кроків.<br />
1. Потрібно вибрати базовий домен. На ньому буде триматися вся ця конструкція.<br />
Бажано, щоб він був зареєстрований через надійного реєстратора і підтримувався його ДНС-серверами.<br />
Також бажано, щоб він був не в зоні .ua (ДНС-сервери, що підтримують зону .ua, час від часу не відповідають та містять помилкові записи).<br />
Я вибрав <strong>tereveni.org</strong><br />
2. В цьому домені потрібно створити 2 субдомени (наприклад <strong>ns1</strong> i <strong>ns2</strong>) і направити їх на ІР адреси ДНС-серверів, що підтримують ваші домени.<br />
Я зробив так:<br />
<strong>ns1 A 62.149.12.21</strong> (мій VDS, на якому є власний ДНС-сервер)<br />
<strong>ns2 A 195.149.112.1</strong> (<a href="http://secondary.net.ua/">secondary.net.ua</a>, який я використовую як 2й ДНС-сервер)<br />
3. В усіх ваших доменах потрібно замінити ДНС-сервери на <strong>ns1.базовий.домен</strong> та <strong>ns2.базовий.домен</strong><br />
В мене:<br />
<strong>ns1.tereveni.org</strong><br />
<strong>ns2.tereveni.org</strong><br />
4. При наступному переїзді до іншого хостера треба лише поміняти ІР адреси субдоменів <strong>ns1</strong> i <strong>ns2</strong> базового домену на ІР адреси нових ДНС-серверів і всі домени перенесуться автоматично.</p>
<p>Єдине, за чим потрібно слідкувати &#8211; аби не змінилися ІР адреси ДНС-серверів, що підтримують ваші домени, інакше домени перестануть працювати.<br />
В цьому випадку треба оновити ІР адреси субдоменів <strong>ns1</strong> та <strong>ns2</strong>.</p>
<p>Зручний скрипт для перевірки роботи ваших доменів &#8211; <a href="http://www.squish.net/dnscheck/">Squish.net dns checker</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mrgall.com/blog/2008/02/09/dns-managment/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>XHTML і валідація</title>
		<link>http://mrgall.com/blog/2008/01/30/xhtml-i-validacija/</link>
		<comments>http://mrgall.com/blog/2008/01/30/xhtml-i-validacija/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 10:38:52 +0000</pubDate>
		<dc:creator>MrGALL</dc:creator>
				<category><![CDATA[Веб-розробка]]></category>

		<guid isPermaLink="false">http://mrgall.com/blog/2008/01/30/xhtml-i-validacija/</guid>
		<description><![CDATA[Час від часу доводиться верстати сайти.
Чому доводиться &#8211; бо я більше веб-проограміст ніж верстальник.
Але коли проектом займається 1-2 людини то доводиться бути багато ким.
&#8220;А еще я и на машинке могу, и крестиком вышивать&#8221; © Матроскин
Всі нові проекти я верстаю за допомогою XHTML (переписати існуючі або просто виправити помилки, в тому числі і на цьому сайті, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.w3.org/Icons/valid-xhtml10" alt="xhtml" style="float:left;" />Час від часу доводиться верстати сайти.<br />
Чому доводиться &#8211; бо я більше веб-проограміст ніж верстальник.<br />
Але коли проектом займається 1-2 людини то доводиться бути багато ким.</p>
<blockquote><p>&#8220;А еще я и на машинке могу, и крестиком вышивать&#8221; © Матроскин</p></blockquote>
<p>Всі нові проекти я верстаю за допомогою XHTML (переписати існуючі або просто виправити помилки, в тому числі і на цьому сайті, все ніяк руки не доходять&#8230; <img src='http://mrgall.com/blog/wp-includes/images/smilies/sad.gif' alt=':sad:' class='wp-smiley' /> )<br />
І час від часу виникає необхідність перевіряти коректність документу. Звісно є <a href="http://validator.w3.org/">валідатор</a> від <a href="http://www.w3.org/">w3c</a> але для його використання потрібно робити зайві рухи (що для програміста не допустимо <img src='http://mrgall.com/blog/wp-includes/images/smilies/wink.gif' alt=':wink:' class='wp-smiley' /> )<br />
Є спосіб, як перевіряти документи на валідність прямо в браузері (я використовую Oper&#8217;у, але в Firefox це теж буде працювати):<br />
Потрібно ввімкнути обробку XHTML документів через XML парсер.<br />
Якщо сайт написаний за допомогою php, то це можна зробити так:</p>
<p><code>if (stristr($_SERVER["HTTP_ACCEPT"],"application/xhtml+xml")) header("Content-type: application/xhtml+xml");<br />
else header("Content-type: text/html");</code></p>
<p><span style="color:grey;">Трохи теорії. <a href="http://en.wikipedia.org/wiki/XHTML">XHTML</a> це мова розмітки, що базується на <a href="http://en.wikipedia.org/wiki/XML">XML</a> (на відміну від <a href="http://en.wikipedia.org/wiki/HTML">HTML</a>, що базується на <a href="http://en.wikipedia.org/wiki/SGML">SGML</a>).<br />
Тому XHTML-документ має бути в першу чергу коректним XML-документом (всі теги мають закриватися, параметри бути в лапках і т.п.).<br />
Також XHTML має передаватися з MIME-типом <code>application/xhtml+xml</code>.<br />
В цьому випадку документ буде оброблятися через XML парсер.</span></p>
<p>Чому на 99.9% сайтів XHTML передається як <code>text/html</code>?<br />
Бо є такий <del>хрі&#8230;</del> чудовий браузер IE6, який погано підтримує XHTML і не розуміє <code>application/xhtml+xml</code>.<br />
Інші браузери (Opera, Firefox, Safari) коректно сприймають <code>application/xhtml+xml</code> тому обробляють XHTML через XML парсер і виводять повідомлення про помилки, якщо документ не коректний.</p>
<blockquote><p>А навіщо взагалі перевірка на коректність? Адже моя сторінка без проблем показується в усіх браузерах, що ж ще треба?</p></blockquote>
<p>Показується, бо розробники браузерів витратили дуже багато зусиль на написання двигунців, які, незважаючи на помилки, більш-менш нормально показують сторінки з помилками. Але навіщо примушувати браузери відвідувачів кожного разу виправляти ваші помилки, якщо це можна зробити 1 раз на сервері?<br />
Звісно, потрібно дуже багато зусиль, щоб виправити помилки в уже існуючих проектів. Але, принаймні, нові проекти слід писати без помилок. Тоді, з часом, Інтернет очиститься від сайтів, код яких містить помилок більше, ніж контрольна двієчника. Двієчнику поставлять його заслужену двійку, а хто ж оцінить таких веб-майстрів, якщо більшість відвідувачів не заглядають в код сторінки?<br />
Зараз використовувати <code>application/xhtml+xml</code> на готовому сайті ніхто не буде &#8211; бо є значний відсоток відвідувачів, що використовують IE6, але для розробки і відладки такий режим чудово підходить <img src='http://mrgall.com/blog/wp-includes/images/smilies/wink.gif' alt=':wink:' class='wp-smiley' /><br />
Я ввімкнув його (правда лише для себе) на <a href="http://ukrbash.org/">УкрБаші</a> і вже виправив 5 чи 6 помилок, яких раніше не помічав. Вони були не на головній сторінці, а <a href="http://validator.w3.org/">валідатором</a> зазвичай перевіряється лише головна.</p>
]]></content:encoded>
			<wfw:commentRss>http://mrgall.com/blog/2008/01/30/xhtml-i-validacija/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
