ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Bài thu hoạch môn học
PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC
TRONG TIN HỌC
Đề tài
CÁC NGUYÊN LÝ SÁNG TẠO &
VẬN DỤNG VÀO WEB PORTA CMS
NUKEVIET
GIÁO VIÊN HƯỚNG DẪN: GS. HOÀNG VĂN KIẾM
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA
LỚP: CAO HỌC CNTTQM KHÓA 6.
MÃ SỐ HỌC VIÊN: CH1101016.
TPHCM tháng 04/2012
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 2
LỜI NÓI ĐẦU
Sáng tạo là một trong những điều kiện tiên quyết để xã hội phát triển. Những
câu chuyện về sáng tạo luôn được ghi lại, nguồn gốc của những sản phẩm được
làm ra từ sự sáng tạo luôn được ghi nhận, được viết thành sách, báo, được lan
truyền để cho tất cả mọi người tìm hiểu và học hỏi theo. Trong khoa học, sáng
tạo là một trong những mục đích hướng đến của người nghiên cứu hoặc làm việc
trong lĩnh vực này. Sự sáng tạo sẽ tạo ra nhiều sản phẩm mới, phát minh mới và
sẽ được áp dụng trong đời sống xã hội, mang lại những lợi ích thiết thực trong
cuộc sống. Trong tin học, sáng tạo càng là yêu cầu cấp thiết và cực kỳ quan trọng
cho sự tồn tại và phát triển của bất kỳ một sản phẩm tin học nào. Sự phát triển
của Google, IBM, Youtube hay Facebook là những minh chứng hùng hồn nhất.
Trong khuôn khổ bài thu hoạch nhỏ này, tôi sẽ trình bày một số nguyên tắc
sáng tạo trong khoa học nói chung, các nguyên tắc sáng tạo trong lĩnh vực công
nghệ thông tin nói riêng và áp dụng các nguyên lý sáng tạo này trong một sản
phẩm tin học điển hình: Web Portal CMS NukeViet, một mô hình web portal
đang dần phổ biến trong giới làm web.
Qua đây, tôi xin được gửi lời cảm ơn đến GS - TSKH Hoàng Văn Kiếm,
người đã tận tâm truyền đạt những kiến thức nền tảng cơ bản về môn học
“Phương pháp nhiên cứu khoa học trong tin học”, để tôi có cơ sở kiến thức d8e63
có thể viết được bài thu hoạch này.
Do kiến thức còn hạn hẹp, bài thu hoạch có thể có những sai sót nhất định,
mong thầy và các bạn góp ý để bài thu hoạch ngày càng hoàn thiện hơn.
Tôi xin tỏ lòng biết ơn sâu xa!
Học viên thực hiện đề tài
Nguyễn Văn Khoa
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 3
MỤC LỤC
LỜI NÓI ĐẦU 2
MỤC LỤC 3
1. CÁC NGUYÊN LÝ SÁNG TẠO TRONG KHOA HỌC 4
2. CÁC NGUYÊN LÝ SÁNG TẠO TRONG TIN HỌC 11
2.1. Theo phương pháp trực tiếp 11
2.2. Theo phương pháp gián tiếp 12
3. VẬN DỤNG NGUYÊN LÝ SÁNG TẠO VÀO WEB PORTA CMS
NUKEVIET 18
3.1. Cơ bản về NukeViet 18
3.2. Các nguyên lý sáng tạo được áp dụng trong NukeViet 24
3.3. Dự đoán tính năng tương lai của NukeViet 34
4. KẾT LUẬN 37
5. TÀI LIỆU THAM KHẢO 38
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 4
1. CÁC NGUYÊN LÝ SÁNG TẠO TRONG KHOA
HỌC
Sau khi phân tích hàng trăm ngàn sáng chế ở những nghành kỹ thuật mũi
nhọn, người ta tìm được 40 thủ thuật cơ bản cho việc sáng tạo. Dù dùng với sự
phát triển của khoa học kỹ thuật, số lượng các thủ thuật có thể tăng thêm và bản
thân từng thủ thuật sẽ được cụ thể hoá hơn nữa cho phù hợp với các chuyên
nghành hẹp, tuy nhiên 40 thủ thuật này là bao quát và đã rất đầy đủ. Nó cung cấp
hệ thống các cách xem xét sự vật; tăng tính nhanh nhạy của việc tiếp thu và đánh
giá giá trị của thông tin; đưa ra và lựa chọn các cách tiếp cận thích hợp để giải
quyết vấn đề. Hệ thống các nguyên tắc sáng tạo này còn giúp cho chúng ta xây
dựng được tác phong, suy nghĩ và làm việc một cách khoa học, sáng tạo; góp
phần xây dựng tư duy biện chứng. Dưới đây xin được lần lượt điểm qua 40
nguyên tắc đó:
1. Nguyên tắc phân nhỏ
Chia đối tượng thành các phần độc lập.
Làm đối tượng trở nên tháo lắp được.
Tăng mức độ phân nhỏ đối tượng.
2. Nguyên tắc “tách khỏi”
Tách phần gây “phiền phức hay ngược lại tách phần duy nhất “cần thiết”
ra khỏi đối tượng.
3. Nguyên tắc phẩm chất cục bộ
Chuyển đối tượng (hay môi trường bên ngoài, tác động bên ngoài) có cấu
trúc đồng nhất thành không đồng nhất.
Các phần khác nhau của đối tượng phải có các chức năng khác nhau.
Mỗi phần của đối tượng phải ở trong những điều kiện thích hợp nhất đối
với công việc.
4. Nguyên tắc phản đối xứng
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 5
Chuyển đối tượng có hình dạng đối xứng thàng không đối xứng (nói
chung giảm bậc đối xứng).
5. Nguyên tắc kết hợp
Kết hợp các đối tượng đồng nhất hoặc các đối tượng dùng cho các hoạt
động kế cận.
Kết hợp về mặt thời gian các hoạt động đồng nhất hoặc kế cận.
6. Nguyên tắc vạn năng
Đối tượng thực hiện một số chức năng khác nhau, do đó không cần sự
tham gia của các đối tượng khác.
7. Nguyên tắc “chứa trong”
Môt đối tượng được đặt bên trong đối tượng khác và bản thân no1 lại chứa
đối tượng thứ ba…
Một đối tượng chuyển động xuyên suốt bên trong đối tượng khác.
8. Nguyên tắc phản trọng lượng
Bù trừ trọng lượng của đối tượng bằng cách gắn nó với các đối tượng
khác, có lực nâng.
Bù trừ trọng lượng của đối tượng bằng cách tương tác với môi trường như
sử dụng các lực thủy động, khí động …
9. Nguyên tắc gây ứng suất sơ bộ
Gây ứng suất trước đối với đối tượng để chống lại ứng suất không cho
phép hoặc không mong muốn khi đối tượng làm việc (hoặc gây ứng súât
trước để khi làm việc sẽ dùng ứng súât ngược lại).
10. Nguyên tắc thực hiện sơ bộ
Thực hiên trước sự thay đổi cần có, hoàn toàn hoặc từng phần, đối với đối
tượng.
Cần sắp xếp đối tượng trước, sao cho chúng có thể hoạt động từ vị trí
thuận lợi nhất, không mất thời gian dịch chuyển.
11. Nguyên tắc dự phòng
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 6
Bù đắp độ tin cậy không lớn của đối tượng bằng cách chuẩn bị trước các
phương tiện báo động, ứng cứu, an toàn.
12. Nguyên tắc đẳng thế
Thay đổi điều kiện làm việc để không phải nâng lên hay hạ xuống các đối
tượng.
13. Nguyên tắc đảo ngược
Thay vì hành động như yêu cầu bài toán, hành động ngược lại (ví dụ :
không làm nóng mà làm lạnh đối tượng).
Làm phần chuyển động của đối tượng (hay môi trường bên ngoài) thành
đứng yên và ngược lại phần đứng yên thành chuyển động.
14. Nguyên tắc cầu (tròn) hoá
Chuyển những phần thẳng của đối tượng thành cong, mặt phẳng thành mặt
cầu, kết cấu hình hộp thành kết cấu hình cầu.
Sử dụng các con lăn, viên bi, vòng xoắn.
Chuyển sang chuyển động quay, sử dụng lực ly tâm.
15. Nguyên tắc linh động
Cần thay đổi các đặc trưng của đối tượng hay môi trường bên ngoài sao
cho chúng tối ưu trong từng giai đoạn làm việc.
Phân chia đối tượng thành từng phần, có khả năng dịch chuyển với nhau.
16. Nguyên tắc giải “thiếu” hoặc “thừa”
Nếu như khó nhận được 100% hiệu quả cần thiết, nên nhận ít hơn hoặc
nhiều hơn “một chút”. Lúc đó bài toán có thể trở nên đơn giản hơn và dễ
giải hơn.
17. Nguyên tắc chuyển sang chiều khác
Những khó khăn do chuyển động (hay sắp xếp) đối tượng theo đường
(một chiều) sẽ được khắc phục nếu cho đối tượng khả năng di chuyển trên
mặt phẳng (hai chiều), tương tự những bài toán liên quan đến chuyển động
(hay sắp xếp) các đối tượng trên mặt phẳng sẽ được đơn giản hóa khi
chuyển sang không gian (ba chiều).
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 7
Chuyển các đối tượng có kết cấu một tầng thành nhiều tầng.
Đặt đối tượng nằm nghiêng.
Sử dụng mặt sau của diện tích cho trước.
Sử dụng các luồng ánh sáng tới diện tích bên cạnh hoặc tới mặt sau của
diện tích cho trước.
18. Nguyên tắc sử dụng các dao động cơ học
Làm đối tượng dao động.
Nếu đã có dao động, tăng tần số dao động.
Sử dụng tần số cộng hưởng.
Thay vì dùng các bộ rung cơ học. dùng các bộ rung áp điện.
Sử dụng siêu âm kết hợp với trường điện từ.
19. Nguyên tắc tác động theo chu kỳ
Chuyển tác động liên tục thành tác động theo chu kỳ (xung).
Nếu đã có tác động theo chu ký, hãy thay đổi chu kỳ.
Sử dụng các khoảng thời gian giữa các xung để thực hiên tác động khác.
20. Nguyên tắc liên tục tác động có ích
Thực hiên công viêc một cách liên tục (tất cả các phần của đối tượnng cần
luôn luôn làm việc ở chế độ đủ tải).
Khắc phục vận hành không tải và trung gian.
Chuyển chuyển động tịnh tiến qua lại thành chuyển động quay.
21. Nguyên tắc “vượt nhanh”
Vượt qua các giai đoạn có hại hoặc nguy hiểm với vận tốc lớn.
Vượt nhanh để có được hiệu ứng cần thiết.
22. Nguyên tắc biến hại thành lợi
Sử dụng những tác nhân có hại (ví dụ tác động có hại của môi trường) để
thu được hiệu ứng có lợi.
Khắc phục tác nhân có hại bằng cách kết hợp nó với tác nhân có hại khác.
Tăng cường tác nhân có hại đến mức nó không còn có hại nữa.
23. Nguyên tắc quan hệ phản hồi
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 8
Thiết lập quan hệ phản hồi.
Nếu đã có quan hệ phản hồi, hãy thay đổi nó.
24. Nguyên tắc sử dụng trung gian
Sử dụng đối tượng trung gian, chuyển tiếp.
25. Nguyên tắc tự phục vụ
Đối tượng phải tự phục vụ bằng cách thực hiện các thao tác phụ trợ, sửa
chữa.
Sử dụng phế liệu, chất thải, năng lương dư.
26. Nguyên tắc sao chép (copy)
Thay vì sử dụng những cái không được phép, phức tạp, đắt tiền, không
tiện lợi hoặc dễ vỡ, sử dụng bản sao.
Thay thế đối tượng hay hệ các đối tượng bằng bản sao quang học(ảnh,
hình vẽ với các tỷ lệ cần thiết.
Nếu không thể sử dụng bản sao quang học ở vùng biểu kiến (vùng ánh
sáng nhìn thấy được bằng mắt thường), chuyển sang sử dụng các bản sao
hồng ngoại hoặc tử ngoại.
27. Nguyên tắc “rẻ” thay cho “đắt”
Thay đối tượng đắt tiền bằng bộ các đối tượng rẻ có chất lượng kém hơn
(ví dụ như tuổi thọ).
28. Thay thế sơ đồ cơ học
Thay thế sơ đồ cơ học bằng điện, quang, nhiệt, âm hoặc mùi vị.
Sử dụng diện trường, từ trừơng và điện từ trường trong tương tác với đối
tượng.
Chuyển các trường đứng yên sang chuyển động, các trường cố định sang
thay đổi theo thời gian, các trường đồng nhất sang có cấu trúc nhất định.
Sử dụng các trường kết hợp với các hạt sắt từ.
29. Sử dụng các kết cấu khí và lỏng
Thay cho các phần của đối tượng ở thể rắn, sử dụng các chất khí và lỏng;
nạp khí, nạp chất lỏng, đệm không khí, thủy tĩnh, thủy phản lực.
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 9
30. Sử dụng vỏ dẽo và màng mỏng
Sử dụng các vỏ dẽo và mành mỏng thay cho các kết cấu khối.
Cách ly đối tượng với môi trường bên ngoài bằng các vỏ dẽo và màng
mỏng.
31. Sử dụng các vật liệu nhiều lỗ
Làm đối tượng có nhiều lỗ hoặc sử dụng thêm những chi tiết nhiều lỗ
(miếng đệm, tấm phủ,…).
Nếu đối tượng đã có nhiều lỗ, sơ bộ tẩm nó bằng chất nào đó.
32. Nguyên tắc thay đổi màu sắc
Thay đổi màu sắc của đối tượng hay môi trường bên ngoài.
Thay đổi độ trong suốt của đối tượng hay mội trường bên ngoài.
Để có thể quan sát được những đối tượng hoặc những quá trình, sử dụng
các chất phụ gia màu, huỳnh quang.
Nếu các chất phụ gia đó đã được sử dụng, dùng các nguyên tử đánh dấu.
Sử dụng các hình vẽ, ký hiệu thích hợp.
33. Nguyên tắc đồng nhất
Những đối tượng tương tác với đối tượng cho trước, phải được làm từ
cùng một vật liệu (hoặc từ vật liệu gần về các tính chất) với vật liệu chế
tậo đối tượng cho trước.
34. Nguyên tắc phân hủy hoặc tái sinh các phần
Phần đối tượng đã hoàn thành nhiêm vụ hoặc trở nên không cần thiết phải
tự phân hủy (hòa tan, bay hơi,…) hoặc phải biến dạng.
Các phần mất mát của đối tượng phải được phục hối trực tiếp trong quá
trình làm việc.
35. Thay đổi các thông số hoá lý của đối tượng
Thay đổi trạng thái đối tượng.
Thay đổi nồng độ hay độ đậm đặc.
Thay đổi dộ dẻo.
Thay đổi nhiệt độ, thể tích.
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 10
36. Sử dụng chuyển pha
Sử dụng các hiện tượng nảy sinh, trong các quá trình chuyển pha như thay
đổi thể tích, tỏa hay hấp thu nhiệt lượng …
37. Sử dụng sự nở nhiệt
Sử dụng sự nở (hay co) nhiệt của các vật liệu.
Nếu đã dùng sự nở nhiệt, sử dụng với vật liệu có các hệ số nở nhiệt khác
nhau.
38. Sử dụng các chất ôxy hóa mạnh
Thay không khí thường bằng không khí giàu ôxy.
Thay không khí giàu ôxy bằng chính ôxy.
Dùng các bức xạ iôn hóa tác động lên không khí hoặc ôxy.
Thay ôxy giàu iôn (hoặc ôxy bị iôn hóa) bằng chính ôxy.
39. Thay đổi độ trơ
Thay môi trường thông thường bằng môi trường trung hòa.
Đưa thêm vào đối tượng các phần, các chất, phụ gia trung hòa.
Thực hiện quá trình trong chân không.
40. Sử dụng các vật liệu hợp thành (composite)
Chuyển từ các vật liệu đồng nhất sang sử dụng những vật liệu hợp thành
(composite), Hay nói chung sử dụng các loại vật liệu mới.
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 11
2. CÁC NGUYÊN LÝ SÁNG TẠO TRONG TIN
HỌC
2.1. Theo phương pháp trực tiếp
Phương pháp trực tiếp xác định trực tiếp được lời giải qua một thủ tục tính
toán như công thức, hệ thức, định luật …vv… hoặc qua các bước căn bản để có
được lời giải. Đối với phương pháp này, việc giải quyết vấn đề trên máy tính chỉ
là thao tác lập trình hay là sự chuyển đổi lời giải từ ngôn ngữ bên ngoài sang
các ngôn ngữ được sử dụng trong máy tính. Tìm hiểu về phương pháp này chính
là tìm hiểu về kỹ thuật lập trình trên máy tính.
Để thực hiện tốt phương pháp trực tiếp, chúng ta cần áp dụng các nguyên lý
sau:
Nguyên lý 1
Chuyển đổi dữ liệu bài toán thành dữ liệu của chương trình, điều này có nghĩa
là “Dữ liệu của bài toán sẽ được biểu diễn lại dưới dạng các biến của chương
trình thông qua các quy tắc xác định của ngôn ngữ lập trình cụ thể”.
Nguyên lý 2
Chuyển đổi quá trình tính toán của bài toán thành các cấu trúc của chương
trình, điều này có nghĩa là “Mọi quá trình tính toán đều có thể mô tả và thực hiện
dựa trên ba cấu trúc cơ bản: Cấu trúc tuần tự, cấu trúc rẽ nhánh và cấu trúc lặp”.
Nguyên lý 3
Biểu diễn các tính toán chính xác, điều này có nghĩa là “Chương trình tính
toán theo các biểu thức chính xác không đồng nhất với quá trình tính toán chính
xác về mặt hình thức”.
Nguyên lý 4
Biểu diễn các tính toán gần đúng bằng cấu trúc lặp, có nghĩa là “Mọi quá trình
tính toán gần đúng đều dựa trên các cấu trúc lặp với tham số xác định ”.
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 12
Nguyên lý 5
Phân chia bài toán ban đầu thành những bài toán nhỏ hơn, có nghĩa là “Mọi
vấn đề - bài toán đều có thể giải quyết bằng cách phân chia thành những vấn đề -
bài toán nhỏ hơn ”. Đây là nguyên tắc khá quan trọng.
Nguyên lý 6
Biểu diễn các tính toán không tường minh bằng đệ quy, điều này có nghĩa là
“Quá trình đệ quy trong máy tính không đơn giản như các biểu thức quy nạp
trong toán học”. Kỹ thuật đệ quy được sử dụng khá nhiều trong lập trình phần
mềm.
2.2. Theo phương pháp gián tiếp
Phương pháp gián tiếp được sử dụng khi chưa tìm ra lời giải chính xác của vấn
đề. Đây cũng chính là cách tiếp cận chủ yếu của loài người từ xưa đến nay. Điểm
khác ở đây là chúng ta đưa ra những giải pháp mang đặc trưng của máy tính, dựa
vào sức mạnh tính toán của máy tính. Tất nhiên, một lời giải trực tiếp bao giờ
cũng tốt hơn, nhưng không phải lúc nào cũng có.
Chúng ta có thể áp dụng các phương pháp gián tiếp như sau:
Phương pháp thử – sai
Khi xây dựng lời giải bài toán theo phương pháp thử – sai, người ta thường
dựa vào 3 nguyên lý sau :
Nguyên lý vét cạn: Đây là nguyên lý đơn giản nhất, liệt kê tất cả các
trường hợp có thể xảy ra.
Nguyên lý ngẫu nhiên: Dựa vào việc thử một số khả năng được chọn một
cách ngẫu nhiên. Khả năng tìm ra lời giải đúng phụ thuộc rất nhiều vào
chiến lược chọn ngẫu nhiên.
Nguyên lý mê cung: Nguyên lý này được áp dụng khi chúng ta không thể
biết được chính xác “hình dạng” lời giải mà phải xây dựng dần lời giải
qua từng bước một giống như tìm đường đi trong mê cung.
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 13
Để thực hiện tốt phương pháp thử - sai, chúng ta nên áp dụng các nguyên lý
sau:
Nguyên lý vét cạn toàn bộ : Muốn tìm được cây kim trong đống rơm, hãy
lần lượt rút ra từng cọng rơm cho đến khi rút được cây kim
Nguyên lý mắt lưới : Lưới bắt cá chỉ bắt được những con cá có kích
thước lớn hơn kích thước mắt lưới.
Nguyên lý giảm độ phức tạp của thử và sai : Thu hẹp trường hợp trước và
trong khi duyệt, đồng thời đơn giản hóa tối đa điều kiện chấp nhận một
trường hợp.
Nguyên lý thu gọn không gian tìm kiếm : Loại bỏ những trường hợp hoặc
nhóm trường hợp chắc chắn không dẫn đến lời giải.
Nguyên lý đánh giá nhánh cận : Nhánh có chứa quả phải nặng hơn trọng
lượng của quả.
Ưu điểm duy nhất của phương pháp thử sai là không cần phải học mà tự nhiên
ai cũng có. Ngoài ưu điểm đó ra phương pháp này có rất nhiều nhược điểm ảnh
hưởng đến hiệu quả tư duy - giải quyết vấn đề con người. Các nhược điểm chủ
yếu của phương pháp này là:
Số phép thử- sai nhiều nên mất nhiều trí lực, thời gian, vật chất và có thể
là sinh mạng của con người.
Công suất phát ý tưởng (số ý tưởng đưa ra trên một đơn vị thời gian) để
giải quyết vấn đề thấp.
Tuy số phép thử nhiều nhưng không bao quát được hết các phương án có
thể có đối với bài toán cho trước một cách khách quan.
Không có cơ chế định hướng tư duy. Rất cần có phương pháp cho phép
định hướng chính xác con đường đi từ bài toán đến lời giải.
Phương pháp Heuristic
Phương pháp thử – sai có một số nhược điểm, khi giải quyết vấn đề bằng cách
dùng một số lượng phép thử quá lớn, thời gian để có được kết quả có khi khá lâu
không chấp nhận được. Phương pháp Heuristic có đặc điểm là đơn giản và gần
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 14
gủi với cách suy nghĩ của con người, cho ra được những lời giải đúng trong đa số
các trường hợp áp dụng. Các thuật giải Heuristic được xây dựng dựa trên một số
nguyên lý rất đơn giản như “vét cạn thông minh”, “tối ưu cục bộ” (Greedy),
“hướng đích”, “sắp thứ tự”, Đây là một số thuật giải khá thú vị và có rất nhiều
ứng dụng trong thực tiễn.
Để thực hiện tốt phương pháp Heuristic, chúng ta nên áp dụng các nguyên lý
sau:
Nguyên lý leo núi: Muốn leo lên đến đỉnh thì bước sau phải cao hơn bước
trước.
Nguyên lý chung: Chọn hướng đi triển vọng nhất trong số những hướng đi
đã biết.
Phương pháp trí tuệ nhân tạo
Phương pháp thử – sai và Heuristic nói chung đều dựa trên một điểm cơ bản
là trí thông minh của chính con người để giải bài toán, máy tính chỉ đóng vai trò
thực thi mà thôi. Còn các phương pháp trí tuệ nhân tạo lại dựa trên trí thông minh
của máy tính. Trong những phương pháp này, người ta sẽ đưa vào máy tính trí
thông minh nhân tạo giúp máy tính bắt chước một phần khả năng suy luận như
con người. Từ đó, khi gặp một vấn đề, máy tính sẽ dựa trên những điều nó đã
được “học“ để tự đưa ra phương án giải quyết vấn đề.
Trong lĩnh vực máy học, các hình thức học có thể phân chia như sau :
Học vẹt.
Học bằng cách chỉ dẫn.
Học bằng qui nạp.
Học bằng tương tự.
Học dựa trên giải thích.
Học dựa trên tình huống.
Khám phá hay học không giám sát.
Các kỹ thuật thường được áp dụng trong “máy học” là :
Khai khoáng dữ liệu.
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 15
Mạng nơ ron.
Thuật giải di truyền.
Một số ví dụ áp dụng điển hình trong tin học:
Áp dụng nguyên tắc “tách khỏi”:
Chúng ta thấy rằng, các máy tính đầu tiên của thế hệ 8086, 8088 hay thậm chí
80286 và một phần thế hệ 80386 thì các bộ phận CPU, RAM được gắn “chết”
vào bo mạch chính, muốn thay thế rất khó khăn thường là phải thay cả bo mạch
chính, đây chính là thành phần gây “rắc rối” cho sản phẩm. Khi xuất hiện các
máy tính thế hệ sau 80386, 80486 và máy tính ngày nay, các bộ phận CPU, RAM
được tách riêng khỏi bo mạch chính làm cho người dùng rất dễ thay thế hay nâng
cấp khi cần.
Trong các ngôn ngữ lập trình ngày nay, một ngôn ngữ lập trình thường tách ra
các chức năng hay đối tượng riêng biệt như là các đối tượng COM, DCOM giúp
cho người lập trình khi nào cần dùng đối tượng nào thì chỉ cần “chèn” đối tượng
đó vào để sử dụng và thậm chí người lập trình có thể “nâng cấp” đối tượng đó để
có thêm những tính năng mới tốt hơn hay tạo thêm các đối tượng mới.
Áp dụng nguyên tắc kết hợp:
Trong lĩnh vực phần mềm, ngày nay một dự án khó có thể dùng một ngôn ngữ
lập trình thực hiện từ đầu đến cuối mà phải có sự kết hợp nhiều phần với nhau.
Chẳng hạn như một dự án về cơ sở dữ liệu, phần dữ liệu thường được tạo và
quản lý bằng MySQL, SQL Server hay Oracle còn phần giao diện thường được
lập trình bằng một trong các ngôn ngữ Visual Basic, .Net, Delphi hay Visual
C,… thậm chí có thể kết hợp các ngôn ngữ đó trong phần thiết kế giao diện và
các báo cáo thường được thiết kế bởi Crysral Report hay JReport.
Áp dụng nguyên tắc chứa trong:
Trong mã nguồn phần mềm tin học, một chương trình chính chứa nhiều
chương trình con. Trong chương trình con lại chứa những chương trình con khác.
Áp dụng nguyên tắc dự phòng:
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 16
Trong lĩnh vực phần cứng, ngày nay trong CMOS luôn luôn có chức năng
giúp người sử dụng đặt nhiệt độ tối đa cho Cpu, khi nhiệt độ Cpu tới mức đó thì
sẽ báo động. Đây là biện pháp dự phòng tốt.
Ngoài ra, trong hệ điều hành Windows, luôn có chương trình Backup và
Restore dữ liệu, cho phép người dùng “ghost” lại hệ điều hành nếu gặp trường
hợp hư hỏng hệ điều hành. Hiện tại các hệ điều hành như Mac OSX, Android hay
hệ điều hành xài trên iPhone đều cho phép sao lưu và phục hồi dữ liệu.
Áp dụng nguyên tắc sao chép:
Trong lĩnh vực phần cứng và mạng có một số phần mềm giúp người học mạng
chỉ cần một máy tính vẫn có thể thực tập được việc cài đặt và quản trị mạng, đó
là các phần mềm giả lập (simulator) các thiết bị router hay các phần mềm VM
(Virtual Machine) giả lập một máy tính thành nhiều máy tính.
Áp dụng nguyên tắc đảo ngược:
Trong lĩnh vực đồ thị, khi yêu cầu chứng minh hai đồ thị liên thông nhau, ta
thường giả sử ngược lại là hai đồ thị không liên thông và chứng minh điều giả sử
đó không đúng, hoặc ngược lại khi yêu cầu chứng minh hai đồ thị không liên
thông nhau, ta thường giả sử ngược lại là hai đồ thị liên thông nhau và chứng
minh điều giả sử đó không đúng. Đây là cách chứng minh phản chứng, được
dùng rất nhiều trong lĩnh vực toán và tin học.
Áp dụng nguyên tắc vượt nhanh:
Trong máy tính, khi chúng ta khởi động máy, máy sẽ kiểm tra bộ nhớ RAM,
chúng ta muốn vượt qua phần kiểm tra này thì bấm phím “ESC”. Trong các ngôn
ngữ lập trình, cấu trúc rẽ nhánh giúp chương trình vượt nhanh qua các phần
không thỏa điều kiện. Hiện tại trong rất nhiều chương trình luôn có thiết lập các
bộ phím tắt nhằm cho user thao tác nhanh hơn. Nút ESC cũng giúp người dùng
hủy nhiều thao tác nếu đợi quá lâu.
Áp dụng nguyên tắc thay đổi màu sắc:
Nguyên tắc thay đổi màu sắc được áp dụng rất nhiều trong các phần mềm, trên
các giao diện web. Ví dụ như textbox yêu cầu phải nhập thì thường có màu đỏ,
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 17
khi người dùng nhập đúng định dạng của username thì có thông báo màu xanh,
khi người dùng nhập lại mật khẩu nếu trùng với mật khẩu thứ nhất thì sẽ hiển thị
thông báo màu xanh…vv…
Trong các chương trình máy tính khi xuất hiện hộp thông báo thường kèm
theo các biểu tượng giúp người dùng hiểu họ được thông báo với tình trạng gì
(xem hình 2.1).
Hình 2.1. Một mẫu thông báo có biểu tượng màu đỏ giúp người dùng dễ hiểu thông điệp hơn
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 18
3. VẬN DỤNG NGUYÊN LÝ SÁNG TẠO VÀO
WEB PORTA CMS NUKEVIET
3.1. Cơ bản về NukeViet
Giới thiệu
NukeViet là một hệ quản trị nội dung mã nguồn mở, người sử dụng thường
gọi NukeViet là portal vì nó có khả năng tích hợp nhiều ứng dụng trên nền Web.
NukeViet cho phép xây dựng một website động, đa chức năng, hiện đại một cách
nhanh chóng mà không cần phải biết về lập trình. Nói đơn giản, NukeViet giống
như một phần mềm giúp bạn xây dựng và vận hành các trang web của mình một
cách dễ dàng nhất. NukeViet là một phần mềm mã nguồn mở, do đó việc sử dụng
hoàn toàn miễn phí, bạn có thể tải NukeViet về bất cứ lúc nào tại website chính
thức của NukeViet là nukeviet.vn. Bạn có thể cài NukeViet lên hosting để sử
dụng hoặc cũng có thể thử nghiệm bằng cách cài ngay lên máy tính cá nhân (xem
hình 3.1).
Hình 3.1. Hệ thống mã nguồn CMS Nukeviet
NukeViet cho phép xây dựng một website động, đa chức năng, hiện đại một
cách nhanh chóng mà người vận hành nó thậm chí không cần phải biết một tí gì
về lập trình bởi tất cả các tác vụ quản lý phức tạp đều được tự động hóa ở mức
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 19
cao. NukeViet đặc biệt dễ dàng sử dụng vì hoàn toàn bằng tiếng Việt và được
thiết kế phù hợp nhất với thói quen sử dụng mạng của người Việt Nam.
Bằng việc sử dụng các công nghệ web mới nhất hiện nay, thiết kế hệ thống
uyển chuyển và sở hữu những tính năng độc đáo, NukeViet sẽ giúp bạn triển khai
các ứng dụng web từ nhỏ đến lớn một cách nhanh chóng và tiết kiệm: từ các
website cá nhân cho tới các cổng thông tin điện tử; từ các gian hàng trực tuyến
cho tới các mạng xã hội
Sự phát triển của các phiên bản nuke
Việc “review” lại sự phát triển của các phiên bản Nukeviet sẽ giúp chúng ta
hình dung được người làm ra nó đã áp dụng những nguyên lý sáng tạo nào để
hoàn thiện sản phẩm này.
NukeViet 1.0: Phiên bản thế hệ 1
Phiên bản đầu tiên của NukeViet là phiên bản NukeViet 1.0 (hay NukeViet
1.0.0) có nguồn gốc từ PHP-Nuke 6.5. Các phiên bản tiếp theo có dạng 1.0.x, về
cơ bản chúng chỉ là những bản được vá lỗi do đó thường gọi là NukeViet 1.0
Điểm mạnh của NukeViet 1.0: Có một số lượng rất lớn các thành phần mở
rộng (Module, block); giao diện (theme) được chuyển đổi từ bản dùng cho PHP-
Nuke cũng như được viết mới bởi người sử dụng.
Dòng phiên bản đã đã ngưng hỗ trợ từ năm 2007 nhưng hiện vẫn còn một số ít
các website vẫn sử dụng.
Phiên bản 2.0 beta
Phần nhân của NukeViet 2.0 beta được viết lại rất nhiều. Nếu như NukeViet
1.0 chỉ là bản Việt hóa và cải tiến từ PHP-Nuke thì NukeViet 2.0 beta được viết
mới rất nhiều.
Điểm mạnh của NukeViet 2.0: NukeViet 2.0 có nhiều lớp bảo mật tốt hơn, tối
ưu kết nối vào CSDL, một số tính năng được cải tiến hơn so với NukeViet 1.0
Phiên bản test "hậu" 2.0 beta
Phiên bản được giới thiệu vào tháng 4 năm 2007 nhưng không phát hành: xử
lý hình ảnh trực tuyến, đa ngôn ngữ toàn diện, đa giao diện theo ứng dụng, sử
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 20
dụng Ajax, hướng tới thương mại điện tử, khả năng nhận diện bản nâng cấp hệ
thống, tự động bóc tách dữ liệu từ các nguồn khác nhau, tự động sao lưu CSDL.
Phiên bản chính thức: NukeViet RC
Dòng phiên bản chính thức của NukeViet 2.0 được đánh dấu từ phiên bản
NukeViet 2.0 RC1 phát hành ngày 24/05/2009. Đây là phiên bản nâng cấp đầu
tiên kể từ sau khi bản beta cuối cùng ra mắt. Đây cũng là bản đầu tiên có
hackmod (sửa đổi hệ thống PHPBB) để kết nối với mã nguồn PHPBB3 (trước đó
NukeViet 2.0 beta chỉ tích hợp sẵn PHPBB2).
Đây là phiên bản mà NukeViet mang nhiều tính năng nhất từ trước đến nay.
Với khả năng tùy biến cực cao, khả năng đa giao diện, độ bảo mật và hoàn thiện
cũng hơn hẳn các phiên bản trước. Ngoài việc nâng cấp, sửa lỗi, phiên bản này
còn bổ sung nhiều tính năng và thêm một loạt module như:
Addnews (Gửi bài viết);
AutoTranslate (Dịch tự động);
Contact (Liên hệ, thay cho module Feedback của bản 1.x và 2.beta);
Rss (Kênh tin chia sẻ; RSS được tạo tự động bằng cách thả file rss.php
phù hợp vào thư mục chứa module tương ứng cần xuất RSS);
Sitemap (Sơ đồ site);
Support (Hỗ trợ);
Weblinks (Liên kết website).
Vì những khác biệt về lập trình nên các thành phần mở rộng của NukeViet 1.0
không sử dụng chung với NukeViet 2.0 được. Các thành phần mở rộng của bản
2beta có thể sử dụng chung với bản RC2 nhưng bị hạn chế tính năng.
NukeViet 1.0 và NukeViet 2.0 có cùng cấu trúc 3 lớp, bao gồm:
a. Lớp lõi (nhân hệ thống) là cấu trúc chính để vận hành NukeViet
b. Lớp thành phần mở rộng bao gồm 2 loại:
Module: Một dạng cấu trúc mở rộng của NukeViet cho phép người sử
dụng có thể thêm các tính năng khác nhau cho Website của mình như:
Quản lý trò chơi trực tuyến (module Games), Nghe nhạc trực tuyến
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 21
(module Music, NVMusic ), Thư viện Web (module Web Links), Dịch
vụ Blog (module Blog), Album ảnh trực tuyến (module Albums, Photos
), Lưu bút (module Love, Wishing và Guestbook ), Hệ thống rao vặt,
quảng cáo, tạo RSS (module RSS-News), Quản lý Truyện (module Pages)
Block: Một dạng cấu trúc đơn giản giúp thêm các thành phần nhỏ vào
website dưới dạng các khối nhỏ trên Web.
c. Lớp giao diện (Theme) cho phép người lập trình có thể tạo ra các giao diện
khác nhau cho NukeViet. Đây là thành phần quyết định giao diện mà
Website tương tác với người sử dụng
Ưu điểm của Nukeviet 2.0:
Mã nguồn thuần Việt, cộng đồng người dùng Việt Nam đông đảo nên dễ
tìm thấy sự hỗ trợ bằng tiếng Việt.
Quản lý đơn giản, đặc biệt module News rất phù hợp với sở thích người
Việt.
Linh hoạt trong việc quản lý giao diện, dễ tùy biến.
Có thời gian phát triển lâu dài, có nhiều tài liệu hướng dẫn, tạo dựng nền
tảng vững chắc trong cộng đồng.
Mã nguồn đơn giản, dễ dàng lập trình về giao diện.
Nhược điểm của Nukeviet 2.0:
Cho tới bản 2.0 RC, NukeViet còn những nhược điểm sau:
Chưa sử dụng Ajax (cho đến bản NukeViet 2.0 beta 2)
Vẫn sử dụng chuẩn HTML 4.1
Mức độ cài đặt tiện ích (Addons: Block, Modules, Themes) chưa được tự
động hóa cao.
NukeViet 2.0 trở về trước, người dùng cũng nhiều, kẻ chê cũng không ít.
Nhưng nhắc đến nguồn mở có yếu tố của Việt Nam nhất là Web mã nguồn mở,
không thể không nhắc đến NukeViet. Mặc dù là mã nguồn mở miễn phí nhưng
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 22
NukeViet "được" nhiều công ty thiết kế web sửa đổi để bán với giá cao. Nhiều
Website sử dụng NukeViet nhưng không ghi xuất xứ mã nguồn.
NukeViet 3.x
Kể từ phiên bản 3, NukeViet được quản lý theo mô hình chuyên nghiệp của
doanh nghiệp, trong đó đội lập trình chính được trả lương để thực hiện các dự án
và phát triển bộ mã nguồn NukeViet.
Điểm khác biệt về tính năng của Nukeviet 3 với các phiên bản trước nó:
So với phiên bản cũ, NukeViet 3 đã khắc phục hoàn toàn nhược điểm của
các phiên bản cũ trong khi vẫn giữ được các đặc tính vốn được người sử
dụng ưa chuộng. NukeViet 3.0 được cho là một cuộc cách mạng của mã
nguồn mở NukeViet.
Toàn bộ mã nguồn được viết mới hoàn toàn dựa trên các công nghệ mới
nhất gồm PHP5 và MySQL5. Website tạo ra đạt chuẩn xHTML 1.0 và
CSS 2.1.
So với các hệ thống khác, NukeViet 3 xây dựng dựa trên cấu trúc hướng
module. Theo đó, block và theme chỉ là những nhân tố phục vụ cho
module. Module, block, theme được tổ chức phân lập và tách biệt hoàn
toàn khỏi nhau và không ảnh hưởng đến tính toàn vẹn của hệ thống nếu
xảy ra lỗi. Đây là điểm khác biệt rất lớn mà nhờ cách tổ chức này người ta
cho rằng NukeViet an ninh và bảo mật hơn các hệ thống khác cùng loại.
Hệ thống NukeViet được thiết kế rất rõ ràng, mạch lạc, theo đó NukeViet
phân cấu trúc thành 2 tầng, 1 lớp (xem hình 3.2).
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 23
Hình 3.2: Cấu trúc mã nguồn Nukeviet
Tầng nền tảng (Core) hay còn gọi là "nhân hệ thống": Chứa các thư viện và
module vận hành hệ thống. Nếu một trong các thành phần này bị lỗi có thể làm
ảnh hưởng một phần hoặc toàn bộ hệ thống. Tầng này chiếm 10% dung lượng và
dòng code của NukeViet nhưng được sử dụng trong 90% các hoạt động của
website.
Tầng module: bao gồm module admin, module site, các block (kèm theo
module hoặc chạy độc lập), các cronjob
Lớp giao diện: bao gồm giao diện admin, giao diện module và giao diện
site.
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 24
Đặc điểm chính:
Module và giao diện (theme) của NukeViet được gọi chung là các Addons
(thành phần mở rộng). Các thành phần mở rộng này có thể được cài đặt
hoặc gỡ bỏ mà không làm ảnh hưởng đến hệ thống.
Phần quản trị của hệ thống nằm toàn bộ trong thư mục admin của hệ
thống. Nó được bảo vệ bằng nhiều lớp bảo mật khác nhau.
Phần quản trị của module nằm trong thư mục admin của module. Nó được
gọi và tương tác qua phần quản trị của hệ thống nên được hệ thống kiểm
soát và đảm bảo tính an toàn, bảo mật.
Theo nguyên lý thiết kế hướng module, block và theme được bố trí nhằm
phục vụ module do đó hình thành khái niệm block của module và theme
của module. Theo đó tệp tin block của module nằm trong thư mục chứa
module nhưng có thể hiển thị ở các khu vực ngoài site. Nếu block không
thuộc module nào thì nó được đặt trong thư mục includes/blocks của hệ
thống. Tương tự, ngoài theme cho hệ thống còn có theme cho block và
theme cho module (được bố trí trong thư mục theme).
Dữ liệu được người quản trị tương tác từ Admin Control Panel thông qua
trình duyệt, được nhân hệ thống và các module (admin module hoặc
website module) tham gia xử lý, cuối cùng theme sẽ chịu trách nhiệm việc
tổ chức và trình bày thông tin cho người truy cập xem.
3.2. Các nguyên lý sáng tạo được áp dụng trong NukeViet
Nguyên tắc phân nhỏ
Nguyên tắc phân nhỏ là chia đối tượng thành các phần độc lập, tăng mức độ
phân nhỏ đối tượng. Trong Nukeviet, nguyên tắc phân nhỏ được thể hiện rất rõ
trong việc phân chia toàn bộ mã nguồn thành các thành phần tùy theo chức năng
(xem hình 3.3):
BÀI THU HOẠCH MÔN HỌC: PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC
HỌC VIÊN THỰC HIỆN: NGUYỄN VĂN KHOA – MSHV: CH1101016 Page 25
Hình 3.3: Các thành phần cấu thành bộ mã nguồn Nukeviet
Như hình trên, ta thấy rằng Nukeviet được chia thành các phần chính:
Phần Admin Control Panel: dùng để quản trị nội dung web.
Phần Core: Bao gồm các chức năng hỗ trợ, như kết nối cơ sở dữ liệu,
upload file…vv…
Phần module: mỗi module là một chức năng khác nhau, nó bao gồm
module tin tức, module giới thiệu, module bán hàng, module thống kê,
module người dùng (thành viên), module quảng cáo, module album hay
module videos …
Phần block: mỗi module thì có nhiều block, block là một trong những thể
hiện rõ nhất của nguyên tắc phân nhỏ: các block là những khu vực hiển thị
trên web, người dùng có thể tạo block, chỉnh sửa nó và đặt vào bất cứ nơi
nào trên module nhất định.
Phần template: mã nguồn Nukeviet hỗ trợ đa template, mỗi template là
một giao diện khác nhau.