<?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>Блог начинающего миллионера</title>
	<atom:link href="http://flash28.ru/feed" rel="self" type="application/rss+xml" />
	<link>http://flash28.ru</link>
	<description>Очередной блог о компьютерах, программировании, php, скриптах, железе.</description>
	<lastBuildDate>Wed, 01 Feb 2012 13:09:40 +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>wordpress пустая страница page/2</title>
		<link>http://flash28.ru/malenkie-sovety/wordpress-pustaya-stranica-page2.html</link>
		<comments>http://flash28.ru/malenkie-sovety/wordpress-pustaya-stranica-page2.html#comments</comments>
		<pubDate>Tue, 31 Jan 2012 16:16:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Маленькие советы]]></category>

		<guid isPermaLink="false">http://flash28.ru/?p=213</guid>
		<description><![CDATA[Недавно только заметил на одном блоге, что при переходе на страницу page/2 или page/1 и так далее по шаблону адрес сайта/page/* чистая, пустая, белая страничка, ни байтика кода. Мучился я с этой проблемой мучился. Много чего перепробовал и на одной из шагов выяснения причины, а это было переименование папки с плагинами plugins которая находится в [...]]]></description>
			<content:encoded><![CDATA[<p>Недавно только заметил на одном блоге, что при переходе на страницу <strong>page/2</strong> или <strong>page/1</strong> и так далее по шаблону <strong>адрес сайта/page/*</strong> чистая, пустая, белая страничка, ни байтика кода. Мучился я с этой проблемой мучился. Много чего перепробовал и на одной из шагов выяснения причины, а это было переименование папки с плагинами <strong>plugins</strong> которая находится в wp-content в любое другое имя, ну например в <strong>plugins2</strong>. Соответственно все плагины отваливаются и можно точно удостовериться в плагинах ли это дело. И действительно в них. После данной операции страницы открывались как нужно&#8230; Переименовав обратно стал отключать по одному плагины и смотреть, и дело оказалось в плагине <strong>Advanced Permalinks</strong>. Отключил его нафиг. Особой смысловой нагрузки он не несет и погоды не делает. Так что у кого такая проблема проделайте то же самое и посмотрите, вдруг проблема кроется в плагинах, как это было у меня&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://flash28.ru/malenkie-sovety/wordpress-pustaya-stranica-page2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Авторизация в WordPress</title>
		<link>http://flash28.ru/malenkie-sovety/avtorizaciya-v-wordpress.html</link>
		<comments>http://flash28.ru/malenkie-sovety/avtorizaciya-v-wordpress.html#comments</comments>
		<pubDate>Mon, 30 Jan 2012 19:36:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Маленькие советы]]></category>

		<guid isPermaLink="false">http://flash28.ru/?p=203</guid>
		<description><![CDATA[Понадобилось мне тут написать кусочек кода, который брал пароль из базы данных wordpress&#8217;а. Полез в базу&#8230; Заранее предполагая, что пароль не может храниться в открытом виде, был уверен на 90%, что он в md5. Увидев значение поля user_pass, таблицы wp_users и хорошо зная как выглядит хеш md5 я понял, что это точно не md5,по крайней [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flash28.ru/wp-content/uploads/2012/01/wordpress_hash_password.png"  rel="lightbox[203]" title="wordpress_hash_password"><img src="http://flash28.ru/wp-content/uploads/2012/01/wordpress_hash_password.png" alt="Авторизация в wordpress" title="wordpress_hash_password" width="230" height="156" class="alignleft size-full wp-image-209" /></a>Понадобилось мне тут написать кусочек кода, который брал пароль из базы данных wordpress&#8217;а. Полез в базу&#8230; Заранее предполагая, что пароль не может храниться в открытом виде, был уверен на 90%, что он в md5. Увидев значение поля user_pass, таблицы wp_users и хорошо зная как выглядит хеш md5 я понял, что это точно не md5,по крайней мере может быть не в чистом виде&#8230; хеш пароля имеет такой вид</p>
<pre class="brush: php; title: ; notranslate">$P$Bhxnus21iNEGqYViRQ9yrGwBrMbAtN1</pre>
<p>пароль который равен этому хешу 123.<br />
Полез искать в интернете, на форумах, задавая вопросы великому Гууглу пытаясь найти истину. Вся найденная мною полезная информация гласила, что яко бы это многократное использование алгоритма md5, или md5 и какие случайные цифры и буквы вначале, то, что есть определенная закономерность и т.д. Ясное дело бред, я даже не поленился проверить теорию о многократном шифровании в md5. Все не то. Ну и разумеется пришлось копать истину самому&#8230; Полез разбирать исходники многоуважаемого wordpressа. Копаясь в исходниках и следуя от одного файла к другому, от одной функции к другой. Все приводило к вызову некого метода <strong>PasswordHash</strong>. Далее ниточка привела меня почти к истине&#8230;<br />
Оказывается хеширование пароля в wordpress выполняется неким усиленным, своим методом. То есть пароль хранящийся в базе данных, хранится там не в обычном хешированном md5 виде, а в усиленно хешированном виде. Как я понял, а в подробности я не вдавался, метод шифрования это модифицированный или чистый Blowfish. Порыскав еще, я вышел на <noindex><a target="_blank" rel="nofollow" href="http://flash28.ru/goto/http://www.openwall.com/phpass/"  title="официальный сайт" target="_blank">официальный сайт</a></noindex> этой разработки и называется все это дело <strong>Portable PHP password hashing framework</strong>, кратко <strong>phpass</strong> &#8212; Это класс написанный на PHP. Как правильно подмечают авторы, правильно говорить не шифрование пароля, а хеширование (а я разок употребил слово шифрование =) ). На этом сайте Вы всегда сможете скачать исходники, почитать поподробнее про phpass. Истина найдена, не все так сложно!</p>
]]></content:encoded>
			<wfw:commentRss>http://flash28.ru/malenkie-sovety/avtorizaciya-v-wordpress.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sublime Text 2 &#8212; как установить плагин</title>
		<link>http://flash28.ru/manual/sublime-text-2-kak-ustanovit-plagin.html</link>
		<comments>http://flash28.ru/manual/sublime-text-2-kak-ustanovit-plagin.html#comments</comments>
		<pubDate>Mon, 30 Jan 2012 18:35:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Маленькие советы]]></category>
		<category><![CDATA[Мануал]]></category>
		<category><![CDATA[Программы]]></category>

		<guid isPermaLink="false">http://flash28.ru/?p=193</guid>
		<description><![CDATA[Привет всем. Многие наверное пользуются этим замечательным редактором. Не буду многословен, а просто скажу, что лучше самим попробовать, чем сейчас писать много букв и рассказывать про этот замечательный редактор кода =), а лишь напишу как устанавливать плагины на этот редактор. Так вот, этот замечательный редактор еще и обладает не маленьким набором плагинов, из-за своей популярности [...]]]></description>
			<content:encoded><![CDATA[<p>Привет всем. Многие наверное пользуются этим замечательным редактором. Не буду многословен, а просто скажу, что лучше самим попробовать, чем сейчас писать много букв и рассказывать про этот замечательный редактор кода =), а лишь напишу как устанавливать плагины на этот редактор. Так вот, этот замечательный редактор еще и обладает не маленьким набором плагинов, из-за своей популярности множество программистов пересевших на Sublime Text 2 стали усердно разрабатывать новые и новые плагины, реализуя те плюшки, которых им не хватает или которые были в их прошлых любимых редакторах кода. И так по порядку&#8230;<br />
Найти и выбрать для себя нужный плагин можно <noindex><a target="_blank" rel="nofollow" href="http://flash28.ru/goto/http://www.sublimetext.com/forum/viewforum.php?f=5"  title="http://www.sublimetext.com/forum/viewforum.php?f=5" target="_blank">здесь</a></noindex> (официальный форум). Далее, запоминаем название. Открываем Sublime Text 2, вызываем консоль сочетанием горячих клавиш <strong>Ctrl+`</strong> и вставляем следующий снипет:</p>
<pre class="brush: php; title: ; notranslate">
import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'
</pre>
<p>много букав и все в одну строку&#8230; Жмем Enter и смотрим как в нижней панели, где показываются номер текущий строки и позиция курсора весело происходит анимация, которая наводит на ностальгию&#8230;<br />
Затем пере запускаем наш редактор, о чем любезно напишут в той же панельке. Далее <strong>Preferencens > Package Control > Install Package</strong> и вводим название понравившегося плагина, находим и устанавливаем. Все! Приятной Вам работы! Если возникнут вопросы, к Вашим услугам комментарии =)</p>
]]></content:encoded>
			<wfw:commentRss>http://flash28.ru/manual/sublime-text-2-kak-ustanovit-plagin.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Translator не работает</title>
		<link>http://flash28.ru/malenkie-sovety/quick-translator-ne-rabotaet.html</link>
		<comments>http://flash28.ru/malenkie-sovety/quick-translator-ne-rabotaet.html#comments</comments>
		<pubDate>Sat, 21 Jan 2012 15:20:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Маленькие советы]]></category>

		<guid isPermaLink="false">http://flash28.ru/?p=184</guid>
		<description><![CDATA[Привет всем! Не работает всеми любимое расширение для Firefox? И скорее всего стоит версия 0.9? Сам вот мучался с такой проблемой, решение &#8212; скачать бета версию 1.0b2. ссылку даю официальную, чтобы не было подозрений. http://groups.google.com/group/quick-translator/browse_thread/thread/a03e58bd9ea45775 Наслаждайтесь. Все работает, так как и работало. От себя добавлю, супер дополнение. Позволяет по быстрому перевести кусочек выделенного текста или [...]]]></description>
			<content:encoded><![CDATA[<p>Привет всем! Не работает всеми любимое расширение для Firefox? И скорее всего стоит версия 0.9? Сам вот мучался с такой проблемой, решение &#8212; скачать бета версию 1.0b2. ссылку даю официальную, чтобы не было подозрений.<br />
<noindex><a target="_blank" rel="nofollow" href="http://flash28.ru/goto/http://groups.google.com/group/quick-translator/browse_thread/thread/a03e58bd9ea45775"  title="http://groups.google.com/group/quick-translator/browse_thread/thread/a03e58bd9ea45775" target="_blank">http://groups.google.com/group/quick-translator/browse_thread/thread/a03e58bd9ea45775</a></noindex><br />
Наслаждайтесь. Все работает, так как и работало. От себя добавлю, супер дополнение. Позволяет по быстрому перевести кусочек выделенного текста или одно слово. Понимает множество языков.</p>
]]></content:encoded>
			<wfw:commentRss>http://flash28.ru/malenkie-sovety/quick-translator-ne-rabotaet.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>origin null is not allowed by access-control-allow-origin</title>
		<link>http://flash28.ru/oshibki-i-ix-resheniya/origin-null-is-not-allowed-by-access-control-allow-origin.html</link>
		<comments>http://flash28.ru/oshibki-i-ix-resheniya/origin-null-is-not-allowed-by-access-control-allow-origin.html#comments</comments>
		<pubDate>Wed, 11 Jan 2012 18:05:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ошибки и их решения]]></category>

		<guid isPermaLink="false">http://flash28.ru/?p=173</guid>
		<description><![CDATA[Привет всем! У Вас бывают такие ошибки? Мне вот выползла в консоли ошибок браузера Iron (Chrome, Chromium). Если Вы при этом разрабатываете что то на JavaScript, то эта ошибка означает, что браузер ругается на то, что скрипт выполняется не на сервере, а где то локально. Т.е. допустим есть у нас JS скрипт и он передает [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flash28.ru/wp-content/uploads/2012/01/origin-null-is-not-allowed-by-access-control-allow-origin1.gif"  rel="lightbox[173]" title="origin null is not allowed by access-control-allow-origin"><img src="http://flash28.ru/wp-content/uploads/2012/01/origin-null-is-not-allowed-by-access-control-allow-origin1.gif" alt="origin null is not allowed by access-control-allow-origin" title="origin null is not allowed by access-control-allow-origin" width="416" height="46" class="aligncenter size-full wp-image-178" /></a>Привет всем! У Вас бывают такие ошибки? Мне вот выползла в консоли ошибок браузера Iron (Chrome, Chromium). Если Вы при этом разрабатываете что то на JavaScript, то эта ошибка означает, что браузер ругается на то, что скрипт выполняется не на сервере, а где то локально. Т.е. допустим есть у нас JS скрипт и он передает какие либо данные PHP скрипту. А JS скрипт находится не на сервере (к примеру Денвере) а просто лежит где нибудь на диске. Залейте скрипт на сервер и будет Вам счастье!</p>
]]></content:encoded>
			<wfw:commentRss>http://flash28.ru/oshibki-i-ix-resheniya/origin-null-is-not-allowed-by-access-control-allow-origin.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как ускорить Google Chrome или Chrome и жесткий диск</title>
		<link>http://flash28.ru/manual/kak-uskorit-google-chrome-ili-chrome-i-zhestkij-disk.html</link>
		<comments>http://flash28.ru/manual/kak-uskorit-google-chrome-ili-chrome-i-zhestkij-disk.html#comments</comments>
		<pubDate>Sun, 08 Jan 2012 16:50:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мануал]]></category>

		<guid isPermaLink="false">http://flash28.ru/?p=124</guid>
		<description><![CDATA[Здравствуйте! Сегодня в этой статье хочу рассказать об &#171;ускорении&#187; и без того быстрого браузера Google Chrome. Расскажу как я ускорял свой Chrome с помощью переноса файлов профиля на виртуальный диск, который создается в ОЗУ компьютера. Расскажу какие это ускорение дает результаты. Какие подводные камни существуют при этом. Стоит ли игра свеч и как вернуть все [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flash28.ru/wp-content/uploads/2012/01/chrome_fast.jpg"  rel="lightbox[124]" title="chrome_fast"><img src="http://flash28.ru/wp-content/uploads/2012/01/chrome_fast.jpg" alt="Google Chrome fast" title="chrome_fast" width="300" height="144" class="alignleft size-full wp-image-160" /></a>Здравствуйте! Сегодня в этой статье хочу рассказать об &#171;ускорении&#187; и без того быстрого браузера Google Chrome. Расскажу как я ускорял свой Chrome с помощью переноса файлов профиля на виртуальный диск, который создается в ОЗУ компьютера. Расскажу какие это ускорение дает результаты. Какие подводные камни существуют при этом. Стоит ли игра свеч и как вернуть все на сои места, если Вам что либо не понравилось&#8230;<br />
<span id="more-124"></span><br />
Прежде всего небольшое лирическое отступление. Работаю я на ноутбуке, как известно в обычных не топовых, игровых ноутах стоят жесткие диски со скоростью вращения шпинделя 5400 оборотов в минуту. В больших братьях и игровых ноутах стоят жесткие диски со скоростью 7200 оборотов в минуту, как видно не вооруженным глазом разница есть. Жесткий диск ноутбука более медленный. Каждая программа в компьютере хранит свои данные на жестком диске и в процессе работы обращается к ним. Google Chrome хранит на жестком Ваш профиль, в профиле хранится история, кэш, плагины, их настройки и многое другое, разные базы данных и т.п. Так вот в процессе работы эта информация конечно же часто востребована. У меня например когда профиль разрастается до приличных размеров (а разрастается он от истории, закладок, кэша &#8212; от того, что его не чистят и т.д. Как правило чем дольше беззаботно мы Chrome, тем больше профиль по размеру), я вижу что браузер уже начинает работать заметно медленнее, например если играет музыка или видео с таких сервисов, как вконтакте или youtube и при одновременном открытии новой вкладки или ввода поискового запроса музыка/видео начинают подтормаживать &#8212; это характерно заметно по искаженному звуку. Чистка кэша и истории помогала не особо. Помогала только полное удаление и новая установка. Хочу еще сказать что на больших братьях (разумеется свежей конфигурации) это все не так заметно, даже с &#171;толстеньким&#187; профилем. Так же замечал что когда я открываю новую вкладу или набираю какой то адрес или поисковый запрос Chrome начинает активно использовать жесткий диск. Да и вообще в процессе серфинга Crome кушает его не меньше. Это объяснимо тем, о чем я писал выше, тем что браузер считывает необходимые ему данные с профиля. Озадачившись, я начал поиск решения проблемы, якобы решение было найдено&#8230;</p>
<h2>Google Chrome &#8212; переносим профиль с HDD на RamDisk</h2>
<p>Суть этого метода заключается в том, что Вы переносите свой профиль на виртуальный диск, который находится в оперативной памяти, которая как известно работает во много раз быстрее чем жесткий диск.<br />
И тааак =) перво наперво скачиваем утилитку RamDisk <noindex><a target="_blank" rel="nofollow" href="http://flash28.ru/goto/http://memory.dataram.com/products-and-services/software/ramdisk"  title="отсюда" target="_blank">отсюда</a></noindex>. Нам подойдет бесплатная версия. Устанавливаем. Запускаем:<br />
<a href="http://flash28.ru/wp-content/uploads/2012/01/ramdisk-run.png"  rel="lightbox[124]" title="ramdisk run"><img src="http://flash28.ru/wp-content/uploads/2012/01/ramdisk-run.png" alt="Запускаем RamDisk" title="ramdisk run" width="553" height="90" class="aligncenter size-full wp-image-126" /></a><br />
Далее видим главное окошко программы.<br />
<strong>Варнинг! Программа будет корректно работать, только если количество оперативной памяти у вашей машинки больше 512 Мбайт.</strong><br />
Выбираем (как я понял если windows xp, то FAT32 выбрать не получится) <strong>FAT32</strong>, если же FAT32 затемнено как у меня на Windows XP, осталяем FAT16.<br />
В поле Disk Size выставляем значение около 100 мегабайт, лучше 200. По моим наблюдениям обросший профиль Хрома весит порядка 200 мегабайт.</p>
<p><strong>В общем, если у Вас Windows 7 у вас должно получиться примерно так:</strong></p>
<p><a href="http://flash28.ru/wp-content/uploads/2012/01/ramdisk-config-win7.gif"  rel="lightbox[124]" title="ramdisk config win7"><img src="http://flash28.ru/wp-content/uploads/2012/01/ramdisk-config-win7.gif" alt="Параметры настройки для Windows 7" title="ramdisk config win7" width="344" height="218" class="aligncenter size-full wp-image-130" /></a><br />
На вкладке <strong>Load and Save</strong> выставляем следующие параметры:</p>
<p><a href="http://flash28.ru/wp-content/uploads/2012/01/ramdisk-config-load-and-save.gif"  rel="lightbox[124]" title="ramdisk config load and save"><img src="http://flash28.ru/wp-content/uploads/2012/01/ramdisk-config-load-and-save.gif" alt="Вкладка Load and Save" title="ramdisk config load and save" width="431" height="308" class="aligncenter size-full wp-image-134" /></a><br />
Они означают, что при завершении работы системы все сохраняется на образ img который Вы вольны сами разместить где хотите, при старте все загружается оттуда же и на всякий случай автоматическое сохранение каждые 300 секунд.<br />
Все, жмем File > Save Settings и Start RAMDisk. И ждем пока создастся виртуальны диск.</p>
<p>Далее:<br />
если у вас Google Chrome идем в</p>
<pre class="brush: php; title: ; notranslate">c:\Users\имя_профиля_в_windows\AppData\Local\Google\Chrome\</pre>
<p>если у вас Iron идем в </p>
<pre class="brush: php; title: ; notranslate">c:\Users\имя_профиля_в_windows\AppData\Local\Chromium\</pre>
<p>И копируем папку <strong>User Data</strong> на созданный RAM диск. Который Вы можете найти в &#171;Мой Компьютер&#187;.<br />
Далее ищите ярлык Chroma, жмете правой кнопкой мыши по нему, выбираете свойства и в поле &#171;Объект&#187; дописываете в конец строки через пробел следующее<br />
<u>За место буквы G подставьте букву вашего RAM диска</u></p>
<pre class="brush: php; title: ; notranslate">--user-data-dir=&quot;G:\User Data&quot;</pre>
<p><a href="http://flash28.ru/wp-content/uploads/2012/01/chrome.gif"  rel="lightbox[124]" title="chrome"><img src="http://flash28.ru/wp-content/uploads/2012/01/chrome.gif" alt="Chrome" title="chrome" width="342" height="295" class="aligncenter size-full wp-image-140" /></a><br />
Все, можно перезапустить RAMDisk для надежности и запускать Google Chrome.</p>
<h2>Минусы и выводы и как все вернуть на свои места&#8230;</h2>
<h3>Выводы</h3>
<p>Ну скажу, что жесткие тесты и бенчмарки я не проводил, но визуально разница не значительная. Я честно, думал что разница будет колоссальной. Да, прибавка есть, но она не значительная. Единственное что я точно заметил, так это то, что Chom стал значительно меньше обращаться к жесткому диску, тем самым меньше высвободив ресурсы обращения другим программам и процессам.</p>
<h3>Минусы</h3>
<p>Теперь о минусах. Одним из минусов же данной системы является, то, что при разрастании профиля Хрома свыше объема вашего созданного рам диска, Хром попросту вылетит без всяких предупреждений&#8230; Ну и естественно если объем вашей ОЗУ не велик, то вообще не вижу смысла проводить данные манипуляции.</p>
<h3>Возврат</h3>
<p>Вернуть все на свои легко, закрываем браузер, копируем профиль с RAM диска обратно на свой жесткий (пути расположения писал выше), останавливаем RAM диск в программе Dataram RAMDisk. Удаляем ее. Правой кнопкой по ярлыку Хрома как мы делали выше и удаляем &#8212;user-data-dir=&#187;G:\User Data&#187; из поля объект. Все.<br />
Если будут какие то вопросы, с удовольствием отвечу в комментариях.</p>
]]></content:encoded>
			<wfw:commentRss>http://flash28.ru/manual/kak-uskorit-google-chrome-ili-chrome-i-zhestkij-disk.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RegexBuddy помощник в составлении регулярных выражений</title>
		<link>http://flash28.ru/programmy/regexbuddy-pomoshhnik-v-sostavlenii-regulyarnyx-vyrazhenij.html</link>
		<comments>http://flash28.ru/programmy/regexbuddy-pomoshhnik-v-sostavlenii-regulyarnyx-vyrazhenij.html#comments</comments>
		<pubDate>Fri, 06 Jan 2012 17:58:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Программы]]></category>

		<guid isPermaLink="false">http://flash28.ru/?p=118</guid>
		<description><![CDATA[Привет! Сегодня расскажу о не заменимой програмке для отладки/составления регулярных preg match&#8217;евых выражений или как коротко их называют &#8212; regex выражений. Напишу отзыв так сказать. Лично я долго пользовался полезной тулзой написанной на JavaScripte которая находилась на сайте pcre.ru. Ну, на тот момент шаблончики были маленькие и мне вполне хватало мощностей той онлайн утилитки. Но [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flash28.ru/wp-content/uploads/2012/01/RegexBuddy.gif"  rel="lightbox[118]" title="RegexBuddy"><img src="http://flash28.ru/wp-content/uploads/2012/01/RegexBuddy.gif" alt="RegexBuddy" title="RegexBuddy" width="200" height="199" class="alignleft size-full wp-image-119" /></a>Привет! Сегодня расскажу о не заменимой програмке для отладки/составления регулярных preg match&#8217;евых выражений или как коротко их называют &#8212; regex выражений. Напишу отзыв так сказать.<br />
Лично я долго пользовался полезной тулзой написанной на JavaScripte которая находилась на сайте pcre.ru. Ну, на тот момент шаблончики были маленькие и мне вполне хватало мощностей той онлайн утилитки. Но со временем шаблоны усложнились и появились более специфичные понятия обо всем этом и соответственно мне понадобился помощник по мощнее. Я убил почти весь вечер на поиски подходящей программы. Смотрел и такие же онлайн утилиты, как на pcre, и плагины для всем известного firefox и обычные десктоп версии, но ничего нужного мне не попадалось. Либо был скудный функционал, либо не хватало мощностей обрабатывать большие тексты и т.д. Но когда мой взор пал на RegexBuddy &#8212; мне она сразу понравилась. Особенно понравилось отображение всех знаков табуляции, таких как пробел, который отображается точкой, переход на новую строку и так далее. Как я считаю очень полезная штука. Например когда получаешь целый текст или html какой то страницы а он разделен на строки или используется табуляция и ты в составлении шаблона этого не указываешь, а потом долго недоумеваешь почему не работает &#171;правильно&#187; составленный шаблон (так было у меня). Также можно выбирать какой движок используется для интерпретации. Удобное выделение найденных шаблонов в тексте, желтым и голубым цветом. Работа с большими объемами текста. Сохранение шаблонов. В общем удобная, продуманная многофункциональная программа. Моя оценка твердые 5 баллов. Ну правда есть один минус &#8212; программа платная, но в нашей стране это не минус =) Есть еще одно НО, если Вы используете написанные шаблоны в PHP в функциях preg_match и им подобным иногда интерпретатор этих функций в PHP выдает ошибки о том, что некоторые символы шаблона не работают (точнее он их не понимает), эти символы необходимо предварить знаком бэкслеш &#171;\&#187;. То есть в самой программе шаблон исправно функционирует без этого предварения, а в PHP выдает ошибки, поэтому будьте внимательны. Советую всем завести такую сову у себя на рабочей машинке =)</p>
]]></content:encoded>
			<wfw:commentRss>http://flash28.ru/programmy/regexbuddy-pomoshhnik-v-sostavlenii-regulyarnyx-vyrazhenij.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP авторизация vkontakte</title>
		<link>http://flash28.ru/php/php-avtorizaciya-vkontakte.html</link>
		<comments>http://flash28.ru/php/php-avtorizaciya-vkontakte.html#comments</comments>
		<pubDate>Tue, 03 Jan 2012 16:23:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://flash28.ru/?p=106</guid>
		<description><![CDATA[Сегодня расскажу как авторизоваться вконтакте средствами PHP и CURL. Начну с теории. Моя цель была авторизоваться в мобильной версии vkontakte.ru, т.е. m.vkontakte.ru и выдернуть оттуда нужные мне данные. Объясню почему&#8230; Во первых мобильная версия сайта проще для парсинга, с мобильной версии легче получить какие либо данные. В принципе по функционалу, тоже самое. Единственный минус &#8212; [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня расскажу как авторизоваться вконтакте средствами PHP и CURL. Начну с теории. Моя цель была авторизоваться в мобильной версии vkontakte.ru, т.е. m.vkontakte.ru и выдернуть оттуда нужные мне данные. Объясню почему&#8230; Во первых мобильная версия сайта проще для парсинга,  с мобильной версии легче получить какие либо данные. В принципе по функционалу, тоже самое. Единственный минус &#8212; доступны не все функции и фичи. Но мне фичи были не нужны, мне нужно было только страница друзей, которые находятся в онлайне.<br />
Давно не вникал в методы авторизации этого контакта. Поюзав поиск не нашел нужного мне решения и решил приступить к написанию сам, к тому же найденные методы почему то на данный момент не работали, видимо вконтакте не редко меняет алгоритм авторизации. Разумеется я использовал связку PHP+CURL. Как без нее нынче =) Авторизация вконтакте нынче сложная, с двумя или даже тремя редиректами. Чтобы вникнуть во всю суть я использовал сниффер. Разобравшись что к чему получился вот такой код:</p>
<pre class="brush: php; title: ; notranslate">
&lt;?

$user_agent='Opera/9.80 (S60; SymbOS; Opera Mobi/499; U; ru) Presto/2.4.18 Version/10.00';//браузер
$login='';//мыло, логин или номер телефона
$password='';//пароль

if (!$ch=curl_init()) {//инициализируем curl, если не получается выдаем ошибку
    echo 'error curl init!';
    exit;
}

//отключаем проверку корневых сертификатов
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
//включаем показ заголовков в выводе
curl_setopt($ch, CURLOPT_HEADER, true);
//true т.к. мы будем отправлять post запрос
curl_setopt($ch, CURLOPT_POST, true);
//обманываем сайт, пусть думает что мы браузер
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
//ответ сервера будем записывать в переменную
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
//по редиректам будем переходить автоматически
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, 'https://login.vk.com');

//формируем запрос
$post=array(
    'act' =&gt; 'login',
    'pda' =&gt; '1',
    'from_host' =&gt; 'm.vkontakte.ru',
    //'ip_h' =&gt; '8f69244421976fb1a5',//для чего?
    'from_protocol' =&gt; 'http',
    'to' =&gt; '',
    'email' =&gt; $login,
    'pass' =&gt; $password
);

$post=http_build_query($post);
//отправляем post запрос
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

if (!$answer=curl_exec($ch)) {//если нет ответа - выдаем ошибку
    echo 'error get answer!';
}

//вытаскиваем remixsid
$p='/remixsid=([a-z0-9]{10,70})/';//регулярка
preg_match($p, $answer, $tmp);
$remixsid=$tmp[1];

$cookie='remixsid='.$remixsid;//создаем печеньку =)

curl_setopt($ch, CURLOPT_POST, false);//переключаемся обратно к методу GET
curl_setopt($ch, CURLOPT_COOKIE, $cookie); //даем контакту скушать начу печеньку
curl_setopt($ch, CURLOPT_URL, 'http://m.vkontakte.ru/friendsonline');//страница друзей онлайн -&gt;
//-&gt; Вы можете вставить сюда ссылку на любую другую страницу контакта, которая нужна Вам

$answer=curl_exec($ch);//итоговый результат хранится в переменной $answer

echo $answer;//тут я вывожу содержимое этой переменной на экран, Вы же можете делать с ней все что хотите

//если что то не получается, можно раскомментировать две строки ниже и посмотреть ошибки
//echo &quot;CURL error number: &quot;.curl_errno($ch).&quot;&lt;br&gt;&quot;;
//echo &quot;CURL error: &quot;.curl_error($ch).&quot;&lt;br&gt;&quot;;
curl_close($ch);//закрываем curl сессию и очищаем память

?&gt;
</pre>
<p>Вкратце постараюсь рассказать что да как. Скрипт использует <strong>библиотеку CURL</strong>. <strong>Написан на PHP</strong>. Старался писать с множеством комментариев чтобы было понятней тем, кто будет использовать данный скрипт, ну и писал не &#171;загнуто&#187; по &#171;крутопрограммистски&#187;, а ля сокращение всего и вся в какие то специфические конструкции которые знают только те кто вкусил большую часть знаний. При написании столкнулся с такой проблемкой: при авторизации используется шифрованное соединение <strong>https</strong>, curl постоянно выдавал ошибку, ругаясь на непроверенный корневой сертификат, <strong>ошибка 60 (CURLE_SSL_CACERT)</strong>, ясное дело у него не много этих корневых сертификатов&#8230; Я решил попросту отключить проверку сертификатов безопасности, для упрощения скрипта, врядли тут понадобится сия функция, можно было было импортировать сертификаты из браузера, положить их в отдельную папку и вручную потом их обновлять, но как я уже писал в данном случае не за чем. И еще не совсем понял для чего передается значение переменной <strong>ip_h</strong>? И без нее работает прекрасно, поэтому данную часть кода я закомментировал. (Если кто понял или знает, рад буду услышать). Самое ценное для нас &#8212; это значение переменной <strong>remixsid</strong>, которое выдается нам в куках. Я выдираю это значение из общей кучи заголовков (кстати в вывод включены и заголовки, но не думаю что это кому то не понравится) и потом подсовываю в печеньку, а затем скармливаю эту печеньку контакту =) Кстати зная значение данной переменной можно с легкостью сидеть с чьего либо аккаунта (<del datetime="2012-01-03T15:19:44+00:00">и писать всякие гадости, читать сообщения</del>), но не более. В общем если у Вас дорогие читатели будут какие либо вопросы по работе данного скрипта или советы по улучшению и т.д. прошу оставлять все это в комментариях, я с радостью отвечу. Буду рад, если кому то помог!<br />
<strong>UPD: оказывается авторизовавшись в мобильной версии m.vkontakte.ru и зная remixsid, Вы можете спокойной получать необходимые данные и с полной версии vkontakte.ru, так что можно сказать скрипт универсален.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://flash28.ru/php/php-avtorizaciya-vkontakte.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NotScript, установка, настройка</title>
		<link>http://flash28.ru/manual/notscript-ustanovka-nastrojka.html</link>
		<comments>http://flash28.ru/manual/notscript-ustanovka-nastrojka.html#comments</comments>
		<pubDate>Tue, 27 Dec 2011 14:05:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Мануал]]></category>

		<guid isPermaLink="false">http://flash28.ru/?p=68</guid>
		<description><![CDATA[Hi, all! Понадобилось мне сегодня полазить в сети без надоедливых порой скриптов JavaScript. Я чаще всего использую для серфа Chrome. Пошел на официальную страничку дополнений искать плагин. По памяти использования Firefox помню, что там был такой замечательный и широко известный плагин &#171;No Script&#187;. Для Chrom оказывается есть аналог и называется он &#171;NotScript&#187;. Различий в названии [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flash28.ru/wp-content/uploads/2011/12/notscript.png"  rel="lightbox[68]" title="notscript"><img src="http://flash28.ru/wp-content/uploads/2011/12/notscript.png" alt="" title="notscript" width="304" height="107" class="aligncenter size-full wp-image-88" /></a><br />
Hi, all! Понадобилось мне сегодня полазить в сети без надоедливых порой скриптов JavaScript. Я чаще всего использую для серфа Chrome. Пошел на официальную страничку дополнений искать плагин. По памяти использования Firefox помню, что там был такой замечательный и широко известный плагин &#171;No Script&#187;. Для Chrom оказывается есть аналог и называется он &#171;NotScript&#187;. Различий в названии не много <img src='http://flash28.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Установка как всегда обычная для всех плагинов, но есть одно НО: после установки необходимо установить так называемый пароль. Для этого идем по пути</p>
<pre class="brush: php; title: ; notranslate">c:\Users\имя_учетной_записи\AppData\Local\Google\Chrome\UserData\Default\Extensions\odjhifogjcknibkahlpidmdajjpkkcfn\версия_плагина\</pre>
<p>где <strong>имя_учетной_записи</strong> &#8212; имя вашей учетки в системе, <strong>версия_плагина</strong> &#8212; ну что то вроде &#171;0.9.6_0&#8243;. Ну и соответственно если у вас windows установлен не на диске C, тогда и буква в начале пути будет не С, а ваша.<br />
Далее находите в директории файл с именем <strong>CHANGE__PASSWORD__HERE.js</strong>, открываете его в своем любимом текстовом редакторе, находите такую строчку:</p>
<pre class="brush: jscript; title: ; notranslate">const ENCRYPTION_PASSWORD = &quot;&quot;;</pre>
<p>и вставляете между двойными кавычками свой придуманный/сгенерированный пароль <strong>не менее 20 символов длиной!</strong> и не более 100, латинскими буквами с цифрами, к примеру &#171;EbwpVL8eMqmRZni0QnFcS5BK0&#8243; вполне подойдет.<br />
Перезапускаем Chrome и наслаждаемся работой. Сразу подмечу, скрипт изначально работает в режиме &#171;блокирую на всех сайтах кроме маленького списочка аля google.ru и т.д.&#187;, так что учтите!</p>
]]></content:encoded>
			<wfw:commentRss>http://flash28.ru/manual/notscript-ustanovka-nastrojka.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VirtualBox &#8212; смена даты, изменение времени или отмена синхронизации с родительской машиной</title>
		<link>http://flash28.ru/malenkie-sovety/virtualbox-smena-daty-izmenenie-vremeni-ili-otmena-sinxronizacii-s-roditelskoj-mashinoj.html</link>
		<comments>http://flash28.ru/malenkie-sovety/virtualbox-smena-daty-izmenenie-vremeni-ili-otmena-sinxronizacii-s-roditelskoj-mashinoj.html#comments</comments>
		<pubDate>Thu, 22 Dec 2011 19:51:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Маленькие советы]]></category>

		<guid isPermaLink="false">http://flash28.ru/?p=50</guid>
		<description><![CDATA[Понадобилось мне срочно тут на виртуалке поменять дату на пару месяцев назад. Запустил, залез в настройки времени и даты, поменял, все бы хорошо, но заметил, что через несколько секунд дата опять установилась такой же как и была до изменения&#8230; Наверное синхронизация с интернетом творит такие вещи подумал я, отключил ее, поменял дату, опять тоже самое&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>Понадобилось мне срочно тут на виртуалке поменять дату на пару месяцев назад. Запустил, залез в настройки времени и даты, поменял, все бы хорошо, но заметил, что через несколько секунд дата опять установилась такой же как и была до изменения&#8230; Наверное синхронизация с интернетом творит такие вещи подумал я, отключил ее, поменял дату, опять тоже самое&#8230; Ну пошел спрашивать у великого Googl&#8217;а. Порывшись немного выяснил, что <strong>время и дата на виртуальной машине синхронизируется с родителем, т.е. с компьютером на котором установлена виртуальная машина</strong>.<br />
В графических настройках изменить данную опцию не возможно (если возможно скажите <img src='http://flash28.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ). Менять время на основной ОС мне совсем не хотелось, для такого рода экспериментов как раз и придуманы виртуальные машины.<br />
У меня установлен VirtualBox и в данном случае виртуалка запускалась из под Windows 7. Так вот, для отмены синхронизации времени и даты виртуальной машины с операционной системой в которой она стоит необходимо следующее (для win 7):</p>
<ul>
<li>Вызываем терминал: <strong>WIN+R</strong>.</li>
<li>Перемещаемся в папку где установлен VirtualBox: cd путь до папки с виртуалкой, например <code>cd с:\Program Files\Oracle\VirtualBox</code></li>
<li>И выполняем команду: <code>vboxmanage setextradata "virtualmachines name" “VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled” “1"</code><br />
virtualmachines name &#8212; имя вашей виртуальной машины, <strong>например в данном случае</strong><br />
<a href="http://flash28.ru/wp-content/uploads/2011/12/virtualbox_name.jpg"  rel="lightbox[50]" title="virtualbox_name"><img src="http://flash28.ru/wp-content/uploads/2011/12/virtualbox_name.jpg" alt="Имя виртуальной машины" title="virtualbox_name" width="169" height="93" class="aligncenter size-full wp-image-55" /></a><br />
<strong>имя будет &#171;win xp&#187;</strong></li>
</ul>
<p>Вот и все, теперь можете изменять системную дату/время и она будет оставаться такой, какой Вы ее задали. Удачи!</p>
]]></content:encoded>
			<wfw:commentRss>http://flash28.ru/malenkie-sovety/virtualbox-smena-daty-izmenenie-vremeni-ili-otmena-sinxronizacii-s-roditelskoj-mashinoj.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

