HOME >> Java
Showing posts with label Java. Show all posts

Agile là gì?

Agile là tên viết tắt của cụm từ tiếng anh (Agile Software Development), nó là một phương phức hay mô hình phát triển phần mềm (kiểu kiểu như mô hình thác phát triển phần mềm thác nước walterfall) do mốt nhóm 14 nhân vật hàng đâu trong ngành công nghiệp phần mềm.

Tiêu chí của mô hình Agile là làm sao để đưa ra sản phẩm đến tay người tiêu dùng càng nhanh càng tốt, càng sớm càng tốt và theo thống kế trên thế giới thì nó hiệu quả hơn, linh hoạt hơn so với các mô hình phát triển phần mềm trước đó như là "thác nước waterfall" hay "CMMI".

Về cơ bản mô hình phát triển phần mềm Agile là tập hợp các phương thức phát triển vòng lặp nhưng tăng dần trong đó yêu cầu và giải pháp được phát triển thông qua sự cộng tác liên tục của các thành viên trong nhóm (bao gồm lập trình viên, IT, Tester và cả khách hàng) và đặc biệt là công việc được nhóm tự quản và phân chia.


Định nghĩa thi có vẻ khó hiểu nhưng khi đi vào tuyên ngôn của Agile thì rất dễ hiểu, trước khi đi tiếp thì mình xin nói chung chung một chút cách hiểu của mình về Agile.

Agile là mô hình làm việc tương tác giữ người với người chứ không phải giữa người với qui trình, tài liệu, mô hình, ví như khách hàng kêu tôi làm cái A tôi làm cái A không hiểu tôi hỏi liền khách hàng ở bất kỳ thời điểm nào của dự án, hay tại bất kỳ thời điểm làm việc nào tôi cũng có thể nhờ khách hàng xem lại xem có đúng chưa? hay tôi nói với tester kiểm tra cho tôi A tại bất kỳ thời điểm nào tôi đang làm việc, hoặc tester báo bug tôi sẽ xử lý ngay và đưa cho tester xem tại chỗ, tương tự khách hàng cũng có thể yêu cầu thêm hay thay đổi tại bất kỳ thời điểm nào tôi đang làm việc mà yêu cầu này không ảnh hưởng tới tiến độ của dự án nếu ảnh hưởng thì tôi có thể trao đổi trực tiếp lại với khách hàng, và tất cả các quá trình này đều thực hiện qua giao tiếp. Chính vì thế theo tôi để thực hiện được mô hình này thì cần phải có các yếu tố sau:

Đầu tiên theo mình tiêu chuẩn đầu tiên cần phải có phải là sự tin tưởng giữa các thành viên trong nhóm bao gồm cả khách hàng, tại sao vậy? Vì tiêu chí của Agile không tập trung vào tài liêu, qui trình,... mà tập trung vào việc hoàn thành công việc, tuy nhiên nếu giả sử như có sự cố hay vấn đề gì đó phát sinh nếu mọi người chăm chăm tìm lỗi, trách nhiệm thuộc về ai, hoặc sau khi xảy ra sự cố thì lại bắt đầu yêu cầu qui trình xác nhận hay kiểm tra gì đó thì cũng chẳng khác nào quay về mô hình cũ. Bạn cũng xẽ thắc mắc nếu thật sự xảy ra trường hợp này thì sao, nếu xảy ra trường hợp này thì nói lên rằng bạn chưa được hiện đúng tiêu chí của Agile, như mình nói ở trên khách hàng, tester, lập trình, IT, là các thành viên trong nhóm làm việc liên tục để hoàn công việc trong quá trình làm việc xác nhận yêu cầu, kiểm tra lỗi, phát triển phần mềm, phần cứng luôn được liên tục mà đến cuối cùng vẫn xảy ra vấn đề thì phải xem lại vấn đề nằm ở đâu và điều chỉnh lại cho phù hợp.

Thứ 2 là tự giác & trách nhiệm & hỗ trợ làm việc cao, mỗi thành nhiên phải có tinh thần tự giác & trách nhiệm làm việc có tránh nhiệm và luôn luôn hỗ trợ đồng nghiệp, tại sao lại cần? Vì trong Agile công việc được tự các thành viên trong nhóm phân chia và xử lý, và khi hết việc thì phải lượm việc khác làm hoặc hỗ trợ đồng đội xử lý giải quyết vấn đề, vì vậy nếu không có tinh thần làm việc hay giúp đỡ đồng nghiệp thì không thể thực hiện được vì trong Agile chả ai bắt bạn đi làm việc cả mà tự bản thân bạn đi kiếm việc.

Thức 3 là chịu trách nhiệm chung, nói hơi cường điệu tuy nhiên đối với Agile việc nhóm bạn không hoàn thành công việc hay yêu cầu luôn phải là vấn đề của cả đội, điều này giúp tính tự giác của các thành viên trong nhóm được cao hơn, thí dụ thế này khi một dự án được phân cho nhiều người làm thì nếu ai không hoàn thành tốt thì chỉ người đó chịu tránh nhiệm, với Agile thì không cả nhóm phải chịu chính vì thế yêu cầu các thành viên có tính cảnh giác cao với các công việc chưa hoàn thành hay các vấn đề phát sinh của thành viên khác thì dụ thằng kia làm không tốt thì sẽ nhóm họp báo cáo, còn như mạnh ai mấy làm thì chắc ăn rằng chả ma nào đi nói làm gì cho mất công mất lòng. Điều quay lại vấn đề đầu tiên là phải có sự tin tưởng nếu ai đó thấy bạn làm không tốt nhắc nhở bạn thì bạn bực tức rồi thờ ơ làm cho xong việc hoặc chăm chăm tìm sai lầm của kẻ thù thì cũng không thể thực hiện mô hình Agile này được.

Trên đây là 3 tiêu chuẩn mà mình cho rằng cần phải có và cũng là khó nhất khi thực hiện Agile, mà công nhận nếu có hoặc ở một đội như vây thì tuyệt. Nói tào lao nãy giờ ^^! có thể sai hoặc đúng các bạn đọc xong cho qua xin đừng gạch đá, giờ để hiểu rõ hơn ta đi qua các khái niệm và tuyên ngôn của Agile.

Tuyên ngôn Agile

Theo tuyên ngôn Agile thì phương pháp phát triển phần mềm tốt hơn được xây dựng thông qua cách thức thực hiện tốt hơn và giúp đỡ những người khác thực hiện nó. Qua cách thức này, họ đã đánh giá cao:

  • Con người và sự tương tác tốt hơn quy trình và công cụ.
  • Phần mềm chạy tốt hơn là tài liệu đầy đủ.
  • Cộng tác với khách hàng tốt hơn là đàm phán hợp đồng.
  • Phản hồi với các thay đổi tốt hơn là bám sát kế hoạch.


Các giá trị trên chính là bốn giá trị cốt lõi của Agile. Các giá trị này được xây dựng dựa trên 12 nguyên lý:

  • Ưu tiên cao nhất của chúng tôi là thỏa mãn khách hàng thông qua việc chuyển giao sớm và liên tục các phần mềm có giá trị.
  • Chào đón việc thay đổi yêu cầu, thậm chí rất muộn trong quá trình phát triển. Các quy trình linh hoạt tận dụng sự thay đổi cho các lợi thế cạnh tranh của khách hàng.
  • Thường xuyên chuyển giao phần mềm chạy tốt tới khách hàng, từ vài tuần đến vài tháng, ưu tiên cho các khoảng thời gian ngắn hơn.
  • Nhà kinh doanh và nhà phát triển phải làm việc cùng nhau hàng ngày trong suốt dự án.
  • Xây dựng các dự án xung quanh những cá nhân có động lực. Cung cấp cho họ môi trường và sự hỗ trợ cần thiết, và tin tưởng họ để hoàn thành công việc.
  • Phương pháp hiệu quả nhất để truyền đạt thông tin tới nhóm phát triển và trong nội bộ nhóm phát triển là hội thoại trực tiếp.
  • Phần mềm chạy tốt là thước đo chính của tiến độ.
  • Các quy trình linh hoạt thúc đẩy phát triển bền vững. Các nhà tài trợ, nhà phát triển, và người dùng có thể duy trì một nhịp độ liên tục không giới hạn.
  • Liên tục quan tâm đến các kĩ thuật và thiết kế tốt để gia tăng sự linh hoạt.
  • Sự đơn giản – nghệ thuật tối đa hóa lượng công việc chưa xong – là căn bản.
  • Các kiến trúc tốt nhất, yêu cầu tốt nhất, và thiết kế tốt nhất sẽ được làm ra bởi các nhóm tự tổ chức.
  • Nhóm phát triển sẽ thường xuyên suy nghĩ về việc làm sao để trở nên hiệu quả hơn, sau đó họ sẽ điều chỉnh và thay đổi các hành vi của mình cho phù hợp.


Tuy nhiên xét theo một khía cách khác là quản lý dự án thì Agile có thể là chưa đủ vì vậy người ta đưa ra một tuyên ngôn khác để hỗ trợ cho tuyên ngôn Agile gọi là "tuyên ngôn tương hỗ" cái này thì mình không rành lắm copy & paste lại thôi :>>

Tuyên ngôn Tương hỗ

Trong khi Tuyên ngôn Agile giải quyết việc phát triển phần mềm thì "tuyên ngôn tương hỗ" tập trung nhiều hơn vào khía cạnh quản lý dự án. Theo Tuyên ngôn Tương hỗ, lãnh đạo dự án đã đạt được thành công trong việc chuyển giao kết quả thông qua việc họ:

  • Tăng tỷ lệ hoàn vốn đầu tư bằng cách biến những luồng giá trị liên tục thành trọng tâm của mình.
  • Chuyển giao những kết quả đáng tin cậy bằng cách lôi kéo khách hàng thường xuyên tương tác và chia sẻ quyền sở hữu.
  • Chờ đợi các bất ổn và quản lý chúng qua các phân đoạn, dự đoán và thích ứng
  • Giải phóng sức sáng tạo và đổi mới bằng cách công nhận rằng các cá nhân là nguồn gốc cao nhất của giá trị và tạo ra một môi trường nơi họ có thể làm nên sự khác biệt
  • Tăng hiệu suất thông qua phân nhóm trách nhiệm đối với các kết quả và chia sẻ trách nhiệm về hiệu quả của nhóm.
  • Nâng cao hiệu quả và độ tin cậy thông qua các chiến lược, qui trình và thực tiễn cụ thể trong từng tình huống.



Tham khảo: quanlyduan.edu.vn/



Đây là một trong bài viết tổng hợp và giải thích đơn giản các thuật ngữ công nghệ thông tin, máy tính, hay các thuật ngữ trên internet,... trong bài viết này mục tiêu của mình là giúp cho những bạn không thuộc lãnh vực này có nắm bắt và hiểu được các định nghĩa ở mức cơ bản.

Vì thế mình cố gắng giải thích một cách đơn giản nhất, dễ hiểu nhất. Tuy nhiên sẽ nhược điểm là sẽ không thể giải thích đủ hoặc chính xác hoàn toàn các thuật ngữ, vì muốn hiểu rõ chúng bạn cần phải học tập và tìm hiểu một cách chuyên sau hơn, tuy nhiên cũng không phải ai cũng cần biết chuyên sâu làm chi.

Nếu bài viết khó hiểu, hoặc bạn không hiểu một phần nào đó, hoặc sai, xin hãy phản hồi (comment) tại đây mình sẽ biên chỉnh lại cho phù hợp hơn, việc này sẽ giúp mình hoàn thiện bài viết hơn nữa, cảm ơn các bạn đã quan tâm.




Ví dụ MVC trong Java lập trình ứng dụng. (Java Application Hello World MVC example)

Như các bạn đã biết mô hình MVC thích hợp với việc thiết kế và xây dựng các wesite hoặc dịch vụ web, tuy nhiên nếu áp dụng đúng cách thì mô hình này cũng hoạt động rất tốt trong việc thiết kế và xây dựng cac ứng dụng desktop, tuy nhiên do ít người sử dụng trên các bài viết cũng như ví dụ demo minh họa việc áp dụng MVC vào Java Application rất ít trên internet.

Hôm trước tình cờ lượm được một mà nguồn minh họa MVC khá hay từ thằng bạn khá hay, công nhận hay thiệt :>> ví dụ này bạn sẽ dễ dàng hiểu hơn về MVC cũng như cách có thể áp dụng vào thực tế, cách code theo mô hình MVC...


Như các bạn thấy trong hình source code được phân bố cụ thể trong 3 package Model, View, và Control là:

  • JavaMVCModels: Đây là thành phần chứa tất cả các nghiệp vụ logic, phương thức xử lý, truy xuất database, đối tượng mô tả dữ liệu như các Class, hàm xử lý...
  • JavaMVCViews: Đảm nhận việc hiển thị thông tin, tương tác với người dùng, nơi chứa tất cả các đối tượng GUI như textbox, images...Hiểu một cách đơn giản, nó là tập hợp các form hoặc các file HTML.
  • JavaMVCControllers: Giữ nhiệm vụ nhận điều hướng các yêu cầu từ người dùng và gọi đúng những phương thức xử lý chúng... Chẳng hạn thành phần này sẽ nhận request từ url và form để thao tác trực tiếp với Model.

Giải thích nhiều thì dài dòng phức tạp bạn download source code về xem là hiểu liền hơn mì ăn liên, bạn dùng Netbeans để mở project nhé vì dự án được thực hiện trên NetBeans.











Tìm hiểu các giải pháp xây dựng ứng dụng trên nền liferay.

Hiện nay để xây dựng hệ thống portal có thể sử dụng các nền tảng như: DotNetNuke, Sharepoint, Liferay. Trong đó liferay đáp ứng đủ tiêu chuẩn portal, các giải pháp kia không mở hoàn toàn hoặc chưa thực sự đúng chuẩn portal.

Tại sao nên sử dụng liferay:

  1. Chính Phủ có nhiều chính sách khuyến khích phát triển portal trên nền liferay nói riêng và trên phần mềm mã nguồn mở nói chung. Cụ thể là được Bộ TT&TT khuyến khích sử dụng chọn làm giải pháp phát triển portal và đã được một số doanh nghiệp dùng làm công cụ phát triển các phần mềm liên quan chính phủ điện tử.
  2. Đây là hệ thống nguồn mở nên chi phí đầu tư cho hệ thống rất thấp, khả năng làm chủ và khai thác hiệu quả, thích ứng cho các ứng dụng riêng của địa phương, đi đúng hướng của Bộ quy định
  3. Liferay là cấu trúc mở, đáp ứng đủ các tiêu chuẩn của portal nên dễ dàng tích hợp được với một số công nghệ mở khác mang lại hiệu quả cao.
  4. Liferay có cộng đồng tương đối lớn và được xếp hạng đứng thứ 2 sau công nghệ portal của IBM (đây là portal mã nguồn đóng)
  5. Thực tế việc triển khai, ứng dụng liferay tại Việt Nam
  • Áp dụng vào mô hình xây dựng portal: Portal Hà Nội, Portal Phú Thọ (đây là 1 trong 7 sản phẩm nguồn mở của năm 2013 do VietSoftware xây dựng); Portal Đà Nẵng;
  • Áp dụng vào mô hình xây dựng ứng dụng chính phủ điện tử: OEP FlatForm, HCM Egov,..
  • Áp dụng vào mô hình xây dựng khác: trang thủ tục hành chính Phú Yên (thutuchanhchinh.phuyen.gov.vn), ..

Các giải pháp được sử dụng trong việc xây dựng ứng dụng trên nền tảng Liferay:



Mô hình triển khai các giải pháp trên nền tảng liferay

1. Giải pháp phát triển portlet:


Portlet là một web component được dùng để triển khai vào trong một portlet container và tạo ra nội dung động. Có thể xem Portlet như một application (hoặc plugin) để cài đặt (tích hợp) vào liferay. Kết hợp kỹ thuật service builder vào portlet để thao tác với cơ sở dữ liệu.

Kiến trúc portlet: Portlet có ít nhất 3 phần:
  • Phần 1: java source code : WEB-INF/src
  • Phần 2: các file config: WEB-INF/portlet.xml,liferay-portlet.xml,liferay-display.xml, liferay-plugin-package.properties
  • Phần 3: các trang client: .jsp, .css, .js, ….

Portlet là thành phần quan trọng trong các ứng dụng được xây dựng trên nền tảng Liferay.

2. Giải pháp đăng nhập 1 lần (SSO) và quản lý người dùng tập trung:


Để xây dựng các hệ thống lớn (hoặc hệ thống tích hợp) điều quan trọng là phải làm cách nào để có thể tích hợp dữ liệu, để từ đó có thể dùng chung giữa các hệ thống khác nhau. Do đó vấn đề đặt ra là:

  • Tích hợp tài khoản của người sử dụng (người dùng tập trung LDAP).
  • Chỉ đăng nhập 1 lần là có thể dễ dàng truy cập vào các hệ thống tích hợp khác (SSO)
 
Các công nghệ mở cho giải pháp này:
  • Đăng nhập 1 lần SSO: CAS Server (apereo.org/cas)
  • Người dùng tập trung: Apache Directory (directory.apache.org/studio/)

3. Giải pháp tích hợp kho chứa văn bản, tài liệu


Sử dụng phần mềm quản trị nội dung Alfresco (kho quản lý nội dung tương tác CMIS) làm kho chứa văn bản, hồ sơ, tài liệu cho lõi liferay và các ứng dụng tích hợp (sourceforge.net/projects/alfresco).


Ngoài ra có thể dùng các kho dữ liệu khác như: kho lưu trữ filesystem and advanced filesystem, kho JCR, kho S3 (kho lưu trữ nền tảng đám mây tên gọi là Amazon Simple Storage Service)….


4. Giải pháp thiết lập tiến trình công việc (workflow)

Luồng công việc (workflow) là quá trình thiết lập tự động hóa một phần hoặc toàn bộ công việc. Các quá trình tham gia workflow đều phải tuân theo một tập hợp quy tắc nhất định.

*Ví dụ:

a/ workflow cho quản trị bản tin:

Soạn tin -> Chờ duyệt -> Duyệt tin -> Xuất bản


b/ workflow cho nghiệp vụ xử lý văn bản dự thảo (trong ứng dụng văn phòng điện tử)

Tạo văn bản dự thảo -> Chuyển xử lý -> Phê duyệt -> Hoàn thành


Một số phần mềm mở để quản lý và triển khai workflow: Kaleo, jBPM, Activiti, Aperte.



Thực nghiệm dùng JBPM tích hợp làm Workflow

5. Giải pháp phân tích, khai phá dữ liệu

Pentaho (http://www.pentaho.com/) là phần mềm mã nguồn mở được sáng lập vào năm 2004 bởi Pioneer. Tích hợp pentaho vào nền tảng Liferay để giúp xử lý việc kết xuất report cho các ứng dụng tích hợp khác. Ngoài ra pentaho còn có nhiều tính năng khác.

6. Giải pháp cân bằng tải (Cluster)


Cân bằng tải là một phương pháp phân phối khối lượng tải trên các máy chủ chạy lõi liferay (hoặc các ứng dụng mở tích hợp vào liferay) để có thể sử dụng tối ưu các nguồn lực, tối đa hóa thông lượng, giảm thời gian đáp ứng và tránh tình trạng quá tải trên máy chủ.


Server Apache1 và server Apache 2 đóng vai trò là load balancing cho 2 server Tomcat 1 và Tomcat 2

Các lợi ích khi sử dụng phương pháp cân bằng tải:
  • Tăng khả năng đáp ứng, tránh tình trạng quá tải trên máy chủ, đảm bảo tính linh hoạt và mở rộng cho hệ thống.
  • Tăng độ tin cậy và khả năng dự phòng cho hệ thống:Sử dụng cân bằng tải giúp tăng tính HA (High Availability) cho hệ thống, đồng thời đảm bảo cho người dùng không bị gián đoạn dịch vụ khi xảy ra lỗi sự cố lỗi tại một điểm cung cấp dịch vụ.
  • Tăng tính bảo mật cho hệ thống:Thông thường khi người dùng gửi yêu cầu dịch vụ đến hệ thống, yêu cầu đó sẽ được xử lý trên bộ cân bằng tải, sau đó thành phần cân bằng tải mới chuyển tiếp các yêu cầu cho các máy chủ bên trong. Quá trình trả lời cho khách hàng cũng thông qua thành phần cân bằng tải, vì vậy mà người dùng không thể biết được chính xác các máy chủ bên trong cũng như phương pháp phân tải được sử dụng. Bằng cách này có thể ngăn chặn người dùng giao tiếp trực tiếp với các máy chủ, ẩn các thông tin và cấu trúc mạng nội bộ, ngăn ngừa các cuộc tấn công trên mạng hoặc các dịch vụ không liên quan đang hoạt động trên các cổng khác.


Tác giả: Bùi Thành Nhân




Làm thế nào để load data từ Oracle Database vào JTable

Trước hết, cái JTable của bạn phải được đặt trong một cái JScrollPane trước đã nhé.... Vì khi đặt trong JScrollPane thì cái Column Header nó mới hiện ra trên JTable được..... Giờ thì bắt đầu các bước load dữ liệu lên JTable.

Phần 1:

LấyData từ DB - Mỗi người mỗi khác :D ở đây mình dùng Oracle DB
private List getStudentsFromDB(){
        try {
            OracleDataSource source = new OracleDataSource();
            source.setURL("jdbc:oracle:thin:@localhost:1521/XE");
            Connection con = source.getConnection("sa", "123456");
            String sql = "SELECT StudentID, StudentName, Age, Address FROM Student";
            PreparedStatement pst = con.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
            List list = new ArrayList();
            while (rs.next()) {
                Student student = new Student(rs.getString("StudentID"), rs.getString("StudentName"), rs.getString("Age"), rs.getString("Address"));
                list.add(student);
            }
            return list;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }


Phần 2: Đưa Data lên JTable

Bước 1: Tạo mới một DefaultTableModel và khởi tạo nó trong Constructor
private DefaultTableModel model;

public Demo() {
model = new DefaultTableModel();
}

Bước 2: Tạo mới một Vector dùng để chứa Column Header và add Vector đó vào model để lát nữa show header
/* Tạo mới Vector chứa Column Header */
Vector column = new Vector();
column.add("Student ID");
column.add("Student Name");
column.add("Age");
column.add("Address");
/* Set Column Header lên DefaultTableModel */
model.setColumnIdentifiers(column);


Kết quả bước 2: Hình demo là thế. Chỉ khi nào xong bước 4 bạn mới thấy đc cái hình này.

Làm thế nào để load data từ Oracle Database vào JTable

Bước 3: Lấy từng row Data từ CSDL và đưa từng thông tin vào Vector
List list = getStudentsFromDB();
        for (int i = 0; i < list.size(); i++) {
            Student student = (Student)list.get(i);
            Vector row = new Vector();
            row.add(student.getStudentID());
            row.add(student.getStudentName());
            row.add(student.getAge());
            row.add(student.getAddress());
            model.addRow(row);
        }    

Bước 4 (Quan trọng): Set model cho Table - Không có bước này thì coi như từ đầu đến giờ làm hok có ý nghĩa gì.
tblStudent.setModel(model); 

Kết quả cuối cùng:  

Làm thế nào để load data từ Oracle Database vào JTable 001

Tóm tắt: 

Để Load đc data lên JTable chúng ta cần phải làm những việc sau:
  • Tạo DefaultTableModel cho JTable 
  • Tạo một Vector chứa thông tin Column Header 
  • Tạo Vector để chứa thông tin từng Row trên JTable 
  • Add Column và Row vào Model 
  • Set Model cho JTable 

FULL CODE:

package demo;

import java.awt.Dimension;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

import oracle.jdbc.pool.OracleDataSource;

public class Demo extends JFrame{
    private JTable tblStudent;
    private DefaultTableModel model;
    public Demo() {
        // TODO Auto-generated constructor stub
        /* START - Nếu dùng Netbeans thì không cần quan tâm đến đoạn này làm gì */
        tblStudent = new JTable();
        tblStudent.setPreferredSize(new Dimension(500,500));
        this.add(new JScrollPane(tblStudent));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.pack();
        this.setVisible(true);
      /* END - Nếu dùng Netbeans thì không cần quan tâm đến đoạn này làm gì */

        loadDataIntoJTable();  //đưa column name và data row lên JTable
    }

    private void loadDataIntoJTable(){
        model = new DefaultTableModel();
        //Set Column Title
        Vector column = new Vector();
        column.add("Student ID");
        column.add("Student Name");
        column.add("Age");
        column.add("Address");
        model.setColumnIdentifiers(column);
        List list = getStudentsFromDB();
        for (int i = 0; i < list.size(); i++) {
            Student student = (Student)list.get(i);
            Vector row = new Vector();
            row.add(student.getStudentID());
            row.add(student.getStudentName());
            row.add(student.getAge());
            row.add(student.getAddress());
            model.addRow(row);
        }

        tblStudent.setModel(model);
    }

    private List getStudentsFromDB(){
        try {
            OracleDataSource source = new OracleDataSource();
            source.setURL("jdbc:oracle:thin:@localhost:1521/XE");
            Connection con = source.getConnection("sa", "123456");
            String sql = "SELECT StudentID, StudentName, Age, Address FROM Student";
            PreparedStatement pst = con.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
            List list = new ArrayList();
            while (rs.next()) {
                Student student = new Student(rs.getString("StudentID"), rs.getString("StudentName"), rs.getString("Age"), rs.getString("Address"));
                list.add(student);
            }
            return list;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        new Demo();
    }
}



Source: http://congdongjava.com

[Swiss Post Solutions Việt Nam] Thông báo tuyển dụng - Vị trí: Lập trình viên JAVA - Làm việc tại phòng Kỹ thuật (Technology – Lầu 8, ICT).

Bạn có cơ hội để làm việc với khách hàng để cải tiến cũng như phát triển hệ thống của khách hàng. Bạn có kiến thức tốt, kinh nghiệm làm việc về Java. Bạn có khả năng về giải thuật, trí tuệ nhân tạo. Cơ hội để tạo sự khác biệt: Ứng dụng những công nghệ mới để cải tiến hệ thống hiện tại, tạo nên những hệ thống nhanh vận hành nhanh hơn, ổn định hơn, thông tin hơn.


1. Nhiệm vụ
  • Làm việc với vị trí Lập trình viên phần mềm trên nền ứng dụng Desktop/ ứng dụng Web sử dụng công nghệ Java và mã nguồn mở.
  • Phân tích những yêu cầu của hệ thống
  • Tham gia vào việc thiết kế và thực thi hệ thống
  • Tìm hiểu, đánh giá, thực thi những công nghệ mới phù hợp với yêu cầu của dự án
  • Làm việc với thành viên khác của nhóm để đảm bảo tất cả yêu cầu của khách hàng được đáp ứng.
  • Đảm bảo thực hiện đúng thời gian những yêu cầu dự án

2. Yêu cầu kỹ thuật:
  • Có kiến thức tốt, kinh nghiệm về Java
  • Kinh nghiệm về Spring framework, SOA design/micro services, cloud services, Big data
  • Kinh nghiệm bắt buộc về PL/ SQL
  • Kinh nghiệm về Postgres

3. Học vấn:
  • Tốt nghiệp Đại học chuyên ngành Công nghệ thông tin/ Khoa học máy tính hoặc ngành nghề liên quan.

5. Thông tin liên hệ: Để biết thêm thông tin chi tiết về vị trí Tuyển dụng, vui lòng liên hệ:
  • Tuyền: Phòng Nhân sự
  • ĐT: 08-37155359, số nội bộ 101
  • Email: vtttuyen@spsvietnam.vn

Note: Bạn nào phỏng vấn báo tên mình giới thiệu nhé ^^! để mình lấy bouns tiền khi giới thiệu thành công :>> khi nào vào làm mình bao ăn trưa cafe một bữa :)).



Giới thiệu tổng quát về Spring.

Một bài dịch từ "http://s7.zetaboards.com" thấy hay nên lưu lại :)) Spring là một application framework mã nguồn mở, được giới thiệu vào năm 2002. Rod Johnson đã đưa ra ý tưởng này từ kinh nghiệm làm việc với kiến trúc J2EE.


Ông ta đã viết cuốn sách với tiêu đề: “J2EE Develoment without using EJB” để giới thiệu khái niệm trình chứa hạng nhẹ (lightweight container). Với lý luận: EJB thì có giá trị của nó, nhưng không phải lúc nào cũng cần thiết và phù hợp cho tất cả các ứng dụng.

[Training Java Spring Nội Bộ] Lab 1: Developing an Application from Plain Java Objects.

Bây giờ ta sẽ tìm hiểu bài LAB đầu tiên trong khóa học Spring Java, như thường lệ trước khi bắt đầu học cái gì hay làm cái gì tôi thường có thói quen phân tích xem mình cần phải làm gì, cần cái gì để đạt hiệu quả cao nhất, tương tự trong bài làm này tôi đi tìm hiểu xem mình cần làm gì, và được gì trong bài LAB này.

Đầu tiên để có thể hiểu được rõ ràng bài LAB yêu cầu, cũng như lợi ích đặt được sau bài LAB bạn bắt buộc phải đọc tài liệu "core-spring-4.2.a.RELEASE-labdocs.pdf", và trong bài LAB hãy đọc bắt đầu đọc từ mục "Chapter 1: spring-intro: Introduction to Core Spring" trang 15.

Ok để hiểu rõ về bài LAB bạn phải đọc tài liệu ở đây tôi chỉ tập trung vào một số điểm chính và giải bài tập thôi không dịch ra hết nổi  :)), phần đầu tiên chúng ta tìm hiểu là chúng ta sẽ được gì sau bài LAB.

Chúng ta sẽ học được:
  • Cơ bản các chức năng trong Spring Tool Suite.
  • Cốt lỗi các chức năng xử lý RewardNetwork và API.
  • Tương tác cơ bản giữa các thành phần chủ chốt trong ứng dụng Reward Dining.

Cơ bản các chức năng trong Spring Tool Suite.

Phần này được mô tả khá chi tiết công hình ảnh minh họa trong tài liệu về bài LAB, trong cái nhìn phân tích tổng quan lần đầu tiên tôi hầu như đã đoán ra toàn bộ nội dung này và đã mô tả trong bài viết [Training Java Spring Nội Bộ] Tìm hiểu Spring Tool Suite của Core-Spring-4.2.a và tìm hiểu tổng quát về các LAB.

Ha ha ha... công nhận mình giỏi quá ta (tự sướng chút), trong phần này chủ yếu mô tả về cách dùng Spring cơ bản, cấu trúc workspace, working set, project của dự án, nói sơ qua một số lỗi có thể gặp khi sử dụng Spring Tool chủ yếu nói về lỗi kết nối mạn internet không được khiến nó tải về các LIB ko được dẫn tới lỗi hoặc bạn xử lý code trong khi các LIB chưa tải về xong, sử dụng todo list, cái phần này tôi đã giới thiệu qua trong bài trước bạn hãy xem bài trước nhé.

Chỉ có một phần về todo list tôi còn thiếu sót nên sẽ miêu tả tại đây, trong bài trước tôi có nói qua cách sử dụng tuy có hơi bất tiện là khi bạn nhấn sang class khác bạn chỉ thấy được todo list trong class đó thôi, trong phần mô tả tài liệu này thì có hướn dẫn cách để xem toàn bộ todo list mà không cần quan tâm bạn đang ở class nào, chọn mũi tên cấu hình sổ xuống ở góc phải màn hình Tasks và chọn Configure Contents..

10 Điều cần biết dành cho Lập Trình Viên Java.

Kể từ khi JAVA được công bố chính thức từ năm 1995, nó đã thay đổi rất nhiều cái nhìn của chúng ta về Hệ Điều hành. Bill Gate đã từng nói đùa rằng, nó – Hệ Điều hành – không phải là phần cứng mà là phần mềm, là tương lai. (It was not about the hardware but the software which will be the future).


Java EE là gì? (mô tả cở bản)

"Java EE" tên đầy đủ là "Java Enterprise Edition" dịch sang tiếng việt có nghĩa là là "Java Phiên Bản Doanh Nghiệp", nó là một nền tảng (platform) dành cho việc xây dựng các ứng dụng (application) cấp doanh nghiệp.

Java EE là gì? (mô tả cở bản)

Hiểu về Dependency Injection thông qua ví dụ thực tế.

Bài viết này được tổng hợp lại sau khi mình đọc qua một loại bài mô tả về Dependency Injection, tuy nhiên nếu giải thích theo code thì rất khó để hiểu về Dependency Injection là gì? Chính vì thế bài viết này mình cố găng mô tả Dependency Injection thông qua các khái niệm thực tế đơn giản và các ví dụ mô tả việc áp dụng nó trong thực tế.

Hiểu về Dependency Injection thông qua ví dụ thực tế.