Thứ Tư, 13 tháng 7, 2016

Thiết bị mạng: Hub và Switch - hanhtrinhso.com

1.Khái niệm
Hub
Hub được coi là một Repeater có nhiều cổng. Một Hub có từ 4 đến 24 cổng và có thể còn nhiều hơn. Trong phần lớn các trường hợp, Hub được sử dụng trong các mạng 10BASE-T hay 100BASE-T. Khi cấu hình mạng là hình sao (Star topology), Hub đóng vai trò là trung tâm của mạng. Với một Hub, khi thông tin vào từ một cổng và sẽ được đưa đến tất cả các cổng khác.

Hub có 2 loại là Active Hub và Smart Hub. Active Hub là loại Hub được dùng phổ biến, cần được cấp nguồn khi hoạt động, được sử dụng để khuếch đại tín hiệu đến và cho tín hiệu ra những cổng còn lại, đảm bảo mức tín hiệu cần thiết. Smart Hub (Intelligent Hub) có chức năng tương tự như Active Hub, nhưng có tích hợp thêm chip có khả năng tự động dò lỗi - rất hữu ích trong trường hợp dò tìm và phát hiện lỗi trong mạng.



Switch

Switch đôi khi được mô tả như là một Bridge có nhiều cổng. Trong khi một Bridge chỉ có 2 cổng để liên kết được 2 segment mạng với nhau, thì Switch lại có khả năng kết nối được nhiều segment lại với nhau tuỳ thuộc vào số cổng (port) trên Switch. Cũng giống như Bridge, Switch cũng "học" thông tin của mạng thông qua các gói tin (packet) mà nó nhận được từ các máy trong mạng. Switch sử dụng các thông tin này để xây dựng lên bảng Switch, bảng này cung cấp thông tin giúp các gói thông tin đến đúng địa chỉ.

Ngày nay, trong các giao tiếp dữ liệu, Switch thường có 2 chức năng chính là chuyển các khung dữ liệu từ nguồn đến đích, và xây dựng các bảng Switch. Switch hoạt động ở tốc độ cao hơn nhiều so với Repeater và có thể cung cấp nhiều chức năng hơn như khả năng tạo mạng LAN ảo (VLAN).
2. Chức năng của Switch và Hub
Đầu tiên là Hub:
- Hub thì hoạt động ở lớp 1 của mô hình OSI (Lớp vật lý)
- Nó có một đầu vào và nhiều đầu ra => Phân phối dữ liệu từ đường truyền đến từng đầu cuối, tậphợp các dữ liệu từ các đầu cuối khác nhau để đưa lên đường truyền => Hub làthiết bị hoạt động như một điểm kết nối trung tâm cho các máy tính trong một mạng.
- Hub thực hiện việc chuyển tiếptất cả các tín hiệu vật lý đến từ cổng vào tới tất cả các cổng ra sau khi đãkhuyêchs đại tín hiệu. Một số hub còn thêm chức năng sửa lỗi tín hiệu (Hub thông minh).
Tiếp theo là Switch:
- Hub hoạt động ở lớp 2 của mô hình OSI (Lớp tuyến)
- Có một đầu vào và nhiều đầu ra => tương tự Hub
3. So sánh Hub vàSwitch
Về cơ bản thì 2 cái này có vai trò, chức năng giống nhau trên mạng. Tuy nhiên Switch ra đời sau nên có cấu tạo bên trong khác khá nhiềuso với Hub => nên cách thức hoạt động có khác nhau nhiều và ra đời sau nênSwitch có nhiều ưu điểm hơn Hub và Switch đang dần thay thế Hub.
Giống nhau: Chức năng giống nhau
Khác nhau: Khác nhau cơ bản nhất là về cách thức hoạt độngđó là cách phân phối, chuyển tiếp các khung dữ liệu tới các cổng ra.[/font][/size][/color]
- Hub thì nó chuyển khung dữ liệu tới tất cả cổng và dữ liệu củacổng nào (bằng cách so sánh MAC) thì cổng đó nhận không phải thì lờ đi =>Đây là hạn chế của Hub dẫn đến đối với cổng luôn chỉ được làm việc với băngthông tối thiểu.
- Switch thì ngược lại nó lưu tất cả địa chỉ MAC của các cổng(MAC của các card mạng) nó so sánh địa chỉ MAC trong khung dữ liệu nếu dữ liệucủa cổng nào thì nó gửi đến cổng đó => Đối với mỗi cổng luôn được làm việc vớibăng thông cực đại. Đây là ưu điểm của Switch.
4.Cấu tạo

Hub ở đây là một thiết bị mạng bao gồm các cổng RJ45 để nối đến các máy tính thông qua các đoạn cáp UTP. Hub thường có các loại 4 cổng, 6 cổng, 8 cổng, 12 cổng, 16 cổng, 24 cổng …Các cổng này thường hoạt động ở cả hai tốc độ truyền dẫn tín hiệu là 10 Mb/s và 100 Mb/s.

Switch :cũng có chức năng cung cấp các cổng nối mạng cho các máy tính và về cấu tạo bên ngoài nó cũng tương tự như Hub. Tuy nhiên về nguyên lý hoạt động hai thiết bị này có những điểm khác nhau cơ bản.

5.Sự khác nhau cơ bản giữa Hub và Switch về nguyên lí hoạt động:

Hub cung cấp cho mỗi PC một đường kết nối riêng thông qua các cổng của mình và làm chúng ta lầm tưởng đây là một mô hình mạng hình sao thực thụ. Tuy nhiên cái hình sao này chỉ mang tính chất vật lý, tức là cái vẻ bề ngoài. Thực chất bên trong Hub, các cổng của nó đều được nối vào một đường truyền tín hiệu chung còn gọi là đường trục (Bus).
Do vậy, khi máy tính 1 gởi dữ liệu đến máy in thì dữ liệu này cũng được gởi đến tất cả các máy tính khác. Tuy nhiên chỉ có máy in tiêp nhận và xử lý dữ liệu này, vì địa chỉ của nó trùng với địa chỉ mà máy tính 1 muốn gởi đến.
Tại một thời điểm, chỉ có một máy tính được trưyền tín hiệu trên bus chung. Các máy tính khác đợi và “lắng nghe” - chỉ khi nào bus hết bận thì chúng mới được truyền. Khi đó, nếu đồng thời có hai máy tính cùng truyền dữ liệu thì sẽ xảy ra tình trạng xung đột (collision) trên đường truyền.
Hạn chế của Hub là dễ xảy ra xung đột làm giảm hiệu suất hoạt động của mạng.

Để khắc phục các hạn chế của Hub thì Switch được thiết kế để tín hiệu được gởi đến một cổng xác định dựa vào bảng địa chỉ đã được thiết lập trước bên trong Switch, thay vì phải gởi tín hiệu đến tất cả các cổng như Hub đã làm. Do vậy cùng một thời điểm, khi máy tính 1 gởi dữ liệu in đến máy in thì máy tính 4 và máy tính 5 vẫn có thể truyền thông với nhau.
Cơ chế chuyển mạch này hạn chế tối đa tình trạng đụng độ và làm tăng hiệu suất của mạng.
6.Các loai Hub và Switch
Passive Hub - Hub thụ động:
Là Hub chỉ làm chức năng kết nối các trạm làm việc trong mạng chứ không "tác động thêm" gì vào dữ liệu được truyền qua nó.
Active Hub - Hub tích cực:
Là Hub có khả năng tái tạo (regenerate) các tín hiệu dữ liệu nhằm khiến cho chúng "khỏe hơn" và tránh bị "suy hao" hay "rớt" trên đường truyền. Vì khả năng này nên đôi khi người ta còn gọi Active Hub là "Multiport Repeater" (Bộ lặp tín hiệu có nhiều cổng).
Intelligent Hub - Hub thông minh:
Là các Hub hỗ trợ nhiều tính năng cộng thêm giúp theo dõi, giám sát và thiết lập cấu hình cho Hub. Thông thường ta có thể sử dụng máy tính để xác lập cấu hình cho các Hub thông minh thông qua cổng truyền thông dành riêng.
Modular Hub:
Hub được thiết kế theo dạng từng khối đơn thể (gọi là các module hay các card mở rộng): Kiến trúc này cho phép mở rộng, thêm / bớt dung lượng cổng của Hub, thêm / bớt các card chức năng (functional module) một cách dễ dàng.
Switch - Bộ chuyển mạch:
Là một thiết bị Cơ khí hoặc điện tử được dùng để chuyển dòng các tín hiệu điện hoặc tín hiệu quang từ một điểm này qua điểm kia.
LAN Switch - Bộ chuyển mạch mạng cục bộ:
Là thiết bị mạng có nhiều cổng làm chức năng kết nối các trạm làm việc (workstation) trong một mạng LAN lại với nhau theo cấu hình hình sao (Star configuration) bằng cách chuyển mạch (Switching). LAN Switch còn được gọi là Switch Level 2 do LAN Switch nằm ở lớp thứ 2 trong mô hình mạng OSI gồm 7 lớp (tôi sẽ trình bày ở phần sau).
LAN Switch có chức năng tương tự như LAN Hub nhưng có tốc độ truyền tổng thể cao hơn nhiều bởi vì Switch là một thiết bị truyền dẫn tín hiệu mạng hữu hướng (connection-oriented network device), nó cho phép thiết lập các kênh truyền riêng giữa các cặp trạm làm việc với nhau. Ví dụ: Switch 8-port (8-cổng) tốc độ 100Mbps cho phép tạo 4 đường truyền độc lập, mỗi đường có tốc độ đầy đủ là 100 Mbps. Nghĩa là nếu 8 máy tính "bắt thành 4 cặp" để truyền dữ liệu với nhau thì tốc độ đường truyền thực sự giữa mỗi cặp có thể đạt tới 100Mbps. Còn Hub là một thiết bị truyền dẫn tín hiệu mạng vô hướng (connectionless network device), nó cho phép các trạm làm việc (với số lượng tối đa phụ thuộc vào số cổng) "chia sẻ" chung một đường truyền dữ liệu.

Thứ Ba, 12 tháng 7, 2016

Mô hình OSI - Backylan

Mô hình OSI (Open Systems Interconnection Reference Model, viết ngắn là OSI Model hoặc OSI Reference Model) – tạm dịch là Mô hình tham chiếu kết nối các hệ thốngở – là một thiết kế dựa vào nguyên lý tầng cấp, lý giải một cách trừu tượng kỹ thuật kết nối truyền thông giữa các máy vi tính và thiết kế giao thức mạng giữa chúng. Mô hình này được phát triển thành một phần trong kế hoạch kết nối các hệ thống ở(Open Systems Interconnection) do ISO và IUT-T khởi xướng. Nó còn được gọi là Mô hình bảy tầng của OSI.

Mô hình OSI phân chia chức năng của một giao thức ra thành một chuỗi các tầng cấp. Mỗi một tầng cấp có một đặc tính là nó chỉ sử dụng chức năng của tầng dưới nó, đồng thời chỉ cho phép tầng trên sử dụng các chức năng của mình. Một hệ thống cài đặt các giao thức bao gồm một chuỗi các tầng nói trên được gọi là “chồng giao thức” (protocol stack). Chồng giao thức có thể được cài đặt trên phần cứng, hoặc phần mềm, hoặc là tổ hợp của cả hai. Thông thường thì chỉ có những tầng thấp hơn là được cài đặt trong phần cứng, còn những tầng khác được cài đặt trong phần mềm.

Mô hình OSI này chỉ được ngành công nghiệp mạng và công nghệ thông tin tôn trọng một cách tương đối. Tính năng chính của nó là quy định về giao diện giữa các tầng cấp, tức qui định đặc tả về phương pháp các tầng liên lạc với nhau. Điều này có nghĩa là cho dù các tầng cấp được soạn thảo và thiết kế bởi các nhà sản xuất, hoặc công ty, khác nhau nhưng khi được lắp ráp lại, chúng sẽ làm việc một cách dung hòa (với giả thiết là các đặc tả được thấu đáo một cách đúng đắn). Trong cộng đồng TCP/IP, các đặc tả này thường được biết đến với cái tên RFC (Requests for Comments, dịch sát là “Đề nghị duyệt thảo và bình luận”). Trong cộng đồng OSI, chúng là các tiêu chuẩn ISO (ISO standards).

Thường thì những phần thực thi của giao thức sẽ được sắp xếp theo tầng cấp, tương tự như đặc tả của giao thức đề ra, song bên cạnh đó, có những trường hợp ngoại lệ, còn được gọi là “đường cắt ngắn” (fast path). Trong kiến tạo “đường cắt ngắn”, các giao dịch thông dụng nhất, mà hệ thống cho phép, được cài đặt như một thành phần đơn, trong đó tính năng của nhiều tầng được gộp lại làm một.

Việc phân chia hợp lý các chức năng của giao thức khiến việc suy xét về chức năng và hoạt động của các chồng giao thức dễ dàng hơn, từ đó tạo điều kiện cho việc thiết kế các chồng giao thức tỉ mỉ, chi tiết, song có độ tin cậy cao. Mỗi tầng cấp thi hành và cung cấp các dịch vụ cho tầng ngay trên nó, đồng thời đòi hỏi dịch vụ của tầng ngay dưới nó. Như đã nói ở trên, một thực thi bao gồm nhiều tầng cấp trong mô hình OSI, thường được gọi là một “chồng giao thức” (ví dụ như chồng giao thức TCP/IP).

Mô hình tham chiếu OSI là một cấu trúc phả hệ có 7 tầng, nó xác định các yêu cầu cho sự giao tiếp giữa hai máy tính. Mô hình này đã được định nghĩa bởi Tổ chức tiêu chuẩn hoá quốc tế (International Organization for Standardization) trong tiêu chuẩn số 7498-1 (ISO standard 7498-1). Mục đích của mô hình là cho phép sự tương giao (interoperability) giữa các hệ máy (platform) đa dạng được cung cấp bởi các nhà sản xuất khác nhau. Mô hình cho phép tất cả các thành phần của mạng hoạt động hòa đồng, bất kể thành phần ấy do ai tạo dựng. Vào những năm cuối thập niên 1980, ISO đã tiến cử việc thực thi mô hình OSI như một tiêu chuẩn mạng.

Tại thời điểm đó, TCP/IP đã được sử dụng phổ biến trong nhiều năm. TCP/IP là nền tảng của ARPANET, và các mạng khác – là những cái được tiến hóa và trở thành Internet. (Xin xem thêm RFC 871 để biết được sự khác biệt chủ yếu giữa TCP/IP và ARPANET.)

Hiện nay chỉ có một phần của mô hình OSI được sử dụng. Nhiều người tin rằng đại bộ phận các đặc tả của OSI quá phức tạp và việc cài đặt đầy đủ các chức năng của nó sẽ đòi hỏi một lượng thời gian quá dài, cho dù có nhiều người nhiệt tình ủng hộ mô hình OSI đi chăng nữa.

Mặt khác, có nhiều người lại cho rằng, ưu điểm đáng kể nhất trong toàn bộ cố gắng của công trình mạng truyền thông của ISO là nó đã thất bại trước khi gây ra quá nhiều tổn thất.

Tổng hợp và biên dịch từ nhiều nguồn trên internet

Mô hình OSI (Open system interconnection – Mô hình kết nối các hệ thống mở) là một cơ sở dành cho việc chuẩn hoá các hệ thống truyền thông, nó được nghiên cứu và xây dựng bởi ISO. Việc nghiên cứu về mô hình OSI được bắt đầu tại ISO vào năm 1971 với mục tiêu nhằm tới việc nối kết các sản phẩm của các hãng sản xuất khác nhau và phối hợp các hoạt động chuẩn hoá trong các lĩnh vực viễn thông và hệ thống thông tin. Đến năm 1984, mô hình tham chiếu OSI chính thức được đưa ra giới thiệu.

Trước hết cần chú ý rằng mô hình 7 lớp OSI chỉ là mô hình tham chiếu chứ không phải là một mạng cụ thể nào.Các nhà thiết kế mạng sẽ nhìn vào đó để biết công việc thiết kế của mình đang nằm ở đâu. Xuất phát từ ý tưởng “chia để trị’, khi một công việc phức tạp được module hóa thành các phần nhỏ hơn thì sẽ tiện lợi cho việc thực hiện và sửa sai, mô hình OSI chia chương trình truyền thông ra thành 7 tầng với những chức năng phân biệt cho từng tầng. Hai tầng đồng mức khi liên kết với nhau phải sử dụng một giao thức chung. Giao thức ở đây có thể hiểu đơn giản là phương tiện để các tầng có thể giao tiếp được với nhau, giống như hai người muốn nói chuyện được thì cần có một ngôn ngữ chung vậy. Trong mô hình OSI có hai loại giao thức chính được áp dụng là: giao thức có liên kết (connection - oriented) và giao thức không liên kết (connectionless).

Giao thức có liên kết: là trước khi truyền, dữ liệu hai tầng đồng mức cần thiết lập một liên kết logic và các gói tin được trao đổi thông qua liên kết náy, việc có liên kết logic sẽ nâng cao độ an toàn trong truyền dữ liệu.
Giao thức không liên kết: trước khi truyền, dữ liệu không thiết lập liên kết logic và mỗi gói tin được truyền độc lập với các gói tin trước hoặc sau nó.

Nhiệm vụ của các tầng trong mô hình OSI có thể được tóm tắt như sau:
Tầng ứng dụng (Application layer – lớp 7): tầng ứng dụng quy định giao diện giữa người sử dụng và môi trường OSI, nó cung cấp các phương tiện cho người sử dụng truy cập vả sử dụng các dịch vụ của mô hình OSI. Điều khác biệt ở tầng này là nó không cung cấp dịch vụ cho bất kỳ một tầng OSI nào khác ngoại trừ tầng ứng dụng bên ngoài mô hình OSI đang hoạt động. Các ứng dụng cung được cấp như các chương trình xử lý kí tự, bảng biểu, thư tín … và lớp 7 đưa ra các giao thức HTTP, FTP, SMTP, POP3, Telnet.

Tầng trình bày (Presentation layer – lớp 6): tầng trình bày chuyển đổi các thông tin từ cú pháp người sử dụng sang cú pháp để truyền dữ liệu, ngoài ra nó có thể nén dữ liệu truyền và mã hóa chúng trước khi truyền đễ bảo mật.Nói đơn giản thì tầng này sẽ định dạng dữ liệu từ lớp 7 đưa xuống rồi gửi đi đảm bảo sao cho bên thu có thể đọc được dữ liệu của bên phát. Các chuẩn định dạng dữ liệu của lớp 6 là GIF, JPEG, PICT, MP3, MPEG …

Tầng giao dịch (Session layer – lớp 5): thực hiện thiết lập, duy trì và kết thúc các phiên làm việc giữa hai hệ thống. Tầng giao dịch quy định một giao diện ứng dụng cho tầng vận chuyển sử dụng. Nó xác lập ánh xạ giữa các tên đặt địa chỉ, tạo ra các tiếp xúc ban đầu giữa các máy tính khác nhau trên cơ sở các giao dịch truyền thông. Nó đặt tên nhất quán cho mọi thành phần muốn đối thoại riêng với nhau.Các giao thức trong lớp 5 sử dụng là NFS, X- Window System, ASP.

Tầng vận chuyển (Transport layer – lớp 4): tầng vận chuyển xác định địa chỉ trên mạng, cách thức chuyển giao gói tin trên cơ sở trực tiếp giữa hai đầu mút, đảm bảo truyền dữ liệu tin cậy giữa hai đầu cuối (end-to-end). Để bảo đảm được việc truyền ổn định trên mạng tầng vận chuyển thường đánh số các gói tin và đảm bảo chúng chuyển theo thứ tự.Bên cạnh đó lớp 4 có thể thực hiện chức năng đièu khiển luồng và điều khiển lỗi.Các giao thức phổ biến tại đây là TCP, UDP, SPX.

Tầng mạng (Network layer – lớp 3): tầng mạng có nhiệm vụ xác định việc chuyển hướng, vạch đường các gói tin trong mạng(chức năng định tuyến), các gói tin này có thể phải đi qua nhiều chặng trước khi đến được đích cuối cùng. Lớp 3 là lớp có liên quan đến các địa chỉ logic trong mạngCác giao thức hay sử dụng ở đây là IP, RIP, IPX, OSPF, AppleTalk.

Tầng liên kết dữ liệu (Data link layer – lớp 2): tầng liên kết dữ liệu có nhiệm vụ xác định cơ chế truy nhập thông tin trên mạng, các dạng thức chung trong các gói tin, đóng gói và phân phát các gói tin.Lớp 2 có liên quan đến địa chỉ vật lý của các thiết bị mạng, topo mạng, truy nhập mạng, các cơ chế sửa lỗi và điều khiển luồng.

Tầng vật lý (Phisical layer – lớp 1): tầng vật lý cung cấp phương thức truy cập vào đường truyền vật lý để truyền các dòng Bit không cấu trúc, ngoài ra nó cung cấp các chuẩn về điện, dây cáp, đầu nối, kỹ thuật nối mạch điện, điện áp, tốc độ cáp truyền dẫn, giao diện nối kết và các mức nối kết.

Mặc dù đã ra đời từ rất lâu, mô hình tham chiếu OSI vẫn đang là “kim chỉ nam’ cho các loại mạng viễn thông, và là công cụ đắc lực nhất được sử dụng để tìm hiểu xem dữ liệu được gửi và nhận ra sao trong một mạng máy tính nói chung.


Thứ Hai, 11 tháng 7, 2016

Giới Thiệu Về Design Pattern - Tóm tắt và liên hệ giữa các pattern

Giới Thiệu Về Design Pattern và Example Source


Design Pattern là một kỹ thuật trong lập trình hướng đối tượng, nó khá quan trọng và mọi lập trình viên muốn giỏi đều phải biết. Được sử dụng thường xuyên trong các ngôn ngữ OOP. Nó sẽ cung cấp cho bạn các “mẫu thiết kế”, giải pháp để giải quyết các vấn đề chung, thường gặp trong lập trình. Các vấn đề mà bạn gặp phải có thể bạn sẽ tự nghĩ ra cách giải quyết nhưng có thể nó chưa phải là tối ưu. Design Pattern giúp bạn giải quyết vấn đề một cách tối ưu nhất, cung cấp cho bạn các giải pháp trong lập trình OOP.
Design Pattern có 23 mẫu cơ bản(GoF) và hình dưới là mối quang hệ giữa chúng


Trong Design Pattern có 3 nhóm bao gồm:
Creational Pattern (nhóm khởi tạo) gồm: Abstract Factory, Factory Method, Singleton, Builder, Prototype. Nó sẽ giúp bạn trong việt khởi tạo đối tượng, như bạn biết để khởi tạo bạn phải sử dụng từ khóa new, nhóm Creational Pattern sẽ sử dụng một số thủ thuật để khởi tạo đối tượng mà bạn sẽ không nhìn thấy từ khóa này.
Structural Pattern (nhóm cấu trúc) gồm: Adapter, Bridge, Composite, Decorator, Facade, Proxy và Flyweight.. Nó dùng để thiết lập, định nghĩa quan hệ giữa các đối tượng.
Behavioral Pattern gồm: Interpreter, Template Method, Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy và Visitor. Nhóm này dùng trong thực hiện các hành vi của đối tượng.
Design Pattern giúp bạn tái sử dụng mã lệnh và dễ dàng mở rộng. Để chuẩn bị học Design Pattern bạn cần phải nắm chắc các khái niệm sau:
  • Bốn đặc tính của OOP: Thừa kế, Đa hình, Trừu tượng, Bao đóng.
  • Khái niệm interface abstract. Cái này cực kỳ quan trọng, để hiểu và áp dụng 2 khái niệm này có thể sẽ mất một thời gian, nhưng khi bạn nắm chắc nó bạn sẽ thấy nó thực sự cần thiết.
  • Bỏ tư duy theo lối cấu trúc, nâng tư duy hoàn toàn OOP.
Tại sao sử dụng Design Pattern?
Design pattern cung cấp giải pháp ở dạng tổng quát, giúp tăng tốc độ phát triển phần mềm bằng cách đưa ra các mô hình test, mô hình phát triển đã qua kiểm nghiệm. Thiết kế phần mềm hiệu quả đòi hỏi phải cân nhắc các vấn đề sẽ nảy sinh trong quá trình hiện thực hóa (implementation). Dùng lại các design pattern giúp tránh được các vấn đề tiềm ẩn có thể gây ra những lỗi lớn, dễ dàng nâng cấp, bảo trì về sau.
Một lợi thế lớn để sử dụng một mẫu thiết kế là lập trình viên khác sẽ có thể dễ dàng nhận ra nó (đặc biệt là nếu bạn sử dụng quy ước đặt tên tốt).
Khi nào nên sử dụng Design pattern?
Đó là khi bạn muốn giữ cho chương trình của mình thực sự đơn giản. Việc sử dụng các design pattern sẽ giúp chúng ta giảm được thời gian và công sức suy nghĩ ra các cách giải quyết cho những vấn đề đã có lời giải. Bạn có thể đọc qua cuốn “Head First Design Patterns” để có cái nhìn tổng quát hơn về design pattern.
Hệ thống các mẫu design pattern chuẩn hiện có 23 mẫu được định nghĩa trong cuốn “Design patterns Elements of Reusable Object Oriented Software” mà khởi đầu là cuốn “Gang of Four (GoF)“. Các tác giả của cuốn sách là Erich Gamma, Richard Helm, Ralph Johnson và John Vlissides, hay còn được biết đến với các tên “Gang of Four” hay đơn giản là “GoF”. Hệ thống các mẫu này có thể nói là đủ và tối ưu cho việc giải quyết hết các vấn đề của bài toán phân tích thiết kế và xây dựng phần mềm trong thời điểm hiện tại. Hệ thống các mẫu design pattern được chia thành 3 nhóm: nhóm Creational (5 mẫu), nhóm Structural (7 mẫu) và nhóm Behavioral (11 mẫu).

Nhóm Creational (nhóm kiến tạo)
1Abstract FactoryCung cấp một interface cho việc tạo lập các đối tượng (có liên hệ với nhau) mà không cần qui định lớp khi hay xác định lớp cụ thể (concrete) tạo mỗi đối tượngTần suất sử dụng: cao
2BuilderTách rời việc xây dựng (construction) một đối tượng phức tạp khỏi biểu diễn của nó sao cho cùng một tiến trình xây dựng có thể tạo được các biểu diễn khác nhau.Tần suất sử dụng: trung bình thấp
3Factory MethodĐịnh nghĩa Interface để sinh ra đối tượng nhưng để cho lớp con quyết định lớp nào được dùng để sinh ra đối tượng Factory method cho phép một lớp chuyển quá trình khởi tạo đối tượng cho lớp con.Tần suất sử dụng: cao
4PrototypeQui định loại của các đối tượng cần tạo bằng cách dùng một đối tượng mẫu, tạo mới nhờ vào sao chép đối tượng mẫu này.Tần suất sử dụng: trung bình
5SingletonĐảm bảo 1 class chỉ có 1 instance và cung cấp 1 điểm truy xuất toàn cục đến nó.Tần suất sử dụng: cao trung bình
Nhóm Structural (nhóm cấu trúc)
6AdapterDo vấn đề tương thích, thay đổi interface của một lớp thành một interface khác phù hợp với yêu cầu người sử dụng lớp.Tần suất sử dụng: cao trung bình
7BridgeTách rời ngữ nghĩa của một vấn đề khỏi việc cài đặt ; mục đích để cả hai bộ phận (ngữ nghĩa và cài đặt) có thể thay đổi độc lập nhau.Tần suất sử dụng: trung bình
8CompositeTổ chức các đối tượng theo cấu trúc phân cấp dạng cây; Tất cả các đối tượng trong cấu trúc được thao tác theo một cách thuần nhất như nhau.Tạo quan hệ thứ bậc bao gộp giữa các đối tượng. Client có thể xem đối tượng bao gộp và bị bao gộp như nhau -> khả năng tổng quát hoá trong code của client -> dễ phát triển, nâng cấp, bảo trì.Tần suất sử dụng: cao trung bình
9DecoratorGán thêm trách nhiệm cho đối tượng (mở rộng chức năng) vào lúc chạy (dynamically).Tần suất sử dụng: trung bình
10FacadeCung cấp một interface thuần nhất cho một tập hợp các interface trong một “hệ thống con” (subsystem). Nó định nghĩa 1 interface cao hơn các interface có sẵn để làm cho hệ thống con dễ sử dụng hơn.Tần suất sử dụng: cao
11FlyweightSử dụng việc chia sẻ để thao tác hiệu quả trên một số lượng lớn đối tượng “cở nhỏ” (chẳng hạn paragraph, dòng, cột, ký tự…).Tần suất sử dụng: thấp
12ProxyCung cấp đối tượng đại diện cho một đối tượng khác để hỗ trợ hoặc kiểm soát quá trình truy xuất đối tượng đó. Đối tượng thay thế gọi là proxy.Tần suất sử dụng: cao trung bình
Nhóm Behavioral (nhóm tương tác)
13Chain of ResponsibilityKhắc phục việc ghép cặp giữa bộ gởi và bộ nhận thông điệp; Các đối tượng nhận thông điệp được kết nối thành một chuỗi và thông điệp được chuyển dọc theo chuỗi nầy đến khi gặp được đối tượng xử lý nó.Tránh việc gắn kết cứng giữa phần tử gởi request với phần tử nhận và xử lý request bằng cách cho phép hơn 1 đối tượng có có cơ hội xử lý request . Liên kết các đối tượng nhận request thành 1 dây chuyền rồi “pass” request xuyên qua từng đối tượng xử lý đến khi gặp đối tượng xử lý cụ thể.Tần suất sử dụng: trung bình thấp
14CommandMỗi yêu cầu (thực hiện một thao tác nào đó) được bao bọc thành một đối tượng. Các yêu cầu sẽ được lưu trữ và gởi đi như các đối tượng.Đóng gói request vào trong một Object , nhờ đó có thể nthông số hoá chương trình nhận request và thực hiện các thao tác trên request: sắp xếp, log, undo…Tần suất sử dụng: cao trung bình
15InterpreterHỗ trợ việc định nghĩa biểu diễn văn phạm và bộ thông dịch cho một ngôn ngữ.Tần suất sử dụng: thấp
16IteratorTruy xuất các phần tử của đối tượng dạng tập hợp tuần tự (list, array, …) mà không phụ thuộc vào biểu diễn bên trong của các phần tử.Tần suất sử dụng: cao
17MediatorĐịnh nghĩa một đối tượng để bao bọc việc giao tiếp giữa một số đối tượng với nhau.Tần suất sử dụng: trung bình thấp
18MementoHiệu chỉnh và trả lại như cũ trạng thái bên trong của đối tượng mà vẫn không vi phạm việc bao bọc dữ liệu.Tần suất sử dụng: thấp
19ObserverĐịnh nghĩa sự phụ thuộc một-nhiều giữa các đối tượng sao cho khi một đối tượng thay đổi trạng thái thì tất cả các đối tượng phụ thuộc nó cũng thay đổi theo.Tần suất sử dụng: cao
20StateCho phép một đối tượng thay đổi hành vi khi trạng thái bên trong của nó thay đổi , ta có cảm giác như class của đối tượng bị thay đổi.Tần suất sử dụng: trung bình
21StrategyBao bọc một họ các thuật toán bằng các lớp đối tượng để thuật toán có thể thay đổi độc lập đối với chương trình sử dụng thuật toán.Cung cấp một họ giải thuật cho phép client chọn lựa linh động một giải thuật cụ thể khi sử dụng.Tần suất sử dụng: cao trung bình
22Template methodĐịnh nghĩa phần khung của một thuật toán, tức là một thuật toán tổng quát gọi đến một số phương thức chưa được cài đặt trong lớp cơ sở; việc cài đặt các phương thức được ủy nhiệm cho các lớp kế thừa.Tần suất sử dụng: trung bình
23VisitorCho phép định nghĩa thêm phép toán mới tác động lên các phần tử của một cấu trúc đối tượng mà không cần thay đổi các lớp định nghĩa cấu trúc đó.Tần suất sử dụng: thấp
Bạn có thể học Design pattern ở đâu
  • Cuốn sách nổi tiếng nhất và là khởi đầu của Design pattern là “Gang of Four (GoF)
  • Trang mạng uy tín để bạn có thể học thêm ngoài 23 mẫu cơ bản là “Sourcemaking.com” có code mẫu
  • Kênh youtube có “Derek Banas“, “Mohammad Alqerm” và khá nhiều kênh khác
Đây là source một số pattern thông dụng theo kinh nghiệm của tôi.
Chúc các bạn thành công!
Phạm Tuân


Giới Thiệu Về Design Pattern - Tóm tắt và liên hệ giữa các pattern

Giới Thiệu Về Design Pattern và Example Source


Design Pattern là một kỹ thuật trong lập trình hướng đối tượng, nó khá quan trọng và mọi lập trình viên muốn giỏi đều phải biết. Được sử dụng thường xuyên trong các ngôn ngữ OOP. Nó sẽ cung cấp cho bạn các “mẫu thiết kế”, giải pháp để giải quyết các vấn đề chung, thường gặp trong lập trình. Các vấn đề mà bạn gặp phải có thể bạn sẽ tự nghĩ ra cách giải quyết nhưng có thể nó chưa phải là tối ưu. Design Pattern giúp bạn giải quyết vấn đề một cách tối ưu nhất, cung cấp cho bạn các giải pháp trong lập trình OOP.
Design Pattern có 23 mẫu cơ bản(GoF) và hình dưới là mối quang hệ giữa chúng


Trong Design Pattern có 3 nhóm bao gồm:
Creational Pattern (nhóm khởi tạo) gồm: Abstract Factory, Factory Method, Singleton, Builder, Prototype. Nó sẽ giúp bạn trong việt khởi tạo đối tượng, như bạn biết để khởi tạo bạn phải sử dụng từ khóa new, nhóm Creational Pattern sẽ sử dụng một số thủ thuật để khởi tạo đối tượng mà bạn sẽ không nhìn thấy từ khóa này.
Structural Pattern (nhóm cấu trúc) gồm: Adapter, Bridge, Composite, Decorator, Facade, Proxy và Flyweight.. Nó dùng để thiết lập, định nghĩa quan hệ giữa các đối tượng.
Behavioral Pattern gồm: Interpreter, Template Method, Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy và Visitor. Nhóm này dùng trong thực hiện các hành vi của đối tượng.
Design Pattern giúp bạn tái sử dụng mã lệnh và dễ dàng mở rộng. Để chuẩn bị học Design Pattern bạn cần phải nắm chắc các khái niệm sau:
  • Bốn đặc tính của OOP: Thừa kế, Đa hình, Trừu tượng, Bao đóng.
  • Khái niệm interface abstract. Cái này cực kỳ quan trọng, để hiểu và áp dụng 2 khái niệm này có thể sẽ mất một thời gian, nhưng khi bạn nắm chắc nó bạn sẽ thấy nó thực sự cần thiết.
  • Bỏ tư duy theo lối cấu trúc, nâng tư duy hoàn toàn OOP.
Tại sao sử dụng Design Pattern?
Design pattern cung cấp giải pháp ở dạng tổng quát, giúp tăng tốc độ phát triển phần mềm bằng cách đưa ra các mô hình test, mô hình phát triển đã qua kiểm nghiệm. Thiết kế phần mềm hiệu quả đòi hỏi phải cân nhắc các vấn đề sẽ nảy sinh trong quá trình hiện thực hóa (implementation). Dùng lại các design pattern giúp tránh được các vấn đề tiềm ẩn có thể gây ra những lỗi lớn, dễ dàng nâng cấp, bảo trì về sau.
Một lợi thế lớn để sử dụng một mẫu thiết kế là lập trình viên khác sẽ có thể dễ dàng nhận ra nó (đặc biệt là nếu bạn sử dụng quy ước đặt tên tốt).
Khi nào nên sử dụng Design pattern?
Đó là khi bạn muốn giữ cho chương trình của mình thực sự đơn giản. Việc sử dụng các design pattern sẽ giúp chúng ta giảm được thời gian và công sức suy nghĩ ra các cách giải quyết cho những vấn đề đã có lời giải. Bạn có thể đọc qua cuốn “Head First Design Patterns” để có cái nhìn tổng quát hơn về design pattern.
Hệ thống các mẫu design pattern chuẩn hiện có 23 mẫu được định nghĩa trong cuốn “Design patterns Elements of Reusable Object Oriented Software” mà khởi đầu là cuốn “Gang of Four (GoF)“. Các tác giả của cuốn sách là Erich Gamma, Richard Helm, Ralph Johnson và John Vlissides, hay còn được biết đến với các tên “Gang of Four” hay đơn giản là “GoF”. Hệ thống các mẫu này có thể nói là đủ và tối ưu cho việc giải quyết hết các vấn đề của bài toán phân tích thiết kế và xây dựng phần mềm trong thời điểm hiện tại. Hệ thống các mẫu design pattern được chia thành 3 nhóm: nhóm Creational (5 mẫu), nhóm Structural (7 mẫu) và nhóm Behavioral (11 mẫu).

Nhóm Creational (nhóm kiến tạo)
1Abstract FactoryCung cấp một interface cho việc tạo lập các đối tượng (có liên hệ với nhau) mà không cần qui định lớp khi hay xác định lớp cụ thể (concrete) tạo mỗi đối tượngTần suất sử dụng: cao
2BuilderTách rời việc xây dựng (construction) một đối tượng phức tạp khỏi biểu diễn của nó sao cho cùng một tiến trình xây dựng có thể tạo được các biểu diễn khác nhau.Tần suất sử dụng: trung bình thấp
3Factory MethodĐịnh nghĩa Interface để sinh ra đối tượng nhưng để cho lớp con quyết định lớp nào được dùng để sinh ra đối tượng Factory method cho phép một lớp chuyển quá trình khởi tạo đối tượng cho lớp con.Tần suất sử dụng: cao
4PrototypeQui định loại của các đối tượng cần tạo bằng cách dùng một đối tượng mẫu, tạo mới nhờ vào sao chép đối tượng mẫu này.Tần suất sử dụng: trung bình
5SingletonĐảm bảo 1 class chỉ có 1 instance và cung cấp 1 điểm truy xuất toàn cục đến nó.Tần suất sử dụng: cao trung bình
Nhóm Structural (nhóm cấu trúc)
6AdapterDo vấn đề tương thích, thay đổi interface của một lớp thành một interface khác phù hợp với yêu cầu người sử dụng lớp.Tần suất sử dụng: cao trung bình
7BridgeTách rời ngữ nghĩa của một vấn đề khỏi việc cài đặt ; mục đích để cả hai bộ phận (ngữ nghĩa và cài đặt) có thể thay đổi độc lập nhau.Tần suất sử dụng: trung bình
8CompositeTổ chức các đối tượng theo cấu trúc phân cấp dạng cây; Tất cả các đối tượng trong cấu trúc được thao tác theo một cách thuần nhất như nhau.Tạo quan hệ thứ bậc bao gộp giữa các đối tượng. Client có thể xem đối tượng bao gộp và bị bao gộp như nhau -> khả năng tổng quát hoá trong code của client -> dễ phát triển, nâng cấp, bảo trì.Tần suất sử dụng: cao trung bình
9DecoratorGán thêm trách nhiệm cho đối tượng (mở rộng chức năng) vào lúc chạy (dynamically).Tần suất sử dụng: trung bình
10FacadeCung cấp một interface thuần nhất cho một tập hợp các interface trong một “hệ thống con” (subsystem). Nó định nghĩa 1 interface cao hơn các interface có sẵn để làm cho hệ thống con dễ sử dụng hơn.Tần suất sử dụng: cao
11FlyweightSử dụng việc chia sẻ để thao tác hiệu quả trên một số lượng lớn đối tượng “cở nhỏ” (chẳng hạn paragraph, dòng, cột, ký tự…).Tần suất sử dụng: thấp
12ProxyCung cấp đối tượng đại diện cho một đối tượng khác để hỗ trợ hoặc kiểm soát quá trình truy xuất đối tượng đó. Đối tượng thay thế gọi là proxy.Tần suất sử dụng: cao trung bình
Nhóm Behavioral (nhóm tương tác)
13Chain of ResponsibilityKhắc phục việc ghép cặp giữa bộ gởi và bộ nhận thông điệp; Các đối tượng nhận thông điệp được kết nối thành một chuỗi và thông điệp được chuyển dọc theo chuỗi nầy đến khi gặp được đối tượng xử lý nó.Tránh việc gắn kết cứng giữa phần tử gởi request với phần tử nhận và xử lý request bằng cách cho phép hơn 1 đối tượng có có cơ hội xử lý request . Liên kết các đối tượng nhận request thành 1 dây chuyền rồi “pass” request xuyên qua từng đối tượng xử lý đến khi gặp đối tượng xử lý cụ thể.Tần suất sử dụng: trung bình thấp
14CommandMỗi yêu cầu (thực hiện một thao tác nào đó) được bao bọc thành một đối tượng. Các yêu cầu sẽ được lưu trữ và gởi đi như các đối tượng.Đóng gói request vào trong một Object , nhờ đó có thể nthông số hoá chương trình nhận request và thực hiện các thao tác trên request: sắp xếp, log, undo…Tần suất sử dụng: cao trung bình
15InterpreterHỗ trợ việc định nghĩa biểu diễn văn phạm và bộ thông dịch cho một ngôn ngữ.Tần suất sử dụng: thấp
16IteratorTruy xuất các phần tử của đối tượng dạng tập hợp tuần tự (list, array, …) mà không phụ thuộc vào biểu diễn bên trong của các phần tử.Tần suất sử dụng: cao
17MediatorĐịnh nghĩa một đối tượng để bao bọc việc giao tiếp giữa một số đối tượng với nhau.Tần suất sử dụng: trung bình thấp
18MementoHiệu chỉnh và trả lại như cũ trạng thái bên trong của đối tượng mà vẫn không vi phạm việc bao bọc dữ liệu.Tần suất sử dụng: thấp
19ObserverĐịnh nghĩa sự phụ thuộc một-nhiều giữa các đối tượng sao cho khi một đối tượng thay đổi trạng thái thì tất cả các đối tượng phụ thuộc nó cũng thay đổi theo.Tần suất sử dụng: cao
20StateCho phép một đối tượng thay đổi hành vi khi trạng thái bên trong của nó thay đổi , ta có cảm giác như class của đối tượng bị thay đổi.Tần suất sử dụng: trung bình
21StrategyBao bọc một họ các thuật toán bằng các lớp đối tượng để thuật toán có thể thay đổi độc lập đối với chương trình sử dụng thuật toán.Cung cấp một họ giải thuật cho phép client chọn lựa linh động một giải thuật cụ thể khi sử dụng.Tần suất sử dụng: cao trung bình
22Template methodĐịnh nghĩa phần khung của một thuật toán, tức là một thuật toán tổng quát gọi đến một số phương thức chưa được cài đặt trong lớp cơ sở; việc cài đặt các phương thức được ủy nhiệm cho các lớp kế thừa.Tần suất sử dụng: trung bình
23VisitorCho phép định nghĩa thêm phép toán mới tác động lên các phần tử của một cấu trúc đối tượng mà không cần thay đổi các lớp định nghĩa cấu trúc đó.Tần suất sử dụng: thấp
Bạn có thể học Design pattern ở đâu
  • Cuốn sách nổi tiếng nhất và là khởi đầu của Design pattern là “Gang of Four (GoF)
  • Trang mạng uy tín để bạn có thể học thêm ngoài 23 mẫu cơ bản là “Sourcemaking.com” có code mẫu
  • Kênh youtube có “Derek Banas“, “Mohammad Alqerm” và khá nhiều kênh khác
Đây là source một số pattern thông dụng theo kinh nghiệm của tôi.
Chúc các bạn thành công!
Phạm Tuân


Chủ Nhật, 28 tháng 2, 2016

.Htaccess và regular expression (Nguồn freetuts)

Vấn đề Regular Expression cơ bản và thường được sử dụng.

Ký hiệu [list_char]

Danh sách các ký tự được phép chấp nhận
Ví dụ: [abc] => chỉ chấp nhận ký tự a hoặc b hoặc c

Ký hiệu [begin- end]

Dành sách các ký tự bắt đầu từ ký tự BEGIN và kết thúc là ký tự END
Ví dụ:
  • [a-z] => chấp nhận các ký tự thường từ a đến z
  • [A-Z] => chấp nhận các ký tự hoa từ A đến Z
  • [0-9] => chấp nhận các ký tự từ 0 đến 9
  • [a-c] => chấp nhận các ký tự từ a đến c
  • [a-zA-Z0-9] chấp nhận các chữ cái thường, hoa và các ký tự số

ký hiệu {min,max}

Xác định chiều dài cho chuỗi tối thiếu mà MIN và tối đa là Max.
Ví dụ:
  • [a-z]{5,10} => các ký tự từ a tới z dài từ 5 đến 10 ký tự
  • [A-Z]{1,100} => các ký tự từ A tới Z dài từ 1 đến 100 ký tự
  • [0-9]{10} => ký tự số dài 1 ký tự
  • [a-zA-Z]{1,} => các ký tự chữ hoa hoặc chữ thường dài từ 1 ký tự trở lên

Ký hiệu ^ và $

^ là ký hiệu bắt đầu chuỗi, $ là ký hiệu kết thúc chuỗi.
Ví dụ:
  • ^[a->z]{10}$ => chuỗi tự bắt  đầu là chữ cái thường, kết thúc cũng là chữ cái thường  và dài 10 ký tự.
  • ^freetuts$ => chuỗi cố định freetuts
  • ^freetuts[a-z]{2} chuỗi bắt đầu bằng freetuts và kết thúc là 2 ký tự thường, ví dụ freetutste, freetutssm ...

Ký hiệu .

Ký hiệu dấu chấm (.) đại diện cho ký tự bất kỳ.
Ví dụ:
  • .{10,20} => ký tự bất kỳ dài từ 10 đến 20 ký tự

ký hiệu (+) (?) (*)

  • + : xác định chiều dài 1 hoặc nhiều ký tự
  • * : xác định chiều dài từ 0 hoặc nhiều ký tự
  • ? : xác định chiều dàu 0 hoặc 1 ký tự
Ví dụ:
  • [a-z]+ => chuỗi các ký tự chữ cái thường từ 1 ký tự trở lên
  • [a-z]* => chuỗi các ký tự chữ cái thường từ 0 ký tự trở lên
  • [a-z]? => chuỗi các ký tự chữ cái thường từ 0 đến 1 ký tự

Ký hiệu ()

Dùng gom nhóm các group Regular Exprsesion, ví dụ:
  • ([a-z])([A-Z]): Góm thành 2 nhóm
  • ([a-z][A-Z]): Gom thanhf 1 nhoms

Ký hiệu [^]

Ngược lại với ký hiệu [], nghĩa là so khớp với những ký tự không nằm trong danh sách cặp [], ví dụ:
  • [^a-z]{5,10} => chuỗi dài 5 đến 10 ký tự và không có ký tự chữ cái thường từ a đến z
  • [^abc]{} => so khớp với chuỗi không chứa chữ cái a, b và c

Ký hiệu |

Đây là toán tử OR trong Regular Expression, có ý nghĩa Regex A hoặc Regex B
Ví dụ:
  • (a|b) => là ký tự a hoặc b
  • (freetuts|phonline) => chuỗi freetuts hoặc phponline

Ký hiệu \

Dùng để đặt trước các ký hiệu đặc biệt trong chuỗi RegEx. Các ký tự đặc biệt là các ký tự nằm trong danh sách ký hiệu của Regular Expression.
Ví dụ:
  • \. => ký tự dấu chấm chứ không phải ký hiệu dấu chấm trong RegEx
  • \[ => ký tự mở ngoặc vuông chứ không phải ký hiệu mở ngoặc vuông trong RegEx

Capturing GROUP

Định nghĩa và các ví dụ về capturing group đã được trình bày trong serie Regular Expression trong php ở bài này, bạn vui lòng quay lại và đọc nhé.
Hiểu đơn giản Capturing Group là thứ tự các group gom nhóm trong chuỗi RegEx, toàn chuỗi là group 0, sau đó đếm theo tứ tự từ trái qua phải để tìm đến các group tiếp theo.
Ví dụ:
  • ([a-z]{1,2})([0-9]{10,20}) => có 3 capturing group:
    • Thứ nhất là toàn chuỗi regex =>([a-z]{1,2})([0-9]{10,20})
    • Thứ 2 là theo thứ tự từ trái qua phải ta gặp group đầu tiên ([a-z]{1,2})
    • Thứ 3 là group tiếp theo ([0-9]{10,20})
Ta dùng những Capturing Group này để truyền vào URL khi viết lại đường dẫn (Rewrite Url).
Ngoài ra bạn cũng nên đọc bài None Capturing Group này đế tìm hiểu sâu hơn.

Các ký hiệu riêng của file htaccess

  1. [F] - Forbidden: Kí tự này dùng để chỉ định server sẽ trả về client trang lỗi 403 nếu truy cập vào những nơi không được phép.
  2. [L] - Last rule: kí tự này để ấn định rằng bước trước đã xong thì ngừng và không tiếp tục thực thi lệnh rewrite tiếp theo nữa.
  3. [N] - Next: chỉ thị cho server tiếp tục rewrite cho đến rule kế tiếp.
  4. [G] - Gone: Chỉ định server trả về client trang báo lỗi không tồn tại (no longer exit)
  5. [P] - Proxy: chỉ định server điểu kiển các yêu cầu được ấn định bởi mod_proxy
  6. [C] - Chain: Chỉ định server thực hiện rule hiện hành song song với rule trước đó.
  7. [R] - Redirect: chỉ định server đổi hướng request sang một trang khác trong trường hợp trình duyệt gởi yêu cầu duyệt một trang được sửa chữa đường dẫn (rewrite) trước đó.
  8. [NC] - No-case: Chỉ định server match không phân biệt hoa thường.
  9. [PT] - Pass Through: có nghĩa là dùng kí tự để buộc "rewrite engine" ấn định bảng giá trị của uri trở thành giá trị của tên files.
  10. [OR] - Toán tử kiểm tra từ trên xuống dưới, nếu điều kiện nào đúng thì dừng.
  11. [NE] - No Escape: Chỉ định server xử lí các gói tin trả về mà không dùng kí tự thoát
  12. [NS] - No Subrequest: Chỉ định server bỏ qua thư mục hiện hành nếu request nhắm vào thư mục con.
  13. [QSA] - Append Query String: chỉ định server gắn chuỗi truy vấn vào cuối cùng của URL
  14. [S=x] Skip: Chỉ định server bỏ qua không xem xét  x rules tiếp theo nữa nếu một rule đã được thực thi.
  15. [T=MIME-type] - Khai báo định dạng files của server.
  16. -d Kiểm tra thư mục có tồn tại hay không?
  17. -f Kiểm tra file có tồn tại hay không
  18. -s Kiểm tra giá trị của file có khác 0 hay không?
Bài này mang tính chất giới thiệu các ký hiệu trong file htaccess nên nếu các bạn không hiểu thì ở bài sau ta sẽ thực hành nó một cách trực quan hơn.

Mã thông báo trả về từ server

  • 401 - Authorization Required : Lỗi chưa được xác thực user và password
  • 400 - Bad request : Lỗi truy cập không hợp lệ, do server không chấp nhận request, hoặc request thiếu một số yêu cầu nào đó.
  • 403 - Forbidden : Lỗi truy cập vào trang bị cấm
  • 500 - Internal Server Error : Lỗi do server
  • 404 - Wrong page : Lỗi truy cập vào trang không tồn tại
  • 301 - Moved Permanently: 302 - Moved Temporarily: Lỗi truy cập vào trang đã bị di chuyển.