<?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>majus.ru</title>
	<atom:link href="http://blog.majus.ru/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.majus.ru</link>
	<description>Еще один блог Wordpress</description>
	<lastBuildDate>Thu, 29 Oct 2009 19:02:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Извините, на вашем счете ноль доллар, досвидания</title>
		<link>http://blog.majus.ru/?p=419</link>
		<comments>http://blog.majus.ru/?p=419#comments</comments>
		<pubDate>Thu, 29 Oct 2009 19:02:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Рабочее]]></category>

		<guid isPermaLink="false">http://blog.majus.ru/?p=419</guid>
		<description><![CDATA[Интересный глюк приключился с SIP от корбины. Мило посылает по грибы при поптыке позвонить, хотя деньги на счете есть. Причем посыл не может не радовать.
Ноль доллар, досвидания (mp3)
]]></description>
			<content:encoded><![CDATA[<p>Интересный глюк приключился с SIP от корбины. Мило посылает по грибы при поптыке позвонить, хотя деньги на счете есть. Причем посыл не может не радовать.<br />
<a href='http://blog.majus.ru/wp-content/uploads/2009/10/0dollar.mp3'>Ноль доллар, досвидания (mp3)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.majus.ru/?feed=rss2&amp;p=419</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://blog.majus.ru/wp-content/uploads/2009/10/0dollar.mp3" length="72205" type="audio/mpeg" />
		</item>
		<item>
		<title>Некорректная работа java.net.CookieManager</title>
		<link>http://blog.majus.ru/?p=389</link>
		<comments>http://blog.majus.ru/?p=389#comments</comments>
		<pubDate>Sun, 16 Aug 2009 20:47:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Рабочее]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[rfc]]></category>

		<guid isPermaLink="false">http://blog.majus.ru/?p=389</guid>
		<description><![CDATA[При работе с классом java.net.CookieManager иногда возникают странные баги. Например, следующий фрагмента кода будет работать с указанным URL, но с некоторыми другими не будет:
String urlString = &#34;http://java.sun.com&#34;;
CookieManager manager = new CookieManager&#40;&#41;;
CookieHandler.setDefault&#40;manager&#41;;

URL url = new URL&#40;urlString&#41;;
URLConnection connection = url.openConnection&#40;&#41;;
// force cookie processing
Object content = connection.getContent&#40;&#41;;

CookieStore cookieJar = manager.getCookieStore&#40;&#41;;
List HttpCookie&#62; cookies = cookieJar.getCookies&#40;&#41;;
for &#40;HttpCookie cookie : cookies&#41; [...]]]></description>
			<content:encoded><![CDATA[<p>При работе с классом java.net.CookieManager иногда возникают странные баги. Например, следующий фрагмента кода будет работать с указанным URL, но с некоторыми другими не будет:</p>
<div class="codecolorer-container java twitlight" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003399;">String</span> urlString <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://java.sun.com&quot;</span><span style="color: #339933;">;</span><br />
CookieManager manager <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> CookieManager<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
CookieHandler.<span style="color: #006633;">setDefault</span><span style="color: #009900;">&#40;</span>manager<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #003399;">URL</span> url <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">URL</span><span style="color: #009900;">&#40;</span>urlString<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">URLConnection</span> connection <span style="color: #339933;">=</span> url.<span style="color: #006633;">openConnection</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">// force cookie processing</span><br />
<span style="color: #003399;">Object</span> content <span style="color: #339933;">=</span> connection.<span style="color: #006633;">getContent</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
CookieStore cookieJar <span style="color: #339933;">=</span> manager.<span style="color: #006633;">getCookieStore</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">List</span> HttpCookie<span style="color: #339933;">&gt;</span> cookies <span style="color: #339933;">=</span> cookieJar.<span style="color: #006633;">getCookies</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>HttpCookie cookie <span style="color: #339933;">:</span> cookies<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>cookie<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>Под катом подробнее.<br />
<span id="more-389"></span><br />
Все дело в классе java.net.HttpCookie и методе expiryDate2DeltaSeconds. Вот его исходный код из JDK 1.6.10:</p>
<div class="codecolorer-container java twitlight" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">long</span> expiryDate2DeltaSeconds<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> dateString<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #003399;">SimpleDateFormat</span> df <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">SimpleDateFormat</span><span style="color: #009900;">&#40;</span>NETSCAPE_COOKIE_DATE_FORMAT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; df.<span style="color: #006633;">setTimeZone</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">TimeZone</span>.<span style="color: #006633;">getTimeZone</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;GMT&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">Date</span> date <span style="color: #339933;">=</span> df.<span style="color: #006633;">parse</span><span style="color: #009900;">&#40;</span>dateString<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #009900;">&#40;</span>date.<span style="color: #006633;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> whenCreated<span style="color: #009900;">&#41;</span> <span style="color: #339933;">/</span> <span style="color: #cc66cc;">1000</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>Здесь просчитывается время до истечения срока действия cookie и maxAge присваивается это значение. Вызывается этот метод только если установлено значение expired и не установлено Max-Age в строке Set-Cookie (или Set-Cookie2).</p>
<p>Очевидно, что восстановление даты из строки зависит от текущей Locale по умолчанию, поэтому, если она отличается от Locale.US, произойдет исключительная ситуация и выполнится код в блоке catch { }. Т.е., для maxAge всегда будет возвращаться 0, если установлено значение expires и текущая локаль отличается от Locale.US.</p>
<p>Происходит все это при вызове java.net.HttpCookie.parse() из java.net.CookieManager.put(), который в свою очередь вызывается прозрачно при получении HTTP ответа от сервера.</p>
<p>Далее, при добавлении cookie в хранилище по умолчанию <a href="http://www.docjar.com/html/api/sun/net/www/protocol/http/InMemoryCookieStore.java.html" target="_blank">sun.net.www.protocol.http.InMemoryCookieStore</a> проиcходит проверка:</p>
<div class="codecolorer-container java twitlight" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// add new cookie if it has a non-zero max-age</span><br />
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>cookie.<span style="color: #006633;">getMaxAge</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> 0<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; cookieJar.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>cookie<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// ...</span></div></div>
<p>Т.е. в случае maxAge==0 cookie просто не сохраняется.</p>
<h3>Пути обхода проблемы</h3>
<p>Самый простой, но неуклюжий способ, подходящий только для простых утилитных программ, где Locale практически не используется:</p>
<div class="codecolorer-container java twitlight" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// temporary set locale to US</span><br />
<span style="color: #003399;">Locale</span> oldLocale <span style="color: #339933;">=</span> <span style="color: #003399;">Locale</span>.<span style="color: #006633;">getDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #003399;">Locale</span>.<span style="color: #006633;">setDefault</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Locale</span>.<span style="color: #006633;">US</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">// establish connection</span><br />
<span style="color: #003399;">URLConnection</span> connection <span style="color: #339933;">=</span> url.<span style="color: #006633;">openConnection</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">// somehow get a content to force cookie parsing</span><br />
<span style="color: #666666; font-style: italic;">// connection.getContent() is also suitable</span><br />
<span style="color: #003399;">InputStream</span> is <span style="color: #339933;">=</span> connection.<span style="color: #006633;">getInputStream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">// ...</span><br />
is.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
connection.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">// restore locale</span><br />
<span style="color: #003399;">Locale</span>.<span style="color: #006633;">setDefault</span><span style="color: #009900;">&#40;</span>oldLocale<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></div>
<p>Способ два &#8212; написать свой класс, реализуя интерфейс CookieStore, где пересчитывать значение maxAge для каждой cookie, которую пытаются добавить в хранилище. В этом случае изменится процедура создания CookieManager:</p>
<div class="codecolorer-container java twitlight" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">CookieHandler.<span style="color: #006633;">setDefault</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> CookieManager<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> MyCookieStore<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #666666; font-style: italic;">// ...</span></div></div>
<p><a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6791927" target="_blank">Баг</a> на sun.com открыт 2009-01-27, обещают, что &#8220;Will fix as soon as possible.&#8221; Читать как &#8220;Ждите выхода JDK 7&#8243;.</p>
<p>Полезные ссылки по теме:<br />
<a href="http://www.cse.ohio-state.edu/cgi-bin/rfc/rfc2109.html" target="_blank">Set-Cookie формат</a> (устарел)<br />
<a href="http://www.faqs.org/rfcs/rfc2965.html" target="_blank">Set-Cookie2 формат</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.majus.ru/?feed=rss2&amp;p=389</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Список всех Jabber конференций</title>
		<link>http://blog.majus.ru/?p=376</link>
		<comments>http://blog.majus.ru/?p=376#comments</comments>
		<pubDate>Fri, 07 Aug 2009 21:34:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Рабочее]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://blog.majus.ru/?p=376</guid>
		<description><![CDATA[В процессе изучения Groovy получился приятный сервис &#8211; Список всех Jabber конференций. Класс Analyzer, написанный на Groovy анализирует XML, полученный с jabberes.org со списком серверов, и опрашивает каждый из них, получая список конференций. На выходе получается XML файл, который можно просмотреть здесь.
Интересующиеся могут ознакомиться с исходным кодом анализатора. Использовать класс очень просто:
def cache = new [...]]]></description>
			<content:encoded><![CDATA[<p>В процессе изучения Groovy получился приятный сервис &#8211; <a href="http://majus.name/utils/jabber/conf" target="_blank">Список всех Jabber конференций</a>. Класс Analyzer, написанный на Groovy анализирует XML, полученный с jabberes.org со списком серверов, и опрашивает каждый из них, получая список конференций. На выходе получается XML файл, который можно просмотреть <a href="http://majus.name/utils/cache/conferences.xml" target="_blank">здесь</a>.</p>
<p>Интересующиеся могут ознакомиться с <a href="http://majus.ru/code/ru/majus/xmpp/Analyzer.groovy" target="_blank">исходным кодом</a> анализатора. Использовать класс очень просто:</p>
<div class="codecolorer-container groovy twitlight" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="groovy codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">def</span> cache <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">File</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;conferences.xml&quot;</span><span style="color: #66cc66;">&#41;</span><br />
<span style="color: #000000; font-weight: bold;">def</span> writer <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #aaaadd; font-weight: bold;">FileWriter</span><span style="color: #66cc66;">&#40;</span>cache<span style="color: #66cc66;">&#41;</span><br />
<span style="color: #000000; font-weight: bold;">new</span> Analyzer<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;jabber.ru&quot;</span>, <span style="color: #ff0000;">&quot;lena1988&quot;</span>, <span style="color: #ff0000;">&quot;pass&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">analyze</span><span style="color: #66cc66;">&#40;</span>writer<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">;</span><br />
writer.<span style="color: #006600;">flush</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><br />
writer.<span style="color: #993399; font-weight: bold;">close</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.majus.ru/?feed=rss2&amp;p=376</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Контакт &#8211; обновление</title>
		<link>http://blog.majus.ru/?p=368</link>
		<comments>http://blog.majus.ru/?p=368#comments</comments>
		<pubDate>Sat, 01 Aug 2009 15:27:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Рабочее]]></category>
		<category><![CDATA[контакт]]></category>

		<guid isPermaLink="false">http://blog.majus.ru/?p=368</guid>
		<description><![CDATA[Тип: основное

Восстановление пароля
Подсказки для новых пользователей
Много новых шрифтов для генерации изображения


Изменилась палитра для выбора цвета шрифта и фона
В качестве логина теперь принимается только адрес E-mail, который будет первым контактом в списке

Всем пользователям, зарегистрировавшимся ранее, следует пройти процедуру регистрации снова, так как теперь в качестве логина может быть только E-mail адрес.
Как и ранее, страница входа в [...]]]></description>
			<content:encoded><![CDATA[<p>Тип: <font style="color:blue; font-size:larger">основное</font></p>
<ul style="list-style-image: url('http://majus.ru/images/list_add.gif');">
<li>Восстановление пароля</li>
<li>Подсказки для новых пользователей</li>
<li>Много новых шрифтов для генерации изображения</li>
</ul>
<ul style="list-style-image: url('http://majus.ru/images/list_change.gif');">
<li>Изменилась палитра для выбора цвета шрифта и фона</li>
<li>В качестве логина теперь принимается только адрес E-mail, который будет первым контактом в списке</li>
</ul>
<p>Всем пользователям, зарегистрировавшимся ранее, следует пройти процедуру регистрации снова, так как теперь в качестве логина может быть только E-mail адрес.</p>
<p>Как и ранее, страница входа в систему доступна по адресу <a href="http://majus.name/contact/login.jsp" target="_blank">http://majus.name/contact/login.jsp</a></p>
<p>Если у вас есть предложения по добавлению каких-то шрифтов в список генерации изображения, свяжитесь со мной или добавьте комментарий здесь.</p>
<p>Желаю всего хорошего.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.majus.ru/?feed=rss2&amp;p=368</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка ACORP W422G для Корбины</title>
		<link>http://blog.majus.ru/?p=361</link>
		<comments>http://blog.majus.ru/?p=361#comments</comments>
		<pubDate>Sat, 01 Aug 2009 15:18:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Рабочее]]></category>
		<category><![CDATA[hardware]]></category>

		<guid isPermaLink="false">http://blog.majus.ru/?p=361</guid>
		<description><![CDATA[Потратив две недели на настройку модема, обсуждения на форумах Acorp, удалось наконец настроить этот модем для работы с провайдером Корбина.
Мне требовалось поднять VPN соединение Корбина на самом модеме и раздать интернет двум стационарным машинам по Ethernet и КПК по WiFi. 
Скриншоты настроек под катом.

]]></description>
			<content:encoded><![CDATA[<p>Потратив две недели на настройку модема, <a href="http://www.ddixlab.ru/forum/viewtopic.php?t=864">обсуждения</a> на форумах Acorp, удалось наконец настроить этот модем для работы с провайдером Корбина.</p>
<p>Мне требовалось поднять VPN соединение Корбина на самом модеме и раздать интернет двум стационарным машинам по Ethernet и КПК по WiFi. </p>
<p>Скриншоты настроек под катом.</p>
<p><span id="more-361"></span><br />

<a href='http://blog.majus.ru/?attachment_id=362' title='2009-07-24_214718'><img width="150" height="150" src="http://blog.majus.ru/wp-content/uploads/2009/08/2009-07-24_214718-150x150.png" class="attachment-thumbnail" alt="" title="2009-07-24_214718" /></a>
<a href='http://blog.majus.ru/?attachment_id=363' title='2009-07-24_214446'><img width="150" height="150" src="http://blog.majus.ru/wp-content/uploads/2009/08/2009-07-24_214446-150x150.png" class="attachment-thumbnail" alt="" title="2009-07-24_214446" /></a>
<a href='http://blog.majus.ru/?attachment_id=364' title='2009-07-24_214559'><img width="150" height="150" src="http://blog.majus.ru/wp-content/uploads/2009/08/2009-07-24_214559-150x150.png" class="attachment-thumbnail" alt="" title="2009-07-24_214559" /></a>
<a href='http://blog.majus.ru/?attachment_id=365' title='2009-07-24_214615'><img width="150" height="150" src="http://blog.majus.ru/wp-content/uploads/2009/08/2009-07-24_214615-150x150.png" class="attachment-thumbnail" alt="" title="2009-07-24_214615" /></a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.majus.ru/?feed=rss2&amp;p=361</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Тернарный оператор</title>
		<link>http://blog.majus.ru/?p=355</link>
		<comments>http://blog.majus.ru/?p=355#comments</comments>
		<pubDate>Wed, 24 Jun 2009 23:30:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Рабочее]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.majus.ru/?p=355</guid>
		<description><![CDATA[Что выведет этот код?
class Main &#123;
&#160; &#160; 
&#160; &#160; public static void main&#40;String&#91;&#93; args&#41; &#123;
&#160; &#160; &#160; &#160; System.out.println&#40;get&#40;1&#41;&#41;;
&#160; &#160; &#160; &#160; System.out.println&#40;get&#40;null&#41;&#41;;&#160; &#160; &#160; &#160;
&#160; &#160; &#125;
&#160; &#160; 
&#160; &#160; public static Integer get&#40;Integer in&#41; &#123;
&#160; &#160; &#160; &#160; return true ? in : 0;
&#160; &#160; &#125;
&#125;
]]></description>
			<content:encoded><![CDATA[<p>Что выведет этот код?</p>
<div class="codecolorer-container java twitlight" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">class</span> Main <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>get<span style="color: #009900;">&#40;</span>1<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>get<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>&nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #003399;">Integer</span> get<span style="color: #009900;">&#40;</span><span style="color: #003399;">Integer</span> in<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span> <span style="color: #339933;">?</span> in <span style="color: #339933;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.majus.ru/?feed=rss2&amp;p=355</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Баг во Flash CS4</title>
		<link>http://blog.majus.ru/?p=341</link>
		<comments>http://blog.majus.ru/?p=341#comments</comments>
		<pubDate>Sun, 31 May 2009 00:30:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Рабочее]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[flash]]></category>

		<guid isPermaLink="false">http://blog.majus.ru/?p=341</guid>
		<description><![CDATA[При реализации в AS3 подобия иерархии классов коллекций Java натолкнулся на интересную проблему:
// Set.as
package ru.majus.util 
&#123; &#160; 
&#160; &#160; public interface Set 
&#160; &#160; &#123;
&#160; &#160; &#160; &#160; function put&#40;o:*&#41;:Boolean;&#160; &#160; &#160; 
&#160; &#160; &#160; &#160; function contains&#40;o:*&#41;:Boolean; &#160; &#160; 
&#160; &#160; &#160; &#160; function remove&#40;o:*&#41;:void;&#160; &#160; &#160; 
&#160; &#160; &#160; &#160; function size&#40;&#41;:uint; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>При реализации в AS3 подобия иерархии классов коллекций Java натолкнулся на интересную проблему:</p>
<div class="codecolorer-container actionscript3 twitlight" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="actionscript3 codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900; font-style: italic;">// Set.as</span><br />
<span style="color: #9900cc; font-weight: bold;">package</span> ru<span style="color: #000066; font-weight: bold;">.</span>majus<span style="color: #000066; font-weight: bold;">.</span>util <br />
<span style="color: #000000;">&#123;</span> &nbsp; <br />
&nbsp; &nbsp; <span style="color: #0033ff; font-weight: bold;">public</span> interface Set <br />
&nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339966; font-weight: bold;">function</span> put<span style="color: #000000;">&#40;</span>o<span style="color: #000066; font-weight: bold;">:*</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span><span style="color: #000066; font-weight: bold;">;</span>&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">contains</span><span style="color: #000000;">&#40;</span>o<span style="color: #000066; font-weight: bold;">:*</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span><span style="color: #000066; font-weight: bold;">;</span> &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339966; font-weight: bold;">function</span> remove<span style="color: #000000;">&#40;</span>o<span style="color: #000066; font-weight: bold;">:*</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span><span style="color: #000066; font-weight: bold;">;</span>&nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">size</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">uint</span><span style="color: #000066; font-weight: bold;">;</span> &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">isEmpty</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Boolean</span><span style="color: #000066; font-weight: bold;">;</span> &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">clear</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #0033ff; font-weight: bold;">void</span><span style="color: #000066; font-weight: bold;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span> &nbsp; <br />
<span style="color: #000000;">&#125;</span></div></div>
<div class="codecolorer-container actionscript3 twitlight" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="actionscript3 codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900; font-style: italic;">// LinkedSet.as</span><br />
<span style="color: #9900cc; font-weight: bold;">package</span> ru<span style="color: #000066; font-weight: bold;">.</span>majus<span style="color: #000066; font-weight: bold;">.</span>util <br />
<span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> LinkedSet implements Set<br />
&nbsp; &nbsp; <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// ...</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> _head<span style="color: #000066; font-weight: bold;">:</span>Item<span style="color: #000066; font-weight: bold;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0033ff; font-weight: bold;">private</span> <span style="color: #6699cc; font-weight: bold;">var</span> _tail<span style="color: #000066; font-weight: bold;">:</span>Item<span style="color: #000066; font-weight: bold;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000;">&#125;</span> &nbsp; <br />
<span style="color: #000000;">&#125;</span><br />
<br />
<span style="color: #9900cc; font-weight: bold;">class</span> Item <span style="color: #000000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// ...</span><br />
<span style="color: #000000;">&#125;</span></div></div>
<p>При попытке компиляции выдавало веер ошибок (по одной на каждый реализованный метод):</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">1044: Interface method size in namespace ru.majus.util:Set not implemented by class ru.majus.util:LinkedSet.</div></div>
<p>Оказалось, проблема глобальная. Это <a href="http://bugs.adobe.com/jira/browse/ASC-3672">баг</a> в Flash CS4.<br />
Решается переносом класса Item в отдельный файл. На форумах различных библиотек на AS3 уже появились сообщения о невозможности их использования на CS4.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.majus.ru/?feed=rss2&amp;p=341</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Контакт &#8211; обновление</title>
		<link>http://blog.majus.ru/?p=313</link>
		<comments>http://blog.majus.ru/?p=313#comments</comments>
		<pubDate>Mon, 04 May 2009 08:22:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Рабочее]]></category>

		<guid isPermaLink="false">http://blog.majus.ru/?p=313</guid>
		<description><![CDATA[
Тип: основное

Палитра для выбора цвета шрифта и фона
Возможность сглаживания шрифта
Возможность выбора конкретного размера шрифта от 10 до 32 пунктов
Проверка формата введенного контакта посредством ajax


Установка заголовка Content-Type для HTTP-ответа генератора изображения
Сброс кэша изображений для пользователя при внесении изменений в список контактов

Как и ранее, страница входа в систему доступна по адресу http://majus.name/contact/login.jsp
Желаю всего хорошего.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://majus.name/contact/index.jsp" target="_blank"><img src="http://blog.majus.ru/wp-content/uploads/2009/05/shot.jpg" alt="Контакт" title="Контакт" width="270" height="356" class="alignright size-full wp-image-330" /></a></p>
<p>Тип: <font style="color:blue; font-size:larger">основное</font></p>
<ul style="list-style-image: url('http://majus.ru/images/list_add.gif');">
<li>Палитра для выбора цвета шрифта и фона</li>
<li>Возможность сглаживания шрифта</li>
<li>Возможность выбора конкретного размера шрифта от 10 до 32 пунктов</li>
<li>Проверка формата введенного контакта посредством ajax</li>
</ul>
<ul style="list-style-image: url('http://majus.ru/images/list_change.gif');">
<li>Установка заголовка Content-Type для HTTP-ответа генератора изображения</li>
<li>Сброс кэша изображений для пользователя при внесении изменений в список контактов</li>
</ul>
<p>Как и ранее, страница входа в систему доступна по адресу <a href="http://majus.name/contact/login.jsp" target="_blank">http://majus.name/contact/login.jsp</a></p>
<p>Желаю всего хорошего.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.majus.ru/?feed=rss2&amp;p=313</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Начало</title>
		<link>http://blog.majus.ru/?p=289</link>
		<comments>http://blog.majus.ru/?p=289#comments</comments>
		<pubDate>Thu, 30 Apr 2009 19:08:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Контакт]]></category>

		<guid isPermaLink="false">http://blog.majus.ru/?p=289</guid>
		<description><![CDATA[Контакт &#8211; сервис, представляющий ваши контактный данные в виде изображения. В таком формате вы можете быстро вставить ваши контакты в сообщение на форуме, блоге или на своей 	домашней странице.
Сервис прост в использовании:

Укажите свои контактные данные.
Сохраните у себя ссылку на ваши контакты.
Вставляйте ссылку в ваши сообщения на форуме так, как будто вы вставляете ссылку на изображние.
Ваши [...]]]></description>
			<content:encoded><![CDATA[<p><em>Контакт</em> &#8211; сервис, представляющий ваши контактный данные в виде изображения. В таком формате вы можете быстро вставить ваши контакты в сообщение на форуме, блоге или на своей 	домашней странице.</p>
<p>Сервис прост в использовании:</p>
<ol>
<li>Укажите свои контактные данные.</li>
<li>Сохраните у себя ссылку на ваши контакты.</li>
<li>Вставляйте ссылку в ваши сообщения на форуме так, как будто вы вставляете ссылку на изображние.</li>
<li>Ваши контакты будут отображаться на форуме каждому посетителю.</li>
</ol>
<p>Преимущество сервиса в том, что вы в любой момент можете поменять свои контакты: удалить не актульаные или добавить новые &#8211; эти изменения сразу же подействуют везде, где вы использовали контакт.</p>
<ol>
<li>Измените ваши контактные данные.</li>
<li>Ваши данные обновлены везде, где вы их использовали.</li>
</ol>
<p>Еще одно немаловажное преимущество &#8211; защита от спама. Ваши контакты отображаются где бы то ни было в виде изображения, поэтому спам-боты не могут получить ваш E-mail адрес или номер ICQ. Как следствие &#8211; свободное от спама средство общения.</p>
<p>Пример того, как могут выглядеть ваши контакты:</p>
<p><img src="http://majus.name/contact/image?u=1&#038;sz=medium" style="padding:5px"/><br />
<img src="http://majus.name/contact/image?u=1&#038;st=bold&#038;f=0xd08080" style="padding:5px"/><br />
<img src="http://majus.name/contact/image?u=1&#038;st=bold&#038;f=0&#038;c=0x00ff00" style="padding:5px"/><br />
<img src="http://majus.name/contact/image/1/%2300ff00/%23000000/Acknowledge%20TT%20BRK/medium/normal/custom.png" alt="My contacts" style="padding:5px"/><br />
<img src="http://majus.name/contact/image/1/%23ff0000/%23ffafaf/Close%20to%20Me/large/normal/custom.png" alt="My contacts" style="padding:5px"/></p>
<p>Для начала работы с сервисом необходимо <a href="http://majus.name/contact/register.jsp" target="_blank">зарегистрироваться</a>. Процедура регистрации чрезвычайно проста и не займет много времени.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.majus.ru/?feed=rss2&amp;p=289</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Java и $</title>
		<link>http://blog.majus.ru/?p=234</link>
		<comments>http://blog.majus.ru/?p=234#comments</comments>
		<pubDate>Tue, 21 Apr 2009 16:47:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.majus.ru/?p=234</guid>
		<description><![CDATA[Мало кто знает, что в Java в идентификаторах допускается использование символа $ наряду с латинскими буквами, цифрами и сиволом подчеркивания. Потому следующий код синтаксически верный:
static int total$&#40;int bank$&#91;&#93;&#41; &#123;
&#160; &#160; int total$ = 0;
&#160; &#160; for &#40;int $ : bank$&#41;
&#160; &#160; &#160; &#160; total$ += $;
&#160; &#160; return total$;
&#125;
Интересующиеся могут просмотреть Java Language Specification, Third [...]]]></description>
			<content:encoded><![CDATA[<p>Мало кто знает, что в Java в идентификаторах допускается использование символа $ наряду с латинскими буквами, цифрами и сиволом подчеркивания. Потому следующий код синтаксически верный:</p>
<div class="codecolorer-container java twitlight" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">int</span> total$<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> bank$<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">int</span> total$ <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> $ <span style="color: #339933;">:</span> bank$<span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; total$ <span style="color: #339933;">+=</span> $<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> total$<span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>Интересующиеся могут просмотреть <em>Java Language Specification, Third Edition</em> (§3.8).</p>
<p>Знак доллара используется компилятором Java в именах внутренних и анонимных классов. Использовать этот знак в коде не рекоммендуется ни спецификацией ни мною.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.majus.ru/?feed=rss2&amp;p=234</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
