Hibern8 IDE
Max Andersen created a quick'n'dirty Hibern8 IDE in less than 3 hours tonight. For your viewing pleasure, he also created a viewlet. Very cool Max!
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 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.
Max Andersen created a quick'n'dirty Hibern8 IDE in less than 3 hours tonight. For your viewing pleasure, he also created a viewlet. Very cool Max!
I missed last week (Week 4, PosgreSQL), but I'm back this week - ready to report. I'm presenting next week on "remember-me" and XDoclet, so I'm working frantically trying to get AppFuse up-to-snuff to use as a lab template. Hopefully, I'll have that done by tomorrow night, as well as the lab and presentation.
Today's presentation is from James Turner on Indexed Properties and Validation. Awesome - I need this in my day job's project starting next week! Good timing, eh?!
So how do you use indexed properties in Forms? Two ways: Simple arrays of strings and arrays of beans (recommended). Here's a good tip - if you're using DynaActionForms, you can access a property in JSTL using {form.map.propertyName}
. I did not know that - thanks James! Lots of good stuff in this one (too much to write down), I hope this preso is available online and a demo app goes with it. To validate simple array of strings, add indexedlistProperty
to your <field> in validation.xml (you must also specify the property). If you're validating beans, use property="propertyName" and indexedListProperty="beanName".
However, do you really want to require all fields of your child beans? No, probably not. You (most likely), just want to require fields if some fields are populated. Struts provides us with the requiredif
validator. No JavaScript validation exists for requiredif at this time. Hmmm, I wonder if XDoclet can generate indexed validation rules. Here's an example of how to do this with the current 1.1 RC1 Release.
<form name="myForm"> <field property="lastName" indexedListProperty="person" depends=""> <arg0 key="label.lastName"/> </field> <field property="firstName" indexedListProperty="person" depends="requiredif"> <arg0 key="label.firstName"/> <var> <var-name>field[0]</var-name> <var-value>lastName</var-value> </var> <var> <var-name>fieldIndexed[0]</var-name> <var-value>true</var-value> </var> <var> <var-name>fieldTest[0]</var-name> <var-value>NOTNULL</var-value> </var> </field> ... </form>
Note that the [0] is NOT an indicator of which indexed property to validate. RequiredIf is powerful but ugly, so James wrote something better. Unfortunately, it's too late for 1.1 and will be added for the 1.2 release. Sounds like most folks that use the Validator will be using a nightly build for awhile ;-). The new validator is called "validwhen," and looks as follows:
<field property="firstName" indexedListProperty="dependents" depends="validwhen"> <arg0 key="dependentListForm.firstName.label"/> <var> <var-name>test</var-name> <var-value>((dependents[].lastName == null) or (dependents[].firstName != null)) </var-value> </var> </field>
Fricken sweet! James is sending me the code - cool! This will make my life soooooo much easier next week. Status of Struts 1.1 from James: they're working on getting the commons packages to a release state. Slides from today will be available at strutskickstart.com later this afternoon.
Sweeettt!!! Hopefully the release cycle will now slow down a bit so I don't have to keep installing Release Candidates every week. If you're a enthusiastic Eclipse user like me, be sure and read what's New and Noteworthy in 2.1. [Download Now]
Thanks to Andres Bonifacio for the tip.
Read this - sounds cool! If only it where true, that would rock. However, it's a featured story from Weekly World News, which we all know is a bunhc of horse pucky.
NEW YORK -- Federal investigators have arrested an enigmatic Wall Street wiz on insider-trading charges -- and incredibly, he claims to be a time-traveler from the year 2256! [more...]
I'm in the midst of a small redesign of an application's UI for a client. The previous (and current) design uses an <iframe> to display most of the content in the app (it's an e-learning app). The driving forces behind the re-design are to 1) make the UI fluid rather than fixed height/width, and 2) make the application work on Opera 6 on Linux.
The re-design began with them sending me some screenshots of proposed layouts, and I used that to formulate what you see today. Basically, what they (and I) was hoping to accomplish was a fixed header/footer height and a fluid center. I tried doing this with an iframe, but had inconsistence results. So I tried consulting the experts. No one seemed to have a solution - and it seems that a fixed header/footer, fluid center is not possible with XHTML. So I resorted to using frames, which is what you see now. The reason I'm writing this post is to express my frustration with frames and the current XHTML Standards. You basically start a framed page with a <frameset> right? Any of you that have worked with frames know that it's a headache to get framespacing correct between all the browsers you need to support. Throw Netscape 4 into the mix, and consistency is virtually impossible. The problem with a frameset in XHMTL is that there are no supporting attributes for eliminating a frameset's spacing or border. From looking at the XHTML DTD, you can see that our old friends frameborder (="0" needed for Mozilla) and border (="0" needed for Opera) are missing:
<!ATTLIST frameset %coreattrs; rows %MultiLengths; #IMPLIED cols %MultiLengths; #IMPLIED onload %Script; #IMPLIED onunload %Script; #IMPLIED >
So I ended up following Zeldman's advice and K10K's examples and adding these attributes in. Why? Because they work to achieve the results I want. It doesn't validate, but it does work, so I'm going with it. If anyone has any alternatives to achieve borderless frames with CSS, please let me know.
The cool part about this post is that I get to tell you that the device we're targeting with Opera 6/Linux is the FreePad - a type of Tablet PC, but more like a wireless browser. Looks cool, that's for sure - and it's possible I'll even get a demo machine to test the new layout on.
FreeRoller is going to have a new home. The JavaLobby has offered to host FreeRoller on one of there servers which is significantly more powerful than "el crappo", the dinky box which currently hosts FreeRoller. In order to support the move FreeRoller will be going down for a little bit of time in the near future (probably today). Once FreeRoller is back up we will still be using "el crappo" until the DNS migration is complete, which will take a day or two. The DNS migration should be transparent though so the only outage will occur when we switch databases. [All Things Java]
I found this sweet job this morning. I submitted my resume, but, as most of you know, the hiring manager has probably received 1000+ resumes in his/her inbox today. So my question is - do any of you know any University of Miami folks that could get me an "inside track." Any help is appreciated.
I was hoping to use OSCache to cache my JSP pages to overcome my 15-seconds-to-load performance issue. I was hoping to simply place <cache:cache> tags around my entire Tile's baseLayout.jsp. However, I was disappointed to find that this did not work. I get this nice error message:
Can't insert page '/common/header.jsp' : Illegal to flush within a custom tag
I even tried it just surrounding my 200+ row table of indexed properties, but no dice, same error. Oh well, onto caching with Hibernate's JCS support.
I'm sure all of you have wondered what you should be getting paid for your services. Especially if you're a contractor. It sucks that you never know if someone is making more than you. In our society, it's sometimes taboo to discuss how much you make. That's why I like the Government Jobs - sure they pay less, but you know exactly how much everyone makes. Anyway, the purpose of this post is to point you to RealRates.com where you can see what other folks are getting paid. I encourage you all to add your rates. Moving to Florida doesn't look so bad when you search on Java and Florida.
I discovered this afternoon (after I got everything working - thanks to Jason's comment) that the main process in the webapp I'm building (day job) takes 15 seconds to process. It could be have something to do with the fact that the HTML page itself is 1.5MB of data (view-source, save as). And it's a very lightweight page as we're using strict XHTML and mucho CSS. So now it's time to start looking into caching frameworks. For the web/JSP side, I'll probably use OSCache. It's seems to be more tried and true, and commons-cache is still in the sandbox. If any of your have experience, chime in so I don't pick the wrong one! Another method I'm going to try is using JCS with Hibernate. Since I'm using XDoclet already, all I have to do is add the following to the top of my persistable objects.
@hibernate.jcs-cache usage="read-write"