<?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; Програмиране</title>
	<atom:link href="http://blog.adilov.net/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.adilov.net</link>
	<description>(не)одушевеното около мен</description>
	<lastBuildDate>Sat, 12 Nov 2011 22:26:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>JDBC connection към BIRT</title>
		<link>http://blog.adilov.net/technical/programming/jdbc-connection-kam-birt</link>
		<comments>http://blog.adilov.net/technical/programming/jdbc-connection-kam-birt#comments</comments>
		<pubDate>Mon, 06 Dec 2010 12:06:09 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[birt]]></category>
		<category><![CDATA[connection]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jdbc]]></category>
		<category><![CDATA[report]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=2236</guid>
		<description><![CDATA[И днес продължаваме темата за BIRT и ставаме от advanced &#8211; по-advanced. Целта на днешното упражнение е да можем да подаваме произволен java.sql.Connection към BIRT engine-а. Както споменах и в предния пост &#8211; документация и примери трудно се намират, дори и за не особено криви неща като &#8220;подаване на параметри&#8221;, &#8220;подаване на connection&#8221; и т.н., [...]]]></description>
			<content:encoded><![CDATA[<p>И днес продължаваме темата за BIRT и ставаме от advanced &#8211; по-advanced. Целта на днешното упражнение е да можем да подаваме произволен java.sql.Connection към BIRT engine-а.<span id="more-2236"></span></p>
<p>Както споменах и в предния пост &#8211; документация и примери трудно се намират, дори и за не особено криви неща като &#8220;подаване на параметри&#8221;, &#8220;подаване на connection&#8221; и т.н., затова давам целия код, а не само парченца:</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 /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">EngineConfig config <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> EngineConfig<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
config.<span style="color: #006633;">setEngineHome</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;C:<span style="color: #000099; font-weight: bold;">\\</span>PROJECTS<span style="color: #000099; font-weight: bold;">\\</span>BirtReportEngine&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
config.<span style="color: #006633;">setLogConfig</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">null</span>, Level.<span style="color: #006633;">WARNING</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
Platform.<span style="color: #006633;">startup</span><span style="color: #009900;">&#40;</span>config<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
IReportEngineFactory factory <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>IReportEngineFactory<span style="color: #009900;">&#41;</span> Platform.<span style="color: #006633;">createFactoryObject</span><span style="color: #009900;">&#40;</span>IReportEngineFactory.<span style="color: #006633;">EXTENSION_REPORT_ENGINE_FACTORY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
IReportEngine engine <span style="color: #339933;">=</span> factory.<span style="color: #006633;">createReportEngine</span><span style="color: #009900;">&#40;</span>config<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
engine.<span style="color: #006633;">getConfig</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getAppContext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;OdaJDBCDriverPassInConnection&quot;</span>, conn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>(за пример как може да продължи кода &#8211; <a href="http://blog.adilov.net/technical/programming/parametrizirani-reporti-v-birt">Параметризирани репорти в BIRT</a>)</p>
<p>Цялата къщурка се крепи на последния ред, където бутваме произволен java.sql.Connection в BIRT engine-а. От тук нататък &#8211; можем да си полваме спокойно нововъведението.</p>
<p>Малко вметване &#8211; ако в .rptdesign файла имаме някакви данни за връзка с базата, то те ще бъдат игнорирани. &#8220;OdaJDBCDriverPassInConnection&#8221; е с по-висок приоритет от тях, което значи, че спокойно можем да дадем на някоя BIRT нинджа да прави репорти в еклипс и после без никаква промяна ние да ги пускаме върху подходящата база.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/technical/programming/jdbc-connection-kam-birt/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Параметризирани репорти в BIRT</title>
		<link>http://blog.adilov.net/technical/programming/parametrizirani-reporti-v-birt</link>
		<comments>http://blog.adilov.net/technical/programming/parametrizirani-reporti-v-birt#comments</comments>
		<pubDate>Fri, 03 Dec 2010 12:04:29 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[birt]]></category>
		<category><![CDATA[parameters]]></category>
		<category><![CDATA[report]]></category>
		<category><![CDATA[rptdesign]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=2221</guid>
		<description><![CDATA[От известно време ми се наложи пак да се захвана с BIRT, но този път идеята беше средата, която ни дава Eclipse, да се използва единствено и само за създаването на репорт дефиницията (.rptdesign), но не и за изпълнението на самите репорти. Така полученото чудо на техниката на стойност 0лв, 50MB за engine и 20MB [...]]]></description>
			<content:encoded><![CDATA[<p>От известно време ми се наложи <strong>пак</strong> да се захвана с BIRT, но този път идеята беше средата, която ни дава Eclipse, да се използва единствено и само за създаването на репорт дефиницията (.rptdesign), но не и за изпълнението на самите репорти.<span id="more-2221"></span></p>
<p>Така полученото чудо на техниката на стойност 0лв, 50MB за engine и 20MB за клиентски библиотеки, трябваше да бъде интегрирано в система, чрез която да се подават параметри на BIRT и съответно да се визуализира готовия репорт + функционалност за download на репорта под формата на .xls файлче. За мой голям ужас, документация как се използва BIRT имаше доста и то точно за това което не ми трябва &#8211; BIRT в Eclipse. След известно ровене успях да намеря как да прехвърля параметри, дошли от някъде си към BIRT engine-а. Ето и парчето код, като ще започна с инициализация и стартиране на engine-а:</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 />17<br />18<br />19<br />20<br />21<br />22<br />23<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">EngineConfig config <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> EngineConfig<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
config.<span style="color: #006633;">setEngineHome</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;C:<span style="color: #000099; font-weight: bold;">\\</span>PROJECTS<span style="color: #000099; font-weight: bold;">\\</span>BirtReportEngine&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
config.<span style="color: #006633;">setLogConfig</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">null</span>, Level.<span style="color: #006633;">WARNING</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
Platform.<span style="color: #006633;">startup</span><span style="color: #009900;">&#40;</span>config<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
IReportEngineFactory factory <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>IReportEngineFactory<span style="color: #009900;">&#41;</span> Platform.<span style="color: #006633;">createFactoryObject</span><span style="color: #009900;">&#40;</span>IReportEngineFactory.<span style="color: #006633;">EXTENSION_REPORT_ENGINE_FACTORY</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
IReportEngine engine <span style="color: #339933;">=</span> factory.<span style="color: #006633;">createReportEngine</span><span style="color: #009900;">&#40;</span>config<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
IReportRunnable report <span style="color: #339933;">=</span> engine.<span style="color: #006633;">openReportDesign</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;C:<span style="color: #000099; font-weight: bold;">\\</span>Storage<span style="color: #000099; font-weight: bold;">\\</span>birt<span style="color: #000099; font-weight: bold;">\\</span>erep.rptdesign&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
IRunAndRenderTask task <span style="color: #339933;">=</span> engine.<span style="color: #006633;">createRunAndRenderTask</span><span style="color: #009900;">&#40;</span>report<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #666666; font-style: italic;">// Do the params trick</span><br />
<span style="color: #003399;">SimpleDateFormat</span> sdf <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><span style="color: #0000ff;">&quot;dd.MM.yyyy&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
task.<span style="color: #006633;">getAppContext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">put</span><span style="color: #009900;">&#40;</span>EngineConstants.<span style="color: #006633;">APPCONTEXT_CLASSLOADER_KEY</span>, HTMLGen.<span style="color: #000000; font-weight: bold;">class</span>.<span style="color: #006633;">getClassLoader</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
task.<span style="color: #006633;">setParameterValue</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;start_date&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> java.<span style="color: #006633;">sql</span>.<span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span>sdf.<span style="color: #006633;">parse</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;12.05.2010&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
task.<span style="color: #006633;">setParameterValue</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;end_date&quot;</span>, <span style="color: #000000; font-weight: bold;">new</span> java.<span style="color: #006633;">sql</span>.<span style="color: #003399;">Date</span><span style="color: #009900;">&#40;</span>sdf.<span style="color: #006633;">parse</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;13.05.2010&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
task.<span style="color: #006633;">validateParameters</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
HTMLRenderOption options <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HTMLRenderOption<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
options.<span style="color: #006633;">setOutputFileName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;C:<span style="color: #000099; font-weight: bold;">\\</span>Temp<span style="color: #000099; font-weight: bold;">\\</span>birt<span style="color: #000099; font-weight: bold;">\\</span>report.html&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
options.<span style="color: #006633;">setOutputFormat</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;html&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
task.<span style="color: #006633;">setRenderOption</span><span style="color: #009900;">&#40;</span>options<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
task.<span style="color: #006633;">run</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
task.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
engine.<span style="color: #006633;">destroy</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
Platform.<span style="color: #006633;">shutdown</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Когато горният код не се използва за тестови цели се надявам да се загради с try/catch и съответно destroy и shutdown-а да се викат във finally-то.<br />
Преди да приключим с горния код искам да подчертая типа на параметрите, които се подават особено когато трябва да са дати. Параметърът, който отива към task-а не е от тип java.util.Date(), а java.sql.Date(), имайте го предвид.</p>
<p>Всичко засега върви добре, таскът е изпълнен, но след 2 дена на някой му хрумва, че различните репорти ще са с различен брой параметри, различни типове параметри и иска това да се визуализира в онзи прекрасен application, за който разработвахте и горното парче код. Добре, но как да разберем какви са параметрите (какъв тип), колко са и на какви имена отговарят? Ето и решението, смятам, че всеки би могъл да се ориентира:</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 /></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: #666666; font-style: italic;">// Same as the above code - create config, start the engine, etc</span><br />
IReportRunnable report <span style="color: #339933;">=</span> engine.<span style="color: #006633;">openReportDesign</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;C:<span style="color: #000099; font-weight: bold;">\\</span>Storage<span style="color: #000099; font-weight: bold;">\\</span>birt<span style="color: #000099; font-weight: bold;">\\</span>erep.rptdesign&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
IGetParameterDefinitionTask paramTask <span style="color: #339933;">=</span> engine.<span style="color: #006633;">createGetParameterDefinitionTask</span><span style="color: #009900;">&#40;</span>report<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
Collection<span style="color: #339933;">&lt;</span>ScalarParameterDefn<span style="color: #339933;">&gt;</span> params <span style="color: #339933;">=</span> paramTask.<span style="color: #006633;">getParameterDefns</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">false</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>ScalarParameterDefn param <span style="color: #339933;">:</span> params<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&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><span style="color: #0000ff;">&quot;Param name: &quot;</span> <span style="color: #339933;">+</span> param.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;; Param type: &quot;</span> <span style="color: #339933;">+</span> param.<span style="color: #006633;">getDataType</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/technical/programming/parametrizirani-reporti-v-birt/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Screen captures using Java</title>
		<link>http://blog.adilov.net/technical/how-to/screen-captures-using-java</link>
		<comments>http://blog.adilov.net/technical/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>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/technical/how-to/screen-captures-using-java/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip of the day</title>
		<link>http://blog.adilov.net/everything-else/internet/tip-of-the-day</link>
		<comments>http://blog.adilov.net/everything-else/internet/tip-of-the-day#comments</comments>
		<pubDate>Thu, 26 Nov 2009 23:50:30 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Около мен]]></category>
		<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[Смях и зрелище]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[tip of the day]]></category>
		<category><![CDATA[неграмотен]]></category>
		<category><![CDATA[сайт]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=1315</guid>
		<description><![CDATA[Разглеждах bgdev.org и случайно попаднах на български сайт с информация и описания на функции от C++. Хареса ми идеята за полето &#8220;Съвет на деня&#8221; и се зачетох в него. Ето на какво попаднах: Колко грешки виждате общо във всички редове? :)]]></description>
			<content:encoded><![CDATA[<p>Разглеждах <a href="http://forums.bgdev.org">bgdev.org</a> и случайно попаднах на <a href="http://cpp-examples.com/">български сайт</a> с информация и описания на функции от C++. Хареса ми идеята за полето &#8220;Съвет на деня&#8221; и се зачетох в него. Ето на какво попаднах:
<p style="text-align: center;"><a href="http://blog.adilov.net/wp-content/uploads/2009/11/tip.png" rel="lightbox[1315]" title="tip"><img class="size-full wp-image-1316 aligncenter" title="tip" src="http://blog.adilov.net/wp-content/uploads/2009/11/tip.png" alt="tip" width="254" height="118" /></a></p>
<p>Колко грешки виждате общо във всички редове? :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/everything-else/internet/tip-of-the-day/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eclipse: escape when pasting</title>
		<link>http://blog.adilov.net/technical/how-to/eclipse-escape-when-pasting</link>
		<comments>http://blog.adilov.net/technical/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>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/technical/how-to/eclipse-escape-when-pasting/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse Galileo &#8211; първи впечатления</title>
		<link>http://blog.adilov.net/technical/programming/eclipse-galileo-parvi-vpetchatleniya</link>
		<comments>http://blog.adilov.net/technical/programming/eclipse-galileo-parvi-vpetchatleniya#comments</comments>
		<pubDate>Thu, 25 Jun 2009 00:47:39 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[eclipse galileo]]></category>
		<category><![CDATA[galileo]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[pamet]]></category>
		<category><![CDATA[x64]]></category>
		<category><![CDATA[впечатления]]></category>
		<category><![CDATA[еeclipse]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=824</guid>
		<description><![CDATA[Да &#8211; вече е release-ната stable версия. Няма да се задълбавам (и не мога, при мен е от около половин час) &#8211; това ще са най-началните впечатления от Galileo. Най-много ме зарадва, че Galileo запали на 64bit-овата Java, за разлика от Ganymede. Тествах и с 2 версии &#8211; 6.0_12 i586 и 6.0_14 x64. За разлика [...]]]></description>
			<content:encoded><![CDATA[<p>Да &#8211; вече е release-ната stable версия. Няма да се задълбавам (и не мога, при мен е от около половин час) &#8211; това ще са най-началните впечатления от Galileo.</p>
<p>Най-много ме зарадва, че Galileo запали на 64bit-овата Java, за разлика от <a href="/how-to/eclipse-ganymede-pod-windows-vista-x64">Ganymede</a>. Тествах и с 2 версии &#8211; 6.0_12 i586 и 6.0_14 x64. За разлика от повечето приложения, за мен тук видима разлика <strong>имаше</strong>. Като за теста измъкнах един workspace с повечко проекти в него &#8211; имаше и малки, имаше и големи &#8211; отворих всичките. Разликата във времената за стартиране и пълно зареждане беше видима с просто око.</p>
<p>Второто, което ми направи впечатление беше значително повишените стандартни -Xms и -Xmx аргументи за виртуалната машина, както и PermSize-овете на launcher-ите.</p>
<p>И последното до този момент &#8211; install new software прозорецът &#8211; Пак имаме имена на линковете, както в по-предните версии и интерфейсът е по-разчупен. Харесва ми!</p>
<p>Ще видим как ще се държи и занапред :)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/technical/programming/eclipse-galileo-parvi-vpetchatleniya/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Separate package loading in Drools</title>
		<link>http://blog.adilov.net/technical/how-to/separate-package-loading-in-drools</link>
		<comments>http://blog.adilov.net/technical/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>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/technical/how-to/separate-package-loading-in-drools/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse: to upper and lower case shortcuts</title>
		<link>http://blog.adilov.net/technical/programming/eclipse-to-upper-and-lower-case-shortcuts</link>
		<comments>http://blog.adilov.net/technical/programming/eclipse-to-upper-and-lower-case-shortcuts#comments</comments>
		<pubDate>Sun, 19 Apr 2009 08:02:11 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[shortcut]]></category>
		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=644</guid>
		<description><![CDATA[Трябваше да редактирам SQL заявки и държах да са в прилична форма &#8211; големи, малки букви, сещате се. След втория criterion ми втръсна и потърсих за shortcut-и. Страхотно е, защото ги има, не се правят допълнително: To upper case: Ctrl + Shift + X To lower case: Ctrl + Shift + Y]]></description>
			<content:encoded><![CDATA[<p>Трябваше да редактирам SQL заявки и държах да са в прилична форма &#8211; големи, малки букви, сещате се. След втория criterion ми втръсна и потърсих за shortcut-и. Страхотно е, защото ги има, не се правят допълнително:</p>
<ul>
<li>To <strong>upper case</strong>: Ctrl + Shift + <strong>X</strong></li>
<li>To <strong>lower case</strong>: Ctrl + Shift + <strong>Y</strong></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/technical/programming/eclipse-to-upper-and-lower-case-shortcuts/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Struts2 annotations: redirect action</title>
		<link>http://blog.adilov.net/technical/programming/struts2-annotations-redirect-action</link>
		<comments>http://blog.adilov.net/technical/programming/struts2-annotations-redirect-action#comments</comments>
		<pubDate>Sun, 29 Mar 2009 13:58:03 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[action]]></category>
		<category><![CDATA[annotation]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[mapping]]></category>
		<category><![CDATA[redirect]]></category>
		<category><![CDATA[result]]></category>
		<category><![CDATA[struts]]></category>
		<category><![CDATA[struts 2]]></category>
		<category><![CDATA[webwork]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[анотация]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=583</guid>
		<description><![CDATA[Доста време избирах най-подходящия framework за един от проектите и накрая се спрях на Struts 2. Наследник на Struts 1 и WebWork 2, достатъчно гъвкав за целите, достатъчно customizable, лесен за употреба и не много тежък. Преди време, познатият WebWork работеше с xml action mapping-и и естествено Strut2 също го позволява. Интересното в Struts2 са [...]]]></description>
			<content:encoded><![CDATA[<p>Доста време избирах най-подходящия framework за един от проектите и накрая се спрях на Struts 2. Наследник на Struts 1 и WebWork 2, достатъчно гъвкав за целите, достатъчно customizable, лесен за употреба и не много тежък.<span id="more-583"></span></p>
<p>Преди време, познатият WebWork работеше с xml action mapping-и и естествено Strut2 също го позволява. Интересното в Struts2 са анотациите. С тях можем да избегнем писането на xml мапинги и напрактика всичко вече е в java class файла. Да, определено анотациите не са чак толкова гъвкави на пръв поглед, а и явно се ползват от скоро от масовия потребител, защото намерените резултати в търсенето mappings vs. annotations са доста големи. Например Пренасочването на action към друг action. С анотации би изглеждало страхотно, но как се прави&#8230;</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 /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">@Result<span style="color: #009900;">&#40;</span>name <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;success&quot;</span>, value <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;indexShow&quot;</span>, type<span style="color: #339933;">=</span>ServletActionRedirectResult.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span></div></td></tr></tbody></table></div>
<p>Един ред, хора! Красота. :)</p>
<p>В случая indexShow е името на action-а, към който искаме да насочим текущия action. Забеязва се, че няма extension. Това е страхотно, защото позволява този код да работи без да се променя когато action extension mapping-ът се промени. Помните ли разширенията на action-ите в Struts 1 и WebWork &#8211; *.do. В WebWork 2 и Struts 2 вече са *.action. Честно казано в текущия проект пак съм ги мапнал към *.do &#8211; някак си&#8230; По-добре ми изглежда.</p>
<p>Отклоних се, връщам се по темата. Action-ът indexShow (IndexShow.java; indexShow.do) се намира в главния action packet, а този redirect result се намира в друг пакет. Яко, нали :) Не е нужно да се описва мястото на action-а! Важи и обратното &#8211; дори и action-ът да се намира някъде навътре в action дървото, то няма смисъл да се описва целия път до него.</p>
<p>Ето малко повече за @Result анотацията: <a href="http://struts.apache.org/2.0.9/docs/result-annotation.html">struts docs</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/technical/programming/struts2-annotations-redirect-action/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeMarker редактор за Eclipse</title>
		<link>http://blog.adilov.net/everything-else/internet/freemarker-redaktor-za-eclipse</link>
		<comments>http://blog.adilov.net/everything-else/internet/freemarker-redaktor-za-eclipse#comments</comments>
		<pubDate>Sun, 29 Mar 2009 09:54:19 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[freemarker]]></category>
		<category><![CDATA[highlight]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=580</guid>
		<description><![CDATA[Писна ми да чета plain text и да се обърквам какво чета в момента, какво съм прочел, какво следва. Хората са го направили: FreeMarker Eclipse редактор. Засега highlight-ът работи.]]></description>
			<content:encoded><![CDATA[<p>Писна ми да чета plain text и да се обърквам какво чета в момента, какво съм прочел, какво следва. Хората са го направили: <a href="http://freemarker.sourceforge.net/eclipse.html">FreeMarker Eclipse редактор</a>. Засега highlight-ът работи.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/everything-else/internet/freemarker-redaktor-za-eclipse/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse и стандартите табулации</title>
		<link>http://blog.adilov.net/technical/programming/eclipse-i-standartite-tabulatsii</link>
		<comments>http://blog.adilov.net/technical/programming/eclipse-i-standartite-tabulatsii#comments</comments>
		<pubDate>Sat, 07 Feb 2009 17:51:23 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[space]]></category>
		<category><![CDATA[tab]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[редактор]]></category>
		<category><![CDATA[табулация]]></category>
		<category><![CDATA[таг]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=371</guid>
		<description><![CDATA[Мда, by default Eclipse слага табове, вместо space-ове (обикновено 4). Като цяло е отвратително, защото табовете не са еднакви навсякъде. Какво имам предвид &#8211; да вземем за пример един конфугурационен xml, копиран от файл с tab-ове, вместо space-ове. Копирам го и го цвъквам в конзола с отворен файл &#8211; най-обикновен copy/paste. Ами, съдържанието леко се [...]]]></description>
			<content:encoded><![CDATA[<p>Мда, by default Eclipse слага табове, вместо space-ове (обикновено 4). Като цяло е отвратително, защото табовете не са еднакви навсякъде.</p>
<p>Какво имам предвид &#8211; да вземем за пример един конфугурационен xml, копиран от файл с tab-ове, вместо space-ове. Копирам  го и го цвъквам в конзола с отворен файл &#8211; най-обикновен copy/paste. Ами, съдържанието леко се помазва ;)<span id="more-371"></span></p>
<p>Пример 2: Пак xml, взет от някаъв framework или сървър. Тръгвам да пиша допълнителни тагове вътре и искам да изглежда като хората &#8211; трябва да блъскам на ръка по 4/8/12 space-а, вместо 1/2/3 tab-а&#8230;</p>
<p>Ето и как може да се оправи това в Eclipse (цялото действие се развива в Window -&gt; Preferences):</p>
<ol>
<li>За <strong>текстови редактори</strong>: General -&gt; Editors -&gt; Text Editors -&gt; Insert spaces for tabs</li>
<li>За <strong>Java</strong>: Java -&gt; Code Style -&gt; Formatter -&gt; Edit (button) -&gt; General settings (group box) -&gt; Tab policy (drop-down) на spaces only.</li>
<li>За <strong>Perl /Epic plugin/</strong>: Perl EPIC -&gt; Editor -&gt; Appearance (tab) -&gt; Display tab width = 4; чавка на Use spaces instead of tabs</li>
<li>За <strong>XML</strong>: XML -&gt; XML Files -&gt; Editor -&gt; Indent Using Spaces (4)</li>
<li>За <strong>JavaScript</strong>: JavaScript -&gt; Formatter -&gt; &#8230; същото като за Java</li>
<li>За <strong>CSS</strong>: Web -&gt; CSS Files -&gt; Editor -&gt; Indent using spaces (4)</li>
<li>За <strong>HTML</strong>:  Web -&gt; HTML Files -&gt; Editor -&gt; Indent using spaces (4)</li>
</ol>
<p>За всеки друг плъгин с редактор &#8211; съответно в неговото меню.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/technical/programming/eclipse-i-standartite-tabulatsii/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JBoss 5.0 под Eclipse</title>
		<link>http://blog.adilov.net/technical/programming/jboss-50-pod-eclipse</link>
		<comments>http://blog.adilov.net/technical/programming/jboss-50-pod-eclipse#comments</comments>
		<pubDate>Thu, 01 Jan 2009 15:36:09 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[пътища]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=309</guid>
		<description><![CDATA[В новата версия на JBoss (5.0) бяха променени някои от пътищата, където се намират стандартните библиотеки. По тази причина добавянето на JBoss 5.0 в Eclipse беше невъзможно. В bug-tracking системата на Eclipse се появи един доста елементарен workaround.]]></description>
			<content:encoded><![CDATA[<p>В новата версия на JBoss (5.0) бяха променени някои от пътищата, където се намират стандартните библиотеки. По тази причина добавянето на JBoss 5.0 в Eclipse беше невъзможно. В bug-tracking системата на Eclipse се появи един доста елементарен <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=257823#c4">workaround</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/technical/programming/jboss-50-pod-eclipse/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASCII spinner в HTML с JavaScript</title>
		<link>http://blog.adilov.net/technical/how-to/ascii-spinner-v-html-s-javascript</link>
		<comments>http://blog.adilov.net/technical/how-to/ascii-spinner-v-html-s-javascript#comments</comments>
		<pubDate>Wed, 31 Dec 2008 13:23:01 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Интернет]]></category>
		<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[ascii]]></category>
		<category><![CDATA[ctorrent]]></category>
		<category><![CDATA[gif]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[spinner]]></category>
		<category><![CDATA[прогрес]]></category>
		<category><![CDATA[страница]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=292</guid>
		<description><![CDATA[Харесвам, когато има някакво въртящо се gif-че, което симулира прогрес при някакъв процес. Ето защо направих пренасочващата главна страница да се държи по подобен начин. Вложената доза шега е&#8230; Огромна и е породена от НАЙ-НАЙ-прекрасния торент клиент за мен &#8211; ctorrent. Няма значение, отплеснах се&#8230; Като цяло не е нищо кой-знае какво, просто първата идея [...]]]></description>
			<content:encoded><![CDATA[<p>Харесвам, когато има някакво въртящо се gif-че, което симулира прогрес при някакъв процес. Ето защо направих пренасочващата главна <a href="http://adilov.net">страница</a> да се държи по подобен начин. Вложената доза шега е&#8230; Огромна и е породена от НАЙ-НАЙ-прекрасния торент клиент за мен &#8211; <a href="http://ctorrent.sourceforge.net/">ctorrent</a>. Няма значение, отплеснах се&#8230;</p>
<p>Като цяло не е нищо кой-знае какво, просто първата идея за имплементация, за която се сетих. Какво представлява: масив с 4 елемента &#8211; &#8220;\&#8221;, &#8220;|&#8221;, &#8220;/&#8221; и &#8220;-&#8221;, които непрекъснато се показват един след друг през определено време. <strong>Спинър-а не е cвързан с извършения прогрес!</strong> Трябва ни html страница и малко JavaScript. Ето JS-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 />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<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; <span style="color: #003366; font-weight: bold;">var</span> spinnerElements <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Array<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;<span style="color: #000099; font-weight: bold;">\\</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;|&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;/&quot;</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">&quot;-&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #003366; font-weight: bold;">var</span> spinnerIntervalId<span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #003366; font-weight: bold;">var</span> prevIndex <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; <span style="color: #003366; font-weight: bold;">function</span> getById<span style="color: #009900;">&#40;</span>elementId<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>elementId<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">all</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> document.<span style="color: #660066;">all</span><span style="color: #009900;">&#91;</span>elementId<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">layers</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> document.<span style="color: #660066;">layers</span><span style="color: #009900;">&#91;</span>elementId<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; <span style="color: #003366; font-weight: bold;">function</span> setSpinnerValue<span style="color: #009900;">&#40;</span>value<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; getById<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;spinner&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> value<span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; <span style="color: #003366; font-weight: bold;">function</span> getNextValue<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>prevIndex <span style="color: #339933;">&gt;=</span> spinnerElements.<span style="color: #660066;">length</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; prevIndex <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> value <span style="color: #339933;">=</span> spinnerElements<span style="color: #009900;">&#91;</span>prevIndex<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; prevIndex<span style="color: #339933;">++;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> value<span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; <span style="color: #003366; font-weight: bold;">function</span> startSpinner<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; spinnerIntervalId <span style="color: #339933;">=</span> setInterval<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;setSpinnerValue(getNextValue());&quot;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">250</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #009900;">&#125;</span><br />
<br />
&nbsp; <span style="color: #003366; font-weight: bold;">function</span> stopSpinner<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>spinnerIntervalId <span style="color: #339933;">!=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; clearInterval<span style="color: #009900;">&#40;</span>spinnerIntervalId<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; spinnerIntervalId <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&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>Малко CSS:</p>
<div class="codecolorer-container css 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 /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;style type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span><span style="color: #00AA00;">&gt;</span><br />
&nbsp; span<span style="color: #cc00cc;">#spinner</span> <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">font-size</span><span style="color: #00AA00;">:</span>&nbsp; &nbsp; <span style="color: #933;">16pt</span><span style="color: #00AA00;">;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">font-weight</span><span style="color: #00AA00;">:</span>&nbsp; <span style="color: #993333;">bold</span><span style="color: #00AA00;">;</span><br />
&nbsp; <span style="color: #00AA00;">&#125;</span><br />
<br />
&nbsp; a <span style="color: #00AA00;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span>&nbsp; &nbsp; &nbsp; <span style="color: #cc00cc;">#0000EE</span><span style="color: #00AA00;">;</span><br />
&nbsp; <span style="color: #00AA00;">&#125;</span><br />
&lt;/style<span style="color: #00AA00;">&gt;</span></div></td></tr></tbody></table></div>
<p>И няколкото реда HTML:</p>
<div class="codecolorer-container html4strict 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="html4strict codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #00bbdd;">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot; &quot;http://www.w3.org/TR/html4/loose.dtd&quot;&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">meta</span> <span style="color: #000066;">http-equiv</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Content-Type&quot;</span> <span style="color: #000066;">content</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/html; charset=UTF-8&quot;</span><span style="color: #66cc66;">/</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>Spinner<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#&quot;</span> <span style="color: #000066;">onClick</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;startSpinner();&quot;</span>&gt;</span>start<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;#&quot;</span> <span style="color: #000066;">onClick</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stopSpinner();&quot;</span>&gt;</span>stop<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span>&gt;</span> [ <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;spinner&quot;</span>&gt;</span>-<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span> ]<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span><br />
&nbsp; <span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span><br />
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></div></td></tr></tbody></table></div>
<p>Целият файл под формата на демо може да се види <a href="/wp-content/uploads/2008/12/spinner.html">тук</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/technical/how-to/ascii-spinner-v-html-s-javascript/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PHP5 и Tomcat6 под Windows</title>
		<link>http://blog.adilov.net/technical/how-to/php-5-on-tomcat-6-under-windows</link>
		<comments>http://blog.adilov.net/technical/how-to/php-5-on-tomcat-6-under-windows#comments</comments>
		<pubDate>Sun, 23 Nov 2008 09:52:58 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[pecl]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[пhp]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=157</guid>
		<description><![CDATA[Необходими ресурси: Tomcat (6.0.18) &#8211; http://tomcat.apache.org/download-60.cgi PHP (5.2.6) &#8211; http://www.php.net/downloads.php PECL (5.2.5, защото в 5.2.6 няма php5servlet.dll) &#8211; http://bg.php.net/distributions/pecl-5.2.5-Win32.zip Java (тествано с 1.5.0_16 и 1.6.0_17) Ще използвам C:\DEVELOP за директория, в която ще се намират всичките необходими компоненти. Там разархивираме Tomcat-а (C:\DEVELOP\apache-tomcat-6.0.18), както и PHP-архива (C:\DEVELOP\php-5.2.6-Win32). В системните променливи трябва да имаме няколко допълнителни &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Необходими ресурси:</p>
<ul>
<li>Tomcat (<span style="font-family: arial,helvetica,sanserif; color: #000000;">6.0.18</span>) &#8211; <a href="http://tomcat.apache.org/download-60.cgi" target="_blank">http://tomcat.apache.org/download-60.cgi</a></li>
<li>PHP (5.2.6) &#8211; <a href="http://www.php.net/downloads.php" target="_blank">http://www.php.net/downloads.php</a></li>
<li>PECL (5.2.5, защото в 5.2.6 няма php5servlet.dll) &#8211; <a href="http://bg.php.net/distributions/pecl-5.2.5-Win32.zip" target="_blank">http://bg.php.net/distributions/pecl-5.2.5-Win32.zip</a></li>
<li>Java (тествано с 1.5.0_16 и 1.6.0_17)</li>
</ul>
<p>Ще използвам C:\DEVELOP за директория, в която ще се намират всичките необходими компоненти. Там разархивираме Tomcat-а (C:\DEVELOP\apache-tomcat-6.0.18), както и PHP-архива (C:\DEVELOP\php-5.2.6-Win32). В системните променливи трябва да имаме няколко допълнителни &#8211; JAVA_HOME, ако все още не съществува, PHP_HOME и TOMCAT_HOME. Тези променливи трябва да сочат към главните съответни директории. В системния път (%PATH%) добавяме и %PHP_HOME%.</p>
<p>Отваряме %TOMCAT_HOME%\webapps, и създаваме директория test-php, а в нея &#8211; html-example.html (с най-просто съдържание), за да тестваме дали Tomcat работи. Стартираме Tomcat и отваряме <a href="http://localhost:8080/test-php/html-example.html" target="_blank">http://localhost:8080/test-php/html-example.html</a>. Ще изпреварим малко събитията и ще поготвим няколко други директории в test-php: WEB-INF, WEB-INF/lib. На нивото на html-example.html създаваме още една примерна страница, но този път за тестване на php: php-example.php със съдържание &lt;?php phpinfo(); ?&gt;</p>
<p>Отваряме %PHP_HOME%, копираме php.ini-dist в име php.ini и го отваряме за редакция. Разкоментираме реда с ;extension=php_java.dll, а ако той не съществува, добавяме само extension=php_java.dll (редовете, започващи с ; са коментари). От PECL-архива разархивираме php5servlet.dll и php_java.dll в %PHP_HOME%. Също от този архив взимаме phpsrvlt.jar и го оставяме в test-php/WEB-INF/lib. Отваряме jar-а (с jar или най-обикновен zip де/архиватор) и правим 2 промени в net/php/reflect.properties и net/php/servlet.properties: и в двата файла променяме реда library=php5srvlt на library=php5servlet (показват името на dll-файла, който ще се търси). Записваме ги и ги вкарваме обратно в .jar-архива (отново с jar или zip де/архиватор).</p>
<p>Отново се сръщаме в test-php/WEB-INF и в нея създаваме web.xml файл. Ето и неговото съдържание</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 />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br /></div></td><td><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;web-app<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;display-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>test-php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/display-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;welcome-file-list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;welcome-file<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>index.html<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/welcome-file<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;welcome-file<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>index.htm<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/welcome-file<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;welcome-file<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>index.jsp<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/welcome-file<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;welcome-file<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>index.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/welcome-file<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/welcome-file-list<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>net.php.servlet<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>php-formatter<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>net.php.formatter<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-class<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>*.php<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>php-formatter<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>*.phps<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url-pattern<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/servlet-mapping<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/web-app<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></td></tr></tbody></table></div>
<p>Стартираме Tomcat, отваряме <a href="http://localhost:8080/test-php/html-example.html" target="_blank">http://localhost:8080/test-php/php-example.php</a> и при успешно изпълнение на горните стъпки трябва да видим PHP Info страницата.</p>
<p><span style="color: #ff0000;">ВАЖНО:</span> тези .dll файлове с x64 архитектури на Windows не са съвместими!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/technical/how-to/php-5-on-tomcat-6-under-windows/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse DemoCamp @ Sofia</title>
		<link>http://blog.adilov.net/personal/around-me/eclipse-democamp-sofia</link>
		<comments>http://blog.adilov.net/personal/around-me/eclipse-democamp-sofia#comments</comments>
		<pubDate>Mon, 03 Nov 2008 21:34:06 +0000</pubDate>
		<dc:creator>Анатолий</dc:creator>
				<category><![CDATA[Около мен]]></category>
		<category><![CDATA[Програмиране]]></category>
		<category><![CDATA[Софтуер]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[демо]]></category>
		<category><![CDATA[демокамп]]></category>
		<category><![CDATA[софия]]></category>

		<guid isPermaLink="false">http://blog.adilov.net/?p=139</guid>
		<description><![CDATA[За трети пореден път ще се проведе Еклипс ДемоКамп в София. На страничката пише мястото и часа. Ето линкче.]]></description>
			<content:encoded><![CDATA[<p>За трети пореден път ще се проведе Еклипс ДемоКамп в София. На страничката пише мястото и часа. Ето <a href="http://wiki.eclipse.org/Eclipse_DemoCamps_November_2008/Sofia">линкче</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.adilov.net/personal/around-me/eclipse-democamp-sofia/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

