Grails SQL date formatting tag lib
Mình đang tập tọe học Groovy và Grails nên chẳng rành lắm. Khi thử các ví dụ của Grails, một trong những câu hỏi là làm sao customizing layout và formatting của data cho phù hợp với yêu cầu của KH là các cty nước ngòai ỏ Việt Nam (trong nội bộ thì dùng format của Mẽo, nhưng giao diện cho KH trên web và thư từ, báo cáo cho các quan chức thì dùng format VN)? Câu trả lời cuối cùng là customizing Grails tags cho phù hợp. Điều may mắn là tạo tag lib cho Grails rất dễ, nên việc này không hề là “niềm đau chôn dấu” nhưng khi tạo JSP hay JSF tag lib.
Ví dụ: sau đây là tag lib để format date, trích từ http://douglasfils.blogspot.com/2007/09/grails-sql-date-formating-lib.html
Been working with Grails more and created a little tag lib I thought I would post up for others. The date that comes out of the domains is a rather ugly SQL date style so I create a tag lib with the following code:
def formatSqlDate = { attrs ->
def String startdatetime = "${attrs['targetDate']}"
def DateFormat odf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.S");
def DateFormat df = new SimpleDateFormat( "MMM d, ''yy" );
out << df.format(odf.parse(startdatetime))
}
Then I can simple reference it with:
<g:formatsqldate targetdate="${domain.dateObject}">A person can mode the date format string all they want and also could put in various cases or a flag to select a format style if they wished.
Chi tiết cách tạo và khai báo 1 tag lib trong Grails, mời các bạn đọc trong tài liệu đi kèm với Grails
Phát hành GWT 1.4 – thêm nhiều widgets, khởi động nhanh hơn và các nâng cấp khácD
GWT 1.4 đã chính thức phát hành.
Có rất rất nhiều tính năng mới trong GWT 1.4, sau đây chỉ là một số tóm tắt các nâng cấp quan trọng của GWT 1.4
Bạn quan tâm đến hiệu quả của hệ thống (performance)? Phiên bản này bao gồm nhiều đột phá mớ, làm cho việc biên dịch GWT code nhanh hơn và nhỏ hơn một cách rõ rệt. Đã có nhiều người dùng báo cáo rằng ứng dụng dùng GWT của họ giảm kích thước tới 30% và nhanh hơn 20%-50% chỉ đơn giản bằng cách tái biên dịch ứng dụng (recompile). Riêng thời gian khởi động ứng dụng cũng đã được tối ưu cao độ, nhờ vào kỹ thuật bootstrapping mới và tính sẵng sàng (availability) của các file ảnh đi kèm (image bundles)
Bên cạnh cải tiến về thời gian khởi động ứng dụng. GWT code dùng kỹ thuật cache để ngăn ngừa các ứng dụng gọi các yêu cầu HTTP không cần thiết. Như cách nói của Joel Webber (Tech Lead của GWT Core Libraries) : “Các yêu cầu HTTP nhanh nhất là các yêu cầu mà không thực sự xảy ra”. (Có mà như không
)
Sau đâu là các tóm lược một cách tổng quan về các nâng cấp chính của phiên bản này:
Các widgets và thư viện (librarie) mới:
- RichTextArea, HorizontalSplitPanel và VerticalSplitPanel, SuggestBox, DisclosurePanel, PushButton, ToggleButton, và một nâng cấp về Image widget giúp việc tạp các ứng dụng cao cấp một cách dễ dàng chưa từng có!
- ImageBundle tự động gói nhiều ảnh trong một yêu cầu HTTP duy nhất.
- NumberFormat (định dạng số) và DateTimeFormat (định dạng ngày) giúp việc lập trình các ứng dụng cho các ngôn ngữ không phải tiếng Anh trở nên dễ dàng.
- Cuối cùng thì bạn đã có thể dùng java.lang.Serializable với GWT RPC, và GWT RPC server-side subsystem không còn bị trói chặt với servlets. Bạn có thể dễ dàng kết nối (wire) với bất kỳ nền tảng Java back-end (Java back-end infrastructure). Những thảo chương đam mê Spring bây giờ có thể vui mừng thưởng thức.
- Một sub-system benchmarking dựa trên JUnit giúp cho việc định lượng và so sánh tốc độ của các đoạn code trở nên dễ dàng như việc viết các unit test.
Thêm nhiều lựa chọn cho việc deployment (tiếng Việt dùng từ gì vậy ta???) và tối ưu (optimizations)
- Thêm các GWT module vào một trang HTML từ bây giờ trở nên vô cùng dễ dàng: chỉ cần thêm một tag <script>.
- Bạn có thể dùng GWT module xuyên domain (across domain). Chúý rằng việc sử dụn(include) scripts từ các site khác mà bạn không hoàn tòan tin tưởng là một mối nguy về mặt an toàn (security risk).
- Các file JavaScript ngoại lai (external JavaScript) được các GWT của bạn tham chiếu tới sẽ được tải lên đồng thời, thế nên các hàm dùngđể kiểm tra tính sẵn sàng của các JavaScript ngọai lai sẽ không còn cần thiết.
- Các RPC whitelist file được tạo tự động giờ đây được sản sinh trong quá trình biên dịch, giúp bắt được các hồi ứng không mong muốn(accidentally responding) với các đối tượng GWT đã được biên dịch trước đó không thể deserialize (tiếng Việt là gì vậy ta???)
- Bản phân phối GWT giờ đây đã bao gồm DTD cho GWT module XML format, giúp dễ dàng hơn trong khi cấu hình các module trong một XML editor hiểu DTD.
Nếu bạn quan tâm đến GWT, hẳn các bạn cũng sẽ quan tâm đến gwt-ext cũng như nghía qua GWT-EXT show case.
Posting source code trên WordPress
Sau bao ngày chờ đợi, bực mình, than phiền… cuối cùng chức năng cho phép post source code trên WordPress đã có. Hãy xem hướng dẫn của Matt, tác giả.
CSS Coding
Hầu hết các lập trình viên đều khá…lười khi phải làm công việc “mông-má” trang web của mình, nhất là những ai quen với việc chăm chú làm các chức năng có liên hệ đến database/backend. Nhưng việc này lại là khỏan ăn điểm và làm cho trang web dễ thành công (thu hút hơn). Nếu coding web hợp lý và với chủ định dùng CSS ngay từ đầu thì việc “mông má” cũng không đến nỗi là tai họa. Vậy, với CSS ta có thể làm được gì? Hãy xem trong các bài dưới đây để thấy khả năng của CSS:
- 70 ý tưởng của các chuyên gia CSS cho công việc lập trình (hay thiết kế?) CSS: http://www.smashingmagazine.com/2007/05/10/70-expert-ideas-for-better-css-coding/
- 53 Kỹ thuật không thể thiếu trong thiết kế CSS: http://www.smashingmagazine.com/2007/01/19/53-css-techniques-you-couldnt-live-without/
Blog hay về vấn đề support Unicode trong Java và các công nghệ liên hệ đến Java trên web
Khi cần lập trình web dùng công nghệ của Java, một trong những câu hỏi thường thấy trong các forum, kể cả forum của cộng đồng Java Việt Nam đó là làm thế nào để hiển thị tiếng địa phương (tiếng Việt chẳng hạn) trên web dùng java, CSDL là Oracle chẳng hạn. Ngoài các bài có sẵn trong site của sun về Java hay trong các site của Oracle, một số tác giả có nhã ý chia sẻ như trong blog của Kieran.
Có thể xem thêm ở đây để hiểu một cách nhanh nhất về Unicode.
Muốn tự lập trình về encoding UTF8? Xem thêm ở đây. Nói cho vui thôi, chứ thấy là sợ rồi còn đâu
.
Seamless JSF, Part 1: An application framework tailor-made for JSF
Discover Seam’s unique enhancements to the JSF life cycle
JavaServer Faces (JSF) is the first standardized user interface framework for Java™ Web applications. Seam is a powerful application framework that extends JSF. Discover the strong chemistry that these two frameworks share in this first article of a new three-part series. Dan Allen introduces Seam’s enhancements to the JSF life cycle, including contextual state management, RESTful URLs, Ajax remoting, proper exception handling, and convention over configuration.
Groovy và database persistence
Những người chuộng java thường có khuynh hướng không thích các ngôn ngự tựa script (scripting languages) dạng trình thông dịch. Tuy nhiên, trong chính Java cũng đang phát triển mạnh khuynh hướng dùng ngôn ngữ dạng thông dịch hay biên dịch khi cần để phát triển các phần như prototype hay các mainternance scripts. Groovy là một ngôn ngữ có sức mạnh của Java nhưng có sự đơn giản của VB.
Sau đây là một vài bài(hoặc blog) về các ứng dụng của Groovy trong việc giải quyết các bài toán cụ thể:
I. Groovy và database persistence:
- Groovy kết hợp với JPA: http://www.curious-creature.org/2007/03/25/persistence-made-easy-with-groovy-and-jpa/
- Groovy kết hợp với Hibernate và JPA: http://www.mojavelinux.com/blog/archives/2007/05/putting_entities_to_rest_with_groovy_hibernate_and_jpa/#more
- Kết hợp Groovy, Spring vào việc config Java: http://www.jroller.com/buggybean/entry/using_groovy_spring_and_javaconfig1
- sdfsd
II.
OracleXE và Windows Vista
Cuộc sống đúng là muôn màu muôn vẻ
. Học và làm Java chết bỏ, nhưng cũng chẳng được phép bỏ .NET. Một trong những vấn đề mình đang phải giải quyết là làm sao cài OracleXE trên Windows Vista vì một chương trình cài sẵn trên máy laptop cần OracleXE.
Sau đây là một số giải pháp có được từ giải pháp Google:
- Từ một chuyên gia của Oracle :Getting Ready for Windows Vista
- Từ Oracle user group: http://www.psoug.org/reference/vista.html
Ai có giải pháp tốt cho vấn đề này, vui lòng cho biết. Xin cảm ơn.
Java Web Frameworks và XSS (Cross-site scripting)
Matt Ribble có một ghi nhận rất đáng chú ý về lỗi XSS của các java web frameworks. Chi tiết có thể xem tại đây: http://raibledesigns.com/rd/entry/java_web_frameworks_and_xss
Một entry đáng chú ý khác về vấn đề này có thể xem trong http://www.sleberknight.com/blog/sleberkn/entry/20060721
Thật thú vị
khi mọi người luôn có xu hướng tin tưởng vào khả năng chống XSS của java!