<?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>The Rpsl Blog &#187; mysql</title>
	<atom:link href="http://blog.rpsl.info/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.rpsl.info</link>
	<description></description>
	<lastBuildDate>Tue, 24 Jan 2012 11:35:02 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Проверка multi_query в mysqli</title>
		<link>http://blog.rpsl.info/2011/08/proverka-multi_query-v-mysqli/</link>
		<comments>http://blog.rpsl.info/2011/08/proverka-multi_query-v-mysqli/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 08:06:22 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Полезное]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=31618</guid>
		<description><![CDATA[Увидел сегодня красивое решение проверки выполнения мультизапроса в mysqli. Если кто не в курсе, то можно сформировать в одну строку кучу запросов, разделяемых точкой с запятой, а потом отдать это на выполнение. Так вот проверять ошибки можно разными способами, а можно просто в конец добавить некий абстрактный SELECT 'complete'. Это подходит для запросов типа INSERT, DELETE, UPDATE. Eще, у меня в примере указан не прямой вызов multi_query, а обертка для запросов, думаю что это и зачем вам объяснять не нужно. if &#40; $DB&#40;&#41;-&#62;multi&#40;&#34; UPDATE someshit SET bla=bla-1 WHERE id='%d'; DELETE FROM someshit WHERE category='%d'; DELETE FROM someshit WHERE id='%d'; SELECT [...]]]></description>
			<content:encoded><![CDATA[<p>Увидел сегодня красивое решение проверки выполнения <a href="http://php.net/manual/en/mysqli.multi-query.php" target="_blank">мультизапроса в mysqli</a>.</p>

<p>Если кто не в курсе, то можно сформировать в одну строку кучу запросов, разделяемых точкой с запятой, а потом отдать это на выполнение. Так вот проверять ошибки можно разными способами, а можно просто в конец добавить некий абстрактный SELECT 'complete'. Это подходит для запросов типа INSERT, DELETE, UPDATE.</p>

<p>Eще, у меня в примере указан не прямой вызов multi_query, а обертка для запросов, думаю что это и зачем вам объяснять не нужно.</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$DB</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">multi</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;
    UPDATE someshit SET bla=bla-1 WHERE id='<span style="color: #009933; font-weight: bold;">%d</span>';
    DELETE FROM someshit WHERE category='<span style="color: #009933; font-weight: bold;">%d</span>';
    DELETE FROM someshit WHERE id='<span style="color: #009933; font-weight: bold;">%d</span>';
    SELECT 'complete';&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #000088;">$id</span><span style="color: #339933;">,</span> <span style="color: #000088;">$category</span><span style="color: #339933;">,</span> <span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;complete&quot;</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$resultCode</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">DB_ERROR</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$resultCode</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">SUCCESS</span><span style="color: #339933;">;</span></pre></div></div>


]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2011/08/proverka-multi_query-v-mysqli/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Еще немного про собеседования</title>
		<link>http://blog.rpsl.info/2011/03/eshhe-nemnogo-pro-sobesedovaniya/</link>
		<comments>http://blog.rpsl.info/2011/03/eshhe-nemnogo-pro-sobesedovaniya/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 14:46:04 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[join]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[жизнь]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=24878</guid>
		<description><![CDATA[Решил дополнить поднятую тему про собеседования и рассказать о вопросах которые задают чаще всего. Изначально, я хотел в этом посте написать все самые интересные вопросы и дополнить их ответами, но когда начал его писать, то понял что ответы тут не нужны. Те кому это действительно надо, сами порешают данные задачи, остальные могут просто пролистать. Первое на что хочу обратить ваше внимание, это то, что вопросы которые задают php(?) программистам, в основной своей сути имеют довольно академический характер и в жизненных циклах проектов встречаются не часто, но тем не менее, нужно уметь решать эти задачи. Это обусловленно тем, что у работодателей [...]]]></description>
			<content:encoded><![CDATA[Решил дополнить поднятую тему про собеседования и рассказать о вопросах которые задают чаще всего.<br />
<br />
Изначально, я хотел в этом посте написать все самые интересные вопросы и дополнить их ответами, но когда начал его писать, то понял что ответы тут не нужны. Те кому это действительно надо, сами порешают данные задачи, остальные могут просто пролистать.<br />
<br />
Первое на что хочу обратить ваше внимание, это то, что вопросы которые задают php(?) программистам, в основной своей сути имеют довольно академический характер и в жизненных циклах проектов встречаются не часто, но тем не менее, нужно уметь решать эти задачи. Это обусловленно тем, что у работодателей нету времени и желания давать вам типичные задачи, в стиле - "Напиши класс, который будет отвечать за работу с пользователями". 99 процентов всех вопросов задаются по заготовленному листку и должны быть решены на листке бумаги. Никаких IDE, никаких гуглов, никаких ответов типа "я не помню синтаксис". Если вы настроены решительно и хотите произвести хорошее впечатление, то уделите время, что бы потренироваться и чувствовать себя уверенно.<br />
<br />
Все вопросы можно разделить на три категории: PHP, MySQL(?), все остальное.<br /><br />
Любой из этих пунктов, так же делится на две части: теория и практика. Начну пожалуй с PHP. С теоретическими вопросами, в целом, не сложно. Они почти везде одинаковые: Отличия между PHP 5.2 и 5.3, основные приципы ООП. Не частый, но вопрос с подвохом - "В каких случаях использование ООП, является убыточным?". Дальнейшие вопросы на теорию, в основном, зависят от ваших ответов, и несут цель узнать на сколько хорошо вы разбираетесь в материале о котором говорили выше.<br />
<br />
Практические вопросы, это чаще всего просьба написать некую ф-цию, которая делает какую либо хрень. Почти на каждом собеседование меня просили написать функцию которая переворачивает строку, без использования дополнительных буферов, можно попробовать схитрить и ответить что-то в стиле<br />


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"> <span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #000000; font-weight: bold;">function</span> revert<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$string</span> <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">return</span> <span style="color: #990000;">strrev</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$string</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>


<br />
Но это не cамый лучший вариант ответа. Выучите алгоритм с обращением к символом строки как к объекту массива.<br />
Очень частые задачи, на написание рекурсивных функций или на понимание работы операторов кода.<br />


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #339933;">++</span><span style="color: #000088;">$a</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$a</span><span style="color: #339933;">++</span> <span style="color: #339933;">-</span> <span style="color: #339933;">++</span><span style="color: #000088;">$a</span> <span style="color: #339933;">+</span> <span style="color: #000088;">$a</span> <span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>



На днях пока решал задачи, попалось интересное задание, у меня такое ни разу не спрашивали, но думаю что к такому надо быть готовым:


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span> <span style="color: #208080;">0123</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">123</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>



<br />

Думаю, что на счет PHP я достаточно ясно изложил типовые вопросы, если что-то осталось не понятно, то спрашивайте в комментариях.
<br />
Теоретические вопросы про MySQL или любую другую СУБД почти всегда касаются индексов и насколько вы понимаете как их использовать, в каких случаях и на что их ставить и в каких случаях индексы могут быть вредны. Обязательно спросят про различия между версиями. Поинтересуются насколько глубоко вы знаете тонкости работы СУБД и вкурсе ли вы про то, что такое тригеры, хранимые процердуры, представления.<br />
<br />
Практические задачи - это просьба нарисовать две таблицы с различными данными и просьба написать запрос, который покажет умеете ли вы использовать операторы HAVING, GROUP BY, ... etc. Обязательно знать разницу между <a href="http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya.html">JOIN запросами</a>.<br />
<br />
Еще часто спрашивают про верстку, про css, про javascript. Но расписывать это все не вижу смысла.]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2011/03/eshhe-nemnogo-pro-sobesedovaniya/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Немного про собеседования</title>
		<link>http://blog.rpsl.info/2011/03/nemnogo-pro-sobesedovaniya/</link>
		<comments>http://blog.rpsl.info/2011/03/nemnogo-pro-sobesedovaniya/#comments</comments>
		<pubDate>Sun, 06 Mar 2011 10:51:13 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Статьи]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[жизнь]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=24833</guid>
		<description><![CDATA[Когда в середине 2010 года я понял, что пора искать новое место, я посетил много собеседований, т.к. мне не хотелось уходить с довольно теплого места в абы куда, я метил в крупные, стабильные компании, с высокой зп, большими перспективами, туда где я буду средничком на общем фоне, что бы был стимул развиваться. В некоторые компании меня не пригласили, от некоторых я отказывался после первого посещения, в одну хорошую фирму даже позвали, но пришлось бы ездить через весь город и после доглих размышлений я отказался. Вообще собеседования, для меня стали большим мотиватором в саморазвитии. Помню как я пошел на самое первое, [...]]]></description>
			<content:encoded><![CDATA[<p>Когда в середине 2010 года я понял, что пора искать новое место, я посетил много собеседований, т.к. мне не хотелось уходить с довольно теплого места в абы куда, я метил в крупные, стабильные компании, с высокой зп, большими перспективами, туда где я буду средничком на общем фоне, что бы был стимул развиваться.
</p>
<p>В некоторые компании меня не пригласили, от некоторых я отказывался после первого посещения, в одну хорошую фирму даже позвали, но пришлось бы ездить через весь город и после доглих размышлений я отказался.
</p>
<p>Вообще собеседования, для меня стали большим мотиватором в саморазвитии. Помню как я пошел на самое первое, был уверен что я такой крутой и смогу все рассказать сходу, расскажу какие <s>крутые</s> штуки я умею делать и меня сразу возьмут. ХА ХА Лох. На первом собеседование, меня за пять минут смешали с грязью и больше всего мне хотелось провалиться сквозь землю. Когда перед тобой сидят несколько взрослых человек и задают тебе серьезные вопросы, на которые ты не знаешь как ответить, но говорить "я не знаю" считаешь не приемлемым, то разволноваться в общем не проблема.
</p>
<p>Первый вопрос, с которого было начато собеседование звучал так: "Что из себя представляют индексы (MySQL) в физическом плане". Блядь. Да я никогда в жизни не задумывался, о том, что они из себя представляют в физическом плане. Начал рассказывать про B-Tree, бла-бла-бла, но я понятие не имею что это за файлы и какая у них структура. Сказал честно, что никогда этим не интресовался, но попытался предположить как и что это. В общем был полный FAIL. Хотя думаю что даже если бы и попал в ту контору, очень быстро бы сгорел работать по китайскому календарю и тратить по два часа на общественный транспорт.
</p>
<p>В другой, на первый взгляд, не плохой конторе, меня встретили директор отдела разработок и его заместитель. Рассказали мне про контору, задавали кучу вопросов из книги про гору фудзи, все бы хорошо, но это было в двухпоточном режиме. Директор мне задавал задачи, я решал их на листочке, а его заместитель при этом активно общался со мной и мне приходилось решая задачу, общаться с ним на тему сколько шариков для тениса поместиться в боинг, сколько автомобилей и заправок для них в Москве и попытаться ответить на самый не нормальный, но не менее интересный вопрос "Как называется наша вселенная?"
</p>
<p>Собеседования я там прошел на плюс-минус, обещали перезвонить через пару дней. Не позвонили. Ну и пофиг, их офис спустя две недели переехал с филей в Крылатское, а ездить в Крылатское каждый день я бы не осилил.
</p>
<p>Кстати вот дебильное качество. Зачем HR говорят что перезвонят, но не перезванивают. Я понимаю прекрастно, что после собеседования нужен перерыв, нужно подумать, посмотреть других кандидатов, но не ужели трудно перезвонить или отписать на почту, что мол так и так, мы не готовы вас пригласить. Это деловые отношения, а в деловых отношениях, я считаю, нельзя давать обещаний и не выполнять их, либо не обещай, либо держи слово.
</p>
<p>К слову говоря, чувак из конторы, офис которой находится в жутких ебенях, зарплата серая, никаких обязательств и прочих штук, перезвонил мне и сказал что не готов пригласить меня. Хотя странно, собеседования я прошел отлично, решил все задачи, рассказал кучу интересных вещей и был уверен что даже не ловко будет, когда буду отказываться.
</p>
<p>Сейчас, пока поднимаю воспоминания, вспомнил про еще довольно странную контору. Офис - несколько этажей в довольно крупном бизнес центре. Очень крутой пакет (страховка/обеды/...), достаточно высокая зарплата на старте ( > 80 000 ), корпоративная лицензия на PhpStorm :)))
</p>
<p>Так вот, к собеседованию я готовился почти неделю. Вызубрил все различия между версиями php и mysql, поднял все знания какие есть по паттернам программирования и мог с ходу написать кучу разных интересных штук. Выспался, пришел в отличном настроение и так нелепо обломался.
</p>
<p>Вопросы которые мне задавали, были настолько простые, что я оказался к ним не готов. Я не смог вспомнить, что различия между одинарной кавычкой не только в автопарсинге переменных, но еще и преобразование спецсимволов, запутался в <strong><i>htmlentities</i></strong> и <strong><i>html_entity_decode</i></strong> и вообще очень сильно лажал на примитивных вещах, на которые до этого никогда не обращал внимание. Было стыдно и был очень злой на себя.
</p>
<p>Вообще это не всё, есть еще много историй, возможно, потом, расскажу. Но подводя краткий итог, хочу сказать, что иногда стоит ходить на собеседования. Даже если не собираетесь уходить со своего места работы, это сильный стресс, как резкое погружение в холодную воду, которое вытаскивает тебя из рутинной обыденности и позволяет оценить свои силы. За те четыре месяца, которые прошли с моего первого собеседования, до того на котором меня пригласили, я узнал больше вещей и заполнил пробелов, чем за весь прошлый год.
</p>
Ну и тем крутым, которые знают php отлично, я процитирую <a href="http://bolknote.ru/2010/10/09/~2763/#18" target="_blank">Bolk'a</a>

<blockquote>
От собеседований, которые я недавно проводил, у меня осталась масса листочков с заковыристыми вопросами. Например, если человек говорил, что знает PHP на 10 из 10, то я ему давал, например, такой тест:
<p>&nbsp;</p>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>bool<span style="color: #009900;">&#41;</span> <span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span>$<span style="color: #009900;">&#123;</span><span style="color: #990000;">strrev</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SLABOLG'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span> <span style="color: #000088;">$GLOBALS</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">==</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">unset</span><span style="color: #009900;">&#41;</span> b<span style="color: #0000ff;">&quot;1&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;00&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>




Сказать есть ли тут ошибки, если нет, то что получим и что вообще тут происходит.
</blockqote>]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2011/03/nemnogo-pro-sobesedovaniya/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>XenForo &#8212; Первые впечатления</title>
		<link>http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/</link>
		<comments>http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 18:48:10 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[форум]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=14167</guid>
		<description><![CDATA[Сегодня стартовали продажи нового форума от авторов все любимой 3 ветки vBulletin. После ухода из компании они долгое время работали над своим продуктом и по всей видимости очень даже не зря. Новый движок получил название XenForo. Он сделан в web два ноль стиле, напичкан по уши аяксам, на первый взгляд имеет очень хорошее api и основное ядро. Кстати приятной неожиданностью стало, что в основе ядра лежит большая часть библиотек из Zend Framework, сколько читал описаний, ни где это не упоминалось. По тестам и первым форумам что появились в сети работает очень шустро. За первые часы использования более серьезного описания дать [...]]]></description>
			<content:encoded><![CDATA[Сегодня стартовали продажи нового форума от авторов все любимой 3 ветки vBulletin.
После ухода из компании они долгое время работали над своим продуктом и по всей видимости очень даже не зря.

<img class="colorbox-14167"  style="margin-left:auto;margin-right:auto" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo_logo.jpg" alt="xenforo_logo.jpg" border="0" width="400" height="400" />

Новый движок получил название XenForo. Он сделан в web два ноль стиле, напичкан по уши аяксам, на первый взгляд имеет очень хорошее api и основное ядро. Кстати приятной неожиданностью стало, что в основе ядра лежит большая часть библиотек из Zend Framework, сколько читал описаний, ни где это не упоминалось.

По тестам и первым форумам что появились в сети работает очень шустро.

За первые часы использования более серьезного описания дать не могу, но в целом очень понравилось. Думаю что forum.centrgroup.ru в ближайшем будущем переедет именно на него.

Ловите скриншоты админки.

<span id="more-14167"></span>


<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo_logo-jpg/' title='xenforo_logo.jpg'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo_logo-150x150.jpg" class="attachment-thumbnail colorbox-14167" alt="xenforo_logo.jpg" title="xenforo_logo.jpg" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo9/' title='xenforo9'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo9-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo9" title="xenforo9" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo8/' title='xenforo8'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo8-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo8" title="xenforo8" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo7/' title='xenforo7'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo7-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo7" title="xenforo7" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo6/' title='xenforo6'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo6-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo6" title="xenforo6" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo5/' title='xenforo5'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo5-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo5" title="xenforo5" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo4/' title='xenforo4'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo4-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo4" title="xenforo4" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo3/' title='xenforo3'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo3-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo3" title="xenforo3" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo2/' title='xenforo2'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo2-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo2" title="xenforo2" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo10/' title='xenforo10'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo10-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo10" title="xenforo10" /></a>
<a href='http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/xenforo1/' title='xenforo1'><img width="150" height="150" src="http://blog.rpsl.info/wp-content/uploads/2010/10/xenforo1-150x150.png" class="attachment-thumbnail colorbox-14167" alt="xenforo1" title="xenforo1" /></a>


Основные ресурсы:


<blockquote>
<a href="http://xenforo.com/">Оффициальный сайт</a>
<a href="http://www.xf-russia.ru/">XenForo - Russia</a>
<a href="http://vbsupport.org/forum/forumdisplay.php?f=112">Раздел XenForo на vBsupport.org</a>
</blockquote>

]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2010/10/xenforo-pervye-vpechatleniya/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Кэширование MySQL &#8212; MySimpleCache</title>
		<link>http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache/</link>
		<comments>http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 17:33:43 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Полезное]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[mysimplecache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=2294</guid>
		<description><![CDATA[Собственно возвращаясь к прошлому посту - "PHP Кэширование MySQL, хочу сказать спасибо всем, кто помог советами. По разным причинам, спустя несколько дней после прошлого поста, я все таки сел и написал этот велосипед. Перевел на него десяток говносайтов и наблюдал две недели за их поведением. Проблем не заметил, все работает хорошо, нагрузка на базу данных значительно упала, а это именно то, что и требовалось. Проект поселился на github.com, маловероятно, но возможно он еще будет обновляться, так что актуальная версия всегда там. Логика работы проста. Что бы закэшировать MySQL запрос, вы подключаете класс и делаете замену стандартных вызовов, на вызовы функций [...]]]></description>
			<content:encoded><![CDATA[Собственно возвращаясь к прошлому посту - "<strong><a href="http://blog.rpsl.info/2010/06/php-keshirovanie-mysql.html">PHP Кэширование MySQL</a></strong>, хочу сказать спасибо всем, кто помог советами.

По разным причинам, спустя несколько дней после прошлого поста, я все таки сел и написал этот велосипед. Перевел на него десяток говносайтов и наблюдал две недели за их поведением.

Проблем не заметил, все работает хорошо, нагрузка на базу данных значительно упала, а это именно то, что и требовалось.

Проект поселился на <a href="http://github.com/Rpsl/MySimpleCache">github.com</a>, маловероятно, но возможно он еще будет обновляться, так что актуальная версия всегда там.
<a href="http://github.com/Rpsl/MySimpleCache"><img src="http://blog.rpsl.info/wp-content/uploads/2010/07/mysimplecache.png" alt="" width="214" height="119" class="aligncenter size-full wp-image-2295 colorbox-2294" /></a>

Логика работы проста. Что бы <strong>закэшировать MySQL</strong> запрос, вы подключаете класс и делаете замену стандартных вызовов, на вызовы функций кеширования. Они являются синонимами, а значит вам нужно только перед вызовом дописать название класса.

При вызове mysql_query, скрипт попытается закешировать данный запрос и либо вернет ссылку на закешированный массив, либо вернет ссылку на ресурс.

Все последующие операции будут проверять является ли ссылка ресурсом и уже по обстоятельствам будут либо доставать данные из <strong>memcache</strong>, либо получать их напрямую.

Буду рад любым комментариям и повторяю еще раз, что крайне не рекомендую прикручивать этот скрипт на сайты которые чуть более серьезнее чем сателит.
]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Кеширование Mysql</title>
		<link>http://blog.rpsl.info/2010/06/php-keshirovanie-mysql/</link>
		<comments>http://blog.rpsl.info/2010/06/php-keshirovanie-mysql/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 12:04:12 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Заметки]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[memcache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=1401</guid>
		<description><![CDATA[UPD: Рабочая версия php MySimpleCache Други, мне требуется ваша помощь или совет. Такая ситуация, есть большая куча сайтов, написанных давным-давно. Они представляют из себя кучу файлов, в которых идет в перемешку php/html/sql запросы. Ни о каких современных паттернах программирования там речи нету. Переписывать эти сайты нет ни времени, ни желания, но они ужастно грузят БД. Задача добавить на эти сайты кеширование sql запросов. Переписывать их и править дело очень не благодарное и потребует кучу времени. Я поразмышлял и решил, что проще всего будет написать класс, который будет содержать в себе ф-ции синомы всех ф-ций для работы с бд. mysql_query mysql_fetch_assoc [...]]]></description>
			<content:encoded><![CDATA[<img src="http://blog.rpsl.info/wp-content/uploads/2010/06/mysql-logo.png" alt="" width="200" height="103" class="alignleft size-full wp-image-1426 colorbox-1401" />

<strong>UPD:</strong> Рабочая версия php <a href="http://blog.rpsl.info/2010/07/kehshirovanie-mysql-mysimplecache.html">MySimpleCache</a>

Други, мне требуется ваша помощь или совет.

Такая ситуация, есть большая куча сайтов, написанных давным-давно. Они представляют из себя кучу файлов, в которых идет в перемешку php/html/sql запросы. Ни о каких современных паттернах программирования там речи нету. Переписывать эти сайты нет ни времени, ни желания, но они ужастно грузят БД.

Задача добавить на эти сайты кеширование sql запросов. Переписывать их и править дело очень не благодарное и потребует кучу времени.

Я поразмышлял и решил, что проще всего будет написать класс, который будет содержать в себе ф-ции синомы всех ф-ций для работы с бд.



<blockquote>mysql_query
mysql_fetch_assoc
mysql_fetch_array
mysql_num_rows
mysql_result
....</blockquote>


Фишка в том, что они должны внутри себя пробовать кешировать запрос и либо возвразать результат запроса, либо возвращать закешированный результат.

Данная идея мне кажется крутой, так как, она позволит легкой автозаменой включить кеширование на сайте и лишь потом в нужных местах его допилить.

Теперь главное, я уверен что должны быть аналоги, а я пытаюсь изобрести велосипед. Возможно вы сталкивались с такими вещами и их решениями. Ну или просто можете высказать свое мнение по этому поводу. Не поленитесь, буду очень благодарен.

]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2010/06/php-keshirovanie-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SQL Joins Виды, типы, различия.</title>
		<link>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya/</link>
		<comments>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 18:56:43 +0000</pubDate>
		<dc:creator>Rpsl</dc:creator>
				<category><![CDATA[Полезное]]></category>
		<category><![CDATA[Статьи]]></category>
		<category><![CDATA[join]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.rpsl.info/?p=307</guid>
		<description><![CDATA[В первую очередь шпаргалка для себя, но надеюсь кому нибудь окажется полезным. Для начала оговорим, что у нас есть две таблицы: Table A и Table B: id name id name -- ---- -- ---- 1 Pirate 1 Rutabaga 2 Monkey 2 Pirate 3 Ninja 3 Darth Vader 4 Spaghetti 4 Ninja Теперь можно рассмотреть, варианты и различия возможных JOIN запросов. Inner join выведет записи, которые соответствуют  таблице A и таблице B. SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name id name id name -- ---- -- ---- 1 Pirate 2 Pirate 3 Ninja 4 Ninja Full outer [...]]]></description>
			<content:encoded><![CDATA[В первую очередь шпаргалка для себя, но надеюсь кому нибудь окажется полезным.

Для начала оговорим, что у нас есть две таблицы: <strong>Table A</strong> и <strong>Table B</strong>:
<blockquote>id name       id  name
-- ----       --  ----
1  <span style="color: red">Pirate</span> 1   Rutabaga
2  Monkey     2   <span style="color: red">Pirate</span>
3  <span style="color: red">Ninja</span> 3   Darth Vader
4  Spaghetti  4   <span style="color: red">Ninja
</span></blockquote>
Теперь можно рассмотреть, варианты и различия возможных JOIN запросов.

<strong>Inner join</strong> выведет записи, которые соответствуют  таблице A и таблице B.
<blockquote><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-inner.png"><img class="alignright size-thumbnail wp-image-308 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-inner-150x150.png" alt="join-inner" width="150" height="150" /></a>

SELECT * FROM TableA
<strong>INNER JOIN</strong> TableB
ON TableA.name = TableB.name

id  name       id   name
--  ----       --   ----
1   Pirate     2    Pirate
3   Ninja      4    Ninja</blockquote>
<span id="more-307"></span>

<strong>Full outer join</strong> выведет все записи из Таблицы A и Таблицы B,  сопоставив данные из обеих таблиц, если в одной из таблиц данные отсутсвуют, то результатом для данной ячейки будет "NULL"
<blockquote><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-cartesian.png"><img class="alignright size-thumbnail wp-image-314 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-cartesian-150x150.png" alt="join-cartesian" width="150" height="150" /></a>SELECT * FROM TableA
<strong>FULL OUTER JOIN</strong> TableB
ON TableA.name = TableB.name

id    name       id    name
--    ----       --    ----
1     Pirate     2     Pirate
2     Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span>
3     Ninja      4     Ninja
4     Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span>
<span style="color: gray">null</span> <span style="color: gray">null</span> 1     Rutabaga
<span style="color: gray">null</span> <span style="color: gray">null</span> 3     Darth Vader</blockquote>
<strong>Left outer join</strong> выведет данные из Таблицы A, с сопутсвующими данными из Таблицы B. Если подходящих данных в Таблице B нету, то будет выбран "NULL"
<blockquote><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left.png"><img class="alignright size-thumbnail wp-image-316 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-150x150.png" alt="join-left" width="150" height="150" /></a>SELECT * FROM TableA
<strong>LEFT OUTER JOIN</strong> TableB
ON TableA.name = TableB.name

id  name       id    name
--  ----       --    ----
1   Pirate     2     Pirate
2   Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span>
3   Ninja      4     Ninja
4   Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span></blockquote>
Оперируя прошлым примером, нам не составит труда достать только те данные, которые есть в Таблице A, для этого нужно использовть <strong> left outer join</strong>, с исключением пустых записей из Таблицы B
<blockquote><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-outer.png"><img class="alignright size-thumbnail wp-image-318 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-left-outer-150x150.png" alt="join-left-outer" width="150" height="150" /></a>SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
<strong>WHERE TableB.id IS null</strong>

id  name       id     name
--  ----       --     ----
2   Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span>
4   Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span></blockquote>
А если, чуть чуть усложнить задачу, то мы лего достанем данные, которые не имеют ничего общего. Для этого нужно использовать <strong>full outer join</strong>.
<blockquote><a href="http://blog.rpsl.info/wp-content/uploads/2009/07/join-outer.png"><img class="alignright size-thumbnail wp-image-320 colorbox-307" src="http://blog.rpsl.info/wp-content/uploads/2009/07/join-outer-150x150.png" alt="join-outer" width="150" height="150" /></a>SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
<strong>WHERE TableA.id IS null
OR TableB.id IS null
</strong>
id    name       id    name
--    ----       --    ----
2     Monkey     <span style="color: gray">null</span> <span style="color: gray">null</span>
4     Spaghetti  <span style="color: gray">null</span> <span style="color: gray">null</span>
<span style="color: gray">null</span> <span style="color: gray">null</span> 1     Rutabaga
<span style="color: gray">null</span> <span style="color: gray">null</span> 3     Darth Vader</blockquote>
Вот собственно и всё. Всё просто.

P.s. Данная статья является вольным переводом некой статьи, авторство которой мне не известно.]]></content:encoded>
			<wfw:commentRss>http://blog.rpsl.info/2009/07/sql-joins-vidy-tipy-razlichiya/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

