<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Juravskiy Vitaliy`s blog</title><link>http://juravskiy.ru</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Juravskiy" /><description>I want to know ...</description><language>en</language><lastBuildDate>Sun, 11 Dec 2011 06:51:45 PST</lastBuildDate><generator>http://wordpress.org/?v=3.3.1</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Juravskiy" /><feedburner:info uri="juravskiy" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>50.6 </geo:lat><geo:long>36.6</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license><feedburner:emailServiceId>Juravskiy</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Монтируем ftp как локальную папку в Ubuntu</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/O_oj0DlBJ0U/</link><category>Администрирование</category><category>Заметки</category><category>curlftpfs</category><category>ftp</category><category>mount</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Sun, 27 Nov 2011 08:36:03 PST</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1508</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;">Я пользуюсь средой разработки, которая не поддерживает работу по FTP на прямую, а иногда удобно для Web программирования, когда файлы размещны на сервере и к ним есть доступ по FTP. В таком случае может быть два варианта, хранить копию и ее редактировать или редактировать файлы напрямую на сервере. В моем случае я хочу редактировать файлы напрямую. <span id="more-1508"></span></p><p>Так, вот сосбственно небольшая заметка. Устанавливаем curlftpfs</p><blockquote><p>sudo apt-get install curlftpfs</p></blockquote><p>Создаем директорию в home</p><blockquote><p>mkdir ~/webproject</p></blockquote><p>Редактриуем (создаем) файл, где будет храниться логин, пароль и адрес сервера</p><blockquote><p>sudo vim /root/.netrc</p></blockquote><blockquote><p>machine ftp-site.ru<br /> login ftp-user<br /> password ftp-pass</p></blockquote><blockquote><p>sudo chmod 600 /root/.netrc</p></blockquote><p>Для добавления в fstab, и мониторвания ftp при загрузке системы. Првоеряем свой uid и gid гурппы</p><blockquote><p>id</p></blockquote><p>Редактируем fstab</p><blockquote><p>sudo vim /etc/fstab</p></blockquote><p>добавляем в конец строчки</p><blockquote><p>curlftpfs#ftp-site.ru ~/webproject fuse allow_other,uid=1000,gid=1000,umask=0022 0 0</p></blockquote><blockquote><p>mount -a</p></blockquote> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/V0b-Ee2RJag1hggSs3TNz67j6qo/0/da"><img src="http://feedads.g.doubleclick.net/~a/V0b-Ee2RJag1hggSs3TNz67j6qo/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/V0b-Ee2RJag1hggSs3TNz67j6qo/1/da"><img src="http://feedads.g.doubleclick.net/~a/V0b-Ee2RJag1hggSs3TNz67j6qo/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=O_oj0DlBJ0U:kTD6ROHyaPI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=O_oj0DlBJ0U:kTD6ROHyaPI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=O_oj0DlBJ0U:kTD6ROHyaPI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=O_oj0DlBJ0U:kTD6ROHyaPI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=O_oj0DlBJ0U:kTD6ROHyaPI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=O_oj0DlBJ0U:kTD6ROHyaPI:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=O_oj0DlBJ0U:kTD6ROHyaPI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=O_oj0DlBJ0U:kTD6ROHyaPI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=O_oj0DlBJ0U:kTD6ROHyaPI:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=O_oj0DlBJ0U:kTD6ROHyaPI:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=O_oj0DlBJ0U:kTD6ROHyaPI:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=O_oj0DlBJ0U:kTD6ROHyaPI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=O_oj0DlBJ0U:kTD6ROHyaPI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=O_oj0DlBJ0U:kTD6ROHyaPI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=O_oj0DlBJ0U:kTD6ROHyaPI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=O_oj0DlBJ0U:kTD6ROHyaPI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=O_oj0DlBJ0U:kTD6ROHyaPI:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/O_oj0DlBJ0U" height="1" width="1"/>]]></content:encoded><description>Я пользуюсь средой разработки, которая не поддерживает работу по FTP на прямую, а иногда удобно для Web программирования, когда файлы размещны на сервере и к ним есть доступ по FTP. В таком случае может быть два варианта, хранить копию и ее редактировать или редактировать файлы напрямую на сервере. В моем случае я хочу редактировать файлы [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1508</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1508</feedburner:origLink></item><item><title>Библиотека Конгресса</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/x0QRiZLEfW8/</link><category>Заметки</category><category>Новости</category><category>Library of Congress</category><category>World Didgital Library</category><category>бибилиотека</category><category>рукописи</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Thu, 20 Oct 2011 13:29:50 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1496</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;"><img class="alignleft size-full wp-image-1499" style="margin-left: 10px; margin-right: 10px;" title="Бибилиотека Конгресса (The Library of Congress) " src="http://juravskiy.ru/wp-content/uploads/2011/10/logo-loc.png" alt="logo loc Библиотека Конгресса" width="141" height="32" />Сегодня я коротко расскажу о Библиотеке Конгресса (The Library of Congress), а также расскажу о тех интересных местах и материалах, которые я нашел в течении 5 минутного просмотра проектов Библиотеки.</p><p style="text-align: justify;">Библиотека была основна в 1800 году. 24 августа 1814 года, Британские войска подожгли здание Капитолия, где размещалась библиотека. Была уничтожена почти вся библиотека - 3000 томов. 30 января 1815 года, Конгресс разрешил покупку библиотеки Томаса Джеферсона (Thomas Jefferson), которая насчитывала 6487 книг, за 23 950 $.<span id="more-1496"></span></p><p style="text-align: justify;">Библиотека Конгресса одна из самых больших библиотек в Мире и насчитывает более чем 147 миллионов предметов, на примерно 838 милях книжных полок. Библиотека включает более чем 33 миллиона книг и других печатных материалов, 3 миллиона записей, 12.5 миллионов фотографий, 5.4 миллиона карт, 6 миллионов нот музыкальных произведений и 64.5 миллиона манускриптов.</p><p style="text-align: justify;">В библиотеку поступает примерно 22 000 предметов каждый рабочей день и примерно 100000 из них попадают в коллекцию ежедневно. Большинство из коллекции предметов, получены благодаря процессу регистрации прав собственности (copyrights), так как библиотека еще и  является агентством по Правовой собственности США. Также существуют и другие источники получения материалов - пожертвования, покупка в других государственных агентствах. Предметы не вошедшие в коллекцию Бибилиотеки Конгресса используются в Национальных библиотеках, а также в программе интернационального обмена.</p><p style="text-align: justify;">C 1962 года Библиотека Конгресса начинает открывать офисы в других странах - Индия, Египт, Бразилия, Кения, Индонезия, Пакистан. На данный момент представительства насчитываются более чем в 60 странах Мира. Все они работают по программе создания <a href="http://wdl.org" target="_blank">Всемирной  Цифровой Библиотеки</a>.</p><p style="text-align: justify;">Основная часть библиотеки содержится на английском языке, также есть материал на других языках - примерно 470 языков. Африка, Ближний Восток 600 000 томов,Азия 3 миллиона томов. В библиотеке содержится самая большая коллекция материалов на русском языке в США и самая большая коллекция за пределами России - более 750 000 наименований.</p><p style="text-align: justify;">Библиотека содержит большое число (более 2.65 миллиона) томов содержащих законодательную базу США, включая газеты, и публикации конгресса США.</p><p style="text-align: justify;">Много интересных документов я нашел на World Didgital Library. Например книга 1900 года - <a href="http://www.wdl.org/en/item/101/?q=siberian&amp;view_type=gallery&amp;qla=en" target="_blank">"Гид по Великой Сибирской Железной дороге"</a> на английском языке, в отличном качестве в формате pdf. С пометками на полях тогдашних времен, смотря на такие документы прям чувствуешь дух того времени - Русская Империя.</p><p style="text-align: justify;">Раньше Белгородской области не было, а ее территория входила в состав Курской области (Курской губернии), так вот нашел вот такой вот документ <a href="http://www.wdl.org/en/item/4505/zoom/#group=1&amp;page=1" target="_blank">Карта Курской губернии 1800-1833 годов</a>, на карте точка 5 - Белъ городъ :)</p><p style="text-align: justify;">На wdl.org можно найти очень много рукописей из разных стран Мира, на разных языках. Например труды Галилео, и других ученых.</p><p style="text-align: justify;">На сайте <a href="http://chroniclingamerica.loc.gov/" target="_blank">Хроник Америки</a> можно найти большую коллекцию газет США. Очень интересно посмотреть на то, как выглядели газеты век назад.</p><p style="text-align: justify;">Библиотека Конгресса имеет также большое количество других ресурсов в сети Интернет, посещая которые будут равносильны походу в библиотеку. Зайдя на главный сайт библиотеки <a href="http://www.loc.gov/">http://www.loc.gov</a> в разделе Collection Highlights можно посмотреть доступный список материалов - фотографии, газеты, аудио записи, фильмы, карты, рукописи, книги.</p><p style="text-align: justify;"><p>&nbsp;</p><p>&nbsp;</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/sk3K1BdnZC-3RN0bU7CRSC7Saek/0/da"><img src="http://feedads.g.doubleclick.net/~a/sk3K1BdnZC-3RN0bU7CRSC7Saek/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/sk3K1BdnZC-3RN0bU7CRSC7Saek/1/da"><img src="http://feedads.g.doubleclick.net/~a/sk3K1BdnZC-3RN0bU7CRSC7Saek/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=x0QRiZLEfW8:yWk4Oh7eYdU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=x0QRiZLEfW8:yWk4Oh7eYdU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=x0QRiZLEfW8:yWk4Oh7eYdU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=x0QRiZLEfW8:yWk4Oh7eYdU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=x0QRiZLEfW8:yWk4Oh7eYdU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=x0QRiZLEfW8:yWk4Oh7eYdU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=x0QRiZLEfW8:yWk4Oh7eYdU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=x0QRiZLEfW8:yWk4Oh7eYdU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=x0QRiZLEfW8:yWk4Oh7eYdU:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=x0QRiZLEfW8:yWk4Oh7eYdU:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=x0QRiZLEfW8:yWk4Oh7eYdU:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=x0QRiZLEfW8:yWk4Oh7eYdU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=x0QRiZLEfW8:yWk4Oh7eYdU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=x0QRiZLEfW8:yWk4Oh7eYdU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=x0QRiZLEfW8:yWk4Oh7eYdU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=x0QRiZLEfW8:yWk4Oh7eYdU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=x0QRiZLEfW8:yWk4Oh7eYdU:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/x0QRiZLEfW8" height="1" width="1"/>]]></content:encoded><description>Сегодня я коротко расскажу о Библиотеке Конгресса (The Library of Congress), а также расскажу о тех интересных местах и материалах, которые я нашел в течении 5 минутного просмотра проектов Библиотеки. Библиотека была основна в 1800 году. 24 августа 1814 года, Британские войска подожгли здание Капитолия, где размещалась библиотека. Была уничтожена почти вся библиотека - 3000 томов. 30 января 1815 года, Конгресс разрешил [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1496</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1496</feedburner:origLink></item><item><title>Почему мне нравится слушать WNYC</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/LAtVmh8ZdaY/</link><category>Заметки</category><category>Мнения</category><category>internet radio</category><category>nyc</category><category>wnyc</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Tue, 11 Oct 2011 11:19:55 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1490</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;"><img class="alignleft size-full wp-image-1492" style="margin-left: 10px; margin-right: 10px;" title="wnyc" src="http://juravskiy.ru/wp-content/uploads/2011/10/logo_wnyc.gif" alt="logo wnyc Почему мне нравится слушать WNYC" width="298" height="89" />Всегда бывает интересно послушать что-то на иностранном языке, а радио в двойне. Мне нравится слушать WNYC, потому что - это интересные передачи, несколько каналов вещания, приятная музыка, свежие новости. Интересно послушать передачи, долго привыкал к скорости произношения, некоторые фразы были не понятны. Сейчас слушаю без напряжения, если какие то фразы или слова не знаю, помечаю, потом ищу в словаре. В основном, когда есть хороший словарный запас, то если в предложении встречается не известная фраза, а остальные все знаешь, то по смысл уже можно догадаться, о чем идет речь. Тот "британский" английский - литературный, который преподавали в школе, далек от реальности, но не на много.</p><p style="text-align: justify;">Любят они поговорить о ближнем востоке, о проблемах Египта. Видимо им нравится обсуждать не свои проблемы, как свои -  такое ощущение, что это соседний штат.<span id="more-1490"></span></p><p style="text-align: justify;">Интересные ток шоу с хорошими собеседниками, обсуждают различные темы, и самое главное формат, такой не часто встретишь у нас в России. Приятная музыка в перерывах - легкий джаз, классика. Значительно поднимает настроение, и отвлекает от повседневных дел.</p><p style="text-align: justify;">Если что-то идет не интересное, переключаюсь на следующий канал вещания, у WNYC их 4.</p><p style="text-align: justify;">Онлайн трансляцию можно слушать с их сайта <a title="WNYC Radio" href="http://wnyc.org" target="_blank">wnyc.org</a> или выбрать другой формат в "Other Formats" - iTunes, mp3, rtsp, windows.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/f6Mp7CHuO4gJHQlMRllES9g4TX0/0/da"><img src="http://feedads.g.doubleclick.net/~a/f6Mp7CHuO4gJHQlMRllES9g4TX0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/f6Mp7CHuO4gJHQlMRllES9g4TX0/1/da"><img src="http://feedads.g.doubleclick.net/~a/f6Mp7CHuO4gJHQlMRllES9g4TX0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=LAtVmh8ZdaY:cjmLOgfmQds:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=LAtVmh8ZdaY:cjmLOgfmQds:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=LAtVmh8ZdaY:cjmLOgfmQds:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=LAtVmh8ZdaY:cjmLOgfmQds:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=LAtVmh8ZdaY:cjmLOgfmQds:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=LAtVmh8ZdaY:cjmLOgfmQds:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=LAtVmh8ZdaY:cjmLOgfmQds:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=LAtVmh8ZdaY:cjmLOgfmQds:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=LAtVmh8ZdaY:cjmLOgfmQds:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=LAtVmh8ZdaY:cjmLOgfmQds:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=LAtVmh8ZdaY:cjmLOgfmQds:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=LAtVmh8ZdaY:cjmLOgfmQds:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=LAtVmh8ZdaY:cjmLOgfmQds:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=LAtVmh8ZdaY:cjmLOgfmQds:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=LAtVmh8ZdaY:cjmLOgfmQds:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=LAtVmh8ZdaY:cjmLOgfmQds:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=LAtVmh8ZdaY:cjmLOgfmQds:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/LAtVmh8ZdaY" height="1" width="1"/>]]></content:encoded><description>Всегда бывает интересно послушать что-то на иностранном языке, а радио в двойне. Мне нравится слушать WNYC, потому что - это интересные передачи, несколько каналов вещания, приятная музыка, свежие новости. Интересно послушать передачи, долго привыкал к скорости произношения, некоторые фразы были не понятны. Сейчас слушаю без напряжения, если какие то фразы или слова не знаю, помечаю, потом ищу в словаре. [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1490</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1490</feedburner:origLink></item><item><title>Как печатать с двух сторон на одностороннем принтере</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/DBq_Tr2iXRo/</link><category>Заметки</category><category>printing</category><category>печать</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Tue, 20 Sep 2011 11:29:19 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1482</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p>Если принтер выводит страницы по порядку:</p><ol><li>Печатаем только четные (even) страницы в обратном порядке (reverse order).</li><li>Вставим стопку отпечатанных бумаг обратно, под низ стопки вставляем чистый лист (иногда он может пригодиться).</li><li>Печатаем нечетные (odd) страницы в нормальной последовательности.</li></ol><p>Если принтер печатает в обратном порядке (reverse order):</p><ol><li>Печатаем только четные (even) страницы в нормальной последовательности.</li><li>Вставим стопку отпечатанных бумаг обратно.</li><li>Печатаем нечетные (odd) страницы в обратном порядке (reverse order).</li></ol><p>&nbsp;</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/r42iGaVIMFM2MLChQUFd0D4AmyQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/r42iGaVIMFM2MLChQUFd0D4AmyQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/r42iGaVIMFM2MLChQUFd0D4AmyQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/r42iGaVIMFM2MLChQUFd0D4AmyQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=DBq_Tr2iXRo:GKIomnL7dMo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=DBq_Tr2iXRo:GKIomnL7dMo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=DBq_Tr2iXRo:GKIomnL7dMo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=DBq_Tr2iXRo:GKIomnL7dMo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=DBq_Tr2iXRo:GKIomnL7dMo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=DBq_Tr2iXRo:GKIomnL7dMo:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=DBq_Tr2iXRo:GKIomnL7dMo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=DBq_Tr2iXRo:GKIomnL7dMo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=DBq_Tr2iXRo:GKIomnL7dMo:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=DBq_Tr2iXRo:GKIomnL7dMo:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=DBq_Tr2iXRo:GKIomnL7dMo:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=DBq_Tr2iXRo:GKIomnL7dMo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=DBq_Tr2iXRo:GKIomnL7dMo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=DBq_Tr2iXRo:GKIomnL7dMo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=DBq_Tr2iXRo:GKIomnL7dMo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=DBq_Tr2iXRo:GKIomnL7dMo:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=DBq_Tr2iXRo:GKIomnL7dMo:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/DBq_Tr2iXRo" height="1" width="1"/>]]></content:encoded><description>Если принтер выводит страницы по порядку: Печатаем только четные (even) страницы в обратном порядке (reverse order). Вставим стопку отпечатанных бумаг обратно, под низ стопки вставляем чистый лист (иногда он может пригодиться). Печатаем нечетные (odd) страницы в нормальной последовательности. Если принтер печатает в обратном порядке (reverse order): Печатаем только четные (even) страницы в нормальной последовательности. Вставим стопку отпечатанных бумаг обратно. Печатаем нечетные (odd) [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1482</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1482</feedburner:origLink></item><item><title>Подключение HP LaserJet 1020 к ASUS WL-520GU</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/6TStZVXqrEw/</link><category>Администрирование</category><category>asus</category><category>hplj 1020</category><category>wi-fi</category><category>wl500g</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Sat, 17 Sep 2011 06:16:20 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1475</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;"><a href="http://juravskiy.ru/wp-content/uploads/2010/03/ASUSWL520GU.jpg" rel="lightbox" target="_blank"><img class="alignleft size-thumbnail wp-image-918" style="margin-left: 10px; margin-right: 10px;" title="ASUSWL520GU.jpg" src="http://juravskiy.ru/wp-content/uploads/2010/03/ASUSWL520GU-100x100.jpg" alt="ASUSWL520GU 100x100 Подключение HP LaserJet 1020 к ASUS WL 520GU" height="100" width="100" /></a>Я ранее писал о wi-fi роутере от ASUS - <a href="http://juravskiy.ru/?p=913" target="_blank">WL-520GU</a>. На роутере есть USB порт, который&nbsp;открывает&nbsp;безграничные&nbsp;возможности в плане&nbsp;расширения&nbsp;функциональности роутера. В моем случае, я хотел сделать из него еще и принт-сервер на базе принтера HP LaserJet 1020. Стандартная прошивка роутера &nbsp;от ASUS (7.X.X.X) определила принтер, когда я его подключил, и в разделе web интерфейса "Карта сети" начал отображать&nbsp;значок&nbsp;принтера. На ОС компьютера я успешно&nbsp;установил&nbsp;и настроил&nbsp;сетевой&nbsp;принтер - 192.168.1.1, порт 9001, протокол RAW. При попытке распечатать тестовую страницу ничего не произошло - принтер не начал печать,&nbsp;попробовал&nbsp;еще раз - никакой реакции, в системном журнале ошибка: lpd 14 error.</p><p style="text-align: justify;">Начал искать решение, роутер включен всегда, включать большой ПК, чтобы распечатать страницу с ноутбука не выход.<span id="more-1475"></span></p><p>Давно знал о альтернативной прошивке от Олега -&nbsp;<a href="http://oleg.wl500g.info/">http://oleg.wl500g.info</a>&nbsp;(старый сайт), и&nbsp;дальнейшее&nbsp;развитие проекта&nbsp;<a href="http://code.google.com/p/wl500g/">http://code.google.com/p/wl500g/</a>.</p><p style="text-align: justify;">Скачиваем свежую прошивку с google code, кстати там есть прошивки для других версий роутеров -&nbsp;RT-N16, RT-N12, RT-N10, WL-500gP, WL-500W.</p><p>Для WL-520GU это&nbsp;<a href="http://code.google.com/p/wl500g/downloads/detail?name=WL520gu-1.9.2.7-d-r2624.trx&amp;can=2&amp;q=">WL520gu-1.9.2.7-d-r2624.trx</a>. Проект активно развивается, и на&nbsp;момент&nbsp;чтения статьи может быть более свежая версия.</p><p>Полный список прошивок доступен на статнцие&nbsp;<a href="http://code.google.com/p/wl500g/downloads/list">http://code.google.com/p/wl500g/downloads/list</a>.</p><p>Если вкратце рассказать о прошивке, то она основана на ядре linux &nbsp;версии 2.4.37 + набор демонов и&nbsp;сервисов&nbsp;для обеспечения нужной функциональности.</p><h5>Прошивка роутера</h5><ol><li>Заходим в web&nbsp;интерфейс&nbsp;роутера со&nbsp;стандартной&nbsp;прошивок в меню "Администрирование" - " ... обновление &nbsp;..."</li><li>Загружаем&nbsp;файл с прошивкой&nbsp;&nbsp;WL520gu-1.9.2.7-d-r2624.trx</li><li>Ждем около 3 минут. Обновляем станицу.</li></ol><p>Очень&nbsp;приятно&nbsp;удивило - все настройки от&nbsp;предыдущей&nbsp;прошивки сохранились.</p><h5>Настройка</h5><p>Далее нам нужно включить SSH доступ к роутеру:</p><ol><li>Заходим в меню "System Setup" - "Services", там включаем "SSH access" только для локальной сети (LAN only), ниже в&nbsp;группе "Printing services" включаем протоколы RAW и LPR.</li><li>Сохраняем и перегружаем устройство. Ждем 30 секунд.</li></ol><p style="text-align: justify;">Далее я &nbsp;был в полной уверенности, что принтер будет работать, пробую печатать тестовую страницу - в System Log вижу строку:</p><blockquote><p>Sep 17 15:42:26 p9100d[103]: Finished job: 71006 bytes received</p></blockquote><p style="text-align: justify;">Ага, демон печати файл получил, но не какой реакции, как и с прошивкой от Asus.</p><p style="text-align: justify;">Продолжил поиски решения в Интернет. Нашел решение на форуме <a href="http://wl500g.info/">http://wl500g.info</a>.</p><h5>Прошивка принтера</h5><p>Есть набор прошивок для принтеров HP LaserJet&nbsp;<a href="http://oleg.wl500g.info/hplj/">http://oleg.wl500g.info/hplj/</a></p><p style="text-align: justify;">Для этого нам нужно залить на наше устройство как вариант, это подключиться к&nbsp;устройству&nbsp;по SSH.</p><p>И выполнить следующие команды:</p><blockquote><p>cd /tmp<br /> wget http://oleg.wl500g.info/hplj/usb_printerid<br /> wget http://oleg.wl500g.info/hplj/sihp1020.dl<br /> chmod +x usb_printerid<br /> ./usb_printerid /dev/usb/lp0 | grep -q FWVER || cat sihp1020.dl &gt; /dev/usb/lp0</p></blockquote><p style="text-align: justify;" dir="ltr">Если wget ничего не скачал, сайт бывает не доступен, скачиваем так:</p><pre>wget http://juravskiy.ru/wp-content/uploads/usb_printerid
wget http://juravskiy.ru/wp-content/uploads/sihp1020.dl</pre><p style="text-align: justify;" dir="ltr">После перезагрузки роутера конфигурация может сбрасывается, поэтому строчку</p><blockquote><p>/tmp/usb_printerid /dev/usb/lp0 | grep -q FWVER || cat sihp1020.dl &gt; /dev/usb/lp0</p></blockquote><p dir="ltr">желательно добавить в автозагрузку.</p><p style="text-align: justify;" dir="ltr">Если нет интернета, то можно файлы скопировать на флеш карту, вставить ее в usb смонтировать, и скопировать в /tmp</p><p dir="ltr">Принтер зашуршал. Затем&nbsp;успешно&nbsp;распечатал страницу документа. В системном журнале написал:</p><blockquote><p>Sep 17 15:46:27 p9100d[103]: Connection from ::ffff:192.168.1.113 port 50167 accepted<br /> Sep 17 15:46:28 p9100d[103]: Finished job: 1225 bytes received</p></blockquote><p style="text-align: justify;" dir="ltr">Для настройки принтера в Windows можно воспользоватся инструкцией <a href="http://oleg.wl500g.info/printing/">http://oleg.wl500g.info/printing/</a></p><p dir="ltr">приведу ее копию здесь в формате PDF:</p><p dir="ltr"><a class="downloadlink" href="http://juravskiy.ru/wp-content/plugins/download-monitor/download.php?id=13" title=" downloaded 265 times" >Инструкций по настройке принтера в Windows подключенного к Asus WL-520GU  (265)</a></p><p dir="ltr">Также копии файлов со&nbsp;страницы&nbsp;<a href="http://oleg.wl500g.info/hplj/">http://oleg.wl500g.info/hplj/</a>&nbsp;(последнее время не доступна)</p><p dir="ltr">Прошивка для принтера HP LJ 1020:&nbsp;<a href="http://juravskiy.ru/wp-content/uploads/sihp1020.dl" target="_blank">sihp1020.dl</a></p><p dir="ltr">Утилита для прошивки: <a href="http://juravskiy.ru/wp-content/uploads/usb_printerid" target="_blank">usb_printerid</a></p><h5>Решаем вопрос с plug and play</h5><p>В ходе практического использования нашего "принт-сервера", выяснилось, что выключая принтер. Все перестает&nbsp;работать, и приходится по ssh заходить на роутер, и выполнять опять самую&nbsp;последнюю&nbsp;команду. Решение есть, выполняем последовательно команды:</p><pre># making a dir
mkdir /usr/local/sbin

# change to that dir
cd /usr/local/sbin

# copy files from to flash
wget http://juravskiy.ru/wp-content/uploads/usb_printerid
wget http://juravskiy.ru/wp-content/uploads/sihp1020.dl

# make hotplug.sh file
echo "#!/bin/sh" &gt; hotplug.sh
echo "/usr/local/sbin/usb_printerid /dev/usb/lp0 | grep -q FWVER || cat /usr/local/sbin/sihp1020.dl &gt; /dev/usb/lp0" &gt;&gt; hotplug.sh
# this will load firmware every time printer is plugged in, and firmware is not present

# make post-boot script
echo "#!/bin/sh" &gt; post-boot
echo "if [ -w /dev/usb/lp0 ]" &gt;&gt; post-boot
echo "cat /usr/local/sbin/sihp1020.dl&gt;/dev/usb/lp0" &gt;&gt; post-boot
echo "fi" &gt;&gt; post-boot

# place hotplug.sh into hotplug
# this will take care of situation when printer was plugged in before powering router, and activate hotplug
echo "/usr/local/sbin/hotplug.sh" &gt;&gt; /proc/sys/kernel/hotplug

# make pre-boot file
echo "#!/bin/sh" &gt;&gt; pre-boot
echo "# Printer" &gt;&gt; pre-boot
echo "/bin/echo /usr/local/sbin/hotplug.sh &gt;&gt; /proc/sys/kernel/hotplug" &gt;&gt; pre-boot

# now make everything executable
chmod +x /usr/local/sbin/*

# save everything to flash and restart router
flashfs save
flashfs commit
flashfs enable
reboot</pre></sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/4ejLLuPKTNqN9103hDWF-o-WUOw/0/da"><img src="http://feedads.g.doubleclick.net/~a/4ejLLuPKTNqN9103hDWF-o-WUOw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/4ejLLuPKTNqN9103hDWF-o-WUOw/1/da"><img src="http://feedads.g.doubleclick.net/~a/4ejLLuPKTNqN9103hDWF-o-WUOw/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=6TStZVXqrEw:LLRGRinhal8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=6TStZVXqrEw:LLRGRinhal8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=6TStZVXqrEw:LLRGRinhal8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=6TStZVXqrEw:LLRGRinhal8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=6TStZVXqrEw:LLRGRinhal8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=6TStZVXqrEw:LLRGRinhal8:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=6TStZVXqrEw:LLRGRinhal8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=6TStZVXqrEw:LLRGRinhal8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=6TStZVXqrEw:LLRGRinhal8:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=6TStZVXqrEw:LLRGRinhal8:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=6TStZVXqrEw:LLRGRinhal8:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=6TStZVXqrEw:LLRGRinhal8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=6TStZVXqrEw:LLRGRinhal8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=6TStZVXqrEw:LLRGRinhal8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=6TStZVXqrEw:LLRGRinhal8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=6TStZVXqrEw:LLRGRinhal8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=6TStZVXqrEw:LLRGRinhal8:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/6TStZVXqrEw" height="1" width="1"/>]]></content:encoded><description>Я ранее писал о wi-fi роутере от ASUS - WL-520GU. На роутере есть USB порт, который&amp;#160;открывает&amp;#160;безграничные&amp;#160;возможности в плане&amp;#160;расширения&amp;#160;функциональности роутера. В моем случае, я хотел сделать из него еще и принт-сервер на базе принтера HP LaserJet 1020. Стандартная прошивка роутера &amp;#160;от ASUS (7.X.X.X) определила принтер, когда я его подключил, и в разделе web интерфейса "Карта сети" [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1475</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">27</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1475</feedburner:origLink></item><item><title>Луна. За день до затмения</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/-PLiqud2EeY/</link><category>Photo</category><category>moon</category><category>nikon d3100</category><category>луна</category><category>ночная фотография</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Thu, 16 Jun 2011 01:33:37 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1461</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index> <a href="http://juravskiy.ru/wp-content/gallery/moon/moon_belgorod.jpg" title="" class="shutterset_singlepic11" > <img class="ngg-singlepic ngg-center" src="http://juravskiy.ru/wp-content/gallery/cache/11_watermark_320x240_moon_belgorod.jpg" alt="11 watermark 320x240 moon belgorod Луна. За день до затмения" title="moon_belgorod" /> </a><p style="text-align: justify;">Снимал без штатива. Мне кажется довольно красиво получилось.</p><p style="text-align: justify;">Долго настраивал выдержку и диафрагму. На следующий день наблюдал затмение, жаль фотоаппарата не было под рукой.</p><p style="text-align: justify;">Параметры съемки:<span id="more-1461"></span></p><table id="the-list-x" cellspacing="3" cellpadding="3" width="100%"><tbody><tr><td>Aperture</td><td>F 5.6</td></tr><tr><td>Date/Time</td><td>14.06.2011 00:06</td></tr><tr><td>Focal length</td><td>105 mm</td></tr><tr><td>ISO</td><td>800</td></tr><tr><td>Shutter speed</td><td>1 sec</td></tr><tr><td>Camera</td><td>NIKON D3100</td></tr></tbody></table><p style="text-align: justify;">Если интересно посмотреть на оригинал, размерами 4608 x 3072, то можно написать в комментарии :)</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/K2wMTeFu9vZkagf5rzQDvoy1JQY/0/da"><img src="http://feedads.g.doubleclick.net/~a/K2wMTeFu9vZkagf5rzQDvoy1JQY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/K2wMTeFu9vZkagf5rzQDvoy1JQY/1/da"><img src="http://feedads.g.doubleclick.net/~a/K2wMTeFu9vZkagf5rzQDvoy1JQY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=-PLiqud2EeY:DzEPpLidLVc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=-PLiqud2EeY:DzEPpLidLVc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=-PLiqud2EeY:DzEPpLidLVc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=-PLiqud2EeY:DzEPpLidLVc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=-PLiqud2EeY:DzEPpLidLVc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=-PLiqud2EeY:DzEPpLidLVc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=-PLiqud2EeY:DzEPpLidLVc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=-PLiqud2EeY:DzEPpLidLVc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=-PLiqud2EeY:DzEPpLidLVc:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=-PLiqud2EeY:DzEPpLidLVc:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=-PLiqud2EeY:DzEPpLidLVc:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=-PLiqud2EeY:DzEPpLidLVc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=-PLiqud2EeY:DzEPpLidLVc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=-PLiqud2EeY:DzEPpLidLVc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=-PLiqud2EeY:DzEPpLidLVc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=-PLiqud2EeY:DzEPpLidLVc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=-PLiqud2EeY:DzEPpLidLVc:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/-PLiqud2EeY" height="1" width="1"/>]]></content:encoded><description>Снимал без штатива. Мне кажется довольно красиво получилось. Долго настраивал выдержку и диафрагму. На следующий день наблюдал затмение, жаль фотоаппарата не было под рукой. Параметры съемки: Aperture F 5.6 Date/Time 14.06.2011 00:06 Focal length 105 mm ISO 800 Shutter speed 1 sec Camera NIKON D3100 Если интересно посмотреть на оригинал, размерами 4608 x 3072, то можно написать в комментарии [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1461</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1461</feedburner:origLink></item><item><title>Воскресный шоппинг в Харькове</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/5iYOOwRHJJg/</link><category>Заметки</category><category>Новости</category><category>Барабашово</category><category>Белгородский City Mall</category><category>Нехотеевка - Гоптивка</category><category>таможня</category><category>Харьков</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Tue, 31 May 2011 11:00:40 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1438</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;">У жителей Белгорода и Белгородской области есть традиция, по мере необходимости ездить за покупками в Харьков. На самом деле "цель оправдывает средства", так как местное правительство ни как не регулирует образование цен на товары в регионе. Спекулянты привозят товары с того же Харькова, и продают их по цене в два, а то и в три раза выше. Ну и зачем мне это покупать, если я могу поехать, и купить все в Харькове. Расскажу, о том какие изменения произошли в порядке пересечения границы через пропускной пункт Нехотеевка - Гоптивка, а также о поездке вообщем. <span id="more-1438"></span></p><h6 style="text-align: justify;">Почему многие предпочитают делать покупки в Харькове</h6><p><img class="alignleft size-thumbnail wp-image-1439" style="margin: 10px;" title="Уличный фонарь" src="http://juravskiy.ru/wp-content/uploads/2011/05/street_light_lamp-100x100.jpg" alt="street light lamp 100x100 Воскресный шоппинг в Харькове" width="100" height="100" /></p><p style="text-align: justify;">Например мне нужны уличные фонари на стенные, подвесные и на низкой стойке. Планируют разместить на гараже 3 шутки, на крылечках по одному на каждом - 2 штуки, по участку возле дорожек, штук 5 примерно. Не важно фонари вы собираетесь покупать или инструмент, одежду или детские игрушки, посуду или автомобильные запчасти. Практика показывает, что все дешевле, возможно кроме электроники. В итоге получается следующая экономия бюджета на фонарях:</p><table><tbody><tr><td>Товар</td><td>Цена за штуку в Белгороде</td><td>Цена за штуку в Харькове</td><td>Необходимое кол-во.</td><td>Экономия</td></tr><tr><td>Фонарь подвесной</td><td>900 р.</td><td>200 р.</td><td>5</td><td>3500 р.</td></tr><tr><td>Фонарь</td><td>1500 р.</td><td>500 р.</td><td>5</td><td>5000 р.</td></tr><tr><td colspan="4" align="right">Общая экономия:</td><td>8500 р.</td></tr></tbody></table><p style="text-align: justify;">Можно поехать на маршрутке или автобусе, пусть я вспотею, пусть намучаюсь, пусть потрачу 800 р. на билет. Или съезжу на машине, помучают меня на границе 3 часа в очереди в одну сторону и 3 - 4 часа в очереди в другую, потрачу на бензин максимум 200 рублей, а еще страховка на автомобиль на 15 дней - 300 - 400 рублей. Но даже за одними фонарями съездит будет дешевле в 2 - 4 раза, чем покупать их тут у местных спекулянтов-предпринимателей.</p><h6 style="text-align: justify;">О изменения в порядке пересечения границы</h6><p style="text-align: justify;">В эту поездку меня приятно удивило, то что если едешь с загран. паспортом нового образца, то <em><strong>иммиграционную карточку не нужно заполнять</strong></em>. С загран. паспортом время паспортного контроля одного человека на русской границе уменьшилось с 2 минут, до 30 секунд - у них стоят считыватели, которые делают жизнь проще для всех - для меня, для тебя, если ты стоишь в очереди за мной,  и для пограничника который вбивает в ПК данные о тебе. Так что, люди ездите с загран. паспортами - очередей будет меньше. Видимо Украина не была готова к такому улучшению со стороны России, очереди у них был на паспортном контроле как утром, так и после обеда, когда возвращались. И это еще "купальный" сезон  не открылся в Крыму. У них работают все кабинки + поставили газельку как передвижной пункт паспортного контроля, все равно это не спасает.</p><p style="text-align: justify;">Ввели понятие декларации, ее заполнять обязательно для каждого человека на украинской таможне, предлагают услугу быстрого прохождения без заполнения, видимо многие ей пользуются, пока мы заполняли проехало машин 10. Но у нас деньги не на деревьях в саду растут, заполнили. Спросил - " а что это у вас за новшества? всю жизнь ездили, никогда такого не заполняли!?". Молодой таможенник улыбнулся, и говорит - " да у нас всегда такое было". Заполнили четыре декларации - ездили с друзьями, на декларации посмотрел таможенник, проанализировал указанную сумму денег, отсутствие галочек напротив пунктов "Оружие", "Психотропные вещества" и т.п., скомкал их и бросил в урну. Делаем вывод - еще одна коррупционная хрень для отмывания денег у лохов, которые хотят быстрее пройти таможенный контроль.</p><h6 style="text-align: justify;">О поездке вообщем</h6><p style="text-align: justify;">Вообщем усталость чувствуется. Встали в 2:30 ночи, доехали к 3:00, мы были не одни такие.  Удивительно не было очереди, подъехали сразу к первому шлагбауму. Главное быть приветливым, и быть готовым улыбнутся :), они это любят. Кто нервничает, "быкует" и хамит, тех обычно досматривают с особым пристрастием. На обратном пути такой был сзади нас, нервный, потный и крикливый.</p><p style="text-align: justify;">В 6:00 уже были на рынке Барабашово, стоянка 10 гривень, в обменнике дали нам крупными купюрами. Приехали первыми, мужчина с надписью "Парковка" на спине не был готов в 5 утра по украинскому времени  разменять 50 гривень.</p><p style="text-align: justify;">В воскресенье рынок закрывается раньше чем обычно. В 15.00 уже начали закрываться, а некоторые так и не  открылись.</p><p style="text-align: justify;">Ездили в ТЦ "Караван" - инвесторы Белгородского сити мола "нервно курят в сторонке". Ну а остальные ТЦ в г. Белгороде и в сравнение не идут. Рассказывать не будут, кто посетит, тот все поймет. Уровень цен конечно выше, чем на Барабашово, но и качество соответствует. Ассортимент высокий, в Белгороде один раз товар завезли и продают его несколько лет. Купили все, что хотели, и даже с "перламутровыми пуговицами".</p><h6 style="text-align: justify;">Про дорожное движение</h6><p style="text-align: justify;">Кончено ехать по Харькову в 5 утра и в 15.00 разница есть, но кто-то  мне говорил из знакомых, что ездят на красный .... Все по правилам, есть конечно наглые, а как же не без них, тут нужно пользоваться правилом 3Д (дай дорогу дураку). Встретили мы одного на Toyota Camry, с мигалкой на заднем стекле. Видимо до незаконно установленных спец. сигналов, руки у правительства Украины еще не дошли.</p><p style="text-align: justify;">Не смотря на очередь при пересечении границы, поездка принесла положительные эмоции :)</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/5rfaukcN0KrFCkB3MeCXe67TZ4M/0/da"><img src="http://feedads.g.doubleclick.net/~a/5rfaukcN0KrFCkB3MeCXe67TZ4M/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/5rfaukcN0KrFCkB3MeCXe67TZ4M/1/da"><img src="http://feedads.g.doubleclick.net/~a/5rfaukcN0KrFCkB3MeCXe67TZ4M/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5iYOOwRHJJg:qtvNoOZmfI8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5iYOOwRHJJg:qtvNoOZmfI8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=5iYOOwRHJJg:qtvNoOZmfI8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5iYOOwRHJJg:qtvNoOZmfI8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5iYOOwRHJJg:qtvNoOZmfI8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5iYOOwRHJJg:qtvNoOZmfI8:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5iYOOwRHJJg:qtvNoOZmfI8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=5iYOOwRHJJg:qtvNoOZmfI8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5iYOOwRHJJg:qtvNoOZmfI8:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5iYOOwRHJJg:qtvNoOZmfI8:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=5iYOOwRHJJg:qtvNoOZmfI8:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5iYOOwRHJJg:qtvNoOZmfI8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=5iYOOwRHJJg:qtvNoOZmfI8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5iYOOwRHJJg:qtvNoOZmfI8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=5iYOOwRHJJg:qtvNoOZmfI8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5iYOOwRHJJg:qtvNoOZmfI8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5iYOOwRHJJg:qtvNoOZmfI8:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/5iYOOwRHJJg" height="1" width="1"/>]]></content:encoded><description>У жителей Белгорода и Белгородской области есть традиция, по мере необходимости ездить за покупками в Харьков. На самом деле "цель оправдывает средства", так как местное правительство ни как не регулирует образование цен на товары в регионе. Спекулянты привозят товары с того же Харькова, и продают их по цене в два, а то и в три [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1438</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">6</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1438</feedburner:origLink></item><item><title>Оптимизация Java приложений</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/oD9rTzfe9JQ/</link><category>J2ME</category><category>Java</category><category>java perfomance</category><category>obfuscator</category><category>optimization</category><category>proguard</category><category>оптимизация java</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Wed, 25 May 2011 13:49:07 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1369</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;"><img class="alignleft size-thumbnail wp-image-272" style="margin-left: 10px; margin-right: 10px;" title="Java" src="http://juravskiy.ru/wp-content/uploads/2009/05/java-logo-red-ru-150x150.jpg" alt="java logo red ru 150x150 Оптимизация Java приложений" width="100" height="100" />Когда идет разработка приложения критичного к памяти (и)или размеру байт кода, к скорости выполнения, то начинаешь задумываться о вещах, о которых не думаешь, когда разрабатываешь J2EE приложения, работающие на серверах с большим количеством доступной оперативной памяти, пространства на жестком диске и процессорного времени. Здесь я сделаю попытку собрать в одном месте, советы и рекомендации по оптимизации, оптимизации Java и J2ME приложений. <span id="more-1369"></span></p><h5 style="text-align: justify;">Виды оптимизации</h5><p style="text-align: justify;">Оптимизировать приложение можно с разных сторон, выделим основные виды оптимизации:</p><ul><li>по скорости выполнения байт кода;</li><li>по использованию ресурсов системы;</li><li>по размеру байт кода и файлов приложения;</li><li>алгоритмическая оптимизация.</li></ul><p style="text-align: justify;">В некоторых местах виды оптимизации могут пресекаться, и для достижения максимально эффекта необходимо соблюсти принцип "золотой середины", особенно это касается скорости выполнения и размера байт кода.</p><h5>Инструменты оптимизации</h5><p style="text-align: justify;">Есть много утилит и оптимизаторов, отмечу тот, который знаком мне, это <a rel="noindex nofollow" href="http://proguard.sourceforge.net/" target="_blank">Proguard</a> - обфускатор, оптимизатор и еще много чего умеет. Обычно после компиляции, делают оптимизацию и обфускацию, эта утилита может это делать в 12 проходов, при этом на каждом шаге что либо оптимизируя и обрезая мертвый или лишний код. Нельзя сказать, что приложение или библиотека на выходе получается полностью оптимизированным, есть некоторые конструкции кода, которые можно оптимизировать, но она не может обработать их из-за того, как они написаны. Иногда, что-то приходиться переписать в таком случае, чтобы это поддалось оптимизации - расставить модификаторы final например.</p><h4 style="text-align: justify;"><span style="color: #000000;">Общие советы по оптимизации</span></h4><p style="text-align: justify;">Не открою некоторым Америку, если перечислю следующие советы:</p><h6 style="text-align: justify;"><em>Не оптимизируйте преждевременно</em></h6><p style="text-align: justify;">Пишите код без мыслей о том, что в дальнейшем вы будете его оптимизировать, сконцентрируйтесь на том, чтобы написать код чистым, правильным и стабильным. Если он получился большой и (или) медленный, только тогда вы можете принять решение об оптимизации.</p><h6 style="text-align: justify;"><strong>Используйте профайлер</strong></h6><p style="text-align: justify;">В Sun JDK идет два профайлера, VisualVM ($JDK_HOME/bin/jvisualvm) и jsonsole ($JDK_HOME/bin/jconsole или $JDK_HOME/lib/jconsole.jar). Оба подходят для профилирвоания приложения на локальной машине. Для профилирования на удаленной машине можно использовать эти утилиты по JMX, о настройке удаленного профилирования можно почитать в Oracle wiki <a title="How to use JConsole, JVisualVM or VisualVM with Oracle Application Server" href="http://wiki.oracle.com/page/How+to+use+JConsole,+JVisualVM+or+VisualVM+with+Oracle+Application+Server" target="_blank">How to use JConsole, JVisualVM or VisualVM with Oracle Application Server</a>.</p><h6 style="text-align: justify;"><em>Запускайте приложение до и после оптимизации</em></h6><p style="text-align: justify;">Сравнивайте результаты до и после оптимизации, размеры, скорости выполнения benchmark тестов, и т.д. Чтобы быть в курсе, к чему приводят действия оптимизации. Можно выиграть значительно в размере, но потерять катастрофически в производительности.</p><h6 style="text-align: justify;"><em>Используйте правильные алгоритмы и правильные структуры данных</em></h6><p style="text-align: justify;">Не используйте сортировку пузырьком O(<em>n<sup>2</sup></em>) на массиве в тысячу элементов, если можно использовать алгоритм быстрой сортировки (quick sort) O(<em>n log n</em>). Соответственно не храните тысячу элементов массиве, в котором необходимо будет искать элементы O(<em>n</em>), лучше использовать бинарное дерево O(<em>log n</em>) или java.util.HashMap для однопоточной работы со структурой данных, или java.util.HashTable для многопоточной работы. Также нужно иметь представление о внутренней реализации коллекций, чтобы понимать когда применить ArrayList, а когда LinkedList.</p><h6 style="text-align: justify;"><em>Не пишите магические символы</em></h6><p style="text-align: justify;">Пишет читабельный человеком код, а не читабельный, но заставляющий компилятор или оптимизатор делать свою работу лучше.</p><h6 style="text-align: justify;"><em>Дизассемблируйте</em></h6><p style="text-align: justify;">Используйте утилиту javap в Sun JDK. О ее использовании написано ниже.</p><h6 style="text-align: justify;"><em>Используйте обфускатор, оптимизатор, шринкер</em></h6><p style="text-align: justify;">Например такой как proguard, есть аналоги.</p><h4 style="text-align: justify;"><span style="color: #000000;">Оптимизация по размеру</span></h4><p style="text-align: justify;">Этот вид оптимизации очень важен для Java апплетов и J2ME приложений, когда файлы приложения должны иметь как можно меньше размер. В случае с апплетами, это значение очень критично для времени затраченное пользователем на скачивание апплета. Во втором случае, мобильные устройства, терминалы и другие устройства с поддержкой J2ME спецификаций не всегда обладают достаточными объемами Flash памяти, позволяя хранить файлы больших размеров. За частую прибегая к этому виду оптимизации приходится жертвовать производительностью приложения, оценивать вам на сколько важно в том или ином случае размер или скорость выполнения.</p><p style="text-align: justify;">Как сравнить результаты до и после? А их обязательно нужно сравнивать. Есть два способа.</p><p style="text-align: justify;">1. Самый простой сравнить размер, если он стремится к нулю, после очередной проделанной операции по уменьшению размера, то все идет возможно хорошо.</p><p style="text-align: justify;">2. Дизассемблировать классы, можно используя утилиту javap, которая находиться в $JDK_HOME/bin/, например так:</p><pre class="brush:shell;gutter:false;">javap -c MyClass.class</pre><p style="text-align: justify;">Результатом ее работы станет набор кодов операций - оп. код (opcode).</p><p style="text-align: justify;">Например такой код:</p><pre class="brush:java">void createBuffer() {
  int buffer[];
  int bufsz = 100;
  int value = 12;
  buffer = new int[bufsz];
  buffer[10] = value;
  value = buffer[11];
}</pre><p style="text-align: justify;">Будет выглядеть так:</p><pre class="brush:plain;gutter:false;">0 bipush 100
2 istore_2
3 bipush 12
5 istore_3
6 iload_2
7 newarray int
9 astore_1
10 aload_1
11 bipush 10
13 iload_3
14 iastore
15 aload_1
16 bipush 11
18 iaload
19 istore_3
20 return</pre><p>Подробнее о компиляции под JVM можно почитать в <a title="JVM spec. Откроется в новом окне." href="http://java.sun.com/docs/books/jvms/first_edition/html/Compiling.doc.html" target="_blank">спецификации виртуальной Java машины, 7 раздел</a></p><p>Альтернатива дизассемблированию - декомпиляция, когда мы получаем исходный код программы. С этой задачей успешно справляется утилита <a rel="nofollow noindex" href="www.varaneckas.com/jad" target="_blank">Jad  NT</a>.</p><h6 style="text-align: justify;"><em>Компонуйте приложение в JAR файл</em></h6><p style="text-align: justify;">Для того чтобы избежать накладных расходов на загрузку отдельных классов виртуальной машиной.</p><p style="text-align: justify;">Можно использовать утилиту jar в $JDK_HOME/bin, например так:</p><pre class="brush:shell;gutter:false;">jar cvf myapp.jar -C src/ .</pre><p>Также это умеют делать среды разработки и такие системы управления проектами как Ant, Ivy, Maven или Gradle.</p><h6><em>Не изобретайте уже существующее API</em></h6><p style="text-align: justify;">Используйте или наследуйтесь от классов Java API, расширяя их функциональные возможности для своих потребностей. Не изобретайте велосипед.</p><p style="text-align: justify;">Простой пример. Программист не знал о существовании java.lang.Math и создал класс под названием MathUtil и написал функцию возведения в степень N:</p><pre class="brush:java;">public static int pow(int value, int n) {
    for(int i = 0; i &lt; n; i++) {
        value *= value;
    }
 return value;
}</pre><p style="text-align: justify;">Лишний код, который можно заменить функцией java.lang.Math.pow(double value, double n), причем она работает не только с целыми числами, но и double, и работает гораздо быстрее.</p><h6><em>Используйте наследование</em></h6><p>Используйте наследование в своем коде, чем больше методов вы сможете наследовать, тем меньше вам придется писать кода.</p><p><a name="interface_and_abstract_class_example"></a><br /> Приведу пример, есть интерфейс:</p><pre class="brush:java">interface ObjectTranslator&lt;Domain , Dto implemenets java.io.Serializable&gt; {
    List&lt;Dto&gt; translate(List&lt;Domain&gt; ds);
    Dto translate (Domain d);
}</pre><p>Есть два класса, первый транслирует объекты User в UserDto:</p><pre class="brush:java">class UserDataObjectTransaltor implements OjectTranslator&lt;User, UserDto&gt; {
 public List &lt;UserDto&gt; translate(List&lt;User&gt; ds) {
     List&lt;UserDto&gt; dtos = new ArrayList&lt;UserDto&gt;(ds.size());
     for(User o : ds) dtos.add(transalte(o));
     return dtos;
 }
 public UserDto translate(User d) {
     UserDto dto = new UserDto();
     dto.setId(d.getId());
     dto.setName(d.getFirstName() + " " + d.getLastName());
     return dto;
 }
}</pre><p>второй транслирует Car в CarDto:</p><pre class="brush:java">class CarDataObjectTransaltor implements OjectTranslator&lt;Car, CarDto&gt; {
 public List &lt;CarDto&gt; translate(List&lt;Car&gt; ds) {
     List&lt;CarDto&gt; dtos = new ArrayList&lt;CarDto&gt;(ds.size());
     for(Car o : ds) dtos.add(transalte(o));
     return dtos;
 }
 public CarDto translate(Car d) {
     CarDto dto = new CarDto();
     dto.setId(d.getId());
     dto.setCopmanyName(d.getCompanyName());
     dto.setYear(d.getYear());
     return dto;
 }
}</pre><p style="text-align: justify;">Видно, что в  реализациях метод  translate(List&lt;Domain&gt; ds) одинаковый, и порождает дублирование кода с каждым новым классом - транслятором. Применим шаблон проектирования <a title="Interface and Abstract Class (Интерфейс и абстрактный класс). Откроется в новом окне." href="http://juravskiy.ru/?p=813" target="_blank">Interface and Abstract Class (Интерфейс и абстрактный класс)</a>. Создадим абстрактный класс, в который вынесем реализацию метода translate(List&lt;Domain&gt; ds) - общую для всех классов - трансляторов. Если в каком нибудь классе необходимо будет изменить логику данного метода, то мы просто переопределим его.</p><pre class="brush:java">abstract class AbstractObjectTranslator&lt;Domain,
                       Dto implements java.io.Serializable&gt;
                            implements ObjectTranslator&lt;Domain, Dto&gt; {
    List&lt;Dto&gt; translate(List&lt;Domain&gt; ds)
}</pre><p style="text-align: justify;">Изменяем наши классы, убирая метод, и заменяя определение того, что мы реализуем интерфейс на наследование от абстрактного класса:</p><pre class="brush:java">class UserDataObjectTransaltor
               extends AbstractObjectTranslator&lt;User, UserDto&gt; {
 public UserDto translate(User d) {
     UserDto dto = new UserDto();
     dto.setId(d.getId());
     dto.setName(d.getFirstName() + " " + d.getLastName());
     return dto;
 }
}</pre><p style="text-align: justify;">по аналогии, тоже делаем с другими классами - трансляторами.</p><p style="text-align: justify;">Кода меньше, применили шаблон. Осталось написать javadoc комментарии на интерфейс и абстрактный класс, мол " наследуйся от меня, если хочешь транслировать объекты".</p><h6><em>При компиляции используйте оптимизацию компилятором</em></h6><p style="text-align: justify;">Используйте javac -O, для того чтобы компилятор оптимизировал например работу со встраиваемыми функциями, и выполнил другую работу по оптимизации - зависит от компилятора.</p><h6><em>Выделяйте общий код в метод</em></h6><p style="text-align: justify;">Одинаковые блоки кода в разных классах, можно выделять в собственные методы. Но в случае с оптимизацией по скорости, предпочтительнее этого не делать - тут нужно оценить ситуацию исходя из того при каких условиях и как часто выполняется данных код в приложении, и на сколько уменьшится размер в результате выделения в отдельный метод.</p><h6 style="text-align: justify;"><em>Не инициализируйте большие массивы статически</em></h6><p style="text-align: justify;">Да такие массивы действительно занимают большое количество байт кода, например класс подсчета контрольной суммы. Если есть возможность, заменить статическую инициализацию на формирование массива во время выполнения приложения. Уменьшая размер байт кода, приходится жертвовать временем выполнения. Если нет возможности заменить статическую инициализацию на динамическую, то можно воспользоваться следующей безумной идеей - хранить данные элементов массива в одной строке, а в при выполнении разобрать строку и инициализировать массив.</p><h6 style="text-align: justify;"><em>Date занимает много байт кода</em></h6><p style="text-align: justify;">Date объект создает удивительно много байт кода, учитывая тот минимальный функционал, который он предоставляет. Если вы храните объекты Date, то будет более оптимально хранить данные в long, или даже int если миллисекунды не важны, а там где необходимо выполнить операцию с датами заново создать объект Date.</p><h6 style="text-align: justify;"><em>Используйте короткие названия</em></h6><p style="text-align: justify;">Имена public объектов класса, таких как методы и свойства, желательно делать короткими, это сохранит дополнительное место. Также можно использовать обфускаторы, шринкеры (shrinker) если это допустимо, они изменяю имена на более короткие - 1,2 - 3 буквы. Если вы используете такой обфускатор, то он обработает все файлы, кроме того, который содержит точку входа в приложение - main метод, или класс указанный в MANIFEST.MF. Желательно, чтобы имя пакета (package name), которое является частью имени класса было как можно короче. Например org.mysite.projects.fooapp.MainClass стоит заменить на fooapp.MainClass.</p><h6 style="text-align: justify;"><em>Размещайте static final константы в интерфейсе</em></h6><p style="text-align: justify;">Компилятор для файла с ключевым словом class генерирует больше byte кода, чем для файла с ключевым словом interface. Константы с модификаторами statiс final определенные в файле интерфейса будут занимать меньше байт кода. Класс может реализовывать неограниченное количество интерфейсов - будет более читабельно и понятно, какой интерфейс констант использует данный класс.</p><p style="text-align: justify;">Например, есть класс констант:</p><pre class="brush:java">class Const {
    public static final int A = 0;
    public static final int B = 1;
    public static final int C = 2;
}</pre><p style="text-align: justify;">Есть классы, которые используют эти константы, например такой класс:</p><pre class="brush:java">class IAmUsingConstatnts {
 public boolean isA(int value) {
     return value == Const.A;
 }
}</pre><p style="text-align: justify;">Изменяем наш класс констант на интерфейс констант:</p><pre class="brush:java">interface Const {
    public static final int A = 0;
    public static final int B = 1;
    public static final int C = 2;
}</pre><p style="text-align: justify;">Можно изменить наши классы, которые используют константы, например так:</p><pre class="brush:java">class IAmUsingConstatnts implements Const {
 public boolean isA(int value) {
     return value == A;
 }
}</pre><p style="text-align: justify;">Если вы скомпилируете первый вариант без изменений, соберете все в jar файл, затем скомпилируете изменения, и соберете второй jar файл, а затем сравните их размер в байтах, у второй версии будет размер меньше.</p><h6 style="text-align: justify;"><em>Используйте static final boolean для того, что в стабильной версии приложения не нужно</em></h6><p style="text-align: justify;">Например вы используете логирование везде по коду:</p><pre class="brush:java">public static final boolean LOG = true;

 ... some code

if (LOG) log.debug("some debug info");

 ... some code

if (LOG) log.info("some info");

 ... some code

try {
     // ... some operations
} catch(Exception e) {
    log.error(e);
}</pre><p>При компиляции с LOG = true компилятор скомпилирует весь код как представлено выше. Если установить LOG = false  и скомпилировать приложение, то байт кода будет меньше, и он будет соответствовать  следующему коду:</p><pre class="brush:java">public static final boolean LOG = false;

try {
      ... some operations
} catch(Exception e) {
    log.error(e);
}</pre><p>Обычно отключат логирование в стабильной версии приложения, оставляя только вывод в лог ошибок.</p><h6 style="text-align: justify;"><em>Избегайте анонимных или вложенных классов и реализаций</em></h6><p style="text-align: justify;">Компилятор на каждый анонимный класс или реализацию интерфейса создает файл, если открыть менеджером архивов jar файл или посмотреть результаты компиляции в директории сборки, то можно увидеть файлы с именами, содержащие знак $, например: package.name.ParentClass$AnonymClass1. Каждый class файл, даже без инструкций, в jar занимает примерно 200 байт. Если бой идет за килобайты, то стоит пересмотреть код.</p><p style="text-align: justify;">Например есть следующий код, который создает анонимный класс, наследующий java.lang.Thread:</p><pre class="brush:java">class A {
 public void someJob() {
     new Thread("someJobThread") {
         public void run() {
              ... doing some job in other thread
         }
     }.start();
 }
}</pre><p style="text-align: justify;">В зависимости от решаемой задачи классом A, более оптимальнее будет сделать так:</p><pre class="brush:java">class A implements Runable {

 public void run() {
      ... doing some job in other thread
 }

 public void someJob() {
     new Thread(this, "someJobThread").start();
 }
}</pre><h6><em>Генерируйте исключительные ситуации, там где действительно нужны</em></h6><p>Операция throw порождает большое количество байт кода. Лучшее ее использовать разумно.</p><h4><span style="color: #000000;">Оптимизация по скорости</span></h4><h6 style="text-align: justify;"><em>Использование  java.lang.StringBuffer вместо оператора +</em></h6><p style="text-align: justify;">Особенно это эффективно когда конкатенация строк осуществляется в циклах. Обычно использование StringBuffer или StringBuilder увеличивает объем байт кода на несколько десятков байт.</p><p style="text-align: justify;">О конкатенации я писал ранее в статье под названием <a title="Оптимизация кода: Конкатенация строк в Java" href="http://juravskiy.ru/?p=445" target="_blank">Оптимизация кода: Конкатенация строк в Java</a> . Там я сравнивал возможные варианты конкатенации строк, и на сколько быстро  они работают в циклах с большим количеством итераций.</p><h6 style="text-align: justify;"><em>Использование inline (встраиваемых) методов</em></h6><p style="text-align: justify;">Метод будет встраиваемым, если он имеет один из следующих модификаторов final, static или private. Если ваш код тратит много времени на вызовы других методов, сделайте их final. Оптимально делать inline методами, методы в которых 1, максиму 2 операции, иначе значительный возможен рост байт кода. За счет встраиваемых методов стек вызовов становится короче, и виртуальной машине становиться немножко легче жить.</p><p style="text-align: justify;">Например возьмем класс, из совета о использовании констант в интерфейсах и модифицируем его метод isA:</p><pre class="brush:java">class IAmUsingConstatnts implements Const {
 public final boolean isA(int value) {
     return value == A;
 }
}</pre><p style="text-align: justify;">Также к этому методу вместо модификатора final можно применить модификатор static, так как код, который содержится в нем не зависит от экземпляра объекта.</p><h6 style="text-align: justify;"><em>Не используйте глубокое наследование</em></h6><p style="text-align: justify;">Чем больше дерево наследования, тем труднее работать виртуальной машине, это важно для J2ME.</p><h6 style="text-align: justify;"><em>synchronized не всегда быстрая операция</em></h6><p style="text-align: justify;">Это конечно не относиться к потоку, который ждет освобождения другим потоком synchronized метода или блока. Но в любом случае виртуальная машина, делает дополнительные операции перед выполнением код в таких местах. Если обращение к synchronized методу будет в цикле, то цикл будет быстрее выполнятся если, метод будет не synchronized. Создавая многопоточные алгоритмы, и работая с потоками нужно не забывать об этом.</p><h6 style="text-align: justify;"><em>Выполнение на synchronized методе происходит быстрее чем на </em><em>synchronized блоке</em></h6><p style="text-align: justify;">Так же, можно сказать и про байт код, для synchronized метода его меньше. Результаты декомпиляции утилитой javap двух вариантов кода - метод и блок:</p><table width="100%"><tbody><tr><td>synchronized void method() { }</td><td>void method() {<br /> synchronized (this) { }<br /> }</td></tr><tr><td>0:   return</td><td>0:   aload_0<br /> 1:   dup<br /> 2:   astore_1<br /> 3:   monitorenter<br /> 4:   aload_1<br /> 5:   monitorexit<br /> 6:   goto    14<br /> 9:   astore_2<br /> 10:  aload_1<br /> 11:  monitorexit<br /> 12:  aload_2<br /> 13:  athrow<br /> 14:  return</td></tr></tbody></table><h6><em>При компиляции используйте оптимизацию компилятором javac -O</em></h6><h6><em>Используйте буферизацию в I/O</em></h6><p style="text-align: justify;">java.io.BufferedInputStream и java.io.BufferedOutputStream работает быстрее, чем обычные потоки I/O. Также можно отметить, что Java NIO это классы из java.nio.* работают быстрее, чем их предшественники из java.io, за счет асинхронности и меньшего количества синхронизации потоков.</p><h6 style="text-align: justify;"><em>Переопределяйте методы Java API</em></h6><p style="text-align: justify;">Если при использовании методов и классов из JDK ваше приложение испытывает проблемы в производительности, попробуйте создать класс наследник и переопределить метод, написав более эффективную версию кода.</p><h6 style="text-align: justify;"><em>Избегайте затратных конструкций кода</em></h6><p style="text-align: justify;">К таким конструкциям можно отнести оператор instanceof, если код критичен к скорости выполнения, желательного его не использовать. Как альтернатива, заменить его на оператор switch, а в классах для которых необходимо делать проверку типа добавить метод getType, который будет возвращать int константу.</p><p style="text-align: justify;">Также к таким конструкциям относятся N мерные массивы, если есть необходимость, их заменяют на одномерные, а доступ к элементу массива производят по формуле, вычисляющей индекс.</p><h6 style="text-align: justify;"><em>Используйте двойную буферизацию (double buffering)</em></h6><p style="text-align: justify;">В J2ME приложения с графическим интерфейсом и Java апплетах, это позволит избавится от мигания графики при перерисовке графики. Рисуйте в закадровый буфер, а затем копируйте содержимое буфера в дисплей. При непосредственном рисовании в дисплей будет происходить мерцание изображения.</p><h4><span style="color: #000000;">Оптимизация по использованию ресурсов</span></h4><h6><em>Не используйте временные переменные</em></h6><p>Зачастую использование временной переменной обусловлено алгоритмом, но также бывают случай когда, использование временной переменной является избыточным. Не желательно использовать временные переменные в циклах.</p><h6 style="text-align: justify;"><em>Определяйте оптимальные размеры буферов</em></h6><p style="text-align: justify;">При использовании таких классов как java.util.ArrayList, java.langStringBuffer,  java.io.ByteArrayOutputStream и других, в основе алгоритма работы которых стоит буферизация или динамическая работа с памятью, желательно указывать размер данных с которым будет происходить работа. Так как подобные классы обычно производят копирование памяти, если необходимо работать с данными большей длины, чем определенно по умолчанию, или было указанно программистом при создании объекта.</p><p style="text-align: justify;">Приведу пример на основе java.util.ArrayList. У данной реализации списка на массиве, есть свойство capacity, его можно установить при инициализации объекта, предав в конструктор int значение. А вот по умолчанию, размер внутреннего массива задается значением 10 - это можно посмотреть набрав в поисковике запрос  java.util.ArrayList source или другое имя класса, в первых строчках результатов будут страницы с исходными кодами.</p><p style="text-align: justify;">Так вот, если будет выполнятся следующий код:</p><pre class="brush:java">List&lt;String&gt; els = new ArrayList&lt;String&gt;();
for(int i = 0; i &lt; 20; i++) {
  els.add(String.valueOf(i));
}</pre><p style="text-align: justify;">то после первых 10 итерации, еще 10 раз будет произведена инициализация массива размером i + 1  и копирование старого массива в новый - 10 последних итерации будут выполнятся дольше, и займут больше памяти, чем первые 10.</p><p style="text-align: justify;">В данном случае, список лучше инициализировать не конструктором по умолчанию, а конструктор с параметром int и указать размер внутреннего массива списка:</p><pre class="brush:java">List&lt;String&gt; els = new ArrayList&lt;String&gt;(20);
for(int i = 0; i &lt; 20; i++) {
  els.add(String.valueOf(i));
}</pre><h6 style="text-align: justify;"><em>Работайте с объектами, а не с их копиями</em></h6><p style="text-align: justify;">Желательно использовать методы работающие по такому принципу, и писать такие же.</p><h6 style="text-align: justify;"><em>Повторно используйте объекты</em></h6><p style="text-align: justify;">Это уменьшит затраты на память, а также затраты виртуальной машины на создание новых объектов.</p><h5 style="text-align: justify;">Обновления информации о оптимизации</h5><p style="text-align: justify;">По мере узнавания  мной новых способов оптимизации java приложений, буду обновлять содержимое страницы.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/T0r8WQpLC2nDtejIGl4orz8yusI/0/da"><img src="http://feedads.g.doubleclick.net/~a/T0r8WQpLC2nDtejIGl4orz8yusI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/T0r8WQpLC2nDtejIGl4orz8yusI/1/da"><img src="http://feedads.g.doubleclick.net/~a/T0r8WQpLC2nDtejIGl4orz8yusI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oD9rTzfe9JQ:FULUYqTYREE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oD9rTzfe9JQ:FULUYqTYREE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=oD9rTzfe9JQ:FULUYqTYREE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oD9rTzfe9JQ:FULUYqTYREE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oD9rTzfe9JQ:FULUYqTYREE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oD9rTzfe9JQ:FULUYqTYREE:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oD9rTzfe9JQ:FULUYqTYREE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=oD9rTzfe9JQ:FULUYqTYREE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oD9rTzfe9JQ:FULUYqTYREE:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oD9rTzfe9JQ:FULUYqTYREE:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=oD9rTzfe9JQ:FULUYqTYREE:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oD9rTzfe9JQ:FULUYqTYREE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=oD9rTzfe9JQ:FULUYqTYREE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oD9rTzfe9JQ:FULUYqTYREE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=oD9rTzfe9JQ:FULUYqTYREE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oD9rTzfe9JQ:FULUYqTYREE:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oD9rTzfe9JQ:FULUYqTYREE:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/oD9rTzfe9JQ" height="1" width="1"/>]]></content:encoded><description>Когда идет разработка приложения критичного к памяти (и)или размеру байт кода, к скорости выполнения, то начинаешь задумываться о вещах, о которых не думаешь, когда разрабатываешь J2EE приложения, работающие на серверах с большим количеством доступной оперативной памяти, пространства на жестком диске и процессорного времени. Здесь я сделаю попытку собрать в одном месте, советы и рекомендации по оптимизации, оптимизации [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1369</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1369</feedburner:origLink></item><item><title>GWT Syncproxy вызов back-end GWT методов</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/vRPY7EpIUjc/</link><category>GWT</category><category>Java</category><category>GAE</category><category>GWT + Swing</category><category>SyncProxy</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Tue, 24 May 2011 11:00:33 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1354</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;"><img class="alignleft size-thumbnail wp-image-1363" style="margin-left: 10px; margin-right: 10px;" title="GWT" src="http://juravskiy.ru/wp-content/uploads/2011/05/logo-gwt-100x100.jpg" alt="logo gwt 100x100 GWT Syncproxy вызов back end GWT методов" width="100" height="100" />Интересный проект gwt-syncproxy, позволяет вызывать методы GWT сервлетов, организовывая GWT-RPC запросы к ним. Написан целиком на Java, и это нам дает обширный круг возможностей. Единственный минус - разработчик иногда не поспевает за командой разработчиков GWT, и библиотека может не работать со свежими версиями GWT.</p><p style="text-align: justify;">О вариантах применения библиотеки:<span id="more-1354"></span></p><ul><li>создание Swing интерфейса, к уже имеющемуся Web интерфейсу написанному на JavaScript;</li><li>взаимодействие между back-end`ами;</li><li>предоставление сервиса, другому серверу или приложению написанному на Java.</li></ul><p style="text-align: justify;">Также поддерживает авторизацию с Google App Engine, что позволяет общаться с приложением расположенном в облачном сервисе от Google.</p><p>Адрес проекта <a href="http://code.google.com/p/gwt-syncproxy/">http://code.google.com/p/gwt-syncproxy/</a></p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/PPcxt3AfxKcm7IsfgAbmlPpGeso/0/da"><img src="http://feedads.g.doubleclick.net/~a/PPcxt3AfxKcm7IsfgAbmlPpGeso/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/PPcxt3AfxKcm7IsfgAbmlPpGeso/1/da"><img src="http://feedads.g.doubleclick.net/~a/PPcxt3AfxKcm7IsfgAbmlPpGeso/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=vRPY7EpIUjc:OVYfdEB62Ro:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=vRPY7EpIUjc:OVYfdEB62Ro:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=vRPY7EpIUjc:OVYfdEB62Ro:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=vRPY7EpIUjc:OVYfdEB62Ro:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=vRPY7EpIUjc:OVYfdEB62Ro:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=vRPY7EpIUjc:OVYfdEB62Ro:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=vRPY7EpIUjc:OVYfdEB62Ro:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=vRPY7EpIUjc:OVYfdEB62Ro:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=vRPY7EpIUjc:OVYfdEB62Ro:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=vRPY7EpIUjc:OVYfdEB62Ro:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=vRPY7EpIUjc:OVYfdEB62Ro:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=vRPY7EpIUjc:OVYfdEB62Ro:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=vRPY7EpIUjc:OVYfdEB62Ro:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=vRPY7EpIUjc:OVYfdEB62Ro:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=vRPY7EpIUjc:OVYfdEB62Ro:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=vRPY7EpIUjc:OVYfdEB62Ro:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=vRPY7EpIUjc:OVYfdEB62Ro:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/vRPY7EpIUjc" height="1" width="1"/>]]></content:encoded><description>Интересный проект gwt-syncproxy, позволяет вызывать методы GWT сервлетов, организовывая GWT-RPC запросы к ним. Написан целиком на Java, и это нам дает обширный круг возможностей. Единственный минус - разработчик иногда не поспевает за командой разработчиков GWT, и библиотека может не работать со свежими версиями GWT. О вариантах применения библиотеки: создание Swing интерфейса, к уже имеющемуся Web интерфейсу написанному на JavaScript; взаимодействие между back-end`ами; предоставление сервиса, [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1354</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1354</feedburner:origLink></item><item><title>Суббота в Дубовом</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/p59ysBnE-6U/</link><category>Photo</category><category>Дубовое</category><category>фото</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Sat, 21 May 2011 12:58:03 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1340</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;">Как обычно занимался стройкой - внутренняя отделка помещений. Сделали несколько интересных снимков. <span id="more-1340"></span></p><p style="text-align: justify;">В летнем душе обнаружили гнездо с птенцами - четыре пищащих желторотика, которые всегда хотят кушать, их мама к ним всегда приносит в клюве червячков, или букашек.</p><p style="text-align: justify;">После обеда фотографировал кошек, первую половину дня, они бегали по участку, после обеда их разморило солнце, и они решили вздремнуть на кровати :)</p><p style="text-align: justify;">Все цветет. У нас много двухлетних деревьев - персики, черешня, вишни, яблони. Все на удивление отцвели, сейчас уже с завязями плодов - ждем небольшой урожай.</p><div class="ngg-galleryoverview" id="ngg-gallery-2-1340"><!-- Slideshow link --><div class="slideshowlink"> <a class="slideshowlink" href="http://juravskiy.ru/?p=1340&amp;show=slide"> [Show as slideshow] </a></div> <!-- Thumbnails --><div id="ngg-image-3" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/anytiny_glazki.jpg" title="Цветы Анютины глазки" class="shutterset_set_2" > <img title="Цветы Анютины глазки" alt="thumbs anytiny glazki Суббота в Дубовом" src="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/thumbs/thumbs_anytiny_glazki.jpg" width="150" height="100" /> </a></div></div><div id="ngg-image-5" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/floksy.jpg" title="Цветы Флоксы" class="shutterset_set_2" > <img title="Цветы Флоксы" alt="thumbs floksy Суббота в Дубовом" src="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/thumbs/thumbs_floksy.jpg" width="150" height="100" /> </a></div></div><div id="ngg-image-4" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/cvetocjki.jpg" title="Какие-то цветочки" class="shutterset_set_2" > <img title="Какие-то цветочки" alt="thumbs cvetocjki Суббота в Дубовом" src="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/thumbs/thumbs_cvetocjki.jpg" width="150" height="100" /> </a></div></div><div id="ngg-image-10" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/ptency.jpg" title="В летнем душе &lt;br/&gt;обнаружили гнездо с птенцами" class="shutterset_set_2" > <img title="Птенцы в гнезде" alt="thumbs ptency Суббота в Дубовом" src="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/thumbs/thumbs_ptency.jpg" width="150" height="100" /> </a></div></div><div id="ngg-image-6" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/klubnika.jpg" title="Соцветия клубники" class="shutterset_set_2" > <img title="Соцветия клубники" alt="thumbs klubnika Суббота в Дубовом" src="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/thumbs/thumbs_klubnika.jpg" width="150" height="100" /> </a></div></div><div id="ngg-image-7" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/manka.jpg" title="Кошка Манька" class="shutterset_set_2" > <img title="Кошка Манька" alt="thumbs manka Суббота в Дубовом" src="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/thumbs/thumbs_manka.jpg" width="150" height="100" /> </a></div></div><div id="ngg-image-8" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/murka.jpg" title="Кошка Мурка" class="shutterset_set_2" > <img title="Кошка Мурка	" alt="thumbs murka Суббота в Дубовом" src="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/thumbs/thumbs_murka.jpg" width="150" height="100" /> </a></div></div><div id="ngg-image-9" class="ngg-gallery-thumbnail-box"  ><div class="ngg-gallery-thumbnail" > <a href="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/manka_i_murka.jpg" title="У кошек Маньки и Мурки&lt;br/&gt;тихий час" class="shutterset_set_2" > <img title="У кошек Маньки и Мурки тихий час	" alt="thumbs manka i murka Суббота в Дубовом" src="http://juravskiy.ru/wp-content/gallery/19_may_2011_dubovoe/thumbs/thumbs_manka_i_murka.jpg" width="150" height="100" /> </a></div></div> <!-- Pagination --><div class='ngg-clear'></div></div></sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/9dQamK56JEbS08ICr8gwtM9uaqM/0/da"><img src="http://feedads.g.doubleclick.net/~a/9dQamK56JEbS08ICr8gwtM9uaqM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9dQamK56JEbS08ICr8gwtM9uaqM/1/da"><img src="http://feedads.g.doubleclick.net/~a/9dQamK56JEbS08ICr8gwtM9uaqM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p59ysBnE-6U:ILikqp-5hsI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p59ysBnE-6U:ILikqp-5hsI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=p59ysBnE-6U:ILikqp-5hsI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p59ysBnE-6U:ILikqp-5hsI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p59ysBnE-6U:ILikqp-5hsI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p59ysBnE-6U:ILikqp-5hsI:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p59ysBnE-6U:ILikqp-5hsI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=p59ysBnE-6U:ILikqp-5hsI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p59ysBnE-6U:ILikqp-5hsI:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p59ysBnE-6U:ILikqp-5hsI:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=p59ysBnE-6U:ILikqp-5hsI:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p59ysBnE-6U:ILikqp-5hsI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=p59ysBnE-6U:ILikqp-5hsI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p59ysBnE-6U:ILikqp-5hsI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=p59ysBnE-6U:ILikqp-5hsI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p59ysBnE-6U:ILikqp-5hsI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p59ysBnE-6U:ILikqp-5hsI:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/p59ysBnE-6U" height="1" width="1"/>]]></content:encoded><description>Как обычно занимался стройкой - внутренняя отделка помещений. Сделали несколько интересных снимков.  В летнем душе обнаружили гнездо с птенцами - четыре пищащих желторотика, которые всегда хотят кушать, их мама к ним всегда приносит в клюве червячков, или букашек. После обеда фотографировал кошек, первую половину дня, они бегали по участку, после обеда их разморило солнце, и [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1340</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1340</feedburner:origLink></item><item><title>uShare медиасервер для XBOX и PS3</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/Dfd6jYakaZI/</link><category>Ubuntu</category><category>XBOX 360</category><category>dlna</category><category>media server</category><category>ubuntu</category><category>upnp</category><category>ushare</category><category>xbox 360</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Sat, 21 May 2011 11:45:06 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1332</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;"><a rel="lightbox" href="http://juravskiy.ru/wp-content/uploads/2011/05/xbox-360-logo.jpg"><img class="alignleft size-thumbnail wp-image-1333" style="margin-left: 10px; margin-right: 10px;" title="Xbox 360 logo" src="http://juravskiy.ru/wp-content/uploads/2011/05/xbox-360-logo-100x100.jpg" alt="xbox 360 logo 100x100 uShare медиасервер для XBOX и PS3" width="100" height="100" /></a>Ранее я рассказывал про <a title="Редактировать «UPnP Media Server для XBOX 360 и Play Station 3»" href="http://juravskiy.ru/?p=1167" target="_blank">UPnP Media Server для XBOX 360 и Play Station 3</a>. Иногда при просмотре видео, используемые транскодеры видео в этом приложении, притормаживают картинку, и не совсем приятно смотреть видео.  uShare немного попроще по функциональности, без поддержки транскодирования, т.е. все будет работать также, как расшаренные папки в windows. Сегодня расскажу как установить и настроить uashare в ubuntu, для работы с xbox 360 и play station 3.<span id="more-1332"></span></p><p style="text-align: justify;">Устанавливаем:</p><p style="text-align: justify;">&nbsp;</p><pre class="brush:shell;gutter:false;">sudo apt-get install ushare</pre><p>&nbsp;</p><p style="text-align: justify;">Далее настраиваем, можно использовать команду:</p><p style="text-align: justify;">&nbsp;</p><pre class="brush:shell;gutter:false;">sudo dpkg-reconfigure ushare</pre><p>&nbsp;</p><p style="text-align: justify;">или просто отредактировать файл /etc/ushare.conf:</p><p style="text-align: justify;">&nbsp;</p><pre class="brush:shell;gutter:false;">sudo gedit /etc/ushare.conf</pre><p>&nbsp;</p><p style="text-align: justify;">Мой файл выглядит так конфигурации:</p><p style="text-align: justify;">&nbsp;</p><pre class="brush:plain;gutter:false;"># /etc/ushare.conf
# Edit this file with 'dpkg-reconfigure ushare'
# Configuration file for uShare

# uShare UPnP Friendly Name (default is 'uShare').
USHARE_NAME=uShare

# Interface to listen to (default is eth0).
# Ex : USHARE_IFACE=eth1
USHARE_IFACE=wlan0

# Port to listen to (default is random from IANA Dynamic Ports range)
# Ex : USHARE_PORT=49200
USHARE_PORT=49200

# Port to listen for Telnet connections
# Ex : USHARE_TELNET_PORT=1337
USHARE_TELNET_PORT=

# Directories to be shared (space or CSV list).
# Ex: USHARE_DIR=/dir1,/dir2
USHARE_DIR=/home/vitaliy/Videos,/home/vitaliy/Music

# Use to override what happens when iconv fails to parse a file name.
# The default uShare behaviour is to not add the entry in the media list
# This option overrides that behaviour and adds the non-iconv'ed string into
# the media list, with the assumption that the renderer will be able to
# handle it. Devices like Noxon 2 have no problem with strings being passed
# as is. (Umlauts for all!)
#
# Options are TRUE/YES/1 for override and anything else for default behaviour
USHARE_OVERRIDE_ICONV_ERR=

# Enable Web interface (yes/no)
USHARE_ENABLE_WEB=

# Enable Telnet control interface (yes/no)
USHARE_ENABLE_TELNET=

# Use XboX 360 compatibility mode (yes/no)
USHARE_ENABLE_XBOX=

# Use DLNA profile (yes/no)
# This is needed for PlayStation3 to work (among other devices)
USHARE_ENABLE_DLNA=</pre><p>&nbsp;</p><p style="text-align: justify;">Вам нужно отредактировать параметры:</p><p style="text-align: justify;">USHARE_IFACE - интерфейс сетевого подключения, через который вы хотите транслировать медиа данные. У меня wi-fi поэтому в файле конфигурации указано wlan0, если у вас проводная сеть, то у вас будет интерфейс начинаться с eth - eth0, eth1 и т.д..</p><p style="text-align: justify;">USHARE_DIR - указываем список директорий, через запятую, к которым мы хотим дать доступ, в моем случае это папка с видео и с музыкой в домашней директории.</p><p style="text-align: justify;">Параметр USHARE_ENABLE_XBOX оставляем незаполненным, я его сначала указал в значение yes и мой xbox отказался видеть мой ноутбук. Вернул в пустое значение, все заработало - видимо ошибка в программе. В итоге от стандартного файла настроек менял только 2 выше описанных параметра.</p><p style="text-align: justify;">Запускаем</p><p style="text-align: justify;">&nbsp;</p><pre class="brush:shell;gutter:false;">ushare -xvo</pre><p>&nbsp;</p><p style="text-align: justify;">для работы с PS 3 добавляем параметр -d</p><p style="text-align: justify;">&nbsp;</p><pre class="brush:shell;gutter:false;">ushare -xvdo</pre><p>&nbsp;</p><p style="text-align: justify;">Наслаждаемся просмотром и прослушиванием медиа контента с вашего ПК.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/W_faiQBTbz4pCBIt2kQRZo2gbP0/0/da"><img src="http://feedads.g.doubleclick.net/~a/W_faiQBTbz4pCBIt2kQRZo2gbP0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/W_faiQBTbz4pCBIt2kQRZo2gbP0/1/da"><img src="http://feedads.g.doubleclick.net/~a/W_faiQBTbz4pCBIt2kQRZo2gbP0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Dfd6jYakaZI:VNJJUi6DZxQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Dfd6jYakaZI:VNJJUi6DZxQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Dfd6jYakaZI:VNJJUi6DZxQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Dfd6jYakaZI:VNJJUi6DZxQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Dfd6jYakaZI:VNJJUi6DZxQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Dfd6jYakaZI:VNJJUi6DZxQ:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Dfd6jYakaZI:VNJJUi6DZxQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Dfd6jYakaZI:VNJJUi6DZxQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Dfd6jYakaZI:VNJJUi6DZxQ:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Dfd6jYakaZI:VNJJUi6DZxQ:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Dfd6jYakaZI:VNJJUi6DZxQ:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Dfd6jYakaZI:VNJJUi6DZxQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Dfd6jYakaZI:VNJJUi6DZxQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Dfd6jYakaZI:VNJJUi6DZxQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Dfd6jYakaZI:VNJJUi6DZxQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Dfd6jYakaZI:VNJJUi6DZxQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Dfd6jYakaZI:VNJJUi6DZxQ:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/Dfd6jYakaZI" height="1" width="1"/>]]></content:encoded><description>Ранее я рассказывал про UPnP Media Server для XBOX 360 и Play Station 3. Иногда при просмотре видео, используемые транскодеры видео в этом приложении, притормаживают картинку, и не совсем приятно смотреть видео.  uShare немного попроще по функциональности, без поддержки транскодирования, т.е. все будет работать также, как расшаренные папки в windows. Сегодня расскажу как установить и настроить [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1332</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1332</feedburner:origLink></item><item><title>Клевер</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/p93Ul-__chA/</link><category>Photo</category><category>nikon d3100</category><category>клевер</category><category>мокрица</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Thu, 19 May 2011 13:17:39 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1322</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index> <a href="http://juravskiy.ru/wp-content/gallery/macro-flowers-2011/dsc_0048_0.jpg" title="Цветок называют &quot;Мокрица&quot;, ну а как по мне это клевер. Растет у нас на окне, симпатичный" class="shutterset_singlepic2" > <img class="ngg-singlepic ngg-center" src="http://juravskiy.ru/wp-content/gallery/cache/2_watermark_320x240_dsc_0048_0.jpg" alt="2 watermark 320x240 dsc 0048 0 Клевер" title="Клевер" /> </a><p style="text-align: center;">Первый опыт в макросъемке на Nikon D3100</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/VuR1EG_1M_AUd2XhFzdpJjuxHQc/0/da"><img src="http://feedads.g.doubleclick.net/~a/VuR1EG_1M_AUd2XhFzdpJjuxHQc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/VuR1EG_1M_AUd2XhFzdpJjuxHQc/1/da"><img src="http://feedads.g.doubleclick.net/~a/VuR1EG_1M_AUd2XhFzdpJjuxHQc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p93Ul-__chA:FZRdsjZaJLc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p93Ul-__chA:FZRdsjZaJLc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=p93Ul-__chA:FZRdsjZaJLc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p93Ul-__chA:FZRdsjZaJLc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p93Ul-__chA:FZRdsjZaJLc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p93Ul-__chA:FZRdsjZaJLc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p93Ul-__chA:FZRdsjZaJLc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=p93Ul-__chA:FZRdsjZaJLc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p93Ul-__chA:FZRdsjZaJLc:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p93Ul-__chA:FZRdsjZaJLc:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=p93Ul-__chA:FZRdsjZaJLc:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p93Ul-__chA:FZRdsjZaJLc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=p93Ul-__chA:FZRdsjZaJLc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p93Ul-__chA:FZRdsjZaJLc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=p93Ul-__chA:FZRdsjZaJLc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p93Ul-__chA:FZRdsjZaJLc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=p93Ul-__chA:FZRdsjZaJLc:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/p93Ul-__chA" height="1" width="1"/>]]></content:encoded><description>Первый опыт в макросъемке на Nikon D3100</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1322</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1322</feedburner:origLink></item><item><title>Мебель своими руками</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/uw5IGTk2an8/</link><category>Новости</category><category>Строительство и ремонт</category><category>bCad</category><category>конфирмат</category><category>ЛДСП</category><category>мебель</category><category>своими руками</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Sat, 14 May 2011 01:04:16 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1225</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;"><a href="http://juravskiy.ru/wp-content/uploads/2011/05/DSCN3435.jpg" rel="lightbox"><img class="size-medium wp-image-1248 alignleft" style="margin-left: 10px; margin-right: 10px;" title="Шкаф для ванной комнаты своими руками" src="http://juravskiy.ru/wp-content/uploads/2011/05/DSCN3435-215x300.jpg" alt="DSCN3435 215x300 Мебель своими руками" width="100" height="100" /></a>Я расскажу о своем опыте создания мебели для дома. Основной материал - ламинированная ДСП (ЛДСП).  Согласен, материал не самый экологически безопасный. Но если выбирать между покупкой мебели в магазине, или под заказ из такого же материала, то лучше сделать своими руками - будет гораздо выгоднее семейному бюджету.  Это основной аргумент, который мотивировал меня сделать навесной шкаф для ванной комнаты и полку для обуви в прихожую собственными силами. В процессе рассказа я постараюсь поднять все сложности с которыми я столкнулся. Возможно Вам будет полезно ознакомиться с моим опытом, если вы решили самостоятельно сделать не стандартную мебель или мебель по собственному проекту. <span id="more-1225"></span></p><h5>Программное обеспечение или где чертить чертеж</h5><p style="text-align: justify;">Как оказалось существует большое кол-во программ, для создания проектов мебели, кухонь, шкафов купе и другой мебели. Когда я создавал проект я использовал программу bCad. Удобно чертить если знаешь горячие кнопки. Есть конструкторы для быстрого создания простых шкафов. Создаешь простой шкаф, к нему добавляешь, то чего не хватает у твоего, и готово.</p><h5 style="text-align: justify;">Инструмент</h5><p style="text-align: justify;">Я использовал следующий инструмент:</p><p style="text-align: justify;">Сборка:</p><ul style="text-align: justify;"><li>шуруповерт  - к нему насадка шести угольная;</li><li>ключ для конфирматов, если нет насадки;</li><li>сверло для конфирмата;</li><li>молоток - прибивать заднюю стенку из ДВП.</li></ul><p style="text-align: justify;">Кромление:</p><ul><li style="text-align: justify;">канцелярский нож - подрезать кромку;</li><li style="text-align: justify;">точильный камень - средней зернистости;</li><li style="text-align: justify;">утюг - приклеивать кромку;</li><li style="text-align: justify;">тряпочка, ткань х/б - через нее лучше клеится кромка, если утюг старый, а кромка светлая, то она не будет желтой - тряпочка защитит.</li></ul><p style="text-align: justify;">Измерения, разметка:</p><ul><li>угольник - чтобы точно мерить угол в 90 градусов;</li><li>рулетка;</li><li>карандаш.</li></ul><h5 style="text-align: justify;">Предварительные замеры</h5><p style="text-align: justify;">Сделали замеры где будет висеть шкаф, и где будет стоять полка под обувь. Определили максимальные размеры шкафчика и полки.</p><h5>Воплощаем свои фантазии на чертеже</h5><p style="text-align: justify;">Начали думать как лучше сделать полку. В итоге как оказалось моя Маша, прирожденный дизайнер, сама начертила дизайн шкафчика для ванны, очень удобный шкафчик получился.</p><p style="text-align: center;"><span style="color: #ff0000;"><a href="http://juravskiy.ru/wp-content/uploads/2011/05/DSCN3435.jpg" rel="lightbox"><img class="aligncenter size-medium wp-image-1248" title="Шкаф для ванной комнаты своими руками" src="http://juravskiy.ru/wp-content/uploads/2011/05/DSCN3435-215x300.jpg" alt="DSCN3435 215x300 Мебель своими руками" width="215" height="300" /></a></span></p><p style="text-align: justify;">С полкой для обуви  было посложнее, мы не знали с чего начать. Я сразу предложил идею - замерить всю нашу обувь, и понять какой высоты должны быть полки.</p><ul><li>для сапожек - 50 см.</li><li>для зимних ботинков и полусапожек, туфлей на шпильке - 25 см.</li><li>для летних туфель, босоножек, спортивная обувь, тапочки - 10 см.</li></ul><p style="text-align: justify;">Идея Маши была в том, чтобы можно полочку использовать еще как скамью, и поэтому мы решили ограничить высоту полки 60 см. Для вещей - шапки, шарфики, зонтики,  и т.д. высокая, но узкая полочка. В итоге получилось следующее:</p><p style="text-align: center;"><span style="color: #ff0000;"><span style="text-decoration: line-through;"><a href="http://juravskiy.ru/wp-content/uploads/2011/05/shoes_shelf_photo.jpg" rel="lightbox"><img class="aligncenter size-medium wp-image-1271" title="Полка для обуви своими руками. Результат работы." src="http://juravskiy.ru/wp-content/uploads/2011/05/shoes_shelf_photo-225x300.jpg" alt="shoes shelf photo 225x300 Мебель своими руками" width="225" height="300" /></a></span></span></p><p style="text-align: justify;">Также получилась удобная, так как делали для себя и под себя. Найти подобную в магазинах по размерам, и по удобству использования - не представляется возможным.</p><p style="text-align: justify;">В итоге получились следующие модели:</p><p style="text-align: justify;"><a href="http://juravskiy.ru/wp-content/uploads/2011/05/all.jpg" rel="lightbox"><br /> <img class="alignleft size-thumbnail wp-image-1276" style="margin-left: 20px; margin-right: 20px;" title="Две модели в одном проекте" src="http://juravskiy.ru/wp-content/uploads/2011/05/all-100x100.jpg" alt="all 100x100 Мебель своими руками" width="100" height="100" /><br /> </a></p><p><a href="http://juravskiy.ru/wp-content/uploads/2011/05/shelf_for_bath_3d.jpg" rel="lightbox"><img class="alignleft size-thumbnail wp-image-1274" style="margin-left: 15px; margin-right: 15px;" title="Полка для ванны" src="http://juravskiy.ru/wp-content/uploads/2011/05/shelf_for_bath_3d-100x100.jpg" alt="shelf for bath 3d 100x100 Мебель своими руками" width="100" height="100" /></a></p><p><a href="http://juravskiy.ru/wp-content/uploads/2011/05/shelf_for_bath.jpg" rel="lightbox"><img class="alignleft size-thumbnail wp-image-1273" style="margin-left: 15px; margin-right: 15px;" title="Модель полки для ванны" src="http://juravskiy.ru/wp-content/uploads/2011/05/shelf_for_bath-100x100.jpg" alt="shelf for bath 100x100 Мебель своими руками" width="100" height="100" /></a></p><p><a href="http://juravskiy.ru/wp-content/uploads/2011/05/shoes_shelf.jpg" rel="lightbox"><br /> <img class="alignleft size-thumbnail wp-image-1275" style="margin-left: 15px; margin-right: 15px;" title="Модель полки для обуви" src="http://juravskiy.ru/wp-content/uploads/2011/05/shoes_shelf-100x100.jpg" alt="shoes shelf 100x100 Мебель своими руками" width="100" height="100" /></a></p><h5>Распил</h5><p style="text-align: justify;">В используемой мной программе, и во многих аналогичных можно построить карту распила графической модели. Там где я заказывал распил,</p><p style="text-align: justify;">обязательное условие - предоставить его в распечатанном виде.</p><p style="text-align: center;"><a href="http://juravskiy.ru/wp-content/uploads/2011/05/raspil.jpg" rel="lightbox"><img class="aligncenter size-medium wp-image-1272" title="Распил, который предоставила программа bCad" src="http://juravskiy.ru/wp-content/uploads/2011/05/raspil-300x207.jpg" alt="raspil 300x207 Мебель своими руками" width="300" height="207" /></a></p><p style="text-align: justify;">Так как у них распил делают еще и большинство индивидуальных предпринимателей, занимающихся мебелью на заказ, распил сделали через два дня.</p><p style="text-align: justify;">Детали от распила двух листов 3500 x 1750 без проблем уместились в багажник Elantr`ы.</p><h5>Подбор фурнитуры</h5><p style="text-align: justify;">Фрунитуру подбирал я в два этапа. То что знал купил сразу: петли, ручки, крепеж - конфирматы, шурупы, шканты, эксцентрики. Вопрос у меня возник по газовым патронам. Сразу не понял как их устанавливать и по какому принципу выбирать. В итоге ошибся. Ошибся также с петлями, петли бывают разных типов. И действительно с ходу там не понять. Помог справочник с сайта под названием <a href="http://www.makuha.ru/katalog/petli/1.htm" rel="noindex nofollow" target="_blank">макуха</a>. Сразу стало все на свои места, какие петли могут быть, и как не ошибиться. В итоге купил петли с автодоводом - хлопнуть дверью практически не возможно, бесшумное открытие /закрытие, удобно.</p><p style="text-align: justify;">Там же прочитал и про газовые патроны, с газовым патроном также идет инструкция по установке. По ней и устанавливал. На дверь с газовым патроном, также необходимо ставить петли как на обычную, можно простые. А газовый патрон выбирается по весу - вес я так понял учитывается  примерно так вес двери + 1-2 кг. Я приобрел патрон на вес равный двери, и он как-то не очень ее выталкивает вверх, но держит.</p><h5 style="text-align: justify;">Смета</h5><p style="text-align: justify;">В программе, которую я использовал, есть возможность сформировать смету, остается только подставить цены, и она все перемножит. И будет примерно известно, сколько нужно потратить денег на ваш мебельный проект.</p><h5>Кромление</h5><p style="text-align: justify;">Клеил вручную - меламиновую кромку. Она идет сразу с клеевой поверхностью, которая при нагревании приклеивается к торцу ДСП.</p><p style="text-align: justify;">Обрезал канцелярским ножом, главное чтобы был острый. Важно держать его вплотную к поверхности, перпендикулярной, отрезаемой плоскости. Если держать под углом, можно срезать угол ДСП.</p><p style="text-align: justify;"><a href="http://juravskiy.ru/wp-content/uploads/2011/05/tochilnyi_kamen.jpg" rel="lightbox"><img class="alignleft size-thumbnail wp-image-1256" style="margin-left: 10px; margin-right: 10px;" title="Точильный камень" src="http://juravskiy.ru/wp-content/uploads/2011/05/tochilnyi_kamen-100x100.jpg" alt="tochilnyi kamen 100x100 Мебель своими руками" width="100" height="100" /></a>Далее после этого затирал угол мелкой наждачной бумагой, вскоре она закончилась, а затирать нужно было еще много. На помощь пришел точильный камень - удобная вещь для выравнивания углов после обрезания кромки. Вести нужно от центра кромки к краю, и точно по ребру. Проводим, сдуваем пыль контролируем гладкость, проводя пальцем. Зерно на точильном камне не должно быть сильно большим - грубым, иначе будут царапины. Но и не должен быть сильно мелким, иначе будет быстро засорятся, и нужно придется часто его мыть и вычищать.</p><p style="text-align: justify;">Пространство между зернами забивается рано или поздно пылью - чистим, я делал так. Брал в горячей воде размачивал его 1 -2 минуты, мылил, и щеткой тер. Помогало. Если есть щетка по металлу, то думаю поможет ускорить процесс.</p><h5>Подготовка к сборке</h5><p>Нужно просверлить все отверстия, по чертежу в программе. Для сверления отверстий под конфирмат нужно использовать сверло.</p><p style="text-align: center;"><a href="http://juravskiy.ru/wp-content/uploads/2011/05/drill.jpg" rel="lightbox"><img class="aligncenter" title="Сверло для конфирмата" src="http://juravskiy.ru/wp-content/uploads/2011/05/drill-100x100.jpg" alt="drill 100x100 Мебель своими руками" width="100" height="100" /></a></p><p style="text-align: justify;">Для сверления отверстий под полок держатели, нужно использовать сверло по дереву соответствующего диаметра. Для сверления отверстий под петли используют сверло Форстнера.</p><p style="text-align: justify;"><a href="http://juravskiy.ru/wp-content/uploads/2011/05/sverlo_shacka_35_sverlo_fostnera.jpg" rel="lightbox"><img class="aligncenter size-thumbnail wp-image-1288" title="Сверло Форстнера на 35 мм" src="http://juravskiy.ru/wp-content/uploads/2011/05/sverlo_shacka_35_sverlo_fostnera-100x100.jpg" alt="sverlo shacka 35 sverlo fostnera 100x100 Мебель своими руками" width="100" height="100" /></a>Когда все отверстия готовы, можно приступить к сборке.</p><h5>Сборка</h5><p style="text-align: justify;">Сборку можно осуществлять как простым ключем, который идет с мебелью которую, мы покупаем в магазинах.</p><p style="text-align: center;"><a href="http://juravskiy.ru/wp-content/uploads/2011/05/konfirmat_key.jpg" rel="lightbox"><img class="aligncenter" title="Ключ для конфирмата" src="http://juravskiy.ru/wp-content/uploads/2011/05/konfirmat_key-100x100.jpg" alt="konfirmat key 100x100 Мебель своими руками" width="100" height="100" /></a></p><p style="text-align: justify;">Или можно использовать насадку для шуруповерта. В этом случае нужно закручивать на малых оборотах, чтобы не сорвать резьбу проделанную конфирматом в отверстии.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/H2WpgwWSNNm25h91Lox-va2IFlI/0/da"><img src="http://feedads.g.doubleclick.net/~a/H2WpgwWSNNm25h91Lox-va2IFlI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/H2WpgwWSNNm25h91Lox-va2IFlI/1/da"><img src="http://feedads.g.doubleclick.net/~a/H2WpgwWSNNm25h91Lox-va2IFlI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=uw5IGTk2an8:0X3UyoxOXic:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=uw5IGTk2an8:0X3UyoxOXic:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=uw5IGTk2an8:0X3UyoxOXic:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=uw5IGTk2an8:0X3UyoxOXic:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=uw5IGTk2an8:0X3UyoxOXic:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=uw5IGTk2an8:0X3UyoxOXic:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=uw5IGTk2an8:0X3UyoxOXic:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=uw5IGTk2an8:0X3UyoxOXic:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=uw5IGTk2an8:0X3UyoxOXic:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=uw5IGTk2an8:0X3UyoxOXic:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=uw5IGTk2an8:0X3UyoxOXic:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=uw5IGTk2an8:0X3UyoxOXic:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=uw5IGTk2an8:0X3UyoxOXic:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=uw5IGTk2an8:0X3UyoxOXic:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=uw5IGTk2an8:0X3UyoxOXic:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=uw5IGTk2an8:0X3UyoxOXic:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=uw5IGTk2an8:0X3UyoxOXic:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/uw5IGTk2an8" height="1" width="1"/>]]></content:encoded><description>Я расскажу о своем опыте создания мебели для дома. Основной материал - ламинированная ДСП (ЛДСП).  Согласен, материал не самый экологически безопасный. Но если выбирать между покупкой мебели в магазине, или под заказ из такого же материала, то лучше сделать своими руками - будет гораздо выгоднее семейному бюджету.  Это основной аргумент, который мотивировал меня сделать навесной шкаф для ванной комнаты и полку для обуви [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1225</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">4</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1225</feedburner:origLink></item><item><title>Приспособление для изгиба металлических прутков</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/VDlbJ1ui00c/</link><category>Строительство и ремонт</category><category>барашки</category><category>ковка</category><category>прутки</category><category>стройка</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Tue, 03 May 2011 09:06:56 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1227</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;"><a rel="lightbox" href="http://juravskiy.ru/wp-content/uploads/2011/05/borashek.jpg"><img class="alignleft size-thumbnail wp-image-1235" style="margin-left: 10px; margin-right: 10px;" title="Холодная ковка" src="http://juravskiy.ru/wp-content/uploads/2011/05/borashek-100x100.jpg" alt="borashek 100x100 Приспособление для изгиба металлических прутков" width="100" height="100" /></a>Планирую сделать самостоятельно стальные решетки для пролетов на заборе. Лицевая часть забора 50 метров. Гнуть чувствую нужно будет много. Стал вопрос, как гнуть металлические прутки, чтобы получались синусоиды, барашки, завитушки и т.д.. В одной из книг нашел довольно простое приспособление которое можно изготовить, имея обрезки стальной трубы. Идея заключается в следующем.<span id="more-1227"></span></p><p style="text-align: justify;">Необходимо определить основание,  где нам необходимо вертикально в шахматном порядке закрепить трубы. Это могут быть отверстия в полу равные диаметрам труб, или если у вас есть железный тяжелый стол, можно трубы приварить к нему.</p><p style="text-align: center;"><a rel="lightbox" href="http://juravskiy.ru/wp-content/uploads/2011/05/izgib_prutkov.png"><img class="aligncenter size-medium wp-image-1232" title="Схема примерного расположения труб для ручного изгиба прутков" src="http://juravskiy.ru/wp-content/uploads/2011/05/izgib_prutkov-300x225.png" alt="izgib prutkov 300x225 Приспособление для изгиба металлических прутков" width="300" height="225" /></a></p><p style="text-align: justify;">Расположение труб может быть как в шахматном порядке с разными расстояниями между трубами, так и спиралеобразное, все зависит от того какой вами узор задуман. Между труб вставляется пруток, и изгибается за счет приложенного усилия на него как на рычаг. Чтобы у вас все получилось  - начало прутка, должно вставляться в "захват", самый простой способ захвата -  расположение двух труб на расстоянии равном толщине прутка.</p><p style="text-align: justify;">Это дешевая альтернатива ручным и механическим станкам по изгибу прутков. Все зависит от ваших усилий и толщины прутка.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/IGHDIFgZghKfB8CCkK_avGRfKLM/0/da"><img src="http://feedads.g.doubleclick.net/~a/IGHDIFgZghKfB8CCkK_avGRfKLM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/IGHDIFgZghKfB8CCkK_avGRfKLM/1/da"><img src="http://feedads.g.doubleclick.net/~a/IGHDIFgZghKfB8CCkK_avGRfKLM/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=VDlbJ1ui00c:zR8DszvgAbo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=VDlbJ1ui00c:zR8DszvgAbo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=VDlbJ1ui00c:zR8DszvgAbo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=VDlbJ1ui00c:zR8DszvgAbo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=VDlbJ1ui00c:zR8DszvgAbo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=VDlbJ1ui00c:zR8DszvgAbo:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=VDlbJ1ui00c:zR8DszvgAbo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=VDlbJ1ui00c:zR8DszvgAbo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=VDlbJ1ui00c:zR8DszvgAbo:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=VDlbJ1ui00c:zR8DszvgAbo:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=VDlbJ1ui00c:zR8DszvgAbo:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=VDlbJ1ui00c:zR8DszvgAbo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=VDlbJ1ui00c:zR8DszvgAbo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=VDlbJ1ui00c:zR8DszvgAbo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=VDlbJ1ui00c:zR8DszvgAbo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=VDlbJ1ui00c:zR8DszvgAbo:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=VDlbJ1ui00c:zR8DszvgAbo:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/VDlbJ1ui00c" height="1" width="1"/>]]></content:encoded><description>Планирую сделать самостоятельно стальные решетки для пролетов на заборе. Лицевая часть забора 50 метров. Гнуть чувствую нужно будет много. Стал вопрос, как гнуть металлические прутки, чтобы получались синусоиды, барашки, завитушки и т.д.. В одной из книг нашел довольно простое приспособление которое можно изготовить, имея обрезки стальной трубы. Идея заключается в следующем. Необходимо определить основание,  где нам необходимо вертикально в шахматном порядке закрепить трубы. Это могут быть отверстия [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1227</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">2</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1227</feedburner:origLink></item><item><title>Как я укладывал керамогранит</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/gUDj5-FlcZg/</link><category>Строительство и ремонт</category><category>керамогранит</category><category>плитка</category><category>ремонт</category><category>стройка</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Fri, 29 Apr 2011 23:00:45 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1201</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;"><a rel="lightbox" href="http://juravskiy.ru/wp-content/uploads/2011/04/keramogranit.jpg"><img class="alignleft size-thumbnail wp-image-1214" style="margin-left: 10px; margin-right: 10px;" title="Керамогранит" src="http://juravskiy.ru/wp-content/uploads/2011/04/keramogranit-100x100.jpg" alt="keramogranit 100x100 Как я укладывал керамогранит" height="100" width="100" /></a>Строимся. Дело дошло до полов - укладка плитки не мой конек, но всегда приходиться что-то делать первый раз. Почитав теорию о том как класть плитку, хитрости и тонкости профи, которые пишут статьи о плитке в Интернет , прибавил к теории свой опыт работы каменщиком (забор, фундаменты, стены, крылечки) &nbsp;приступил к облицовке керамогранитом. В качестве подопытных помещений, там где косяки будет меньше всего видно, были выбраны комната топочная - кладовая 24 кв. м. и&nbsp;соседнее&nbsp;помещение лестничный пролет подвала 6 кв. м. итого 30 кв. м..</p><p style="text-align: justify;">Расскажу о нюансах с которыми столкнулся при укладке керамогранита. Если вы решили самостоятельно&nbsp;облицовывать&nbsp;пол плиткой или керамогранитом, я думаю эта статья вам поможет.&nbsp;<span id="more-1201"></span></p><h5>Смета</h5><p style="text-align: justify;">Искал не дорогой керамогранит, чтобы размер плитки был побольше. Смета выглядела примерно так:</p><ul><li>керамогранит 45 х 45 - 148 шт.</li><li>клей плиточный 25 кг. - 5 шт.</li><li>крестики упаковка (200 шт.) &nbsp;- 1 шт.</li><li>затирка 5 кг. - 2 шт.</li></ul><p>Итого: 11 200 р.</p><h5>Инструмент</h5><p style="text-align: justify;">Инструменты были все в наличии:</p><ul><li>болгарка маленькая, к ней диск алмазный 125-ый, отрезной - резать плитку;</li><li>заточный станок - если нужно убрать сколы с плитки после резки болгаркой;</li><li>шпатель с зубчиками - для создания бороздочек в клее&nbsp;уложенном&nbsp;на пол ( с ним проще равнять плитку по уровню);</li><li>шпатель маленький, шпатель широкий - для работы с клеем;</li><li>резиновая киянка - для выравнивания плитки по уровню;</li><li>шпатель резиновый - для затирки швов;</li><li>уровни 30 см., 70 см. - для контроля уровня одной плитки, и плитки к рядом уложенным;</li><li>правило ровное, или уровень 2 метра - для контроля направления укладки плиток;</li><li>угольник - пригодиться, если нужно четко 90 градусов;</li><li>рулетка - должна быть &nbsp;длиннее&nbsp;самой&nbsp;длинной&nbsp;стенки в помещении, понадобится для замера "прямоугольности" комнаты;</li><li>мелок, карандаш;</li><li>отбивка с цветной ниткой - для того, чтобы&nbsp;провести&nbsp;равную линию;</li><li>нитка - если полы очень не ровные нужно будет натягивать для контроля как высоты плитки, так и направления, в моем случае она не пригодилась &nbsp;- была сделана чистовая стяжка, полы были почти&nbsp;идеально&nbsp;ровными.</li></ul><h5>Разметка или откуда начать класть плитку</h5><p style="text-align: justify;">Нужно замерять длину каждой стены, понять что они +/- 1-2 см, то есть на сколько противоположные стены отличаются своей длиной. Попробовать вписать мысленно прямоугольник из плитки и понять где нужно от стены сколько&nbsp;отступить, чтобы не было так - начали класть плитку со стороны которая&nbsp;длиннее, а затем подошли к углу, и поняли что плитка не ложиться параллельно к предыдущей и нужно обрезать на&nbsp;каждой&nbsp;плитке по 1 - 2 см (величина разности дин стенок).</p><p style="text-align: center;"><span style="color: rgb(255, 0, 0);"><a rel="lightbox" href="http://juravskiy.ru/wp-content/uploads/2011/04/not_rectangle_room.png"><img class="size-medium wp-image-1205 aligncenter" title="Лишняя обрезка плитки" src="http://juravskiy.ru/wp-content/uploads/2011/04/not_rectangle_room-300x225.png" alt="not rectangle room 300x225 Как я укладывал керамогранит" height="225" width="300" /></a></span></p><p style="text-align: justify;">Если начать ровно класть, то мы значительно увеличим шансы на ровно уложенную плитку. Это относится к тем плиткам которые мы должны очень ровно выложить, на них бы будем&nbsp;ориентироваться&nbsp;в дальнейшем, и нам не&nbsp;понадобиться проверять направление укладки правилом или&nbsp;длины&nbsp;уровнем.</p><p style="text-align: justify;">Необходимо также учесть объемы резки, выбирайте выгодную для вас позицию расположения плитки, чтобы меньше пришлось резать, так же при покупке плитки выбор размера плитки может&nbsp;зависеть&nbsp;от размеров помещения. Если плитка уже куплена,&nbsp;раскладываем&nbsp;плитку, чтобы понять &nbsp;на в каких местах нам нужно будет резать плитку и какого размера будут обрезки. Удобно, когда режешь плитку пополам обе эти половники пойду в укладку, менее приятная&nbsp;ситуация, когда куча обрезков превращается в строительный мусор.</p><p style="text-align: center;"><a rel="lightbox" href="http://juravskiy.ru/wp-content/uploads/2011/04/otbivka.png"><img class="size-medium wp-image-1204 aligncenter" title="Отбивка угла для кладки плитки" src="http://juravskiy.ru/wp-content/uploads/2011/04/otbivka-300x225.png" alt="otbivka 300x225 Как я укладывал керамогранит" height="225" width="300" /></a></p><p style="text-align: justify;">Исходя из проделанных замеров, выбираем выгодный для нас угол помещения от которого мы начнем укладку. &nbsp;И начинаем разметку.&nbsp;Как я писал выше, в моем случае плитка укладывается на ровную стяжку, ниткой я не пользуюсь но если у вас не совсем ровный пол, ищется самая верхняя точка, к ней прибавляется высота шва и высота плитки, на этой высоте закрепляется нитка и от этой точки она растягивается по тому направлению где будет лежать первая полоса плиток. Вместо&nbsp;нитки&nbsp;можно&nbsp;использовать&nbsp;марки - эти предметы может быть все что угодно (&nbsp;например: временные кусочки плитки &nbsp;закрепленные клеем), на них вы будете&nbsp;ориентироваться&nbsp;уровнем&nbsp;по высоте.&nbsp;&nbsp;Если пол ровный достаточно прочертить прямую линию , я использовал отбивку с&nbsp;цветной&nbsp;ниткой, по&nbsp;которой&nbsp;будет уложен первый ряд плитки, перпендикулярно ей отбивается линия по другой стене.</p><h5>Приготовление клея</h5><p style="text-align: justify;">На упаковке с клеем была написана доза воды для 1&nbsp;килограмма&nbsp;клея, видимо эта пропорция для стенок, так как для пола можно воды добавлять чуть больше, чтобы&nbsp;консистенция&nbsp;была не густой сметаны, а чуть пожиже. В дальнейшем клей будет не так быстро высыхать, &nbsp;дополнительный запас времени при выравнивании плитки не когда не бывает лишним. Но если раствор будет совсем жидким, то он будет вытесняться весом плитки и ничего не получится.</p><h5>Укладка</h5><p style="text-align: justify;">Первый замес был сделан по пропорции написанной на упаковке, был нанесен раствор на пол для первой плитки, плитка уложена, раствор был очень вязкий после пары минут работы уровнем и киянкой, стало понятно, что плитку нужно поднимать так как очень много клея. Загнав шпатель под плитку, пытаюсь ее подковырнуть, прикладываем&nbsp;дополнительные&nbsp;усилия, плитка с неохотой отрывается. Работаем зубчатым&nbsp;шпателем, проводим по всей площади - чтобы убрать лишний клей. Возвращаем плитку на место. Работаем уровнем. Если у вас натянута нитка равняемся по высоте на нее или по марке.</p><p style="text-align: center;"><span style="color: rgb(255, 0, 0);"><a rel="lightbox" href="http://juravskiy.ru/wp-content/uploads/2011/04/strating_from_.png"><img class="size-medium wp-image-1206 aligncenter" title="Укладка плитки от угла комнаты" src="http://juravskiy.ru/wp-content/uploads/2011/04/strating_from_-300x225.png" alt="strating from  300x225 Как я укладывал керамогранит" height="225" width="300" /></a></span></p><p style="text-align: justify;">Важно выложить первый ряд по одной стенке,&nbsp;другой&nbsp;ряд по другой, проверяя направление кладки по линии &nbsp;отбивки или мелка.&nbsp;Иногда&nbsp;раствор попадал на линию, и ее не было видно в этом случае мне помогал длинный&nbsp;уровень&nbsp;или&nbsp;правило &nbsp;- я его прикладывал к одной&nbsp;стороне&nbsp;плиток и&nbsp;смотрел на одной линии ли лежат плитки, а какие выпирают или в давлены. Далее на эти два ряда по одной стене и по другой я&nbsp;ориентировался уровнем на предыдущий ряд плиток выкладывая следующий ряд. Если вы где-то ошиблись, например неровность и один угол плитки выпирает из общей плоскости, то нужно помечать этот угол, и на него не&nbsp;ориентироваться&nbsp;уровнем&nbsp;при&nbsp;укладке&nbsp;следующего ряда, иначе он будет выше (ниже), чем предыдущий.</p><p style="text-align: justify;">В первый вечер я уложил 4 плитки, во второй вечер 17 плиток, в третий еще больше - 20 плиток - опыт растет. Быстрее получается укладывать плитку, если нужной&nbsp;консистенции&nbsp;раствор, поверхность чистая, и не впитывает влагу от клея. Для этого пол грунтуют, или смачивают. В моем случае была&nbsp;застывшая, но влажная стяжка. Клей лежал и не высыхал дольше 10 минут. &nbsp;За счет равного пола я мог нанести зубчатым шпателем раствора на 6 плиток вперед,&nbsp;разровнять, разложит крестики и плитки,&nbsp;проверить&nbsp;ровность&nbsp;&nbsp;по 3 осям, где нужно постучать киянкой.</p><h5>Работа с шпателями</h5><p style="text-align: justify;">Работал тремя шпателями. Узкий служил для того, чтобы убирать излишки раствора из&nbsp;швов&nbsp;и по краям плитки, а также очищать широкий шпатель. Широким я наносил раствор если нужно было нанести&nbsp;более&nbsp;точное количество раствора например для одной плитки, хотя это можно было делать и зубчатым, но для меня&nbsp;показалось&nbsp;это не удобным. Зубчатый шпатель, как писалось ранее оставляет бороздки, которые при укладке плитки&nbsp;продавливаются, за счет этого поверхность плитки&nbsp;полностью&nbsp;покрыта клеем без пустот. За счет бороздочек также проще ровнять плитку по высоте. После каждого рабочего дня, обязательно&nbsp;нужно&nbsp;их мыть, иначе клей потом&nbsp;проблематично&nbsp;удалять.</p><h5>Как пользоваться крестиками</h5><p style="text-align: justify;">Смотрел&nbsp;видео в Интернет, с ключевыми словами "как ложить плитку", "как ложить керамогранит", обращал внимание на крестики. Кто их вставляет в пересечении&nbsp;четырех&nbsp;плиток, кто вставляет&nbsp;четыре&nbsp;крестика рядом с&nbsp;пересечением. Первые четыре плитки я так и&nbsp;пожил, всунул до упора&nbsp;крестик&nbsp;(2.5 мм)&nbsp;в итоге у меня шов получился 5 мм. странно подумал я и не обратил внимание, только на&nbsp;следующий&nbsp;день, присмотревшись к торцам плитки, я понял, где эти 2.5 мм.</p><p style="text-align: center;"><span style="color: rgb(255, 0, 0);"><a rel="lightbox" href="http://juravskiy.ru/wp-content/uploads/2011/04/krestiki.png"><img class="aligncenter size-medium wp-image-1207" title="Правильное размещение крестика в шве между плитками" src="http://juravskiy.ru/wp-content/uploads/2011/04/krestiki-300x225.png" alt="krestiki 300x225 Как я укладывал керамогранит" height="225" width="300" /></a></span></p><p style="text-align: justify;">Плитка&nbsp;имеет&nbsp;расширение у основания, и сужается&nbsp;к верху в строну центра плитки, за счет этого крестики и держатся. А выкать их по четыре штуки в углы плиток &nbsp;- не по назначению.</p><p style="text-align: justify;">На рисунке я постарался наглядно показать, верхняя ситуация когда крестик лежит в шве, и образует заявленное на упаковке&nbsp;расстояние. В нижней ситуации крестик вставляют в шов вертикально, при этом&nbsp;расстояние&nbsp;между плитками керамогранита&nbsp;увеличивается, как дело обстоит с кафелем я не в курсе. Но по идеи кафель не такой толстый наверно, там без разницы положение крестика, что вертикально, что&nbsp;горизонтально.</p><p style="text-align: justify;">&nbsp;</p><p style="text-align: justify;">Следующие объекты - ванные комнаты и крылечки. В плане сделать душевую из плитки - &nbsp;без&nbsp;использования&nbsp;акрилового дна.&nbsp;Мозаика&nbsp;на стенах.</p><p style="text-align: justify;"><em>To be continued ...</em></p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/BIOmhc9qCIyImzUTuK01vUJXgb4/0/da"><img src="http://feedads.g.doubleclick.net/~a/BIOmhc9qCIyImzUTuK01vUJXgb4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/BIOmhc9qCIyImzUTuK01vUJXgb4/1/da"><img src="http://feedads.g.doubleclick.net/~a/BIOmhc9qCIyImzUTuK01vUJXgb4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=gUDj5-FlcZg:QYEOvmwETc8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=gUDj5-FlcZg:QYEOvmwETc8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=gUDj5-FlcZg:QYEOvmwETc8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=gUDj5-FlcZg:QYEOvmwETc8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=gUDj5-FlcZg:QYEOvmwETc8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=gUDj5-FlcZg:QYEOvmwETc8:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=gUDj5-FlcZg:QYEOvmwETc8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=gUDj5-FlcZg:QYEOvmwETc8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=gUDj5-FlcZg:QYEOvmwETc8:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=gUDj5-FlcZg:QYEOvmwETc8:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=gUDj5-FlcZg:QYEOvmwETc8:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=gUDj5-FlcZg:QYEOvmwETc8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=gUDj5-FlcZg:QYEOvmwETc8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=gUDj5-FlcZg:QYEOvmwETc8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=gUDj5-FlcZg:QYEOvmwETc8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=gUDj5-FlcZg:QYEOvmwETc8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=gUDj5-FlcZg:QYEOvmwETc8:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/gUDj5-FlcZg" height="1" width="1"/>]]></content:encoded><description>Строимся. Дело дошло до полов - укладка плитки не мой конек, но всегда приходиться что-то делать первый раз. Почитав теорию о том как класть плитку, хитрости и тонкости профи, которые пишут статьи о плитке в Интернет , прибавил к теории свой опыт работы каменщиком (забор, фундаменты, стены, крылечки) &amp;#160;приступил к облицовке керамогранитом. В качестве подопытных [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1201</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">6</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1201</feedburner:origLink></item><item><title>Microemu — J2ME эмулятор для нестандартных решений</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/qPxfslMD9-Y/</link><category>J2ME</category><category>Java</category><category>Cinterion</category><category>TC65</category><category>эмулятор j2me</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Tue, 19 Apr 2011 10:00:36 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1128</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;">Искал универсальный j2me эмулятор, в том плане, что он мог бы эмулировать любое устройство, в котором может исполняться j2me приложение. Например есть устройства с поддержкой Java IMP-NG Virtual Machine Open Platform, для которых отсутствуют эмуляторы, как для мобильных телефонов. Например модули и терминалы Cinterion (Siemens).</p><p><span id="more-1128"></span></p><p style="text-align: justify;"><a href="http://www.microemu.org" target="_blank">Microemu</a> позволяет подключать к самому эмулятору библиотеки (jar) специфичные для устройства.</p><p style="text-align: justify;">Открытый исходный код, дает возможность создавать программные эмуляторы для устройств не имеющих дисплея, а также эмулировать прерывания на GPIO портах.</p><p style="text-align: justify;">В следующей статье расскажу на примере, как можно запустить приложение написанное под Cinterion на данном эмуляторе Microemu.</p><p>&nbsp;</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/MZxfkvKpM5CaA61k0sDYHkZLij8/0/da"><img src="http://feedads.g.doubleclick.net/~a/MZxfkvKpM5CaA61k0sDYHkZLij8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/MZxfkvKpM5CaA61k0sDYHkZLij8/1/da"><img src="http://feedads.g.doubleclick.net/~a/MZxfkvKpM5CaA61k0sDYHkZLij8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=qPxfslMD9-Y:3-Clbl9uj9M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=qPxfslMD9-Y:3-Clbl9uj9M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=qPxfslMD9-Y:3-Clbl9uj9M:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=qPxfslMD9-Y:3-Clbl9uj9M:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=qPxfslMD9-Y:3-Clbl9uj9M:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=qPxfslMD9-Y:3-Clbl9uj9M:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=qPxfslMD9-Y:3-Clbl9uj9M:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=qPxfslMD9-Y:3-Clbl9uj9M:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=qPxfslMD9-Y:3-Clbl9uj9M:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=qPxfslMD9-Y:3-Clbl9uj9M:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=qPxfslMD9-Y:3-Clbl9uj9M:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=qPxfslMD9-Y:3-Clbl9uj9M:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=qPxfslMD9-Y:3-Clbl9uj9M:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=qPxfslMD9-Y:3-Clbl9uj9M:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=qPxfslMD9-Y:3-Clbl9uj9M:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=qPxfslMD9-Y:3-Clbl9uj9M:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=qPxfslMD9-Y:3-Clbl9uj9M:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/qPxfslMD9-Y" height="1" width="1"/>]]></content:encoded><description>Искал универсальный j2me эмулятор, в том плане, что он мог бы эмулировать любое устройство, в котором может исполняться j2me приложение. Например есть устройства с поддержкой Java IMP-NG Virtual Machine Open Platform, для которых отсутствуют эмуляторы, как для мобильных телефонов. Например модули и терминалы Cinterion (Siemens). Microemu позволяет подключать к самому эмулятору библиотеки (jar) специфичные для устройства. Открытый [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1128</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1128</feedburner:origLink></item><item><title>Обзор книги «Cloud Application Architectures», George Reese</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/Drc22eZ_wfQ/</link><category>Colud computing</category><category>Cloud computing</category><category>IaaS</category><category>PaaS</category><category>SaaS</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Mon, 18 Apr 2011 10:42:14 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1190</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;">Прочитал. Сразу скажу название не говорит о содержании книги. В книге автор рассматривает поверхностно проблемы с которыми они столкнулись в результате переноса своего приложение в IaaS, а также делится некоторым опытом по использованию утилит и библиотек для работы с Amazon WS.<br /> Проблемы архитектуры затронуты поверхностно, рассказано то, что и так очевидно. В книге так же представлены проекты "пионеры" как в IaaS, PaaS  и SaaS. Затронуты экономические выгоды приложения в облаке, мульти-аренда (multi-tenant) инфраструктуры. Ожидал полезных рекомендаций по подбору архитектуры, и выбору технологий - мало.<br /> Книга будет полезна для тех, кто не разу не слышал что такое "облачные" вычисления (cloud computing), и хочет начать погружаться в эту современную тенденцию.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/aqTw3tIExEIZTF8oKJhbrpRnaSw/0/da"><img src="http://feedads.g.doubleclick.net/~a/aqTw3tIExEIZTF8oKJhbrpRnaSw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/aqTw3tIExEIZTF8oKJhbrpRnaSw/1/da"><img src="http://feedads.g.doubleclick.net/~a/aqTw3tIExEIZTF8oKJhbrpRnaSw/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Drc22eZ_wfQ:wEGfUChkSak:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Drc22eZ_wfQ:wEGfUChkSak:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Drc22eZ_wfQ:wEGfUChkSak:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Drc22eZ_wfQ:wEGfUChkSak:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Drc22eZ_wfQ:wEGfUChkSak:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Drc22eZ_wfQ:wEGfUChkSak:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Drc22eZ_wfQ:wEGfUChkSak:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Drc22eZ_wfQ:wEGfUChkSak:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Drc22eZ_wfQ:wEGfUChkSak:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Drc22eZ_wfQ:wEGfUChkSak:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Drc22eZ_wfQ:wEGfUChkSak:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Drc22eZ_wfQ:wEGfUChkSak:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Drc22eZ_wfQ:wEGfUChkSak:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Drc22eZ_wfQ:wEGfUChkSak:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Drc22eZ_wfQ:wEGfUChkSak:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Drc22eZ_wfQ:wEGfUChkSak:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Drc22eZ_wfQ:wEGfUChkSak:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/Drc22eZ_wfQ" height="1" width="1"/>]]></content:encoded><description>Прочитал. Сразу скажу название не говорит о содержании книги. В книге автор рассматривает поверхностно проблемы с которыми они столкнулись в результате переноса своего приложение в IaaS, а также делится некоторым опытом по использованию утилит и библиотек для работы с Amazon WS. Проблемы архитектуры затронуты поверхностно, рассказано то, что и так очевидно. В книге так же [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1190</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1190</feedburner:origLink></item><item><title>Basic HTTP Authentication и HTTPServlet</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/HndMDDwZFd4/</link><category>Java</category><category>Безопасность</category><category>Сеть</category><category>BASE64Decoder</category><category>Basic HTTP Authentication</category><category>HTTPServlet</category><category>WWW-Authenticate</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Fri, 25 Mar 2011 23:00:09 PDT</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1176</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;">Сегодня мы посмотрим как реализовать Basic HTTP Authentication в Java Servlet. Это самый простой способ авторизации,  так как пара логин и пароль передается в открытом виде, советую его использовать совместно с SSL или использовать Digest Access Authentication, когда пароль передается  хешированом виде с добавлением произвольной строки.<br /> Для начала вспомним как это работает. <span id="more-1176"></span></p><h3>Описание Basic HTTP Authentication</h3><p style="text-align: justify;">1. Клиент запрашивает страницу, для которой необходима авторизация, но не посылает логин и пароль. HTTP запрос может выглядеть так:</p><pre>GET /private/index.html HTTP/1.1
Host: localhost</pre><p style="text-align: justify;"><a name="p401"></a>2. Сервер отвечает кодом 401, говоря клиенту о том, что необходимы авторизационные данные логин и пароль, для просмотра содержимого. HTTP ответ сервера может выглядеть так:</p><pre>HTTP/1.1 401 Authorization Required
Server: HTTPd/1.0
Date: Sat, 27 Nov 2010 10:18:15 GMT
WWW-Authenticate: Basic realm="Secure Area"
Content-Type: text/html
Content-Length: 14

some html data</pre><p style="text-align: justify;">3. Клиент получает ответ сервера, и предлагает пользователю ввести логин и пароль, введенные данные он преобразует в значение  base64encode(login + ":" + password)). HTTP запрос для login=Vitaliy и password =mypassword выглядит так:</p><pre>GET /private/index.html HTTP/1.1
Host: localhost
Authorization: Basic Vml0YWxpeTpteXBhc3N3b3Jk</pre><p style="text-align: justify;">Сервер получает запрос клиента, разбирает его, из секции заголовка Authorization, и преобразует значение  base64decode("Vml0YWxpeTpteXBhc3N3b3Jk"), получая логин и пароль, которые ввел пользователь, сравнивает их с базой пользователей, и при успешно найденой записи для пары Vitaliy:mypassword, возвращает защищенное содержимое, в противном случае возвращаемся к пункту 2.</p><pre>HTTP/1.1 200 OK
Server: HTTPd/1.0
Date: Sat, 27 Nov 2011 10:19:07 GMT
Content-Type: text/html
Content-Length: 18

some html data ...</pre><p>&nbsp;</p><h3>Реализация в HTTP Servlet</h3><pre class="brush:java;">import sun.misc.BASE64Decoder;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.StringTokenizer;

public class HTTPAuthServlet extends HttpServlet {

   protected boolean authenticate(HttpServletRequest request, HttpServletResponse resp, String login, String password) throws IOException {
        String authHeader = request.getHeader("Authorization");
        if (authHeader != null) {
            StringTokenizer st = new StringTokenizer(authHeader);
            if (st.hasMoreTokens()) {
                String basic = st.nextToken();
                if (basic.equalsIgnoreCase("Basic")) {
                    BASE64Decoder decoder = new BASE64Decoder();
                    String userPass = new String(decoder.decodeBuffer(st.nextToken()));
                    int p = userPass.indexOf(":");
                    if (p != -1) {
                        String userID = userPass.substring(0, p);
                        String pass = userPass.substring(p + 1);
                        if ((userID.trim().equals(login)) &amp;&amp;
                                (pass.trim().equals(password))) {
                            return true;
                        }
                    }
                }
            }
        }
        requestAuthData(resp);
        return false;
    }

    protected void requestAuthData(HttpServletResponse resp) {
         String s = "Basic realm=\"Secure Area\"";
         resp.setHeader("WWW-Authenticate", s);
         resp.setStatus(401);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        if(!authenticate(req, resp,"Vitaliy", "mypassword")) return;
        //... send private data
        sendPrivateData(...);
    }

}</pre><p style="text-align: justify;">При обработке GET запроса, происходит вызов метода authenticate, в параметрах передаются логин и пароль, для которых разрешен доступ, также это может быть и список пользователей для которых разрешен доступ. В методе authenticate происходит чтение заголовка запроса, если нет данных о авторизации, возвращается 401 ответ (<a href="#p401">пункт 2</a>).</p><p style="text-align: justify;">В целях безопасности, существует практика, когда 401 посылается клиенту несколько раз 3-4 раза, если он исчерпал попытки авторизации, то возвращается 403 (Forbidden).</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/DX9xoJYFzBkd4FVzxCHY3CUW9zc/0/da"><img src="http://feedads.g.doubleclick.net/~a/DX9xoJYFzBkd4FVzxCHY3CUW9zc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/DX9xoJYFzBkd4FVzxCHY3CUW9zc/1/da"><img src="http://feedads.g.doubleclick.net/~a/DX9xoJYFzBkd4FVzxCHY3CUW9zc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=HndMDDwZFd4:TE_mWWcr0x4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=HndMDDwZFd4:TE_mWWcr0x4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=HndMDDwZFd4:TE_mWWcr0x4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=HndMDDwZFd4:TE_mWWcr0x4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=HndMDDwZFd4:TE_mWWcr0x4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=HndMDDwZFd4:TE_mWWcr0x4:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=HndMDDwZFd4:TE_mWWcr0x4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=HndMDDwZFd4:TE_mWWcr0x4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=HndMDDwZFd4:TE_mWWcr0x4:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=HndMDDwZFd4:TE_mWWcr0x4:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=HndMDDwZFd4:TE_mWWcr0x4:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=HndMDDwZFd4:TE_mWWcr0x4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=HndMDDwZFd4:TE_mWWcr0x4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=HndMDDwZFd4:TE_mWWcr0x4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=HndMDDwZFd4:TE_mWWcr0x4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=HndMDDwZFd4:TE_mWWcr0x4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=HndMDDwZFd4:TE_mWWcr0x4:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/HndMDDwZFd4" height="1" width="1"/>]]></content:encoded><description>Сегодня мы посмотрим как реализовать Basic HTTP Authentication в Java Servlet. Это самый простой способ авторизации, так как пара логин и пароль передается в открытом виде, советую его использовать совместно с SSL или использовать Digest Access Authentication, когда пароль передается хешированом виде с добавлением произвольной строки. Для начала вспомним как это работает.  Описание Basic HTTP [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1176</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1176</feedburner:origLink></item><item><title>UPnP Media Server для XBOX 360 и Play Station 3</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/GT4QqprtRv8/</link><category>Java</category><category>Ubuntu</category><category>XBOX 360</category><category>Администрирование</category><category>dlna</category><category>media server</category><category>ps3</category><category>upnp</category><category>xbox 360</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Mon, 07 Mar 2011 22:00:11 PST</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1167</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;"><img class="alignleft size-full wp-image-1172" src="http://juravskiy.ru/wp-content/uploads/2011/03/ps3ms_logo.png" alt="ps3ms logo UPnP Media Server для XBOX 360 и Play Station 3" width="32" height="32" title="UPnP Media Server для XBOX 360 и Play Station 3" />Windows по умолчанию поддерживает  Upnp и XBOX без проблем воспроизводит видео из папок с общим доступом, что нельзя сказать о samba сервере в Ubuntu. Открыв в общий доступ медиа папки через samba, xbox не увидит их. Для этих целей необходимо дополнительное программное обеспечение, такое как ps3mediaserver.</p><p><span id="more-1167"></span></p><p style="text-align: justify;"><a href="http://code.google.com/p/ps3mediaserver/" target="_blank">Ps3mediaserver</a> полностью написана на Java и может работать во всех операционных системах, а также муксирвоать те форматы, которые не поддерживаются в xbox. Например mkv, mp4, flac, ogg и мн. другие, тоже можно сказать и про графические форматы.</p><p style="text-align: center;"><a rel="lightbox" href="http://juravskiy.ru/wp-content/uploads/2011/03/ps3_detecting.jpg"><img class="aligncenter size-medium wp-image-1169" title="ps3 detecting with ps3 media server" src="http://juravskiy.ru/wp-content/uploads/2011/03/ps3_detecting-300x219.jpg" alt="ps3 detecting 300x219 UPnP Media Server для XBOX 360 и Play Station 3" width="300" height="219" /></a></p><p style="text-align: justify;">Кроме Play Station 3 и XBox 360, поддерживает такие устройства как FreeboxHD, WDTVLive, FreecomMusicPal, Samsung, XBMC, PopcornHour, BraviaEX, Streamium, Bravia4500, Bravia5500, Philips, Realtek, Kuro.</p><p style="text-align: center;"><a rel="lightbox" href="http://juravskiy.ru/wp-content/uploads/2011/03/upnp_share_folders.png"><img class="aligncenter size-medium wp-image-1168" title="upnp share folders with ps2 media server" src="http://juravskiy.ru/wp-content/uploads/2011/03/upnp_share_folders-300x165.png" alt="upnp share folders 300x165 UPnP Media Server для XBOX 360 и Play Station 3" width="300" height="165" /></a></p><p style="text-align: justify;">Скачав архив с программой, достаточно распаковать и запустить PSM.sh. В настройках указать директории, к которым необходимо предоставить доступ, по умолчанию доступ ко всем дискам.</p><p style="text-align: justify;">Еще об одном способе поднятия upnp сервера в Ubuntu я писал в статье <a title="uShare медиасервер для XBOX и PS3" href="http://juravskiy.ru/?p=1332" target="_blank">uShare медиасервер для XBOX и PS3</a>.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/p-SMnu1EYzEvKNnxTS_hJ_xR_e4/0/da"><img src="http://feedads.g.doubleclick.net/~a/p-SMnu1EYzEvKNnxTS_hJ_xR_e4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/p-SMnu1EYzEvKNnxTS_hJ_xR_e4/1/da"><img src="http://feedads.g.doubleclick.net/~a/p-SMnu1EYzEvKNnxTS_hJ_xR_e4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=GT4QqprtRv8:sGQV-rnq-bA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=GT4QqprtRv8:sGQV-rnq-bA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=GT4QqprtRv8:sGQV-rnq-bA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=GT4QqprtRv8:sGQV-rnq-bA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=GT4QqprtRv8:sGQV-rnq-bA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=GT4QqprtRv8:sGQV-rnq-bA:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=GT4QqprtRv8:sGQV-rnq-bA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=GT4QqprtRv8:sGQV-rnq-bA:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=GT4QqprtRv8:sGQV-rnq-bA:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=GT4QqprtRv8:sGQV-rnq-bA:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=GT4QqprtRv8:sGQV-rnq-bA:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=GT4QqprtRv8:sGQV-rnq-bA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=GT4QqprtRv8:sGQV-rnq-bA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=GT4QqprtRv8:sGQV-rnq-bA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=GT4QqprtRv8:sGQV-rnq-bA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=GT4QqprtRv8:sGQV-rnq-bA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=GT4QqprtRv8:sGQV-rnq-bA:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/GT4QqprtRv8" height="1" width="1"/>]]></content:encoded><description>Windows по умолчанию поддерживает  Upnp и XBOX без проблем воспроизводит видео из папок с общим доступом, что нельзя сказать о samba сервере в Ubuntu. Открыв в общий доступ медиа папки через samba, xbox не увидит их. Для этих целей необходимо дополнительное программное обеспечение, такое как ps3mediaserver. Ps3mediaserver полностью написана на Java и может работать во [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1167</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1167</feedburner:origLink></item><item><title>Настройка Emacs под Erlang</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/oCdyXSB5j8I/</link><category>Erlang</category><category>Ubuntu</category><category>distel</category><category>emacs</category><category>emacs + erlang</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Sat, 05 Mar 2011 23:00:09 PST</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1152</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;">Для существующих IDEs, не нашел подходядщих удобных плагинов для разработки, решил поискать, какие редакторы используют для разработки под erlang в ubuntu. Emacs преобладает, о над всем другими по пулярности. В итоге поискав информацию о настройке Emacs + Erlang, получилось у меня следующее.<br /> <span id="more-1152"></span><br /> Устанваливаем Erlang, или проверям, что он установлен:</p><pre class="brush:shell;gutter:false;">sudo apt-get install erlang</pre><p style="text-align: justify;">тоже относиться к emacs, также устанавливаем дл янего дополнительные пакеты Erlang mode:</p><pre class="brush:shell;gutter:false;">sudo apt-get install emacs emacs-goodies-el erlang-mode</pre><p style="text-align: justify;">Устанваливаем distel, он обеспечивает такие функции как поиск модулей, поиск функции по сигнатуре, и многие другие удобные вещи для разработчика.</p><p>Скачиваем исходники с <a href="https://github.com/massemanet/distel" target="_blank">GitHub</a>, разархивруем, и устанавливаем:</p><pre class="brush:shell;gutter:false;">export prefix=~/.emacs.d
make -e install</pre><p>Редактируем файл ~/.emacs , он должен иметь в себе следующее содержимое:</p><pre class="brush:shell;gutter:false">;; Erlang mode
(setq erlang-root-dir "/usr/lib/erlang")
(setq load-path (cons "/usr/lib/erlang/lib/tools-2.6.5/emacs" load-path))
(setq exec-path (cons "/usr/lib/erlang/bin" exec-path))
(setq erlang-man-root-dir "/usr/lib/erlang/man")(require ‘erlang-start)
;; Distel
(add-to-list ‘load-path "~/.emacs.d/share/distel/share/distel/elisp")
(require ‘distel)
(distel-setup)
;; Some Erlang customizations
(add-hook ‘erlang-mode-hook
(lambda ()
    ;; when starting an Erlang shell in Emacs, with the node
 ;; short name set to vitaliy
(setq inferior-erlang-machine-options ‘("-sname" "vitaliy"))
;; add Erlang functions to an imenu menu
(imenu-add-to-menubar "imenu")))
;; A number of the erlang-extended-mode key bindings are useful in the
;; shell too
(defconst distel-shell-keys
    ‘(("\C-\M-i"   erl-complete)
    ("\M-?"      erl-complete)
    ("\M-."      erl-find-source-under-point)
    ("\M-,"      erl-find-source-unwind)
    ("\M-*"      erl-find-source-unwind)
  )
    "Additional keys to bind when in Erlang shell.")

(add-hook ‘erlang-shell-mode-hook
(lambda ()
    ;; add some Distel bindings to the Erlang shell
    (dolist (spec distel-shell-keys)
    (define-key erlang-shell-mode-map (car spec) (cadr spec)))))</pre><p style="text-align: justify;">Настравиаем пути к файлам и диеркториям Erlang и Distel.</p><p style="text-align: justify;">Запускаем Emacs и можно работать, созраняем файл с разирением erl, должно появиться меню Compile.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/66pegJ9Gx3XKVqhi6jN47Ex03Wg/0/da"><img src="http://feedads.g.doubleclick.net/~a/66pegJ9Gx3XKVqhi6jN47Ex03Wg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/66pegJ9Gx3XKVqhi6jN47Ex03Wg/1/da"><img src="http://feedads.g.doubleclick.net/~a/66pegJ9Gx3XKVqhi6jN47Ex03Wg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oCdyXSB5j8I:2AxhaoCng7k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oCdyXSB5j8I:2AxhaoCng7k:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=oCdyXSB5j8I:2AxhaoCng7k:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oCdyXSB5j8I:2AxhaoCng7k:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oCdyXSB5j8I:2AxhaoCng7k:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oCdyXSB5j8I:2AxhaoCng7k:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oCdyXSB5j8I:2AxhaoCng7k:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=oCdyXSB5j8I:2AxhaoCng7k:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oCdyXSB5j8I:2AxhaoCng7k:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oCdyXSB5j8I:2AxhaoCng7k:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=oCdyXSB5j8I:2AxhaoCng7k:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oCdyXSB5j8I:2AxhaoCng7k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=oCdyXSB5j8I:2AxhaoCng7k:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oCdyXSB5j8I:2AxhaoCng7k:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=oCdyXSB5j8I:2AxhaoCng7k:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oCdyXSB5j8I:2AxhaoCng7k:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=oCdyXSB5j8I:2AxhaoCng7k:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/oCdyXSB5j8I" height="1" width="1"/>]]></content:encoded><description>Для существующих IDEs, не нашел подходядщих удобных плагинов для разработки, решил поискать, какие редакторы используют для разработки под erlang в ubuntu. Emacs преобладает, о над всем другими по пулярности. В итоге поискав информацию о настройке Emacs + Erlang, получилось у меня следующее. Устанваливаем Erlang, или проверям, что он установлен: sudo apt-get install erlang тоже относиться [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1152</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">7</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1152</feedburner:origLink></item><item><title>Emakefile</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/5_Po5CTTfUc/</link><category>Erlang</category><category>Заметки</category><category>Emakefile</category><category>erl</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Fri, 25 Feb 2011 23:00:45 PST</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1146</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p>Команда <strong>erl -make</strong> в директории с <em>Emakefile</em> компилирует erlang проект</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/QSOyto9aMLOmoUy7TbljzbkHDJE/0/da"><img src="http://feedads.g.doubleclick.net/~a/QSOyto9aMLOmoUy7TbljzbkHDJE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/QSOyto9aMLOmoUy7TbljzbkHDJE/1/da"><img src="http://feedads.g.doubleclick.net/~a/QSOyto9aMLOmoUy7TbljzbkHDJE/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5_Po5CTTfUc:pbmMr85ndyU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5_Po5CTTfUc:pbmMr85ndyU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=5_Po5CTTfUc:pbmMr85ndyU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5_Po5CTTfUc:pbmMr85ndyU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5_Po5CTTfUc:pbmMr85ndyU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5_Po5CTTfUc:pbmMr85ndyU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5_Po5CTTfUc:pbmMr85ndyU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=5_Po5CTTfUc:pbmMr85ndyU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5_Po5CTTfUc:pbmMr85ndyU:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5_Po5CTTfUc:pbmMr85ndyU:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=5_Po5CTTfUc:pbmMr85ndyU:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5_Po5CTTfUc:pbmMr85ndyU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=5_Po5CTTfUc:pbmMr85ndyU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5_Po5CTTfUc:pbmMr85ndyU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=5_Po5CTTfUc:pbmMr85ndyU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5_Po5CTTfUc:pbmMr85ndyU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=5_Po5CTTfUc:pbmMr85ndyU:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/5_Po5CTTfUc" height="1" width="1"/>]]></content:encoded><description>Команда erl -make в директории с Emakefile компилирует erlang проект</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1146</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1146</feedburner:origLink></item><item><title>Яркость дисплея в Ubuntu</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/mi7109FXJR8/</link><category>Ubuntu</category><category>Заметки</category><category>setpci</category><category>ubuntu</category><category>ubuntu nc10 brightness</category><category>яркость дисплея</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Fri, 25 Feb 2011 10:18:53 PST</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1149</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p>Яркость дисплея на своем ноутбуке я регулирую вызовом команды setpci</p><pre class="brush:shell;gutter:false;">sudo setpci -s 00:02.1 f4.b=99</pre><p>изменяя парметр b от 0 до 99, можно установить как минимальную - 0 так и макисмальную яркость подсветки дисплея.</p><p>Обычно приходиться использовать команду, когда ноутбук работает от аккамулятора.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/SOwX_7IaZQ48LtWTXNNIRThcSEQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/SOwX_7IaZQ48LtWTXNNIRThcSEQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/SOwX_7IaZQ48LtWTXNNIRThcSEQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/SOwX_7IaZQ48LtWTXNNIRThcSEQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=mi7109FXJR8:YyhyHCCuDWg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=mi7109FXJR8:YyhyHCCuDWg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=mi7109FXJR8:YyhyHCCuDWg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=mi7109FXJR8:YyhyHCCuDWg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=mi7109FXJR8:YyhyHCCuDWg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=mi7109FXJR8:YyhyHCCuDWg:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=mi7109FXJR8:YyhyHCCuDWg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=mi7109FXJR8:YyhyHCCuDWg:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=mi7109FXJR8:YyhyHCCuDWg:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=mi7109FXJR8:YyhyHCCuDWg:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=mi7109FXJR8:YyhyHCCuDWg:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=mi7109FXJR8:YyhyHCCuDWg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=mi7109FXJR8:YyhyHCCuDWg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=mi7109FXJR8:YyhyHCCuDWg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=mi7109FXJR8:YyhyHCCuDWg:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=mi7109FXJR8:YyhyHCCuDWg:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=mi7109FXJR8:YyhyHCCuDWg:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/mi7109FXJR8" height="1" width="1"/>]]></content:encoded><description>Яркость дисплея на своем ноутбуке я регулирую вызовом команды setpci sudo setpci -s 00:02.1 f4.b=99 изменяя парметр b от 0 до 99, можно установить как минимальную - 0 так и макисмальную яркость подсветки дисплея. Обычно приходиться использовать команду, когда ноутбук работает от аккамулятора.</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1149</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1149</feedburner:origLink></item><item><title>Получение midnight timestamp в Postgre SQL</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/bNrgETgYh2E/</link><category>Postgres SQL</category><category>RDBMS</category><category>date</category><category>date_trunc</category><category>funtcions</category><category>midnight</category><category>PostgreSQL</category><category>time</category><category>Timestamp</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Wed, 23 Feb 2011 08:09:21 PST</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1132</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;">Задача: В выборке необходимо найти записи с датой, равной текущему дню в 00:00:00.<br /> Нашел константу  'today' в документации к postgres, использую  ее следующим образом:</p><pre>timestamp 'today'</pre><p style="text-align: justify;">или если нужен unix timestamp, то</p><pre>timestamp 'today'::abstime::int::bigint</pre><p style="text-align: justify;">Возникла проблема, при использовании данной конструкции в вьювах (views), при компиляции вместо константы, строго подставлялась дата с днем создания вьюва.<br /> Поискав в документации, нашел функцию <a rel="noindex" href="http://developer.postgresql.org/pgdocs/postgres/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC" target="_blank">date_trunc</a>.<br /> Заменил на следующий вызов:</p><pre>date_trunc('day', current_timestamp)</pre><p style="text-align: justify;">или если нужен unix timestamp, то</p><pre>date_trunc('day', current_timestamp)::abstime::int::bigint</pre></sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/tk65BCfUEeWgLYgw_FIGqnlSFJw/0/da"><img src="http://feedads.g.doubleclick.net/~a/tk65BCfUEeWgLYgw_FIGqnlSFJw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tk65BCfUEeWgLYgw_FIGqnlSFJw/1/da"><img src="http://feedads.g.doubleclick.net/~a/tk65BCfUEeWgLYgw_FIGqnlSFJw/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=bNrgETgYh2E:tXmHJOy-9aM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=bNrgETgYh2E:tXmHJOy-9aM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=bNrgETgYh2E:tXmHJOy-9aM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=bNrgETgYh2E:tXmHJOy-9aM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=bNrgETgYh2E:tXmHJOy-9aM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=bNrgETgYh2E:tXmHJOy-9aM:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=bNrgETgYh2E:tXmHJOy-9aM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=bNrgETgYh2E:tXmHJOy-9aM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=bNrgETgYh2E:tXmHJOy-9aM:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=bNrgETgYh2E:tXmHJOy-9aM:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=bNrgETgYh2E:tXmHJOy-9aM:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=bNrgETgYh2E:tXmHJOy-9aM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=bNrgETgYh2E:tXmHJOy-9aM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=bNrgETgYh2E:tXmHJOy-9aM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=bNrgETgYh2E:tXmHJOy-9aM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=bNrgETgYh2E:tXmHJOy-9aM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=bNrgETgYh2E:tXmHJOy-9aM:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/bNrgETgYh2E" height="1" width="1"/>]]></content:encoded><description>Задача: В выборке необходимо найти записи с датой, равной текущему дню в 00:00:00. Нашел константу 'today' в документации к postgres, использую  ее следующим образом: timestamp 'today' или если нужен unix timestamp, то timestamp 'today'::abstime::int::bigint Возникла проблема, при использовании данной конструкции в вьювах (views), при компиляции вместо константы, строго подставлялась дата с днем создания вьюва. Поискав в [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1132</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1132</feedburner:origLink></item><item><title>Преобразование Java объектов в JSON</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/Pb1Bgzyvs8w/</link><category>Java</category><category>Java Script</category><category>Информационные технологии</category><category>JSON</category><category>reflection</category><category>аннотации</category><category>преобразование в JSON</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Tue, 04 Jan 2011 01:00:31 PST</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1105</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p><code></code><p style="text-align: justify;">Существует большое количество реализаций библиотек для работы с форматом JSON. В процессе изучения исходных кодов нескольких библиотек, выяснилось, что способы преобразования в JSON и обратно могут быть разные. Для преобразование Java объекта в JSON формат, наиболее простой способ, это использование Java аннотации для полей класса и функции формирования JSON строки. Рассмотрим на примере:<br /> <span id="more-1105"></span></p><pre class="brush:java;">package example.json;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(value=ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface JsonName {
    String id();
}</pre><p style="text-align: justify;">Аннотацией необходимо пометить поля класса, который должен быть преобразован в JSON формат, так же поля класса могут содержать ссылки на массивы, объектов поля которых тоже помечены аннотацией.<br /> Например так:</p><pre class="brush:java;">package example.json.data;
import example.json.JsonName;

public class People {
@JsonName(id="name")
private String name;
@JsonName(id="age")
private Integer age;
private Integer debugId;
@JsonName(id="id")
priavte Integer id;
@JsonName{id="children"}
private People [] children;

/**
 * getters and setters
*/
}</pre><p style="text-align: justify;">Преобразованием объекта помеченного аннотацией, занимается класс JsonWriter, в котором реализована рекурсивная процедура формирования строки, рекурсивный вызов происходит для тех полей, которые являются массивом, и помечены аннотацией. Если вы хотите помечать коллекции объектов, и также преобразовывать их в строки формата JSON, то я думаю не сложно модифицировать функцию под выполнение этой задачи.</p><pre class="brush:java;">package example.json;
import java.lang.reflect.Field;

public class JsonWriter {
    public String getJsonString(Object o) {
        return buildJson(o);
    }

    /**
     * Создает JSON строку на основе класса переданного в параметре о. Поля класса, которые должны участовать в процесседолжны быть помечены анотацией {@link JsonName}.
     * @param o объект поля которого помечены аннотацией {@link JsonName}
     * @return json string
     */
    private String buildJson(Object o) {
        StringBuffer json = new StringBuffer();
        json.append("{");
        Field [] fs =  o.getClass().getDeclaredFields();
        for (int i = 0; i &lt; fs.length; i++) {
        	Field f = fs[i];
        	f.setAccessible(true);
        	Object value = null;
    		try {
    			value = f.get(o);
    		} catch (IllegalArgumentException e1) {
    			e1.printStackTrace();
    		} catch (IllegalAccessException e1) {
    			e1.printStackTrace();
    		}
    		if(f.isAnnotationPresent(JsonName.class) &amp;&amp; value != null) {
    			json.append("\"")
    			.append(f.getAnnotation(JsonName.class).id())
    			.append("\"")
    			.append(":");
    			try {
    				if(value instanceof String) {
    					json.append("\"")
    					.append(value.toString())
    					.append("\"");
    				} else if(f.getType().isArray()) {
    					json.append("[");
    					Object[] ar = (Object[])value;
    					for (int j = 0; j &lt; ar.length; j++) {
    						json.append(buildJson(ar[j]));
    						if(j != ar.length - 1) json.append(",");
    					}
    					json.append("]");
    				} else {
    					json.append(value.toString());
    				}
    				if(i != fs.length - 1) json.append(",");
    			} catch (IllegalArgumentException e) {
    				e.printStackTrace();
    			}
    		}
    	}
        json.append("}");
        return json.toString();
    }
}</pre><p style="text-align: justify;">Несложно заметить что для поиска полей, помеченных аннотациями используется механизм  отражения (reflection).<br /> Пример использования всего выше перечисленного:</p><pre class="brush:java;">People man = new People()
    .setId(1)
    .setName("Ivan")
    .setAge(26);
man.setChildren(new People[] {
    new People().setId(2).setName("Alex").setAge(5)
});
System.out.println(new JsonWriter().buildJson(man));
</pre><p style="text-align: justify;">Результат будет следующим:</p><pre class="brush:java;">{"name":"Ivan","age":26,"id":1,"children":[{"name":"Alex","age":5,"id":2}]}</pre><p style="text-align: justify;">Преобразование обратно, уже не является такой простой задачей, которую можно решить "с ходу".</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/FC1lecYFywvpCLu8Kd03aGoELGQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/FC1lecYFywvpCLu8Kd03aGoELGQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/FC1lecYFywvpCLu8Kd03aGoELGQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/FC1lecYFywvpCLu8Kd03aGoELGQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Pb1Bgzyvs8w:khrq7I_w-fs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Pb1Bgzyvs8w:khrq7I_w-fs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Pb1Bgzyvs8w:khrq7I_w-fs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Pb1Bgzyvs8w:khrq7I_w-fs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Pb1Bgzyvs8w:khrq7I_w-fs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Pb1Bgzyvs8w:khrq7I_w-fs:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Pb1Bgzyvs8w:khrq7I_w-fs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Pb1Bgzyvs8w:khrq7I_w-fs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Pb1Bgzyvs8w:khrq7I_w-fs:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Pb1Bgzyvs8w:khrq7I_w-fs:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Pb1Bgzyvs8w:khrq7I_w-fs:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Pb1Bgzyvs8w:khrq7I_w-fs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Pb1Bgzyvs8w:khrq7I_w-fs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Pb1Bgzyvs8w:khrq7I_w-fs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=Pb1Bgzyvs8w:khrq7I_w-fs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Pb1Bgzyvs8w:khrq7I_w-fs:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=Pb1Bgzyvs8w:khrq7I_w-fs:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/Pb1Bgzyvs8w" height="1" width="1"/>]]></content:encoded><description>Существует большое количество реализаций библиотек для работы с форматом JSON. В процессе изучения исходных кодов нескольких библиотек, выяснилось, что способы преобразования в JSON и обратно могут быть разные. Для преобразование Java объекта в JSON формат, наиболее простой способ, это использование Java аннотации для полей класса и функции формирования JSON строки. Рассмотрим на примере: package example.json; [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1105</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1105</feedburner:origLink></item><item><title>Стандарт Web Sockets</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/fL3M5H4CkG4/</link><category>HTML</category><category>Java</category><category>Java Script</category><category>Новости</category><category>Сеть</category><category>html 5</category><category>jetty 7</category><category>web sockets</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Sun, 02 Jan 2011 01:00:27 PST</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1000</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p><a rel="lightbox" href="http://juravskiy.ru/wp-content/uploads/2010/12/logo-HTML5-WebSockets.jpg"><img class="alignleft size-thumbnail wp-image-1093" title="HTML5 and WebSockets" src="http://juravskiy.ru/wp-content/uploads/2010/12/logo-HTML5-WebSockets-100x100.jpg" alt="logo HTML5 WebSockets 100x100 Стандарт Web Sockets" width="100" height="100" /></a></p><p style="text-align: justify; padding-right: 10px;">Ура свершилось! Можно отправить в trash что то типа ajax reverse, ajax push, comet и тому подобное.<br /> W3 консорциум выделил <a href="http://dev.w3.org/html5/websockets/" target="_blank">отдельный стандарт</a> из HTML 5 это Web Sockets. Разработчики ПО оперативно отреагировали на стандарт, так как это действительно прорыв в развитии Web.<br /> Браузеры которые поддерживают стандарт:<span id="more-1000"></span></p><ul><li><div><a rel="nofollow" href="http://blog.chromium.org/2009/12/web-sockets-now-available-in-google.html " target="_blank">Google Chrome</a> начиная с релиза 4.0.249.0</div></li><li><div>Apple Safari</div></li><li><div>В FireFox 4 запланировали поддержку стандарта</div></li><li><div>Opera начиная с релиза 10.70</div></li><li><div>В Microsoft не все так гладко, поддержку стандарта обещают в Internet Explorer 9.</div></li></ul><p style="text-align: justify;">Поддержка в серверных приложениях:</p><ul><li>В Apache модуль pywebsocket от Google</li><li>В PHP расширение phpwebsocket</li><li>J2EE контейнеры:<ul><li>Jetty 7.0</li><li>GlassFish 3.0</li><li>Caucho Resin 4.0.2</li></ul></li></ul><p style="text-align: justify;">Собственно говоря, а в чем дело, ну стандарт, ну реализовали, а в чем дело? :) А дело все в том, что теперь реализовывать “общение” браузера (клиента) с сервером, стало более оперативным, теперь все упирается в скорость обмена между сервером и клиентом.</p><p style="text-align: justify;">Событие сгенерированное на клиенте может быть легко передано, другим клиентам – участникам общего процесса взаимодействия, будь то приложения мгновенного обмена сообщениями, или другое программное обеспечение которое критично к скорости доставки данных между клиентами и сервером.</p><p style="text-align: justify;">Оперативное оповещение клиентов, так же становиться более простой задачей, о изменениях на серверной стороне. Думаю с повсеместной поддержкой данного стандарта, и переориентирования существующих библиотек компонентов и фреймворков, приложения буду более интерактивными. Так как клиент установив соединение с сервером, может участвовать в непрерывном двунаправленном обмене данными.</p><p style="text-align: justify;">Заголовок в классическом HTTP протоколе - лишний объем служебной информации, который постоянно приходиться передавать с клиента на сервер и обратно. В случае же с Web sockets количество заголовков уменьшено и равно одному, когда клиент устанавливает соединение.</p><p style="text-align: justify;">Рассмотри пример кода клиентской стороны на JavaScript:</p><pre class="brush: java;">if ("WebSocket" in window) {
    var ws = new WebSocket("ws://localhost/service");
    ws.onopen = function() {
        ... Web Socket is connected. You can send data by send() method.
        ws.send("message to send"); ....
    };
    ws.onmessage = function (evt) { var received_msg = evt.data; ... };
    ws.onclose = function() { .... websocket is closed. };
} else {
    ... the browser doesn't support WebSocket, use timers and ajax or comet.
}</pre><p>Обсуждение  Web Socket протокола еще не завершено, и возможны изменения как в API так и в протоколе.</p><p style="text-align: justify;">В дальнейшем планирую рассмотреть реализации стандарта для северной части, говорят у jetty 7 наиболее просто в использовании API. Так же думаю взять за пример статью <a href="http://blogs.webtide.com/gregw/entry/jetty_websocket_server" target="_blank">Jetty WebSocket Server</a>, которая ориентированна на Jetty 7.  Так же говорят, что в jetty 8 войдет библиотека <a href="http://jwebsocket.org/" target="_blank">jwebsocket</a>, на сайте которой много примеров по ее использованию и применению стандарта.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/Xi0_o6tZaDJBvaQEd9KOUtHl8CY/0/da"><img src="http://feedads.g.doubleclick.net/~a/Xi0_o6tZaDJBvaQEd9KOUtHl8CY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Xi0_o6tZaDJBvaQEd9KOUtHl8CY/1/da"><img src="http://feedads.g.doubleclick.net/~a/Xi0_o6tZaDJBvaQEd9KOUtHl8CY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fL3M5H4CkG4:GlnOG09dhZo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fL3M5H4CkG4:GlnOG09dhZo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=fL3M5H4CkG4:GlnOG09dhZo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fL3M5H4CkG4:GlnOG09dhZo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fL3M5H4CkG4:GlnOG09dhZo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fL3M5H4CkG4:GlnOG09dhZo:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fL3M5H4CkG4:GlnOG09dhZo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=fL3M5H4CkG4:GlnOG09dhZo:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fL3M5H4CkG4:GlnOG09dhZo:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fL3M5H4CkG4:GlnOG09dhZo:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=fL3M5H4CkG4:GlnOG09dhZo:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fL3M5H4CkG4:GlnOG09dhZo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=fL3M5H4CkG4:GlnOG09dhZo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fL3M5H4CkG4:GlnOG09dhZo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=fL3M5H4CkG4:GlnOG09dhZo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fL3M5H4CkG4:GlnOG09dhZo:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fL3M5H4CkG4:GlnOG09dhZo:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/fL3M5H4CkG4" height="1" width="1"/>]]></content:encoded><description>Ура свершилось! Можно отправить в trash что то типа ajax reverse, ajax push, comet и тому подобное. W3 консорциум выделил отдельный стандарт из HTML 5 это Web Sockets. Разработчики ПО оперативно отреагировали на стандарт, так как это действительно прорыв в развитии Web. Браузеры которые поддерживают стандарт: Google Chrome начиная с релиза 4.0.249.0 Apple Safari В [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1000</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">3</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1000</feedburner:origLink></item><item><title>Для любителей панорамных снимков</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/fAQ4sQlzS94/</link><category>Photo</category><category>Заметки</category><category>Panorama</category><category>панорамные фото</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Sat, 01 Jan 2011 01:00:28 PST</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1086</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;"><a href="http://juravskiy.ru/wp-content/uploads/2010/12/panoye_logo.png"><img class="alignleft size-full wp-image-1087" title="panoye_logo" src="http://juravskiy.ru/wp-content/uploads/2010/12/panoye_logo.png" alt="panoye logo Для любителей панорамных снимков" width="170" height="40" /></a>Случайно нашел такой сервис <a href="http://www.panoye.com/" target="_blank">panoye.com</a> специализирующийся не просто на фотографиях, а на панорамных снимках, которые еще и привязаны к Google maps и пользователю не составит труда посмотреть панорамные снимки любой точки мира одним нажатием на карту.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/08XBxmULqr14DIfMVjlnZmJhIDs/0/da"><img src="http://feedads.g.doubleclick.net/~a/08XBxmULqr14DIfMVjlnZmJhIDs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/08XBxmULqr14DIfMVjlnZmJhIDs/1/da"><img src="http://feedads.g.doubleclick.net/~a/08XBxmULqr14DIfMVjlnZmJhIDs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fAQ4sQlzS94:9pCvlwEdjH8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fAQ4sQlzS94:9pCvlwEdjH8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=fAQ4sQlzS94:9pCvlwEdjH8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fAQ4sQlzS94:9pCvlwEdjH8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fAQ4sQlzS94:9pCvlwEdjH8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fAQ4sQlzS94:9pCvlwEdjH8:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fAQ4sQlzS94:9pCvlwEdjH8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=fAQ4sQlzS94:9pCvlwEdjH8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fAQ4sQlzS94:9pCvlwEdjH8:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fAQ4sQlzS94:9pCvlwEdjH8:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=fAQ4sQlzS94:9pCvlwEdjH8:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fAQ4sQlzS94:9pCvlwEdjH8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=fAQ4sQlzS94:9pCvlwEdjH8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fAQ4sQlzS94:9pCvlwEdjH8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=fAQ4sQlzS94:9pCvlwEdjH8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fAQ4sQlzS94:9pCvlwEdjH8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=fAQ4sQlzS94:9pCvlwEdjH8:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/fAQ4sQlzS94" height="1" width="1"/>]]></content:encoded><description>Случайно нашел такой сервис panoye.com специализирующийся не просто на фотографиях, а на панорамных снимках, которые еще и привязаны к Google maps и пользователю не составит труда посмотреть панорамные снимки любой точки мира одним нажатием на карту.</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1086</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1086</feedburner:origLink></item><item><title>С Новым Годом!</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/daG3o1sT3qM/</link><category>Новости</category><category>2011</category><category>xmas</category><category>Новый год</category><category>поздравления</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Fri, 31 Dec 2010 13:01:46 PST</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1096</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: center;"><a rel="lightbox" href="http://juravskiy.ru/wp-content/uploads/2010/12/Winter_village.jpg"><img class="size-medium wp-image-1097 aligncenter" title="С новым 2011 годом!" src="http://juravskiy.ru/wp-content/uploads/2010/12/Winter_village-300x225.jpg" alt="Winter village 300x225 С Новым Годом!" width="300" height="225" /></a></p><p style="text-align: center;">Пусть новый год будет лучше чем предыдущие!</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/AhnUv7vBv7J0hxtrwkqyzs2PlxI/0/da"><img src="http://feedads.g.doubleclick.net/~a/AhnUv7vBv7J0hxtrwkqyzs2PlxI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/AhnUv7vBv7J0hxtrwkqyzs2PlxI/1/da"><img src="http://feedads.g.doubleclick.net/~a/AhnUv7vBv7J0hxtrwkqyzs2PlxI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=daG3o1sT3qM:4YOQ5bNkl1g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=daG3o1sT3qM:4YOQ5bNkl1g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=daG3o1sT3qM:4YOQ5bNkl1g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=daG3o1sT3qM:4YOQ5bNkl1g:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=daG3o1sT3qM:4YOQ5bNkl1g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=daG3o1sT3qM:4YOQ5bNkl1g:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=daG3o1sT3qM:4YOQ5bNkl1g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=daG3o1sT3qM:4YOQ5bNkl1g:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=daG3o1sT3qM:4YOQ5bNkl1g:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=daG3o1sT3qM:4YOQ5bNkl1g:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=daG3o1sT3qM:4YOQ5bNkl1g:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=daG3o1sT3qM:4YOQ5bNkl1g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=daG3o1sT3qM:4YOQ5bNkl1g:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=daG3o1sT3qM:4YOQ5bNkl1g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=daG3o1sT3qM:4YOQ5bNkl1g:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=daG3o1sT3qM:4YOQ5bNkl1g:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=daG3o1sT3qM:4YOQ5bNkl1g:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/daG3o1sT3qM" height="1" width="1"/>]]></content:encoded><description>Пусть новый год будет лучше чем предыдущие!</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1096</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1096</feedburner:origLink></item><item><title>Ваш сайт — ваш Open ID</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/AMkZXpIXUvg/</link><category>Wordpress</category><category>Заметки</category><category>myopenid</category><category>OpenID</category><category>идентификатор</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Fri, 31 Dec 2010 01:00:04 PST</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1081</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;"><a rel="lightbox" href="http://juravskiy.ru/wp-content/uploads/2010/12/openid_logo.jpg"><img class="alignleft size-full wp-image-1082" title="openid_logo" src="http://juravskiy.ru/wp-content/uploads/2010/12/openid_logo.jpg" alt="openid logo Ваш сайт   ваш Open ID" width="265" height="100" /></a>Многие слышали, видели, но я думаю не все знают, что можно сделать домен своего блога глобальным идентификатором для авторизации, или по другому Open ID. Все это позволяет сделать такой сервис как <a href="http://myopenid.com" target="_blank">myopenid.com</a>. Как настроить свой блог (сайт) для использования в качестве Open ID кратко и без лирических отступлений описано в <a href="http://virtser.net/blog/post/podderzhka-openid-v-bloge.aspx" target="_blank">блоге  poisona</a>.</p><p style="text-align: justify;">Добавлю от себя, что можно легко авторизоваться на разных интересных Web сервисах  и проектах, не проходя при этом регистрацию, например в Живом Журнале (ЖЖ) или в системах комментирования, например Disqus. Везде тебя знают, и везде ты под одним именем и нет необходимости заполнять свою личную информацию, которая уже давно размещена у тебя на сайте, на который введет ссылка Open ID.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/YL_AeqDnic4z23T8nqmq8u9bmOY/0/da"><img src="http://feedads.g.doubleclick.net/~a/YL_AeqDnic4z23T8nqmq8u9bmOY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/YL_AeqDnic4z23T8nqmq8u9bmOY/1/da"><img src="http://feedads.g.doubleclick.net/~a/YL_AeqDnic4z23T8nqmq8u9bmOY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=AMkZXpIXUvg:Jn9zHuiy3Ms:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=AMkZXpIXUvg:Jn9zHuiy3Ms:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=AMkZXpIXUvg:Jn9zHuiy3Ms:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=AMkZXpIXUvg:Jn9zHuiy3Ms:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=AMkZXpIXUvg:Jn9zHuiy3Ms:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=AMkZXpIXUvg:Jn9zHuiy3Ms:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=AMkZXpIXUvg:Jn9zHuiy3Ms:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=AMkZXpIXUvg:Jn9zHuiy3Ms:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=AMkZXpIXUvg:Jn9zHuiy3Ms:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=AMkZXpIXUvg:Jn9zHuiy3Ms:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=AMkZXpIXUvg:Jn9zHuiy3Ms:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=AMkZXpIXUvg:Jn9zHuiy3Ms:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=AMkZXpIXUvg:Jn9zHuiy3Ms:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=AMkZXpIXUvg:Jn9zHuiy3Ms:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=AMkZXpIXUvg:Jn9zHuiy3Ms:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=AMkZXpIXUvg:Jn9zHuiy3Ms:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=AMkZXpIXUvg:Jn9zHuiy3Ms:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/AMkZXpIXUvg" height="1" width="1"/>]]></content:encoded><description>Многие слышали, видели, но я думаю не все знают, что можно сделать домен своего блога глобальным идентификатором для авторизации, или по другому Open ID. Все это позволяет сделать такой сервис как myopenid.com. Как настроить свой блог (сайт) для использования в качестве Open ID кратко и без лирических отступлений описано в блоге  poisona. Добавлю от себя, что можно легко авторизоваться на [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1081</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1081</feedburner:origLink></item><item><title>Обход DOM модели в GWT</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/cj3s0CltcR8/</link><category>GWT</category><category>DOM</category><category>Recursion</category><category>обход иерархии</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Wed, 29 Dec 2010 20:00:06 PST</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=1075</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p style="text-align: justify;">Задача обойти DOM модель с использованием GWT классов и методов. Для чего это может понадобиться, например, если вы разрабатываете какой нибудь визуальный компонент, это может быть полезно в качестве проверки созданной иерархии, или поиска элементов. Я ее использовал для подсчета элементов созданных в результате взаимодействия графических компонентов (widgets).</p><p><span id="more-1075"></span></p><pre class="brush:java;">private int count = 0;
private String infoAboutNode(Node n) {
    return "Node :" + n.getNodeName() + "," + n.&lt;Element&gt;cast().getId() + ", " + n.&lt;Element&gt;cast().getClassName();
}

private void printNode(Node n) {
     if(n.getNodeName().equals("#text")) {
        return;
    }
     count++;
    GWT.log(infoAboutNode(n));
    if(n.hasChildNodes()) {
         printNodeList(n.getChildNodes());
    }
}

private void printNodeList(NodeList&lt;Node&gt; ns) {
    GWT.log("Print nodeList for node" + infoAboutNode(ns.getItem(0).getParentNode()));
    GWT.log("childs.size=" + ns.getLength());
    for (int i = 0; i &lt; ns.getLength(); i++) {
        printNode(ns.getItem(i));
    }
}

public void execute(com.google.gwt.dom.client.Element el) {
    count = 0;
    printNode(el);
    GWT.log("Count nodes:" + count);
}</pre><p>Пример использования:</p><pre class="brush:java;">execute(RootPanel.get().getElement());</pre><p style="text-align: justify;">Расскажу подробнее о методах, существуют два метода <em>printNode</em> который выводит информацию о элементе через метод <em>infoAboutNode</em>, если элемент имеет дочерние элементы, то в цикле через метод <em>printNodeList</em> вызываем <em>printNode</em>. Обход основан на рекурсивном вызове.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/s7ewTU4T4dg_dlaQMoVRSDlKz_g/0/da"><img src="http://feedads.g.doubleclick.net/~a/s7ewTU4T4dg_dlaQMoVRSDlKz_g/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/s7ewTU4T4dg_dlaQMoVRSDlKz_g/1/da"><img src="http://feedads.g.doubleclick.net/~a/s7ewTU4T4dg_dlaQMoVRSDlKz_g/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=cj3s0CltcR8:Rq0XJULi_tU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=cj3s0CltcR8:Rq0XJULi_tU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=cj3s0CltcR8:Rq0XJULi_tU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=cj3s0CltcR8:Rq0XJULi_tU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=cj3s0CltcR8:Rq0XJULi_tU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=cj3s0CltcR8:Rq0XJULi_tU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=cj3s0CltcR8:Rq0XJULi_tU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=cj3s0CltcR8:Rq0XJULi_tU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=cj3s0CltcR8:Rq0XJULi_tU:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=cj3s0CltcR8:Rq0XJULi_tU:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=cj3s0CltcR8:Rq0XJULi_tU:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=cj3s0CltcR8:Rq0XJULi_tU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=cj3s0CltcR8:Rq0XJULi_tU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=cj3s0CltcR8:Rq0XJULi_tU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=cj3s0CltcR8:Rq0XJULi_tU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=cj3s0CltcR8:Rq0XJULi_tU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/cj3s0CltcR8" height="1" width="1"/>]]></content:encoded><description>Задача обойти DOM модель с использованием GWT классов и методов. Для чего это может понадобиться, например, если вы разрабатываете какой нибудь визуальный компонент, это может быть полезно в качестве проверки созданной иерархии, или поиска элементов. Я ее использовал для подсчета элементов созданных в результате взаимодействия графических компонентов (widgets). private int count = 0; private String [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=1075</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=1075</feedburner:origLink></item><item><title>Single Threaded Execution (Однопоточное выполнение)</title><link>http://feedproxy.google.com/~r/Juravskiy/~3/h4y-QZh_J34/</link><category>Параллельные шаблоны (Concurrency)</category><category>design patterns</category><category>single threaded execution</category><category>синхронизация потоков</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Vitaliy Juravskiy</dc:creator><pubDate>Fri, 03 Dec 2010 08:11:00 PST</pubDate><guid isPermaLink="false">http://juravskiy.ru/?p=844</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<sape_index><p align="justify"><a href="http://juravskiy.ru/wp-content/uploads/2010/12/single_thread_execution.jpg" rel="lightbox"><img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="single thread execution thumb Single Threaded Execution (Однопоточное выполнение)" align="left" src="http://juravskiy.ru/wp-content/uploads/2010/12/single_thread_execution_thumb.jpg" width="149" height="100" /></a> Данный шаблон является одним из самых важных &quot;параллельных шаблонов&quot;, он позволяет решит вопросы относящиеся к совместному использованию ресурса,&#160; когда только один поток может обратиться к разделяемому ресурсу в некоторый момент времени. Одновременный доступ к такому ресурсу из разных потоков, может вызвать нарушение работы ресурса. Для обеспечения нормальной работы с разделяемым ресурсом необходим последовательный доступ к нему, каждого из потоков.</p></p><p> <span id="more-844"></span></p><p align="justify"><p align="justify">Рассмотрим такой пример, как очередь в магазине, разделяемый ресурс это продавец, через которую проходят покупатели с покупками. Очередь последовательна, а синхронизация проходит кассой. Если бы все подходили с покупками без очереди можно представить какой был бы хаос, и наш разделяемый ресурс (продавец) вышел из строя мгновенно, и возможно некоторые покупатели наблюдали в чеке те покупки, которые они не совершали.</p><p align="justify">В Java данный шаблон проектирования может быть реализован следующими способами:</p><pre class="brush:java;">public void synchronized buy (ShoppingCart cart) {

    check items and pay money

}</pre><p>&#160;</p><pre class="brush:java;">public Object seller = new Object();

…

public void buy (ShoppingCart cart) {
    synchronized (seller) {

        check items and pay money

    }
}</pre><p align="justify">Возможны и другие варианты реализации шаблона.</p><p align="justify">Вернемся к нашему примеру, чтобы было четкое понимание – очередь она и в Африке очередь, для этого существует одноименная структура данных и интерфейс java.util.Queue для полной эмуляции нашего примера нужно использовать очередь и например пул потоков, который хранить задания потоков в очереди с блокировками.</p><p align="justify">А если реализовывать однопоточное выполнение в чистом виде, то наша очередь будет напоминать примерно следующее: покупатели, простаивающие в ожидании освобождения кассы и продавца, в момент освобождения разделяемого ресурса будут конкурентно пытаться оплатить свои покупки, в России это выглядело бы пример но так - люди с продуктами дерутся и ругаются с матом возле кассы.</p><p align="justify">Из реальных примеров данный шаблон применяется в таких моментах, как запись в один файл (поток, сокет, буфер и т.п.) из разных потоков, изменение значения переменной (объекта, ссылки, и т.п.) из разных потоков, в роли разделяемого ресурса может быть все что угодно.</p><p align="justify">Почти все другие шаблоны для конкурирующих приложений используют данный шаблон.</p> </sape_index><!--c421715050260-->
<p><a href="http://feedads.g.doubleclick.net/~a/KN_Ybncm6zpVA4pdA3e8H-C9Vgk/0/da"><img src="http://feedads.g.doubleclick.net/~a/KN_Ybncm6zpVA4pdA3e8H-C9Vgk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/KN_Ybncm6zpVA4pdA3e8H-C9Vgk/1/da"><img src="http://feedads.g.doubleclick.net/~a/KN_Ybncm6zpVA4pdA3e8H-C9Vgk/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/Juravskiy?a=h4y-QZh_J34:-YCd6xkP7SQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=h4y-QZh_J34:-YCd6xkP7SQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=h4y-QZh_J34:-YCd6xkP7SQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=h4y-QZh_J34:-YCd6xkP7SQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=h4y-QZh_J34:-YCd6xkP7SQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=h4y-QZh_J34:-YCd6xkP7SQ:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=TzevzKxY174" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=h4y-QZh_J34:-YCd6xkP7SQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=h4y-QZh_J34:-YCd6xkP7SQ:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=h4y-QZh_J34:-YCd6xkP7SQ:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=h4y-QZh_J34:-YCd6xkP7SQ:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=h4y-QZh_J34:-YCd6xkP7SQ:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=h4y-QZh_J34:-YCd6xkP7SQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=h4y-QZh_J34:-YCd6xkP7SQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=h4y-QZh_J34:-YCd6xkP7SQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/Juravskiy?i=h4y-QZh_J34:-YCd6xkP7SQ:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=h4y-QZh_J34:-YCd6xkP7SQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/Juravskiy?a=h4y-QZh_J34:-YCd6xkP7SQ:YwkR-u9nhCs"><img src="http://feeds.feedburner.com/~ff/Juravskiy?d=YwkR-u9nhCs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/Juravskiy/~4/h4y-QZh_J34" height="1" width="1"/>]]></content:encoded><description>Данный шаблон является одним из самых важных &amp;#34;параллельных шаблонов&amp;#34;, он позволяет решит вопросы относящиеся к совместному использованию ресурса,&amp;#160; когда только один поток может обратиться к разделяемому ресурсу в некоторый момент времени. Одновременный доступ к такому ресурсу из разных потоков, может вызвать нарушение работы ресурса. Для обеспечения нормальной работы с разделяемым ресурсом необходим последовательный доступ к [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://juravskiy.ru/?feed=rss2&amp;p=844</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://juravskiy.ru/?p=844</feedburner:origLink></item></channel></rss>

