<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Developer, CodeOgre™, book consumer, cross country/downhill cyclist, trance aficionado, lover of fine wine.




new TWTR.Widget({
  profile: true,
  id: 'twtr-profile-widget',
  loop: true,
  width: 200,
  height: 250,
  theme: {
    shell: {
      background: '#444444',
      color: '#ffffff'
    },
    tweets: {
      background: '#ffffff',
      color: '#444444',
      links: '#1985b5'
    }
  }
}).render().setProfile('mlaccetti').start();

table.lfmWidgetchart_401860724ca4de06735342530925853c td {margin:0 !important;padding:0 !important;border:0 !important;}table.lfmWidgetchart_401860724ca4de06735342530925853c tr.lfmHead a:hover {background:url(http://cdn.last.fm/widgets/images/en/header/chart/recenttracks_regular_grey.png) no-repeat 0 0 !important;}table.lfmWidgetchart_401860724ca4de06735342530925853c tr.lfmEmbed object {float:left;}table.lfmWidgetchart_401860724ca4de06735342530925853c tr.lfmFoot td.lfmConfig a:hover {background:url(http://cdn.last.fm/widgets/images/en/footer/grey.png) no-repeat 0px 0 !important;;}table.lfmWidgetchart_401860724ca4de06735342530925853c tr.lfmFoot td.lfmView a:hover {background:url(http://cdn.last.fm/widgets/images/en/footer/grey.png) no-repeat -85px 0 !important;}table.lfmWidgetchart_401860724ca4de06735342530925853c tr.lfmFoot td.lfmPopup a:hover {background:url(http://cdn.last.fm/widgets/images/en/footer/grey.png) no-repeat -159px 0 !important;}


 















var pkBaseURL = (("https:" == document.location.protocol) ? "https://rando.laccetti.com/admin/piwik/" : "http://rando.laccetti.com/admin/piwik/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));

try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 2);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}

</description><title>laccetti.com - ramblings of a madman</title><generator>Tumblr (3.0; @mlaccetti)</generator><link>http://www.laccetti.com/</link><item><title>DSi XL</title><description>&lt;p&gt;“Many gamers only play their Nintendo DS games at home—in bed, in front of the TV while their parents or spouse watch something they’re not interested in.” - &lt;a href="http://bit.ly/dBuRNf" target="_blank"&gt;http://bit.ly/dBuRNf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I play mine while I’m at the PC waiting for games to load, or while doing something in EVE and there is no action.  Gaming while waiting for games.&lt;/p&gt;</description><link>http://www.laccetti.com/post/420243391</link><guid>http://www.laccetti.com/post/420243391</guid><pubDate>Mon, 01 Mar 2010 13:42:33 -0500</pubDate></item><item><title>Wicket Bug</title><description>&lt;p&gt;I’ll have to file a bug report for this, since it is so interesting, though more investigation is required to see how pervasive it is.&lt;/p&gt;

&lt;p&gt;Generally, when I use Wicket, I don’t use a FeedbackPanel to display error messages to the user. Instead, I use a FormComponent.IVisitor that walks through all the FormComponents for the form that was submitted (via AJAX, natch).  Each component is check to see if it is failed, enabled, and required, and then pulls the error message from the component.&lt;/p&gt;

&lt;p&gt;That message is then fed back to the browser via the AjaxRequestTarget as a call to a JavaScript method that’ll pop up an error, or whatever special sauce I require.  Usually I pass back the ID of the failed element and the message, and then use jQuery to build some sort of error bubble.&lt;/p&gt;

&lt;p&gt;While implementing the above, I ran into an interesting bug - this part gets a bit technical, so I forgive you if you click away.  I have a Wizard that renders a form containing DynamicWizardStep.  The DWS then has a RadioGroup with a DropDownChoice embedded within it.&lt;/p&gt;

&lt;p&gt;Here’s the bug: if I hit the “next” button on my wizard, both (required) components fail.  That’s expected - the unexpected part is that the RadioGroup error message is…  null!  If I move the DropDownChoice outside of the RadioGroup, both work properly again.&lt;/p&gt;

&lt;p&gt;Now, it isn’t great design to nest one within the other (I did fix that part), but the lack of validation message is just weird.  It does fire the validation, just loses the error.&lt;/p&gt;

&lt;p&gt;I wonder if I can make a quickstart for that…&lt;/p&gt;</description><link>http://www.laccetti.com/post/393924749</link><guid>http://www.laccetti.com/post/393924749</guid><pubDate>Tue, 16 Feb 2010 22:09:33 -0500</pubDate></item><item><title>HTML5 - Expanded</title><description>&lt;p&gt;My HTML 5 &lt;a&gt;tweet&lt;/a&gt; needs a bit of expanding - one that 140 characters won’t allow for.&lt;br/&gt;&lt;br/&gt;One of the blogs I follow is Dive into HTML5 as it provides some great insight and explores some of the new features that HTML5 provides. The most recent entry (that I read) was called &lt;a&gt;A Form of Madness&lt;/a&gt;, detailing the new input types that will be brought to the table. As a (terrible) web designer, these fields interest and excite me - it’d be great to have the browser take care of stuff for me.&lt;br/&gt;&lt;br/&gt;However, that is where the problem lies - relying on the browser, especially on the browser supporting the feature. Having it degrade nicely is awesome, but the fact that apparently no browser with a large market share (Firefox or IE) supports any of the HTML5 features (in a production release) means that I just don’t have the energy to bother. As you read the article, you’ll see that there are little boxes showing the different browsers currently available, and their level of support for the HTML5 feature/field - notice that the only ones that support them are Safari 4, Chrome (which version?) or Opera (again, which version?). Combined, let us say that they cover 15% of the market (and I’d say I’m being generous with that) - that means that 85% of the people visiting your website will have a completely different experience. So, as always, the question is: cool technology, or building my site so that the majority all see the same thing.&lt;br/&gt;&lt;br/&gt;Age old conundrum, I know.&lt;br/&gt;&lt;br/&gt;On a side note, would it be wrong to suggest that the people running Chrome/Opera/Safari are the ones ahead of the curve and usually the people you don’t have to worry about? Ah, the joys of stereotypes! I don’t use any of those browsers - I’m still using Firefox 3.5 quite happily, since I’m ever so plugin happy.&lt;/p&gt;</description><link>http://www.laccetti.com/post/313663305</link><guid>http://www.laccetti.com/post/313663305</guid><pubDate>Sat, 02 Jan 2010 19:31:13 -0500</pubDate></item><item><title>µTorrent UI Changes Bad Idea</title><description>&lt;p&gt;The new µTorrent UI just doesn’t do it for me; replacing the ‘play’ start button with that weird up-down icon, the other icons, the menu bar style itself - they just don’t fit well together.  Changing a UI to make it more functional is one thing, but breaking something that was pretty perfect makes no sense to me.&lt;/p&gt;</description><link>http://www.laccetti.com/post/305736996</link><guid>http://www.laccetti.com/post/305736996</guid><pubDate>Tue, 29 Dec 2009 01:43:00 -0500</pubDate></item><item><title>Math Problem</title><description>&lt;p&gt;If Ana leaves point A at 9AM and Micheal leaves point A at 9:50AM, what speed is Ana’s fist moving at when she hits Michael for arriving at point B at the exact same moment?&lt;/p&gt;</description><link>http://www.laccetti.com/post/266355976</link><guid>http://www.laccetti.com/post/266355976</guid><pubDate>Wed, 02 Dec 2009 10:17:37 -0500</pubDate></item><item><title>Dead Trees and eBooks</title><description>&lt;p&gt;Last night, as I wrestled with Monday night insomnia, I was thinking about how I prefer reading a dead tree to trying to scan pixels on a screen.  My thought process usually ends there - I accepted my preference and moved on.  Last night I happened to have a lot of time to kill, so I pondered the root cause - why do I find it difficult to process information from an eBook.&lt;/p&gt;

&lt;p&gt;After a while, it finally clicked!  I have a very specific reading style - I’m not linear in any way.  When I open a book, I’m actually looking at two pages at the same time, taking all of it in.  I don’t so much read each word as take a snapshot of the pages.  I also flip around - when something catches my eye, I’ll stick my finger into the book as a placeholder, and search for more information about whatever I noticed.&lt;/p&gt;

&lt;p&gt;An eBook is a different beast - if I want to be able to read the text, I can only see a paragraph or two on screen at the same time.  When I want to see the full page, I have to zoom out so far that the text might as well be hieroglyphics - certainly doesn’t enable me to see two pages at the same time.&lt;/p&gt;

&lt;p&gt;Based on that, I’ve decided to try to fiddle around with Acrobat and try to re-create my preferred knowledge hoovering style.  I’ll see if I can shrink/widen thing, maybe rotate a monitor or two, maximize across multiple monitors, etc.  Unfortunately, dead tree printing won’t be around forever, and all signs point to eBooks in one form or another.  Time to adapt.&lt;/p&gt;

&lt;p&gt;All of this came about because I snagged a few books about Drools and jBPM - the physical medium had the virtual as a bonus.  While I’m waiting for my books to arrive, I’m trying to glean some knowledge from the digital edition.&lt;/p&gt;</description><link>http://www.laccetti.com/post/255756540</link><guid>http://www.laccetti.com/post/255756540</guid><pubDate>Tue, 24 Nov 2009 11:15:29 -0500</pubDate></item><item><title>Business Etiquette</title><description>&lt;p&gt;You know what - yes, I was printing a big ole’ document. You wanted to do something using the same multifunction device at the same time?  Guess what, you didn’t have to cancel what I was doing!  It can scan AND print at the same time!  I know that it is a pretty crazy scenario, but still.  Next time, just let it go - I promise we can both be happy.&lt;/p&gt;</description><link>http://www.laccetti.com/post/254776392</link><guid>http://www.laccetti.com/post/254776392</guid><pubDate>Mon, 23 Nov 2009 17:17:55 -0500</pubDate></item><item><title>This is Interesting</title><description>&lt;p&gt;Apparently there is another Michael Laccetti in the world - seems he lives in the US and went to UAlbany.  I can still claim to be somewhat unique as Michael is my anglicized name, but still.  The interesting part is that it would appear that he is donates money to UAlbany.&lt;/p&gt;
&lt;p&gt;How do I know this?  Well, this is where the fun comes in - Google is screwing up pretty hard.  You see, I have michael.laccetti -at- gmail.com, and it would seem that my counterpart has michaellaccetti -at- gmail.com.  Google is busy sending me his e-mail.&lt;/p&gt;
&lt;p&gt;I actually thought it was spam, until I realized it was thinking me for a donation, not asking for one.  I looked at the message headers, and yup, it is actually coming from the right place.  That means that Google cannot figure out that an e-mail with a period goes to me, and without goes to him.&lt;/p&gt;
&lt;p&gt;Seems to be &lt;strike&gt;a pretty big problem&lt;/strike&gt; entirely a feature.&lt;/p&gt;
&lt;p&gt;Edit:&lt;br/&gt;As it has been pointed out (some times more politely than others - I don’t quite understand why people miss out on being polite, costs nothing), this isn’t actually Google’s fault.  Their MTA actually does this on purpose.  Yip yay Google.  Just means that whomever donated to UAlbany forgot their e-mail address.&lt;/p&gt;</description><link>http://www.laccetti.com/post/225198201</link><guid>http://www.laccetti.com/post/225198201</guid><pubDate>Tue, 27 Oct 2009 17:21:00 -0400</pubDate></item><item><title>A Computer in Pictures</title><description>&lt;p&gt;&lt;img style="max-width: 800px;" src="http://lian-li.com/v2/tw/product/upload/image/x2000/x2000f003.jpg" height="524" width="350"/&gt;&lt;br/&gt;&lt;img style="max-width: 800px;" src="http://www.pcpower.com/images/products/b/1200W_TC_3835.jpg" height="256" width="350"/&gt;&lt;br/&gt;&lt;img style="max-width: 800px;" src="http://www.xicomputer.com/products/prodimages/Tyan_S7002WGM2NR-LE.jpg" height="206" width="351"/&gt;&lt;br/&gt;&lt;img style="max-width: 800px;" src="http://www.zolvip.com/images/upload/image/intel_xeon_5500.jpg" height="296" width="350"/&gt; x 2&lt;br/&gt;&lt;img style="max-width: 800px;" src="http://www.chip.pl/images/testy/podzespoly-pc/pamieci-ddr3/kingston-valueram-2gb-pc3-10600-cl9-kit-kvr1333d3n9k2-2g/50760.jpg/image_preview/50760.jpg" height="201" width="350"/&gt; x 4&lt;br/&gt;&lt;img style="max-width: 800px;" src="http://www.quietpcusa.com/images/th-core-i7-cooler.jpg" height="386" width="350"/&gt;&lt;br/&gt;&lt;img style="max-width: 800px;" src="http://media.bestofmicro.com/,C-D-193549-3.jpg" height="318" width="350"/&gt; x 4&lt;br/&gt;&lt;img style="max-width: 800px;" src="http://ecx.images-amazon.com/images/I/41ymHZ-M7wL.jpg" height="241" width="350"/&gt; x 3&lt;br/&gt;&lt;img style="max-width: 800px;" src="http://www.scan.co.uk/Images/Products/1046756-a.jpg" height="350" width="350"/&gt;&lt;br/&gt;&lt;img style="max-width: 800px;" src="http://pcnews.ro/wp-content/uploads/2007/06/xonar-d2_3d2_l.jpg" height="225" width="350"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;div class="zemanta-pixie"&gt;&lt;img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=8a1f6335-0ac3-84f6-8fbd-07db6cf91176"/&gt;&lt;/div&gt;</description><link>http://www.laccetti.com/post/182419945</link><guid>http://www.laccetti.com/post/182419945</guid><pubDate>Mon, 07 Sep 2009 17:13:42 -0400</pubDate></item><item><title>Quote of the Day</title><description>&lt;p&gt;“We’re working against opponents who make politics personal—who distort and deny the truth and put partisan gain ahead of the national interest.”&lt;/p&gt;

&lt;p&gt;— Michael Ignatieff&lt;/p&gt;</description><link>http://www.laccetti.com/post/177290187</link><guid>http://www.laccetti.com/post/177290187</guid><pubDate>Tue, 01 Sep 2009 15:08:20 -0400</pubDate></item><item><title>Getting Solaris 10 to Authenticate Against OpenLDAP</title><description>&lt;p&gt;Brief History:&lt;br/&gt;I’m busy setting up a new debug/staging environment at work so that we can consolidate the many tens of old FreeBSD 4.4 (ohgod) and Solaris 9/10 servers into a few distinct Solaris 10 servers.  Personally, I would have gone with some sort of Linux distro, but for some reason somebody thinks that Solaris is the way to go.  Now, if we were switching to OpenSolaris, I might not complain too much, as it has a proper package management system and recent versions of applications, but Solaris 10?  Short of me becoming a certified Solaris admin, it is pretty painful to deal with - the install is designed more as a right of passage than an application, finding out what went wrong where is better left to those with an ability to see into the ninth dimension, etc.  However, Solaris 10 is what I have to work with, so on we go.&lt;br/&gt;&lt;br/&gt;The Servers:&lt;br/&gt;The idea is relatively simple - one Sun V40z with a large RAID 5 array running openfiler connected two two networks, one for debug and one for staging.  The debug environment would then have two V40zs with an iSCSI mount that stores data that needs to be shared between the servers (configuration files, J2EE apps and the like) along with some zones to allow us to run WebLogic 9.2 and 10.3 side by side plus zones for Apache/Perl/PHP stuff.  There are also two V20zs that will be setup with an iSCSI setup to support an Oracle RAC instance.  There is a final pair of V20zs that are to be used for any Windows-specific services (we have one or two).  All of these servers will be setup to talk to the OpenLDAP server that openfiler ships with, so that we can have a centralized location to store credentials.&lt;br/&gt;&lt;br/&gt;The Implementation:&lt;br/&gt;After doing some digging, it appeared that there were two ways of setting Solaris 10 to use LDAP - use PADL’s pam_ldap module, or configure Solaris natively using a tool called ‘ldapclient.’  After doing some digging, I chose the former, since it is the native way of doing things, and I didn’t want to download/compile/manage anything special.  More digging ensues, and I run into a ton of documentation talking about setting ldapclient up under Solaris 8 or 9, but not much for setting up Solaris 10.  This is pretty odd, since Solaris 10 is four years old at this point; not exactly new.  Thus began the travails into trial and error - and into seeing how far I could push myself before I lost my grip on reality.  With that noted, on we go!&lt;br/&gt;&lt;br/&gt;The first step is to setup openfiler to use LDAP - not a very difficult task to do!  You just need to login to the openfiler administration UI, tell it to use LDAP, and off you go.  Some of the defaults that openfiler used didn’t sit well, so I hacked at it for a bit.  Pop open the file &lt;font face="monospace"&gt;/opt/openfiler/var/www/includes/ldap.inc&lt;/font&gt; in a text editor; I changed the home directory from &lt;font face="monospace"&gt;“/dev/null”&lt;/font&gt; to &lt;font face="monospace"&gt;“/export/home/”.$username&lt;/font&gt; so that the directory would be valid.  I also changed the shell from &lt;font face="monospace"&gt;/bin/false&lt;/font&gt; to &lt;font face="monospace"&gt;/bin/bash&lt;/font&gt; as I actually wanted my users to be able to login to remote places.  I also modified the &lt;font face="monospace"&gt;create_slapd()&lt;/font&gt; function as the LDAP config will be (re)written when you enable LDAP and Solaris needs a more special setup.  You need to download the &lt;a href="http://www.unixpeople.com/%7Eabarclay/nisdomainobject.schema" target="_blank"&gt;nisdomainobject schema&lt;/a&gt;, &lt;a href="http://web.singnet.com.sg/%7Egaryttt/DUAConfigProfile.schema.txt" target="_blank"&gt;DUAConfigProfile schema&lt;/a&gt; and &lt;a href="http://www.bolthole.com/solaris/new.solaris.schema" target="_blank"&gt;solaris schema&lt;/a&gt; to &lt;font face="monospace"&gt;/etc/openldap/schema/&lt;/font&gt; and then add them as includes to the &lt;font face="monospace"&gt;slapd.conf&lt;/font&gt; file.  I also added in a section at the bottom of the config generator to add in TLS support as transmitting credentials in cleartext is a no-no.  (Of course, I discovered that ldapclient has issues talking TLS, but that’s a problem for later.)&lt;br/&gt;&lt;br/&gt;So, openfiler is now serving up our LDAP content, time to modify the LDAP itself!  Step one, your root DSE needs to have two additional object classes added to it - domainRelatedObject and nisDomainObject.  Both will require new attributes to be set, and both should have the same value, corresponding to your domain name.  So, if your root DSE is dc=blah,dc=me the attributes would both be set to blah.me.  With the root DSE added, you need to add a profile that ldapclient will use to configure itself.  This requires two entries to be created - a new OU and an entry underneath it.  Here is the LDIF - change the IPs and off you go!&lt;br/&gt;&lt;br/&gt;&lt;font face="monospace"&gt;dn: ou=profile,dc=blah,dc=me&lt;br/&gt;objectClass: organizationalUnit&lt;br/&gt;objectClass: top&lt;br/&gt;ou: profile&lt;br/&gt;&lt;br/&gt;dn: cn=Solaris,ou=profile,dc=blah,dc=me&lt;br/&gt;objectClass: DUAConfigProfile&lt;br/&gt;objectClass: top&lt;br/&gt;cn: Solaris&lt;br/&gt;authenticationMethod: simple&lt;br/&gt;bindTimeLimit: 2&lt;br/&gt;credentialLevel: proxy&lt;br/&gt;defaultSearchBase: dc=blah,dc=me&lt;br/&gt;defaultSearchScope: sub&lt;br/&gt;defaultServerList: 10.10.10.10&lt;br/&gt;followReferrals: TRUE&lt;br/&gt;preferredServerList: 10.10.10.10&lt;br/&gt;profileTTL: 0&lt;br/&gt;searchTimeLimit: 30&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;Next step - configure LDAP on Solaris!  Run this magic little command, replacing the password with the openfiler password, and the correct IP of the openfiler server:&lt;br/&gt;&lt;font face="monospace"&gt;ldapclient init -a proxyPassword=somepassword -a proxyDN=cn=openfiler,dc=blah,dc=me -a domainname=blah.me -a profileName=Solaris 10.10.10.10&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;When it is done (may take a while, and doesn’t tell you SQUAT about what it is doing), you should see this:&lt;br/&gt;&lt;font face="monospace"&gt;System successfully configured&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;If you don’t, you are in problem town; run the previous command, but throw a &lt;font face="monospace"&gt;-v&lt;/font&gt; in there so you can see what it is doing.  On one of the RAC clients the LDAP service (svc:/network/ldap/client:default) was stuck in maintenance mode, which was hoofing everything up.  I had to manually create the &lt;font face="monospace"&gt;/var/ldap/ldap_client_cred&lt;/font&gt; and &lt;font face="monospace"&gt;/var/ldap/ldap_client_file&lt;/font&gt; files, fire the service up, then try again.  Hopefully you don’t have any issues as it is very difficult to figure out what is going on and how to fix it - I wasted a HUGE chunk of time yesterday trying to get the ldapclient command to work.&lt;br/&gt;&lt;br/&gt;At this point in time, you should be done, and should be able to create a user in openfiler and login to using that user on your Solaris 10 machine.  Two notes to this little guide: I still haven’t figured out how to get Solaris/TLS to work yet, and I also need to find out how to have a user’s non-existent home directory created automatically when they login for the first time.  But hey, that is what Friday is for!&lt;br/&gt;&lt;br/&gt;Good luck!&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;div class="zemanta-pixie"&gt;&lt;img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=2e776f3b-6462-8298-ae70-ed20a954601c"/&gt;&lt;/div&gt;</description><link>http://www.laccetti.com/post/173942370</link><guid>http://www.laccetti.com/post/173942370</guid><pubDate>Fri, 28 Aug 2009 07:45:30 -0400</pubDate><category>solaris</category><category>ldap</category><category>openfiler</category><category>insanity</category></item><item><title>I unlocked the Coming Down! achievement on Red Faction: Guerrilla! http://ping.fm/1wBha</title><description>&lt;p&gt;I unlocked the Coming Down! achievement on Red Faction: Guerrilla! &lt;a href="http://ping.fm/1wBha" target="_blank"&gt;http://ping.fm/1wBha&lt;/a&gt;&lt;/p&gt;</description><link>http://www.laccetti.com/post/163947680</link><guid>http://www.laccetti.com/post/163947680</guid><pubDate>Sun, 16 Aug 2009 00:40:12 -0400</pubDate></item><item><title>DoneDone guys got back to me - seems that there is a cookie coming back that I need to rip out and...</title><description>&lt;p&gt;DoneDone guys got back to me - seems that there is a cookie coming back that I need to rip out and send back in with other requests.  Eek!&lt;/p&gt;</description><link>http://www.laccetti.com/post/163945149</link><guid>http://www.laccetti.com/post/163945149</guid><pubDate>Sun, 16 Aug 2009 00:35:59 -0400</pubDate></item><item><title>I unlocked the Bling achievement on Trials HD! http://ping.fm/rxjFl</title><description>&lt;p&gt;I unlocked the Bling achievement on Trials HD! &lt;a href="http://ping.fm/rxjFl" target="_blank"&gt;http://ping.fm/rxjFl&lt;/a&gt;&lt;/p&gt;</description><link>http://www.laccetti.com/post/163910238</link><guid>http://www.laccetti.com/post/163910238</guid><pubDate>Sat, 15 Aug 2009 23:35:35 -0400</pubDate></item><item><title>I unlocked the Tank Buster achievement on Red Faction: Guerrilla! http://ping.fm/6hEDt</title><description>&lt;p&gt;I unlocked the Tank Buster achievement on Red Faction: Guerrilla! &lt;a href="http://ping.fm/6hEDt" target="_blank"&gt;http://ping.fm/6hEDt&lt;/a&gt;&lt;/p&gt;</description><link>http://www.laccetti.com/post/163860404</link><guid>http://www.laccetti.com/post/163860404</guid><pubDate>Sat, 15 Aug 2009 22:05:59 -0400</pubDate></item><item><title>DoneDone SOAP API doesn’t seem to be working (for me, at any rate) and JIRA 3.8’s SOAP...</title><description>&lt;p&gt;DoneDone SOAP API doesn’t seem to be working (for me, at any rate) and JIRA 3.8’s SOAP API uses RPC encoding, which JAX-WS 2.0 doesn’t like.&lt;/p&gt;</description><link>http://www.laccetti.com/post/163824958</link><guid>http://www.laccetti.com/post/163824958</guid><pubDate>Sat, 15 Aug 2009 20:59:40 -0400</pubDate></item><item><title>Using DoneDone Web Services with Apache CXF 2.2.x</title><description>&lt;p&gt;I ran into an issue while trying to hook into DoneDone’s web services.  Apparently all of the session management in .NET web services is done at the header/cookie level, which is not really a SOAP standard.  Given that I’m using Java (CXF specifically), I needed to do some horrible hackery to make this work.  Here is the net result!  Note: please realize that it is 1:40 on Sunday morning - this is quick and dirty; I wanted it to work before I passed out.  There is NO elegance to be found here.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Spring Configuration:&lt;/b&gt;&lt;br/&gt;&lt;font face="monospace"&gt;&lt;?xml version=”1.0” encoding=”UTF-8”?&gt;&lt;br/&gt;&lt;beans xmlns=”http://www.springframework.org/schema/beans” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://www.springframework.org/schema/beans &lt;a href="http://www.springframework.org/schema/beans/spring-beans.xsd" target="_blank"&gt;http://www.springframework.org/schema/beans/spring-beans.xsd&lt;/a&gt;“&gt;&lt;br/&gt;    &lt;!— Hook to DoneDone —&gt;&lt;br/&gt;    &lt;bean id=”doneDoneClient” class=”com.donedone.DoneDoneSoap” factory-bean=”clientFactory” factory-method=”create”/&gt; &lt;br/&gt;&lt;br/&gt;    &lt;bean id=”clientFactory” class=”org.apache.cxf.jaxws.JaxWsProxyFactoryBean”&gt; &lt;br/&gt;        &lt;property name=”serviceClass” value=”com.donedone.DoneDoneSoap”/&gt; &lt;br/&gt;        &lt;property name=”address” value=”https://yourproject.mydonedone.com/api/DoneDone.asmx”/&gt; &lt;br/&gt;    &lt;/bean&gt;    &lt;br/&gt;&lt;/beans&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Java Test Code:&lt;/b&gt;&lt;br/&gt;&lt;font face="monospace"&gt;package limone.test.donedone;&lt;br/&gt;&lt;br/&gt;import java.util.List;&lt;br/&gt;import java.util.Map;&lt;br/&gt;import java.util.regex.Matcher;&lt;br/&gt;import java.util.regex.Pattern;&lt;br/&gt;&lt;br/&gt;import org.apache.cxf.endpoint.Client;&lt;br/&gt;import org.apache.cxf.frontend.ClientProxy;&lt;br/&gt;import org.apache.cxf.transport.http.HTTPConduit;&lt;br/&gt;import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;&lt;br/&gt;import org.junit.Test;&lt;br/&gt;import org.junit.runner.RunWith;&lt;br/&gt;import org.slf4j.Logger;&lt;br/&gt;import org.slf4j.LoggerFactory;&lt;br/&gt;import org.springframework.beans.factory.annotation.Autowired;&lt;br/&gt;import org.springframework.test.context.ContextConfiguration;&lt;br/&gt;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;&lt;br/&gt;&lt;br/&gt;import com.donedone.ArrayOfProjectInfo;&lt;br/&gt;import com.donedone.DoneDoneSoap;&lt;br/&gt;import com.donedone.ProjectInfo;&lt;br/&gt;&lt;br/&gt;import static org.junit.Assert.*;&lt;br/&gt;&lt;br/&gt;@RunWith(SpringJUnit4ClassRunner.class)&lt;br/&gt;@ContextConfiguration(locations = { “classpath:/spring-config.xml” })&lt;br/&gt;public class DoneDoneTest {&lt;br/&gt;    private static final Logger log = LoggerFactory.getLogger(DoneDoneTest.class);&lt;br/&gt;&lt;br/&gt;    @Autowired&lt;br/&gt;    private DoneDoneSoap client;&lt;br/&gt;&lt;br/&gt;    @SuppressWarnings(“unchecked”)&lt;br/&gt;    @Test&lt;br/&gt;    public void testClient() {&lt;br/&gt;        Client cxfClient = ClientProxy.getClient(client);&lt;br/&gt;        boolean loginStatus = client.login(“username”, “password”);&lt;br/&gt;        Map&lt;String, Object&gt; headers = (Map&lt;String, Object&gt;) cxfClient.getResponseContext().get(“org.apache.cxf.message.Message.PROTOCOL_HEADERS”);&lt;br/&gt;        Pattern p = Pattern.compile(“(ASP\.NET_SessionId=\w{1,});.*”);&lt;br/&gt;        String cookie = null;&lt;br/&gt;        for (String cookies : (List&lt;String&gt;) headers.get(“Set-Cookie”)) {&lt;br/&gt;            log.debug(“Processing cookie: {}”, cookies);&lt;br/&gt;            Matcher m = p.matcher(cookies);&lt;br/&gt;            if (m.matches()) {&lt;br/&gt;                cookie = m.group(1);&lt;br/&gt;                log.debug(“Cookie: {}”, cookie);&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;        assertTrue(“Could not login.”, loginStatus);&lt;br/&gt;&lt;br/&gt;        HTTPConduit conduit = (HTTPConduit) cxfClient.getConduit();&lt;br/&gt;        HTTPClientPolicy policy = conduit.getClient();&lt;br/&gt;        if (policy == null) {&lt;br/&gt;            policy = new HTTPClientPolicy();&lt;br/&gt;            conduit.setClient(policy);&lt;br/&gt;        }&lt;br/&gt;        policy.setCookie(cookie);&lt;br/&gt;        ArrayOfProjectInfo projects = client.getProjects();&lt;br/&gt;        for (ProjectInfo pi : projects.getProjectInfo()) {&lt;br/&gt;            log.debug(“Project: {}”, pi.getName());&lt;br/&gt;        }&lt;br/&gt;    }&lt;br/&gt;}&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;div class="zemanta-pixie"&gt;&lt;img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=c28f5a08-be54-8885-add0-248fe6f01327"/&gt;&lt;/div&gt;</description><link>http://www.laccetti.com/post/163949501</link><guid>http://www.laccetti.com/post/163949501</guid><pubDate>Sat, 15 Aug 2009 20:43:07 -0400</pubDate></item><item><title>SCRIBEFIREKFFtX6vWlwSCRIBEFIRE</title><description>&lt;p&gt;SCRIBEFIREiZ5zqFmZSCRIBEFIRE&lt;/p&gt;</description><link>http://www.laccetti.com/post/163948678</link><guid>http://www.laccetti.com/post/163948678</guid><pubDate>Sat, 15 Aug 2009 20:41:44 -0400</pubDate></item><item><title>I unlocked the The Challenger achievement on Trials HD! http://ping.fm/cRG73</title><description>&lt;p&gt;I unlocked the The Challenger achievement on Trials HD! &lt;a href="http://ping.fm/cRG73" target="_blank"&gt;http://ping.fm/cRG73&lt;/a&gt;&lt;/p&gt;</description><link>http://www.laccetti.com/post/163807577</link><guid>http://www.laccetti.com/post/163807577</guid><pubDate>Sat, 15 Aug 2009 20:25:10 -0400</pubDate></item><item><title>Game reviews: Red Faction - terrific.  Trials HD - tons of fun.  Batman - Arkham Asylum demo - need...</title><description>&lt;p&gt;Game reviews: Red Faction - terrific.  Trials HD - tons of fun.  Batman - Arkham Asylum demo - need the full game already!&lt;/p&gt;</description><link>http://www.laccetti.com/post/163800964</link><guid>http://www.laccetti.com/post/163800964</guid><pubDate>Sat, 15 Aug 2009 20:11:05 -0400</pubDate></item></channel></rss>
