<?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"?><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" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>WEB-scripting</title>
	
	<link>http://tsamada.com.ua</link>
	<description>создание и продвижение сайтов</description>
	<lastBuildDate>Fri, 18 Nov 2011 10:39:40 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/WEB-scripting-by-tsamada" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="web-scripting-by-tsamada" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Выбор строк из диапазона дат в MySQL</title>
		<link>http://tsamada.com.ua/web/mysql/vybor-strok-iz-diapazona-dat-v-mysql/</link>
		<comments>http://tsamada.com.ua/web/mysql/vybor-strok-iz-diapazona-dat-v-mysql/#comments</comments>
		<pubDate>Mon, 16 May 2011 14:46:55 +0000</pubDate>
		<dc:creator>Tsamada</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://tsamada.com.ua/?p=353</guid>
		<description><![CDATA[Опять что-то с памятью моей Очередная заметка о том какой послать SQL запрос для выборки записей с нужной датой или промежутком дат. Выбрать записи с сегодняшней датой SELECT * FROM name_table WHERE DATE(date_column) = DATE(NOW()); где: name_table &#8211; имя таблицы над которой производим операцию выборки; date_column &#8211; колонка с датой. DATE() &#8211; вернет дату без [...]]]></description>
			<content:encoded><![CDATA[<p>Опять что-то с памятью моей <img src='http://tsamada.com.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Очередная заметка о том какой послать SQL запрос для выборки записей с нужной датой или промежутком дат.</p>
<h3><strong>Выбрать записи с сегодняшней датой</strong></h3>
<pre class="brush:sql">SELECT * FROM name_table WHERE  DATE(date_column) = DATE(NOW());</pre>
<p>где:<br />
<code>name_table</code> &#8211; имя таблицы над которой производим операцию выборки;<br />
<code>date_column</code> &#8211; колонка с датой.</p>
<p><strong>DATE()</strong> &#8211; вернет дату без времени.<br />
<strong>NOW()</strong> &#8211; возвращает текущую дату и время (мы используем сочетание DATE(NOW()) для удаления времени).</p>
<h3><strong>Выбрать записи с промежутком</strong></h3>
<pre class="brush:sql">SELECT * FROM name_table WHERE DATE(date_column) BETWEEN DATE(NOW()) AND DATE_ADD(DATE(NOW()), INTERVAL 7 DAY);</pre>
<p>где:<br />
<code>name_table</code> &#8211; имя таблицы над которой производим операцию выборки;<br />
<code>date_column</code> &#8211; колонка с датой.</p>
<p>В данном примере мы выбираем записи в определенном диапазоне: текущая дата + 7 дней.</p>
<p>Общая форма выглядит так:</p>
<pre class="brush:sql">SELECT * FROM name_table WHERE DATE BETWEEN [начальная дата] AND [конечная дата]</pre>
<p>З.Ы.: Вместо <strong>DATE(NOW())</strong> можно указать дату которая вас интересует в формате <strong>&#8216;yyyy-mm-dd&#8217;</strong> (обязательно в кавычках)</p>
<p>З.Ы.Ы.: Более подробно узнать про функции даты и времени можно перейдя по <a title="Справочное руководство по MySQL. Функции даты и времени." href="http://www.mysql.ru/docs/man/Date_and_time_functions.html" target="_blank">этой ссылке</a>.</p>
<p>Спасибо за внимание!</p>
]]></content:encoded>
			<wfw:commentRss>http://tsamada.com.ua/web/mysql/vybor-strok-iz-diapazona-dat-v-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Закругление углов у изображения</title>
		<link>http://tsamada.com.ua/web/php/imagick/zakruglenie-uglov-u-izobrazheniya/</link>
		<comments>http://tsamada.com.ua/web/php/imagick/zakruglenie-uglov-u-izobrazheniya/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 13:29:21 +0000</pubDate>
		<dc:creator>Tsamada</dc:creator>
				<category><![CDATA[Imagick]]></category>

		<guid isPermaLink="false">http://tsamada.com.ua/?p=342</guid>
		<description><![CDATA[Хочу написать метод закругления краев у картинки. В итоге мы должны получить что-то похожее на то что написано в статье Наложение изображений на PHP, но заменим библиотеку GD на Imagick. Плюс данного метода в том, что не нужно подготавливать 2 разных картинки и потом их «склеивать»/«смешивать», все делается на лету. Вот код который это реализует [...]]]></description>
			<content:encoded><![CDATA[<p>Хочу написать метод закругления краев у картинки. В итоге мы должны получить что-то похожее на то что написано в статье <a title="Наложение изображений на PHP" href="http://tsamada.com.ua/web/nalozhenie-izobrazhenij-na-php/">Наложение изображений на PHP</a>, но заменим библиотеку GD на Imagick.</p>
<p>Плюс данного метода в том, что не нужно подготавливать 2 разных картинки и потом их «склеивать»/«смешивать», все делается на лету.</p>
<p>Вот код который это реализует с небольшими коментами:</p>
<pre class="brush:php">&lt;?php
/* задаем изображение над которым производим манипуляции */
$image = $_SERVER['DOCUMENT_ROOT'].$_GET['argv'];
/* считываем изображение над которым производим манипуляции */
$im = new Imagick( $image );

if (!($iSize = getimagesize($image))) {
	return false;
}

/* если у нас неоднородный фон и исходное изображение
 не поддерживает альфа канал (прозрачность) то конвертируем его в png */
switch ($iSize['mime']) {
                case 'image/jpeg':
                        $im-&gt;setImageFormat("png32");
                        break;
                default:
                        return false;
                        break;
        }

/* Делаем превьюшку (в данном примере 220px на пропорционально по высоте),
 если нужен исходный размер - коментируем */
$im-&gt;thumbnailImage( 220, null );

/* Задаем радиус скругления в px */
$im-&gt;roundCorners( 11, 11 );
/***
* На данном этапе можно было бы и остановится и сразу выводить то что есть,
* а есть у нас картинко с круглыми краями, но нам вдруг захотелось добавить тенюшку,
* по-этому продолжим нашу епопею
***/

/* Клонируем наше изображение */
$shadow = $im-&gt;clone();
/* Задаем фоновый цвет, он и будет цветом тенюшки (в примере черный) */
$shadow-&gt;setImageBackgroundColor( new ImagickPixel( 'black' ) );
/* Создаем тень (прозрачность, ширина тенюшки, смещение по X, смещение по Y) */
$shadow-&gt;shadowImage( 80, 13, 5, 5 );
/* shadowImage создает тень, по-этому мы ложим поверх теньшки
 исходное изображение */
$shadow-&gt;compositeImage( $im, Imagick::COMPOSITE_OVER, 0, 0 );
/* Убираем комменты и т.п. из картинки */
$shadow-&gt;stripImage();
/* Выводим получившееся изображение на экран <img src='http://tsamada.com.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  */
header( "Content-Type: image/png" );
echo $shadow;

/* Если мы остановились на закрулении и тень нам не нужна
то выводим сразу так:

header( "Content-Type: image/png" );
echo $im;
 */
?&gt;</pre>
<p>Результат:</p>
<p><a href="http://tsamada.com.ua/wp-content/uploads/2011/03/result-img.jpg" rel="lightbox[342]"><img class="aligncenter size-full wp-image-350" title="result-img" src="http://tsamada.com.ua/wp-content/uploads/2011/03/result-img.jpg" alt="Закругление углов у изображения" width="280" height="261" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://tsamada.com.ua/web/php/imagick/zakruglenie-uglov-u-izobrazheniya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Операции с колонками в MySQL</title>
		<link>http://tsamada.com.ua/web/mysql/operacii-s-kolonkami-v-mysql/</link>
		<comments>http://tsamada.com.ua/web/mysql/operacii-s-kolonkami-v-mysql/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 10:25:44 +0000</pubDate>
		<dc:creator>Tsamada</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://tsamada.com.ua/?p=310</guid>
		<description><![CDATA[Года, склероз и все такое, по-этому решил записать на заметочку пару примеров работы с колонками MySQL. Скопировать данные из столбца в столбец в пределах 1-й таблицы: update name_table set new_column=`old_column`; где: name_table &#8211; имя таблицы над которой производим операцию; new_column &#8211; колонка куда нужно скопировать данные; old_column &#8211; колонка из которой нужно скопировать данные. Скопировать [...]]]></description>
			<content:encoded><![CDATA[<p>Года, склероз и все такое, по-этому решил записать на заметочку пару примеров работы с колонками MySQL.</p>
<h3><strong>Скопировать данные из столбца в столбец в пределах 1-й таблицы:</strong></h3>
<pre class="brush:sql">update name_table set new_column=`old_column`;</pre>
<p>где:</p>
<p><code>name_table</code> &#8211; имя таблицы над которой производим операцию;</p>
<p><code>new_column</code> &#8211; колонка куда нужно скопировать данные;</p>
<p><code>old_column</code> &#8211; колонка из которой нужно скопировать данные.</p>
<h3><strong>Скопировать все данные из 1-й таблицы в другую:</strong></h3>
<pre class="brush:sql">insert into table2 select * from table1;</pre>
<p>где:</p>
<p><code>table1</code> &#8211; таблица из которой копируем;</p>
<p><code>table2</code> &#8211; таблица в которую копируем.</p>
<h3><strong>Скопировать данные из колонки 1-й таблицы в колонку 2-й таблицы:</strong></h3>
<pre class="brush:sql">insert into table2 select old_column as new_column from table1;</pre>
<p>где:</p>
<p><code>table1</code> &#8211; таблица из которой копируем;</p>
<p><code>table2</code> &#8211; таблица в которую копируем;</p>
<p><code>old_column</code> &#8211; название колонки которую нужно скопировать;</p>
<p><code>new_column</code> - название колонки куда нужно скопировать.</p>
<p><em>Ну и в догонку: не забываем, что можно указывать не 1 столбец, а несколько. Ну и при этом можно еще применять необходимые условия (WHERE, LOWER, ну и т.д. по вкусу).</em></p>
<p>Спасибо за внимание.</p>
]]></content:encoded>
			<wfw:commentRss>http://tsamada.com.ua/web/mysql/operacii-s-kolonkami-v-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Кроссбраузерное решение прозрачности блока на CSS</title>
		<link>http://tsamada.com.ua/web/css/krossbrauzernoe-reshenie-prozrachnosti-bloka-na-css/</link>
		<comments>http://tsamada.com.ua/web/css/krossbrauzernoe-reshenie-prozrachnosti-bloka-na-css/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 16:42:26 +0000</pubDate>
		<dc:creator>Tsamada</dc:creator>
				<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://tsamada.com.ua/?p=304</guid>
		<description><![CDATA[Вы можете быстро и легко применить прозрачность любого div-элемента, добавив следующий код CSS в таблицу стилей: .opacity { filter: alpha(opacity=50); -khtml-opacity: 0.5; -moz-opacity: 0.5; opacity: 0.5; } Данный пример устанавливает прозрачность блока .opacity на 50%. (изменив, на пример, 50 на 70, а 0.5 на 0.7 выставится прозрачность в 70% соответственно) Перед использованием не забудьте удалить [...]]]></description>
			<content:encoded><![CDATA[<p>Вы можете быстро и легко применить прозрачность любого div-элемента, добавив следующий код CSS в таблицу стилей:</p>
<pre class="brush:css">.opacity {
	filter: alpha(opacity=50);
	-khtml-opacity: 0.5;
	-moz-opacity: 0.5;
	opacity: 0.5;
	}</pre>
<p>Данный пример устанавливает прозрачность блока .opacity на 50%. (изменив, на пример, 50 на 70, а 0.5 на 0.7 выставится прозрачность в 70% соответственно)</p>
<p>Перед использованием не забудьте удалить комментарии, а то были случаи&#8230;</p>
<p>Спасибо за внимание.</p>
]]></content:encoded>
			<wfw:commentRss>http://tsamada.com.ua/web/css/krossbrauzernoe-reshenie-prozrachnosti-bloka-na-css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Памятка сисадминам на отдыхе</title>
		<link>http://tsamada.com.ua/raznoe/humor/pamyatka-sisadminam-na-otdyxe/</link>
		<comments>http://tsamada.com.ua/raznoe/humor/pamyatka-sisadminam-na-otdyxe/#comments</comments>
		<pubDate>Fri, 11 Feb 2011 13:03:25 +0000</pubDate>
		<dc:creator>Tsamada</dc:creator>
				<category><![CDATA[Юмор]]></category>

		<guid isPermaLink="false">http://tsamada.com.ua/?p=293</guid>
		<description><![CDATA[&#8211;&#124;&#124;&#8211; Hе устанавливай локальных сеток. Сетевые устpойства могут вызвать конфликты с Рыбнадзоpом, а это лечится потом долго. Лучше ставь локальную удочку на беpегу, но только не из поpтов. В поpтах большой тpаффик, погонят. &#8211;&#124;&#124;&#8211; Если кpиво установилась палатка – надо не полениться и пеpесобpать. Если устанавливаешь впеpвые – обязательно изучи мануал, там много нетpивиального. &#8211;&#124;&#124;&#8211; [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Hе устанавливай локальных сеток. Сетевые устpойства могут вызвать конфликты с Рыбнадзоpом, а это лечится потом долго. Лучше ставь локальную удочку на беpегу, но только не из поpтов. В поpтах большой тpаффик, погонят.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Если кpиво установилась палатка – надо не полениться и пеpесобpать. Если устанавливаешь впеpвые – обязательно изучи мануал, там много нетpивиального.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Скачивать воду лучше из колонок, она посвежее: та, что идет в комплекте с ландшафтом, не всегда коppектно pаботает &#8211; может потом отвлекать частыми пpеpываниями.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Самые свежие дpова pаботают хуже всего. Они еще сыpые, на них обычно тpебуется лицензия (если сломать – могут возникнуть конфликты). Поэтому лучше всего бpать стаpый отстой. Hо он имеет свойство падать пpи пеpвом обpащении – умей вовpемя отскочить.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Файpвол окопай и обложи камнями. По окончании pаботы, пеpед самым выходом, зашатдаунь ногами и залей туда свой лог, попpосив всех дам отвеpнуться.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Если вас много пользователей – совет: договоpитесь и выделите в лесу отдельную своп-паpтицию. Иначе уже чеpез день-два будешь натыкаться повсюду на свои стаpые исходники. Еще непpиятнее, если на чужие.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Спальник обычно велик по объему, но хоpошо сжимается с помощью компpессионного пакета любой веpсии. Я наматываю несколько метpов толстой pезинки &#8211; это дольше, зато выше степень сжатия.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Все источники питания кpоме консеpвов аpхивиpуй последовательно в два-тpи-четыpе пакета, иначе после гpозы питание может надолго выpубиться.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Hа консеpвах всегда смотpи номеp веpсии и дату. Стаpые веpсии не используй и не хpани – выбpасывай без сомнений, с ними жизни не будет.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Следи, чтобы у палатки всегда была хоpошая пpошивка. Особенно если там установлен какой-нибудь эмулятоp виндоус – потенциальная дыpа в безопасности.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Полог никогда не оставляй pазмонтиpованным на ночь. Иначе налетит туча мелких хакеpов и до утpа будет тыкаться, как бы чего у тебя выкачать.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Если есть возможность – поставь себе антивиpус пpотив энцефалитного бага и столбняка. Hе ставь сам, воспользуйся стандаpтным доктоpом &#8211; он все пpопишет и поставит как надо под лопатку.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Собиpая pюкзак, не пользуйся комплектами, котоpые много весят – ищи более легкие и компактные аналоги. Иначе будет пpоблема с местом. Помни: от частых пеpезагpузок позвоночника может полететь диск! Восстановить диск – большая пpоблема.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Беpежно хpани ключи и документацию на себя: в геpметичном пакетике в каpмане pюкзака или в ксивнике на шее. Потеpяешь – не восстановишь.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Почаще стиpай софт, меняй на свежий. Суши над файpволом, но не близко. Увидев медведя – не пингуй. Веди себя по умолчанию.</p>
<p style="text-align: center;">&#8211;||&#8211;</p>
<p>Заходи в саpай аккуpатно – могут быть сеpьезные гpабли.</p>
<p>Ну и напоследок народная мудрость: <strong>Халявному нету в пинг не смотрят&#8230;</strong></p>
<p>Источник сего юмора: <em><a title="журнал ПРОграммист" href="http://procoder.info/" target="_blank">журнал ПРОграммист</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://tsamada.com.ua/raznoe/humor/pamyatka-sisadminam-na-otdyxe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Виртуальные коды клавиш (Keyboard Codes)</title>
		<link>http://tsamada.com.ua/web/javascript/keyboard-codes/</link>
		<comments>http://tsamada.com.ua/web/javascript/keyboard-codes/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 12:53:05 +0000</pubDate>
		<dc:creator>Tsamada</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://tsamada.com.ua/?p=288</guid>
		<description><![CDATA[Вот понадобились мне коды нажимаемых клавиш, ладно по памяти еще помню, что Enter это 13, Esc &#8211; 27, а Space &#8211; 32 и все, дальше память подвела. А нужен то был код Ctrl-Enter. По-этому делаю себе пометочку с виртуальными кодами клавиш (keycodes) стандартной клавиатуры. Table: Keypad Keys --------------------------------------------------------------------- Key Code(linux) Code(windows) Code(windows) DEX DEX HEX [...]]]></description>
			<content:encoded><![CDATA[<p>Вот понадобились мне коды нажимаемых клавиш, ладно по памяти еще помню, что Enter это 13, Esc &#8211; 27, а Space &#8211; 32 и все, дальше память подвела. А нужен то был код Ctrl-Enter.<br />
По-этому делаю себе пометочку с виртуальными кодами клавиш (keycodes) стандартной клавиатуры.</p>
<pre>   <strong>Table: Keypad Keys</strong>
   ---------------------------------------------------------------------
    Key                       Code(linux)  Code(windows)  Code(windows)
                                 DEX          DEX            HEX
   ---------------------------------------------------------------------
    Uparrow, Ctrl-E               5           38            0x26
    Dnarrow, Ctrl-X               2           40            0x28
    Leftarrow, Ctrl-S            19           37            0x25
    Rightarrow, Ctrl-D            4           39            0x27
    Home, Ctrl-A                  1           36            0x24
    End, Ctrl-F                   6           35            0x23
    PgUp, Ctrl-R                 18           33            0x21
    PgDn, Ctrl-C                  3           34            0x22

    Backspace, Ctrl-H             8            8            0x08
    Return (Enter), Ctrl-M       13           13            0x0D
    Esc, Ctrl-[                  27           27            0x1B

    Ctrl                                      17            0x11
    Alt                                       18            0x12
    Shift                                     16            0x10
    Pause                                     19            0x13
    CapsLock                                  20            0x14
    Space                                     32            0x20

    Ctrl-Leftarrow, Ctrl-Z       26
    Ctrl-Rightarrow, Ctrl-B       2
    Ctrl-Home, Ctrl-]            29
    Ctrl-End, Ctrl-W             23
    Ctrl-PgUp, Ctrl-Hyphen       31
    Ctrl-PgDn, Ctrl-^            30
    Ctrl-Backspace              127
    Ctrl-Return (Ctrl-Enter)     10
    Ctrl-ScrollLock, Ctrl-C       3
    Ctrl-PrtSc                   16
   ---------------------------------------------------------------------

   <strong>Table: Editing keys</strong>
   -------------------------------------------------------------
    Key               Code(linux)  Code(windows)  Code(windows)
                         DEX          DEX            HEX
   -------------------------------------------------------------
    Del, Ctrl-G           7           46            0x2E
    Tab, Ctrl-I           9            9            0x09
    Shift-Tab           271
    Ins, Ctrl-V          22           45            0x2D
   -------------------------------------------------------------

   <strong>Table: Control Keys</strong>
   -------------------------------------
    Key               Code(linux)
                         DEX
   -------------------------------------
    Ctrl-A                1
    Ctrl-B                2
    Ctrl-C                3
    Ctrl-D                4
    Ctrl-E                5
    Ctrl-F                6
    Ctrl-G                7
    Ctrl-H                8
    Ctrl-I                9
    Ctrl-J               10
    Ctrl-K               11
    Ctrl-L               12
    Ctrl-M               13
    Ctrl-N               14
    Ctrl-O               15
    Ctrl-P               16
    Ctrl-Q               17
    Ctrl-R               18
    Ctrl-S               19
    Ctrl-T               20
    Ctrl-U               21
    Ctrl-V               22
    Ctrl-W               23
    Ctrl-X               24
    Ctrl-Y               25
    Ctrl-Z               26
    Ctrl-[               27
    Ctrl-\               28
    Ctrl-]               29
    Ctrl-^               30
    Ctrl--               31
    Ctrl-@              259
   -------------------------------------

   <strong>Table: Alt Keys</strong>
   -------------------------------------
    Key               Code(linux)
                         DEX
   -------------------------------------
    Alt-A               286
    Alt-B               304
    Alt-C               302
    Alt-D               288
    Alt-E               274
    Alt-F               289
    Alt-G               290
    Alt-H               291
    Alt-I               279
    Alt-J               292
    Alt-K               293
    Alt-L               294
    Alt-M               306
    Alt-N               305
    Alt-O               280
    Alt-P               281
    Alt-Q               272
    Alt-R               275
    Alt-S               287
    Alt-T               276
    Alt-U               278
    Alt-V               303
    Alt-W               273
    Alt-X               301
    Alt-Y               277
    Alt-Z               300
   -------------------------------------

   <strong>Table: Function Keys</strong>
   -------------------------------------------------------------
    Key              Code(linux)  Code(windows)  Code(windows)
                        DEX          DEX            HEX
   -------------------------------------------------------------
    F1, Ctrl-\          28           112           0x70
    F2                  -1           113           0x71
    F3                  -2           114           0x72
    F4                  -3           115           0x73
    F5                  -4           116           0x74
    F6                  -5           117           0x75
    F7                  -6           118           0x76
    F8                  -7           119           0x77
    F9                  -8           120           0x78
    F10                 -9           121           0x79
    F11                              122           0x7A
    F12                              123           0x7B
   -------------------------------------------------------------

   <strong>Table: Control-Function Keys</strong>
   -------------------------------------
    Key                 Code
   -------------------------------------
    Ctrl-F1             -20
    Ctrl-F2             -21
    Ctrl-F4             -22
    Ctrl-F3             -23
    Ctrl-F5             -24
    Ctrl-F6             -25
    Ctrl-F7             -26
    Ctrl-F8             -27
    Ctrl-F9             -28
    Ctrl-F10            -29
   -------------------------------------

   <strong>Table: Alt-Function Keys</strong>
   -------------------------------------
    Key                 Code
   -------------------------------------
    Alt-F1              -30
    Alt-F2              -31
    Alt-F3              -32
    Alt-F4              -33
    Alt-F5              -34
    Alt-F6              -35
    Alt-F7              -36
    Alt-F8              -37
    Alt-F9              -38
    Alt-F10             -39
   -------------------------------------

   <strong>Table: Shift-Function Keys</strong>
   -------------------------------------
    Key                 Code
   -------------------------------------
    Shift-F1            -10
    Shift-F2            -11
    Shift-F3            -12
    Shift-F4            -13
    Shift-F5            -14
    Shift-F6            -15
    Shift-F7            -16
    Shift-F8            -17
    Shift-F9            -18
    Shift-F10           -19
   -------------------------------------</pre>
]]></content:encoded>
			<wfw:commentRss>http://tsamada.com.ua/web/javascript/keyboard-codes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Заглушка для ie6. Ваш браузер устарел.</title>
		<link>http://tsamada.com.ua/web/zaglushka-dlya-ie6-vash-brauzer-ustarel/</link>
		<comments>http://tsamada.com.ua/web/zaglushka-dlya-ie6-vash-brauzer-ustarel/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 10:45:41 +0000</pubDate>
		<dc:creator>Tsamada</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[WEB]]></category>

		<guid isPermaLink="false">http://tsamada.com.ua/?p=277</guid>
		<description><![CDATA[С учетом стремительного роста интернет технологий старые (устаревшие) браузеры могут некорректно отображать вашу страничку. К такому браузеру относится и Internet Explorer 6, который не может предоставить все возможности, которые могут предоставить современные браузеры, а скорость его работы в несколько раз ниже! Сервисы Google (Google Docs, Google Sites, Google Apps, Youtube), социальная сеть В Контакте так же постепенно уходят [...]]]></description>
			<content:encoded><![CDATA[<p>С учетом стремительного роста интернет технологий старые (устаревшие) браузеры могут некорректно отображать вашу страничку. К такому браузеру относится и Internet Explorer 6, который не может предоставить все  возможности, которые могут предоставить современные браузеры, а скорость его  работы в несколько раз ниже!</p>
<p>Сервисы Google (Google Docs, Google Sites, Google Apps, Youtube), социальная сеть В Контакте так же постепенно уходят от IE6 и уже поставили необходимые заглушки с предложением пользователю перейти на более новые (современные) браузеры. С 2010 года, уже сама Microsoft активно начала рекомендовать пользователям отказаться от IE6. Бедный ослик&#8230;</p>
<p>С учетом вышесказанного предоставляю вашему вниманию заглушечку (рисовал не сам), которую можно использовать на своих сайтах.</p>
<p><a href="http://tsamada.com.ua/wp-content/uploads/2011/01/ie6.zip">Заглушка для IE6</a>.</p>
<p><strong>Порядок использования:</strong></p>
<ol>
<li>Распаковываем <a href="http://tsamada.com.ua/wp-content/uploads/2011/01/ie6.zip">архив</a> в корень сайта (можно и не в корень).</li>
<li>Определяем браузер и перенаправляем в нужное русло так:
<pre class="brush:php">&lt;?php
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if (stripos($user_agent, 'MSIE 6.0') !== false &amp;&amp; stripos($user_agent, 'MSIE 8.0') === false &amp;&amp; stripos($user_agent, 'MSIE 7.0') === false) {
   if (!isset($HTTP_COOKIE_VARS["ie"])) {setcookie("ie", "yes", time()+60*60*24*360);header ("Location: /ie6/ie6.html");}
}
?&gt;</pre>
</li>
</ol>
<p>Если зайдем на сайт через Internet Explorer 6 то на выходе получаем такую картинку:</p>
<div id="attachment_279" class="wp-caption aligncenter" style="width: 310px"><a href="http://tsamada.com.ua/wp-content/uploads/2011/01/ie6.jpg" rel="lightbox[277]"><img class="size-medium wp-image-279" title="Заглушка ie6" src="http://tsamada.com.ua/wp-content/uploads/2011/01/ie6-300x300.jpg" alt="Заглушка ie6" width="300" height="300" /></a><p class="wp-caption-text">Заглушка ie6</p></div>
<p>Спасибо за внимание.</p>
]]></content:encoded>
			<wfw:commentRss>http://tsamada.com.ua/web/zaglushka-dlya-ie6-vash-brauzer-ustarel/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Как запретить браузеру выделять текст</title>
		<link>http://tsamada.com.ua/web/kak-zapretit-brauzeru-vydelyat-tekst/</link>
		<comments>http://tsamada.com.ua/web/kak-zapretit-brauzeru-vydelyat-tekst/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 12:21:50 +0000</pubDate>
		<dc:creator>Tsamada</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WEB]]></category>

		<guid isPermaLink="false">http://tsamada.com.ua/?p=202</guid>
		<description><![CDATA[Решение на запрет выделения текста с использованием JavaScript: function preventSelection(element){ var preventSelection = false; function addHandler(element, event, handler){ if (element.attachEvent) element.attachEvent('on' + event, handler); else if (element.addEventListener) element.addEventListener(event, handler, false); } function removeSelection(){ if (window.getSelection) { window.getSelection().removeAllRanges(); } else if (document.selection &#38;&#38; document.selection.clear) document.selection.clear(); } function killCtrlA(event){ var event = event &#124;&#124; window.event; var sender [...]]]></description>
			<content:encoded><![CDATA[<p>Решение на запрет выделения текста с использованием JavaScript:</p>
<pre class="brush:javascript">function preventSelection(element){
  var preventSelection = false;

  function addHandler(element, event, handler){
    if (element.attachEvent)
      element.attachEvent('on' + event, handler);
    else
      if (element.addEventListener)
        element.addEventListener(event, handler, false);
  }
  function removeSelection(){
    if (window.getSelection) { window.getSelection().removeAllRanges(); }
    else if (document.selection &amp;&amp; document.selection.clear)
      document.selection.clear();
  }
  function killCtrlA(event){
    var event = event || window.event;
    var sender = event.target || event.srcElement;

    if (sender.tagName.match(/INPUT|TEXTAREA/i))
      return;

    var key = event.keyCode || event.which;
    if (event.ctrlKey &amp;&amp; key == 'A'.charCodeAt(0))  // 'A'.charCodeAt(0) можно заменить на 65
    {
      removeSelection();

      if (event.preventDefault)
        event.preventDefault();
      else
        event.returnValue = false;
    }
  }

  // не даем выделять текст мышкой
  addHandler(element, 'mousemove', function(){
    if(preventSelection)
      removeSelection();
  });
  addHandler(element, 'mousedown', function(event){
    var event = event || window.event;
    var sender = event.target || event.srcElement;
    preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
  });

  // борем dblclick
  // если вешать функцию не на событие dblclick, можно избежать
  // временное выделение текста в некоторых браузерах
  addHandler(element, 'mouseup', function(){
    if (preventSelection)
      removeSelection();
    preventSelection = false;
  });

  // борем ctrl+A
  // скорей всего это и не надо, к тому же есть подозрение
  // что в случае все же такой необходимости функцию нужно
  // вешать один раз и на document, а не на элемент
  addHandler(element, 'keydown', killCtrlA);
  addHandler(element, 'keyup', killCtrlA);
}</pre>
<p>Вызваваем данную функцию, например:</p>
<pre class="brush:javascript">preventSelection(document);</pre>
<p>Оригинал статьи и описание на <a href="http://habrahabr.ru/blogs/webdev/18080/" target="_blank">хабре</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tsamada.com.ua/web/kak-zapretit-brauzeru-vydelyat-tekst/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SWFObject – скрипт для вставки флэш (Flash)</title>
		<link>http://tsamada.com.ua/web/swfobject-skript-dlya-vstavki-flash/</link>
		<comments>http://tsamada.com.ua/web/swfobject-skript-dlya-vstavki-flash/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 10:21:03 +0000</pubDate>
		<dc:creator>Tsamada</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WEB]]></category>

		<guid isPermaLink="false">http://tsamada.com.ua/?p=152</guid>
		<description><![CDATA[Представляю вашему вниманию прекрастнейший скриптец SWFObject, используемый для вложения Flash-роликов без лишнего, так сказать, геморроя. Скрипт имеет ряд преимуществ: кроссбраузерный  и соответствует стандартам; позволяет избежать необходимости активации Flash-ролика пользователем в Internet Explorer, Opera; можно задавать альтернативный контент в случае, если у пользователя не установлен Flash-плеер или стоит старая версия; можно проверять версию Flash-плеера и предлагать обновиться, если [...]]]></description>
			<content:encoded><![CDATA[<p>Представляю вашему вниманию прекрастнейший скриптец <a href="http://code.google.com/p/swfobject/" target="_blank">SWFObject</a>, используемый для вложения Flash-роликов без лишнего, так сказать, геморроя.</p>
<p>Скрипт имеет ряд преимуществ:</p>
<ul>
<li>кроссбраузерный  и соответствует стандартам;</li>
<li>позволяет избежать необходимости активации Flash-ролика пользователем в Internet Explorer, Opera;</li>
<li>можно задавать альтернативный контент в случае, если у пользователя не установлен Flash-плеер или стоит старая версия;</li>
<li>можно проверять версию Flash-плеера и предлагать обновиться,  если та устарела, либо запускать экспресс-инсталляцию Flash-плеера, если  он не установлен;</li>
<li>можно динамически загружать/выгружать плееры без перезагрузки страницы;</li>
<li>можно указывать необходимые параметры ну и т.д.</li>
</ul>
<p><strong>Пример использования:</strong></p>
<pre class="brush:xml">&lt;script type="text/javascript" src="swfobject.js"&gt;&lt;/script&gt;

&lt;div id="flashcontent"&gt;
  This text is replaced by the Flash movie.
&lt;/div&gt;

&lt;script type="text/javascript"&gt;
   var so = new SWFObject("movie.swf", "mymovie", "400", "200", "8", "#336699");
   so.write("flashcontent");
&lt;/script&gt;
</pre>
<p>По шагам:</p>
<ol>
<li>Скачиваем скрипт <a href="http://code.google.com/p/swfobject/" target="_blank">SWFObject</a>;</li>
<li>Подключаем
<pre class="brush:xml">&lt;script type="text/javascript" src="swfobject.js"&gt;&lt;/script&gt;</pre>
</li>
<li>Создаем блок в котором будет отображаться мувик
<pre class="brush:xml">&lt;div id="flashcontent"&gt;
  This text is replaced by the Flash movie.
&lt;/div&gt;</pre>
</li>
<li>Ну и вызываем сам Flash-ролик с заданными параметрами
<pre class="brush:xml">&lt;script type="text/javascript"&gt;
   var so = new SWFObject("movie.swf", "mymovie", "400", "200", "8", "#336699");
   so.write("flashcontent");
&lt;/script&gt;</pre>
</li>
</ol>
<p><strong>Пояснения:</strong></p>
<pre class="brush:javascript">var so = new SWFObject(swf, id, width, height, version, background-color [, quality, xiRedirectUrl, redirectUrl, detectKey]);</pre>
<p>где</p>
<ul>
<li>swf &#8211; Путь к вашему swf файлу;</li>
<li>id &#8211; ID вашего объекта;</li>
<li>width &#8211; Ширина вашего flash компонента;</li>
<li>height &#8211; Высота вашего flash компонента;</li>
<li>version &#8211; Требуемая версия Flash плеера. Может быть вида &laquo;6.0.65&#8243; или только главная версия, например, &laquo;7&#8243;;</li>
<li>background-color &#8211; Цвет фона вашего flash компонента в формате hex.</li>
</ul>
<p>Необязательные параметры:</p>
<ul>
<li>quality &#8211; Качество проигрывания. Если не указано, то используется значение &laquo;high&raquo;;</li>
<li>xiRedirectUrl &#8211; Если вы хотите перенаправить пользователей после экспресс установки, укажите адрес здесь;</li>
<li>redirectUrl &#8211; Если вы хотите перенаправить пользователей, у которых нет необходимой версии flash плеера, укажите URL здесь;</li>
<li>detectKey &#8211; Переменная, которая используется для обхода проверки  версии flash плеера. Например, что обойти проверку версии и просто  вывести flash мувик на странице, можно использовать значение  ?detectflash=false к адресу страницы, содержащей swf файл.</li>
</ul>
<pre class="brush:javascript">so.write("flashcontent");</pre>
<p>Используйте ID тега, внутри которого вы хотите разместить ваш flash мувик.</p>
<p><strong>Еще пару примеров:</strong></p>
<p>с использованием параметров flash</p>
<pre class="brush:xml">&lt;script type="text/javascript"&gt;
   var so = new SWFObject("movie.swf", "mymovie", "400", "100%", "8", "#336699");
   so.addParam("quality", "low");
   so.addParam("wmode", "transparent");
   so.addParam("salign", "t");
   so.write("flashcontent");
&lt;/script&gt;</pre>
<p>c использованием flashvars параметров</p>
<pre class="brush:xml">&lt;script type="text/javascript"&gt;
   var so = new SWFObject("movie.swf", "mymovie", "400", "200", "8", "#336699");
   so.addVariable("variable1", "value1");
   so.addVariable("variable2", "value2");
   so.addVariable("variable3", "value3");
   so.write("flashcontent");
&lt;/script&gt;</pre>
<p>c использованием параметров из строки запроса <code>http://tsamada.com.ua/page.html?variable1=value1&amp;variable2=value2</code></p>
<pre class="brush:xml">&lt;script type="text/javascript"&gt;
   var so = new SWFObject("movie.swf", "mymovie", "400", "200", "8", "#336699");
   so.addVariable("variable1", getQueryParamValue("variable1"));
   so.addVariable("variable2", getQueryParamValue("variable2"));
   so.write("flashcontent");
&lt;/script&gt;</pre>
<p>Более подробно можно узнать на сайте разработчиков <a href="http://code.google.com/p/swfobject/" target="_blank">SWFObject</a></p>
<p>Надеюсь, информация была полезной.</p>
]]></content:encoded>
			<wfw:commentRss>http://tsamada.com.ua/web/swfobject-skript-dlya-vstavki-flash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Отдать пользователю файл скриптом</title>
		<link>http://tsamada.com.ua/web/otdat-polzovatelyu-fajl-skriptom/</link>
		<comments>http://tsamada.com.ua/web/otdat-polzovatelyu-fajl-skriptom/#comments</comments>
		<pubDate>Mon, 27 Dec 2010 11:15:41 +0000</pubDate>
		<dc:creator>Tsamada</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[WEB]]></category>

		<guid isPermaLink="false">http://tsamada.com.ua/?p=140</guid>
		<description><![CDATA[Случилась такая ситуация, когда нужно было отдать определенный файл пользователю, но не просто ссылку, а чтоб можно было скачать без задействования правой кнопы мышки. То есть &#171;нажал &#8211; скачал&#187;. Код представленный ниже позволяет достичь сеё хотение $filename = $_GET['file']; // необходимых для IE, в противном случае Content-Disposition игнорируется if(ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off'); $file_extension = strtolower(substr(strrchr($filename,"."),1)); if( [...]]]></description>
			<content:encoded><![CDATA[<p>Случилась такая ситуация, когда нужно было отдать определенный файл пользователю, но не просто ссылку, а чтоб можно было скачать без задействования правой кнопы мышки. То есть &laquo;нажал &#8211; скачал&raquo;.</p>
<p>Код представленный ниже позволяет достичь сеё хотение <img src='http://tsamada.com.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre class="brush:php">$filename = $_GET['file'];

// необходимых для IE, в противном случае Content-Disposition игнорируется
if(ini_get('zlib.output_compression'))
  ini_set('zlib.output_compression', 'Off');

$file_extension = strtolower(substr(strrchr($filename,"."),1));

if( $filename == "" )
{
  echo "Download FileОШИБКА: Не указан файл.";
  exit;
}/* elseif ( ! file_exists( $filename ) ) // сделать проверку на существование удаленного файла
{
  echo "Download FileОШИБКА: Файл не найден.";
  exit;
};*/
switch( $file_extension )
{
  case "pdf": $ctype="application/pdf"; break;
  case "exe": $ctype="application/octet-stream"; break;
  case "zip": $ctype="application/zip"; break;
  case "doc": $ctype="application/msword"; break;
  case "xls": $ctype="application/vnd.ms-excel"; break;
  case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
  case "gif": $ctype="image/gif"; break;
  case "png": $ctype="image/png"; break;
  case "jpeg":
  case "jpg": $ctype="image/jpg"; break;
  default: $ctype="application/force-download";
}
header("Pragma: public"); // требуется
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // требуется для некоторых браузеров
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename)); // необходимо доделать подсчет размера файла по абсолютному пути
readfile("$filename");
exit();</pre>
<p>Сохраним его, для примера, как <a href="http://tsamada.com.ua/web/otdat-polzovatelyu-fajl-skriptom/">download.php</a>, теперь при нажатии на ссылку пользователю будет предоставлен выбор «Сохранить на диск», «Открыть» или отменить скачку.</p>
<p>Ссылка будет иметь вид аля<br />
<code>&lt;a href="/download.php?filename=image.jpg"&gt;Скачать&lt;/a&gt;</code><br />
или<br />
<code>&lt;a href="/download.php?filename=http://tsamada.com.ua/image.jpg"&gt;Скачать&lt;/a&gt;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://tsamada.com.ua/web/otdat-polzovatelyu-fajl-skriptom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

