<?xml version="1.0" encoding="UTF-8"?>
<!--Generated by Squarespace Site Server v5.11.81 (http://www.squarespace.com/) on Fri, 24 Feb 2012 01:55:15 GMT--><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>Tech Blog</title><link>http://www.gastongonzalez.com/tech-blog/</link><description></description><lastBuildDate>Mon, 06 Feb 2012 17:37:22 +0000</lastBuildDate><copyright></copyright><language>en-US</language><generator>Squarespace Site Server v5.11.81 (http://www.squarespace.com/)</generator><item><title>How should a "perfect" search project be run?</title><category>agile</category><category>enterprise search</category><category>project</category><category>scrum</category><category>search</category><dc:creator>Gaston Gonzalez</dc:creator><pubDate>Mon, 06 Feb 2012 16:50:12 +0000</pubDate><link>http://www.gastongonzalez.com/tech-blog/2012/2/6/how-should-a-perfect-search-project-be-run.html</link><guid isPermaLink="false">1032710:11860219:14900797</guid><description><![CDATA[<p><span style="color: #1f497d;">Mark Owen, an ECM expert blogger from AIIM, adapted one of the discussion threads I was involved in on &nbsp;LinkedIn into a blog post. Check out the post on "<a href="http://www.aiim.org/community/blogs/expert/How-should-a-e2809cPerfecte2809d-Search-project-be-run">How should a 'perfect' search project be run?</a>"</span></p>]]></description><wfw:commentRss>http://www.gastongonzalez.com/tech-blog/rss-comments-entry-14900797.xml</wfw:commentRss></item><item><title>CQ5 WebDAV Support for Windows 7 64-bit</title><category>CQ5</category><category>CQ5</category><category>Recipes</category><category>WebDAV</category><category>Windows 7</category><category>cadaver</category><dc:creator>Gaston Gonzalez</dc:creator><pubDate>Fri, 30 Dec 2011 15:21:55 +0000</pubDate><link>http://www.gastongonzalez.com/tech-blog/2011/12/30/cq5-webdav-support-for-windows-7-64-bit.html</link><guid isPermaLink="false">1032710:11860219:14381045</guid><description><![CDATA[<p>After a long break from working in the content management space, I returned to my CMS roots with a focus on CQ5. As a novice CQ5 developer, I've been chipping away at CQ5 recipes such as: <em>As a developer, I would to like to access the CRX via WebDAV on my Windows 7 workstation</em>. Simple question, right? Wrong. As it turns out Windows 7 64-bit does not support mapping a WebDAV resource easily. Sure, there were claims that applying <a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=15123">KB907306</a> would do the trick.&nbsp;This didn't work. There were instructions on mucking with the registry. Really, this isn't the 90s. No thank you. Oh, wait...there are third-party freeware packages such as <em>BitKinex</em>. Again, no thank you. Lastly, there were some articles around changing the authentication scheme from Basic Authentication to Digest Authentication. Why can't I have native support!&nbsp;</p>
<p>Enough with the rant. I recently had a good experience building a command line WebDAV client under Linux (CentOS) called <em><a href="http://www.webdav.org/cadaver/">cadaver</a></em>. As a command line guy, I already had Cygwin running under Windows 7. Sure enough, Cygwin supports cadaver under <em>All</em>&nbsp;&gt; <em>Web</em>.&nbsp;</p>
<p>For those of you running Windows 7, need WebDAV support and don't mind using the command line, try cadaver out. Once installed, connecting to the CRX is pretty painless.</p>
<ol>
<li>Launch Cygwin</li>
<li>Create a file called ~/.netrc and include the following lines. This will allow you to interact with the CRX without being promoted for a username and password.
<pre>machine localhost
login admin
password admin
</pre>
</li>
<li>Run cadaver.
<pre>$ cadaver http://localhost:4502/crx/repository/crx.default
</pre>
</li>
<li>You should now receive a shell to interact with the CRX. Most of the commands are similar to a command line FTP client (<em>ls</em>, <em>cd</em>, <em>get</em>, etc.). Simply type <em>help</em> for a list of available commands.</li>
</ol>
<p>&nbsp;</p>]]></description><wfw:commentRss>http://www.gastongonzalez.com/tech-blog/rss-comments-entry-14381045.xml</wfw:commentRss></item><item><title>Apache Felix - Example 3 Continued: Testing Service Unregistration</title><category>Felix</category><category>OSGi</category><dc:creator>Gaston Gonzalez</dc:creator><pubDate>Wed, 07 Dec 2011 00:21:54 +0000</pubDate><link>http://www.gastongonzalez.com/tech-blog/2011/12/6/apache-felix-example-3-continued-testing-service-unregistrat.html</link><guid isPermaLink="false">1032710:11860219:14005451</guid><description><![CDATA[<p>&nbsp;</p>
<p><a href="http://felix.apache.org/site/apache-felix-tutorial-example-3.html"><em>Apache Felix Tutorial Example 3</em></a> walks the user through an implementation of a simple dictionary service. At the end of the tutorial, it describes a use case in which the dictionary service is unregistered. Under this scenario, the code in the example should throw a null pointer exception.</p>
<p>&nbsp;I was curious how to force this use case and came up with the following additional steps to experiment with unregistering the service while the client was using it. We just need access to another shell so that we can have the client running in one shell, and stop the service in a second shell.</p>
<ol>
<li>Begin, by downloading the <em>Remote Shell</em> bundle under the subprojects section of the <a href="http://felix.apache.org/site/downloads.cgi">download page</a>.</li>
<li>Install and start the <em>Remote Shell</em> bundle. This will provide remote access to the Felix shell via Telnet.
<pre><strong>start file:/<em>path/to/download</em>/org.apache.felix.shell.remote-1.1.2.jar</strong><br /></pre>
</li>
<li>Open your preferred Telnet application, such as putty, and set the port to <em>6666</em> and the host to <em>localhost</em>.</li>
<li>In your original shell (not the remote) start the example 3 client.
<pre>g! <strong>lb | grep Client</strong><br />START LEVEL 1<br />   ID|State      |Level|Name<br />   12|Resolved   |    1|Dictionary Client (1.0.0)<br />g! <strong>start 12</strong><br />Enter a blank line to exit.<br />Enter a word:<br /><strong>testing</strong><br />No match found!<br /></pre>
</li>
<li>
<p>Find the ID of the English dictionary service and stop it.</p>
<pre>g! <strong>lb | grep English</strong><br /> 10|Resolved  |   1|English dictionary (1.0.0)<br />g!<strong> stop 10</strong><br /></pre>
</li>
<li> Lastly, go back to the shell running the dictionary client and enter a new word. You should now receive a null pointer exception!
<pre>Enter a word:<br /><strong>testing2</strong><br />org.osgi.framework.BundleException: Activator start error in bundle [12].<br />        at org.apache.felix.framework.Felix.activateBundle(Felix.java:2027)<br />        at org.apache.felix.framework.Felix.startBundle(Felix.java:1895)<br />        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:944)<br />        at org.apache.felix.gogo.command.Basic.start(Basic.java:729)<br />        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br />        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br />        at java.lang.reflect.Method.invoke(Unknown Source)<br />        at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:137)<br />        at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)<br />        at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)<br />        at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)<br />        at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)<br />        at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)<br />        at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)<br />        at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)<br />        at org.apache.felix.gogo.shell.Console.run(Console.java:62)<br />        at org.apache.felix.gogo.shell.Shell.console(Shell.java:203)<br />        at org.apache.felix.gogo.shell.Shell.gosh(Shell.java:128)<br />        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br />        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br />        at java.lang.reflect.Method.invoke(Unknown Source)<br />        at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:137)<br />        at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)<br />        at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)<br />        at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)<br />        at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)<br />        at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)<br />        at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)<br />        at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)<br />        at org.apache.felix.gogo.shell.Activator.run(Activator.java:75)<br />        at java.lang.Thread.run(Unknown Source)<br />Caused by: java.lang.NullPointerException<br />        at com.gastongonzalez.felix.tutorial.example3.Activator.start(Unknown Source)<br />        at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:641)<br />        at org.apache.felix.framework.Felix.activateBundle(Felix.java:1977)<br />        ... 32 more<br />java.lang.NullPointerException<br /></pre>
</li>
</ol>]]></description><wfw:commentRss>http://www.gastongonzalez.com/tech-blog/rss-comments-entry-14005451.xml</wfw:commentRss></item><item><title>Apache Felix - Bundle Installation and NoClassDefFoundError</title><category>Felix</category><category>OSGi</category><category>troubleshooting</category><dc:creator>Gaston Gonzalez</dc:creator><pubDate>Thu, 01 Dec 2011 23:21:50 +0000</pubDate><link>http://www.gastongonzalez.com/tech-blog/2011/12/1/apache-felix-bundle-installation-and-noclassdeffounderror.html</link><guid isPermaLink="false">1032710:11860219:13936854</guid><description><![CDATA[<p>&nbsp;</p>
<p>I am on day two of a long journey to master OSGi. As such, I have been working through the OSGi tutorials on the <a href="http://felix.apache.org/site/apache-felix-osgi-tutorial.html">Apache Felix site</a>. As I continue down this path, I thought I would document the issues that I encounter as a novice, hopefully, helping others at my same level.<br /><br />This afternoon, I tried installing a new bundle (<code>felix-tutorial-example5.jar</code>) and received a <code>java.lang.NoClassDefFoundError</code> exception for the <code>ServiceTracker</code> class. As it turns out, I forgot to import the <code>org.osgi.util.tracker</code> package in my manifest. So next time you receive a <code>NoClassDefFoundError</code> exception when installing a bundle, check that you have all of your import packages defined.</p>
<h3>The Solution:</h3>
<pre>Import-Package: org.osgi.framework, <br /> org.osgi.util.tracker,<br /> com.gastongonzalez.felix.tutorial.example2.service<br /></pre>
<h3>The Problem:</h3>
<pre>g! felix:start file:/c:/temp/felix-tutorial-example5.jar<br />org.osgi.framework.BundleException: Activator start error in bundle [28].<br />        at org.apache.felix.framework.Felix.activateBundle(Felix.java:2027)<br />        at org.apache.felix.framework.Felix.startBundle(Felix.java:1895)<br />        at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:944)<br />        at org.apache.felix.gogo.command.Basic.start(Basic.java:729)<br />        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br />        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br />        at java.lang.reflect.Method.invoke(Unknown Source)<br />        at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:137)<br />        at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)<br />        at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)<br />        at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)<br />        at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)<br />        at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)<br />        at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)<br />        at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)<br />        at org.apache.felix.gogo.shell.Console.run(Console.java:62)<br />        at org.apache.felix.gogo.shell.Shell.console(Shell.java:203)<br />        at org.apache.felix.gogo.shell.Shell.gosh(Shell.java:128)<br />        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)<br />        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)<br />        at java.lang.reflect.Method.invoke(Unknown Source)<br />        at org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:137)<br />        at org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:82)<br />        at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:477)<br />        at org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:403)<br />        at org.apache.felix.gogo.runtime.Pipe.run(Pipe.java:108)<br />        at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:183)<br />        at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:120)<br />        at org.apache.felix.gogo.runtime.CommandSessionImpl.execute(CommandSessionImpl.java:89)<br />        at org.apache.felix.gogo.shell.Activator.run(Activator.java:75)<br />        at java.lang.Thread.run(Unknown Source)<br />Caused by: java.lang.NoClassDefFoundError: org/osgi/util/tracker/ServiceTracker<br />        at com.gastongonzalez.felix.tutorial.example5.Activator.start(Unknown Source)<br />        at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:641)<br />        at org.apache.felix.framework.Felix.activateBundle(Felix.java:1977)<br />        ... 32 more<br />Caused by: java.lang.ClassNotFoundException: org.osgi.util.tracker.ServiceTracker not found by[28]<br />        at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1460)<br />        at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringIm<br />pl.java:72)<br />        at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadCla<br />ss(BundleWiringImpl.java:1843)<br />        at java.lang.ClassLoader.loadClass(Unknown Source)<br />        ... 35 more<br />java.lang.NoClassDefFoundError: org/osgi/util/tracker/ServiceTracker<br /></pre>
<p>&nbsp;</p>]]></description><wfw:commentRss>http://www.gastongonzalez.com/tech-blog/rss-comments-entry-13936854.xml</wfw:commentRss></item><item><title>FAST ESP Error: Document summary too short, couldn't unpack</title><category>document summary</category><category>error</category><category>esp</category><category>fast</category><dc:creator>Gaston Gonzalez</dc:creator><pubDate>Sat, 24 Sep 2011 14:50:05 +0000</pubDate><link>http://www.gastongonzalez.com/tech-blog/2011/9/24/fast-esp-error-document-summary-too-short-couldnt-unpack.html</link><guid isPermaLink="false">1032710:11860219:12968646</guid><description><![CDATA[<p>The FAST ESP error, <span style="color: black;"><em>Document summary too short, couldn't unpack</em>, occasionally occurs after performing an index profile update. In the past, my solution to this problem involved executing a manual cold update. While this works every time, it does require that you refeed all of your content. Definitely not the ideal solution when dealing with a production system.</span></p>
<p><span style="color: black;">I discovered a <a href="http://social.technet.microsoft.com/Forums/en-US/fastlegacy/thread/97e90340-7e8c-4137-8284-16be4530b130/">TechNet posting</a> this morning that offers another solution that's not destructive. The following are the steps described in the post:</span></p>
<ol>
<li>Stop the QR Server (<code>nctrl stop qrserver</code>).</li>
<li>Delete the&nbsp;<code>%FASTSEARCH%\var\qrserver\webcluster\15100\cache_cs</code> directory.</li>
<li>Start the QR Server (<code>nctrl start qrserver</code>).</li>
<li>Stop Search (<code>nctrl stop search-1</code>).</li>
<li>Delete the <code>%FASTSEARCH%\var\searchctrl</code> directory.</li>
<li>Start Search (<code>nctrl start search-1</code>)</li>
<li>Repeat the above steps on any systems in the cluster running a QR Server or Search component.</li>
</ol>
<p>A big thanks to Rob Va for the solution!</p>
<p><span style="color: black;"><br /></span></p>]]></description><wfw:commentRss>http://www.gastongonzalez.com/tech-blog/rss-comments-entry-12968646.xml</wfw:commentRss></item><item><title>FAST Search Engineer's Guide: An Alternate Approach to SBC Absolute Position Boosting</title><category>FAST ESP</category><category>White Papers</category><category>boosts</category><category>esp</category><category>fast</category><category>sbc</category><category>white paper</category><dc:creator>Gaston Gonzalez</dc:creator><pubDate>Mon, 05 Sep 2011 23:36:35 +0000</pubDate><link>http://www.gastongonzalez.com/tech-blog/2011/9/5/fast-search-engineers-guide-an-alternate-approach-to-sbc-abs.html</link><guid isPermaLink="false">1032710:11860219:12741406</guid><description><![CDATA[<p>Given the relatively closed nature of FAST ESP, there are a number of areas that are not well documented. This makes our jobs as search engineers difficult when we are required to solve a problem in one of these undocumented, or <em>lightly documented</em> areas.</p>
<p>In March 2011 I wrote a white paper, <a href="http://www.gastongonzalez.com/storage/papers/FAST%20Search%20Engineer%27s%20Guide.Absolute%20Position%20Boosting.White%20Paper.pdf">FAST Search Engineer's Guide: An Alternate Approach to SBC Absolute Position Boosting</a>, that describes a method for applying SBC-style <em>Top 10</em> or <em>Absolute Position</em> boosts without the use of SBC.</p>]]></description><wfw:commentRss>http://www.gastongonzalez.com/tech-blog/rss-comments-entry-12741406.xml</wfw:commentRss></item></channel></rss>
