22 May 2009

Input masking

Ever needed to mask the user's input on a web form so it complies with a specific format (time, credit card, etc.)? Well, here's meioMask to the rescue.

Online tool to build web sites

Came across Circlepad.com, which promises to help you build sites without having to know CSS or HTML, and to simply drag-and-drop components.

20 May 2009

Browser-based testing tool

If you find yourself typing the same thing again and again while testing a site, here comes Selenium to the rescue. It's a Firefox plugin that records and plays back your keystrokes. The Selenium site has a nice demo video.

19 May 2009

Importance of browsers to business

If you're a web developer, you already know this: Don't ignore the variety of browsers out there and keep an eye on the handheld devices. Some organizations standardize their web apps for one browser; big mistake: http://www.infoworld.com/t/browsers/ignoring-your-businesss-browser-thats-mistake-873?source=IFWNLE_nlt_daily_2009-05-19

Second Adobe article published

Adobe has published my second Flex article: Uploading a File with Flex and Java.

15 May 2009

Adobe Acrobat's IOError solution

Adobe Acrobat Pro can throw an error if it tries to generate a PDF and the original document contains non-system fonts. The error's actually coming from Distiller:

%%[ ProductName: Distiller ]%%
%%[Page: 1]%%
%%[Page: 2]%%
%%[Page: 3]%%
%%[ Error: ioerror; OffendingCommand: imageDistiller; ErrorInfo: DCTDecodeFilter Source error or end in scan 0 8x8 block 71491 ]%%

Stack:

-dict-

%%[ Flushing: rest of job (to end-of-file) will be ignored ]%%
%%[ Warning: PostScript error. No PDF file produced. ] %%

Solution? Simple: Under your printers in Windows, right-click Adobe PDF, choose Properties > General tab > Printing Preferences. Make sure the checkbox for "Rely on system fonts; do not use document fonts" is off.

Also, the same thing can happen on the online Acrobat.com tool:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at com.adobe.dc2.view.body.library::LibraryCPDFView/createPDFDone()
at com.adobe.dc2.view.body.library::LibraryCPDFView/updateStatus()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()

Unless the document you upload has the fonts it needs embedded within it, it will throw an exception. The conversion server has only so many fonts; there's no way it can have every possible typeface that people might use.

13 May 2009

Design inspiration

Some amazing web designs for inspiration: http://wb4d.com/

11 May 2009

Get feedback on your designs

A new site promises to provide feedback to design and marketing professionals for their concepts:
ConceptFeedback.com, expected to launch next month, will host an active community of professionals dedicated to offering quick, actionable feedback on marketing concepts. Concepts, ranging from websites and landing pages to logos and advertisements, can be posted for free and reviewed by peers. Registered users will have access to free third-party insight, private concept sharing tools and networking opportunities. (From PrWeb)

09 May 2009

Google Code Search

When looking for code examples, don't forget the Google Code Search.

08 May 2009

Flex Error 2032: Stream Error

While building your Flex apps, if you run into Error 2032, a great resource is Juda's Blog. It has helped me and folks are continuing to post to it.

Create abstract Photoshop effects

Here are some great tutorials on creating abstract backgrounds in Photoshop: http://www.tutorialmagazine.com/15-best-photoshop-abstract-tutorials. Thanks to Robin Cannon on LinkedIn.com.

04 May 2009

JSF ViewExpiredException fix

After spending some time wrestling with this beast, I might have found a solution. Here's the scenario:
  1. Launch a very simple JSF app consisting of two pages, as described by the Select example from Chapter 4 of the Core JavaServer Faces book by D. Geary and C. Horstmann (no database calls).
  2. Allow the session to time out.
  3. Use your browser's back button to return to the index.faces page.
  4. Re-submit the form.
  5. Watch the app blow up with this exception:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: viewId:/index.faces - View /index.faces could not be restored.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:270)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

root cause

javax.faces.application.ViewExpiredException: viewId:/index.faces - View /index.faces could not be restored.
com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:186)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:104)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

After a lot of research on the web, the following context parameter in the web.xml file resolves it:
 <context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>

To see it in action, set your session timeout to 1 minute in web.xml:
   <session-config>  
<session-timeout>1</session-timeout>
</session-config>

However, be careful using this setting: You will cause the entire UI component tree to be serialized and passed to the client. This can increase download lag time, especially on more complex layouts. Also, there are times when sessions must expire (authenticated sessions), so you'd want to stick with the server for your state saving method in most cases.