<?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>Seleckis.lv :: журнал Никиты Селецкого &#187; PHP</title>
	<atom:link href="http://seleckis.lv/category/journal/journal-php/feed" rel="self" type="application/rss+xml" />
	<link>http://seleckis.lv</link>
	<description></description>
	<lastBuildDate>Tue, 08 Feb 2011 13:52:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Первая проба записи видео-лекций по PHP в Школе веб-технологий</title>
		<link>http://seleckis.lv/journal/video/pervaya-proba-zapisi-video-lektsiy-po-php-v-shkole-veb-tehnologiy</link>
		<comments>http://seleckis.lv/journal/video/pervaya-proba-zapisi-video-lektsiy-po-php-v-shkole-veb-tehnologiy#comments</comments>
		<pubDate>Mon, 23 Nov 2009 17:00:28 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Видео]]></category>
		<category><![CDATA[Курсы]]></category>

		<guid isPermaLink="false">http://seleckis.lv/?p=1715</guid>
		<description><![CDATA[Решили попробовать записывать лекции Школы веб-технологий на видео. Обработка занимает к сожалению больше времени, поэтому показываю только первые 10 минут (после монтажа) с основами синтаксиса.
Сама лекция предназначена для тех, кто уже начал изучать PHP. Так сказать для закрепления материала.
Преподаватель Арвид Годюк, очень волнуется, уж не забрасывайте помидорами, а вот оператора (меня) можете забросать: штатива нет, [...]]]></description>
			<content:encoded><![CDATA[<p>Решили попробовать записывать лекции <a href="http://webskola.lv">Школы веб-технологий</a> на видео. Обработка занимает к сожалению больше времени, поэтому показываю только первые 10 минут (после монтажа) с основами синтаксиса.</p>
<p>Сама лекция предназначена для тех, кто уже начал изучать PHP. Так сказать для закрепления материала.</p>
<p>Преподаватель Арвид Годюк, очень волнуется, уж не забрасывайте помидорами, а вот оператора (меня) можете забросать: штатива нет, руки дрожат, поставил было на полку шкафа, так вдруг фокус стал пропадать. Не профессионал, что делать…</p>
<p>Первая попытка даёт старт серии лекций по разным веб-технологиям.</p>
<p style="text-align:center"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/XumzxdBBlYY" /><embed type="application/x-shockwave-flash" width="640" height="480" src="http://www.youtube.com/v/XumzxdBBlYY"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/video/pervaya-proba-zapisi-video-lektsiy-po-php-v-shkole-veb-tehnologiy/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Как обновить PHP до версии 5.2.4 у Typo3Winstaller</title>
		<link>http://seleckis.lv/journal/journal-php/kak-obnovit-php-do-versii-5-2-4-u-typo3winstaller</link>
		<comments>http://seleckis.lv/journal/journal-php/kak-obnovit-php-do-versii-5-2-4-u-typo3winstaller#comments</comments>
		<pubDate>Wed, 24 Oct 2007 08:46:22 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[TYPO3]]></category>

		<guid isPermaLink="false">http://www.seleckis.lv/journal/journal-php/kak-obnovit-php-do-versii-5-2-4-u-typo3winstaller</guid>
		<description><![CDATA[TYPO3Winstaller это бесплатный пакет WAMP (Windows Apache MySQL PHP Webserver) с предустановленой cms системой Typo3. Идеальный для изучения на Windows и неплохой вариант для использования в качестве Web-сервера.
TYPO3Winstaller включает в себя:

TYPO3 4.1.2
Apache 2.0.59
PHP 5.2.1
MySQL 4.1.21
GraphicsMagick 1.1.7
AFPL Ghostscript 8.53
phpMyAdmin 2.10.0.2
eAccelerator 0.9.5
Perl 5.8.8.820
typo3start-Package Version 3.1

Как я уже написал(см. в P.S.) через некоторое время работы в Typo3-админке, появляется [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://typo3winstaller.sourceforge.net/" target="_blank"><strong>TYPO3Winstaller</strong></a> это бесплатный пакет WAMP (Windows Apache MySQL PHP Webserver) с предустановленой cms системой Typo3. Идеальный для изучения на Windows и неплохой вариант для использования в качестве Web-сервера.</p>
<p>TYPO3Winstaller включает в себя:</p>
<ul>
<li>TYPO3 4.1.2</li>
<li>Apache 2.0.59</li>
<li>PHP 5.2.1</li>
<li>MySQL 4.1.21</li>
<li>GraphicsMagick 1.1.7</li>
<li>AFPL Ghostscript 8.53</li>
<li>phpMyAdmin 2.10.0.2</li>
<li>eAccelerator 0.9.5</li>
<li>Perl 5.8.8.820</li>
<li>typo3start-Package Version 3.1</li>
</ul>
<p>Как я уже <a href="http://www.seleckis.lv/archive/web-dizayn/novyiy-sayt-isma-lv" target="_blank">написал</a>(см. в P.S.) через некоторое время работы в Typo3-админке, появляется ошибка:</p>
<p><code>PHP Fatal Error: Out of memory...</code></p>
<p>Вызвано это какими-то багами в самом PHP движке в версии 5.2.0-5.2.1. После <a href="http://bugs.php.net/bug.php?id=39438" target="_blank">жалоб</a>, разработчики исправили баги в новой версии PHP.</p>
<p>Чтобы исправить положение нужно обновить PHP, но обновить с умом. Дело в том, что Typo3 использует расширение eAccelerator, а оно должно компилиться для каждой версии php в отдельности.</p>
<h3>Вот шаги которые нужно предпринять:</h3>
<ul>
<li><a href="http://www.php.net/get/php-5.2.4-Win32.zip/from/a/mirror" target="_blank">Скачать PHP 5.2.4</a></li>
<li><a href="http://www.sitebuddy.com/files/eAccelerator0952_5.2.4.dll">Скачать eAccelerator последней версии</a> для PHP 5.2.4 (<a href="http://www.sitebuddy.com/PHP/Accelerators/eAccelerator_windows_binaries_builds" target="_blank">весь список бинарников eAccelerator для Windows</a>)</li>
<li>Распаковать архив с php (например в папку php на Десктопе)</li>
<li>Переименовать файл <strong>eAccelerator0952_5.2.4.dll</strong> в <strong>eAccelerator.dll</strong></li>
<li>Заменить файл <strong>eAccelerator.dll</strong> в папке <strong>Десктоп/php/ext/</strong></li>
<li>Заменить все файлы в папке PHP в установленном вами пакете TYPO3Winstaller</li>
</ul>
<p>Файл <strong>php.ini</strong> исправлять не надо.</p>
<p>Это ещё не всё. Теперь есть проблема в одном из расширений Typo3 &#8211; <strong>static_info_tables</strong>. Из-за ошибки в одном из php файлов не работает добавление новых записей.</p>
<p>Исправляем</p>
<p>Заходим в</p>
<p><code>Папка_с_установленым_сайтом_на_Typo3/typo3conf/ext/static_info_tables/class.tx_staticinfotables_syslanguage.php</code></p>
<p>исправляем строчку:</p>
<p><code>function processDatamap_postProcessFieldArray($status, $table, $id, $fieldArray, $this) {</code></p>
<p>на</p>
<p><code>function processDatamap_postProcessFieldArray($status, $table, $id, $fieldArray, $parent) {</code></p>
<h3>Всё!</h3>
<p>P. S. вожможно это касается не только Typo3Winstaller&#8217;a но и других установок.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/journal-php/kak-obnovit-php-do-versii-5-2-4-u-typo3winstaller/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>CodeIgniter &#8212; framework для новичков</title>
		<link>http://seleckis.lv/journal/journal-php/codeigniter-8212-framework-dlya-novichkov</link>
		<comments>http://seleckis.lv/journal/journal-php/codeigniter-8212-framework-dlya-novichkov#comments</comments>
		<pubDate>Tue, 09 Oct 2007 21:03:53 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.seleckis.lv/journal/journal-php/codeigniter-8212-framework-dlya-novichkov</guid>
		<description><![CDATA[
Framework CodeIgniter я выбрал для изучения, потому что он оказался наиболее простым в изучении и менее болезненным в оклиматизации, после опыта голого php-программирования. Поскольку кроме php, я не знаю ниодного сервеного скриптового языка (не считая пройденых ознакомительных туториалов по ruby и python), то для повышения квалификации web-программиста на выбор встали только php-framework&#8216;и. Не буду рассказывать [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img src="http://www.seleckis.lv/wp-content/uploads/2007/10/ci_logo_flame.jpg" /></p>
<p>Framework <a href="http://codeigniter.com/" target="_blank"><strong>CodeIgniter </strong></a>я выбрал для изучения, потому что он оказался наиболее простым в изучении и менее болезненным в оклиматизации, после опыта голого <em>php</em>-программирования. Поскольку кроме <em>php</em>, я не знаю ниодного сервеного скриптового языка (не считая пройденых ознакомительных туториалов по <em>ruby </em>и <em>python</em>), то для повышения квалификации <em>web</em>-программиста на выбор встали только <em>php-framework</em>&#8216;и. Не буду рассказывать из чего я выбирал, если написать в поисковике <em>«php framework»</em> — сами найдёте, какие они бывают.</p>
<p><span id="more-892"></span></p>
<p>Скажу лишь, <strong>по каким критериям</strong> я выбирал:</p>
<ul>
<li>Всё на <em>php</em>. Без своего шаблонного парсинга</li>
<li>Без излишних специфических особенностей синтаксиса</li>
<li>Гибкость (читай «нестрогость»)</li>
<li>Совместимость с большенством хостингов</li>
<li>Без заморочек с конфигурацией</li>
<li>Высокая скорость работы</li>
<li>Rewrite engine</li>
<li><em>Userfriendly </em>для не слишком глубоко знающих php</li>
<li>Полная и понятная документация</li>
</ul>
<p><strong>CodeIgniter </strong>подходит по всем параметрам.</p>
<h3>Хостинг</h3>
<ul>
<li><a href="http://www.php.net/">PHP</a> версии 4.3.2 или выше</li>
<li>База занных (MySQL, MySQLi, MS SQL, Postgre, Oracle, SQLite, ODBC)</li>
</ul>
<h3>Скорость работы</h3>
<p>Разработчики заявляют, что очень немногие <em>framework</em>&#8216;и могут сравниться с <strong>CodeIgniter </strong>по скорости. В большем случае из-за динамического подключения встроеных классов и библиотек, и опять же, без лишних заморочек со всякими <em>yaml</em>-файлами, определяющими структуру базы данных.</p>
<h3>M-V-C</h3>
<p><strong>CodeIgniter</strong> использует ставший уже стандартом <strong>«Model-View-Controller»</strong> подход, который позволяет разделить логическое формирование и обработку данных от их представления. В принципе, не мне вам всем объяснять для чего это нужно и думаю не нужно перечислять плюсы при работе над web-приложением в команде.</p>
<p style="text-align: center"><img src="http://www.seleckis.lv/wp-content/uploads/2007/10/appflowchart.gif" /></p>
<p>Плюс <strong>CodeIgniter </strong>в нестрогом соблюдении этого метода, поскольку компонент <strong>Model </strong>предназначен не только для работы с базой, но и для любых манипуляций с данными. Можно рассматривать <strong>Model</strong>, как функциональную составляющую, а <strong>Controller</strong>, как процедурную. Таким образом можем условно определить <em>framework</em>, как систему использующую смешанный (процедурно-функционально-объектно-ориентированный) вид программирования.</p>
<p>Компонент <strong>View</strong>, для отображения данных не использует никаких своих скриптов псевдокодов и псевдотэгов. <strong>Controller </strong>передаёт в  компонент <strong>View </strong>набор переменных для манипуляции, которые отображаются средствами php.</p>
<h3>mod_rewrite — модная_перезапись</h3>
<p>Нынче адреса, написаные почти человеческим языком не просто модны, но и важны в индексации. Разработчики CodeIgniter просто включили эту функциональность по-умолчанию, никого не спрашивая. Единственное, что нужно будет настроить в конфигурации — показывать <em>index.php</em> или нет.</p>
<p>URL-адрес выглядит примерно так:</p>
<p><code>www.your-site.com/<var>controller</var>/<dfn>function</dfn>/<samp>somevar</samp></code></p>
<p>Логика url-ов здесь проста и понятна:</p>
<ul>
<li>первый сегмент — имя контроллера (как правило, это имя класса и файла контроллера)</li>
<li>второй сегмент — имя функции в контроллере (если сегмент не указан, обращение идёт к базовой функции контроллера — <em>index</em>)<code><samp></samp></code></li>
<li>третий, четвёртый, пятый и т. д. — просто сегменты, которые могут быть прочитаны встроеным методом</li>
</ul>
<p>Не нравится такая последовательность? Пожалуйста, можете переписать с помощью <em>routing</em> — php-файла, в котором записывается настройка переадресации url-адресов.</p>
<h3>Работа с базой данных</h3>
<p>А здесь я долго смеялся, когда читал документацию посвящённую работой с базами данных. Дело в том, что язык SQL и так весьма лаконичен и понятен, что изобретать что-то новое по-моему нет смысла. Так же решили и разработчики, предоставив такое решение для работы с базами данных:</p>
<p><code>$this-&gt;db-&gt;select('title, content, date');<br />
$this-&gt;db-&gt;from('mytable');<br />
$this-&gt;db-&gt;where('date &lt;', $now);<br />
$this-&gt;db-&gt;where('title', $title);</code></p>
<p><code>$query = $this-&gt;db-&gt;get();</code></p>
<p><code>// Получаем: SELECT title, content, date FROM mytable WHERE date &lt; '2007-10-10 12:03' AND title = 'WTF?';</code></p>
<p>Из кода думаю всё понятно.</p>
<p><strong>Примечание:</strong> как мне нравится обращение к функциям классов! Только гляньте:</p>
<p><code><br />
$this-&gt;load-&gt;model('My_model'); // загрузка Model<br />
$result = $this-&gt;db-&gt;get(); // получение данных из базы<br />
$myvar = $this-&gt;uri-&gt;segment(3); // получение значения третьего сегмента url-адреса</code></p>
<p>И тому подобные обращения.</p>
<h3>Документация</h3>
<p>Документация описывает почти все особености работы с системой, встроеными классами, библиотеками, хелперами. Весьма подробная и написаная понятным английским языком с примерами. Кроме того, существует <em>wiki</em>-документация, которая содержит ньюансы подключения и работы плагинов и внешних библиотек. Ну и куда же без форума.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/journal-php/codeigniter-8212-framework-dlya-novichkov/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Как объяснить блондинке объектно-ориентированное программирование?</title>
		<link>http://seleckis.lv/journal/fun/kak-obyasnit-blondinke-obektno-orientirovannoe-programmirovanie</link>
		<comments>http://seleckis.lv/journal/fun/kak-obyasnit-blondinke-obektno-orientirovannoe-programmirovanie#comments</comments>
		<pubDate>Tue, 18 Sep 2007 18:31:47 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Развлекуха]]></category>

		<guid isPermaLink="false">http://www.seleckis.lv/journal/kak-obyasnit-blondinke-obektno-orientirovannoe-programmirovanie</guid>
		<description><![CDATA[На примере php. Подразумевается, что самые азы программирования блондинка знает.
Действующие лица:

Преподаватель (П.)
Блондинка (Б.)

Диалог
П.: Сейчас я тебе объясню принцип объектно-ориентированного программирования
Б.: Ну даю&#8230; ой&#8230; хи-хи, то есть дааавате, объясняйте.
П.: Ну так вот. Представь себе, что ты пошла в какой-нибудь магазин&#8230;
Б.: Ещё б скааазали &#8220;гастраааном&#8221;. (скривила лицо) Я в бутики толька хааажу.
П.: Ну хорошо, зашла ты в [...]]]></description>
			<content:encoded><![CDATA[<p><em>На примере php. Подразумевается, что самые азы программирования блондинка знает.</em></p>
<p><strong>Действующие лица:</strong></p>
<ul>
<li>Преподаватель (П.)</li>
<li>Блондинка (Б.)</li>
</ul>
<h3>Диалог</h3>
<p><strong>П.:</strong> Сейчас я тебе объясню принцип объектно-ориентированного программирования<br />
<strong>Б.:</strong> Ну даю&#8230; ой&#8230; хи-хи, то есть дааавате, объясняйте.<br />
<strong>П.:</strong> Ну так вот. Представь себе, что ты пошла в какой-нибудь магазин&#8230;<br />
<strong>Б.:</strong> Ещё б скааазали &#8220;гастраааном&#8221;. <em>(скривила лицо)</em> Я в бутики толька хааажу.<br />
<strong>П.:</strong> Ну хорошо, зашла ты в бутик. И увидела там шубу.<br />
<strong>Б.:</strong> норкаваю!<br />
<strong>П.:</strong> Да, норковую! И захотела купить. Шуба &#8211; это объект, который ты хочешь купить. А вообще Шубы &#8211; это класс объектов. В этом классе могут быть различного вида шубы от искуственного меха до соболя. В коде это можно написать:<br />
<code><br />
class Shubi {<br />
public $tip;<br />
}<br />
</code></p>
<p>, где public означает, что кто угодно может узнать какой тип шубы ты купила.<br />
<strong>Б.:</strong> Кто угодна? И даже Танька Синявская?<br />
<strong>П.:</strong> Ну если Танька Синявская приедет и увидит твою шубу, то да.<br />
Значит ты хочешь купить объект, т.е. шубу, которая принадлежит классу &#8220;Шубы&#8221;. Чтобы это было так, нужно написать:<br />
<code><br />
var $shuba1 = new Shubi();<br />
</code></p>
<ul>
<li>var &#8211; это типа &#8220;ХАЧУ&#8221;;</li>
<li>new &#8211; это типа &#8220;купить новую&#8221;</li>
</ul>
<p><strong>Б.:</strong> А пачиму <strong>shuba1</strong>?<br />
<strong>П.:</strong> Ну а ты разве одну шубу только купишь?<br />
<strong>Б.:</strong> А, ну дааа&#8230; <em>(делает вид, что понимает)</em> А, что, я так вот сразу куплю шубу без примерки?<br />
<strong>П.:</strong> Конечно нет. Всё верно. У шубы есть свойства, например, <strong>размер</strong>. Добавим в класс <strong>Shubi </strong>это свойство, а потом укажем, какой размер у этой шубы. В итоге код у нас получается такой:<br />
<code><br />
class Shubi{<br />
public $tip;<br />
public $razmer;<br />
}<br />
$shuba1 = new Shubi;<br />
$shuba1-&gt;tip = "norka";<br />
$shuba1-&gt;razmer = 53;<br />
</code></p>
<p><strong>Б.:</strong> Я что толстая тааакая? У меня Соракдивяяятый рааазмер!<br />
<strong>П.:</strong> Ну хорошо, хорошо. Размер 49. Дальше: Купив шубу, задали её размер. А размер &#8211; это свойство объекта. И для расчётов можем его получить написав:<br />
<code><br />
$razmer_shubi = $shuba1-&gt;razmer;<br />
</code></p>
<p>т.е. если мы хотим узнать, чему равно какое-нибудь свойство, то нам нужно написать имя объекта, добавить такую стрелочку &#8220;-&gt;&#8221; и написать свойство объекта.<br />
<strong>Б.:</strong> Ну паняла, не дура я. <em>(надулась)</em><br />
<strong>П.:</strong> Замечательно! Ну, а после того как ты купила шубу, что ты сделаешь?<br />
<strong>Б.:</strong> Нааадену и паеду пааадружкам хвастать.<br />
<strong>П.:</strong> Ага, значит оденешь. Значит совершишь действие. Значит это мы напишем так:<br />
<code><br />
$shuba1-&gt;odetj();<br />
</code></p>
<p>Что означает, что ты одела шубу. Это называется <strong>метод</strong> и записывается этот метод в классе в виде функции:<br />
<code><br />
class Shubi{<br />
public $tip;<br />
public $razmer;<br />
function odetj(){<br />
return true;<br />
}<br />
}<br />
</code></p>
<p><strong>Б.:</strong> А зааачем <strong>odetj </strong>со скобочкамиии?<br />
<strong>П.:</strong> А в скобочки записываются параметры действия. Вдруг ты захочешь одеть её задом на перёд.<br />
<strong>Б.:</strong> Я что, дура что лиии?<br />
<strong>П.:</strong> Да.<br />
<strong>Б.:</strong> Чтооо? <em>(в глазах ярость, рука воинственно поднялась, сверкнув ногтями)</em><br />
<strong>П.:</strong> Ой, в смысле, да нет, конечно. Например, ты не захочешь застёгивать её совсем, а оставить пару пуговичек растёгнутыми.<br />
<strong>Б.:</strong> Ааа, ну ладно. Ааа, как это записать?<br />
<strong>П.:</strong> ну, например, так:<br />
<code><br />
$shuba-&gt;odetj(2);<br />
</code></p>
<p><strong>Б.:</strong> Что значит &#8220;напримееер&#8221;? Может быть подругомууу?<br />
<strong>П.:</strong> Может. Это зависит от того как описать класс <strong>Shubi</strong>.<br />
<strong>Б.:</strong> Бааалин, ещё это в  <strong>Shubi </strong>записывать!<br />
<strong>П.:</strong> Ну да, смотри:<br />
<code><br />
class Shubi{<br />
public $tip;<br />
public $razmer;<br />
function odetj($pugovici){<br />
return $pugovici;<br />
}<br />
}<br />
</code></p>
<p>у всех шуб, есть каие-то определённые свойства: размер, цвет&#8230;<br />
<strong>Б.:</strong> Цвет может быть разный.<br />
<strong>П.:</strong> Конечно, но совсем никакого цвета не бывает. Хоть какой-то цвет будет. Значит свойство &#8220;цвет&#8221; будет у каждой шубы. Вот как узнать какой цвет у твоей шубы.<br />
<strong>Б.:</strong> Пасмааатреть на неё.<br />
<strong>П.:</strong> нет, я и мею в виду в коде.<br />
<strong>Б.:</strong> Ааааа&#8230; ну, наверна, так:<br />
<code><br />
$cvet_shubi = $shuba1-&gt;cvet;<br />
</code></p>
<p><strong>П.:</strong> Умничка! <em>(Блондинка сияет)</em> Только предварительно нужно добавить это свойство в класс <strong>Shubi</strong>. Как?<br />
<strong>Б.:</strong> Наверна, так:<br />
<code><br />
class Shubi{<br />
public $tip;<br />
public $razmer;<br />
public $cvet;<br />
function odetj($pugovici){<br />
$rasstegnutie_pugovici = $pugovici;<br />
return $rasstegnutie_pugovici;<br />
}<br />
}<br />
</code></p>
<p><strong>П.:</strong> Только прежде, чем получить цвет у шубы, нужно задать этот цвет. Это можно сделать либо в классе <strong>Shubi</strong>, тогда все создаваемые шубы будут одного цвета, хотя не проблема их перекрасить. Либо, ты можешь получить шубу без определённого цвета и сама назначить её любой цвет.<br />
<strong>Б.:</strong> Ага, вот чтоб тааак в жизни было. Одела шубу и скааазала &#8220;хачу белую, нет, хачу чёрную&#8221;&#8230;<br />
<strong>П.:</strong> Дааа&#8230; программировать и создавать, практически синонимы.<br />
Ну и ещё объекты имеют методы, т. е. действия которые можно совершить с шубой. Теперь сними шубу.<br />
<strong>Б.:</strong> Ага. Выключите свет.<br />
<strong>П.:</strong> Что?<br />
<strong>Б.:</strong> Ой, хи-хи&#8230; в смысле написааать?<br />
<strong>П.:</strong> Ну конечно!<br />
<strong>Б.:</strong> Снимаю <em>(пошлый смешок)</em>:<br />
<code><br />
class Shubi{<br />
public $tip;<br />
public $razmer;<br />
public $cvet;<br />
function odetj($pugovici){<br />
$rasstegnutie_pugovici = $pugovici;<br />
return $rasstegnutie_pugovici;<br />
}<br />
function snjatj(){<br />
return true;<br />
}<br />
}<br />
</code></p>
<p><code><br />
$shuba1-&gt;snjatj();<br />
</code><br />
<strong>П.:</strong> Великолепно! Ну хватит с тебя на сегодня.<br />
<strong>Б.:</strong> Пабииигу, по бутикам пока не закрыыылись!</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/fun/kak-obyasnit-blondinke-obektno-orientirovannoe-programmirovanie/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Как конвертировать данные из URL в UTF-8?</title>
		<link>http://seleckis.lv/journal/journal-php/kak-konvertirovat-dannye-iz-url-v-utf-8</link>
		<comments>http://seleckis.lv/journal/journal-php/kak-konvertirovat-dannye-iz-url-v-utf-8#comments</comments>
		<pubDate>Mon, 03 Sep 2007 18:33:58 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.seleckis.lv/archive/php/kak-konvertirovat-dannye-iz-url-v-utf-8</guid>
		<description><![CDATA[Занялся вопросом декодирования запросов переданых в URL. Имеется в виду отправка данных скрипту через url при использовании mod_rewrite. Пример работы можете увидеть в на Wikipedia.org. Если мы пишем в адресную строку, или создаём такую ссылку:  http://ru.wikipedia.org/wiki/Слово , то движок вики получает &#8220;Слово&#8221; в url-закодированном виде, раскодирует его и пытается найти в базе это &#8220;Слово&#8221;.
Знаем, [...]]]></description>
			<content:encoded><![CDATA[<p>Занялся вопросом декодирования запросов переданых в URL. Имеется в виду отправка данных скрипту через url при использовании mod_rewrite. Пример работы можете увидеть в на Wikipedia.org. Если мы пишем в адресную строку, или создаём такую ссылку: <strong> <a target="_blank" href="http://ru.wikipedia.org/wiki/Слово">http://ru.wikipedia.org/wiki/Слово</a> </strong>, то движок вики получает &#8220;Слово&#8221; в url-закодированном виде, раскодирует его и пытается найти в базе это &#8220;Слово&#8221;.</p>
<p>Знаем, что Вики базируется на utf-8 кодировке, скорей всего база тоже. Но при получении &#8220;Слова&#8221; в адресной строке оно не будет закодировано в UTF-8 формат. Оно передаётся в формате ASCII (как показывает функция mb_detect_encoding).</p>
<p>Результатом моих иследований стал тот факт, что код привеённый ниже, конвертирует введённый латышский текст (со всеми специфическими (Baltic) символами) в UTF-8 формат.</p>
<p><code>$word = mb_convert_encoding(urldecode($source_word), "UTF-8", "auto");</code></p>
<p>Но этот же код не работает для кирилицы &#8211; выводит ошибку о недопустимых символах. Для неё необходим такой код:</p>
<p><code>$word = mb_convert_encoding(urldecode($source_word), "UTF-8", "WINDOWS-1251");</code></p>
<p>Получается, что если я хочу правильно конвертнуть всё в UTF-8, мне нужно написать такой код:</p>
<p><code><br />
if(mb_convert_encoding($source_word, "UTF-8", "auto"))<br />
	$word = mb_convert_encoding(urldecode($source_word), "UTF-8", "auto");<br />
else<br />
	$word = mb_convert_encoding(urldecode($source_word), "UTF-8", "WINDOWS-1251");<br />
</code></p>
<h3>Вопросы php-программистам:</h3>
<ol>
<li>От чего зависит кодировка в которой отправляются данные серверу через URL? От сервера, от клиента или это какой-то стандарт? Всё тот же mb_detect_encoding возвращает ASCII и для латышского и для русского языков.</li>
<li>Если параметр &#8220;auto&#8221; работает для балтийских языков, то работает ли он для западноевропейских языков? А windows-1251 будет ли работать для украинского и беларусского?</li>
<li>Существует ли универсальный код правильно кодирующий данные из URL в UTF-8? Или у той же Вики в базе просто список кодировок на каждый язык?</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/journal-php/kak-konvertirovat-dannye-iz-url-v-utf-8/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Фильтры WordPress. Плагин NS Recent Comments.</title>
		<link>http://seleckis.lv/journal/wordpress/filtry-wordpress-plagin-ns-recent-comments</link>
		<comments>http://seleckis.lv/journal/wordpress/filtry-wordpress-plagin-ns-recent-comments#comments</comments>
		<pubDate>Wed, 08 Aug 2007 09:47:05 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wordpress plugins]]></category>

		<guid isPermaLink="false">http://www.seleckis.lv/journal/wordpress/filtry-wordpress-plagin-ns-recent-comments</guid>
		<description><![CDATA[
Фильтры Wordpress
Может быть в будущем сделаю плагин на основе следующего скрипта, а сейчас просто хочу посоветовать, как в Wordpress почти не зная программирования на PHP можно легко создать скрипт (плагином в полной мере его назвать нельзя, скорее это фильтр) автозамены символов в тексте.
С чего начать?
Для начала нужно уяснить, что нам нужно. А нам нужно, например, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img src='http://www.seleckis.lv/wp-content/uploads/2007/08/4_wp-filters.png' alt='4_wp-filters.png' /></p>
<h3>Фильтры Wordpress</a></h3>
<p>Может быть в будущем сделаю плагин на основе следующего скрипта, а сейчас просто хочу посоветовать, как в Wordpress почти не зная программирования на PHP можно легко создать скрипт (плагином в полной мере его назвать нельзя, скорее это фильтр) автозамены символов в тексте.</p>
<h4>С чего начать?</h4>
<p>Для начала нужно уяснить, что нам нужно. А нам нужно, например, для того, чтобы 4 пробела заменялись на 4 &amp;nbsp; дабы показать отступ. Опять же в тэге &lt;code&gt; мы вставляем кокой-либо листинг и естественно с отступами, чтобы показать вложенность. Эти отступы формируются табами (кнопка [TAB]). Вот и нужно опять же этот TAB заменить на неразрывные пробелы.</p>
<h4>Как работает фильтр</h4>
<p>Фильтр в Wordpress работает используя функцию add_filter($param1, $param2), где первый параметр функции говорит к какому содержимому применить фильтр (hook), а второй &#8211; через какую функцию пропустить это содержимое. Оба параметра &#8211; строчные значения. От первого параметра так же зависит будет ли применяться фильтр перед отправкой данных в базу или перед выводом на экран.</p>
<h4>Пример</h4>
<p><code><br />
<strong>function</strong> correct_code(<strong>$ret</strong>)<br />
{<br />
	<strong>$ret</strong> = str_replace("[-SPACE-][-SPACE-][-SPACE-][-SPACE-]", "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;", <strong>$ret</strong>);<br />
	<strong>$ret</strong> = str_replace("[-TAB-]", "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;", <strong>$ret</strong>);<br />
	return($ret);<br />
}<br />
<strong>add_filter</strong>("the_content", "correct_code");<br />
</code><br />
В примере функция <strong><em>add_filter()</em></strong>, пропускает контент через функцию <em><strong>correct_code()</strong></em>. Причём функция <strong><em>correct_code()</em></strong> получает содержимое в качестве параметра функции, у меня это переменная <strong>$ret</strong>. А дальше с этой переменной можно делать всё что угодно. В данном случае у меня даны две строки отличающиеся друг от друга тем, что первая заменяет 4 пробела на 4 неразрывных пробела, а вторая заменяет [TAB] на 4 неразрывных пробела. Никакого специального кода для поска [TAB] вводить не нужно, просто поставьте этот [TAB].</p>
<p>Используя эту же функцию, можно добавить автозамену, например, кавычек:</p>
<p><code><br />
	$ret = str_replace("&amp;#8221;", "&amp;quot;", $ret);<br />
	$ret = str_replace("&amp;#8220;", "&amp;quot;", $ret);<br />
</code><br />
Эти две строчки заменяют кавычки вида “ и ” на обычные &quot;<br />
<span class="note"><br />
<strong>Примечание:</strong><br />
Иногда по-невнимательности бывает такая проблема, что фильтр не работает и не заменяет кавычки вида “ ” на &quot;. Это может быть, если вы напрямую скопировали символ наклонной кавычки в исходник поста. Тогда, если вы не хотите редактировать пост, нужно скопировать этот символ в автозамену:</p>
<p><code><br />
	$ret = str_replace("“", "&amp;quot;", $ret);<br />
	$ret = str_replace("”", "&amp;quot;", $ret);<br />
</code><br />
</span></p>
<h4>И куда её деть?</h4>
<p>Куда деть наш код, чтоб работал? Можно кинуть в любой плагин, можно создать отдельный плагин (только незабудьте написать заголовок и активировать этот плагин), а можно кинуть в один из шаблонных файлов, но до вывода контента. Лучше всего куда-нибудь в header.php</p>
<p><a href="http://codex.wordpress.org/Function_Reference/add_filter" target="_blank">Подробнее о фильтрах</a>. [<a target="_blank" href="http://translate.google.com/translate?hl=ru&#038;sl=en&#038;u=http://codex.wordpress.org/Function_Reference/add_filter&#038;sa=X&#038;oi=translate&#038;resnum=1&#038;ct=result&#038;prev=/search%3Fq%3Dhttp://codex.wordpress.org/Function_Reference/add_filter%26hl%3Dru%26client%3Dfirefox-a%26rls%3Dorg.mozilla:en-US:official%26hs%3DQ8h">Google перевод</a>]</p>
<h4>P.S.</h4>
<p>Добавил в проекты новый плагин для Wordpress, который называется <a href="http://www.seleckis.lv/projects/wp-plugins/ns_recent-comments" target="_blank">NS Recent Comments</a>. Принцип работы почти такой же как и у плагина <a href="http://www.seleckis.lv/projects/wp-plugins/ns_recent-posts" target="_blank">NS Recent Posts</a>, только на этот раз плагин выводит список последних комментариев, поэтому особо я о нём ничего писать не буду, всю подробную информацию читайте на странице плагина. Рабочий вариант можно увидеть на главной странице журнала внизу.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/wordpress/filtry-wordpress-plagin-ns-recent-comments/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Плагины для WordPress от Никиты Селецкого. NS Recent Posts</title>
		<link>http://seleckis.lv/journal/wordpress/plaginy-dlya-wordpress-ot-nikity-seleckogo</link>
		<comments>http://seleckis.lv/journal/wordpress/plaginy-dlya-wordpress-ot-nikity-seleckogo#comments</comments>
		<pubDate>Mon, 06 Aug 2007 17:57:03 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Wordpress plugins]]></category>

		<guid isPermaLink="false">http://www.seleckis.lv/journal/wordpress/plaginy-dlya-wordpress-ot-nikity-seleckogo</guid>
		<description><![CDATA[
Никита Селецкий (т.е. Я) решил порадовать весь мир преприятнейшим событием.
ОТКРЫВАЮ СТРАНИЦУ ПРОЕКТОВ!
Что там будет
Я работаю над множеством своих личных проектов, они продвигаются если не реально, то в моих мозгах. Как сказал бы Андрей: &#8220;Обкуриваются&#8221; днями и ночами.
Сегодня в разделе Проекты открываю страничку самопальных (home-made) плагинов для одной из самых лучших блог-систем Wordpress. Все плагины будут [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.seleckis.lv/wp-content/uploads/2007/08/wp-plugins.jpg' alt='wp-plugins.jpg' /><br />
Никита Селецкий (т.е. Я) решил порадовать весь мир преприятнейшим событием.<br />
<span class="h0">ОТКРЫВАЮ СТРАНИЦУ ПРОЕКТОВ!</span></p>
<h3>Что там будет</h3>
<p>Я работаю над множеством своих личных проектов, они продвигаются если не реально, то в моих мозгах. Как сказал бы <a href="http://www.noop.lv" target="_blank">Андрей</a>: &#8220;Обкуриваются&#8221; днями и ночами.</p>
<p>Сегодня в разделе <strong>Проекты</strong> открываю страничку самопальных (home-made) плагинов для одной из самых лучших блог-систем <a href="http://wordpress.org" target="_blank">Wordpress</a>. Все плагины будут называться по единой схеме: <em>мои инициалы</em> + <em>название плагина</em>. Название будет максимально раскрывать предназначение плагина. А вот и первенец.</p>
<h3>NS Recent Posts</h3>
<p>Вся информация уже готова к прочтению и комментированию на странице плагина. Скажу лишь, что за основу брался плагин <a href="http://wordpress.org/extend/plugins/recent-posts/" target="_blank">Recent Posts</a> от <strong>Nick Momrik</strong>, но был мною раскритикован и переписан почти полностью.</p>
<h3>Что я хотел?</h3>
<p>Я хотел чтобы плагин не только отображал название поста и ссылку на него, но и:</p>
<ul>
<li>список категорий</li>
<li>дату его публикации</li>
<li>превью поста</li>
<li>ссылку на комментарии</li>
<li>и отображал количество коментариев к каждому посту.</li>
</ul>
<h3>Вуаля</h3>
<p>Программирование не самый мой конёк, но кое что я в этом смыслю. На мой взгляд код получился достаточно лаконичный, функциональный и гибкий. Всё что нужно отображается. Есть конечно ньюанс который я не решил пока: получение даты поста из базу в удобном виде, чтобы не пришлось использовать несколько громоздких функций. Ну это дело техники. Поштудировать мануал по MySQL и ага!</p>
<p><strong>Самое главное</strong> &#8211; вывод данных происходит в шаблоне а не в плагине, как некоторые любят делать. Функция применяемая для работы плагина используется в цикле и выводит данные в виде свойств объекта.</p>
<p>Кстати, если кому-то не лень, проверьте правильность английского readme.txt файла. ))</p>
<p>На очереди ещё несколько плагинов. Но мне нужно их подготовить, сделать более универсальными и как следует оформить.</p>
<p>P.S. Да, чуть не забыл. Логотип Wordpress вверху поста взял <a href="http://www.snap2objects.com/2007/06/15/30-free-vector-wordpress-icons/" target="_blank">отсюда</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/wordpress/plaginy-dlya-wordpress-ot-nikity-seleckogo/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Go PHP 5!</title>
		<link>http://seleckis.lv/journal/novosti/go-php-5</link>
		<comments>http://seleckis.lv/journal/novosti/go-php-5#comments</comments>
		<pubDate>Tue, 10 Jul 2007 12:26:58 +0000</pubDate>
		<dc:creator>Никита</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Новости]]></category>

		<guid isPermaLink="false">http://localhost:8506/?p=676</guid>
		<description><![CDATA[
Разработчики ряда крупных Open Source PHP-проектов объявили о планируемом прекращении поддержки PHP 4.x.x начиная с 5 февраля 2008 года и полном переходе на PHP 5.2.x.
Это решение будет способствовать развитию всей индустрии веб-разработки и хостига, поскольку обеспечение поддержки двух версий PHP в программных продуктах и на хостигах требовало значительных трудозатрат и дополнительных вычислительных ресурсов.
Список проектов, переходящих [...]]]></description>
			<content:encoded><![CDATA[<p><a TITLE="Support GoPHP5.org" HREF="http://gophp5.org"><img ALT="Support GoPHP5.org" WIDTH="283" HEIGHT="100" SRC="http://gophp5.org/sites/gophp5.org/buttons/goPHP5-283x100.png" /></a></p>
<blockquote><p>Разработчики ряда крупных Open Source PHP-проектов объявили о планируемом прекращении поддержки PHP 4.x.x начиная с 5 февраля 2008 года и полном переходе на PHP 5.2.x.</p>
<p>Это решение будет способствовать развитию всей индустрии веб-разработки и хостига, поскольку обеспечение поддержки двух версий PHP в программных продуктах и на хостигах требовало значительных трудозатрат и дополнительных вычислительных ресурсов.</p>
<p>Список проектов, переходящих на PHP 5:</p>
<ul>
<li>phpMyAdmin</li>
<li>Drupal</li>
<li>TYPO3</li>
<li>UseBB</li>
<li>Rephactor</li>
<li>Aperiplus</li>
<li>Symfony</li>
<li>Propel</li>
<li>Doctrine</li>
</ul>
</blockquote>
<p>источник <a TARGET="blank" HREF="http://typo3.biz">Typo3.biz</a></p>
<p><b>ДАВНО ПОРА!</b></p>
]]></content:encoded>
			<wfw:commentRss>http://seleckis.lv/journal/novosti/go-php-5/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

