<?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>LAMP-dev</title>
	<atom:link href="http://lamp-dev.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://lamp-dev.ru</link>
	<description>Linux Apache MySQL PHP(Python, Perl) development - Web development</description>
	<lastBuildDate>Mon, 30 Apr 2012 12:07:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Где в CMS хранятся настройки подключения к базе данных? и другие настройки</title>
		<link>http://lamp-dev.ru/web-dev/cms-settings/</link>
		<comments>http://lamp-dev.ru/web-dev/cms-settings/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 13:12:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web-разработка]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[database connect]]></category>
		<category><![CDATA[path to file]]></category>
		<category><![CDATA[settings]]></category>
		<category><![CDATA[конфиг файл]]></category>

		<guid isPermaLink="false">http://lamp-dev.ru/?p=1531</guid>
		<description><![CDATA[При разворачивании какого нибудь сайта, веб-приложения на незнакомой CMS, CMF этот вопрос возникает довольно часто. Особенно у новичков. Файлы скопированы, база данных создана и осталось только настроить систему, чтобы скрипты знали, как подключиться к этой созданной базе данных. Да и другие настройки подпилить. Только вот где этот файл?

можно навскидку посмотреть файлы где нибудь в корне [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1557" title="config" src="http://lamp-dev.ru/wp-content/uploads/2012/04/post-pic1.png" alt="" width="250" height="156" />При разворачивании какого нибудь сайта, веб-приложения на незнакомой <strong>CMS, CMF</strong> этот вопрос возникает довольно часто. Особенно у новичков. Файлы скопированы, база данных создана и осталось только настроить систему, чтобы скрипты знали,<strong> как подключиться к этой созданной базе данных</strong>. Да и другие настройки подпилить. Только вот где этот файл?</p>
<ul>
<li>можно навскидку посмотреть файлы где нибудь в корне сайта; обычно кофигурационные файлы имеют в своём названии слова conf, configuration и тд; обычно их легко найти;</li>
<li>можно посмотреть исходники файлов, что где подключается и найти этот файлик, обычно подключается где то в начале скриптов;</li>
<li>можно посмотреть документацию по продукту; кстати вся эта проблема вовсе и не проблема на этапе инсталляции, так как во многих продуктах есть исталляторы, которые сами создадут нужные файлы и пропишут что нужно;</li>
<li>можно посмотреть в интернете;</li>
</ul>
<p>Так вот, насчёт последнего пункта, решил составить список, где у разных CMS хранятся настройки, в частности настройки подключения к базе данных. Обычно все конфигурационные директивы хранятся в одном месте.<span id="more-1531"></span></p>
<p>Буду указывать название продукта и версию. Пути к файлам будут относительно корня сайта. Все настройки описывать не буду. Буду указывать настройки подключения к базе данных по шаблону типа &laquo;в чём хранятся(переменные, константы) имя переменной(константы) хранящий адрес хоста, имя базы данных, логин пользователя, пароль пользователя&raquo;</p>
<p>Так же там могут быть настройки кодировки подключения, префикса таблиц, но их указывать не буду. Вообще если найти файл, то там всё должно быть логично и даже прокомментировано.</p>
<p>И так&#8230;.</p>
<h2><img class="alignright size-full wp-image-1544" title="wordpress-ico" src="http://lamp-dev.ru/wp-content/uploads/2012/04/wordpress-ico.jpg" alt="" width="107" height="80" />Wordpress 2.9</h2>
<p><em>/wp-config.php</em></p>
<p>константы DB_HOST, DB_NAME, DB_USER, DB_PASSWORD</p>
<h2><img class="alignright size-full wp-image-1548" title="1c-bitrix" src="http://lamp-dev.ru/wp-content/uploads/2012/04/1c-bitrix.jpg" alt="" width="200" height="75" />1с Битрикс 11</h2>
<p><em>/bitrix/php_interface/dbconn.php</em></p>
<p>переменные $DBHost, $DBName, $DBLogin, $DBPassword</p>
<h2><img class="alignright size-full wp-image-1550" title="joomla-ico" src="http://lamp-dev.ru/wp-content/uploads/2012/04/joomla-ico.png" alt="" width="157" height="80" />Joomla! 2.5</h2>
<p><em>/configuration.php</em></p>
<p>свойства класса  JConfig $host, $db, $user, $password</p>
<h2><img class="alignright size-full wp-image-1551" title="phpmyadmin" src="http://lamp-dev.ru/wp-content/uploads/2012/04/phpmyadmin.gif" alt="" width="138" height="80" />phpMyAdmin 3.2.3</h2>
<p><em>/config.inc.php</em></p>
<p>переменные $cfg['Servers'][$i]['host'], база данных выбирается в самом приложении, $cfg['Servers'][$i]['user'], $cfg['Servers'][$i]['password']</p>
<h2><img class="alignright size-full wp-image-1563" title="netcat" src="http://lamp-dev.ru/wp-content/uploads/2012/04/netcat.png" alt="" width="80" height="80" />NetCat 4.7</h2>
<p><em>/vars.inc.php</em></p>
<p>переменные $MYSQL_HOST, $MYSQL_DB_NAME, $MYSQL_USER, $MYSQL_PASSWORD</p>
<h2><a href="http://lamp-dev.ru/wp-content/uploads/2012/04/drupal-ico.jpg"><img class="alignright size-full wp-image-1565" title="drupal-ico" src="http://lamp-dev.ru/wp-content/uploads/2012/04/drupal-ico.jpg" alt="" width="70" height="80" /></a>Drupal 7.12</h2>
<p><em>/sites/default/settings.php</em></p>
<p>где default &#8211; сайт, может различаться</p>
<p>хранится всё в переменной-массиве $databases с ключами host, database, username, password</p>
<p>Думаю список ещё будет пополняться.</p>
<p>Прошу дополнить своими знаниями этот пост в комментах! Буду очень благодарен.</p>
]]></content:encoded>
			<wfw:commentRss>http://lamp-dev.ru/web-dev/cms-settings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax запрос к компоненту Joomla</title>
		<link>http://lamp-dev.ru/joomla/ajax-zapros-k-komponentu-joomla/</link>
		<comments>http://lamp-dev.ru/joomla/ajax-zapros-k-komponentu-joomla/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 12:19:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Joomla!]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[component]]></category>
		<category><![CDATA[only component content]]></category>
		<category><![CDATA[request]]></category>
		<category><![CDATA[заметка]]></category>

		<guid isPermaLink="false">http://lamp-dev.ru/?p=1498</guid>
		<description><![CDATA[Запрос к компоненту Joomla! выгладит следующим образом
/index.php?option=com_mycomponent&#38;task=view
где
option=com_mycomponent &#8211; имя компонента
task=view &#8211; какая то задача, реализуемая как правило методом контроллера(компоненты в Joomla реализованы по паттерну MVC)
При этом загружается и шаблон -  оформление сайта, как то шапка, футер, менюшки, сайдбары.
Но как быть, если мы запрашиваем компонент через ajax, чтобы после данные компонента вставить в нужное место страницы. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1516" title="Joomla!" src="http://lamp-dev.ru/wp-content/uploads/2012/04/Joomla.png" alt="" width="300" height="205" />Запрос к компоненту Joomla! выгладит следующим образом</p>
<pre><code class="html">/index.php?option=com_mycomponent&amp;task=view</code></pre>
<p>где<br />
<em>option=com_mycomponent</em> &#8211; имя компонента<br />
<em>task=view</em> &#8211; какая то задача, реализуемая как правило методом контроллера(компоненты в Joomla реализованы по паттерну MVC)</p>
<p>При этом загружается и шаблон -  оформление сайта, как то шапка, футер, менюшки, сайдбары.</p>
<p>Но как быть, если мы запрашиваем компонент через ajax, чтобы после данные компонента вставить в нужное место страницы. При этом нам НЕ нужно оформление страницы, нам нужен только контент компонента.</p>
<p>Для этого к адресу <em>/index.php?option=com_mycomponent&amp;task=view </em>добавляем параметр <em>no_html=1</em> и получаем URI следующего вида</p>
<pre><code class="html">/index.php?option=com_mycomponent&amp;task=view&amp;no_html=1</code></pre>
<p>В ответ на этот запрос получаем только контент, генерируемый компонентом.</p>
]]></content:encoded>
			<wfw:commentRss>http://lamp-dev.ru/joomla/ajax-zapros-k-komponentu-joomla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сегодня день веб-разработчика! 4.04 Ура товарищи! )</title>
		<link>http://lamp-dev.ru/miscellaneous/404-web-dev-day/</link>
		<comments>http://lamp-dev.ru/miscellaneous/404-web-dev-day/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 08:11:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[4.04]]></category>
		<category><![CDATA[web dev day]]></category>
		<category><![CDATA[день веб-разработчика]]></category>
		<category><![CDATA[праздник]]></category>

		<guid isPermaLink="false">http://lamp-dev.ru/?p=1491</guid>
		<description><![CDATA[Сегодня, 4 апреля(4.04) день веб-разработчика.  Как вы уже наверное догадались, отмечается он именно сегодня, так 4.04 ассоциируется с распространённым кодом ответа 404 &#8211; Not Found.
Про другие праздники в сфере ай-ти може прочитать тут.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://lamp-dev.ru/wp-content/uploads/2012/04/404-web-dev-day.png"><img class="alignright size-full wp-image-1492" title="404-web-dev-day" src="http://lamp-dev.ru/wp-content/uploads/2012/04/404-web-dev-day.png" alt="" width="250" height="117" /></a>Сегодня, 4 апреля(4.04) день веб-разработчика.  Как вы уже наверное догадались, отмечается он именно сегодня, так 4.04 ассоциируется с распространённым кодом ответа 404 &#8211; Not Found.</p>
<p>Про другие <a href="/miscellaneous/prazdniki-v-it/" target="_blank">праздники в сфере ай-ти може прочитать тут</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lamp-dev.ru/miscellaneous/404-web-dev-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Моя оценка сайта webvybory2012.ru и системы</title>
		<link>http://lamp-dev.ru/miscellaneous/webvybory-2012/</link>
		<comments>http://lamp-dev.ru/miscellaneous/webvybory-2012/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 08:38:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[2012]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[веб-выборы]]></category>
		<category><![CDATA[оценка]]></category>
		<category><![CDATA[сайт]]></category>

		<guid isPermaLink="false">http://lamp-dev.ru/?p=1456</guid>
		<description><![CDATA[Вчера прошли выборы президента Российской Федерации. Итог уже известен и был предсказуем &#8211; победил Путин. Но мы не о политике.
Наверное наиболее часто упоминаемое на выборах &#8211; это то, что выбираем президента на 6 лет вместо 4, и то, что на данных выборах используется система видео-трансляций http://webvybory2012.ru/, благодаря которой можно было заглянуть на любой избирательный участок, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1465" title="Логотип веб-выборы 2012" src="http://lamp-dev.ru/wp-content/uploads/2012/03/logo1.png" alt="" width="144" height="49" />Вчера прошли выборы президента Российской Федерации. Итог уже известен и был предсказуем &#8211; победил Путин. Но мы не о политике.</p>
<p>Наверное наиболее часто упоминаемое на выборах &#8211; это то, что выбираем президента на 6 лет вместо 4, и то, что на данных выборах используется система видео-трансляций <a rel="nofollow" href="http://webvybory2012.ru/" target="_blank">http://webvybory2012.ru/</a>, благодаря которой можно было заглянуть на любой избирательный участок, посмотреть что там происходит &#8211; нет ли вбросов, нарушений и тд и тп. Данную системы предложили создать после неспокойных декабрьских выборов, когда только ленивый не кричал на каждом углу, что выборы нечестные.<span id="more-1456"></span></p>
<p>Как чиновники любят говорить, освоили 13 миллиардов рублей. Про то что попили кричать не буду, так как не знаю тонкостей системы. Но при такой массовости &#8211; около 94000 участков по всей России, думаю оно того стоит. Думаю даже большую часть денег потратили не на оборудование нужной техникой участков, а на всю инфраструктуру &#8211; сеть, сервера, программная система и прочее. Прокладка интернета в отдалённые участки чего только стоит.</p>
<h2>Что понравилось</h2>
<ol>
<li>понравилось то, что сайт не рухнул; как заявил сегодня утром Щёголев, сайт был рассчитан на нагрузки, которые испытывает Google</li>
<li>удобство и простота сайта</li>
<li>где я смотрел &#8211; везде все камеры работали, хотя я целенаправленно не искал неработающие трансляции, говорят они были</li>
</ol>
<h2>Что не понравилось</h2>
<ol>
<li>иногда идентификация работала через раз, я заходил через аккаунт твиттера</li>
</ol>
<h2>Серия скрин-шотов сайта webvybory2012.ru</h2>
<p>Вообще эти скрин-шоты скорее для истории, чем для того, чтобы кто то посмотрел как выглядит интерфейс сайта, так как наверное уже все заходили на этот сайт.</p>
<p><strong>Просмотр карты</strong></p>
<p><img class="alignnone size-full wp-image-1457" title="Портал webvybory2012.ru" src="http://lamp-dev.ru/wp-content/uploads/2012/03/webvybory-2012-portal.png" alt="" width="550" height="264" /></p>
<p><strong>Просмотр трансляции. </strong></p>
<p>Сейчас трансляции не работают, делал скрины на следующий день после выборов.</p>
<p><img class="alignnone size-full wp-image-1473" title="Просмотр трансляции" src="http://lamp-dev.ru/wp-content/uploads/2012/03/shot-2.png" alt="" width="550" height="357" /></p>
<p><strong>Тестирование скорости интернет-соединения</strong></p>
<p>Как говорили по ТВ, для нормальной связи, просмотра было достаточно скорости 512кбит.</p>
<p><img class="alignnone size-full wp-image-1477" title="Тестирование скорости интернет-соединения" src="http://lamp-dev.ru/wp-content/uploads/2012/03/shot-31.png" alt="" width="550" height="357" /></p>
<p>Итог тестирования</p>
<p><a href="http://lamp-dev.ru/wp-content/uploads/2012/03/shot-4.png"><img class="alignnone size-full wp-image-1478" title="Итог тестирования скорости соединения на портале веб-выборы 2012" src="http://lamp-dev.ru/wp-content/uploads/2012/03/shot-4.png" alt="" width="550" height="357" /></a></p>
<p>Довольно таки полная справочная информация. Мне лично не понадобилась.</p>
<p><img class="alignnone size-full wp-image-1480" title="Справочная информация на портале веб-выборы 2012" src="http://lamp-dev.ru/wp-content/uploads/2012/03/help1.png" alt="" width="550" height="362" /></p>
<p>Избирательные участки можно было добавлять в избранное для более быстрого последующего доступа.</p>
<p><a href="http://lamp-dev.ru/wp-content/uploads/2012/03/fav.png"><img class="alignnone size-full wp-image-1481" title="Список избранных избирательных участков" src="http://lamp-dev.ru/wp-content/uploads/2012/03/fav.png" alt="" width="550" height="295" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://lamp-dev.ru/miscellaneous/webvybory-2012/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PDO vs. MySQLi: что стоит использовать?</title>
		<link>http://lamp-dev.ru/php/pdo-vs-mysqli/</link>
		<comments>http://lamp-dev.ru/php/pdo-vs-mysqli/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 19:24:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[mapping]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqli]]></category>
		<category><![CDATA[native mysql extension]]></category>
		<category><![CDATA[pdo]]></category>
		<category><![CDATA[perfomance]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[summary]]></category>
		<category><![CDATA[сравнение]]></category>

		<guid isPermaLink="false">http://lamp-dev.ru/?p=1405</guid>
		<description><![CDATA[Для соединения с базой данных можно использовать MySQLi и/или PDO
Что следует знать при выборе?
В этой статье будут показаны различия, затронуты темы поддержки баз данных, стабильности и производительности.

Общая информация &#8211; сравнение




PDO
MySQLi


Поддержка баз данных
12 различных баз данных
только MySQL


API
ООП
ООП и процедурное обращение


Соединение
всё просто
всё просто


Именованные параметры
  
+
-


Маппинг
+
+


Prepared statements
 (client side)
+
-


Производительность
быстро
быстро


Хранимые процедуры
  
+
+



Соединение
Ниже приведены примеры подключения с использованием [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1420" title="pdo vs mysqli" src="http://lamp-dev.ru/wp-content/uploads/2012/02/pdo-vs-mysqli.jpg" alt="" width="180" height="180" />Для соединения с базой данных можно использовать <a title="My Structured Query Language Improved" rel="nofollow" href="http://www.php.net/manual/en/book.mysqli.php" target="_blank">MySQLi</a> и/или <a title="PHP Data Objects" rel="nofollow" href="http://www.php.net/manual/en/book.mysqli.php" target="_blank">PDO</a></p>
<p>Что следует знать при выборе?</p>
<p>В этой статье будут показаны различия, затронуты темы поддержки баз данных, стабильности и производительности.</p>
<p><span id="more-1405"></span></p>
<h2>Общая информация &#8211; сравнение</h2>
<table>
<tbody>
<tr>
<th></th>
<th><strong>PDO</strong></th>
<th><strong>MySQLi</strong></th>
</tr>
<tr>
<td><strong>Поддержка баз данных</strong></td>
<td>12 различных баз данных</td>
<td>только MySQL</td>
</tr>
<tr>
<td><strong>API</strong></td>
<td>ООП</td>
<td>ООП и процедурное обращение</td>
</tr>
<tr>
<td><strong>Соединение</strong></td>
<td>всё просто</td>
<td>всё просто</td>
</tr>
<tr>
<td><strong>Именованные параметры</strong></p>
<p><strong> </strong><strong> </strong></td>
<td>+</td>
<td>-</td>
</tr>
<tr>
<td><strong>Маппинг</strong></td>
<td>+</td>
<td>+</td>
</tr>
<tr>
<td><strong>Prepared statements</strong></p>
<p><strong> </strong><strong>(client side)</strong></td>
<td>+</td>
<td>-</td>
</tr>
<tr>
<td><strong>Производительность</strong></td>
<td>быстро</td>
<td>быстро</td>
</tr>
<tr>
<td><strong>Хранимые процедуры</strong></p>
<p><strong> </strong><strong> </strong></td>
<td>+</td>
<td>+</td>
</tr>
</tbody>
</table>
<h2>Соединение</h2>
<p>Ниже приведены примеры подключения с использованием PDO и MySQLi</p>
<pre><code class="php">// PDO
$pdo = new PDO("mysql:host=localhost;dbname=database", 'username', 'password');

// mysqli, procedural way
$mysqli = mysqli_connect('localhost','username','password','database');

// mysqli, object oriented way
$mysqli = new mysqli('localhost','username','password','database');</code></pre>
<p>Прошу заметить, что эти объекты/ресурсы соединения будут использоваться на протяжении всей статьи.</p>
<h2>Поддержка API</h2>
<p>PDO и MySQLi предлагают объектно-ориентированный API, но при этом MySQLi так же предлагает процедурный доступ к функционалу, который более понятный для новичков.</p>
<p>Если Вы знакомы с нативным от PHP доступом к MySQL, переход на MySQLi с использованием функций будет более лёгким. С другой стороны, если Вы освоите PDO, вы сможете использовать любую СУБД, для которой имеется драйвер PDO.</p>
<h2>Поддержка баз данных</h2>
<p><img class="size-full wp-image-1423 alignnone" title="Поддержка различных СУБД в PDO и MySQLi" src="http://lamp-dev.ru/wp-content/uploads/2012/02/tutorial_3.png" alt="" width="550" height="275" /></p>
<p>Основной преимущество PDO перед MySQLi &#8211; это поддержка множества баз данных. На данных момент PDO поддерживает 12 различных СУБД, тогда как MySQLi только MySQL.</p>
<p>Для просмотра списка драйверов СУБД в PDO можно исполнить следующий код</p>
<pre><code class="php">var_dump(PDO::getAvailableDrivers());</code></pre>
<p>Для чего это всё нужно? Например, в ситуации, когда Вы меняете в проекте СУБД. С PDO этот процесс будет лёгким. Вы меняете строку подключения и меняете некоторые запросы под новую СУБД. С MySQLi надо будет переписывает все участки кода, где встречаются вызовы функций/методов MySQLi. Ну и вдобавок так же же корректируете запросы.</p>
<h2>Именованные параметры</h2>
<p>Это другая важная фишка PDO. Именованное связывание понятнее числового связывания.</p>
<p>Например код с использованием PDO:</p>
<pre><code class="php">$params = array(':username' =&gt; 'test', ':email' =&gt; $mail, ':last_login' =&gt; time() - 3600);

$pdo-&gt;prepare('
   SELECT * FROM users
   WHERE username = :username
   AND email = :email
   AND last_login &gt; :last_login');

$pdo-&gt;execute($params);
</code></pre>
<p>и код с использованием MySQLi</p>
<pre><code class="php">$query = $mysqli-&gt;prepare('
   SELECT * FROM users
   WHERE username = ?
   AND email = ?
   AND last_login &gt; ?');

$query-&gt;bind_param('sss', 'test', $mail, time() - 3600);
$query-&gt;execute();
</code></pre>
<p>В этих примерах в запросе перед выполнением в нужных местах вставляются значения.</p>
<p>Второй пример короче, но первый более гибкий и понятный. Не надо следить за порядком параметров.</p>
<p>К сожалению MySQLi не поддерживает именованные параметры.</p>
<h2>Маппинг</h2>
<p>И PDO и MySQLi поддерживают маппинг &#8211; это как бы проецирование строки таблицы в объект, который имеет одноимённые с полями таблицы свойства. Обращение к значениям строки через свойства объекта.</p>
<p>Маппинг удобен в том случае, если вы не хотите использовать какой нибудь абстрактный слой над СУБД, и в то же время хотите иметь интерфейс обращения как в ORM.</p>
<p>Допустим у нас есть класс, свойства которого соответствуют полям в таблице.</p>
<pre><code class="php">class User {
   public $id;
   public $first_name;
   public $last_name;

   public function info()
   {
      return '#'.$this-&gt;id.': '.$this-&gt;first_name.' '.$this-&gt;last_name;
   }
}</code></pre>
<p>Без маппинга для корректной работы метода info надо надо было бы вручную или в конструкторе присваивать значения из полей свойствам объекта.</p>
<p>Но всё это делается автоматически:</p>
<pre><code class="php">$query = "SELECT id, first_name, last_name FROM users";

// PDO
$result = $pdo-&gt;query($query);
$result-&gt;setFetchMode(PDO::FETCH_CLASS, 'User');

while ($user = $result-&gt;fetch()) {
   echo $user-&gt;info()."\n";
}
// MySQLI, procedural way
if ($result = mysqli_query($mysqli, $query)) {
   while ($user = mysqli_fetch_object($result, 'User')) {
      echo $user-&gt;info()."\n";
   }
}
// MySQLi, object oriented way
if ($result = $mysqli-&gt;query($query)) {
   while ($user = $result-&gt;fetch_object('User')) {
      echo $user-&gt;info()."\n";
   }
}</code></pre>
<h2>Безопасность</h2>
<p><img class="alignnone size-full wp-image-1430" title="Безопасность" src="http://lamp-dev.ru/wp-content/uploads/2012/02/tutorial_1.png" alt="" width="550" height="275" /></p>
<p>Обе библиотеки имеют средства для борьбы с SQL инъекциями.</p>
<p>Разберём пример. Например хакер использует переменную GET username для внедрения SQL инъекции.</p>
<pre><code class="php">$_GET['username'] = "'; DELETE FROM users; /*"</code></pre>
<p>Если мы не заэкранируем данную переменную, она вставиться в SQL запрос как есть и удалит все из таблицы users, так как будет выполнен множественный запрос. К примеру был запрос</p>
<pre><code class="php">
$query = "SELECT * FROM user WHERE username='" . $_GET['username'] . "' LIMIT 1";
</code></pre>
<p>после подстановки значение GET переменной username в переменной $query будет следующий запрос</p>
<pre><code class="php">
$query = "SELECT * FROM user WHERE username=''; DELETE FROM users; /*' LIMIT 1";
/* получается два запроса
SELECT * FROM user WHERE username='';
и
DELETE FROM users;
и далее всё закомментировано и игнорируется
*/
</code></pre>
<p>Чтобы всего этого избежать надо экранировать потенциально опасные символы в значении переменной &#8211; апострофы, двойные кавычки и тд.</p>
<pre><code class="php">// PDO, "manual" escaping
$username = PDO::quote($_GET['username']);

$pdo-&gt;query("SELECT * FROM users WHERE username = $username");

// mysqli, "manual" escaping
$username = mysqli_real_escape_string($_GET['username']);

$mysqli-&gt;query("SELECT * FROM users WHERE username = '$username'");</code></pre>
<p>Второй вариант &#8211; экранирование и подстановка значений в запрос одновременно.</p>
<pre><code>// PDO, prepared statement
$pdo-&gt;prepare('SELECT * FROM users WHERE username = :username');
$pdo-&gt;execute(array(':username' =&gt; $_GET['username']));

// mysqli, prepared statements
$query = $mysqli-&gt;prepare('SELECT * FROM users WHERE username = ?');
$query-&gt;bind_param('s', $_GET['username']);
$query-&gt;execute();</code></pre>
<p>Рекомендуется использоваться второй вариант.</p>
<h2>Производительность</h2>
<p>PDO и MySQLi довольно быстрые. Но по тестам MySQLi быстрее на 2,5% без использования подстановок и экранирования(prepared statements) и на 6,5% с оными. Но нативное расширение MySQL быстрее обоих библиотек. В каждом случае нужно искать своё решение.</p>
<h2>Что в итоге?</h2>
<p>В конечном итоге PDO победил. С поддержкой различных СУБД и именованными параметрами, можно игнорировать факт небольшой потери производительности. С точки зрения безопасности все они имеют средства защиты.</p>
<p><strong>Так что если Вы ещё работаете с MySQLi, возможно стоит использовать PDO?</strong></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>Вольный перевод <a rel="nofollow" href="http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/" target="_blank">http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lamp-dev.ru/php/pdo-vs-mysqli/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Position: fixed в IE6</title>
		<link>http://lamp-dev.ru/html-css/position-fixed-v-ie6/</link>
		<comments>http://lamp-dev.ru/html-css/position-fixed-v-ie6/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 13:35:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[IE6]]></category>
		<category><![CDATA[position: fixed;]]></category>

		<guid isPermaLink="false">http://lamp-dev.ru/?p=1380</guid>
		<description><![CDATA[Хотя уже наверное нет смысла обсуждать IE6 и хаки к нему, но всё же оставлю заметку &#171;Как сделать фиксированный элемент IE6&#8243;
position: fixed; поддерживаться всеми новыми браузерами и IE &#62;=7.  Чтобы сделать такое в IE6 надо прописать
/* только для IE6 */
#fix-block {
  position: absolute;
  top: expression(eval(document.documentElement.scrollTop) + 100);
  right: 0;
}
Как видите происходит эмуляция [...]]]></description>
			<content:encoded><![CDATA[<p>Хотя уже наверное нет смысла обсуждать IE6 и хаки к нему, но всё же оставлю заметку <strong>&laquo;Как сделать фиксированный элемент IE6&#8243;</strong><span id="more-1380"></span></p>
<p>position: fixed; поддерживаться всеми новыми браузерами и IE &gt;=7.  Чтобы сделать такое в IE6 надо прописать</p>
<pre><code class="css">/* только для IE6 */
#fix-block {
  position: absolute;
  top: expression(eval(document.documentElement.scrollTop) + 100);
  right: 0;
}</code></pre>
<p>Как видите происходит эмуляция position: fixed; На самом деле блок абсолютно позиционируется относительно body и его позиция top подсчитывается при каждом чихе пользователя при помощи expression. Обратите внимание на <em>+100</em>. Это нужно для случае, если блок не прибит к верхнему краю, а находится на некотором расстоянии &#8211; в нашем случае 100px.<br />
<strong>Минусы данного подхода:</strong></p>
<ol>
<li>не работает при отключенном JS.</li>
<li>нагрузка на браузер &#8211; значение top пересчитывается каждый раз, когда пользователь что то сделает &#8211; проскроллит, изменить размер окна браузера и тд и тп.</li>
</ol>
<p><strong>Чтобы страница не дёргалась</strong> надо прописать</p>
<pre><code class="css">html{
  background: url(about:blank);
}</code></pre>
<p>Вот и всё.</p>
]]></content:encoded>
			<wfw:commentRss>http://lamp-dev.ru/html-css/position-fixed-v-ie6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Видео реклама интернет ресурсов</title>
		<link>http://lamp-dev.ru/reklama/video-reklama-internet-resursov/</link>
		<comments>http://lamp-dev.ru/reklama/video-reklama-internet-resursov/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 12:35:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Реклама]]></category>
		<category><![CDATA[сайты]]></category>
		<category><![CDATA[трафик]]></category>

		<guid isPermaLink="false">http://lamp-dev.ru/?p=1308</guid>
		<description><![CDATA[В последнее время всё чаще на ТВ и повсюду появляется видео реклама интернет ресурсов. Я уже не говорю про рекламу интернет сайтов в самом интернете.
На вскидку это реклама авито, озон, сландо&#8230;
Вот захотелось сделать подборку таких видео.




yandex.ru




Следующий ролик возможно является просто презентацией.





takzdorovo.ru








avito.ru








ozon.ru







slando.ru







]]></description>
			<content:encoded><![CDATA[<p>В последнее время всё чаще на ТВ и повсюду появляется видео реклама интернет ресурсов. Я уже не говорю про рекламу интернет сайтов в самом интернете.</p>
<p>На вскидку это реклама авито, озон, сландо&#8230;</p>
<p>Вот захотелось сделать подборку таких видео.</p>
<p><span id="more-1308"></span></p>
<table width="100%" class="no-border width-100">
<tr>
<td align="left" width="100%">
<h2>yandex.ru</h2>
</td>
<td align="right">
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="315" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/H4k9WQN23xQ?version=3&amp;hl=ru_RU" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="420" height="315" src="http://www.youtube.com/v/H4k9WQN23xQ?version=3&amp;hl=ru_RU" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
<br />
Следующий ролик возможно является просто презентацией.<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="243" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/FgeL5Mu80ww?version=3&amp;hl=ru_RU" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="420" height="243" src="http://www.youtube.com/v/FgeL5Mu80ww?version=3&amp;hl=ru_RU" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
</td>
</tr>
<tr>
<td align="left" width="100%">
<h2>takzdorovo.ru</h2>
</td>
<td align="right">
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="315" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/-ypG41Okhqo?version=3&amp;hl=ru_RU" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="420" height="315" src="http://www.youtube.com/v/-ypG41Okhqo?version=3&amp;hl=ru_RU" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="315" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/gMqm3o_01VM?version=3&amp;hl=ru_RU" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="420" height="315" src="http://www.youtube.com/v/gMqm3o_01VM?version=3&amp;hl=ru_RU" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
</td>
</tr>
<tr>
<td align="left" width="100%">
<h2>avito.ru</h2>
</td>
<td align="right">
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="315" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/d9t6ZUCzEuc?version=3&amp;hl=ru_RU" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="420" height="315" src="http://www.youtube.com/v/d9t6ZUCzEuc?version=3&amp;hl=ru_RU" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="243" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/YIryB9KoqpQ?version=3&amp;hl=ru_RU" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="420" height="243" src="http://www.youtube.com/v/YIryB9KoqpQ?version=3&amp;hl=ru_RU" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
</td>
</tr>
<tr>
<td align="left" width="100%">
<h2>ozon.ru</h2>
</td>
<td align="right">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="315" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/5mPG2N9rzzA?version=3&amp;hl=ru_RU" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="420" height="315" src="http://www.youtube.com/v/5mPG2N9rzzA?version=3&amp;hl=ru_RU" allowscriptaccess="always" allowfullscreen="true"></embed></object>
</td>
</tr>
<tr>
<td align="left" width="100%">
<h2>slando.ru</h2>
</td>
<td align="right">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="243" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/vcpzLH27hgY?version=3&amp;hl=ru_RU" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="420" height="243" src="http://www.youtube.com/v/vcpzLH27hgY?version=3&amp;hl=ru_RU" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="420" height="243" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/o0cdTh-XhyQ?version=3&amp;hl=ru_RU" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="420" height="243" src="http://www.youtube.com/v/o0cdTh-XhyQ?version=3&amp;hl=ru_RU" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://lamp-dev.ru/reklama/video-reklama-internet-resursov/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bootstrap 2.0 от Twitter &#8211; CSS фреймворк и не только</title>
		<link>http://lamp-dev.ru/html-css/bootstrap-from-twitter-developers/</link>
		<comments>http://lamp-dev.ru/html-css/bootstrap-from-twitter-developers/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 09:11:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HTML/CSS]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css-framework]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[examples]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[less]]></category>
		<category><![CDATA[powerfull]]></category>
		<category><![CDATA[preprocessor]]></category>
		<category><![CDATA[ui-framework]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[web interface]]></category>

		<guid isPermaLink="false">http://lamp-dev.ru/?p=1270</guid>
		<description><![CDATA[Bootstrap от Twitter &#8211; это CSS фреймворк. Это не просто CSS фреймворк, это целый набор предопределённых стилей  и плагинов для jQuery, позволяющий быстро строить кроссбраузерные веб-интерфейсы разной направленности. Для использования данного фреймворка не нужно глубоких знаний html, css и javascript. Совсем недавно &#8211; 31 января 2012 года было объявлено о выпуске Bootstrap 2.0.  Подробнее обо [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1292" title="bootstrap ico" src="http://lamp-dev.ru/wp-content/uploads/2012/02/bootstrap.png" alt="" width="110" height="110" /><a rel="nofollow" href="http://twitter.github.com/bootstrap/index.html" target="_blank">Bootstrap от Twitter</a> &#8211; это CSS фреймворк. Это не просто CSS фреймворк, это целый набор предопределённых стилей  и плагинов для jQuery, позволяющий быстро строить кроссбраузерные веб-интерфейсы разной направленности. Для использования данного фреймворка не нужно глубоких знаний html, css и javascript. Совсем недавно &#8211; <strong>31 января 2012</strong> года было объявлено о выпуске <strong>Bootstrap 2.0</strong>.  Подробнее обо всём смотрите под катом.<span id="more-1270"></span></p>
<p>Если Вы ранее имели дело с каким либо <strong>CSS фреймворком</strong>, то вам по сути должно быть всё понятно. Лично я въехал с первого раза и читая документацию у меня всё сразу гладко и ровно получалось.</p>
<p>Если не имели дело и понятия не имеете что это такое, попробую объяснить.</p>
<p>Это, как уже говорил, набор CSS стилей и плагинов для jQuery. Так же там есть спрайты для создания иконок.</p>
<p>Вы создаёте свою html страничку и подключаете к ней стили от Bootstrap &#8211; файл <em>bootstrap.css</em>(или <em>bootstrap.min.css</em> в сжатом виде), файл <em>bootstrap-responsive.css</em>(или <em>bootstrap-responsive.min.css</em>) и javascript файл от Bootstrap &#8211; файл <em>bootstrap.js</em>(или то же самое в сжатом виде <em>bootstrap.min.js</em>). Так же для некоторых видов разметки(выпадающие списки, модальные окна) надо будет подключить плагины для jQuery и собственно сам jQuery последней версии.</p>
<p>Все эти файлы, а так же .less файлы, спрайты, плагины для jQuery, примеры и документацию вы можете скачать <a rel="nofollow" href="http://twitter.github.com/bootstrap/download.html" target="_blank">здесь</a>. Там можно скачать всё или выбрать только нужное. Правда когда скачал всё одним архивом не нашёл там css файла. Но его можно скомпилировать из .less файлов(об этом позже).</p>
<p>Так вот, страница создана, необходимые файлы подключены. Остаётся только в тело документа вставлять блоки, списки(и прочее) и применять к ним заранее определённые стили, указывать у них определённые атрибуты типа <em>data-*</em>.</p>
<p>Расставляя таким образом разметку получаем стилизованный кроссбраузерный веб-интерфейс &#8211; списки, формы, меню, выпадающие меню, &laquo;карусели&raquo; и многое другое. Всё можно посмотреть у них на сайте. Собственно интерфейс самого ихнего сайта сделан на основе ихнего CSS фреймворка.</p>
<p>Помимо кросс-браузерности важно отметить, что вёрстка будет <strong>подстраиваться под разные экраны разных устройств</strong>. Для этого то и подключается дополнительно файл <em>bootstrap-responsive.css</em>. В нём содержаться стили для разных разрешений экранов. Например для смартфона элементы будут меньше, главное меню вместо множества ссылок сложится в одну кнопку, которую при необходимости можно нажать для доступа к пунктам меню.</p>
<p>Конечно кто то скажет, что это однообразно и на все сайты с разными спецификами не сделаешь одинаковые интерфейсы. Конечно! Но можно же править CSS стили. Кастомизировать. Можно использовать только части стилей, например для построения каркаса страницы.</p>
<h3>Даже без переделок созданная вёрстка пригодна для многого:</h3>
<ol>
<li>можно использовать для административных панелей</li>
<li>можно использовать для веб-приложений без претензий к оформлению, для которых всякие рюшечки не важны.</li>
<li>можно по быстрому накидать прототип страницы во время разработки, а необходимый интерфейс применить после.</li>
</ol>
<h3>Что можно сделать с помощью Bootstrap, что он умеет:</h3>
<ul>
<li>разметить каркас страницы, верх, низ, сколько колонок, какой ширины будут, после в эти блоки размещаем другие компоненты интерфейса</li>
<li>стили для основных элементов страницы (ul, p, blockquote, small, abbr и прочее) уже прописаны</li>
<li>есть стили для оформления таблиц</li>
<li>есть стили для позиционирования элементов формы, стили для этих элементов, для кнопок заранее прописаны.</li>
<li>есть возможность делать кнопки с выпадающим списком</li>
<li>прописаны стили для каждой из иконок</li>
<li>можно делать группировку кнопок</li>
<li>навигация с табами</li>
<li>модальные окна</li>
<li>тултипы</li>
<li>блоки с разного рода сообщениями</li>
<li>&laquo;аккордионы&raquo;</li>
<li>&laquo;карусели&raquo;</li>
<li>ввод с подсказками</li>
</ul>
<p>впрочем можно ещё долго перечислять что можно сделать.</p>
<p>Чуть не забыл написать про<a rel="nofollow" href="http://lesscss.org/" target="_blank"> less</a>. Это препроцессор для стилей. Можно создавать файлы стилей с расширением .less. Как обычно писать css правила. Но при этом можно дополнять переменными, применять операторы, группировать и многократно вставлять сгруппированные части css правил в нужные части других правил. Так же там, в less, есть ещё множество вкусностей, упрощающих жизнь. Далее созданный файл прогоняем через препроцессор и на выходе получаем css файл со вставленными в нужных местах значениями переменных, подсчитанными с помощью операторов значениями и прочее.</p>
<p>Можно подключать к странице less файл и файл less.js(скачать с вышеуказанного сайта), который будет на лету создавать css правила из less файла. Можно заранее скомпилировать css файлы из less файлов и после уже подключать к странице именно css файлы.</p>
<p>Пока изучал данный css framework, делал всё на одной странице. Пожалуй выложу её <a href="/examples/bootstrap-twitter/" target="_blank">тут для просмотра</a>. Или можно скачать <a href="/examples/bootstrap-twitter/page.tar">одним архивом.</a></p>
<p>Когда писал статью, хотел вставить какую нибудь ассоциативную картинку, но не нашёл. Разве что можно ассоциировать иконку с Bootstrap, которая подозрительно похожа на иконку социальной сети &laquo;ВКонтакте&raquo; <img src='http://lamp-dev.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://lamp-dev.ru/html-css/bootstrap-from-twitter-developers/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Проблема с фокусом в NetBeans alt+tab</title>
		<link>http://lamp-dev.ru/netbeans/problema-s-fokusom-v-netbeans-alttab/</link>
		<comments>http://lamp-dev.ru/netbeans/problema-s-fokusom-v-netbeans-alttab/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 11:43:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[alt+tab]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[look and feel]]></category>
		<category><![CDATA[solutions]]></category>
		<category><![CDATA[переключение между окнами]]></category>
		<category><![CDATA[проблема]]></category>
		<category><![CDATA[решение]]></category>

		<guid isPermaLink="false">http://lamp-dev.ru/?p=1256</guid>
		<description><![CDATA[Проблема вот в чём &#8211; при переключении между окнами, скажем Firefox и Netbeans по alt+tab при возвращении в Netbeans активным становится не окно редактора, а пункт главного меню. Начинаешь писать код и осознаёшь, что ничего не происходит и на самом деле управление передалось меню &#8211; очень нервирует, причём переключаешься между окнами при веб-разработке достаточно часто. [...]]]></description>
			<content:encoded><![CDATA[<p>Проблема вот в чём &#8211; при переключении между окнами, скажем Firefox и Netbeans по alt+tab при возвращении в Netbeans активным становится не окно редактора, а пункт главного меню. Начинаешь писать код и осознаёшь, что ничего не происходит и на самом деле управление передалось меню &#8211; очень нервирует, причём переключаешься между окнами при веб-разработке достаточно часто. Наблюдается  этот баг в Windows XP, при стандартном для операционной системы look and feel. Какое нашлось решение?<span id="more-1256"></span></p>
<p>Оказывается это не проблема Netbeans. Это проблема look and feel &#8211; отображения. По умолчанию в java для конкретной операционной системы есть набор отображений интерфейса пользователя.</p>
<p>Так вот, решение заключается в смене look and feel &#8211; отображения интерфейса. Для этого запускаем редактор с параметром &#8211;laf javax.swing.plaf.metal.MetalLookAndFeel. То есть указываем конкретное отображение MetalLookAndFeel.</p>
<p>Можно прописать это я свойстве ярлыка &laquo;Объект&raquo;</p>
<pre><code>"C:\Program Files\NetBeans 7.0.1\bin\netbeans.exe" --laf javax.swing.plaf.metal.MetalLookAndFeel</code></pre>
<p>Вуаля. Нетбинс запускается с новым оформлением и уже без этого глюка.</p>
<p><img class="aligncenter size-full wp-image-1258" title="netbeans" src="http://lamp-dev.ru/wp-content/uploads/2012/02/netbeans.jpg" alt="" width="550" height="378" /></p>
<p>Правда оформление не очень <img src='http://lamp-dev.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Можно так же поэкспериментировать с другими отображениями.</p>
]]></content:encoded>
			<wfw:commentRss>http://lamp-dev.ru/netbeans/problema-s-fokusom-v-netbeans-alttab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Профили в Firefox</title>
		<link>http://lamp-dev.ru/firefox/profiles-in-firefox/</link>
		<comments>http://lamp-dev.ru/firefox/profiles-in-firefox/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 15:02:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[profiles]]></category>
		<category><![CDATA[браузер]]></category>
		<category><![CDATA[менеджер профилей]]></category>
		<category><![CDATA[настройки]]></category>
		<category><![CDATA[опции запуска]]></category>
		<category><![CDATA[персонализация]]></category>
		<category><![CDATA[профили]]></category>
		<category><![CDATA[ярлыки]]></category>

		<guid isPermaLink="false">http://lamp-dev.ru/?p=1219</guid>
		<description><![CDATA[Что такое профили в Mozilla Firefox? Это совокупность настроек, пользовательской информации. Firefox можно запускать с определённым профилем и тогда у Firefox будут свои настройки, плагины, внешнее отображение и прочее. Это почти как отдельно установленный и настроенный Firefox.
Так можно создать профили для различных пользователей или для одного пользователя, но для разных задач.
Мне например понадобились профили:

для обыденной [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-1245" title="Firefox" src="http://lamp-dev.ru/wp-content/uploads/2012/01/firefox-logo.jpg" alt="" width="200" height="200" />Что такое профили в Mozilla Firefox? Это совокупность настроек, пользовательской информации. Firefox можно запускать с определённым профилем и тогда у Firefox будут свои настройки, плагины, внешнее отображение и прочее. Это почти как отдельно установленный и настроенный Firefox.</p>
<p>Так можно создать профили для различных пользователей или для одного пользователя, но для разных задач.</p>
<p>Мне например понадобились профили:</p>
<ol>
<li>для обыденной работы в интернете &#8211; социальные сети, авторизация на нужных сайтах, нужные закладки, своя история посещения;</li>
<li>для работы &#8211; это авторизация, запоминание авторизации на конкретных сайтах. Авторизация других аккаунтов в соц сетях и прочее.</li>
<li>для мамы <img src='http://lamp-dev.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Ссылка на одноклассники в закладках на самом видном месте и авторизация с запоминанием на этом же сайте <img src='http://lamp-dev.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ol>
<p>Применение может быть разным.</p>
<p><span id="more-1219"></span></p>
<h2>Так что же именно хранится в профилях:</h2>
<ul>
<li> Закладки и история просмотров</li>
<li> Пароли</li>
<li> Особые настройки сайтов</li>
<li> Поисковые машины</li>
<li> Личный словарь</li>
<li> Автозаполнение полей</li>
<li> Куки/Cookies</li>
<li> Настройки сертификатов безопасности</li>
<li> Управление типами файлов</li>
<li> Стили пользователя</li>
</ul>
<p>Так же для каждого профиля можно установить своё оформление и дополнения, установленные в Firefox в текущем профиле так же будут доступны только в данном профиле.</p>
<h2>Как управлять профилями Firefox?</h2>
<p>Для этого надо запустить Firefox с параметром. Можно сделать так, Пуск -&gt; Выполнить и далее ввести(перед этим надо будет закрыть все открытые окна Firefox, иначе выполнение следующей команды приведёт просто к запуску браузера, а не менеджера профилей)</p>
<pre><code>firefox.exe -ProfileManager</code></pre>
<p>Если программа не найдена, то или у вас не установлен Firefox, или надо указать полный путь, например у меня в Windows XP он находился тут, вводим следующее</p>
<pre><code>"C:\Program Files\Mozilla Firefox\firefox.exe" -ProfileManager</code></pre>
<p><img class="aligncenter size-full wp-image-1231" title="Запуск менеджера профилей в Firefox" src="http://lamp-dev.ru/wp-content/uploads/2012/01/run.jpg" alt="" width="367" height="206" /></p>
<p>Далее жмём Ок и видим окно, где можно управлять профилями.</p>
<p><img class="aligncenter size-full wp-image-1233" title="Менеджер управления профилями в Firefox" src="http://lamp-dev.ru/wp-content/uploads/2012/01/profile-manager.jpg" alt="" width="357" height="277" /></p>
<p>Далее думаю не стоит описывать и приводить ненужные скриншоты, как добавлять новый профиль Firefox, переименовывать или удалять профили.</p>
<p>Хочу только отметить, что чекбоксы в окне действуют на текущий запуск браузера. Работать автономно &#8211; означает, что браузер будет работать автономно (с)КЭП.</p>
<p>Если выбрать какой либо из профилей и отметить галку &laquo;Не спрашивать при запуске&raquo;, то при следующем запуске браузера без указания профиля он будет запускаться с выбранным профилем. Если убрать галку, то каждый раз при запуске браузера будет предлагаться выбор личного профиля. Если вы поставили галку &laquo;Не спрашивать при запуске&raquo;, но после понадобилось сменить профиль, загружаемый по умолчанию, то надо будет снова запустить менеджер профилей, как описано выше, и установить нужные настройки.</p>
<p>Где хранится профиль? У меня в Windows XP файлы хранятся здесь. Один профиль &#8211; одна папка, к примеру zwv9xv8q.lampdevru.</p>
<pre><code>C:\Documents and Settings\username\Application Data\Mozilla\Firefox\Profiles</code></pre>
<p>Так же можно открыть папку профиля, сделав следющее: выбираем пункт меню <em>Справка -&gt; Информация для решения проблем</em> или в новой вкладке в адресной строке пишем about:support, загружается страница, видим следующее</p>
<p style="text-align: center;"><a href="http://lamp-dev.ru/wp-content/uploads/2012/01/about_settings.jpg"><img class="aligncenter size-full wp-image-1254" title="Страница настроек Mozilla Firefox" src="http://lamp-dev.ru/wp-content/uploads/2012/01/about_settings.jpg" alt="" width="350" height="275" /></a></p>
<h2>Как запустить Firefox c нужным профилем?</h2>
<p>Для этого исполняемый файл надо запустить с параметром <em>-p имяпрофиля</em>. К примеру можно создать ярлык и в свойстве &laquo;Объект&raquo; прописать следующее</p>
<pre><code>"C:\Program Files\Mozilla Firefox\firefox.exe" -p lampdevru</code></pre>
<p>Здесь lampdevru &#8211; имя профиля. Пример ниже</p>
<p><img class="aligncenter size-full wp-image-1235" title="Свойства ярлыка Firefox - запуск с определённым профилем" src="http://lamp-dev.ru/wp-content/uploads/2012/01/firefox-shortcut-properties.jpg" alt="" width="402" height="529" /></p>
<p>Таким образом можно сделать ярлык для каждого профиля и запускать нужный ярлык при надобности.</p>
<p>Так как интерфейс браузер будет почти одинаковый, чтобы не путаться и сразу видеть, с каким профилем запущен браузер, рекомендую сделать какие нибудь различия &#8211; установить обои, сделать разные поисковые системы по умолчанию или ещё что нибудь.</p>
<p><strong>UPD</strong></p>
<p>кстати, вот полезная <a rel="nofollow" href="https://developer.mozilla.org/en/Command_Line_Options" target="_blank">ссылочка</a> с опциями запуска Firefox</p>
]]></content:encoded>
			<wfw:commentRss>http://lamp-dev.ru/firefox/profiles-in-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

