<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!--generator="Lite Publisher/2.80 version"--><rss 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" version="2.0"><channel><title>блог sartas`a</title><link>http://sartas.ru/rss/</link><description>javascript, php</description><pubDate>Tue, 07 Sep 2010 19:20:16 -0500</pubDate><generator>http://litepublisher.com/generator/?version=2.80</generator><language>en</language><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/sartas" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="sartas" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><meta xmlns="http://pipes.yahoo.com" name="pipes" content="noprocess" /><item><title>PHP: Timezone Selector</title><link>http://sartas.ru/php-timezone-selector/</link><comments>http://sartas.ru/php-timezone-selector/#comments</comments><pubDate>Tue, 16 Feb 2010 09:16:34 -0500</pubDate><guid isPermaLink="false">http://sartas.ru/php-timezone-selector/</guid><dc:creator>admin</dc:creator><category><![CDATA[PHP кодинг]]></category><category><![CDATA[timezone]]></category><description><![CDATA[Ранее PHP: Micro Markdown
Красивый вывод списка таймзон, из Wordpress 2.9.1.
Установка зоны
ini_set('date.timezone', 'Asia/Yekaterinburg');
Вывод списка
echo '&lt;select id=&quot;timezone_string&quot; name=&quot;timezone_string&quot;&gt;',
		wp_timezone_choice(ini_get('date.timezone')),
		'&lt;/select&gt;';Далее »]]></description><content:encoded><![CDATA[<p>Ранее <a rel="prev" href="http://sartas.ru/php-micro-markdown/">PHP: Micro Markdown</a></p>
<p>Красивый вывод списка таймзон, из Wordpress 2.9.1.</p>
<p>Установка зоны</p>
<p><pre><code>ini_set('date.timezone', 'Asia/Yekaterinburg');</code></pre></p>
<p>Вывод списка</p>
<p><pre><code>echo '&lt;select id=&quot;timezone_string&quot; name=&quot;timezone_string&quot;&gt;',
		wp_timezone_choice(ini_get('date.timezone')),
		'&lt;/select&gt;';</code></pre></p><a href="http://sartas.ru/php-timezone-selector/#more-19" class="more-link">Далее »</a>]]></content:encoded><wfw:commentRss>http://sartas.ru/comments/19/</wfw:commentRss></item><item><title>PHP: Micro Markdown</title><link>http://sartas.ru/php-micro-markdown/</link><comments>http://sartas.ru/php-micro-markdown/#comments</comments><pubDate>Tue, 02 Feb 2010 06:04:35 -0500</pubDate><guid isPermaLink="false">http://sartas.ru/php-micro-markdown/</guid><dc:creator>admin</dc:creator><category><![CDATA[Идеи ]]></category><category><![CDATA[markdown]]></category><description><![CDATA[Ранее PHP: Загрузка файлов на сервер | Позже PHP: Timezone Selector
Разработка своей CMS идет довольно низкими темпами, в основном из-за нехватки времени. Полностью на файлах  сделать не получилось, выбрал SQLite + PDO и кеширование каждого запроса в файл. Быстродействие на высоте, но возникает проблема очистки кеша. Очищать его по таймеру не лучшее решение, поэтому надо будет придумать как очищать кеш при изменении данных.
В качестве разметки для написания сообщений в блог выбрал Markdown Extra. Для комментариев его тоже охота использовать, но их надо будет либо сохранять в двух экземплярах (исходном и отпарсеном в html), либо обратно конвертировать из html в Markdown. Все это плохо влияет на быстродействие. Надо сделать для комментариев простую разметку (хватит и пяти тегов) на основе регекспов.
~~~
код
~~~

&gt; цитата

***жирный курсив***

**жирный**

*курсив*

[текст](ссылка)
Сначала надо обработать тект функцией htmlspecialchars, потом заменять теги, в написанном выше порядке. Вложенные теги поддерживаються не будут.]]></description><content:encoded><![CDATA[<p>Ранее <a rel="prev" href="http://sartas.ru/php-zagruzka-fajlov-na-server/">PHP: Загрузка файлов на сервер</a> | Позже <a rel="next" href="http://sartas.ru/php-timezone-selector/">PHP: Timezone Selector</a></p>
<p>Разработка своей CMS идет довольно низкими темпами, в основном из-за нехватки времени. Полностью на файлах  сделать не получилось, выбрал SQLite + PDO и кеширование каждого запроса в файл. Быстродействие на высоте, но возникает проблема очистки кеша. Очищать его по таймеру не лучшее решение, поэтому надо будет придумать как очищать кеш при изменении данных.</p>
<p>В качестве разметки для написания сообщений в блог выбрал Markdown Extra. Для комментариев его тоже охота использовать, но их надо будет либо сохранять в двух экземплярах (исходном и отпарсеном в html), либо обратно конвертировать из html в Markdown. Все это плохо влияет на быстродействие. Надо сделать для комментариев простую разметку (хватит и пяти тегов) на основе регекспов.</p>
<p><pre><code>~~~
код
~~~

&gt; цитата

***жирный курсив***

**жирный**

*курсив*

[текст](ссылка)</code></pre></p>
<p>Сначала надо обработать тект функцией htmlspecialchars, потом заменять теги, в написанном выше порядке. Вложенные теги поддерживаються не будут.</p>]]></content:encoded><wfw:commentRss>http://sartas.ru/comments/18/</wfw:commentRss></item><item><title>PHP: Загрузка файлов на сервер</title><link>http://sartas.ru/php-zagruzka-fajlov-na-server/</link><comments>http://sartas.ru/php-zagruzka-fajlov-na-server/#comments</comments><pubDate>Tue, 02 Feb 2010 05:34:43 -0500</pubDate><guid isPermaLink="false">http://sartas.ru/php-zagruzka-fajlov-na-server/</guid><dc:creator>admin</dc:creator><category><![CDATA[PHP кодинг]]></category><category><![CDATA[upload]]></category><category><![CDATA[htaccess]]></category><description><![CDATA[Ранее SQLite: быстродействие транзакций | Позже PHP: Micro Markdown
Простенький скрипт для загрузки файлов на сервер. Может пригодится, когда у друзей возникают проблемы с заливкой файлов на обменниками, а еще оказывается они не умеют разбивать файл на части, для отправки его по почте.

Скрипт состоит из одного файлика, который нужно закинуть в папку, имеющую права на запись. Обычно хостеры ограничивают максимальный размер файла, передаваемого на сервер, восемью мегабайтами. Это исправляется настройкой .htaccess`a, в который надо добавить два параметра:
php_value post_max_size 32M
php_value upload_max_filesize 32M
Сам скрипт:
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
	&lt;head profile=&quot;http://gmpg.org/xfn/11&quot;&gt;
		&lt;style type=&quot;text/css&quot;&gt;
			#wrap {
				width:400px;
				margin:200px auto;
				padding:40px 30px 30px 30px;
				border:1px solid #ccc;
				text-align:center;
				color:#666;
			}
		&lt;/style&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;div id=&quot;wrap&quot;&gt;
			&lt;?php function show_form()
			{ ?&gt;
			&lt;form id=&quot;form&quot; enctype=&quot;multipart/form-data&quot; action=&quot;&lt;?php echo $_SERVER['PHP_SELF']; ?&gt;&quot; method=&quot;POST&quot;&gt;

				Выберите файл: &lt;input name=&quot;myfile&quot; type=&quot;file&quot;/&gt;
				&lt;br /&gt;
				Максимальный размер файла:
				&lt;b&gt;
						&lt;?php	echo ( (int) ini_get('post_max_size') &lt; (int) ini_get('upload_max_filesize') ) ? (int) ini_get('post_max_size') : (int) ini_get('upload_max_filesize'); ?&gt;
				&lt;/b&gt; мегабайт!&lt;br /&gt;
				&lt;input type=&quot;submit&quot; value=&quot;Загрузить&quot;/&gt;
			&lt;/form&gt;
		&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;
	&lt;?php }	?&gt;



&lt;?php

if ($_SERVER['REQUEST_METHOD']=='POST')
{
	upload();
}
else
{
	show_form();
}

function upload()
{

	if( empty($_FILES) )
		show_err(0);
	foreach ( $_FILES as $file )
	{
		// Если ошибок не было
		if($file[&quot;error&quot;] == 0)
		{
			if ( file_exists($file['name']) )
				show_err(1);
			// Получаем содержимое файла
			//move_uploaded_file ( $myfile, dirname(__file__). DIRECTORY_SEPARATOR );
			copy($file['tmp_name'],dirname(__FILE__). DIRECTORY_SEPARATOR . $file['name']);
			echo '&lt;h4&gt;Файл &lt;i&gt;',$file['name'],'&lt;/i&gt;  успешно загружен.&lt;/h4&gt;' ;
			show_form();
		}
	}
}

function show_err($id)
{
	$err[0] = 'ОШИБКА! Файл не был загружен.';
	$err[1] = 'ОШИБКА! Этот файл уже загружен.';

	echo '&lt;h2&gt;'.$err[$id].'&lt;/h2&gt;';
	show_form();
	die();
}
?&gt;]]></description><content:encoded><![CDATA[<p>Ранее <a rel="prev" href="http://sartas.ru/sqlite-bystrodejstvie-tranzakcij/">SQLite: быстродействие транзакций</a> | Позже <a rel="next" href="http://sartas.ru/php-micro-markdown/">PHP: Micro Markdown</a></p>
<p>Простенький скрипт для загрузки файлов на сервер. Может пригодится, когда у друзей возникают проблемы с заливкой файлов на обменниками, а еще оказывается они не умеют разбивать файл на части, для отправки его по почте.</p>
<p>
Скрипт состоит из одного файлика, который нужно закинуть в папку, имеющую права на запись. Обычно хостеры ограничивают максимальный размер файла, передаваемого на сервер, восемью мегабайтами. Это исправляется настройкой .htaccess`a, в который надо добавить два параметра:</p>
<p><pre><code>php_value post_max_size 32M
php_value upload_max_filesize 32M</code></pre></p>
<p>Сам скрипт:</p>
<p><pre><code>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
	&lt;head profile=&quot;http://gmpg.org/xfn/11&quot;&gt;
		&lt;style type=&quot;text/css&quot;&gt;
			#wrap {
				width:400px;
				margin:200px auto;
				padding:40px 30px 30px 30px;
				border:1px solid #ccc;
				text-align:center;
				color:#666;
			}
		&lt;/style&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;div id=&quot;wrap&quot;&gt;
			&lt;?php function show_form()
			{ ?&gt;
			&lt;form id=&quot;form&quot; enctype=&quot;multipart/form-data&quot; action=&quot;&lt;?php echo $_SERVER['PHP_SELF']; ?&gt;&quot; method=&quot;POST&quot;&gt;

				Выберите файл: &lt;input name=&quot;myfile&quot; type=&quot;file&quot;/&gt;
				&lt;br /&gt;
				Максимальный размер файла:
				&lt;b&gt;
						&lt;?php	echo ( (int) ini_get('post_max_size') &lt; (int) ini_get('upload_max_filesize') ) ? (int) ini_get('post_max_size') : (int) ini_get('upload_max_filesize'); ?&gt;
				&lt;/b&gt; мегабайт!&lt;br /&gt;
				&lt;input type=&quot;submit&quot; value=&quot;Загрузить&quot;/&gt;
			&lt;/form&gt;
		&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;
	&lt;?php }	?&gt;



&lt;?php

if ($_SERVER['REQUEST_METHOD']=='POST')
{
	upload();
}
else
{
	show_form();
}

function upload()
{

	if( empty($_FILES) )
		show_err(0);
	foreach ( $_FILES as $file )
	{
		// Если ошибок не было
		if($file[&quot;error&quot;] == 0)
		{
			if ( file_exists($file['name']) )
				show_err(1);
			// Получаем содержимое файла
			//move_uploaded_file ( $myfile, dirname(__file__). DIRECTORY_SEPARATOR );
			copy($file['tmp_name'],dirname(__FILE__). DIRECTORY_SEPARATOR . $file['name']);
			echo '&lt;h4&gt;Файл &lt;i&gt;',$file['name'],'&lt;/i&gt;  успешно загружен.&lt;/h4&gt;' ;
			show_form();
		}
	}
}

function show_err($id)
{
	$err[0] = 'ОШИБКА! Файл не был загружен.';
	$err[1] = 'ОШИБКА! Этот файл уже загружен.';

	echo '&lt;h2&gt;'.$err[$id].'&lt;/h2&gt;';
	show_form();
	die();
}
?&gt;</code></pre></p>]]></content:encoded><wfw:commentRss>http://sartas.ru/comments/17/</wfw:commentRss></item><item><title>SQLite: быстродействие транзакций</title><link>http://sartas.ru/sqlite-bystrodejstvie-tranzakcij/</link><comments>http://sartas.ru/sqlite-bystrodejstvie-tranzakcij/#comments</comments><pubDate>Thu, 21 Jan 2010 11:26:58 -0500</pubDate><guid isPermaLink="false">http://sartas.ru/sqlite-bystrodejstvie-tranzakcij/</guid><dc:creator>admin</dc:creator><category><![CDATA[SQL]]></category><category><![CDATA[PDO]]></category><category><![CDATA[транзакции]]></category><description><![CDATA[Ранее Blogspot: Your OpenID credentials could not be verified | Позже PHP: Загрузка файлов на сервер
SQLite3 на хостингах обычно встречается в связке с PDO. Это одно из главных преимуществ SQLite, потому что в случае нехватки быстродействия можно легко перейти на MySQL, всего лишь изменив настройки подключения к базе данных.
В процессе изучения PDO, я не обращал особого внимания на транзакции, как оказалоь зря. Они позволяют отменить группу SQL запросов, если один из них будет неудачен. Это основная задача транзакций. Их еще одним полезным свойством является ускорение выполнения нескольких запросов.Далее »]]></description><content:encoded><![CDATA[<p>Ранее <a rel="prev" href="http://sartas.ru/blogspot-your-openid-credentials-could-not-be-verified/">Blogspot: Your OpenID credentials could not be verified</a> | Позже <a rel="next" href="http://sartas.ru/php-zagruzka-fajlov-na-server/">PHP: Загрузка файлов на сервер</a></p>
<p>SQLite3 на хостингах обычно встречается в связке с PDO. Это одно из главных преимуществ SQLite, потому что в случае нехватки быстродействия можно легко перейти на MySQL, всего лишь изменив настройки подключения к базе данных.</p>
<p>В процессе изучения PDO, я не обращал особого внимания на транзакции, как оказалоь зря. Они позволяют отменить группу SQL запросов, если один из них будет неудачен. Это основная задача транзакций. Их еще одним полезным свойством является ускорение выполнения нескольких запросов.</p><a href="http://sartas.ru/sqlite-bystrodejstvie-tranzakcij/#more-16" class="more-link">Далее »</a>]]></content:encoded><wfw:commentRss>http://sartas.ru/comments/16/</wfw:commentRss></item><item><title>Blogspot: Your OpenID credentials could not be verified</title><link>http://sartas.ru/blogspot-your-openid-credentials-could-not-be-verified/</link><comments>http://sartas.ru/blogspot-your-openid-credentials-could-not-be-verified/#comments</comments><pubDate>Sat, 16 Jan 2010 12:08:08 -0500</pubDate><guid isPermaLink="false">http://sartas.ru/blogspot-your-openid-credentials-could-not-be-verified/</guid><dc:creator>admin</dc:creator><category><![CDATA[Решение проблем]]></category><category><![CDATA[openid]]></category><description><![CDATA[Ранее JS: Чистые скрипты | Позже SQLite: быстродействие транзакций
Всемогущий гугл портит жизнь владельцам автономных OpenID серверов. Если кто-то хочет оставить комментарий в чьем-нибудь блоге на блогспоте у него появятся проблемы, точнее только одна - "Your OpenID credentials could not be verified".  
К счастью решение этой проблемы есть. Нужно нажимать на кнопку "Preview" вместо "Post Comment" и комментарий будет отправлен! После ввода капчи)
В качестве собственного OpenID сервера я использую phpMyID. Настроить его несложно, в интернете много информации об этом.
На моем хостинге, с установленным suhosin, phpMyID работать отказался, но ему можно вправить мозги. В настройках есть опция 'allow_suhosin', меняем ее значение на TRUE и радуемся собственному OpenID!]]></description><content:encoded><![CDATA[<p>Ранее <a rel="prev" href="http://sartas.ru/js-chistye-skripty/">JS: Чистые скрипты</a> | Позже <a rel="next" href="http://sartas.ru/sqlite-bystrodejstvie-tranzakcij/">SQLite: быстродействие транзакций</a></p>
<p>Всемогущий гугл портит жизнь владельцам автономных OpenID серверов. Если кто-то хочет оставить комментарий в чьем-нибудь блоге на блогспоте у него появятся проблемы, точнее только одна - "Your OpenID credentials could not be verified".  </p>
<p>К счастью решение этой проблемы есть. Нужно нажимать на кнопку "Preview" вместо "Post Comment" и комментарий будет отправлен! После ввода капчи)</p>
<p><a href="http://siege.org/projects/phpMyID" target="_blank">В качестве собственного OpenID сервера я использую phpMyID</a>. Настроить его несложно, в интернете много информации об этом.</p>
<p>На моем хостинге, с установленным suhosin, phpMyID работать отказался, но ему можно вправить мозги. В настройках есть опция 'allow_suhosin', меняем ее значение на TRUE и радуемся собственному OpenID!</p>]]></content:encoded><wfw:commentRss>http://sartas.ru/comments/15/</wfw:commentRss></item><item><title>JS: Чистые скрипты</title><link>http://sartas.ru/js-chistye-skripty/</link><comments>http://sartas.ru/js-chistye-skripty/#comments</comments><pubDate>Fri, 15 Jan 2010 14:25:51 -0500</pubDate><guid isPermaLink="false">http://sartas.ru/js-chistye-skripty/</guid><dc:creator>admin</dc:creator><category><![CDATA[Javascript скрипты]]></category><category><![CDATA[правильный кодинг]]></category><description><![CDATA[Ранее Своя CMS. Начало. | Позже Blogspot: Your OpenID credentials could not be verified
Популярность Яваскрипт фреймворков растет и уже многие начинаюшие разработчики начинают с изучения этих фреймворков, вместо того чтобы сначала выучить Яваскрипт. В результате можно найти сайты на которых размер самого скрипта - лишь десятая часть размера фреймворка, без которого во многих случаях можно было обойтись.
Примером использования чистого яваскрипта являются скрипты от Майкла Лейгебера (Michael Leigeber). Он разработал следующие скрипты:
TinySlider 
TinyDropdown 
TinySlideshow
TinyAccordion 
TinyBox - модальное окно с плавным затемнением фона
TinyTable - сортировка таблицы
TinyScroller
tooltip - всплывающие подсказки
messages - проверка данных формы на правильноть и всплывающее сообщение у некорректно заполненных полей
Скачать и посмотреть демо этих скриптов можно здесь и здесь]]></description><content:encoded><![CDATA[<p>Ранее <a rel="prev" href="http://sartas.ru/svoya-cms.-nachalo./">Своя CMS. Начало.</a> | Позже <a rel="next" href="http://sartas.ru/blogspot-your-openid-credentials-could-not-be-verified/">Blogspot: Your OpenID credentials could not be verified</a></p>
<p>Популярность Яваскрипт фреймворков растет и уже многие начинаюшие разработчики начинают с изучения этих фреймворков, вместо того чтобы сначала выучить Яваскрипт. В результате можно найти сайты на которых размер самого скрипта - лишь десятая часть размера фреймворка, без которого во многих случаях можно было обойтись.</p>
<p>Примером использования чистого яваскрипта являются скрипты от <a href="http://www.leigeber.com" target"_blank">Майкла Лейгебера (Michael Leigeber)</a>. Он разработал следующие скрипты:</p>
<p>TinySlider <br />
TinyDropdown <br />
TinySlideshow<br />
TinyAccordion <br />
TinyBox - модальное окно с плавным затемнением фона<br />
TinyTable - сортировка таблицы<br />
TinyScroller<br />
tooltip - всплывающие подсказки<br />
messages - проверка данных формы на правильноть и всплывающее сообщение у некорректно заполненных полей</p>
<p>Скачать и посмотреть демо этих скриптов можно <a href="http://sandbox.leigeber.com/" target"_blank">здесь</a> и <a href="http://forum.leigeber.com/index.php?app=downloads&showcat=1" target"_blank">здесь</a></p>]]></content:encoded><wfw:commentRss>http://sartas.ru/comments/14/</wfw:commentRss></item><item><title>Своя CMS. Начало.</title><link>http://sartas.ru/svoya-cms.-nachalo./</link><comments>http://sartas.ru/svoya-cms.-nachalo./#comments</comments><pubDate>Fri, 15 Jan 2010 14:22:48 -0500</pubDate><guid isPermaLink="false">http://sartas.ru/svoya-cms.-nachalo./</guid><dc:creator>admin</dc:creator><category><![CDATA[Life log]]></category><category><![CDATA[своя CMS]]></category><description><![CDATA[Ранее JS: цепочка функций, как в jQuery | Позже JS: Чистые скрипты
Начитавшись книг по ООП решил написать свою CMS, надо же куда-то пристроить полученные знания:)
Различных CMS я препробовал очень много, но в них всегда чего-то не хватало. Больше всего понравились Frog CMS и Блоголет. Но Frog не подходит для блога, а Блоголет все никак не может родить третью версию.
Основное требование для нового движка - он должен быть модульным. Чтобы можно было и блог сделать, и многоуровневую навигацию в меню, да и магазин тоже. А если какой-то модуль не нужен, он просто отключается из админки.
Все это можно сделать с использованием какого-нибудь фреймворка, но для него потребуется MySQL, а я пока плохо в ней разбираюсь. К тому же моя цель не изучении php фреймворков. Хотя отдельные функции все-таки лучше брать из них.Далее »]]></description><content:encoded><![CDATA[<p>Ранее <a rel="prev" href="http://sartas.ru/js-cepochka-funkcij-kak-v-jquery/">JS: цепочка функций, как в jQuery</a> | Позже <a rel="next" href="http://sartas.ru/js-chistye-skripty/">JS: Чистые скрипты</a></p>
<p>Начитавшись книг по ООП решил написать свою CMS, надо же куда-то пристроить полученные знания:)</p>
<p>Различных CMS я препробовал очень много, но в них всегда чего-то не хватало. Больше всего понравились Frog CMS и Блоголет. Но Frog не подходит для блога, а Блоголет все никак не может родить третью версию.</p>
<p>Основное требование для нового движка - он должен быть модульным. Чтобы можно было и блог сделать, и многоуровневую навигацию в меню, да и магазин тоже. А если какой-то модуль не нужен, он просто отключается из админки.</p>
<p>Все это можно сделать с использованием какого-нибудь фреймворка, но для него потребуется MySQL, а я пока плохо в ней разбираюсь. К тому же моя цель не изучении php фреймворков. Хотя отдельные функции все-таки лучше брать из них.</p><a href="http://sartas.ru/svoya-cms.-nachalo./#more-13" class="more-link">Далее »</a>]]></content:encoded><wfw:commentRss>http://sartas.ru/comments/13/</wfw:commentRss></item><item><title>JS: цепочка функций, как в jQuery</title><link>http://sartas.ru/js-cepochka-funkcij-kak-v-jquery/</link><comments>http://sartas.ru/js-cepochka-funkcij-kak-v-jquery/#comments</comments><pubDate>Wed, 06 Jan 2010 08:13:28 -0500</pubDate><guid isPermaLink="false">http://sartas.ru/js-cepochka-funkcij-kak-v-jquery/</guid><dc:creator>admin</dc:creator><category><![CDATA[Javascript кодинг]]></category><category><![CDATA[jQuery]]></category><category><![CDATA[цепочка]]></category><category><![CDATA[замыкание]]></category><description><![CDATA[Ранее JS: получение стилей из CSS | Позже Своя CMS. Начало.
Во всеми любимом jQuery имеется возможность использования цепочек вызовов функций, можно ,например, написать такую цепочку:
$('#id').add('p').addClass('class').html('text');
А как сделать цепочку для собственноручно написанных функций? Можно, конечно, подключить jQuery и добавить в него свои функции, но вместо слепого использования громоздкого фреймворка, я решил поподробней разобраться с цепочками.Далее »]]></description><content:encoded><![CDATA[<p>Ранее <a rel="prev" href="http://sartas.ru/javascript-poluchenie-stilej-iz-css-fajla/">JS: получение стилей из CSS</a> | Позже <a rel="next" href="http://sartas.ru/svoya-cms.-nachalo./">Своя CMS. Начало.</a></p>
<p>Во всеми любимом jQuery имеется возможность использования цепочек вызовов функций, можно ,например, написать такую цепочку<span id="1c9e7640fa408aef84e3222335a57a8a"></span>:</p>
<p><pre><code>$('#id').add('p').addClass('class').html('text');</code></pre></p>
<p>А как сделать цепочку для собственноручно написанных функций? Можно, конечно, подключить jQuery и добавить в него свои функции, но вместо слепого использования громоздкого фреймворка, я решил поподробней разобраться с цепочками.</p><a href="http://sartas.ru/js-cepochka-funkcij-kak-v-jquery/#more-12" class="more-link">Далее »</a>]]></content:encoded><wfw:commentRss>http://sartas.ru/comments/12/</wfw:commentRss></item><item><title>JS: получение стилей из CSS</title><link>http://sartas.ru/javascript-poluchenie-stilej-iz-css-fajla/</link><comments>http://sartas.ru/javascript-poluchenie-stilej-iz-css-fajla/#comments</comments><pubDate>Sat, 02 Jan 2010 06:22:42 -0500</pubDate><guid isPermaLink="false">http://sartas.ru/javascript-poluchenie-stilej-iz-css-fajla/</guid><dc:creator>admin</dc:creator><category><![CDATA[Javascript кодинг]]></category><category><![CDATA[style]]></category><description><![CDATA[Ранее JS: запуск после загрузки страницы | Позже JS: цепочка функций, как в jQuery
Получить значения CSS стилей элемента можно с помощью метода getComputedStyle или currentStyle для IE. А как объединить эти два метода в кроссбраузерную функцию? Вот что я нашел:
webew.ru
if (!window.getComputedStyle) { 
    window.getComputedStyle = function(el, pseudo) { 
        this.el = el; 
        this.getPropertyValue = function(prop) { 
            var re = /(\-([a-z]){1})/g; 
            if (prop == 'float') prop = 'styleFloat'; 
            if (re.test(prop)) { 
                prop = prop.replace(re, function () { 
                    return arguments[2].toUpperCase(); 
                }); 
            } 
            return el.currentStyle[prop] ? el.currentStyle[prop] : null; 
        } 
        return this; 
    } 
}


window.onload = function() { 
    var cs = window.getComputedStyle(document.getElementById('linkId'), &quot;&quot;); 
    var out = &quot;&quot;; 
    out += &quot;color:&quot; + cs.getPropertyValue(&quot;color&quot;) + &quot;\n&quot;; 
    out += &quot;float:&quot; + cs.getPropertyValue(&quot;float&quot;) + &quot;\n&quot;; 
    out += &quot;background-color:&quot; + cs.getPropertyValue(&quot;background-color&quot;); 
    alert(out); 
}

xpoint.ru
if (typeof document.defaultView == 'undefined')
  document.defaultView = {};

if (typeof document.defaultView.getComputedStyle == 'undefined')
{
  document.defaultView.getComputedStyle = function(element, pseudoElement)
  {
    return element.currentStyle;
  }
}
javascriptkit.com
function getStyle(el, cssprop){
 if (el.currentStyle) //IE
  return el.currentStyle[cssprop]
 else if (document.defaultView &amp;&amp; document.defaultView.getComputedStyle) //Firefox
  return document.defaultView.getComputedStyle(el, &quot;&quot;)[cssprop]
 else //try and get inline style
  return el.style[cssprop]
}Далее »]]></description><content:encoded><![CDATA[<p>Ранее <a rel="prev" href="http://sartas.ru/javascript-zapusk-posle-zagruzki-stranicy/">JS: запуск после загрузки страницы</a> | Позже <a rel="next" href="http://sartas.ru/js-cepochka-funkcij-kak-v-jquery/">JS: цепочка функций, как в jQuery</a></p>
<p>Получить значения CSS стилей элемента можно с помощью метода getComputedStyle или currentStyle для IE. А как объединить эти два метода в кроссбраузерную функцию? Вот что я нашел:</p>
<p><a href="http://webew.ru/articles/412.webew" title="Получаем значения свойств элементов - getComputedStyle">webew.ru</a></p>
<p><pre><code>if (!window.getComputedStyle) { 
    window.getComputedStyle = function(el, pseudo) { 
        this.el = el; 
        this.getPropertyValue = function(prop) { 
            var re = /(\-([a-z]){1})/g; 
            if (prop == 'float') prop = 'styleFloat'; 
            if (re.test(prop)) { 
                prop = prop.replace(re, function () { 
                    return arguments[2].toUpperCase(); 
                }); 
            } 
            return el.currentStyle[prop] ? el.currentStyle[prop] : null; 
        } 
        return this; 
    } 
}


window.onload = function() { 
    var cs = window.getComputedStyle(document.getElementById('linkId'), &quot;&quot;); 
    var out = &quot;&quot;; 
    out += &quot;color:&quot; + cs.getPropertyValue(&quot;color&quot;) + &quot;\n&quot;; 
    out += &quot;float:&quot; + cs.getPropertyValue(&quot;float&quot;) + &quot;\n&quot;; 
    out += &quot;background-color:&quot; + cs.getPropertyValue(&quot;background-color&quot;); 
    alert(out); 
}
</code></pre></p>
<p><a href="http://xpoint.ru/know-how/JavaScript/IzmenenieStiley" title="Изменение стилей элементов">xpoint.ru</a></p>
<p><pre><code>if (typeof document.defaultView == 'undefined')
  document.defaultView = {};

if (typeof document.defaultView.getComputedStyle == 'undefined')
{
  document.defaultView.getComputedStyle = function(element, pseudoElement)
  {
    return element.currentStyle;
  }
}</code></pre></p>
<p><a href="http://www.javascriptkit.com/dhtmltutors/dhtmlcascade4.shtml" title="Cross browser function for retrieving global/external CSS properties">javascriptkit.com</a></p>
<p><pre><code>function getStyle(el, cssprop){
 if (el.currentStyle) //IE
  return el.currentStyle[cssprop]
 else if (document.defaultView &amp;&amp; document.defaultView.getComputedStyle) //Firefox
  return document.defaultView.getComputedStyle(el, &quot;&quot;)[cssprop]
 else //try and get inline style
  return el.style[cssprop]
}</code></pre></p><a href="http://sartas.ru/javascript-poluchenie-stilej-iz-css-fajla/#more-11" class="more-link">Далее »</a>]]></content:encoded><wfw:commentRss>http://sartas.ru/comments/11/</wfw:commentRss></item><item><title>JS: запуск после загрузки страницы</title><link>http://sartas.ru/javascript-zapusk-posle-zagruzki-stranicy/</link><comments>http://sartas.ru/javascript-zapusk-posle-zagruzki-stranicy/#comments</comments><pubDate>Fri, 01 Jan 2010 12:49:35 -0500</pubDate><guid isPermaLink="false">http://sartas.ru/javascript-zapusk-posle-zagruzki-stranicy/</guid><dc:creator>admin</dc:creator><category><![CDATA[Javascript кодинг]]></category><category><![CDATA[onload]]></category><description><![CDATA[Ранее Изучение ООП  в  PHP 5. | Позже JS: получение стилей из CSS
Иногда нет возможности прописать запуск скрипта в &lt;body onLoad=...&gt; или в конце страницы. Приходится использовать событие window.onload, но оно произойдет только после полной загрузки страницы вместе с картинками и флешем. К счастью в нормальных браузерах есть DOMContentLoaded, решающее эту проблему.Далее »]]></description><content:encoded><![CDATA[<p>Ранее <a rel="prev" href="http://sartas.ru/izuchenie-oop-v-php-5./">Изучение ООП  в  PHP 5.</a> | Позже <a rel="next" href="http://sartas.ru/javascript-poluchenie-stilej-iz-css-fajla/">JS: получение стилей из CSS</a></p>
<p>Иногда нет возможности прописать запуск скрипта в <code>&lt;body onLoad=...&gt;</code> или в конце страницы. Приходится использовать событие window.onload, но оно произойдет только после полной загрузки страницы вместе с картинками и флешем. К счастью в нормальных браузерах есть DOMContentLoaded, решающее эту проблему.</p><a href="http://sartas.ru/javascript-zapusk-posle-zagruzki-stranicy/#more-10" class="more-link">Далее »</a>]]></content:encoded><wfw:commentRss>http://sartas.ru/comments/10/</wfw:commentRss></item></channel></rss>
