Singleton pattern |
Liferay, Programming, Java, Algorithms, Portal, Cổng thông tin, Lập trình, Thuật toán, Liferay Vietnam, Liferay Việt Nam
Java: Singleton Pattern và kết nối với cơ sở dữ liệu trong các ứng dụng Java
Liferay: So sánh giữa Liferay MVC va Spring MVC
Liferay MVC vs Spring MVC |
Trước khi thảo luận chi tiết hơn, bạn có thể tham khảo ở các blog sau Liferay MVC Portlet và Spring MVC Portlet để hiểu các khái niệm cơ bản. Để hiểu được sự giống và khác nhau giữa Liferay MVC và Spring MVC, ta sẽ đi so sánh các đặc trưng giữa hai framework này.
Liferay: Tải tệp tin (upload file) trong portlet
Liferay 6.2: Upload file in portlet
Vietnamese version
The uploading file is an activity frequently. You can use this activity to upload document files (for examples: doc, docx, pdf, png...) or data files (for examples: csv, xls, xlsx, odt,..). There are many ways to upload a file, I will show you my way in this post.
Alogrithm: Sắp xếp vun đống (heap sort)
Thực hiện vun đống |
Rất may mắn có một người bạn giúp ta làm một việc như sau: người bạn đó sẽ sắp xếp số đồ vật của chúng ta thành một đống mà phần tử ở trên bao giờ cũng nhẹ hơn phần tử ở dưới. Như vậy, ta lấy được đồ vật nhỏ nhất và bỏ ra ngoài. Người bạn lại tiếp tục sắp lại đống đồ vật trên và ta lại chọn phần tử ở trên cao nhất - là phần tử nhẹ nhất trong đống nhưng nhẹ thứ hai trong danh sách các đồ vật. Cứ thế đến cuối cùng thì các phần tử được ta nhặt ra từ đống sẽ được sắp xếp.
Ngay lập tức ta thấy có một câu hỏi đặt ra là việc xếp lại cái đống đồ vật để cho ta chọn đồ vật nhẹ nhất có phức tạp và khó khăn hay không? Rất may nó lại khá đơn giản, post này sẽ giải thích kỹ hơn cho bạn.
Algorithm: Thuật toán sắp xếp nhanh (quick sort)
Hình động cảu thuật toán sắp xếp nhanh
|
Algorithm: Thuật toán sắp xếp chèn (insertion sort)
Sắp xếp chèn (insertion sort) |
Liferay 6.2: Kết hợp search container và cơ sở dữ liệu
Trong hai post trước đây (service builder và search container) cho phép chúng ta tương tác với dữ liệu và tương tác với giao diện. Trong post này mình sẽ kết hợp cả hai công việc riêng rẽ ở hai post trên vào thành một. Có nghĩa là ứng dụng của chúng ta sẽ lấy dữ liệu từ cơ sở dữ liệu hiển thị lên màn hình nhờ search container và chúng ta có thể dùng các tham số của search container để lọc các bản ghi phù hợp. Bây giờ các ứng dụng ta viết ra sát với thực tế rồi đấy.
Algorithm: Thuật toán sắp xếp chọn (selection sort)
Hình động sắp xếp chọn
|
Algorithm: Thuật toán sắp xếp nổi bọt (bubble sort)
Minh họa |
Python: Sắp xếp (sorting)
Sắp xếp |
Liferay 6.2: Thao tác với cơ sở dữ liệu
Trong các hướng dẫn trước đây, chúng ta đã làm quen với việc xây dựng các ứng dụng (portlet) đơn giản. Tuy nhiên, chúng chỉ là các ví dụ mà thôi, để cho gần hơn với các ứng dụng trong thực tế, mình viết post này trình bày về các thao tác với cơ sở dữ liệu. Liferay cung cấp một công cụ cực kỳ mạnh mẽ và hiệu quả đó là Servvice Builder. Công cụ này sẽ giúp bản triển khai một ứng dụng cực kỳ nhanh chóng.
Python: Tìm giá trị của biểu thức Taylor.
Định lí Taylor cho ta một đa thức xấp xỉ một hàm khả vi tại một điểm cho trước (gọi là đa thức Taylor của hàm đó) có hệ số chỉ phụ thuộc vào các giá trị của đạo hàm tại điểm đó. Định lí còn cho ta một đánh giá chính xác sai số của xấp x.
Liferay 6.2: Tìm kiếm và liệt kê (Search Container)
Trong các ứng dụng thông thường, việc liệt kê tất cả các phần tử (bản ghi) là một việc rất hay gặp. Trong trường hợp, nếu số lượng bản ghi nhiều và tràn hết màn hình thì ta sẽ có nhu cầu phân trang.
Liferay có tiện ích search container rất hữu ích cho chúng ta khi thực hiện công việc như trên. Trong bài này, mình sẽ giới thiệu chi tiết cách sử dụng search container.
Liferay 6.2: Làm việc với nhiều render
Như đã nói ở bài trước, nếu trong một portlet có nhiều thao tác xử lý dữ liệu thì ta sẽ tạo ra các action tương ứng để giải quyết công việc một cách độc lập. Việc này sẽ giúp chúng ta tách biệt các công việc khác nhau đồng thời sẽ dễ hiểu cho người khác đọc code của chúng ta và dễ dàng để bảo trì.
Như đã hứa ở bài trước, bài này chúng ta sẽ bàn đến vấn đề trả lại nhiều view khác nhau. Công việc này chắc chắn là thường xuyên gặp. Chẳng hạn bạn đang ở giao diện view, bạn có thể chuyển sang giao diện edit. Edit xong bạn có thể chuyển sang giao diện xem chi tiết chẳng hạn. Nói tóm lại, bài này sẽ giúp bạn chuyển sang các view đúng với kịch bản của bạn sau khi thực hiện các action.
Liferay 6.2: Xử lý nhiều action
Trong bài trước, chúng ta có hai file view.jsp và edit.jsp. Mặc định, khi mở portlet ra thì sẽ hiển thị nội dung của file view.jsp. Sau đó, ta nhấn vào liên kết để mở file edit.jsp. Trong file edit.jsp ta sẽ nhập vào tên và truyền xuống controller và controller xử lý dữ liệu rồi trả lại view.jps.
Ta thấy, ở đây có hai thao tác, i) mở file edit.jsp thao tác này được gọi là render và ii) chuyển dữ liệu từ file edit.jsp xuống controller ta gọi là action. Câu hỏi đặt ra, nếu như chúng ta muốn có nhiều thao tác gửi dữ liệu xuống controller thì phải làm thế nào?Bài này sẽ giải đáp thắc mắc trên.
Python: Kiểu dữ liệu chuỗi
Python: Một số ví dụ về hàm
Hàm |
Khái niệm hàm trong ngôn ngữ lập trình thì mình không phải giới thiệu lại. Bạn chỉ cần hiểu đơn giản hàm là một hộp đen thực hiện một công việc nào đó. Với đầu vào như thế nào thì sẽ được đầu ra tương ứng. Ví dụ, đầu vào của hộp đen số nguyên tố là 11 sẽ có kết quả là True, còn đầu vào là 12 sẽ có đầu ra là False. Vậy, chúng ta sẽ đi tìm hiểu cách chế tạo hộp đen bằng Python nhé.
Liferay 6.2: Gửi và nhận dữ liệu trong portlet
Trong bài trước, chúng ta đã tạo ra được một portlet có tên là FirstApp, portlet này đã hiển thị một lời chào lên màn hình. Câu chuyện đặt ra, nếu mình muốn cho phép người khác hiển thị dòng chữ chào mừng đấy thì ta phải làm thế nào?
Rất đơn giản thôi, ta cho người dùng nhập vào nội dung (tên người chẳng hạn) và người dụng nhấn vào nút Gửi , lúc này, controller sẽ trả lại dòng chữ chào mừng mà ta mong muốn.
Tự học Python: Một vài chương trình đơn giản.
Ở bài số 1, chúng ta đã cài đặt môi trường Python, môi trường lập trình và chạy chương trình đầu tiên. Bây giờ mình sẽ viết một số chương trình ví dụ. Đơn giản nhất là chương trình kiểm tra một số có phải là số nguyên tố, hoàn hảo và chính phương hay không (đây là các bài toán cơ bản và đơn giản nhất có thể.
Tự học Python: Cài đặt và viết chương trình đầu tiên
Mình không phải quảng bá nhiều về Python, chỉ biết rằng Python hiện đang ở vị trí thứ 5 (tham khảo) trong bảng xếp hạng và có chiều hướng tăng. Đồng thời, cộng đồng Python cũng kêu gào rằng Python code Python rất ngắn gọn và phải gõ phím rất ít khi viết cùng một chương trình ở các ngôn ngữ khác. Chính vì thế, có thể sẽ rất phù hợp với những người lười đấy (theo nghĩa đen luôn). Đề xem có đúng như lời cộng đồng Python nói không, thì chẳng có cách nào khác chúng ta đi tự học và cố gắng học trong 21 ngày nhé (dài quá không?).
Liferay 6.2: Tạo Portlet đầu tiên
Liferay 6.2: Các thành phần cơ bản của Liferay (P2)
Ở phần trước, chúng ta đã tìm hiểu các thành phần được sử dụng để dựng trang (company, site, page, portlet, ...). Phần này chúng ta sẽ đi tìm hiểu về phần quản lý người dùng trong Liferay gồm có: người dùng, nhóm người dùng, tổ chức, vai trò và quyền,...
Liferay 6.2: Các thành phần cơ bản của Liferay
Sau khi đã cài đặt và cấu hình thành công Liferay trên máy tính các nhân. Lúc này, chúng ta sẽ đi tìm hiểu các thành phần trong Liferay. Mình sẽ chia thành hai phần và chúng ta sẽ đi tìm hiểu từng phần một: i) các thành phần liên quan đến dựng trang (company, site, page, portlet, ...), ii) thành phần người dùng (user, group user, organization,...). Nào, cùng bắt đầu nhé:
Liferay 6.2: Cài đặt và cấu hình Liferay
Ở hướng dẫn trước, mình đã nêu ra các phần mềm chính (portal, sdk và ide). Trong phần này, mình sẽ hướng dẫn cụ thể cài đặt môi trường máy chủ và môi trường lập trình (bài sau nữa).
Bắt đầu với Liferay
chức và doanh nghiệp có nhu cầu phát triển hệ thống thông tin trên môi trường mạng nhằm thực hiện các giao dịch trực tuyến sử dụng Intranet/Internet như một công cụ thiết yêu trong các hoạt động, cung cấp thông tin, giao tiếp, quản lý, điều hành, trao đổi và cộng tác.
Đăng ký:
Bài đăng (Atom)