<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cat`s shepherd &#187; Программизмы</title>
	<atom:link href="http://kviring.com/archives/tag/%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d0%b7%d0%bc%d1%8b/feed" rel="self" type="application/rss+xml" />
	<link>http://kviring.com</link>
	<description>Личный дневник меня и малыша. На потом, чтобы было.</description>
	<lastBuildDate>Tue, 10 Aug 2010 02:22:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Разгоняем ThreadLocal</title>
		<link>http://kviring.com/archives/1027</link>
		<comments>http://kviring.com/archives/1027#comments</comments>
		<pubDate>Thu, 17 Jun 2010 17:36:22 +0000</pubDate>
		<dc:creator>Квиринг Алексей</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Программизмы]]></category>

		<guid isPermaLink="false">http://kviring.com/?p=1027</guid>
		<description><![CDATA[Всем серьезным и не очень программистам из мира Java известен данные класс. Он привязывать объект к конкретному потоку. Достаточно часто используется в многопоточных приложениях, наш сервер также не стал исключением. А раз у нас самый многопоточный из многопоточных серверов &#8211; &#8230; <a href="http://kviring.com/archives/1027">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Всем серьезным и не очень программистам из мира Java известен данные класс. Он привязывать объект к конкретному потоку. Достаточно часто используется в многопоточных приложениях, наш сервер также не стал исключением. А раз у нас самый многопоточный из многопоточных серверов &#8211; то используется данный класс достаточно часто &#8211; на одну входящую команду с клиента раз 20 точно. Сегодня я провел тестирование скорости работы данного класса, оказалось всего лишь 7 000 операций get() за одну миллисекунду. Пришлось ускорять и вот каким методом &#8211; у каждого Thread есть метод long getId() который возвращает уникальный идентификатор потока, но также не следует забывать, что если поток умирает &#8211; то данный идентификатор может реиспользоваться.<br />
<span id="more-1027"></span><br />
А далее вот что получается:<br />
<code><br />
Было:<br />
ThreadLocal<String> threadLocal;<br />
String value = threadLocal.get();<br />
</code><br />
<code><br />
Стало:<br />
String[] threadLocal = new String[10000];<br />
String value = threadLocal[(int)Thread.currentThread().getId];<br />
</code><br />
Ускорение в три раза, но тут есть костыль &#8211; массив должен быть большой, чтобы гарантированно хватило. Для решения этой проблемы у меня есть реализация разреженных массивов, но об этом потом.</p>
<p>P.S. Попутно выяснил что реализация очереди ArrayDeque работает в три раза медленней чем пара из массива и счетчика, для её эмуляции.</p>
]]></content:encoded>
			<wfw:commentRss>http://kviring.com/archives/1027/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NoSQL Redis &#8211; первые шаги</title>
		<link>http://kviring.com/archives/1023</link>
		<comments>http://kviring.com/archives/1023#comments</comments>
		<pubDate>Wed, 16 Jun 2010 17:12:57 +0000</pubDate>
		<dc:creator>Квиринг Алексей</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Alternativa]]></category>
		<category><![CDATA[Программизмы]]></category>

		<guid isPermaLink="false">http://kviring.com/?p=1023</guid>
		<description><![CDATA[Решение отказаться от PostgreSQL и перейти на Redis было принято еще полтора месяца назад. Но только сегодня практически полностью завершена интеграция базы в платформу. Изначально для доступа к базе данных я использовал JRedis. Чуток позже выяснилось, что он поддерживается не &#8230; <a href="http://kviring.com/archives/1023">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Решение отказаться от PostgreSQL и перейти на Redis было принято еще полтора месяца назад. Но только сегодня практически полностью завершена интеграция базы в платформу. Изначально для доступа к базе данных я использовал JRedis. Чуток позже выяснилось, что он поддерживается не все команды, в том числе он не поддерживал работу с hash. А это для нас критично. Пришлось править код и добавлять поддержку данных команд, поддержку то я сделал, но разбираясь в чужом коде понял, что это совершенно не Realtime решение. А сборке мусора автор даже не подумал, куча объектов, структур и классов. Сам проект &#8211; 200 классов самого разнообразного назначения. И поэтому пришлось самому писать API для доступа. В итоге &#8211; 5 классов и 10 JUNIT тестов, поддержка всех существующий команд. Работа с сокетами на уровне ByteBuffer и NIO. Пул коннектов, шардинг и многое другое. И все это работает в OSGi. Исходный код дать не могу, но кому интересно &#8211; пишите, по крайней мере на вопросы отвечу. По скорости процентов на 30% быстрее чем JRedis, по памяти раза в три и главное не создает объектов в процессе работы.</p>
<p>Redis меня в последнее время радует, недавно сделали поддержку виртуальной памяти, в итоге можно хранить достаточно большое количество данных, нам вполне хватит. А поддержка сортированный SET вообще сказка, именно на нем мы будем делать TOP рейтинг игроков (пример можно посмотреть на http://tankionline.com).</p>
]]></content:encoded>
			<wfw:commentRss>http://kviring.com/archives/1023/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrum vs Ваша компания</title>
		<link>http://kviring.com/archives/674</link>
		<comments>http://kviring.com/archives/674#comments</comments>
		<pubDate>Wed, 25 Nov 2009 05:15:32 +0000</pubDate>
		<dc:creator>Квиринг Алексей</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Программизмы]]></category>

		<guid isPermaLink="false">http://kviring.com/?p=674</guid>
		<description><![CDATA[Периодически в небольших компаниях по разработке ПО случаются революции. Например главные по направлениям пытаются поменять методологию разработки. Я тоже честно пытался. Но все не выходит и не выходит, хотя частично мы уже работаем по данной методике, но нам еще очень &#8230; <a href="http://kviring.com/archives/674">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Периодически в небольших компаниях по разработке ПО случаются революции. Например главные по направлениям пытаются поменять методологию разработки. Я тоже честно пытался. Но все не выходит и не выходит, хотя частично мы уже работаем по данной методике, но нам еще очень далеко до идеала. Одна из причин  &#8211; высокая загруженность, нет времени на плановое внедрение новых методов и методолгий. Сегодня прочитал еще одну статью по этому поводу, и что самое интересно &#8211; практически наша ситуация, может быть у нас чуток лучше, но все же. (далее цитирование)<br />
<span id="more-674"></span><br />
Проблемы классического подхода:</p>
<ul>
<li>узкоспециализированные специалисты (это происходит постепенно, когда PM оптимизирует раздачу задач, так чтоб росла локальная продуктивность: люди делают схожие задачи тем, которые они делали раньше); </li>
<li>это в свою очередь приводит к мышлению в рабочей группе типа “я свое сделал…”, это не команда, со всеми вытекающими;</li>
<li>у PM-a растет число задач по микроменедженту своей группы, так как он является единственным человеком, который видит “всю картину”;</li>
<li>подключение новых людей становится задачей PM-a, текущие работники не заинтересованы в обучении новеньких – что им с того?</li>
<li>когда в итоге новых людей подключают, у PM-а работы только прибавляется;</li>
<li>в итоге PM (а это особенные люди) занимается задачами ниже своего уровня компетенции</li>
</ul>
<p>Есть и другие проблемы, которые порождает классическая модель управления. И многим известны меры по контролю таких проблем. Но самая дорогостоящая из этих проблем заключается в том, что директивный подход не позволяет командам раскрыть весь свой потенциал.</p>
<p>А команда, как известно, – это ценнейший актив компаний, которая занимается разработками в интеллектуальной сфере. Есть даже шутка на эту тему, что к вечеру стоимость такой компании понижается до стоимости мебели в офисе.</p>
<p>Держать хорошую команду в узде директивного управления &#8211; все равно, что ехать на машине на второй передаче. Ехать, конечно можно, но предел скорости весьма ощутим. Плюс это неэкономно, гудит, да и другие обгоняют&#8230;</p>
<p>А вот полная статья:<br />
<a href="http://http://www.developers.org.ua/archives/krivitsky/2008/07/17/scrum-for-developers/">http://www.developers.org.ua/archives/krivitsky/2008/07/17/scrum-for-developers/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kviring.com/archives/674/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Альтернативная навигация по исходникам в Eclipse</title>
		<link>http://kviring.com/archives/271</link>
		<comments>http://kviring.com/archives/271#comments</comments>
		<pubDate>Sun, 26 Apr 2009 07:10:33 +0000</pubDate>
		<dc:creator>Квиринг Алексей</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Идеи]]></category>
		<category><![CDATA[Программизмы]]></category>

		<guid isPermaLink="false">http://kviring.com/?p=271</guid>
		<description><![CDATA[Каталоги и файлы являются в настоящий момент самым распространным способом навигации по коду. Но на мой взгляд не очень удобным. Например, у меня открыто 10 проектов и я хочу быстро перейти к классам, которые используют рейтинг игрока. Навигация по каталогам &#8230; <a href="http://kviring.com/archives/271">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Каталоги и файлы являются в настоящий момент самым распространным способом навигации по коду. Но на мой взгляд не очень удобным. Например, у меня открыто 10 проектов и я хочу быстро перейти к классам, которые используют рейтинг игрока. Навигация по каталогам такого удобства мне не предоставляет, прийдется вспоминать в каких именно классах я использоваль рейтинг, потом открывать пару каталогов и сам класс. И повторить эту операцию N раз.<br />
В ходе дебатов родилась такая идея &#8211; к стандартной навигации добавить навигацию по тегам. Программист в комментах для класса описывает теги &#8211; @tags rating user battle. А плагин для Eclipse отображает данные теги в виде облака и позволяет быстро открывать нужные классы и файлы.<br />
Вот такая идея. Реализовать бы <img src='http://kviring.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://kviring.com/archives/271/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>XSLT, SVN и Пермские WEB Студии</title>
		<link>http://kviring.com/archives/236</link>
		<comments>http://kviring.com/archives/236#comments</comments>
		<pubDate>Mon, 20 Apr 2009 16:10:41 +0000</pubDate>
		<dc:creator>Квиринг Алексей</dc:creator>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Программизмы]]></category>

		<guid isPermaLink="false">http://kviring.com/?p=236</guid>
		<description><![CDATA[В далеком 2003 году делал я сайт Западно-Уральского Сбербанка. И врядли я бы его вспомнил сегодня если бы не два обстоятельства: 1) в качестве языка шаблонов использовался XSLT 2) сегодня я набрел на презентацию &#8211; http://veged.ru/works/WhyXSLT_CS.pdf В не менее далеком &#8230; <a href="http://kviring.com/archives/236">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В далеком 2003 году делал я сайт Западно-Уральского Сбербанка. И врядли я бы его вспомнил сегодня если бы не два обстоятельства:<br />
1) в качестве языка шаблонов использовался XSLT<br />
2) сегодня я набрел на презентацию &#8211; <a href="http://veged.ru/works/WhyXSLT_CS.pdf">http://veged.ru/works/WhyXSLT_CS.pdf</a></p>
<p>В не менее далеком 2002 году у нас было много спорос с одним из товарищей &#8211; стоит ли применять эту технологию или нет. Основной аргумент против с его стороны &#8211; сложность и неудобность. И в этом он прав &#8211; как ни крути XSLT это практически ФУНКЦИОНАЛЬНЫЙ язык программирования. Кто же его будет то изучать. Вот так и сидит у нас в Пермь куча PHP программистов, которые пишут хорошии сайты небольшой величины и крупные сайты с отвратной архитектурой и большим количеством ошибок. Не хотят учится и не будут.</p>
<p>А такие слова как SVN, JIRA, SCRUM для них как индийский язык. Вот поэтому ни одна из веб фирм в перми ничего не достигла. Пока нет ни одного положительного примера в разработки сложных веб сайтов.</p>
]]></content:encoded>
			<wfw:commentRss>http://kviring.com/archives/236/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
