- Prototype Javascript Library easing the development of dynamic web applications
New spanky looking site for prototype including (gasp!) documentation.
(categories: prototype javascript documentation ) - NewsGator – Enterprise RSS channels your information streams
Interesting that email is getting attacked by both IM (collaboration) and RSS (news). If you use IM and RSS, what do you need email for?
(categories: enterprise rss emailsucks ) - AlphaBaby
Keyboarding banging program for small kids that like to play with the keyboard but usually do nothing but rename the files on your desktop.
(categories: keyboardbanger kids mac games alphababy )
Category Archives: Uncategorized
Links: 1-17-2007
- joshua’s blog: lessons learned: apache etags
ETags don’t work in a clustered Apache environment unless you mod the default Apache configuration file.
(categories: etag caching apache hosting http ) - Working around IE7s prompt bug, er feature
Unbelievable. JavaScript prompt is gone from IE7.
(categories: iesucksballs javascript prompt ie7 )
Links: 1-15-2007
- Web Worker Daily » Blog Archive How to Screw Up An Email Negotiation «
Quote: “Email?s strength is how it leaves long pauses between complete misunderstandings, allowing said misunderstandings to fester and grow until they kill the discussions outright.”
(categories: emailsucks useIM email communication workplace rules business ) - Blogging Roller: Generating JSON for your Roller blog
Create new template… learn Velocity… etc. etc. Want to generate JSON in a Clearspace blog? Append /json to any of the feeds in the system. Done.
(categories: json clearspace roller feeds )
Links: 1-13-2007
- Microsoft takes email design back 5 years – Campaign Monitor Blog
I spent a lot of time at my last job working on consumer email, Notes was always the worst. I think the HTML formatting in Outlook 2007 is going to be worse than Notes and that’s really saying something.
(categories: outlook 2007 email marketing css html )
Links: 1-9-2007
- Dare Obasanjo aka Carnage4Life – Updated: XML Has Too Many Architecture Astronauts
JSON is a better fit for Web services that power Web mashups and AJAX widgets due to the fact that it is essentially serialized Javascript objects which makes it fit better client side scripting which is primarily done in Javascript.
(categories: json javascript client xml data browser ) - Using prototype.js v1.5.0
Developer notes for Prototype 1.5 released.
(categories: prototype documentation javascript ) - Ajaxian » Browser Cache Usage: Only 40-60%?
Quote: “… 40-60% of Yahoo!?s users have an empty cache experience and ~20% of all page views are done with an empty cache. “
(categories: caching cache browser http performance )
Links: 1-3-2007
OGNL: getter and setter types must match
Yesterday I ran into a interesting bug with the WebWork application I spend my waking hours working on, at least initially I thought it was a WebWork bug. I had a WebWork action with a getter / setter combination that looked like this:
public void setUser(String username) { ... } public User getUser() { ... }
The thinking here was that if I invoked the action using a request like this:
/myaction.jspa?user=aaron
then the action would look up the user based on the given username and populate a User object, which would then be returned by the getUser() method (populating the user instance using a custom IOC interceptor would have also worked but would have been overkill in this particular case). The problem was that the setUser(String username) method was never getting called. After checking and double checking the method names and the parameter being passed, I googled around and found this email thread which discusses the very issue, saying that the problem was in fact not with WebWork, nor with it’s underlying expression engine OGNL, but rather the ‘Java reflection API semantics’. In the thread, Laurie Harper, a Struts committer, says that the:
… restriction (where getter and setter have to be of the same type) comes from the Java relection API semantics, not OGNL. A property can only have one type, so it makes sense that the getter and setter for a JavaBean property must agree on that type.
I didn’t doubt what he said, but I needed to see it with my own eyes, so I dove into the deep sea that is OGNL, reflection and JavaBeans. First I read the JavaBeans specification, which seems to back up his story: page 55 of the PDF says this:
By default, we use design patterns to locate properties by looking for methods of the form:
public <PropertyType> get<PropertyName>();
public void set<PropertyName>(<PropertyType> a);
If we discover a matching pair of “get<PropertyName>†and “set<PropertyName>†methods
that take and return the same type, then we regard these methods as defining a read-write property whose name will be “<propertyName>â€.
So the JavaBeans specification requires the getter and setter to be of the same type, but how does OGNL figure out that the I’m trying to trick it with two different types?
I found the answer by digging pretty deep: the OgnlRuntime class looks up a PropertyDescriptor for the given class (in my case the WebWork action) and then calls the getWriteMethod() on the PropertyDescriptor instance. The documentation for that method mentions that it may return null if the property can’t be written but the documentation doesn’t mention why that might happen. If you grab the source for the PropertyDescriptor class, you’ll see that the getWriteMethod() method invokes a private method findPropertyType(), which is where I finally found the culprit. It compares the return type of the getter and the parameter type of the setter and throws an IntrospectionException if the types don’t match (line 602), which the getWriteMethod() catches and then returns null, which leaves the OgnlRuntime with no method to call.
So it sounds to me like this is really a JavaBean specification requirement, not a Java reflection API semantic, but then I guess it’s all just semantics anyway right?
Links: 1-1-2007
- the next great blogging tool > Second Verse
Quote: “… the next great blogging tool will integrate seamlessly with instant messaging.”
(categories: blogging IM )
Links: 12-25-2006
- IT Conversations: Ryan Freitas
Great rant on what collaboration is and isn’t and on what some of the cool tools are.
(categories: collaboration podcast email wikis IM sharing ) - Blog by Kveton > The PDX Mojo: Open Source Finding its Stride
Like Portland? Work at Jive! http://www.jivesoftware.com/company/jobs.jsp
(categories: portland jobs oregon ) - Scripting News for 12/20/2006 > Scripting News Annex
Douglas Crockford: “The good thing about reinventing the wheel is that you can get a round one.”
(categories: json javascript quotes ) - Daring Fireball: About the Footnotes
In case you’re wondering where I got the hankering for footnotes in my posts on the Clearspace blog. Wait, you haven’t seen my posts over there? Check it out: http://jivesoftware.com/blog/
(categories: footnotes design html usability blogging )
Links: 12-21-2006
- Raible Designs | [TSE] Building Modern Web Applications with Mike Stenhouse
Lots of good CSS and JavaScript stuff…
(categories: css javascript design development standards toread )