Thứ Bảy, 27 tháng 12, 2008

Proxy Là Gì?

- Proxy là một internet server làm nhiệm vụ chuyển tiếp thông tin và kiểm soát, tạo sự an toàn cho việc truy cập internet của các máy khách, còn gọi là khách hàng sử dụng dịch vụ internet. Trạm cài đặt proxy gọi là proxy server. Proxy hay trạm cài đặt proxy có địa chỉ IP và một cổng truy cập cố định. Ví dụ : 123.234.111.222:80. Địa chỉ IP của proxy trong ví dụ là 123.234.111.222 và cổng truy cập là 80.
- Chức Năng của proxy :
Đối với một số tổ chức người ta sử dụng proxy vào việc :
  • Proxy chia sẽ đường truyền : giúp nhiều máy truy cập internet thông qua một máy, mà máy này gọi là proxy server. Chỉ duy nhất máy proxy này cần Modem và Acount truy cập internet. Các máy Client (Các máy trực thuộc) muốn truy cập internet qua máy này chỉ cần nối mạng LAN tới máy proxy và truy cập địa chỉ yêu cầu. Những yêu cầu của người sử dụng sẽ qua trung gian proxy server thay thế cho server thật sự mà người sử dụng cần giao tiếp, tại điểm trung gian này công ty kiểm soát được mọi giao tiếp từ trong công ty ra ngoài internet và từ internet vào máy công ty. Sử dụng proxy, công ty có thể cấm nhân viên truy cập những địa chỉ web không cho phép, cải thiện tốc độ truy cập nhờ sự lưu trữ cục bộ các trang web trong bộ nhớ của proxy server và dấu định danh địa chỉ của mạng nội bộ gây khó khăn cho việc thâm nhập từ bên ngoài vào các máy của công ty.
Đối với ISP (Internet Service Provide) :
  • Do trên mạng internet có lượng thông tin rất phong phú, theo quan điểm của từng quốc gia hay địa phương, các nhà cung cấp dịch vụ internet khu vực đó sẽ phối hợp proxy với kỹ thuật Tường Lửa (Fire Wall) để tạo ra một bộ lọc gọi là firewall proxy nhằm ngăn chặn các thông tin độc hại hoặc trái thuần phong mỹ tục đối với quốc gia hay địa phương đó. Địa chỉ các Websit mà khách hàng yêu cầu truy cập sẽ được lọc tại bộ lọc này, nếu địa chỉ không bị cấm thì yêu cầu của khách hàng tiếp tục được gởi đi, tới các DNS Server của các nhà cung cấp dịch vụ. Firewall proxy sẽ lọc tất cả các thông tin từ internet gởi vào máy của khách hàng và ngược lại.
  • Websit : ???
- Ý Nghĩa Của Proxy :
  • Làm nhiệm vụ của một bộ lọc thông tin, nó còn tạo ra được sự an toàn cho các khách hàng của nó, firewall proxy ngăn chặn hiệu quả sự xâm nhập của các đối tượng không mong muốn vào máy của khách hàng. Proxy lưu trữ được các thông tin mà khách hàng cần trong bộ nhớ, làm giảm thời gian truy tìm, làm cho việc sử dụng băng thông hiệu quả.
  • Mọi yêu cầu của máy khách phải qua proxy server, nếu địa chỉ IP có trên proxy, nghĩa là website này được lưu trữ cục bộ thì trang này sẽ được truy cập mà không cần phải kết nối internet. Nếu không có trên proxy server và trang này không bị cấm, yêu cầu sẽ được chuyển đến server thật, DNS Server và ra internet. Proxy server lưu trữ cục bộ các trang web thường truy cập nhất trong bộ đệm, làm giảm chi phí, tốc độ hiển thị trang web nhanh.
  • Proxy server bảo vệ mạng nội bộ khỏi bị xác định bởi bên ngoài bằng cách mang lại cho mạng 2 định danh : một cho nội bộ, một cho bên ngoài. Điều này tạo ra một "bí danh" đối với thế giới bên ngoài? gây khó khăn nếu người dùng tự tung tự tác hay các tay bẻ khóa muốn xâm nhập trực tiếp máy nào đó.
- Cách Sử Dụng Proxy Hiệu Quả :
  • Do các proxy có quy mô bộ nhớ khác nhau và số lượng người đang sử dụng proxy nhiều ít khác nhau, proxy server hoạt động quá tải thì tốc độ truy cập internet của khách hàng bị chậm. Mặt khác một số websit khách hàng có đầy đủ điều kiện nhân thân để đọc, nghiên cứu nhưng bị tường lửa chặn không truy cập được thì biện pháp đổi proxy để truy cập là điều cần thiết nhằm đảm bảo công việc.

Thứ Ba, 23 tháng 12, 2008

Xem Blog

- Xem blog của Yahoo thì gõ vào trình duyệt : 360.yahoo.com/địa chỉ email yahoo của người cần xem.
ví dụ : 360.yahoo.com/nguyenhuutrucvn
- Xem blog của Google thì gõ vào trình duyệt : tên blog.blogspot.com
ví dụ : nguyenhuutruc.blogspot.com

Thứ Hai, 22 tháng 12, 2008

DNS Server

DNS SERVER là gì ?
- DNS : Viết tắt trong Tiếng Anh là Domain Name System. Là hệ thống phân giải tên được phát minh vào năm 1984 cho Internet, chỉ một hệ thống cho phép thiết lập tương ứng giữa địa chỉ IPTên Miền.
- Chức Năng Của DNS : Mỗi website có một tên (Là tên miền hay đường dẫn URL : Universal Resource Locator) và một địa chỉ IP. Địa chỉ IP gồm 4 nhóm số cách nhau bằng dấu chấm. Khi mở một trình duyệt Web và nhập tên website, trình duyệt sẽ đến thẳng website mà không cần phải thông qua việc nhập địa chỉ IP của trang web. Quá trình "Dịch" tên miền thành địa chỉ IP để cho trình duyệt hiểu và truy cập được vào website là công việc của một DNS Server. Các DNS trợ giúp qua lại với nhau để dịch địa chỉ "IP" thành "Tên" và ngược lại. Người sử dụng chỉ cần nhớ "Tên", không cần nhớ địa chỉ IP (Địa chỉ IP là những con số rất khó nhớ).
- Nguyên Tắt Làm Việc Của DNS :

Cookie and Session

Cookie là gì ?
- Cookie là một đoạn dữ liệu được truyền đến Browser từ Server, đoạn dữ liệu sẽ được browser lưu trữ (Trong memory hoặc trên đĩa) và sẽ gởi ngược lên lại server mỗi khi browser tải một trang web từ server. Những thông tin được lưu trữ trong cookie hoàn toàn phụ thuộc vào website trên server. Mỗi website có thể lưu trữ những thông tin khác nhau trong cookie, ví dụ lần cuối bạn ghé thăm website, đánh dấu bạn đã login hay chưa, ...
- Cookie được tạo ra bởi website và gởi tới browser, do vậy 2 website khác nhau (Cho dù cùng Host trên một Server) sẽ có 2 cookie khác nhau gởi tới browser. Ngoài ra, mỗi browser quản lý và lưu trữ cookie theo cách riêng của mình, cho nên 2 browser cùng truy cập vào một website sẽ nhận được 2 cookie khác nhau.
session là gì ?
- Session là khoản thời gian người dùng giao tiếp với một ứng dụng. Session bắt đầu khi người dùng truy cập vào ứng dụng lần đầu tiên, và kết thúc khi người dùng thoát khỏi ứng dụng.
- Mỗi session sẽ có một định danh (ID), session khác nhau sẽ có ID khác nhau. Trong ngữ cảnh ứng dụng web, website sẽ quyết định khi nào session bắt đầu và kết thúc.
- Trong 1 session, website có thể lưu trữ một số thông tin như đánh dấu bạn đã login hay chưa, những bài viết nào bạn đã đọc qua, ...
S0 Sánh Cookie Và Session :
- Cookie và Session đều có chung mục đích là lưu giữ data để truyền từ 1 trang web sang 1 trang web khác (Trên cùng website). Nhưng phương thức lưu trữ và quản lý data có phần khác nhau.
- Cookie sẽ được lưu trữ tại browser, do browser quản lý và browser sẽ tự động truyền cookie ngược lên server mỗi khi truy cập vào một trang web trên server.
- Dữ liệu lưu trữ trong session sẽ được ứng dụng quản lý, trong ngữ cảnh web, ứng dụng ở đây là website và webserver. Browser chỉ truyền ID của session lên server mỗi khi truy cập vào website trên server.
- Mỗi session gắn với một định danh (ID). ID sẽ được tạo ra trên server khi session bắt đầu và được truyền cho browser. Sau đó browser sẽ truyền lại ID này lên server mỗi khi truy cập vào website. Như vậy ta có thể thấy rằng sẽ rất tiện nếu như session ID được lưu trữ trong cookie và được browser tự động truyền lên server mỗi khi truy cập vào website.
Sử Dụng Cookie Hay Session ?
- Sử dụng cái nào là tùy thuộc lựa chọn của Lập Trình Viên, tuy nhiên session thường được ưa chuộng hơn Cookie vì một số lý do sau :
  • Trong một số trường hợp cookie không sử dụng được, có thể browser đã được thiết lập để không chấp nhận cookie. Lúc đó session vẫn sử dụng được bằng cách truyền session ID giữa các trang web qua URL.
  • Lượng data truyền tải giữa browser và server : chỉ mỗi session ID được truyền giữa browser và server, data thực sự được website lưu trữ trên server.
  • Bảo mật : càng ít thông tin được truyền tải qua lại giữa browser và client càng tốt, và càng ít thông tin được lưu trữ tại client càng tốt.

Chủ Nhật, 21 tháng 12, 2008

Hẹn Giờ Tắt Máy Tính

Dành cho máy dùng Window
- Vào Start/run gõ cmd, Enter.
- Xuất hiện màn hình DOS.
- Gõ câu lệnh : shutdown -s -t 60 (giải thích 60 là đơn vị giây, ví dụ ở đây là hẹn giờ tắt máy 60 giây, muốn hẹn giờ bao lâu thì nhập số giây vào). Enter. xong.

- Muốn xóa bỏ hẹn giờ tắt máy thì tại cửa sổ DOS gõ câu lệnh : shutdown -a
Enter.

Định Dạng Trang HTML

- Làm thế nào để định dạng khoảng cách đều nhau trên trình duyệt (như Tab trong Word) của html?
yêu cầu ngày mai đọc lại php và đặt tên giống như giáo trình. gấp.

Thứ Tư, 17 tháng 12, 2008

Hiển thị debug trong FileFox

- Mở Filefox/menu tools/options/main/chọn Manage Add on/extensions/firebug/ chọn Get add on/kích chuột vào nút add to Filefox.

IDE Tuyệt vời

- Dùng Eclipse cho java.
- Dùng Eclipse pdt cho php.

Ý nghĩa các dấu trong PHP

- $ : Khai báo biến. ví dụ :
- // : chú thích trong php.
- /* đoạn chú thích*/ : dùng chú thích nhiều dòng.
- : <!--đoạn chú thích--> dùng chú thích trong html.

Ý nghĩa câu lệnh PHP

- echo : in ra một cái gì đó, nó giống như System.out.print trong java.
- die : In ra câu thông báo và kết thúc chương trình.
- mysql_connect : Kết nối vào CSDL mysql Server.
- mysql_close : Đóng kết nối đã được thiết lập trước đó.
- mysql_error : Lấy câu thông báo lỗi (nếu có) trả về từ mysql server.
- mysql_fetch_row : Lấy một row kết quả từ câu lệnh SELECT.
- mysql_fetch_assoc() : Trả về một Array mà các phần tử sẽ được truy cập qua tên, với tên được lấy từ tên các cột của table.
- mysql_free_result : Giải phóng bộ nhớ sau khi lấy kết quả trả về từ câu lệnh SELECT.
- mysql_query : Thực thi một câu lệnh SQL.
- mysql_db : Chọn CSDL để làm việc.
- mysql_real_escape_string : Escape một chuỗi trước khi chèn vào câu lệnh SQL.

Thứ Ba, 16 tháng 12, 2008

Cách thực hành PHP

Bắt đầu từ ngày 17-dec-2008 phải thực hành php chứ đừng đọc lý thuyết nữa. Khi nào bí thì mới đọc lý thuyết.
1. Chạy chương trình xampp_start.exe (Để chạy webserver).
2. Tạo file *.php trong thư mục htdocs. Theo đường dẫn sau : F:\java\webserver\htdocs\*.php
3. Mở trình duyệt Filefox gõ http://localhost/hi.php (hi.php là ví dụ về tên tập tin hi.php, nếu nó nằm trong thư mục thì phải gõ vào đường dẫn thư mục chứa file php rồi đến file php).

Check Mail Yahoo bằng Filefox

- Khi dùng Yahoo Messenger thấy xuất hiện có mail mới, mình bấm vào nút đọc mail thì ra IE. Làm sao có thể ra trực tiếp filefox nhỉ?

Thứ Sáu, 12 tháng 12, 2008

Blog Friends

- Đỗ Hồng Quang : http://vinhquangtrencao.blogspot.com/
- Nguyễn Thị Quỳnh Thương : http://blog.360.yahoo.com/blog-7FTW088zdLIQabNBsKS7AZKKJpMN
- An : http://uocmovacuocsong.blogspot.com/

Thứ Năm, 11 tháng 12, 2008

Đọc lý thuyết PHP

- Tác dụng Dấu nháy đơn đối với php : Nếu chuỗi của bạn có chứa các biến (Bắt đầu bằng $), bạn bao lại bằng dấu nháy đơn thì biến đó biến thành chuỗi luôn, chớ không được hiểu là một biến như cách bao bằng dấu nháy đôi.
- Tất cả những biến khai báo trong PHP đều được bắt đầu với dấu đôla $. Dù cho biến của bạn kiểu Chuỗi, Nguyên hay Thập phân hoặc thậm chí là Mảng thì chúng không có gì khác biệt nhau. PHP chỉ theo dõi dữ liệu chứa trong biến thay đổi như thế nào thôi.

Thứ Tư, 10 tháng 12, 2008

Ghi đĩa CD trong Window XP

Muốn ghi đĩa trước hết máy tính phải có ổ đĩa ghi(CD WRITER), máy cài Win XP :
- Đưa đĩa trắng cần ghi vào ổ đĩa.
- Chọn thư mục, file cần ghi.
- Kích chuột phải trên thư mục, file cần ghi, chọn Send to/CD DRIVE. Ổ CD sẽ tạo ra một ánh xạ các tập tin cần ghi.
- Trong cửa sổ ổ ghi, kích chuột phải chọn Write These Files to CD.
- Xuất hiện hộp thoại : nhập tên cho đĩa CD, Bấm Next để ghi.
- Chờ đợi cho máy ghi xong thì các ánh xạ lúc trước sẽ bị xóa, và chỉ còn những thư mục và tập tin cần ghi.
- lấy đĩa ra, việc ghi hoàn thành.

Hướng dẫn sử dụng CPanel

Hướng dẫn sử dụng Cpanel:

source(http://www.sieuhost.com/support/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=39&nav=0,2) 


1. Tạo Email Account - Creating a POP email account 

2. Xóa Email Account - Deleting a POP3 email account 

3. Tạo tài khoản mail mặc định - Creating a default (catchall) email account 

4. Tạo trả lời mail tự động - Creating an autoresponder 

5. Tạo email chuyển tiếp - Creating an E-mail Forwarder 

6. Tạo FTP Account - Creating a FTP Account 

7. Xóa FTP Account - Deleting a FTP Account 

8. Tài khoản FTP ẩn danh - Anonymous FTP 

9. Cấu hình Thư mục được bảo vệ - Password Protecting Directories 

10. Tạo subdomain - Creating a subdomain 

11. Xóa subdomain - Deleting a subdomain 

12. Tạo MySQL database - Creating a MySQL Database 

13. Xóa MySQL database - Deleting a MySQL Database 

14. Tạo MySQL user - Creating a MySQL User 

15. Cấp quyền cho MySQL user - Adding users to a MySQL Database 

16. Truy cập MySQL remote - Adding Access Hosts to MySQL 

17. Quản lý Frontpage Extension - Managing Frontpage Extensions 

18. Tạo trang báo lỗi - Creating Custom Error Pages 

19. Bảo vệ chống ăn cắp link - Hotlink Protection 

20. Link chuyển tiếp - URL Redirection 

21. Đổi password truy cập - Changing your password 

22. Tạo Addon Domain - Creating an add-on Domain 

23. Thay đổi file mặc định - Using Index Manager 

24. Quản lý park domain - Adding and Deleting a Parked Domain 

25. Chặn ip truy cập website - Banning IPs from your website 

26. Dùng file manager - Using File Manager

Thứ Ba, 9 tháng 12, 2008

Ý nghĩa các thẻ HTML

src : viết tắt của source. Giá trị của thuộc tính src là địa chỉ URL của hình ảnh mà bạn muốn hiển thị trên trang web.
Cú pháp để xác định một tấm hình .
Trình duyệt sẽ hiển thị hình ảnh nơi mà có thẻ img (image) được chèn trong tài liệu. Nếu bạn muốn thêm thẻ image vào giữa một đoạn văn, thì trình duyệt sẽ hiện thị đoạn văn thứ nhất trước, sau đó đến image, tiếp đến là đoạn văn thứ hai.

Thứ Hai, 8 tháng 12, 2008

Đưa Website lên Google.com.vn

Làm thế nào để đưa một website lên trang tìm kiếm của Google?

xem đây : http://www.google.com.vn/addurl/?continue=/addurl. Vào đây rồi add URL trang web của bạn, rồi sau đó chờ đợi vài ngày thì biết kết quả.
Mình đã đăng kí thành công trang web của thanh hòa rồi. Phải chờ đợi vài ngày Google mới chấp nhận đưa một website lên trang tìm kiếm của mình. vào google gõ thanhhoapcs sẽ ra trang web của công ty mình.

Thay đổi trong Adiministrator-php

nhập thêm tuyển dụng một trưởng phòng trong phần tuyển dụng:
đăng nhập vào administrator/content/all content item/ chọn thư mục tuyển dụng, nhập dòng mới/ save.

Đổi tên thư mục:
vào control panel, đăng nhập vào:
- bấm chọn File Manager/public_html

Chủ Nhật, 7 tháng 12, 2008

Tầm sư học PHP

Tập võ mà không học tâm pháp thì đảm bảo có ngày tẩu hỏa nhập ma. Lập trình chắc cũng thế, thỉnh thoảng cũng phải tìm tâm pháp mà đọc. Tình cờ tìm được bài này của anh pcdinh., post nguyên văn lại đây cho bà con cùng đọc. Mặc dù trong bài này, tác giả lấy php ra làm ví dụ nhưng hoàn toàn có thể áp dụng cho việc học tập và nghiên cứu món võ công lập trình nói chung.

Để học bất cứ một ngôn ngữ lập trình nào những người mới bao giờ cũng phải trải qua 6 giai đoạn.

1. Quan niệm
2. Thử nghiệm
3. Trải nghiệm
4. Kiểm nghiệm
5. Chiêm nghiệm
6. Sáng tạo

Quan niệm

Hãy xác định nhiệm vụ học cho các bạn. Không có định hướng, không còn tầm nhìn bao quát về thế giới phần mềm và không có cá tính, bạn chắc rồi cũng rời bỏ sớm ngành phần mềm nếu không thì cũng chỉ là một coder hay tester ba phải, người mà lúc nào cũng chỉ được coi là một nhân vật bình thường về mọi mặt, không có sự nổi bật và luôn đứng đầu trong đề cử danh sách về hưu non.

Tiêu chuẩn số 1 của một nhà phát triển phần mềm giỏi là sự đề cao tự học. Trường lớp hay trung tâm không phải là nơi đáng tin cậy để học vì người giỏi ko bao giờ chịu mài đũng quần trên ghế bục giảng để giảng đi giảng lại một thứ kiến thức liên tục cũ đi sau vài tháng. Nếu người giỏi thích nói chuyện thì conference là chỗ của họ vì họ thích trao đổi với các industry expert chứ không phải là dọa dẫm học viên.

Diễn đàn này cũng có thể là nơi để học hỏi nhưng đừng nghĩ là người có hiểu biết sẽ trả lời bạn một cách tường tận và chi tiết như thể họ là ông nội của bạn vậy. Muốn họ trả lời hãy học cách hỏi, trước khi hỏi hãy search. Sau khi nhận được câu trả lời hãy search.

Thử nghiệm

PHP là một công nghệ bao gồm có 6 bộ phận:
+ Bộ thông dịch
+ Ngôn ngữ
+ Cấu trúc dữ liệu
+ Các thuật toán trên dữ liệu hay còn gọi là các API
+ Các công nghệ đi kèm hoặc có thể giao tiếp được với PHP.
+ Các best practice đặc thù của riêng công nghệ đó.

Hãy tập cài đặt bộ thông dịch PHP, Apache, MySQL và chạy triển khai các ứng dụng PHP có sẵn.
Hãy thử nghiệm ngôn ngữ PHP với các vòng lặp, điều kiện, in, nhúng HTML, làm quen function, method, class
Cấu trúc dữ liệu là một phần khác của PHP. Ở công nghệ này Hash, Array và Map đều được gộp vào kiểu array. Rất dễ chịu cho bạn khi bạn đã từng làm quen với các cấu trúc dữ liệu của C# hay Java.
Cấu trúc dữ liệu không phải là một cấu trúc chết. PHP cung cấp khoảng hơn 1000 function (API) xử lý nó. Array là một kiểu như vậy. DOM là một kiểu khác. Làm bài tập trên các API dạng này là một cách tốt để làm quen với ngôn ngữ và bộ thông dịch. Các bài tập có thể chỉ là in ra một cái resume, tạo một cái layout đơn giản nhất từ việc sử dụng include, tạo một form nhập liệu đơn giản, tạo một form upload đơn giản...

Tài liệu sách vở thì có rất nhiều. Bạn nên đọc các chương trong PHP Manual. Đọc các tutorial trên mạng và luyện tiếng Anh. Các ebook đáng chú ý:

++ Apress Beginning PHP and MySQL 5 From Novice to Professional 2nd Edition (2006)
++ Apress Beginning PHP and PostgreSQL E.Commerce (2006)
++ Prentice Hall PHP 5 Power Programming (2004)
++ O'reilly Programming PHP 2nd Edition (2006)

Các công nghệ đi kèm với PHP là một thế giới cực kì phức tạp. Bạn có thể sẽ làm quen với các công nghệ opcode hay biên dịch mã PHP ra mã nhị phân để chạy thay vì nhìn nó dưới dạng text. Nó là một extension nguồn mở của công nghệ PHP. Bạn cũng có thể quan tâm đến việc sử dụng PHP để giao tiếp với các hệ thống con trong Linux như shared memory, gettext, socket, stream... Socket và stream là các công cụ vạn năng để PHP giao tiếp với các hệ thống phần cứng và phần mềm. Bạn cũng có thể quan tâm đến sử dụng PHP và C trên cùng một file PHP thông thường hay nhúng mã dll của các thư viện trên Windows vào PHP và sử dụng lại. PHP làm việc này thông qua việc sử dụng một ext. mã nguồn mở do Wez viết có thể tải về PECL. Bạn cũng có thể quan tâm đến việc sử dụng PHP để viết các ứng dụng desktop mà bạn có lẽ vẫn dùng VB để viết bằng cách sử dụng thư viện GTK.

Tuy nhiên điều bạn có thể sẽ quan tâm hơn cả là liệu PHP được hỗ trợ như thế nào để giao tiếp với các hệ thống khác. PHP có thư viện để giao tiếp với Active Directory, LDAP, các hệ thống hỗ trợ SMTP/POP3/IMAP/FTP/SSL, SMS Gateway, GIS server, Router... PHP được Java hỗ trợ tốt để trở thành một công nghệ trên Java platform và nhờ đó bạn có thể gọi các gói Java để sử dụng lại hay sử dụng các application server của Java như Sun One Webserver, Glassfish application server thay cho Apache server hoặc sử dụng các dịch vụ Java khác như OpenSSO. JSON và XML được hỗ trợ buit-in trong PHP cũng là phần rất đáng tìm hiểu vì các nhà công nghiệp phần mềm ở các tổ chức chuẩn công nghiệp như OASIS, ECMA hay W3C sử dụng các gọi này để giúp PHP hỗ trợ kiến trúc Webservice/SOA, SDA, MDA (phần này do IBM đóng góp cho cộng đồng PHP).....

Phần PHP giao tiếp tốt nhất có lẽ là database. OCI do Oracle đóng góp, DB2 do IBM đóng góp, libmysql do MySQL AB đóng góp và pgsql do cộng đồng PostgreSQL đóng góp và luôn hỗ trợ các bản database mới nhất. Ngoài ra PHP có sẵn một database server SQLite nhúng đi kèm với mọi bản PHP 5.0+ có thể giúp bạn tiện trong việc xử lý các nhóm data nhỏ nhưng đủ mạnh mẽ như Access.

PHP là một công nghệ đặc biệt và nó có các đặc trưng riêng như share nothing. Điều này làm cho PHP có tính scalability rất tốt và được các mạng xã hội rất chuộng. Không phải ngẫu nhiên mà Tim Bray, giám đốc các công nghệ Web của Sun lại cho là PHP có tính scalable hơn Java trên tầng presentation (http://www.tbray.org/talks/php.de.pdf) trong khi từ trước đến nay họ vẫn tự hào là công nghệ Java cho họ thống trị thế giới web doanh nghiệp, các phần mềm ngân hàng và thị trường viễn thông, vượt trội cho với công nghệ .NET của Microsoft. Đặc điểm này của PHP cũng là tâm điểm tạo ra các best practice mà bạn cần khai thác khi lập trình với PHP.

Trải nghiệm

Là giai đoạn bạn bắt đầu quan tâm đến việc dùng PHP để code các ứng dụng sản xuất bằng việc tự tin sử dụng các API. Giai đoạn này hoàn toàn phù hợp với việc lấy một chứng chỉ Zend nếu bạn muốn. Tuy nhiên Zend chỉ chứng nhận bạn là có kĩ năng để nhớ API, một điều khá cần để code API với notepad Đặc trưng của giai đoạn này là thực hành để có các cảm nhận chung về kĩ năng code. Giai đoạn này sẽ đem lại cho bạn một niềm tự hào trẻ con nhưng rất cần thiết. Giai đoạn này bạn sẽ phải kết hợp PHP với CSS/XHTML, graphic design, SQL, web authoring, Javascript, web hosting, system scripting... Là một lập trình PHP, bạn tự biết mình phải đa tài hơn các lập trình viên ASP.NET, nơi tooling thống trị kĩ năng handcode, hơn Java, nơi mà kĩ năng viết business logic được chú trọng hơn

Kiểm nghiệm

Nếu như giai đoạn trải nghiệm là giai doạn code bung bét, bug tùm lum, bảo mật bằng không thì đây chính là lúc bạn quan tâm đến việc refactor lại code. Bạn có thể tạo ra nhiều function và class hơn trong một nỗ lực cố gắng làm cho chúng modular hơn. Bạn sẽ cố áp dụng các thư viện như PEAR hay Smarty, PHPSavant vào ứng dụng của bạn để làm cho cách code của bạn đi vào chiều hướng ổn định. Lúc này bạn đã thấy được sự cần thiết phải có một coding convention nhất quán (Reference). Bạn sẽ quan tâm đến bảo mật hơn. Giai đoạn này sẽ giúp bạn có một lối tư duy chín chắn hơn nhưng nhiều lo ngại hơn vì bạn cho rằng bạn vẫn chưa thực sự hiểu PHP.

Chiêm nghiệm

Đây là giai đoạn bạn đã tiến đến mức cao. Bạn đã nắm được bản chất của PHP. Bạn quan tâm đến cơ chế PHP vận hành ở mức compiler hơn. Bạn bắt đầu học UML, design pattern, tìm hiểu về các hệ thống lớn. Bạn đã vững vàng trong việc tạo ra các lớp và muốn tổ chức các lớp đó cho khoa học hơn. Bạn quan tâm đến các software engineering processes và tự hỏi làm sao để áp dụng XP, Scrum hay các agile methodology khác. Bạn sẽ quan tâm đến performance, object oriented engineering, database design, system architect, code review. Bạn sẽ bắt đầu chán Pear và ghét Smarty. Việc tương tác giữa PHP và các hệ thống khác như Python, Ruby, Jaav, Erlang .. trở nên quan trọng hơn với bạn lúc này vì cuối cùng thì bạn đã nhận ra PHP có nhiều điểm yếu nhưng không tới mức phải thay thế PHP bằng 1 giải pháp khác. Các công nghệ mã nguồn mở và tự do sử dụng phân phối như Java, Perl, Python, Ruby, JRuby, Groovy, Erlang, Lua... cho phép chúng tận dụng các thư viện của nhau cũng như các điểm mạnh riêng của nhau. Đó là thời gian bạn thấy sung sướng vì đã chọn 1 công nghệ nguồn mở như Java hay PHP hay Python.

Sáng tạo

Là giai đoạn cao nhất và cũng phức tạp nhất vì lúc này bạn đã hiểu công nghệ đến mức có thể triển khai các hệ thống lớn, customize và migrate các ứng dụng phức tạp. Có đủ tư duy và kiến trúc cũng như độ trải nghiệm thực tế để thiết kế hệ thống . Lúc này bạn đã có thể tự đặt cho mình mục tiêu làm các ứng dụng lớn với PHP kiểu như
+ Flickr: 60 000 LOC
+ Digg: 200 000 LOC
Bạn cũng có thể hoàn toàn tự tin dùng PHP để tạo ra các ứng dụng ERP, CRM, Forecast System vốn thường được code bằng Java, ASP.NET hay Delphi có truyền thống đắt đỏ, kén server, đòi hỏi nhiều tài nguyên. Lúc đó, PHP trong tay bạn đã vượt ra khỏi phạm vi của một công nghệ web vì bạn đã biết đủ PHP và mối quan hệ với các công nghệ bổ sung cũng như kinh nghiệm triển khai các công nghệ đó.

Bạn đột nhiên quan tâm nhiều đến các cuộc hội thảo. Bạn thấy kinh nghiệm của các industry expert thật cần thiết và gần gũi với khả năng của bạn. Có thể một lúc nào đó, bạn thấy mình gần như là một thought leader. Một lúc khác, bạn lại muốn nhập vai một C hacker.

Lúc này bạn đã lớn rồi. Ai dám khuyên bạn nữa chứ Cẩn thận, bạn có thể là một PHP Dictator đấy.

Thứ Sáu, 5 tháng 12, 2008

công nghệ phần mềm

Công nghệ phần mềm : Software Engineering, sự áp dụng một cách tiếp cận có hệ thống, có kỹ luật và định lượng được cho việc phát triển, hoạt động và bảo trì phần mềm. Ngành học kỹ nghệ phần mềm bao trùm kiến thức, các công cụ, và các phương pháp cho việc định nghĩa yêu cầu phần mềm, và thực hiện các tác vụ thiết kế phần mềm, xây dựng phần mềm, kiểm thử phần mềm (software testing), và bảo trì phần mềm. Công nghệ phần mềm còn sử dụng kiến thức của các lĩnh vực như : khoa học máy tính, quản lý, toán học, công thái học phần mềm (software ergonomics), và kỹ nghệ hệ thống (System engineering).
- Công thái học phần mềm : (Software Engonomics) :hay môn học về yếu tố con người, là một môn học về khả năng giới hạn của con người. Từ đó có thể tăng khả năng và tối ưu hóa điểm mạnh của con người, hay để bù trừ khiếm khuyết, để bảo vệ điểm yếu.
- Kỹ nghệ hệ thống : (System engineering) :

Thứ Năm, 4 tháng 12, 2008

Upload trang Web

- Cập nhật chữ " ĐANG CẬP NHẬT" vào VÁCH NGĂN VỆ SINH :
administrator/menu content/ all content/ thấy VÁCH NGĂN VỆ SINH, trường đó không? click vào/edit nó. Đưa con trỏ vào khung thứ hai (trước đây có phần gallery cập nhật hình ảnh) để nhập "VÁCH NGĂN VỆ SINH" cuối cùng bấm SAVE để lưu.
- vào administrator của trang Web. Sau đó đăng nhập tài khoản quản trị.

- vào menu Site chọn media manager/stories/chọn thư mục cần up. tiếp tục tìm file để up và up.
- Vào menu content chọn All content item/chọn mục title cần up/
trong bảng màu vàng thứ 2(nằm ở dưới) gõ vào {gallery}thư_mục_cần_up{/gallery}
- Bấm vào nút SAVE để lưu.
-thoát

Backup trang Web

- vào control panel, sau đó đăng nhập vào HOST, chọn Backups. Download tất cả các file trong phần Backup là xong.
ví dụ: http://thanhhoapcs.com.vn:2082/frontend/x/index.html

Thứ Ba, 2 tháng 12, 2008

Học joomla như thế nào?

- Học joomla tức là cách sử dụng joomla để tạo nên một website mong muốn

Đó có thể là website cá nhân, website doanh nghiệp, hay tổ chức, hoặc dùng để giới thiệu sản phẩm, website tin tức, chia sẻ ...

Như vậy mình đã có ý tưởng sẽ xây dựng website có những chức năng gì, dùng để làm gì.

- Cần một webserver: có thể xài xampp cho gọn. Tìm hiểu thế nào là apache, php và mysql

- Download joomla về, theo hướng dẫn và cài đặt

- Thử cấu hình joomla, sử dụng, thêm các module, cài tiếng Việt cho joomla, thay đổi theme (template) cho joomla. Tất cả những cái này đều đã được hướng dẫn kĩ và có sẵn.

Xong giai đoạn này là đã có một website rồi.

Bước thứ 2: sáng tạo

Đọc mã nguồn joomla

Sử dụng các IDE cho việc đọc và lập trình php.

Có thể cấu hình Eclipse để sử dụng cho php
Từ đây học cách viết module cho joomla, viết template cho joomla ...

Easymailpro

Download cai nay : (deadline: 12h 00 Dec 03, 2008)
http://mirror1.glocksoft.com/easymailpro.zip

đổi tên ổ phân vùng ổ cứng

07-07-2006, 11:10
mở Run, gõ diskmgmt.msc, kích phải vào các partition hoặc remove media chọn Change driver letter and path
tham khảo nguồn : http://www.ddth.com/archive/index.php?t-95472.html

Thứ Sáu, 28 tháng 11, 2008

Bảng mã ASCII

ASCII : American Standard Code for Information Interchange. Bảng mã tiêu chuẩn Mỹ cho trao đổi thông tin. Đây là bộ ký tự và bộ mã ký tự dựa trên bảng chữ cái La Tinh, được dùng trong Tiếng Anh hiện đại. Nó thường được dùng để hiển thị văn bản trong máy tính và các thiết bị thông tin khác.

Joomla là gì?

Study by yourself

joomla : Là hệ thống quản trị nội dung mã nguồn mở. Joomla được viết bằng ngôn ngữ PHP và kết nối tới cơ sở dữ liệu MYSQL, cho phép người sử dụng có thể dễ dàng xuất bản các nội dung của họ lên internet hoặc intranet.

joomla có các đặt tính cơ bản là : Bộ đệm trang (page caching) để tăng tốc độ hiển thị, lập chỉ mục, đọc tin RSS (RSS feeds), trang dùng để in, bản tin nhanh, blog, diễn đàn, bình chọn, lịch biểu, tìm kiếm trong site và hỗ trợ đa ngôn ngữ.

Viết thế này có hiểu được joomla ko?

- Joomla là một sản phẩm mã nguồn mở. Vậy mã nguồn mở là : là phần mềm cho phép bất cứ ai cũng có thể nghiên cứu, cải tiến phần mềm và phân phối phần mềm ở dạng chưa thay đổi hoặc đã thay đổi.
- Joomla mà một hệ quản trị nội dung.
Vậy hệ quản trị nội dung là : CMS (Content Management System) cũng được gọi là hệ thống quản lý nội dung. Là phần mềm để tổ chức và tạo môi trường cộng tác thuận lợi, nhằm mục đích xây dựng một hệ thống tài liệu và các loại nội dung khác một cách thống nhất.
- Joomla được viết trên PHP, sử dụng cơ sở dữ liệu MySQL.

Page caching là kĩ thuật giúp cho tăng tốc độ hiển thị web, truy cập web sẽ nhanh hơn. Page caching là gì?

Lập chỉ mục: index. Index giúp cho việc tìm kiếm thông tin trên web dễ dàng và nhanh chóng

RSS feed dùng để đọc tin RSS, công nghệ này đã được sử dụng từ lâu. Rất hiệu quả. Thử dùng xem

Blog. Ok?

Diễn đàn. Ok?

hỗ trợ đa ngôn ngữ...

Joomla! được sử dụng ở khắp mọi nơi trên thế giới, từ những website cá nhân cho tới những hệ thống website doanh nghiệp có tính phức tạp cao, cung cấp nhiều dịch vụ và ứng dụng. Joomla có thể dễ dàng cài đặt, dễ dàng quản lý và có độ tin cậy cao.

Joomla có mã nguồn mở do đó việc sử dụng Joomla là hoàn toàn miễn phí cho tất cả mọi người trên thế giới.

Điều hay ho và quan trọng mà joomla giúp cho chúng ta là nếu chúng ta muốn 1 trang web, sử dụng joomla sẽ giúp chúng ta tiết kiệm đến 99% công sức viết code. Hơn nữa, joomla được cộng đồng đánh giá cao và phát triển trong một thời gian dài với hàng ngàn lập trình viên tham gia.

Joomla có hầu hết mọi thứ mà chúng ta cần. Giống như khi chúng ta cần 1 cái nhà, thay vì phải đi mua gạch đá và tất cả vật liệu hì hục xây trong mấy tháng trời, thì dùng joomla y như chúng ta có sẵn nhà rồi, chỉ cần trang trí chút ít nữa là xài thôi. Mà joomla là cả một biệt thự hay tòa lâu đài, còn giỏi lắm chúng ta tự tay làm được túp lều nhỏ thôi.

Is it ok?

Thứ Năm, 27 tháng 11, 2008

Thực hành Stream and File

/*
* Created on 2 janv. 2009
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package Day30_2009jan1;

/**
* @author Administrator
*
* TODO Tao ra khung Frame hien thi cac thu muc va tap tin trong o dia cung.
* page 156/205 JavaTV
*/
import java.awt.*;//Bo giao dien trinh bay.
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;
public class FileDemo {

public static void main(String[] args) {
Frame fr = new Frame("File Demo");
fr.setBounds(10, 10, 300, 200);
fr.setLayout(new BorderLayout());
Panel p = new Panel(new GridLayout(1, 2));
List list_C = new List();
list_C.add("F:\\");
//tao doi tuong file.
File driver_C = new File("F:\\");
String[] dirs_C = driver_C.list();
for(int i=0; i <>
File f = new File("F:\\" + dirs_C[i]);
//kiem tra xem tap tin co phai la thu muc khong?
if(f.isDirectory()){
list_C.add("
" + dirs_C[i]);
}else{
list_C.add("Day la file: " + dirs_C[i]);
}
}
List list_D = new List();
list_D.add("E:\\");
File driver_D = new File("E:\\");
String[] dirs_D = driver_D.list();
for(int i=0; i <>
File f = new File("E:\\" + dirs_D[i]);
if(f.isDirectory()){
list_D.add("" + dirs_D[i]);
}else{
list_D.add("Day la file:" + dirs_D[i]);
}
}
p.add(list_C);
p.add(list_D);
fr.add(p, BorderLayout.CENTER);
fr.setVisible(true);
fr.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}//end class.

/*
* Created on 29 déc. 2008 by huu truc
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package Day27_2008dec28;

/**
* @author Administrator
*
* TODO Dung DataOutputStream va DataInputStream de ghi va doc
* nhung kieu du lieu khac nhau tren file.
* page 142/205
*/
import java.io.*;
class RWData {

public static void main(String[] args) throws IOException{
//hien thuc interface DataOutput
DataOutputStream dataOut;
DataInputStream dataIn;
int i = 10;
double d = 1023.56;//kieu so thuc
boolean b = true;
try{
//DataOutputStream : Luong xuat co nhung phuong thuc ghi
//nhung kieu du lieu chuan trong java.
//fileOutputStream : Luong xuat cho phep ghi du lieu xuong file.
dataOut = new DataOutputStream(new FileOutputStream("F:\\testdata.txt"));
}catch(IOException exc){
System.out.println("Cannot open file.");
return;
}
try{
System.out.println("Writing " + i);
dataOut.writeInt(i);
System.out.println("writing " + d);
dataOut.writeDouble(d);
System.out.println("Writing " + b);
dataOut.writeBoolean(b);
System.out.println("Writing " + 12.2*7.4);
dataOut.writeDouble(12.2*7.4);
}catch(IOException exc){
System.out.println("Write error.");
}
dataOut.close();
System.out.println();
//Now, read them back.
try{
//DataInputStream : Luong nhap co nhung phuong thuc doc
//nhung kieu du lieu chuan trong java.
//FileInputStream : Luong nhap cho phep doc du lieu tu file.
dataIn = new DataInputStream(new FileInputStream("F:\\testdata"));
}catch(IOException exc){
System.out.println("Cannot open file.");
return;
}
try{
i = dataIn.readInt();
System.out.println("Reading " + i);
d = dataIn.readDouble();
System.out.println("Reading " + d);
b = dataIn.readBoolean();
System.out.println("Reading " + b);
d = dataIn.readDouble();
System.out.println("Reading " + d);
}catch(IOException exc){
System.out.println("Read error");
}
dataIn.close();
}
}//end class.

/*
* Created on Dec 5, 2008 by huu truc
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package Day26_2008dec4;

/**
* @author Administrator
*
* TODO Copy noi dung mot file text den mot file text khac
* page 139/205
*/
import java.io.*;
class CopyFile {

public static void main(String[] args) throws IOException{
int i;
FileInputStream fin;
FileOutputStream fout;
try{
//open input file
try{
fin = new FileInputStream("F:\\source.txt");
}catch(FileNotFoundException exc){
System.out.println("Input File Not Fould");
return;
}
//open output file
try{
fout = new FileOutputStream("F:\\dest.txt");
}catch(FileNotFoundException exc){
System.out.println("Error Opening Output File");
return;
}
}catch(ArrayIndexOutOfBoundsException exc){
System.out.println("Usage : CopyFile from To");
return;
}
//copy file
try{
do{
i = fin.read();
if(i != -1)fout.write(i);
//tra ve -1 khi het file
}while(i != -1);
//nem ra IOException khi co loi doc
}catch(IOException exc){
System.out.println("File Error");
}
fin.close();
fout.close();
}
}//end class

- /*
* Created on Dec 1, 2008 by huu truc
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package Day25_2008nov30;

/**
* @author Administrator
*
* TODO Hien thi noi dung cua mot file ten text.txt luu tai
* D:\text.txt
* page 137
*/
import java.io.*;
class ShowFile {

public static void main(String[] args) throws IOException{
int i;
//Mo mot file de doc du lieu.
FileInputStream fin;
try{
fin = new FileInputStream("D:\\text.txt");
//neu file khong ton tai thi nem ra FileNotFoundException.
}catch(FileNotFoundException exc){
System.out.println("File Not Found");
return;
}
catch(ArrayIndexOutOfBoundsException exc){
System.out.println("Usage : ShowFile File");
return;
}
//Read bytes until EOF is encountered
do{
i = fin.read();
if(i != -1) System.out.print((char) i);
}while(i != -1);
fin.close();
}
}//end class

/*
* Created on Nov 24, 2008 by huu truc
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package Day23_2008nov23;

/**
* @author Administrator
*
* TODO Chuong trinh minh hoa viec doc mot mang bytes tu System.in
* page 135
*/
import java.io.*;
class ReadBytes {
public static void main(String[] args) throws IOException{
//khai bao mang data[] kieu byte voi kich thuoc 100.
byte data[] = new byte[100];
System.out.print("Enter some characters : ");
//Luong nhap chuan, mac dinh la ban phim, la mot doi tuong
//kieu InputStream.
System.in.read(data);
System.out.print("you entered : ");
for(int i=0; i <>
System.out.print((char)data[i]);
}
}

Thứ Tư, 26 tháng 11, 2008

Tạo file PDF

04

Convert từ word sang pdf rất đơn giản ngay trong Word.

Được viết bởi duymap ngày Sep 4, 2007 trong Word
Được xem 19523 lần, 80 lần trong hôm nay.

Mình xingiới thiệu với các bạn một cách convert từ file word sang pdf cực kì đơn giản ngay trong Microsoft Word.

Đầu tiên các bạn download chương trình doPdf ( chương trình hoàn toàn miễn phí ) về cài đặt.

Sau khi cài đặt thành công, bạn chỉ cần mở tà liệu word bằng Microsoft Word lên, sau đó chọn menu Print , tại ô Name bạn chọn Printer là doPdf.

Sau đó chỉ việc nhấn Ok là xong rùi. quá dễ :razz:

Nguồn tham khảo từ http://www.blogthuthuat.com/?p=398

Thông tin về host của site

Vào các trang sau đây để biết:

  1. http://cqcounter.com/whois/
  2. http://www.checkdomain.com/
  3. http://whois.ws/
  4. http://www.ndtan.net/whois/

Kết hợp sử dụng các tool:

  1. ping
  2. lookup
  3. trace
  4. whois

Và đây là kết quả: (http://www.cqcounter.com/whois/)

210.245.124.123 - Geo Information
IP Address 210.245.124.123
Host mail.sjcr.vn
Location VN, Vietnam
City Van Tan, 26 -
Organization Dai IP su dug cho Hosting game server
ISP The Corporation for Financing and Promoting Techno
AS Number AS18403 The Corporation for Financing & Promoting Technology
Latitude 18°45'00" North
Longitude 105°55'00" East
Distance 8007.16 km (4975.42 miles)


210.245.124.123 - Whois Information
% [whois.apnic.net node-1]
% Whois data copyright terms http://www.apnic.net/db/dbcopyright.html

inetnum: 210.245.120.0 - 210.245.125.255
netname: IPHostingGame-NET
country: vn
descr: Dai IP su dug cho Hosting game server
admin-c: FHIG2-AP
tech-c: FHIG2-AP
status: ALLOCATED NON-PORTABLE
changed: hm-changed@vnnic.net.vn 20080411
mnt-by: MAINT-VN-FPT
source: APNIC

role: FPT HCMC IPADMIN GROUP
address: 66-68 Vo Van Tan
address: HCMC
country: VN
phone: +84-8-9301280
fax-no: +84-4-7262163
e-mail: abuse@hcm.fpt.vn
trouble: send spam reports to abuse@hcm.fpt.vn
trouble: and abuse reports to abuse@hcm.fpt.vn
admin-c: LPC5-AP
tech-c: LTVL1-AP
nic-hdl: FHIG2-AP
notify: hm-changed@vnnic.net.vn
mnt-by: MAINT-VN-FPT
changed: hm-changed@vnnic.net.vn 20080128
source: APNIC

Tiếp tục nghiên cứu

Thứ Ba, 25 tháng 11, 2008

Tuần 24 - 30 Nov 2008

Monday : nghỉ ốm
Tuesday : 25 Nov 2008 19.30 - 22.00
- Học : đọc lại luồng và tập tin ở chương 5.

- Thắc mắc cần giải đáp : tìm phần mềm tạo file *.pdf.

  • PDF creator
  • Cute PDF
Thurday : 27 Nov 2008 19.30 to 22.30
- Học : java về luồng và tập tin. Đã tìm ra phần mềm doPDF để tạo ra file pdf từ word.
- Thực hành : Day 23_2008nov23 ReadBytes.java.
- Thắc mắc cần giải đáp : tìm cách ghi đĩa CD từ phần mềm Ner0, hoặc phần mềm tương tự?
- Viết Blog : Tạo file pdf, hướng dẫn sử dụng phần mềm.
Friday : 28 Nov 2008 20.40 to 22.30
- Học luồng và tập tin.
- Viết blog : Joomla là gì?, Bảng mã ASCII.
- Thực hành : Day24_2008nov28, WriteDemo.java.
Sunday : 30nov2008 19.30 to 22.16
- Học luồng và tập tin.
- Thực hành : Day25_2008nov30 Showfile.java.
- Thắc mắt cần giải đáp : làm thế nào để đọc file nằm trong thư mục, chứ không phải ổ đĩa như ví dụ ShowFile.java? ở Day25_2008nov30.
- Giải đáp : gõ tiếp theo dấu \\tên thư mục\\tên file
fin = new FileInputStream("D:\\tham khao linh tinh\\text.txt");

Thứ Bảy, 22 tháng 11, 2008

Đọc Dữ liệu từ File:
- Mở một File để đọc dữ liệu
FileInputStream(String filename) throws
FileNotFoundException.
Nếu file không tồn tại thì ném ra FileNotFoundException.
- Đọc Dữ liệu : Dùng phương thức read()
int read( ) throws IOException : Đọc từng byte từ file và trả về giá trị của byte đọc được. Trả về -1 khi hết file, và ném ra IOException khi có lỗi đọc.
- Đóng file : dùng phương thức close ( )
void close ( ) throws IOException : Sau khi làm việc xong cần đóng file để giải phóng tài nguyên hệ thống đã cấp phát cho file.
- Streams : luồng.
Tất cả những hoạt động nhập/xuất dữ liệu(Nhập dữ liệu từ bàn phím, lấy dữ liệu từ mạng về, ghi dữ liệu ra đĩa, xuất dữ liệu ra màn hình, máy in,...) đều được quy về một khái niệm gọi là Luồng(Streams). Luồng có thể là nơi sản xuất và tiêu thụ thông tin. Tất cả các Luồng đều có chung một nguyên tắc hoạt động ngay cả khi chúng được gắng kết với các thiết bị vật lý khác nhau.
- Luồng Byte : hay Luồng dựa trên Byte. Hỗ trợ việc xuất nhập dữ liệu trên Byte, thường được dùng khi đọc ghi dữ liệu nhị phân.
- Luồng ký tự : được thiết kế hỗ trợ việc xuất nhập dữ liệu kiểu ký tự (Unicode). Trong một vài trường hợp Luồng ký tự sử dụng hiệu quả hơn Luồng Byte, nhưng ở mức hệ thống thì tất cả những xuất nhập đều phải quy về byte. Luồng ký tự hỗ trợ hiệu quả chỉ đối với việc quản lý, xử lý các ký tự.
- System.out : Luồng xuất chuẩn, mặc định là console. System.out là một đối tượng kiểu PrintStream.
- System.in : Luồng nhập chuẩn, mặc định là bàn phím. System.in là một đối tượng kiểu InputStream.
- System.err : Luồng lỗi chuẩn, mặc định cũng là console. System.err cũng là một đối tượng kiểu PrintStream giống System.out.

Luồng và tập tin

Luồng : Streams
Tập tin : Files

Thứ Sáu, 21 tháng 11, 2008

Xây dựng mô hình lớp ở mức phân tích.

1. Review hướng đối tượng
Lập trình hướng đối tượng không ai bác bỏ nó là một xu hướng đang phát triển của ngành công nghệ phần mềm. khác với lập trình cấu trúc thì lập trình hướng đối tượng nó cố gắng ánh xạ các thực thể bên ngoài thế giới thực vào trong chương trình phần mềm.
Khi lập trình hướng đối tượng có 1 vài khái niệm quan trọng đó là class, các từ khóa khai báo về tầm vực.
Class là một thể hiện của một lớp đối tượng bên ngoài thế giới thực mà bạn đang quan tâm. Nó bao gồm các thuộc tính và các “hành động”(phương thức) tương ứng mà bên ngoài đối tượng có.
Tầm vực của một thuộc tính/một phương thức là khả năng cho phép truy cập biến/phương thức đó bên ngoài ở bên ngoài phạm vi của lớp.
Một số ký hiệu của hướng đối tượng.
• Ký hiệu của class: (hình chữ nhật)

Giải thích thêm về class:
• Ký hiệu kế thừa: mũi tên đầu là tam giác rỗng ruột
Cái này sẽ nói rõ hơn trong mục dưới.
• Ký hiệu của private: (nó là ổ khóa mà nó không cho ) nói cho dễ nhớ: private tức là bên ngoài không vào được, mà muốn bên ngoài không “vào” được thì phải “khóa” cửa lại --> riêng tư. Private (nếu mà vẽ ra giấy thì nó có ký hiệu là dấu trừ “-”).
• Ký hiệu của protected: ký hiệu là chìa khóa và bên có một hình màu xanh đẹp đẹp.(nếu vẽ ra giấy thì ký hiệu là dấu thăng. “#” giống chữ CSharp)
• Ký hiệu của public: là ô chữ nhật màu đỏ: nếu viết ra giấy thì nó là dấu cộng(“+”).
2. Các loại quan hệ giữa 2 lớp đối tượng
2.1. Quan hệ kế thừa.
Như ở trên đã nói thì quan hệ kế thừa là một trường hợp rất hay gặp của lập trình và phân tích hướng đối tượng nó góp phần tạo nên hướng lập trình này.
Mô hình ở mức tổng quát:
Đọc: class A là một trường hợp đặc biệt của class B. hoặc Class A kế thừa từ class B.
Ví dụ:
Đọc: lớp học sinh là một trường hợp đặc biệt của lớp người, Hay lớp Học sinh được kế thừa từ lớp Người hay là lớp Cnguoi là một trường hợp đặc biệt của lớp ChocSinh.
2.2. Quan hệ Association:
Quan hệ Association là một quan hệ ở mức phổ biến giữa 2 lớp. Nó thể hiện là trong lớp này có chứa lớp kia(chấm hết không nói thêm gì nữa.)
Hình vẽ:
Đọc:
Hoặc trong class A có chứa 1 hay nhiều thuộc tính là class B.
Hoặc là trong class B có chứa 1 hay nhiều thuộc tính là class A.

Ví dụ: quan hệ Lớp học (CLopHoc) và Học Sinh (CHocSinh).
Đọc: Một lớp có nhiều học sinh
Lưu ý chiều của quan hệ: A -> B hay B -> A nó nêu lên sự chủ động gọi.
Từ A->B
Từ B->A
Quan hệ Aggregation trước hết là một quan hệ Association nhưng chúng ta phát hiện ra một ràng buộc giữa 2 mối quan hện này là: Khi một đối tượng thuộc lớp B được hủy thì đối tượng xObj thuộc lớp A chưa chắc đã bị hủy(vẫn có thể còn tồn tại).(dễ nhớ: classB có mang cái đầu to[hình thoi] ở phía mình nên nó bao lấy thằng A. nhưng do rổng ruột[hình thoi rổng ruột] nên khi thằng B chết thằng A có thể chui qua cái “lỗ” đó để mà thoát).
VD1: đặt một ngữ cảnh như sau. Bạn đang có một cửa hàng, cửa hàng của bạn có nhiều kho hàng. Do một nguyên do nào đó mà bạn hủy kho đó đi thì hàng của bạn trong kho đó sẽ bị hủy?? không bị hủy mà bạn sẽ đưa nó đi một chổ khác. Cái này cũng tương tự như vậy.
Khi bạn bỏ một kho hàng thì hàng trong kho sẽ không mất hết.
VD2: trong chương trình nghe nhạc của bạn thường thấy các list nhạc mà bạn tạo rao. Khi bạn xóa cái list nhạc đó thì các bài nhạc trong máy của bạn mà thuộc cái list đó nó sẽ không bị xóa theo.
2.4. Quan hệ Composition
Hình vẽ:
Quan hệ Composition là quan hệ mà đã là quan hệ Association nhưng mà khi một đối tượng bObj thuộc classB bị hủy thì đối tượng classA thuộc bObj là không thể không bị hủy(bắt buộc).( dễ nhớ: classB có mang cái đầu to[hình thoi] ở phía mình nên nó bao lấy thằng A. nhưng do kín mít [hình thoi đen thui] nên khi thằng B chết thằng A không thể nào chui qua cái “lỗ” đó để mà thoát cho nên A chết chung).
Ví dụ: lấy ví dụ dễ thấy: trong máy tính của bạn có thư mục và file. Thư mục chứa file.
2.5. Quan hệ Dependency
ClassA không có quan hệ Association với classB. Nhưng ở đâu đó trong các phương thức của classB có gọi thực hiện một phương thức, khai báo một đối tượng của classA.(nói chung qui thì là nếu ko có classA thì classB pó hand không build được ).

Phân tích thiết kế hướng đối tượng (vidu 2)

Ví dụ:

Công ty ABC là công ty sản xuất bánh ngọt họ muốn xây dựng một website bán hàng cho mình qua mạng internet.
Khách hàng có thể đăng ký, đặt hàng với công ty qua mạng hay qua điện thoại. nếu qua điện thoại thì có nhân viên sẽ là người nhập các đơn đặt hàng cho bạn. Khi khách hàng đặt một loại bánh nào đó thì hệ thống sẽ kiểm tra xem bánh đó có còn hay không. Hiện tại công ty có các loại bánh như sau: bánh ngọt, bánh mặn, bánh chay.
Công ty hiện cũng áp dụng chương trình “khách hàng thân thiết” với chiến dịch là người dùng thường xuyên của cửa hàng sẽ được giảm 5 % giá thành của bánh khi mua tại thời điểm hiện tại. Khi một khách hàng thường mua hàng hơn lần trong vòng 3 tháng thì họ sẽ trở thành khách hàng thân thiết và được áp dụng chương trình khuyến mãi trên. Trong trường hợp “khách hàng thân thiết” không mua sản phẩm trong một khoảng thời gian 3 tháng thì họ sẽ không còn là khách hàng thân thiết nữa.
Khi người dùng đăng nhập thì hệ thống sẽ liệt kê danh sách các sản phẩm của công ty đang có và cho người dùng xem. Trong quá trình xem người dùng có thể chọn mua cho mình những sản phẩm mà họ vừa ý nhất.
Khi người dùng chọn mua các sản phầm thì họ luôn luôn có một cái “giỏ” để bỏ hàng vào đó, họ sẽ kết thúc mua hàng khi họ tính tiền với cửa hàng, trong trường hợp mà khách hàng quyết định không mua bất kỳ sản phẩm nào trong giỏ hàng thì khách hàng có thể trả lại hàng cho công ty.
Khi khách hàng thanh toán bằng các dịch vụ ATM, Visa thì hệ thống sẽ kết nối với một hệ thống bên ngân hàng để kiểm tra xem thẻ này còn hiệu lực hay không, hệ thống sẽ không lưu các thông tin về tài khoản của khách hàng mà khách hàng nhập vào rồi sẽ chuyển qua bên ngân hàng kiểm tra.


Mô hình class ở mức phân tích (các bạn lưu ý ở mức này chúng ta chưa cần phải đưa ra các phương thức của lớp).

Phân tích thiết kế hướng đối tượng (vidu)

1. Phát biểu bài toán (chương trình quản lý nhân viên đơn giản)
Ví dụ bạn có một bài toán như sau cần giải quyết(chế thôi).
Trong công ty thời trang Trần Trụi phòng nhân sự có nhu cầu quản lý nhân viên của công ty sao cho dễ dàng hơn nên họ quyết định đặt bạn xây dựng cho họ một phần mềm là phần mềm quản lý Nhân viên của công ty.
Hàng ngày thì nhân viên đi làm và chấm công bằng cách quét thẻ nhân viên qua một máy chấm công, hàng ngày nhân viên phòng nhân sự phải đưa cho các trưởng phòng là trong ngày này ai đi làm và ai vắng mặt của từng phòng tương ứng, ai tới muộn. cuối tháng phải đưa bảng thống kê xuống phòng kế toán để tính lương cho các nhân viên trong công ty. Mỗi khi có nhu cầu tuyển thêm nhân viên mới thì phòng nhân sự phải thông báo lên các phương tiện, các trang web, sau đó nhân viên phòng nhân sự sẽ tiếp nhận đơn đăng ký của các ứng viên đã đăng ký và lên lịch phỏng vấn cho các ứng viên. Khi ứng viên đi phỏng vấn thì hệ thống sẽ phải đưa ra câu hỏi cho ứng viên từ ngân hàng câu hỏi sẵn có của công ty và ứng viên phải trả lời câu hỏi đó. Nếu có ứng viên nào được nhận thì tổ chức tiếp nhận họ vào công ty.(quá trình tiếp nhận chỉ là việc thêm nhân viên vào danh sách nhân viên vào phân vào phòng nào đó). Với trưởng phòng nhân sự thì được quyền sửa đổi thông tin của các nhân viên trong công ty.
Thỉnh thoảng các nhân viên phòng nhân sự cần tìm kiếm thông tin của một nhân viên để làm một công việc gì đó(chưa rõ).
Khi thêm một nhân viên mới thì kiểm tra xem nhân viên đó đã có trong công ty hay chưa(có trường hợp nhân viên nghĩ việc rồi sau đó một khoảng thời gian họ quay lại công ty làm).

2. Mô hình Usecase:

Download
Download
3. đặc tả usecase
Ở đây do không có nhiều thời gian nên mình xin nói lên một số Usecase sau: Tim Kiem Nhan Vien, Them Nhan Vien, Xem Cau Hoi, Tra Loi Cau Hoi.
a) Usecase Tim Kiếm Nhân Viên
• Tóm tắt.
Usecase tìm kiếm nhân viên được nhân viên phòng nhân sự sử dụng để tìm kiếm thông tin của một nhân viên. Usecase này được sử sử dụng khi một nhân viên phòng nhân sự cần tra cứu thông tin của một nhân viên nào đó trong công ty.
• Dòng sự kiện
a. Dòng sự kiện chính:
Usecase bắt đầu khi nhân viên phòng nhân sự gọi chức năng tìm kiếm nhân viên. Hệ thống sẽ kiểm tra nhân viên đang dùng đã đăng nhập hay chưa. Hệ thống sẽ tiếp nhận người dùng nhập thông tin tìm kiếm. Hệ thống sẽ thực hiên tìm kiếm trong cơ sở dữ liệu, sau đó hệ thống sẽ hiển thị tất cả các thông tin tìm được ra màn hình cho người dùng.
b. Các dòng sự kiện khác.
Nếu người dùng chưa đăng nhập thì hệ thống phải yêu cầu người dùng đăng nhập.
Nếu hệ thống không tìm thấy dữ liệu trả về thì hệ thống sẽ thông báo là không tìm thấy dữ liệu và đợi người dùng thao tác tiếp.
• Các yêu cầu
Người dùng phải đăng nhập vào hệ thống trước khi sử dụng chức năng này.
• Trạng thái hệ thống khi User bắt đầu Usecase
Trước khi bắt đầu chức năng này Người dùng phải đăng nhập vào hệ thống.
• Trạng thái hệ thống sau khi thực hiện Usecase
Hệ thống sẽ hiện ra thông báo kết quả tìm được cho User và chờ tác vụ tiếp theo của người dùng.
• Điểm mở rộng.
Không có.
b) Usecase Them Nhan Vien
• Tóm tắt.
Usecase tìm kiếm nhân viên được nhân viên phòng nhân sự sử dụng để tìm kiếm thông tin của một nhân viên. Usecase này được sử sử dụng khi một nhân viên phòng nhân sự cần tra cứu thông tin của một nhân viên nào đó trong công ty.
• Dòng sự kiện
i. Dòng sự kiện chính:
Usecase bắt đầu khi nhân viên phòng nhân sự gọi chức năng thêm mới nhân viên. Hệ thống sẽ kiểm tra nhân viên đang dùng đã đăng nhập hay chưa. Hệ thống kiểm tra dữ liệu người dùng nhập vào có đúng như qui định không. Hệ thống sẽ tiếp nhận người dùng nhập thông tin của nhân viên mới. Hệ thống sẽ thực hiên tìm trong dữ liệu đã có nhân viên này chưa ở trong cơ sở dữ liệu, sau đó hệ thống sẽ thêm tất cả các thông tin mà người dùng nhập vào.
ii. Các dòng sự kiện khác.
Nếu người dùng chưa đăng nhập thì hệ thống phải yêu cầu người dùng đăng nhập.
Nếu mà có lỗi xảy ra trong quá trình nhập dữ liệu của người dùng thì thông báo cho người dùng biết là đã có chổ nhập không đúng và để con trỏ chuột tới vị trí sai đầu tiên xuống cho người dùng sửa.
Nếu người mới được thêm vào đã có trong cơ sở dữ liệu rồi thì cập nhật lại trạng thái của họ là đang đi làm.
Nếu hệ thống không thêm được thì sẽ báo lỗi cho người dùng
• Các yêu cầu
Người dùng phải đăng nhập vào hệ thống trước khi sử dụng chức năng này.
• Trạng thái hệ thống khi User bắt đầu Usecase
Trước khi bắt đầu chức năng này Người dùng phải đăng nhập vào hệ thống
• Trạng thái hệ thống sau khi thực hiện Usecase
Hệ thống sẽ có thêm một người mới được thêm vào cơ sở dữ liệu hay là một record mới được cập nhật.
Hệ thống sẽ hiện ra thông báo kết quả tìm được cho User và chờ tác vụ tiếp theo của người dùng.
• Điểm mở rộng.
Không có.

c) Usecase Xem Cau Hoi.
• Tóm tắt:
Usecase xem câu hỏi được bắt đầu ứng viên tiến hành đi phỏng vấn và chức năng nay sẽ được gọi. Usecase này được sử dụng khi một ứng viên xem câu hỏi để trả lời trong buổi phỏng vấn
• Dòng sự kiện
i. Dòng sự kiện chính
Khi bắt đầu phỏng vấn Ứng viên bắt đầu được xem câu hỏi đầu tiên từ ngân hàng câu hỏi mà hệ thống trả về.
ii. Các dòng sự kiện khác
Không có.
• Yêu cầu
Không có.
• Trạng thái hệ thống khi user bắt đầu Usecase
Hệ thống sẽ chờ đợi người dùng sẵn sàng.
• Trạng thái hệ thống sau khi User bắt đầu Usecase
Hệ thống lấy câu hỏi từ ngân hàng câu hỏi về để hiển thị lên cho người dùng xem.
• Điểm mở rộng.
Không có.

Cách thức thiết kế lớp đối tượng

Quá trình thiết kế lớp bao gồm các công đoạn sau: Xác định tên lớp đối tượng, xác định các quan hệ, Xác định các thuộc tính, xác định các phương thức, xác định lớp cha của nó(nếu có).
Để xác định tên lớp như thế nào thì các bạn phải dựa vào kinh nghiệm bản thân mà không thể nói một cách dễ dàng được. tuy nhiên nó tuân theo một số qui tắc sau:
1 – Tên lớp phải là danh từ.
2 – Tên lớp phải có chu trình sống của mình, phải có thời điểm sinh ra, chết đi của đối tượng đó.
3 – Nó độc lập tương đối với các đối tượng khác (tức là nó sẽ độc lập hơn đối tượng khác một cách tương đối, về các mặt khác nó có thể phụ thuộc lẫn nhau giữa các đối tượng, nhưng nó là một thể thức ngoài đời có.).
Quan trọng hơn là nó phải nằm trong phạm vi quản lý của yêu cầu bài toán.
Nói túm lạ ngoài đời có gì thì bên trong chương trình của mình có lớp đó.

Phần xác định các quan hệ . Việc xác định các quan hệ giữa các lớp là việc phải lập ra một từ điển quan hệ giữa các lớp ví như: lớp A là con lớp B chẳng hạn. nó cũng có một số qui tắc sau để qui ước là: tên quan hệ phải là động từ, Nó nói lên sự phụ thuộc lẫn nhau của các đối tượng.
Việc xác định các thuộc tính nó có một số qui định như sau: tên thuộc tính phải là danh từ, nó phải có sự lệ thuộc duy nhất vào đối tựng đang xét. Trong khi xác định thuộc tính cần chú ý: nếu thuộc tính đó phụ thuộc một đối tượng thì thuộc tính đó là thuộc tính của đối tượng, thuộc tính phụ thuộc vào nhiều đối tượng thì thuộc tính đó là thuộc tính quan hệ. lư ý ở trên chỉ nói đến thuộc tính của một lớp.
Việc xác định phương thức thực chất đó là các hành động, công việc, của các phương thức đó, nên tên phương thức có nhiều loại phương thức trong xây dựng một lớp đối tượng:
1 - các phương thức thuộc nhóm khởi tạo: gồm phương thức khởi tạo mặc định, phương thức khởi tạo khi biêt một số thuộc tính của nó, phương thức phá hủy.
2 – các phương thức thuộc nhóm cung cấp (phương thức get)
3 – các phương thức thuộc nhóm thiết lập (phương thức set)
4 – các phương thức xử lý tính toán: các phương thức này sẽ đóng vai trò là nơi thực thi các tính toán của từng class tương ứng trước khi thêm, hay làm gì đó với hệ thống dữ liệu của bạn.
5 – các phương thức thuôc nhóm kiểm tra. Đây là nơi kiểm tra các ràng buộc về dữ liệu cho class tương ứng của bạn.

Sau đây là một số quy ước để thiết kế một class.

1 – để thiết kế một class trước tiên bạn phải đưa ra tên của nó là gì.
2 – xác định các phương thức, thuộc tính cho class đó như đã nói ở trên.
3 – Nếu các thuộc tính có cấu trúc phức tạp hoặc có các thuộc tính liên hệ với nhau và nó có ngữ nghĩa cụ thể (ngoài đời có nó) thì nên tách nó ra thành một lớp độc lập với nhau.
4 – Khi 2 hay nhiều lớp có các thuộc tính chung thì nên tách thành một lớp cha của các lớp đó và các lớp đó được kế thừa từ lớp cha của nó.
5 – Khi gặp các thuộc tính có khả năng phân loại trong một số trường hợp thì ta tách các thuôc tính con của nó thành thuộc tính con tương ứng.
Thiết kế một mô hình class.


1-Thiết kế các class như các cách ở trên đã nêu.
3 - Xác định quan hệ giữa các class

2-Xác định các quan hệ và bảng số của nó.
Bảng số của 2 lớp là phần mô tả dữ liệu giữa 2 lớp đó

I- Một nhiều
1 A thì tương ứng với nhiều B
1B tương ứng với 1A
II- Một - Một 1A thì tương ứng với 1B
1B tưng ứng với 1A.
1A tương ứng với 1B
III - nhiều nhiều.
1 A tương ứng với nhiều B.
1B tương ứng với nhiều A

Phân tích thiết kế hướng đối tượng (bai3)

Bài 3: Mô hình hóa yêu cầu
Sau khi chúng ta đã thu thập được yêu cầu, việc chúng ta cần làm là mô hình chúng. Câu hỏi đặt ra ở đây là tại sao phải mô hình chúng làm gì cho mất công? Vì trong thực tế nếu dùng văn bản viết thì có khả năng không diễn đạt được vấn đề mình muốn nói. Cho nên chúng ta phải dùng hình vẽ để biểu đạt cho người khác dễ hiểu hơn.(vì hình vẽ chỉ có vài qui tắc, còn viết văn bản thì … ngôn ngữ vô số, khi người khác đọc có khả năng bị rào cản ngôn ngữ …) --> một ngôn ngữ ra đời để mô hình các cái mà chúng ta thu thập được.(nói chung là mô tả bằng ngôn ngữ rất dễ gây ra nhầm lẫn và nó không có tính trực quan.).
Chúng ta dùng cái lược đồ use-case để biểu diển.
Trong lược đồ use-case 2 khái niệm đầu tiên cần phải hiểu đó là Actor và UseCase.

1. Actor
Nó bao gồm các phần mềm bên ngoài, phần cứng, và con người mà có tác động trực tiếp đến phần mềm mà chúng ta đang xây dựng.
Hình vẽ của nó: (hình người).
Nói cho dễ nhớ: người đứng dạng chân và giơ hai tay ngang ra (giống như một người đang diễn kịch) -> diễn viên -> Actor.
Lấy ví dụ:
Trong phần mềm là trang web 4rum thì những Actor là người dùng mà bạn có thể dễ dàng chỉ ra là: Admin, Mod, Người Dùng Bình Thường, Khách.
ở đây mình sẽ giải thích tại sao người ta lại dùng từ Actor để gọi chung các cái này. Đó là vì ngoài đời Actor có nghĩa là “Diễn Viên” tức là 1 người có khả năng đóng nhiều vai khác nhau ứng với các bộ phim khác nhau(trong đây là ứng với các góc nhìn khác nhau.). Nói rõ hơn là các UserCase là người dùng nhìn dưới các góc độ của một phần mềm.

Ví dụ trong một phần mềm quản lý: bạn được thuê làm quản lý hệ thống đó. Và sau đó khi yêu cầu công việc cần thêm một người nhập liệu cho chương trình thì bạn xin làm để kiếm thêm thu nhập(thời kỳ lạm phát). Thì khi đó bạn không còn là một admin nữa mà là một người dùng bình thường chỉ có quyền ghi đối với cơ sở dữ liệu.
Đôi khi để cho dễ nhìn hơn trong mô hình usecase người ta còn có nhu cầu tổ chức nói (các quyền của Actor này thì Actor khác đều có thể làm thì bạn có thể chế ra một Actor khác là cha của 2 Actor này.)
Ví dụ trong phần mềm quản lý khách hàng thì khách hàng tiềm năng và khách hàng thông thường đều được quyền đặt hàng.(cái này chỉ có tác dụng là cho đỡ rối hình vẽ thôi) thì chúng ta “chế” ra Actor khách hàng chung. Lưu ý cái này nó chỉ mượn ký hiệu kế thừa bên thiết kế lớp đối tượng chứ không nói là Khách hàng và khách hàng đặc biệt là 2 lớp được kế thừa lại từ lớp khách hàng.
VD:
trước khi chế.
sau khi chế.


2. UseCase
UseCase là những chức năng trong chương trình của bạn cung cấp cho người dùng. Cái này có thể hiểu là một chức năng của hệ thống mang lại một ý nghĩa nhất địn đối với người dùng.
Hình vẽ nó được biểu diễn bằng một hình Elip.
3. Sự tương tác giữa Actor và UseCase

Dùng hình vẽ sau để miêu tả nó ( nó là hình mũi tên với đường nét liền). ở đây do mình làm biếng up hình nên vẽ đại vậy chứ hình thiệt nó sẽ hơi khác.
___________________________>
Chiều của mũi tên thể hiện vai trò của sự tương tác: cái nào chủ động gọi cái nào
• Từ Actor vào một User
Vd: trong 4Rom thì tạo Actor Mod được quyền sử dụng UseCase Xóa bài viết.
• Từ User vào một Actor:
Ví dụ khi bạn tạo một chương trình chơi game có qui định là chương trình là: sẽ tự động sắp xếp người chơi vào một vị trí.
Sự tương tác giữa Actor và Actor.

Đôi lúc trong khi sử dụng Chức năng này(UserCase1) lại có nhu cầu phát sinh chức năng thứ 2 ngay sau đó.

Ví dụ: trong các trang web Eshopping thì chức năng đặt hàng và chức năng thanh toán.
Chức năng đặt hàng sẽ gọi thực hiện một chức năng thanh toán.

Nó có thể được biểu diễn như sau:

Chức năng A luôn luôn gọi chức năng B
Chức năng A thỉnh thoảng gọi chức năng B
4. Dòng sự kiện chính(happy path[con đường hạnh phúc]).

Tại đây bạn sẽ mô tả con đường đi chính thức mà chương trình bạn sẽ “đi” từ khi bắt đầu đến khi kết thúc(chỉ nói các sự kiện chính chứ không nói các trương hợp khác ngoài sự kiện chính).
5. Đặc tả UserCase

ứng với mỗi Usecase các bạn nêu các ý sau:

• Tóm tắt.
• Dòng sự kiện
• Các yêu cầu
• Trạng thái hệ thống khi User bắt đầu Usecase
• Trạng thái hệ thống sau khi thực hiện Usecase
• Điểm mở rộng.