Matt RaibleMatt Raible is a writer with a passion for software. Connect with him on LinkedIn.

The Angular Mini-Book The Angular Mini-Book is a guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.

Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.

For book updates, follow @angular_book on Twitter.

The JHipster Mini-Book The JHipster Mini-Book is a guide to getting started with hip technologies today: Angular, Bootstrap, and Spring Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.

This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.

For book updates, follow @jhipster-book on Twitter.

10+ YEARS


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.
You searched this site for "free sex movies for men non blog". 1,227 entries found.

You can also try this same search on Google.

Macromedia Flex 1.0 Released

Macromedia has released Flex 1.0. Flex is basically a server plugin that allows you to write XML to render flash. Here's the marketing lingo from their product page:

Flex is a presentation server installed on top of a J2EE application server or servlet container, a rich library of user interface components, an XML-based markup language used to declaratively lay out these components, and an object-oriented programming language which handles user interactions with the application. The result is a Rich Internet Application rendered using Flash Player and developed using industry standards and a development paradigm familiar to developers.

The major problem with Flex is its price.

Flex presentation server pricing starts at $12,000 for two CPUs and includes annual maintenance.

Macromedia's take on this seems to be "its an evolutionary step in web application design and development" - so $12K is a small drop in the bucket. Sun claims the same for JSF, but you don't see a hefty price tag on that sucker. What Macromedia doesn't seem to realize is that its important to market to developers. If you can inspire the developers to love your product - it's only natural that it will gain more traction. With a price of 12K and no free trial (CD by mail) - good luck on getting developer support.

Of course, as an independent consultant, I probably have a scewed perspective. Maybe the corporate drones like getting their development platform and tools shoved down their throat.

Posted in Java at Mar 29 2004, 07:36:10 AM MST 9 Comments

SiteMesh passed the 10 minute test

I decided to go out on a limb this evening and give SiteMesh a run for its money. The first warning sign was that the documentation refers to version 2.0.2, while the downloads section refers to version 2.0.1. So I proceeded to download 2.0.1. I promptly noticed that the install guide indicated I needed to download SiteMesh's two TLDs and configure them in my web.xml. Blech - this is so year 2000 - most modern containers support loading taglibs from JAR files with a URI.

So I did a good ol' cvs co of sitemesh from java.net. First of all, I'd like to say kudos to java.net and their CVS repositories - they've been rock solid for the few weeks I've used them. After checking out sitemesh, the first thing on my agenda was to give it the tried n' true ant test. This means I navigate to the sitemesh folder and simply type "ant". At this point, I should get one of two things - a BUILD SUCCESSFUL with a JAR or a help message telling me what I should type. I got the former, which I prefer.

After this, I integrated it into my app using the decorators documentation and deployed it. At first, I received the lovely ol' "getOutputStream() has already been called for this response" error, so I hacked PageFilter.java to use PrintWriter writer = response.getWriter(); instead of PrintWriter writer = new PrintWriter(response.getOutputStream());. Build, copy, package, deploy and voila - it all worked!! Wow that was easy. ;-)

Here's the weird part. I decided to reverse my hack on PageFilter.java to prove that I'd actually fixed the bug. Now I'm back to the original code I got from CVS and I can't get the getOuputStream() error to rear its ugly head. Doh!! This experience begs the following question.

Is SiteMesh stable enough on Tomcat 5 that I can should use it in my Spring Live sample app?

SiteMesh definitely passed my 10 minute test, we'll see if it holds up for the long haul. So far, I'm quite impressed with its easy configuration and quick implementation. I especially like that you can literally guess at it's syntax and you'll get it right. Maybe I was just lucky... heh

P.S. You should probably know I'm a big fan of Tiles. I wonder if SiteMesh will let me switch a decorator on the fly like Tiles does?

Posted in Java at Mar 24 2004, 12:07:56 AM MST 16 Comments

Carpal Tunnel

When I finished hacking away on Roller this past Saturday, my fingers hurt from typing so much. Who knows why, I didn't add that much code. Must've been all the keystrokes to run Ant, start Tomcat, and test stuff. Yeah, we need more tests - but those won't help tweak CSS. Yesterday, all I did was review Hibernate in Action, so no coding, but a fair amount of typing. By the time I went on a bike ride yesterday afternoon - my left hand's left-most fingers were curled up naturally and my forearm was aching. Carpal Tunnel has set in quite nicely in my left forearm. I can still type, as evidenced by this post - but it definitely hurts and it seems like I could do some serious damage if I keep it up.

Herein lies the problem. I took this week off from my regular gig to concentrate on the Spring book. So I need to be typing like a madman all week - but my body is not cooperating. Rather, it's trying to tell me something - "you're not cut out for this this much coding/typing." So what should I do? I've had these same symptoms before - and when I did, I got a massage and took a couple of days off. That's a bit difficult this week with my livelihood depending on a pain-free left arm/wrist/fingers. I've booked a 10:00 massage - let's hope that gets me through the week. I definitely need a longer-term solution though. It'd be nice to write this book w/o typing, just talking.

Related: Carpal Tunnel in March 2006.

Posted in General at Mar 22 2004, 08:22:23 AM MST 13 Comments

Password encryption with JavaScript

This morning, I found some scripts to do MD4, MD5 and SHA encryption with JavaScript. If I add these to AppFuse and Roller, it means that a user's password will never be sent in plain-text. Very nice - anyone using any of these scripts? Any reason I should use someone else's scripts instead of the ones I found?

Posted in Java at Mar 22 2004, 06:32:02 AM MST 7 Comments

A Day with Roller

I put a whole sh*tload of hours into Roller today - around 14 to be precise! My main goals where to get password encryption enabled and Remember Me re-implemented as a more secure feature. I managed to accomplish both and did so much typing in the process that my fingers hurt.

Other things I managed to accomplish:

  • Added ability to put a period (.) in a page name. Also modified BasePageServlet to set contentType appropriately for those "pages" ending in .xml, .js and .css. This should allow pages to be created for CSS and JavaScript, and then included in your pages with <link> and <script>.
  • Moved Calendar in Weblog editor to top right (was at bottom left) - making it easier to view and navigate to different days.
  • Fixed comments and spam stuff that Lance added.
  • Fixed pop-up Calendar on Weblog Edit screen to be properly positioned in IE and Mozilla.
  • Added up and down arrow buttons to allow expanding and contracting (taller and shorter) of weblog textarea. Persisted user's preference with a cookie.
  • Various UI enhancements to make the Editor UI look good in both IE and Mozilla (on Windows XP).

Phew - I'm ready for a beer! You can checkout our demo instance if you'd like to try out the latest code.

Posted in Roller at Mar 20 2004, 10:14:00 PM MST 24 Comments

You gotta admit...

You gotta admit that Pebble's front page on JavaRanch looks pretty nice. It's definitely prettier than JRoller's and there's something about it that makes me like it even more than Roller's new front page. Kudos to Simon - nice work!

Maybe Roller's front page doesn't have to look like the rest of the editor UI (which most never see). If anyone out there wants to put together a slick-looking design for Roller's front page, I'll turn it into the real deal (with Dave and Lance's approval of course).

Posted in Roller at Mar 16 2004, 07:53:48 AM MST Add a Comment

Groove Systems: Cheap Java Hosting Provider

Spotted on the WebWork Mailing List today. Groove Systems (Rick Salsa's employer) has some nice hosting solutions. I currently pay $30 (Canadian) for 200 MB, 5 GB Transfer and my own JVM at KGBInternet.com. Keith (at KGB) rocks because he is always quick to respond to any of my issues and always tries to help me out. However, I have to admit, Groove's Grooviest package looks pretty nice. For the same price ($30 Canadian), you get 1 GB space, 15 GB Transfer and your own JVM.

The only question I have is how much memory do you get? Keith does nothing to limit memory usage, so I'm currently set at a 512 MB max heap size. Who knows if I'm using it all, that's just what I'm set at. Oh and one other thing you might like to know:

... right now you can get a 32meg private jvm for free.

Read the read e-mail from Rick for more info.

Posted in Java at Mar 10 2004, 12:54:11 PM MST 3 Comments

Do you censor your own blog?

Someone asked me recently, "Do you censor your blog?" As in, "do you only write about stuff that you think readers will be interested in?" At the time, I said, "No - I write whatever the hell I want." However, I've come to realize that this is not exactly true. When I first started writing this blog, back in August 2002, I wrote about everything. I didn't care, I was writing to write and nobody was reading me.

Then, in November of 2002, along came the opportunity to help write a book. This was pretty damn exciting for me, as I think that being a published author is pretty cool (BTW, if I never started blogging, I'd have never gotten the Pro JSP or the Spring Live deals).

What has happened over the last year or so is something I never expected. Hopefully it's just in my head and it isn't really true. I've started to feel like an authority on web development - so I feel that I can't really post dumb questions, problems, etc. on this site. I feel that if I do, I'll lose credibility. It doesn't help that I've gone from 2 visits a day to over 4000. Damn - I'm censoring myself. That's just wrong...

I'm tempted to say, credibility be damned, actions speak louder than words - and run with it. After all, most of the hits on this site come from Google - and the reason is because I've copied and pasted so many errors/exceptions into this blog. More errors = more hits = more money from Google Ads? ;-)

Posted in Roller at Mar 10 2004, 11:42:03 AM MST 4 Comments

Great CSS Designs

While reading the latest issue of A List Apart this morning, I got sidetracked and visited the CSS Zen Garden, finally landing on David Shea's blog. There I found his listing of Great CSS Designs. There's some very nice sites in there.

In other news, today is one of those days that sucks to work from home. I can see the snow falling out my window, and it's snowed almost 2 feet in the last 48 hours at Vail, Breckenridge and Winter Park. Urgghh, the slopes are calling, but so is my pocketbook. Note to self: get your priorities straight next year so this doesn't happen again. This is the first year in the past 5 that I haven't bought a ski pass and I won't do it again. Oh well, at least it'll be a good night for a hockey game.

Posted in The Web at Mar 05 2004, 07:45:05 AM MST 3 Comments

Generating indexed-property ready ActionForms with XDoclet

One of the issues with using XDoclet to generate your Struts ActionForms (from POJOs) is that out-of-the-box, your Forms will not support indexed properties. This means that if you have a List on an object (this list will likely contain other objects/forms), you have to extend the generated form to add the necessary setters for indexed properties. For example, if you have an addresses List on a PersonForm, you would need the following in order to edit those addresses in Struts.

    setAddresses(int index, Object address) {
        this.addresses.set(index, address);
    }

The worst part is that you need to populate the addresses list with a bunch of empty AddressForm objects before Struts' auto-population will succeed. If you were coding the PersonForm by hand, you could code a reset() method such as the following:

    public void reset(ActionMapping mapping, HttpServletRequest request) {
        this.addresses = ListUtils.lazyList(new ArrayList()new ObjectFactory());
    }

    /**
     <code>StringFactory</code>
     *
     @see org.apache.commons.ListUtils
     */
    class ObjectFactory implements Factory {

        /**
         * Create a new instance of the specified object
         */
        public Object create() {
            return new AddressForm();
        }
    }

Now for the best part - I figured out how to generate this code with XDoclet, so any lists on your Forms will be indexed-property ready. By using <nested:iterate> in your JSP, you can easily CRUD you indexed properties. Pretty slick IMHO. The template is a bit much to put on this site, and it's long lines won't fit in a <pre> - so you can temporarily view the template here. I'll add a link to it in AppFuse's CVS once it shows up there. One thing you'll notice in this template is a little Velocity-lovin':

<XDtVelocity:generator>
  #set( $method = $currentMethod.name)
  ## trim off the 'get'
  #set( $objectName = $method.substring(3, $method.lastIndexOf('s')))
</XDtVelocity:generator>

Thanks to Erik on Merrick's blog for the quick Velocity/XDoclet howto. It was especially helpful since the XDoclet site has no documentation on this feature.

For all you my framework is better junkies - a clear explanation of how your framework handles indexed properties would be appreciated.

Posted in Java at Feb 27 2004, 05:18:10 PM MST 2 Comments