Posted
June 30, 2009
at
Spring66
เป็นตัวอย่างที่จะใช้ในการ สอน(ไม่อยากเรียกสอนเลย) Spring Training Day 2 ครับอ่าน requirement ก่อนแล้วช่วยกัน ทำ Domain Class ออกมาหน่อยครับ ขอบเขตและความต้องการพื้นฐานของระบบ PetClinic แอพพลิเคชั่นนี้ต้องสามารถถูกใช้งานได้บนเวบเบราเซอร์หลักๆของโลก (IE6-8, Firefox 2.0 - 3.5, Safari และ Opera มากไปไหมครับ) ผู้ใช้ของระบบนี้ทั้งหมดเป็นพนักงานของคลินิคทั้งหมด โดยที่เจ้าหน้าที่ทุกคนสามารถ เรียกดู แก้ไข ปรับปรุง ข้อมูลของสัตวแพทย์ คนไข้ และ สัตว์เลี้ยง ได้ทั้งหมดโดยที่แอพพลิเคชั่นจะต้องมีความสามารถพื้นฐานดังนี้ Use Cases เรียกดู list ของสัตวแพทย์และความเชี่ยวชาญพิเศษสาขาต่างๆได้ เรียกดู ข้อมูลพื้นฐานต่างๆของเจ้าของ แก้ไข ข้อมูลพื้นฐานของเจ้าของได้ สามารถเพิ่มสัตว์เลี้ยงเข้าไปในบัญชีของเจ้าของได้ เรียกดูข้อมูลพื้นฐานของสัตว์เลี้ยงได้ แก้ไขข้อมูลพื้นฐานของสัตว์เลี้ยงได้ เรียกดูประวัติการเข้ารับการตรวจได้ เพิ่มประวัติการเข้ารับการตรวจได้ Business Rules มีข้อเดียวคือไม่สามารถมีสัตว์เลี้ยงชื่อซ้ำกันได้สำหรับเจ้าของหนึ่งคน
Posted
June 29, 2009
at
Grails66
Grails 1.2 Milestone 1 ออกแล้วจ้า ที่มา หลังจากที่ปล่อย Grails 1.1.1 เพื่อสนับสนุนการทำงานบน Google App Engine มาได้สักพัก ตอนนี้ก็ถึงเวลาที่ปล่อย Grails 1.2 M 1 ออกมากันบ้าง โดยส่วนหลักๆ ที่มีการเปลี่ยนแปลงคือ 1. Precompilation of Groovy Server Pages in WAR deployment ทำการ compile GSP ก่อนที่จะสร้าง WAR file ทำให้เวลาในการ deploy ลดลง 2. Names URL Mapping ซึ่งสามารถเชื่อมโยงกับ Dynamic Tag ในส่วนของ View ได้เลย เช่น link ดังตัวอย่าง name productDetail: "/showProduct/$productName/$flavor?" { [...]
Posted
June 24, 2009
at
Grails66
แนะนำ Grails Internals Handbook ที่มา :: http://github.com/dima767/grails-internals-handbook/tree เป็น community-driven book ที่อธิบายถึงการทำงานภายในของ Grails เพื่อจะทำให้สามารถอ่านและเข้าใจ code ของ Grails ได้ง่ายขึ้น หนังสือนี้จะถูกสร้างด้วย communities ดังนั้นเราๆ ท่านๆ สามารถมีส่วนร่วมโดยการ fork จาก repository บน github ตอนนี้หนังสือนี้ยังอยู่ในสถานะเริ่มต้นเท่านั้นครับ ดังนั้นถ้าเราๆ ท่านๆ ช่วยกันก็จะเสร็จเร็วขึ้นครับ จากที่เข้าไปดูจะมีอยู่ 4 บท ( เพียงเริ่มต้นเท่านั้น ) และยังเป็นแค่การร่างเอกสารหรือหนังสือขึ้นมาเท่านั้น ประกอบไปด้วย บทที่ 1 Start เกริ่นทั่วไป อธิบายหัวข้อต่างๆ ที่จะมีในหนังสือ บทที่ 2 Architecture Overview อธิบายถึงสถาปัตยกรรมของ Grails บทที่ 3 Grails Core อธิบายส่วนการทำงานหลักของ [...]
Posted
June 24, 2009
at
Grails66
รวบรวมบทสัมภาษณ์ของทีมพัฒนา rails, Groovy และ Griffon จากงาน JavaOne 2009 มาฝากครับ * Interview with Dierk Koenig (GinA, Groovy, Grails) * Interview with Danno Ferrin, James Williams (Griffon) * Interview with Graeme Rocher (Grails) * Interview with Dave Klein (Grails) * Interview with Geertjan Wielenga (Griffon) * Interview with Andres Almiray (Griffon) * Interview with Sven Haiges and Glen Smith (Grails) * Interview with Guillaume Laforge [...]
Posted
June 17, 2009
at
Spring66
เคยเขียนเรื่อง Spring JavaConfig ไปแล้วหนึ่งตอนแต่ไม่ได้ลงมือทำเพราะมันไปบ้า Spring Dynamic Module แต่อ่านไปอ่านมาตัวอย่างมันมี bug เลยขี้เกียจอ่านต่อ เลยไปรื้อ Spring JavaConfig ออกมาใหม่ พบว่าเอกสารเขียนก้าวหน้าไปได้เยอะมากและที่สำคัญ มีตัวอย่างแล้วนั่นคือ PetClinic นั่นเองอย่ารอช้า checkout ออกมาดู “อ่านไม่รู้เรื่อง” สิ่งแรกที่แว๊บมาในหัว เนื่องจากไม่รู้จะเริ่มจากตรงไหนดี เนื่องจากสมัยก่อนจะไปเปิดดู Application-Context.xml ก่อน แต่ตอนนี้มันไม่มีแล้ว แกะอยู่หลายนาทีก็พอคลำได้ แต่พบว่ามันใช้ Annotation แบบพิการไม่สุดตามวิธี Spring คือไม่ยอมใช้ Hibernate Annotation เพราะ ไม่อยากทำให้ Domain class แปดเปื้อน (แต่ที่อื่นนี่ เละไปด้วย Annotation และ abstract method) นี่ถือเป็นโอกาสที่ดีของผมครับ ที่จะรื้อ มันออกมาเป็นชิ้นๆ แล้วประกอบเข้าไปใหม่(Japanese Way) เพราะถ้าเราอยากเข้าใจการทำงานของมันก็ต้องลองประกอบเองด้วยมือ *** สามารถ download sourcecode มาสั่ง unit test ได้ครับที่ http://code.google.com/p/petclinic-java-config/ เรามาเริ่มเรียน Spring JavaConfig [...]
Posted
June 17, 2009
at
Spring66
สำหรับคนที่ใช้ spring framework เคยรู้สึกเหนื่อยใจมั้ย ตอนที่จะขึ้น project ซักอันนึงต้อง config มากมายมหาสารกว่า จะเริ่มลงมือเขียนโปรแกรมได้ โดยส่วนตัวผมวิธีที่ลัดขั้นตอนที่สุดก็คือ copy จากโปรเจ็คเดิมมาแล้วก็มาแก้ config ให้เข้ากับโปรเจ็คใหม่ แต่ก็นั่นแหละ ถ้าแก้ไม่ดีมันก็เหมือนวางยาตัวเองเข้าไปอีก แต่ตอนนี้เริ่มมีแสงสว่างปลายอุโมงค์ให้เห็นเพราะ spring source ได้ออก tool ตัวใหม่ชื่อ Roo มาให้เราๆท่านๆได้ใช้ แล้ว Roo คือ? “Interactive, lightweight, user customizable tooling, that enables rapid delivery of high performance enterprise Java applications” ทั้งหมดทั้งปวงนี้คือคำจำกัดความที่ Rod johnson พูดถึง Spring Rooในงาน springOne ซึ่งก็ถือได้ว่า เป็นการเปิดตัวอย่างเป็นทางการของ Roo หลังจาก ปล่อยให้ download มาลองใช้อยู่พักใหญ่ สิบปากว่าไม่เท่าลงมือมั่วดูผลลัพธ์ ลองกันเลยดีกว่าครับ 1.เริ่มจาก [...]
Posted
June 10, 2009
at
Django66
<!-- google_ad_section_start -->
@kowito ก่อหวอด
@roofimon อยากทำ benchmark วัดกันระหว่างหลายๆเทคโนโลยี แต่ใช้เป็นแต่ django อยากมาร่วมหรือเปล่าครับ ref
มีคนรับลูกทันที @icez @kowito @wiennat @nuboat @sugree @roofimon เท่าที่จับใจความ คงมีอย่างน้อยก็
<
p>
read more
Posted
June 09, 2009
at
Spring66
เป็นที่รู้กันมานานหลายปีแล้วว่า hibernate กับ spring ไม่ค่อยจะกินเส้นกันมานาน จนกระทั่งความไม่ลงรอยกันลามไปถึงขั้นแตกหักเมื่อ มีการด่าทอกันด้วยคำพูดที่รุนแรงในเวบบอร์ดของทั้งสองฝั่ง สุดท้ายทุกๆ thread ที่เกี่ยวกับ spring บนเวบบอร์ด hibernate ถูกลบทิ้ง ==” นั่นคือจุดเริ่มต้นหลังจากนั้น hibernate เข้าไปอยู่ภายใต้ร่มเงาของ Jboss และแน่นอน hibernate ย่อมได้เปรียบและหลังจากนั้นไม่นานทางทีมพัฒนา hibernate ได้ออก full stack web framework ชื่อ seam ออกมา(ไม่ใช่อื่นใด เพื่อลบ spring ออกจากแผนที่โลก)แต่สงครามไม่จบง่ายๆเนื่องจาก seam ออกตัวช้าไปนิดถึงแม้ว่าจะมีไอเดียที่ดีกว่าในบางมุม แต่ spring ล้ำหน้าไปไกลกว่านั้นแล้ว ล่าสุด Spring ปล่อย Product ตัวใหม่ออกมาอีกสมตัวคือ Spring Tools, Spring TM Server และ Spring Monitoring(Hyperic HQ) ทำให้แนวรบของสองบริษัทขยายออกเต็มรูปแบบเนื่องจาก TM Server คือ [...]
Posted
June 09, 2009
at
Spring66
ไม่แน่ใจว่าเรื่องนี้จะ มาอยู่ถูกที่ หรือเปล่าแต่ก็ เอาหล่ะในเมื่อ เป็นชาว spring66 ก็ไม่รูจะลงไว้ที่ไหนหล่ะครับ ว่าด้วยเรื่องของ Enterprise content management (ECM) กันก่อนเลย ก็ไม่รู้จะยังไง แปลตรงตัวกันเลยแล้วกัน มันก็คือ ระบบในการบริหารจัดการ content นั่นเอง โดยเมื่อพูดถึง ECM มันก็มี function การทำงานหลักๆ ดังนี้ - document management (DM) - collaboration (or collaborative software, groupware), - web content management (WCM) (including web portals), - records management (RM) (archive and filing management systems on long-term storage media), and - workflow/business process management (BPM). จริงแล้วตัวมันมีฟังชั่นการทำงานทั้งหมดที่ ECM [...]
Posted
June 03, 2009
at
Spring66
SpringPython เมื่อมีคนบ้าพลังนำแนวคิดของ Spring Framework และ Spring Security Framework เอาไปทำด้วยภาษาเทพอย่าง Python โปรเจคนี้ไม่ได้ทำการ Port โค้ดบรรทัดต่อบรรทัดเหมือน spring .NET แต่ในทางกลับกัน ทีมผู้สร้างนำแค่แนวคิดที่ดีต่างๆ ของ Spring ไปเขียนใหม่ด้วย Python แทน ความสามารถหลักๆ ณ ขณะนี้สิ่งที่ SpringPython ได้ทำไปแล้วมีดังนี้ Inversion Of Control-แนวคิดหลักที่เป็นหัวใจของ Spring คือการ decouple คลาสด้วยอินเทอร์เฟสซึ่งจะทำให้เราสามารถสร้างซอฟท์แวร์ในเชิงโมดูลมากขึ้นและนอกจากนี้เรายังสามารถใช้ PyContainerConfig และ PythonConfig เพื่อ plug สิ่งที่เราสร้างใน Python เข้าไปใน ApplicationContext ได้ Aspect Oriented Programming - SpringPython เตรียมกระบวนการการ wrap advice เข้ากับ objects ไว้หลายวิธีซีง AOP นั้นเข้ามาช่วยเราในเรื่องของการทำ remoting, debug และการวัดประสิทธิภาพ Database Template - [...]
Posted
June 03, 2009
at
Grails66
หายหน้าไปเพราะช่วงนี้กำลังยุ่งกับวิทยานิพนธ์พอสมควรครับ แต่ก็ได้เขียน ZKGrails plugin บ้าง เนื่องจากมีเมล์แจ้งให้แก้บั๊กอยู่เป็นระยะ ๆครับ พอดีกับเป็นช่วงที่คุณ Terashima จะไปบรรยายการใช้ ZKGrails ที่กลุ่มผู้ใช้เกรลส์ญี่ปุ่น ผมเลยได้โอกาสออกรุ่นใหม่ของ ZKGrails รุ่นนี้เป็นรุ่น 0.7.3 มีฟีเจอร์ใหม่คือ artifact แบบ Facade เพื่ออิมพลีเมนต์ Model Facade pattern สำหรับใช้โยงข้อมูลเข้ากับ GUI ให้ได้ดีขึ้น โดน Facade เป็น Spring bean ชนิด session scope ครับนอกจากนี้ก็มีการปรับปรุงความเข้ากันได้ของ ZK และเกรลส์ รวมทั้งการแก้บั๊กไปอีกหลายจุดครับ การติดตั้ง สามารถติดตั้งได้โดยตรงจากเกรลส์ด้วยคำสั่ง grails install-plugin zk สำหรับผู้ที่สนใจศึกษาตัวอย่างการใช้งาน Composer และ Facade ที่มีใน ZKGrails เพื่อสร้างเวบแอพพลิเคชั่นชนิด desktop สามารถดูได้จาก source code ตัวอย่างจากลิงค์ต่อไปนี้ครับ http://dl.getdropbox.com/u/381580/zkgrails/zk_grails_todo_v2.ziphttp://dl.getdropbox.com/u/381580/zkgrails/load_on_demand.tar.gz ปัญหาสอบถามไว้ได้ในกลุ่มผู้ใช้เกรลส์ในไทยครับ
Posted
June 01, 2009
at
Spring66
การใช้ Hibernate Template และ CallBack ใน Spring Framework จากตอนที่แล้วเราจะเห็นได้ว่า Spring เข้ามาช่วยเราในแง่ของการใช้งาน O/R ได้ง่ายและสะดวกมากขึ้นวันนี้เรา จะมาดูกันว่าใช้ Spring กับ Hibernate จะทำให้ง่ายขึ้นพียงใด ก่อนอื่นเรามาดูกันก่อนว่าในกรณีที่เราไม่ต้องการใช้สิ่งที่ Spring เตรียมมาให้หรือเรียกว่าใช้แบบบ้านๆเราต้องทำอะไรบ้างยกตัวอย่างที่เราต้องการเพิ่มและลบอะไรบางอย่างออกจากฐานข้อมูล ... ... public class HibernateCourseDao implements CourseDao { private SessionFactory sessionFactory; public HibernateCourseDao() { Configuration configuration = new Configuration().configure(); sessionFactory = configuration.buildSessionFactory(); } ... public void store(Course course) { Session session = sessionFactory.openSession(); Transaction tx = session.getTransaction(); try { tx.begin(); session.saveOrUpdate(course); tx.commit(); } catch (RuntimeException e) { tx.rollback(); throw e; } finally { session.close(); } } ... public void delete(Long courseId) { Session [...]
Posted
June 01, 2009
at
Grails66
Tip เล็กสะกิดใจ :: การสร้าง war file พอดีไปอ่านเจอบทความเกี่ยวกับการลดขนาดของ war file ที่สร้างจากชุดคำสั่งของ grails ถ้าใครเคยใช้คำสั่ง grails war จะรู้ว่าปัญหามันคือขนาดของ war file ที่ใหญ่มากๆ ใหญ่จนไม่น่าเชื่อ …. เห็นหลากหลายวิธีใน web ผมเลยมีดูว่าใน grails 1.1.x ว่ามีอะไรที่น่าสนใจหรือเปล่า คำตอบคือ มันมีทีเด็ดซะด้วยคือ ชุดคำสั่ง grails war –nojars โอ้วขอบอกว่ามันยอดมาก war file ที่ได้มาเนียนมากครับ ส่วน lib ต่างๆ ที่ใช้นั้น ก็ copy ไปไว้ใน Application/Web Server ให้หมดครับ ผมสรุปชุดคำสั่งในการสร้าง war file ไว้ให้นิดหน่อยดังนี้ - โครงสร้างของชุดคำสั่ง grails [environment]* war [arguments]* เช่น grails test war grails dev war grails prod war grails -Dgrails.env=UAT war grails war [...]
Posted
June 01, 2009
at
Spring66
แปลมากจากเอกสาร Spring Ref Manual ข้อดีของการใช้งานสปริงในมุมมองของการทำ ORM คือ ทดสอบได้ง่ายมาก: เนื่องจากด้วยแนวคิดพื้นฐานเรื่อง IoC ทำให้เราสามาระสลับการเข้าถึงฐานข้อมูลได้ง่ายมากระหว่างระบบที่ใช้ทดสอบและระบบที่ใช้งานจริงเช่นเราสามารถสลับคอนฟิกของ Hibernate SessionFatory, JDBC DataSource, Transaction Manager และแมปปิ้งออบเจค ได้งายมากๆ สิ่งนี้ทำให้เราสามารถแยกสภาพแวดล้อมการทำงานได้อย่างเด็ดขาดระหว่างการทดสอบและการใช้งานจริง จัดการเรื่อง Exception ต่างๆ(ORM แต่ละตัวจะมีกระบวนการเรียงร้อยและการจัดการกับ error ที่ต่างกัน)ให้อยู่ภายใต้กลุ่มที่ชื่อ DataAccessException ทำให้เราไม่ต้องเสียเวลานั่งจัดการเรื่อง Exception ต่างๆที่จะเกิดขึ้นและสามารถจับเออร์เร่อร์ได้อย่างมีประสิทธิภาพและทำได้ที่จุดที่ถูกต้องเสมอ นอกจากนี้ JDBC exception(dialect จำเพาะเจาะจงต่างของ Database) ต่างๆนั้นก็ถูกจัดให้อยู่ภายในระบบโครงสร้างเดียวกันด้วยทำให้เราสามารถทำงานบางอย่างผ่าน JDBC ด้วยโมเดลการเขียนโปรแกรมที่ถูกและดีอย่างที่ควรจะเป็น การจัดการเรื่องทรัพยากรต่างๆ โดยที่ Spring Application Context สามารถจัดการกับ Instance ของ Hibernate SessionFactory, JDBC DataSource นอกจากนี้ยังรวมไปถึง IBatis SQL Maps และทรัพยากรณ์ต่างๆที่เกี่ยวข้องอีกด้วยยกตัวอย่างเช่น ในกรณีที่โค้ดในแอพพลิเคชั่นของเราต้องใช้ Hibernate Session ร่วมกันเพื่อประสิทธิภาพในการทำงานและการจัดการ Transaction [...]
Posted
May 27, 2009
at
Spring66
แปลมาจาก Spring DM Ref Manual แนวคิดพื้นฐานขอ Spring DM ก่อนอื่นขอทบทวนเล็กน้อยเรื่องพื้นฐานอย่าง bundle และ services โมดูลต่างๆใน OSGi จะรู้จักกันในชื่อของ bundles โดยที่แต่ละ bundles จะเป็นการประกอบกันของ jar ไฟล์ (กระจุกของคลาสไฟล์) และมี manifest ไฟล์ (MEA-INF/MANIFEST.MF) และรีซอร์ซต่างๆที่จำเป็นต้องใช้ เฟรมเวิร์คนั้นมีหน้าที่ทำให้ bundles ถูกติดตั้งและทำงานได้ OSGi จะสามารถระบุตัวตนของ bundles ได้สองวิธีคือจากชื่อและid ของ bundles ซึ่งโดยปกติแล้ว bundle สามารถประกาศชื่อได้ในลักษณะนี้ Bundle-SymbolicName: org.foo.bundle นอกจากนี้ OSGi เฟรมเวิร์คยังทำหน้าที่แจกหมายเลขที่เราเรียกว่า “bundle id” ให้กับทุกๆ bundle ที่ถูกติดตั้งโดยที่ตัว OSGi เฟรมเวิร์คนั้นจะมีหมายเลขประจำตัวคือ 0 เรื่องต่อไปคือเรื่องการขึ้นต่อกัน(dependencies) ระหว่า bundle ต่างๆสามารถอธิบายได้สองมุมมองคือในเชิงของสถิตย์(statically)คือ package ส่วนในเชิงพลวัต(dynamically)คือ services เรื่อง package นั้นคนที่เป็น java [...]
Posted
May 26, 2009
at
Grails66
ผมเขียน presentation สำหรับการพัฒนา Grails Application เพื่อนำไป deploy บน Google AppEngine ไว้ส่วนหนึ่ง โดยตอนแรกจะนำไปพูดในงาน barcampbkk3 แต่ว่าวันนั้นผมไม่ตื่นเลยไม่ได้ไปงานครับ ใน presentation จะอธิบายการพัฒนาเป้นขั้นตอนแบบง่ายๆ ครับ Grails On Gae View more OpenOffice presentations from up1.
Posted
May 21, 2009
at
Spring66
แปลมาจาก OSGi in a nutshell อีกบทความที่เนื้อหาในส่วนี้คือการแสดงให้เห็นภาพกว้างๆของ OSGi รายละเอียดเชิงลึกสามารถอ่านได้จากเอกสาร OSGi specification OSGi specification เอกสาร OSGi Spec นี้อธิบายว่า OSGi Service Platform ประกอบไปด้วยสองส่วนใหญ่ๆคือ OSGi Framework และอีกส่วนคือการกำหนดเซอร์วิสมาตรฐาน โดยที่ตัวเฟรมเวิร์คนั้นจะทำงานอยู่บน JVM ซึ่ง JVM นี้ถือเป็นสภาพแวดล้อมที่ใช้ทำงาน (Execution Environment) สำหรับเซอร์วิส ที่ ณ จุดเริ่มต้นนั้น OSGi framework ถูกกำหนดให้ถูกใช้งานอยู่ในสภาวะแวดล้อมการทำงานที่จำกัด เช่น set-top box ในภาพประกอบที่ 1 อย่างไรก็ตาม OSGi ยังสามารถถูกใช้งานในโดเมนอื่นๆได้อีกเช่นกันยกตัวอย่างเช่นทำเป็นโครงสร้างพื้นฐานของ Eclipse 3.0 Figure 1. OSGi overview The OSGi framework ภายในเฟรมเวิร์คเองยังถูกแบ่งออกเป็นสองส่วนด้วยกันคือ: • เซอร์วิสแพลทฟอร์ม (Service Platform) • โครงสร้างพื้นฐานการเพื่อการติดตั้ง(Deployment infrastructure) Services Platform นิยามของคำว่าเซอร์วิสแพลทฟอร์มคือแพลทฟอร์มที่รองรับการทำงานเชิงเซอร์วิสตามภาพประกอบที่ 2 โดยที่มีเพียง [...]
Posted
May 21, 2009
at
Spring66
พยายามหาเอกสารพิ้นฐานเรื่อง OSGi แต่หายากมากมีอยู่ที่เดียวคือที่เวบ http://www.osgi.org/About/WhatIsOSGi อ่านไปงงไปแต่ดีที่สุดเท่าที่หาได้แล้วครับ การถอดความเป็นไปอย่างยากลำบากเพราะสำนวนเทพมากประกอบกับความรู้ยังไม่มากนัก แต่ก็อ่านกันไปก่อนนะครับ คาดว่าเข้าส่วนของ tutorail แล้วคงจะเห็นภาพมากขึ้น ส่วนประกอบหลักของ OSGi นั้นประกอบไปด้วย 7 ส่วนด้วยกัน Bundles - คือคอมโพเนนท์ของแอพพลืเคชั่นที่สร้างขึ้นเพื่อนำไปติดตั้งบน OSGi Services - ส่วนเชื่อมต่อกับ Bundle ที่ต่อกันแบบพลวัตเพื่อทำให้เกิดสภาพแวดล้อมแบบ publish-find-bind สำหรับการ plain old Java objects. Life-Cycle - เป็น API ที่ถูกติดตั้งเพื่อใช้ในการทำ install, start, stop, update และ uninstall bundles. Modules - ที่ชั้นนี้เป็นชั้นที่ถูกสร้างเพื่อกำหนดกระบวนการว่าโค้ดของ Bundle จะถูก import และ export อย่างไร Security - ชั้นนี้ชัดเจนเรื่องของระบบรักษาความปลอดภัย Execution Environment - สภาพแวดล้อมในการทำงานชั้นนี้จะทำหน้าที่เตรียมและกำหนดว่ามีคลาสและเมธอดใดบ้างที่สามารถใช้งานได้ ส่วนต่อไปคือรายละเอียดแบบเจาะลึกของส่วนต่างๆ Modules แนวคิดพื้นฐานที่ทำให้ระบบของเราสามารถมีความเป็น Modularity ซึ่งเรื่องของ Modularity นั้นก็เป็นเรื่องง่ายๆคือ [...]
Posted
May 20, 2009
at
Spring66
แปลจาก เโดอกสาร ของ Sunil Patil, JavaWorld.com, 03/04/08 Hello, OSGi, Part 1: Bundles for beginners เรื่องของ Open Services Gateway Initiative(OSGi) เป็นสถาปัตยกรรมที่ถูกออกแบบมาเพื่อรองรับการพัฒนาและติดตั้งแอพพลิเคชั่นหรือไลบราลี่ให้อยู่ในรูปแบบของโมดูล เอกสารชุดแรกนี้จะเป็นเรื่องของการแนะนำให้รู้จัก OSGi โดย Sunil Patil จะนำท่านเข้าสู่โลกของการพัฒนาแอพพลิเคชั่นด้วย OSGi ด้วยการสร้างสุดยอดแอพพลิเคชั่นชื่อ HelloWorld ด้วยการใช้ Eclipse OSGi ชื่อ Equinox นอกจากนี้เรายังจะได้รับความรู้เกี่ยวกับ service-oriented application ด้วยการใช้ OSGi และแนะนำเล็กน้อยเกี่ยวกับ OSGi ServiceFactory และ ServiceTracker คลาส อีกครั้งกับ Open Service Gateway Initative(OSGi) ตัวมันนั้นคือสิ่งที่ทำให้ Java สามารถทำ Dynamic Module ได้หรือเรียกอีกอย่างว่าสถาปัตยกรรมการพัฒนาแอพพลิเคชั่นเชิงมอดูลา ปัจจุบันเองมี [...]
Posted
May 18, 2009
at
Spring66
แปลมาจากเอกสาร LinkedIn Ensure Positive User Experience with Spring LinkedIn ออนไลน์เน็ทเวิร์คที่มีคนใช้มากกว่า 34 ล้านคนทั่วโลก LinkedIn มีบริการหลักคือการเชื่อมโยงคนด้วยรายละเอียดและความสามารถทางธุรกิจเข้าด้วยกันทำให้ผู้คนและบริษัทต่างๆสามารถเชื่อมโยงถึงกันได้ในรูปแบบที่ไม่เคยมีมาก่อน ทำให้ LinkedIn กลายเป็นผู้นำทางด้านเน็ทเวิร์คทางธุรกิจ ความท้าทาย กระบวนการพัฒนาซอฟท์แวร์รูปแบบเดิมนั้นจะเน้นไปที่การผูกคอมโพเนนท์ต่างๆเข้ากันด้วยมือ แต่เมื่อเวลายังคงเดินไปและเทคโนโลยีเปลี่ยนแปลงไปทำให้บริษัทตัดสินใจเปลี่ยนมาใช้สปริง ผู้นำอย่างไม่เป็นทางการในเรื่องของแพลทฟอร์มแบบเอ็นเทอร์ไพรส์ใน java และความท้าทายใหม่ก็คือจะเปลี่ยนแปลงสิ่งเดิมที่มีอยู่ได้อย่างไร” มีโค้ดปริมาณมหาศาลที่ถูกพัฒนาขึ้นด้วยวิธีการเดิมๆ ซึ่งสามารถนำมา reuse ได้น้อยมาก” เสียงจาก Yan Pujante, Distinguished Software Engineer และหนึ่งในผู้ก่อตั้ง LinkedIn ”แน่นอนเมื่อระบบ เติบโต ขึ้นทุกวันส่งผลให้การร้อยคอมโพเนนท์ด้วยมือหรือการทำ hard-code wiring นั้นเป็นเรื่องที่สร้างปัญหามากในแง่ต่างๆ ไม่ว่าจะเป็นการดูแลระบบ การจัดการเรื่องคอนฟิกกูเรชั่นต่างๆ” Pujante ได้ยกตัวอย่างการทำงานขึ้นมาหนึ่งอย่างที่เป็นงานที่ยากมากเมื่อเราทำด้วยมือ นั่นคือการปิดโพรเซสของแอพพลิเคชั่นในขณะที่ยังมีโพรเซสอยู่ในคิว ดังนั้นการทำ clean shutdown จึงเป็นเรื่องที่แทบจะเป็นไปไม่ได้ในการทำงานแบบเดิม เนื่องจากเราไม่รู้ว่ามีคอมโพเนนท์อะไรเชื่อมต่ออยู่บ้าง ดังนั้น LinkedIn จึงต้องการ อะไรบางอย่างที่สามารถเข้ามาช่วยแก้ปัญหาเหล่านี้ นอกจาก Spring แล้วทางทีมงาน LinkedIn ก็ยังสนใจ EJB ด้วยเช่นกัน “หลังจากศึกษาแล้วทางทีมงาน [...]