<?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>Multunus &#187; Technology</title>
	<atom:link href="http://www.multunus.com/blog/all/the_technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.multunus.com</link>
	<description>Multunus Blog</description>
	<lastBuildDate>Thu, 02 Sep 2010 14:52:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Configuring Hudson CI server behind firewall</title>
		<link>http://www.multunus.com/2010/09/configuring-hudson-ci-server-behind-firewall/</link>
		<comments>http://www.multunus.com/2010/09/configuring-hudson-ci-server-behind-firewall/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 14:44:17 +0000</pubDate>
		<dc:creator>Leena</dc:creator>
				<category><![CDATA[All Posts]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.multunus.com/?p=936</guid>
		<description><![CDATA[When firewall was introduced within our local network, the Hudson server stopped working with the error:
javax.jmdns.impl.tasks.Prober run
WARNING: run() exception
java.io.IOException: Operation not permitted
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:625)
at javax.jmdns.impl.JmDNSImpl.send(JmDNSImpl.java:1200)
at javax.jmdns.impl.tasks.Prober.run(Prober.java:163)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
And when you access hudson in browser, it stays with the message &#8220;Please wait while Hudson is getting ready to work&#8230;.&#8221; forever.
Initially I thought the problem might be [...]]]></description>
			<content:encoded><![CDATA[<p>When firewall was introduced within our local network, the Hudson server stopped working with the error:</p>
<pre>javax.jmdns.impl.tasks.Prober run
WARNING: run() exception
java.io.IOException: Operation not permitted
at java.net.PlainDatagramSocketImpl.send(Native Method)
at java.net.DatagramSocket.send(DatagramSocket.java:625)
at javax.jmdns.impl.JmDNSImpl.send(JmDNSImpl.java:1200)
at javax.jmdns.impl.tasks.Prober.run(Prober.java:163)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)</pre>
<p>And when you access hudson in browser, it stays with the message <strong><em>&#8220;Please wait while Hudson is getting ready to work&#8230;.&#8221;</em></strong><em></em> forever.</p>
<p>Initially I thought the problem might be because the ports which are required by the Hudson server i.e. 8080 and 5353, were not opened in the Firewall. I opened those, but the error remained.</p>
<p>After googling for sometime, I could find similar issues being reported here:</p>
<p><a href="http://issues.hudson-ci.org/browse/HUDSON-7129?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab">http://issues.hudson-ci.org/browse/HUDSON-7129?page=com.atlassian.streams.streams-jira-plugin:activity-stream-issue-tab</a></p>
<p>And the issue got fixed by adding</p>
<pre>-Dhudson.DNSMultiCast.disabled=true</pre>
<p>to the java command as follows:</p>
<pre>java -Dhudson.DNSMultiCast.disabled=true -jar hudson.war --httpPort=8080</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.multunus.com/2010/09/configuring-hudson-ci-server-behind-firewall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Our experience with Comatose &#8211; the MicroCMS</title>
		<link>http://www.multunus.com/2010/02/our-experience-with-comatose-the-microcms/</link>
		<comments>http://www.multunus.com/2010/02/our-experience-with-comatose-the-microcms/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 13:46:44 +0000</pubDate>
		<dc:creator>rema</dc:creator>
				<category><![CDATA[All Posts]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.multunus.com/?p=799</guid>
		<description><![CDATA[In one of our projects which is primarily a web application, the client had asked that we go ahead and make as much of the copy available across the site, editable. This included not just copy in static pages such as &#8220;About Us&#8221;, but also copy in dynamic pages. I mean things like tooltips for [...]]]></description>
			<content:encoded><![CDATA[<p>In one of our projects which is primarily a web application, the client had asked that we go ahead and make as much of the copy available across the site, editable. This included not just copy in static pages such as &#8220;About Us&#8221;, but also copy in dynamic pages. I mean things like tooltips for fields in forms, for example.</p>
<p>We first looked at <a href="http://radiantcms.org/" target="_blank">RadiantCMS</a>, with the intention of building our web application on top of it. But then decided to instead build our web app from scratch and then make parts of it editable using <a href="http://github.com/darthapo/comatose" target="_blank">Comatose</a> [which is a "MicroCMS"]. This way, we have more flexibility to add features to the web app using the Rails API and available plugins, rather than being constrained by RadiantCMS system.</p>
<h4>Things we liked about Comatose:</h4>
<ul>
<li> Its implemented as a Rails plugin &#8211; which makes it a breeze to install</li>
<li> Implementing Single Sign On is also simple. Because it works well with the <a href="http://agilewebdevelopment.com/plugins/restful_authentication" target="_blank"> restful_authentication plugin</a>.</li>
<li> Comatose allows rendering of pages inline from your application view &#8211; just like rendering a partial in a Rails app. To include an &#8220;editable&#8221; tool tip within a form, something as simple as the following is enough:
<ul>
<li class="no-list-style">
<pre class="brush: ruby;">&lt;%= render :comatose=&gt;'about' %&gt;</pre>
</li>
</ul>
</li>
</ul>
<p>There&#8217;s of course a lot more you can do with this plugin. Check it out.</p>
<h4>Now for the bad part <img src='http://www.multunus.com/wp-blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </h4>
<ul>
<li>The main issue is font inconsistency. There are some options for setting the font size, but they don&#8217;t work as expected &#8211; because the CSS styles are inherited from our app.</li>
<li>In production mode, there is a noticeable delay between making changes in the CMS and the updated content showing up on the main site. Not sure why this is the case.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.multunus.com/2010/02/our-experience-with-comatose-the-microcms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convert code signing certificates from &#8220;pfx&#8221; to &#8220;p12&#8243; format</title>
		<link>http://www.multunus.com/2010/02/convert-code-signing-certificates-from-pfx-to-p12-format/</link>
		<comments>http://www.multunus.com/2010/02/convert-code-signing-certificates-from-pfx-to-p12-format/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 05:13:34 +0000</pubDate>
		<dc:creator>Leena</dc:creator>
				<category><![CDATA[All Posts]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.multunus.com/?p=744</guid>
		<description><![CDATA[One of the requirements we had was to sign the applet that we built for UserThoughts. We had purchased Comodo&#8217;s code signing certificate from KSoftware. When you download the certificate from their site, it automatically gets installed in IE. Follow these steps for converting it into format which you can use with the Java Jarsigner.

 Export [...]]]></description>
			<content:encoded><![CDATA[<div><strong>One of the requirements we had was to sign the applet that we built for <a href="http://alpha.userthoughts.com">UserThoughts</a></strong><strong>. We had purchased Comodo&#8217;s <a id="l5m3" title="code signing certificate" href="http://en.wikipedia.org/wiki/Code_signing">code signing certificate</a> from <a id="wp-h" title="KSoftware" href="https://secure.ksoftware.net/code_signing.html?gclid=CN-epdfskZ8CFVBd4wodTC6EIA">KSoftware</a>. When you download the certificate from their site, it automatically gets installed in IE. Follow these steps for converting it into format which you can use with the Java Jarsigner.</strong></div>
<ol>
<li> Export the certificate from IE by following the instructions given here: <a href="http://www.tech-pro.net/export-to-pfx.html">http://www.tech-pro.net/export-to-pfx.html</a></li>
<li> The certificate with Private key will be exported as PFX format in the above step &#8211; but this <strong>cannot</strong> be used by the jarsigner. So you need to convert it into &#8220;p12 format&#8221; which the jarsigner can understand. For that you need to use Mozilla. First import the certificate  saved in step 1 into Mozilla as follows:
<ol>
<li> From the &#8220;Edit&#8221; menu select &#8220;Preferences&#8221; and open the &#8220;Privacy &amp; Security&#8221; category and click on the &#8220;Certificates&#8221; item.</li>
<li> In the &#8220;Manage Certificates&#8221; section, click on the &#8220;Manage Certificates&#8221; button.</li>
<li> In the &#8220;Certificate Manager&#8221; window, the &#8220;Your Certificates&#8221; tab should automatically open. (If not, select it.)</li>
<li> Click the &#8220;Impor&#8221;t button at the bottom of the window.</li>
<li> It prompts you to select an existing file; select your certificate file from the location where you saved it in when you exported it.</li>
<li> It prompts you to provide the &#8220;Master Password&#8221;; enter it, if you have set one.</li>
<li> It prompts you to provide the password used to encrypt the certificate backup; enter it.</li>
<li> It should say &#8220;Successfully restored your certificate(s) and private key(s).&#8221; Click OK.</li>
</ol>
</li>
<li> Then export the certificate as p12 format:
<ol>
<li> From the &#8220;Edit&#8221; menu select &#8220;Preferences&#8221; and open the &#8220;Privacy &amp; Security&#8221; category and click on the &#8220;Certificates&#8221; item</li>
<li> In the &#8220;Manage Certificates&#8221; section, click on the &#8220;Manage Certificates&#8221; button.</li>
<li> In the &#8220;Certificate Manager&#8221; window, the &#8220;Your Certificates&#8221; tab should automatically open. (If not, select it.)</li>
<li> To export your &#8220;DOEGrids&#8221; or &#8220;KCA Personal Certificate&#8221;, click on it to select it, and click the &#8220;Backup&#8221; button at the bottom of the window.</li>
<li> You&#8217;ll be prompted to specify a filename and location for the &#8220;PKCS#12-format&#8221; certificate file (file extension will be &#8220;.p12&#8243; in UNIX/Linux,  &#8221;.pfx&#8221; in Windows).  Provide them and click OK.</li>
<li> A dialog box requesting the Master Password may appear (the password and certificate database). If you have set a Master Password, provide it. If not, you can make one up and provide it (optional). <strong>Remember this password!</strong></li>
<li> You&#8217;ll be prompted to make up and (twice) enter a second password. This one is for restoring this particular backup of this certificate. <strong>Remember this password!</strong></li>
<li> Once the system says it&#8217;s successfully backed up your certificate and private key, click OK.</li>
</ol>
</li>
<li> We also need to know the alias of the &#8220;.p12&#8243; file so run:
<ol>
<pre> keytool -list -storetype pkcs12 -keystore &lt;path to the cert file&gt;</pre>
</ol>
</li>
<li> Then you will see output like this:</li>
</ol>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"> Keystore type: pkcs12 Keystore provider: SunJSSE</span></p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"> Your keystore contains 1 entry</span></p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"> xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx, Apr 26, 2006, keyEntry, </span></p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"> Certificate fingerprint (MD5):hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh:hh</span></p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"> The xxxx-xxx&#8230; number is the alias for the key</span></p>
<p><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; line-height: 18px; font-size: 12px; white-space: pre;"><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;"> 6. Change your ant script as follows to sign the certificate:</span></span></p>
<pre class="brush: xml;">&lt;target name=&quot;signjar&quot; depends=&quot;jar&quot;&gt;
 &lt;signjar jar=&quot;yourJar.jar&quot; storetype=&quot;pkcs12&quot;
   keystore=&quot;yourkey.p12&quot; alias=&quot;Your Alias&quot;
   storepass=&quot;your password&quot;/&gt;
&lt;/target&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.multunus.com/2010/02/convert-code-signing-certificates-from-pfx-to-p12-format/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JQuery Tools: Smooth JS widgets</title>
		<link>http://www.multunus.com/2010/02/faster-modern-web-page-designing-using-jquery-tools/</link>
		<comments>http://www.multunus.com/2010/02/faster-modern-web-page-designing-using-jquery-tools/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 05:50:24 +0000</pubDate>
		<dc:creator>Manoj</dc:creator>
				<category><![CDATA[All Posts]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.multunus.com/?p=733</guid>
		<description><![CDATA[Does your web site design have a lot of widgets like tabs, overlays, scrollable etc., to be implemented? Do you want to design and implement smooth looking sites with out using flash? Do you want to improve the UX on your site?
If your answer is yes for any of these questions then JQuery Tools is [...]]]></description>
			<content:encoded><![CDATA[<p>Does your web site design have a lot of widgets like tabs, overlays, scrollable etc., to be implemented? Do you want to design and implement smooth looking sites with out using flash? Do you want to improve the UX on your site?<br />
If your answer is yes for any of these questions then <a href="http://flowplayer.org/tools/demos/index.html" target="_self">JQuery Tools</a> is probably worth taking a look at.</p>
<p>JQT is a family of JQuery plugins comprising of the most common widgets used in &#8220;modern&#8221; sites.  We&#8217;ve used quite a few of the widgets on our sites in the last 3-4 projects and it  has certainly helped us improve the look and feel of these sites &#8211; with much less effort that what would have been required otherwise.</p>
<p>Installing and using JQT on your site is also super simple.  Download a JS file of ~6kb and include in your web page.  The documentation and demos provided for each widget is excellent &#8211; so you should be on your way to actually getting stuff done very quickly after the download.</p>
<p>Bottom line &#8211; you&#8217;ve got pretty much no excuse, to not check it out <img src='http://www.multunus.com/wp-blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.multunus.com/2010/02/faster-modern-web-page-designing-using-jquery-tools/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Working with DLLs, the Java way</title>
		<link>http://www.multunus.com/2010/01/working-with-dlls-the-java-way/</link>
		<comments>http://www.multunus.com/2010/01/working-with-dlls-the-java-way/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 12:20:51 +0000</pubDate>
		<dc:creator>Jeevan</dc:creator>
				<category><![CDATA[All Posts]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.multunus.com/?p=711</guid>
		<description><![CDATA[We had a very simple requirement, to invoke my DLLs using Java code for couple of reasons:

 We want to reuse application code built for a .NET application
 We want to integrate the DLLs with a Java based sever technology
 Should be simple enough to maintain the code by .NET professionals

There are couple of Java-COM [...]]]></description>
			<content:encoded><![CDATA[<p>We had a very simple requirement, to invoke my DLLs using Java code for couple of reasons:</p>
<ol>
<li> We want to reuse application code built for a .NET application</li>
<li> We want to integrate the DLLs with a Java based sever technology</li>
<li> Should be simple enough to maintain the code by .NET professionals</li>
</ol>
<p>There are couple of Java-COM bridging solutions I came across.</p>
<ul>
<li> <a id="o-ek" title="Java Native Interface (JNI)" href="http://en.wikipedia.org/wiki/Java_Native_Interface">Java Native Interface (JNI)</a></li>
<li> <a id="m-.." title="JACOB" href="http://sourceforge.net/projects/jacob-project/">JACOB</a></li>
<li> <a id="r0rf" title="Scriptom (Groovy - COM Scripting)" href="http://groovy.codehaus.org/COM+Scripting">Scriptom (Groovy &#8211; COM Scripting)</a></li>
<li> <a id="h:uh" title="Java Native Access (JNA)" href="https://jna.dev.java.net/">Java Native Access (JNA)</a></li>
<li> <a id="ck4a" title="JNBridge" href="http://www.jnbridge.com/">JNBridge</a></li>
</ul>
<p>In this post, we&#8217;ll see how Scriptom can be used to access DLLs.</p>
<p>Scriptom is a module in Groovy (A Java VM based scripting language) which wraps the JACOB classes to make it more usable. Scriptom&#8217;s syntax looks like VB.NET code.</p>
<p>Lets jump in to the sample application.</p>
<p>Assume that we have a VB class named TimerState in the TestDLL VB.NET project, exposes the COM, signed and generates the DLLs.</p>
<p>Following is the TimerState VB class. In this class, we have an event <em>UpdateTime</em> which raises an event when to notify updated time.</p>
<pre class="brush: vb;">
 ﻿&lt;Microsoft.VisualBasic.ComClass()&gt; Public Class TimerState

    Public Event UpdateTime(ByVal Jump As Double)

    Public Sub TimerTask(ByVal Duration As Double)
        Dim Start As Double
        Dim Second As Double
        Dim SoFar As Double

        Start = Timer
        SoFar = Start
        Do While Timer &lt; Start + Duration
            If Timer - SoFar &gt;= 0.1 Then
                SoFar = SoFar + 0.1
                RaiseEvent UpdateTime(Timer - Start)
            End If
        Loop
    End Sub
End Class
</pre>
<p>We want to use this logic in the Scriptom code and do something whenever a UpdateTime event is raised. Here are the steps:</p>
<ol>
<li> Register the DLLs (this is required step for the Java Virtual Machine to get meta data about the DLLs)</li>
<li> Download Scriptom</li>
<li> Copy the jacob-*.dll to any system PATH</li>
<li> Have all the JARS from Scriptom jar folder available in the CLASSPATH</li>
</ol>
<p>Following is the sample code for invoking</p>
<pre class="brush: vb;">
import org.codehaus.groovy.scriptom.ActiveXObject // Imports the ActiveX object class which holds the reference to the class in DLL

def timer = new ActiveXObject(&quot;TestDLL.TimerState&quot;) // Looks for the meta data in the registry with &quot;TestDLL.TimerState&quot; name and creates a reference to that class

def time = 1.00

timer.events.UpdateTime = { variants -&gt; // event registration for UpdateTime event in the VB class. Variants holds the data passed from the event. In this case, it is Jump value.
    println &quot;UpdateTime: &quot; + variants[0] // We're just printing the upated time
}

timer.TimerTask(time) // starting the timer task in TimerState class
while(true) { // keeping itself alive to respond when timer events are raised
}
</pre>
<div style="text-align: left;">Please refer <a id="hzki" title="COM Data Types in Scriptom" href="http://groovy.codehaus.org/COM+Data+Types+in+Scriptom">COM Data Types in Scriptom</a> for the .NET data types supported in Scriptom.</div>
<p><strong><span style="font-weight: normal;"><br />
In the next post, we&#8217;ll discuss about JNBridge, a comercial solution.</span></strong></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 694px; width: 1px; height: 1px;">
<p>﻿&lt;Microsoft.VisualBasic.ComClass()&gt; Public Class TimerState</p>
<p>Public Event UpdateTime(ByVal Jump As Double)</p>
<p>Public Sub TimerTask(ByVal Duration As Double)<br />
Dim Start As Double<br />
Dim Second As Double<br />
Dim SoFar As Double</p>
<p>Start = Timer<br />
SoFar = Start<br />
Do While Timer &lt; Start + Duration<br />
If Timer &#8211; SoFar &gt;= 0.1 Then<br />
SoFar = SoFar + 0.1<br />
RaiseEvent UpdateTime(Timer &#8211; Start)<br />
End If<br />
Loop<br />
End Sub<br />
End Class</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.multunus.com/2010/01/working-with-dlls-the-java-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
