<?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>Блогът на Анатолий Дилов &#187; How to</title>
	<atom:link href="http://blog.adilov.net/category/how-to/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.adilov.net</link>
	<description>(не)одушевеното около мен</description>
	<lastBuildDate>Mon, 06 Sep 2010 11:47:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Как да предпазим mailto линка от спам</title>
		<link>http://blog.adilov.net/how-to/kak-da-predpazim-mailto-linka-ot-spam</link>
		<comments>http://blog.adilov.net/how-to/kak-da-predpazim-mailto-linka-ot-spam#comments</comments>
		<pubDate>Tue, 24 Aug 2010 11:43:29 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[mailto]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=2052</guid>
		<description><![CDATA[Винаги в личните или фирмени сайтовете се налага да оставим e-mail адрес за връзка. И най-лошото е, че при първия спайдър, който мине &#8211; мейла отива в нечий спам лист и се започват безкрайните печалби от лотарии, продажба на виагра и т.н. :)) Решения &#8211; какви ли не, но нищо приятно, удобно и достатъчно user [...]]]></description>
			<content:encoded><![CDATA[<p>Винаги в личните или фирмени сайтовете се налага да оставим e-mail адрес за връзка. И най-лошото е, че при първия спайдър, който мине &#8211; мейла отива в нечий спам лист и се започват безкрайните печалби от лотарии, продажба на виагра и т.н. :)) Решения &#8211; какви ли не, но нищо приятно, удобно и достатъчно user friendly. Примери: мейл адрес, в който &#8220;@&#8221; е картинка и картинката се казва &#8220;at.gif&#8221; :D или пък целият мейл е картинка и трябва да го преписваш наръка. А пък най-много ме дразнят &#8220;pencho [AT] abv.bg&#8221;. Хора, това последното мислите ли, че ви е от някаква полза? :) Общо взето последното няма да го хване някой паяк, който е контролната работа на петокласник (лично мнение)<span id="more-2052"></span></p>
<p>Цъкайки по различни страници, попаднах на едно много приятно за мен решение, което съчетава в себе си показването на мейл адреса на потребителя, може да се цъкне, за да се отвори мейл клиента с попълнена &#8220;To:&#8221; форма, както и да пази от повечето паяци, бродещи по мрежата. Става въпрос за една javascript функция, която приема като параметри данните за email адреса и след това ги сглобява с префикс &#8220;mailto:&#8221;. Javascript-ът по-долу е разширен според моите вкусове. Варианта, на който попаднах приемаше име и домейн (2 параметъра) и сглобката изглеждаше по следния начин: &#8220;mailto:&#8221; + name + &#8220;@&#8221; + domain; Не че пак не е ОК, но просто реших да се изгавря още малко. По-надолу е JS кодът, а на <a href="/wp-content/uploads/2010/08/page.html">прикачената страница</a> може да се види демото.</p>
<div class="codecolorer-container javascript default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span><br />
&nbsp; &nbsp; &nbsp;<span style="color: #003366; font-weight: bold;">function</span> sm<span style="color: #009900;">&#40;</span>a<span style="color: #339933;">,</span> b<span style="color: #339933;">,</span> c<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;window.<span style="color: #660066;">location</span>.<span style="color: #660066;">href</span> <span style="color: #339933;">=</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">'ma'</span> <span style="color: #339933;">+</span> String.<span style="color: #660066;">fromCharCode</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">105</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">'l'</span> <span style="color: #339933;">+</span> String.<span style="color: #660066;">fromCharCode</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">116</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #3366CC;">'o:'</span> <span style="color: #339933;">+</span> a <span style="color: #339933;">+</span> <span style="color: #3366CC;">'@'</span> <span style="color: #339933;">+</span> b <span style="color: #339933;">+</span> <span style="color: #3366CC;">'.'</span> <span style="color: #339933;">+</span> c<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></div></td></tr></tbody></table></div>
<p>Името на функцията, променливите и &#8220;mailto:&#8221; съвсем умишлено са намазани.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/kak-da-predpazim-mailto-linka-ot-spam/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update на WordPress (core и plugins)</title>
		<link>http://blog.adilov.net/how-to/update-na-wordpress-core-i-plugins</link>
		<comments>http://blog.adilov.net/how-to/update-na-wordpress-core-i-plugins#comments</comments>
		<pubDate>Thu, 18 Feb 2010 19:14:01 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[new version]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[нова версия]]></category>
		<category><![CDATA[платформа]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=1711</guid>
		<description><![CDATA[И преди съм чувал от познати с блогове, че са изпитвали затруднения с не-автоматичният update на платформата и/или плъгините към нея. До сега не ми се е случвало да се изложа с обновлението много-много, затова ще напиша как процедирам аз при такива събития. Ще започна със средата и как изглежда директорийната структура. Блогът се намира [...]]]></description>
			<content:encoded><![CDATA[<p>И преди съм чувал от познати с блогове, че са изпитвали затруднения с не-автоматичният update на платформата и/или плъгините към нея. До сега не ми се е случвало да се изложа с обновлението много-много, затова ще напиша как процедирам аз при такива събития.<span id="more-1711"></span> </p>
<p>Ще започна със средата и как изглежда директорийната структура. Блогът се намира в /path/wordpress_2.9.1. В тази директория са всички онези WordPress директории, които съдържат plugin-и, теми и т.н. Това грозно име не е никак случайно. Показва ми коя версия е платформата в тази директория, а пък апаче сървърът търси блога в /path/blog. /path/blog всъщност е symlink към /path/wordpress_2.9.1 с цел много по-лесно превключване от версия към друга. До тук &#8211; добре, но по-нататък?</p>
<p>Следващите стъпки също са лесни. Както днес забелязах &#8211; имаме нова версия на WordPress платформата &#8211; 2.9.2. Свалям wordpress.zip архива и го разахивирам в /path/wordpress_2.9.2. Забележете, че все още не съм преместил символния линк да сочи към новата директория. Нека блогът да е в действие докато update-вам. Имам няколко файлове/директории, които трябва да преместя от старата в новата директория, но както казах &#8211; за да запазим ъптаймът на блога, няма да местя, а ще копирам. Ще копирам от 2.9.1 в 2.9.2 следните директории (защото знам, че и след overwrite няма да има проблем, няма нищо ценно в чисто копие на wordpress в тях:</p>
<ul>
<li>wp-content/plugins</li>
<li>wp-content/themes</li>
<li>wp-content/uploads</li>
</ul>
<p>Файловете, които ни трябват са само няколко, зависи какво имате променено:</p>
<ul>
<li>wp-config.php &#8211; задължилтено :)</li>
<li>wp-includes/category-template.php като преди това го diff-на с новата версия, за да видя дали има други промени освен моите по tag cloud-а (<a href="/how-to/tag-cloud-at-na-wordpress">Tag Cloud-ът на WordPress</a>). Естествено ако не сте пипали по този файл &#8211; няма смисъл да го overwrite-вате.</li>
<li>sitemap.xml &#8211; ако имате sitemap плъгин &#8211; такъв файл би трябвало да има, ако не използвате &#8211; пропускате и тази стъпка</li>
<li>.htaccess &#8211; ако има някакъв url rewriting &#8211; то този файл е от огромно значение</li>
<li>Ако имате някакъвскрипт за броячи или статистики &#8211; него съответно (например вкараният от Google analytics скрипт)</li>
</ul>
<p>Та, това е с копирането, сега за няколко секунди сменям symbolic link-а и всичко заспива с новата версия на платформата. Още една вероятна стъпка е даването на подходящи permission-и на файловете :)</p>
<p>Ъпдейтът на плъгините е доста елементарен &#8211; свалям новият архив в директорията с плъгините, трия плъгина, разархивирам архивчето, после го изтривам и него и всичко е (като) ново.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/update-na-wordpress-core-i-plugins/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Username-ите в Network Identity Manager-а на MIT</title>
		<link>http://blog.adilov.net/how-to/username-ite-v-network-identity-manager-a-na-mit</link>
		<comments>http://blog.adilov.net/how-to/username-ite-v-network-identity-manager-a-na-mit#comments</comments>
		<pubDate>Mon, 11 Jan 2010 07:40:07 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[kerberos]]></category>
		<category><![CDATA[mit]]></category>
		<category><![CDATA[network identity manager]]></category>
		<category><![CDATA[registry]]></category>
		<category><![CDATA[username]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=1670</guid>
		<description><![CDATA[Тъй, тук ще говоря за един чудничък (лол.) продукт на MIT &#8211; Network Identity Manager. Не сте го чували? Ми, едва ли ви и трябва, след като всичко, което прави е да предоставя конзолна функционалност на керберос клиент в графична форма. При създаване на нови credential-и има една диалогова кутия, дето ви иска username, realm [...]]]></description>
			<content:encoded><![CDATA[<p>Тъй, тук ще говоря за един чудничък (лол.) продукт на MIT &#8211; Network Identity Manager. Не сте го чували? Ми, едва ли ви и трябва, след като всичко, което прави е да предоставя конзолна функционалност на керберос клиент в графична форма.<span id="more-1670"></span></p>
<p>При създаване на нови credential-и има една диалогова кутия, дето ви иска username, realm и парола. Чудно, ама аз докато блеех нанякъде другаде си написах паролата в полето username, вместо в това за парола. И праснах Enter. :)</p>
<p>Е, не успях да се логна, но пък хитрушата ми запомни паролата и като цъкам drop-down-а се виждат всички отвратителни десетки символи за парола. Ето и начин, с който можем да поправим тази наша грешка.</p>
<p>В Windows registry-то, пътят до entity-то, което пази тези данни е HKEY_CURRENT_USER -&gt; Software -&gt; MIT -&gt; NetIDMgr -&gt; PluginManager -&gt; Plugins -&gt; Krb5Cred -&gt; Parameters -&gt; LRUPrincipals. Е в това последното махате нежелания запис и&#8230; Пей сърце :) Нямя нищо сложно, username@realm се пазят като плейн текст в списък, разделен със запетаи (отвратително хитро, но&#8230; :))</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/username-ite-v-network-identity-manager-a-na-mit/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screen captures using Java</title>
		<link>http://blog.adilov.net/how-to/screen-captures-using-java</link>
		<comments>http://blog.adilov.net/how-to/screen-captures-using-java#comments</comments>
		<pubDate>Wed, 30 Dec 2009 12:59:25 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[capture]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[screen]]></category>
		<category><![CDATA[screenshot]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=1625</guid>
		<description><![CDATA[Един наистина прост пример, с който можем да правим много бързо screenshot-ове, използвайки Java: 123456789101112public class ScreenCapture &#123; &#160; &#160; public static void main&#40;String&#91;&#93; args&#41; throws Exception &#123; &#160; &#160; &#160; &#160; Dimension dimension = Toolkit.getDefaultToolkit&#40;&#41;.getScreenSize&#40;&#41;; &#160; &#160; &#160; &#160; BufferedImage image = new Robot&#40;&#41;.createScreenCapture&#40;new Rectangle&#40;dimension&#41;&#41;; &#160; &#160; &#160; &#160; File file = new File&#40;&#34;capture.png&#34;&#41;; [...]]]></description>
			<content:encoded><![CDATA[<p>Един наистина прост пример, с който можем да правим много бързо screenshot-ове, използвайки Java:</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><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;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ScreenCapture <span style="color: #009900;">&#123;</span><br />
<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: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">Exception</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">Dimension</span> dimension <span style="color: #339933;">=</span> <span style="color: #003399;">Toolkit</span>.<span style="color: #006633;">getDefaultToolkit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getScreenSize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">BufferedImage</span> image <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Robot</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">createScreenCapture</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">Rectangle</span><span style="color: #009900;">&#40;</span>dimension<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003399;">File</span> file <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">File</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;capture.png&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; ImageIO.<span style="color: #006633;">write</span><span style="color: #009900;">&#40;</span>image, <span style="color: #0000ff;">&quot;png&quot;</span>, file<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Не е загуба ако се разгледа класа <em>ImageIO</em> &#8211; дава доста възможности и никак не е за изпускане :)</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/screen-captures-using-java/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tag Cloud-ът на WordPress</title>
		<link>http://blog.adilov.net/how-to/tag-cloud-at-na-wordpress</link>
		<comments>http://blog.adilov.net/how-to/tag-cloud-at-na-wordpress#comments</comments>
		<pubDate>Thu, 10 Sep 2009 19:47:32 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[codex]]></category>
		<category><![CDATA[customize]]></category>
		<category><![CDATA[tag cloud]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[блог]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=1239</guid>
		<description><![CDATA[Цъкам си по блога и се загледах в tag cloud-a (Облаче ле бяло) като във V6 3.0 HDi&#8230; Както и да е, трябва да го сложа в Wish List-а си за близкото бъдеще :&#62; Та, идеята ми беше за Tag Cloud-а и по-точно &#8211; как се customize-ва. Файлчето, с което трябва да се изгаврим е [...]]]></description>
			<content:encoded><![CDATA[<p>Цъкам си по блога и се загледах в tag cloud-a (Облаче ле бяло) като във V6 3.0 HDi&#8230; Както и да е, трябва да го сложа в Wish List-а си за близкото бъдеще :&gt;</p>
<p>Та, идеята ми беше за Tag Cloud-а и по-точно &#8211; как се customize-ва. Файлчето, с което трябва да се изгаврим е <strong>wp-includes/category-template.php</strong>, функцията е <em>wp_tag_cloud</em>, а в <a href="http://codex.wordpress.org/Template_Tags/wp_tag_cloud">codex</a>-ът пише всичко останало :)</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/tag-cloud-at-na-wordpress/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows Mobile: remove all calendar and contact entries</title>
		<link>http://blog.adilov.net/how-to/windows-mobile-remove-all-calendar-and-contact-entries</link>
		<comments>http://blog.adilov.net/how-to/windows-mobile-remove-all-calendar-and-contact-entries#comments</comments>
		<pubDate>Mon, 10 Aug 2009 12:00:19 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Операционни Системи]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[activesync]]></category>
		<category><![CDATA[device]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[pda]]></category>
		<category><![CDATA[pim]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[windows mobile]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=1171</guid>
		<description><![CDATA[Как да махнем всички записи в календара и адресната книга от Windows Mobile PDA без да използваме ActiveSync? На ръка &#8211; абсурдно. Единственият начин който открих е чрез премахване на pim файла в My Device директорията. Този файл се използва от PDA-то и не може да се изтрие директно, така че трябва да се използва [...]]]></description>
			<content:encoded><![CDATA[<p>Как да махнем всички записи в календара и адресната книга от Windows Mobile PDA без да използваме ActiveSync? На ръка &#8211; абсурдно. Единственият начин който открих е чрез премахване на pim файла в My Device директорията. Този файл се използва от PDA-то и не може да се изтрие директно, така че трябва да се използва леко глупав workaround. Файлът се преименува (на pim2, например), device-ът се рестартира, създава нов чист pim файл и вече можем да изтрием стария (pim2).</p>
<p>Готово, нямаме старите записи :)</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/windows-mobile-remove-all-calendar-and-contact-entries/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse: escape when pasting</title>
		<link>http://blog.adilov.net/how-to/eclipse-escape-when-pasting</link>
		<comments>http://blog.adilov.net/how-to/eclipse-escape-when-pasting#comments</comments>
		<pubDate>Mon, 06 Jul 2009 15:36:28 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[paste]]></category>
		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=838</guid>
		<description><![CDATA[Хубаво е когато правим някакъв тестов клас и временно в него забиваме път до определен ресурс да не се налага да escape-ваме символи на ръка. Това е само един от многото примери, когато един автоматичен escaping би свършил чудна работа. В Eclipse по подразбиране тази функционалност не е включена, но можем да го направим от [...]]]></description>
			<content:encoded><![CDATA[<p>Хубаво е когато правим някакъв тестов клас и временно в него забиваме път до определен ресурс да не се налага да escape-ваме символи на ръка. Това е само един от многото примери, когато един автоматичен escaping би свършил чудна работа. В Eclipse по подразбиране тази функционалност не е включена, но можем да го направим от</p>
<p><strong>Window&gt;Preference&gt;Java&gt;Editor&gt;Typing</strong> и изберем &#8220;<strong>Escape text when pasting into a string literal</strong>&#8220;</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/eclipse-escape-when-pasting/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows files attributes</title>
		<link>http://blog.adilov.net/how-to/windows-files-attributes</link>
		<comments>http://blog.adilov.net/how-to/windows-files-attributes#comments</comments>
		<pubDate>Tue, 23 Jun 2009 18:37:53 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Операционни Системи]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[attrib]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[file attributes]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[файл]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=792</guid>
		<description><![CDATA[Наскоро се занимавах с desktop.ini файловете &#8211; след като го редактирам, той ставаше видим, въпреки че системните файлове са скрити. Погледнах атрибутите на файла след редакцията &#8211; нямаше S (System). За промяна на атрибутите на даден файл под Windows се използва attrib.exe: cmd -&#62; attrib /? C:\Users\Anatoliy Dilov\Downloads&#62;attrib /? Displays or changes file attributes. ATTRIB [...]]]></description>
			<content:encoded><![CDATA[<p>Наскоро се занимавах с desktop.ini файловете &#8211; след като го редактирам, той ставаше видим, въпреки че системните файлове са скрити. Погледнах атрибутите на файла след редакцията &#8211; нямаше <em>S</em> (<em>System</em>).</p>
<p>За промяна на атрибутите на даден файл под Windows се използва attrib.exe: cmd -&gt; attrib /?</p>
<div class="codecolorer-container text default" 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">C:\Users\Anatoliy Dilov\Downloads&gt;attrib /?<br />
Displays or changes file attributes.<br />
<br />
ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I]<br />
[drive:][path][filename] [/S [/D] [/L]]<br />
<br />
+   Sets an attribute.<br />
-   Clears an attribute.<br />
R   Read-only file attribute.<br />
A   Archive file attribute.<br />
S   System file attribute.<br />
H   Hidden file attribute.<br />
I   Not content indexed file attribute.<br />
[drive:][path][filename]<br />
&nbsp; &nbsp; Specifies a file or files for attrib to process.<br />
/S  Processes matching files in the current folder<br />
&nbsp; &nbsp; and all subfolders.<br />
/D  Processes folders as well.<br />
/L  Work on the attributes of the Symbolic Link versus<br />
&nbsp; &nbsp; the target of the Symbolic Link</div></div>
<p>Крайният резултат за един desktop.ini файл трябва да изглежда така:</p>
<div class="codecolorer-container winbatch default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="winbatch codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">attrib <span style="color: #66cc66;">+</span>h <span style="color: #66cc66;">+</span>s <span style="color: #66cc66;">+</span>a desktop.ini</div></div>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/windows-files-attributes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Separate package loading in Drools</title>
		<link>http://blog.adilov.net/how-to/separate-package-loading-in-drools</link>
		<comments>http://blog.adilov.net/how-to/separate-package-loading-in-drools#comments</comments>
		<pubDate>Mon, 11 May 2009 21:42:38 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[dools]]></category>
		<category><![CDATA[drl]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[loading]]></category>
		<category><![CDATA[packages]]></category>
		<category><![CDATA[pkg]]></category>
		<category><![CDATA[separate]]></category>
		<category><![CDATA[stream]]></category>
		<category><![CDATA[url]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=745</guid>
		<description><![CDATA[Първо, линкче към Drools, а след това &#8211; малко разяснение за целта на упражнението. Няма да говоря за Drools като технология, нито ще изразявам мнения и вплечатления тук. Ще приема, че мога да говоря с Drools термините &#8211; исканото решение имаше за цел да зарежда компилираните пакети runtime и поотделно. Нека вземем примера от документацията [...]]]></description>
			<content:encoded><![CDATA[<p>Първо, линкче към <a href="http://www.jboss.org/drools/">Drools</a>, а след това &#8211; малко разяснение за целта на упражнението. Няма да говоря за Drools като технология, нито ще изразявам мнения и вплечатления тук. Ще приема, че мога да говоря с Drools термините &#8211; исканото решение имаше за цел да зарежда компилираните пакети runtime и поотделно.<span id="more-745"></span></p>
<p>Нека вземем примера от документацията &#8211; за мъж и момче, които искат да вземат кредит. В .drl файла пишем правило, че хората над определена възраст могат да взимат кредити, а тези под тази възраст &#8211; не могат. Компилираме .drl файла до пакет (.pkg) и тук започнаха приключенията, а решението беше толкова просто&#8230;</p>
<p>Така е &#8211; не използвам никакви пропъртита, просто създавам един stream с адреса на файла. Stream-ът ни дава доста голяма гъвкавост &#8211; файлове, url, DB. А и кодът е доста прост:</p>
<p><div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #003399;">InputStream</span> inputStream <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">FileInputStream</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">File</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;credit.pkg&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">Package</span> <span style="color: #006699;">pkg</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">Package</span><span style="color: #009900;">&#41;</span> stream.<span style="color: #006633;">readObject</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
inputStream.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
stream.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
RuleBase rules <span style="color: #339933;">=</span> RuleBaseFactory.<span style="color: #006633;">newRuleBase</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
rules.<span style="color: #006633;">addPackage</span><span style="color: #009900;">&#40;</span>pkg<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
WorkingMemory session <span style="color: #339933;">=</span> rules.<span style="color: #006633;">newStatefulSession</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
Person adult <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Person<span style="color: #009900;">&#40;</span>“Mr Snr”, <span style="color: #cc66cc;">35</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
Person child <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Person<span style="color: #009900;">&#40;</span>“Jnr”, <span style="color: #cc66cc;">15</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
session.<span style="color: #006633;">insert</span><span style="color: #009900;">&#40;</span>adult<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
session.<span style="color: #006633;">insert</span><span style="color: #009900;">&#40;</span>child<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
session.<span style="color: #006633;">fireAllRules</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/separate-package-loading-in-drools/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Стартиране на iGO8 от ROM</title>
		<link>http://blog.adilov.net/how-to/startirane-na-igo8-ot-rom</link>
		<comments>http://blog.adilov.net/how-to/startirane-na-igo8-ot-rom#comments</comments>
		<pubDate>Wed, 06 May 2009 18:15:07 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[igo]]></category>
		<category><![CDATA[igo8]]></category>
		<category><![CDATA[microsd]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[rom]]></category>
		<category><![CDATA[име]]></category>
		<category><![CDATA[карта]]></category>
		<category><![CDATA[начало]]></category>
		<category><![CDATA[памет]]></category>
		<category><![CDATA[стартиране]]></category>
		<category><![CDATA[телефон]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=721</guid>
		<description><![CDATA[Като цяло не обичам даден application да зависи от външни устройства като GPS модули, memory карти и т.н. iGO8 по подразбиране е точно такъв софтуер &#8211; трябва да се стартира винаги от memory картата. Ето защо порових с идеята как мога да го сложа в паметта на телефона и да нямам нищо общо с microSD-то. [...]]]></description>
			<content:encoded><![CDATA[<p>Като цяло не обичам даден application да зависи от външни устройства като GPS модули, memory карти и т.н. iGO8 по подразбиране е точно такъв софтуер &#8211; трябва да се стартира винаги от memory картата. Ето защо порових с идеята как мога да го сложа в паметта на телефона и да нямам нищо общо с microSD-то. Ето какво трябва да се направи:</p>
<ol>
<li>Приемаме, че iGO8 се намира в директория със същото име. Копираме тази директория в Program Files</li>
<li>Отваряме за редакция Program Files/iGO8/SYS.TXT. В него има запис от рода на &#8220;<em>app=&#8221;%SDCARD%/iGO8&#8243;</em>&#8221; (без външните кавички). Точно това е ключът от палатката, който ни пречи. Променяме го на &#8220;<em>app=&#8221;/Program Files/iGO8&#8243;</em>&#8221; (пак без външните кавички)</li>
<li>Стартираме от iGO8.exe (а при желание можем да направим и shortcut в менюто с другите програми.</li>
</ol>
<p>По този начин целта е изпълнена &#8211; нямаме нужда от memory карта, за да стартираме iGO8.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/startirane-na-igo8-ot-rom/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unread e-mail filter in Outlook 2007</title>
		<link>http://blog.adilov.net/how-to/unread-e-mail-filter-in-outlook-2007</link>
		<comments>http://blog.adilov.net/how-to/unread-e-mail-filter-in-outlook-2007#comments</comments>
		<pubDate>Thu, 23 Apr 2009 21:41:38 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[outlook]]></category>
		<category><![CDATA[unread]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=673</guid>
		<description><![CDATA[An article, describing the process of creating a filter to show only the unread e-mails: 1. Expand the Personal Folders tree item and open the Search Folder&#8216;s context menu by right clicking on it: 2. Choose New Search Folder to open the filter window: 3. Select the Unread Mail item and click on the OK [...]]]></description>
			<content:encoded><![CDATA[<p>An article, describing the process of creating a filter to show only the unread e-mails:</p>
<p>1. Expand the <em>Personal Folders</em> tree item and open the <em>Search Folder</em>&#8216;s context menu by right clicking on it:<br />
<img class="alignnone size-full wp-image-674" title="outlook_unread_filter_1" src="http://blog.adilov.net/wp-content/uploads/2009/04/outlook_unread_filter_1.png" alt="outlook_unread_filter_1" width="323" height="432" /></p>
<p>2. Choose <em>New Search Folder</em> to open the filter window:<br />
<img class="alignnone size-full wp-image-678" title="outlook_unread_filter_2" src="http://blog.adilov.net/wp-content/uploads/2009/04/outlook_unread_filter_2.png" alt="outlook_unread_filter_2" width="340" height="412" /></p>
<p>3. Select the <em>Unread Mail</em> item and click on the OK button. Now you can see only the unread e-mails:<br />
<img class="alignnone size-full wp-image-686" title="outlook_unread_filter_3" src="http://blog.adilov.net/wp-content/uploads/2009/04/outlook_unread_filter_3.png" alt="outlook_unread_filter_3" width="174" height="378" /></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/unread-e-mail-filter-in-outlook-2007/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse: Remove trailing whitespaces on save</title>
		<link>http://blog.adilov.net/how-to/eclipse-remove-trailing-whitspaces-on-save</link>
		<comments>http://blog.adilov.net/how-to/eclipse-remove-trailing-whitspaces-on-save#comments</comments>
		<pubDate>Tue, 31 Mar 2009 21:24:56 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[on save]]></category>
		<category><![CDATA[remove]]></category>
		<category><![CDATA[save]]></category>
		<category><![CDATA[space]]></category>
		<category><![CDATA[trailing]]></category>
		<category><![CDATA[записване]]></category>
		<category><![CDATA[премахване]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=602</guid>
		<description><![CDATA[Мхм, отвратителни са тия спейсове и табове, които остават по файловете. Например прасвам 2 (два :D) пъти return и на онзи празен ред, който остана &#8211; известно количество не чак толкова празно място, колкото изглежда. За да видим дали наистина празното място е толкова празно, колкото изглежда &#8211; ще включим &#8220;show whitespace characters&#8220;. Най-бързо това [...]]]></description>
			<content:encoded><![CDATA[<p>Мхм, отвратителни са тия спейсове и табове, които остават по файловете. Например прасвам 2 (два :D) пъти return и на онзи празен ред, който остана &#8211; известно количество не чак толкова празно място, колкото изглежда. За да видим дали наистина празното място е толкова празно, колкото изглежда &#8211; ще включим &#8220;<em>show whitespace characters</em>&#8220;. Най-бързо това може да стане с &#8220;<em><strong>Ctrl + 3</strong></em>&#8221; и &#8220;<em><strong>whitespace</strong></em>&#8221; в полето.<span id="more-602"></span> Супер удобен фичър! Изключва се по същия начин. Да, вариант е да ги едитнем веднъж на ръка, ама&#8230; Всичко ръчно не е чак толкова яко :-&gt; Други варианти &#8211; ауто формат &#8211; &#8220;<em><strong>Ctrl + Shift + f</strong></em>&#8220;, но по мое мнение &#8211; отвратително. Друг вариант е да използваме настроен Clean Up. Яко, но не чак толкова. Струва ми се по-хитър подход е да кажем на save action-ът при записване на java файловете да чисти тия пространства (в текущия файл). Ето как</p>
<ol>
<li>Window -&gt; Preferences</li>
<li>Java -&gt; Editor -&gt; Save Actions</li>
<li>Check &#8220;<em>Perform the selected actions on save</em>&#8220;</li>
<li>Check &#8220;<em>Additional Actions</em>&#8220;</li>
<li>Configure бутона и махаме всички възможни чавки &#8211; не исакме да пипа нищо, освен, ако не сме му казали изрично.</li>
<li>Tab &#8220;<em>Code Organizing</em>&#8220;</li>
<li>Check &#8220;<em>All lines</em>&#8220;</li>
<li>OKs</li>
</ol>
<p>Връщаме се във файла, правим промяна, записваме и&#8230; Найс?</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/eclipse-remove-trailing-whitspaces-on-save/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse и .properties файловете</title>
		<link>http://blog.adilov.net/how-to/eclipse-i-properties-faylovete</link>
		<comments>http://blog.adilov.net/how-to/eclipse-i-properties-faylovete#comments</comments>
		<pubDate>Sun, 22 Mar 2009 16:36:21 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[internationalisation]]></category>
		<category><![CDATA[iso]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[properties]]></category>
		<category><![CDATA[utf]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=576</guid>
		<description><![CDATA[Пиша си аз разни .properties файлове и в един момент идва времето за i18n. Интернационализираните фрази се пазят в .properties файлове и съответно ще има символи, различни от ISO-8859-1. Супер, уж съм си сетнал Eclipse да ми създава файловете в UTF-8, дори го прави! Отварям пропъртис файла, в който ще се намира българска транслация на [...]]]></description>
			<content:encoded><![CDATA[<p>Пиша си аз разни .properties файлове и в един момент идва времето за i18n. Интернационализираните фрази се пазят в .properties файлове и съответно ще има символи, различни от ISO-8859-1. Супер, уж съм си сетнал Eclipse да ми създава файловете в UTF-8, дори го прави!<span id="more-576"></span></p>
<p>Отварям пропъртис файла, в който ще се намира българска транслация на системата, пиша 2 пропътита и ctrl + s. Наплю ме, във файла имам символи, различни от ISO-8859-1. Нормално, но защо ме плюеш, <strong><em>сфиньо</em></strong>?!</p>
<p>Оказа се, че в Eclispe по подразбиране има default encoding на някои content types. Можем да го сменим от Preferences -&gt; General -&gt; Content Types. В моят случай, продължавам малко по-надълбоко в йерархията &#8211; Text -&gt; Java Properties File и долу в Default Encoding променям записа на UTF-8. Цъкам Update и на всички child node-ове енкодинга е ъпдейтнат.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/eclipse-i-properties-faylovete/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress 2MB upload limit</title>
		<link>http://blog.adilov.net/how-to/wordpress-2mb-upload-limit</link>
		<comments>http://blog.adilov.net/how-to/wordpress-2mb-upload-limit#comments</comments>
		<pubDate>Sat, 21 Mar 2009 15:36:36 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[limit]]></category>
		<category><![CDATA[upload]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=569</guid>
		<description><![CDATA[С предния пост, в който има снимка с обем над 2MB се натъкнах на едно ограничение в WordPress за ограничение в рамера на качените файлове. Default-ната стойност е 2MB, но това лесно може да се оправи. В главната директория на блога има .htaccess файл. В него трябва да се добави едно редче: php_value upload_max_filesize 5M [...]]]></description>
			<content:encoded><![CDATA[<p>С предния пост, в който има снимка с обем над 2MB се натъкнах на едно ограничение в WordPress за ограничение в рамера на качените файлове. Default-ната стойност е 2MB, но това лесно може да се оправи. В главната директория на блога има .htaccess файл. В него трябва да се добави едно редче:</p>
<blockquote><p>
php_value upload_max_filesize 5M
</p></blockquote>
<p>С него вдигаме ограничението до 5MB за файл.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/wordpress-2mb-upload-limit/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomcat, Apache, mod_jk и FreeBSD</title>
		<link>http://blog.adilov.net/how-to/tomcat-apache-mod_jk-i-freebsd</link>
		<comments>http://blog.adilov.net/how-to/tomcat-apache-mod_jk-i-freebsd#comments</comments>
		<pubDate>Wed, 11 Mar 2009 01:19:19 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[mod_jk]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[webapps]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[домейн]]></category>
		<category><![CDATA[конфигурация]]></category>
		<category><![CDATA[порт]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=507</guid>
		<description><![CDATA[WTF: имам работещо Apache. Пиша java web application и искам той да се търкаля на port 80 на един от VHost-овете му. В моя случай към Apache-то имам закачени 30-тина домейна с по няколко VHost-а за всеки от домейните (т.е. домейните са като VHosts, техните sub-домейни &#8211; също). За пример &#8211; http://adilov.net и http://blog.adilov.net. Вариант [...]]]></description>
			<content:encoded><![CDATA[<p>WTF: имам работещо Apache. Пиша java web application и искам той да се търкаля на port 80 на един от VHost-овете му. В моя случай към Apache-то имам закачени 30-тина домейна с по няколко VHost-а за всеки от домейните (т.е. домейните са като VHosts, техните sub-домейни &#8211; също). За пример &#8211; <a href="http://adilov.net">http://adilov.net</a> и <a href="http://blog.adilov.net">http://blog.adilov.net</a>.<span id="more-507"></span></p>
<p>Вариант 1: Tomcat слуша на порт 80. В текущия случай -  невъзможно, имам Аpache там. Вариантът отпада :)<br />
Вариант 2: Apache-то да пренасочва по някакъв начин към Tomcat. Ами &#8211; по-добрият вариант. Даже перфектният &#8211; статичното съдържание ще се сервира от Apache-то и няма да тормозя java процеса с глупости, а динамичното &#8211; от Tomcat. Как? С <a href="http://tomcat.apache.org/connectors-doc/">mod_jk</a>. И под FreeBSD, естествено :)</p>
<p>Стъпките по инсталацията на Apache и Tomcat ще ги пропусна, те са ясни. За дефолтни инсталации &#8211; /usr/ports/www/apache22 и /usr/ports/www/tomcat6.</p>
<p>Трябва ни обаче и инсталиран mod_jk. В ports-дървото той се намира в /usr/ports/www/mod_jk. Инсталираме го и добавяме в <strong>httpd.conf</strong> (ако не се намира на default-ното място и липсва поне един ред, започващ с LoadModule) &#8220;<em>LoadModule jk_module libexec/apache22/mod_jk.so</em>&#8221; &#8211; ако mod_jk се намира в тази директория и без кавичките.</p>
<p>Обикновено httpd.conf include-ва всички .conf файлове от Includes, затова нека направим един там &#8211; <strong>tomcat.conf</strong>:</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">JkWorkersFile /usr/local/apache-tomcat6.0/conf/workers.properties<br />
JkLogFile  /var/log/jk.log<br />
JkShmFile  /var/log/jk-runtime-status<br />
JkLogLevel error</div></td></tr></tbody></table></div>
<p>Тук забелязваме default-ната инсталационна директория на Tomcat &#8211; /usr/local/apache-tomcat6.0 и съответно я заместваме с реалната. Нека се прехвърлим за момент в %TOMCAT_HOME%/conf и да създадем файл <strong>workers.properties</strong>:</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">worker.list=java<br />
worker.java.port=8009<br />
worker.java.host=192.168.10.1<br />
worker.java.type=ajp13<br />
worker.java.lbfactor=1</div></td></tr></tbody></table></div>
<p>Портът, който виждаме е default-ния, а ако искаме custom &#8211; онзи от <strong>server.xml</strong>, в node &#8220;<em>Connector</em>&#8221; с &#8220;<em>protocol=AJP/1.3</em>&#8220;. IP-то е интересно. Нарочно го пиша различно, за да се забелязва отдалече. Ако слагаме Tomcat в Jail &#8211; това е адресът на Jail-a.</p>
<p>Готови сме с Tomcat/Apache конфигурационните файлове. Нека погледнем VHost-овете. Отваряме някой от VHost конфигурационните файлове (а може би http.conf, ако някой го е домързяло да ги отдели&#8230; Както казах при по-голямо количество VHost-ове доста по-удобно става разделението по директории и файлове.) и в него пишем:</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">JkMount /* java</div></td></tr></tbody></table></div>
<p>Мда, /* е еквивалентно на / в Tomcat, т.е. webapps/ROOT. Записваме промените и стартираме Tomcat и Apache и ако приемем, че VHost-ът е за http://sub.int.yo, при отварането му би трябвало да видим дефолтната страничка на Tomcat (webapps/ROOT/index.html). Честито!</p>
<p>PS: Т&#8217;ва работи и не само за fBSD (yeah.), изключваме частта с /usr/ports и пърхаме нататък.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/how-to/tomcat-apache-mod_jk-i-freebsd/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
