Author Archive

LGPL

Tháng Chín 22, 2008
Văn thư lưu trữ mở Wikisource

Bước tới: chuyển hướng, tìm kiếm

Mục lục

[ẩn]


[sửa] GLPL — GNU Lesser General Public License


[sửa] Xem


[sửa] Giấy phép Công cộng Phụ GNU

Phiên bản 2.1, Tháng 6/1999

Translated/Dịch: 2007-06-29
Translator/Dịch giả: Clytie Siddall <clytie@riverland.net.au>
Reviewer/Biên tập viên: Trần Thế Trung <tttrung@hotmail.com>

This is an unofficial translation of the GNU Lesser General Public License into Vietnamese. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU LGPL–only the original English text of the GNU LGPL does that. However, we hope that this translation will help Vietnamese speakers understand the GNU LGPL better.

Đây là một bản dịch tiếng Việt không chính thức của Giấy phép Công cộng Phụ GNU (LGPL). Nó không được xuất bản bởi Tổ Chức Phần Mềm Tự Do, và không tuyên bố một cách hợp pháp các điều kiện phát hành phần mềm sử dụng LGPL — chỉ có bản tiếng Anh gốc của LGPL là hợp pháp. Tuy nhiên, chúng tôi mong muốn bản dịch này sẽ giúp đỡ người nói tiếng Việt hiểu khá hơn LGPL.

Tác quyền © năm 1991, 1999 của Tổ chức Phần mềm Tự do.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA (Mỹ)

Mọi người đều đuợc quyền sao chép và phân phối nguyên văn tài liệu giấy phép này, nhưng không được phép thay đổi nó.

[Đây là phiên bản đã phát hành thứ nhất của Giấy phép Công cộng Phụ GNU. Nó cũng thừa tự Giấy phép Công cộng Thư viện GNU, phiên bản 2, thì số hiệu phiên bản 2.1.]


[sửa] Lời mở đầu

Giấy phép sử dụng của hầu hết các phần mềm được thiết kế để bạn không được tự do chia sẻ và thay đổi phần mềm đó. Trái lại, các Giấy phép Công cộng GNU dự định đảm bảo cho bạn được tự do chia sẻ và thay đổi phần mềm một cách tự do, và đảm bảo phần mềm tự do cho mọi người sử dụng.

Giấy phép này, Giấy phép Công cộng Phụ, áp dụng cho một số gói phần mềm đã chỉ rõ đặc biệt — thường thư viện — của Tổ chức Phần mềm Tự do và các tác giả khác chọn sử dụng nó. Bạn cũng có thể sử dụng nó, nhưng trước tiên đề nghị bạn nghĩ cẩn thận nếu giấy phép này hay Giấy phép Công cộng chuẩn là chiến lược tốt hơn trong trường hợp riêng nào, dựa vào các lời giải thích bên dưới.

Khi chúng tôi nói về phần mềm tự do, chúng tôi đề cập đến sự tự do sử dụng, chứ không phải là giá cả. Giấy phép Công cộng GNU của chúng tôi được thiết kế để đảm bảo bạn có quyền tự do phát hành bản sao của phần mềm tự do (và thu tiền dịch vụ này nếu muốn), nhận mã nguồn hoặc có khả năng lấy nó nếu bạn muốn, bạn có thể thay đổi phần mềm hay sử dụng bất kỳ đoạn nào của nó trong chương trình tự do mới; và để giúp bạn biết rõ là bạn có thể làm những điều này.

Để bảo vệ quyền lợi của bạn, chúng tôi cần đưa ra những hạn chế để cấm bất cứ ai phủ nhận bạn có những quyền này hay đòi hỏi bạn từ bỏ nó. Những sự hạn chế này được hiểu là một số trách nhiệm nhất thiết của bạn nếu bạn phát hành bản sao của thư viện hoặc sửa đổi nó.

Chẳng hạn, nếu bạn phát hành bản sao của thư viện như vậy, dù là cho không hay thu tiền, bạn phải trao cho người nhận tất cả những quyền bạn có. Bạn phải chắc chắn là họ cũng nhận được hay có thể lấy mã nguồn. Nếu bạn liên kết mã nguồn khác với thư viện, bạn phải cung cấp các tập tin đối tượng hoàn thành cho người nhận, để họ có thể liên kết lại tập tin như vậy với thư viện rồi biên dịch lại. Và bạn cũng phải cho họ biết những điều kiện này, để họ biết những quyền của họ.

Chúng tôi bảo vệ quyền của bạn bằng một phương pháp hai bước: (1) chúng tôi bản quyền tác giả của thư viện, và (2) chúng tôi trao cho bạn giấy phép này để bạn có quyền hợp pháp sao chép, phát hành và/hay sửa đổi thư viện.

Hơn nữa, để bảo vệ mỗi người phát hành, chúng tôi muốn chắc chắn là mọi người hiểu rằng thư viện tự do này không có bảo hành. Nếu thư viện bị sửa đổi bởi người khác và được phân phát tiếp, chúng tôi muốn người nhận biết rằng cái mà họ có đó không phải là bản gốc, vì vậy, bất kỳ lỗi nào do người khác gây ra sẽ không làm mang tiếng đến tác giả gốc.

Cuối cùng, chương trình tự do nào cũng luôn bị đe dọa bởi bằng sáng chế phần mềm. Chúng tôi muốn chắc chắn là công ty không thể giới hạn được các người dùng chương trình tự do, bằng cách giành được giấy phép hạn chế từ người giữ sáng chế. Vì vậy chúng tôi cứ nhất định giấy phép sáng chế nào được giành cho một phiên bản của thư viện này phải phụ hợp với toàn bộ quyền tự do được ghi rõ trong giấy phép này.

Phần lớn phần mềm GNU, gồm có một số thư viện, được bao quát bởi Giấy phép Công cộng GNU chuẩn. Giấy phép này, Giấy phép Công cộng Phụ GNU, áp dụng cho một số thư viện đã xác định: nó rất khác với Giấy phép Công cộng GNU chuẩn. Chúng tôi sử dụng giấy phép này cho một số thư viện riêng, để cho phép khả năng liên kết thư viện như vậy vào chương trình khác tự do.

Khi chương trình được liên kết với thư viện, bất chấp một cách tĩnh hay bằng thư viện dùng chung, sự kết hợp hai điều này nói hợp pháp là một sản phẩm đã kết hợp, sẩn phẩm dẫn xuất thư viện gốc. Giấy phép Công cộng GNU chuẩn thì cho phép khả năng liên kết như vậy chỉ nếu toàn bộ sự kết hợp thoả tiêu chuẩn quyền tự do của nó. Giấy phép Công cộng Phụ GNU cho phép tiêu chuẩn lỏng lẻo hơn để liên kết mã nguồn khác với thư viện.

Chúng tôi gọi giấy phép này Giấy phép Công cộng « Phụ » vì nó làm ít để bảo vệ quyền tự do của người dùng hơn Giấy phép Công cộng chuẩn. Nó cũng cung cấp cho các nhà phát triển phần mềm tự do ít thế lợi hơn chương trình khác tự do cạnh tranh. Những nhược điểm này là lý do chúng tôi sử dụng Giấy phép Công cộng chuẩn cho rất nhiều thư viện. Tuy nhiên, giấy phép Phụ cung cấp lợi ích trong một số trường hợp đặc biệt.

Chẳng hạn, rất ít lần có như cầu đặc biệt hỗ trợ cách sử dụng rộng rãi nhất có thể một thư viện nào đó, để nó trở thành một tiêu chuẩn như thế. Để đặt mục đích này, các chương trình khác tự do cũng phải có quyền sử dụng thư viện đó. Một trường hợp xảy ra nhiều lần hơn là thư viện tự do làm cùng một công việc với thư viện khác tự do được sử dụng rộng rãi. Trong trường hợp này, không có lợi ích nhiều khi giới hạn thư viện tự do trong chỉ phần mềm tự do, vì thế chúng tôi sử dụng Giấy phép Công cộng Phụ.

Trong trường hợp khác, quyền sử dụng một thư viện nào đó trong chương trình khác tự do cũng cho rất nhiều người có khả năng sử dụng một tập phần mềm tự do rất lớn. Chẳng hạn, quyền sử dụng Thư viện C của GNU trong các chương trình khác tự do thì cho rất nhiều người thêm có khả năng sử dụng toàn bộ hệ điều hành GNU, cũng như biến thế của nó, hệ điều hành GNU/Linux.

Mặc dù Giấy phép Công cộng Phụ làm ít hơn để bảo vệ quyền tự do của người dùng, nó có phải đảm bảo rằng người dùng chương trình được liên kết với Thư viện có quyền tự do và khả năng chạy chương trình đó, bằng một phiên bản đã sửa đổi của Thư viện.

Theo đây có những điều kiện chính xác để sao chép, phát hành và sửa đổi. Hãy tập trung cẩn thận sự khác biệt giữa « một sản phẩm dựa vào thư viện » và « một sản phẩm sử dụng thư viện ». Điều trước chứa mã bắt nguồn từ thư viên, còn điều sau phải được kết hợp với thư viện để chạy được.


[sửa] Giấy Phép Công Cộng Phụ GNU — Điều Kiện Sao Chép, Phát Hành và Sửa Đổi


[sửa] Phần 0

Điều kiện Quyền này áp dụng cho bất kỳ thư viện phần mềm hay chương trình khác mà chứa một thông báo được chèn vào bởi người giữ tác quyền hay bất kỳ bên được quyền nói rằng có thể được phát hành theo các điều khoản của Giấy phép Công cộng Phụ này (cũng được gợi như là « Giấy phép này »). Mỗi người được cầp bản quyền được gọi là « bạn ».

Một « thư viện » nghĩa là một tập hợp các hàm phần mềm và/hay dữ liệu được chuẩn bị để được liên kết tiện lợi với chương trình ứng dụng (mà sử dụng một số hàm và dữ liệu trong tập hợp này) để xây dựng tập tin có khả năng thực hiện.

« Thư viện » dưới đây có nghĩa là bất kỳ thư viện phần mềm hay sản phẩm như vậy đã được phát hành theo các điều khoản này. Một « sẩn phẩm dựa trên Thư viện » có nghĩa là Thư viện hay bất kỳ sản phẩm nào bắt nguồn từ nó dưới luật bản quyền: tức là, sản phẩm chứa Thư viện đó hay một phần của nó, hoặc đúng nguyên văn hoặc với sự sửa đổi và/hoặc được dịch sang một ngôn ngữ khác. (Kể từ câu này, việc dịch ngôn ngữ được bao gồm vô hạn trong thuật ngữ « sự sửa đổi ».)

« Mã nguồn » của sản phẩm có nghĩa là dạng thức sản phẩm được ưa thích khi sửa đổi nó. Đối với thư viện, toàn bộ mã nguồn có nghĩa là tất cả các mã nguồn cho mọi mô-đun đã chứa, cộng với bất cứ tập tin xác định giao diện tương ứng, cộng với các văn lệnh được dùng để điều khiển tiến trình biên dịch và cài đặt thư viện.

Những hoạt động khác ngoài sự sao chép, phát hành và sửa đổi không được kiểm soát bởi Giấy phép này; nó ở ngoài phạm vi của giấy phép này. Hành động chạy Thư viện không bị hạn chế, và dữ liệu xuất từ Thư viện chỉ bị khống chế nếu nội dung của nó tạo thành một sản phẩm dựa vào Thư viện (không phụ thuộc vào việc sử dụng Thư viện như là công cụ ghi nó). Điều đó đúng hay không phụ thuộc vào điều mà Thư viện tạo ra, và điều mà chương trình sử dụng Thư viện tạo ra.


[sửa] Phần 1

Bạn có quyền sao chép và phát hành bản sao đúng nguyên văn của toàn bộ mã nguồn của Thư viện như bạn đã nhận nó, bằng bất kỳ cách nào, miễn là bạn công bố rõ ràng và thích đáng trên mỗi bản sao một thông báo tác quyền thích hợp và miễn trừ bảo hành; giữ nguyên vẹn mọi thông báo liên quan đến Giấy phép này và miễn trừ bảo hành; và đưa cho những người nhận Chương trình khác một bản sao của Giấy phép cùng với Thư viện.

Bạn có thể thu phí cho việc gởi bản sao, và bạn có thể tùy ý đề nghị cung cấp dịch vụ bảo hành có thu phí.


[sửa] Phần 2

Bạn có quyền sửa đổi bản sao của mình hay của Thư viện hoặc đoạn nào của nó để tạo một sản phẩm dựa vào Thư viện, và sao chép và phát hành sự sửa đổi hay sản phẩm như vậy theo điều khoản của Phần 1 nêu trên, miễn là bạn cũng tuân theo tất cả các điều kiện sau:


[sửa] a

Sản phẩm đã sửa đổi phải chính nó là thư viện phần mềm.


[sửa] b

Bạn phải làm cho mỗi tập tin đã sửa đổi chứa thông báo dễ thấy nói rằng bạn đã thay đổi tập tin đó và hiển thị ngày tháng của sự thay đổi nào.


[sửa] c

Bạn phải làm cho toàn bộ sản phẩm được cấp miễn phí cho người khác với điều kiện của Giấy phép này.


[sửa] d

Nếu một chức năng trong Thư viện đã sửa đổi tham chiếu đến một hàm hay bảng dữ liệu cần phải được cung cấp bởi một chương trình ứng dụng sử dụng chức năng này, khác với như đối số được gửi qua khi chức năng được gọi, thì bạn phải cố gắng thiện ý chắc chắn là, trong trường hợp ứng dụng không cung cấp hàm hay bảng như vậy, chức năng vẫn còn hoạt động được, cũng thực hiện phần nào của mục đích còn lại hữu ích.

(Chẳng hạn, một hàm trong thư viện để tính căn bậc hai có mục đích được xác định hoàn toàn, không phụ thuộc vào ứng dụng. Vì vậy, Phần phụ 2d cần thiết bất cứ hàm hay bảng do ứng dụng cung cấp được sử dụng bởi hàm này phải là tùy chọn: nếu ứng dụng không cung cấp, hàm căn bậc hai vẫn còn phải tính được căn bậc hai.)

Những điều kiện này áp dụng cho toàn bộ sản phẩm bị sửa đổi. Nếu có thể nhận ra phần riêng của sản phẩm đó không bắt nguồn từ Thư viện, và các phần này có thể được xem một cách hợp lý là sản phẩm riêng và không phụ thuộc, thì Giấy phép này, và các điều kiện của nó, không áp dụng cho những phần riêng đó khi bạn phát hành chúng là sản phẩm riêng. Tuy nhiên, khi bạn phát hành những phần đó cùng với toàn bộ sản phẩm dựa vào Thư viện, sự phát hành toàn bộ này phải tuân theo điều kiện của Giấy phép này, cung cấp cho mọi người có quyền bao trùm toàn bộ sản phẩm, bao quát tất cả mọi phần của nó, bất kể ai đã tạo nó.

Như thế thì phần này không đự định yêu cầu quyền hay không thừa nhận quyền của bạn về sản phẩm mà toàn bộ là do bạn tạo ra; mà phần này định nói về quyền hạn trong điều khiển sự phát hành sản phẩm bắt nguồn từ hay sản phẩm hợp tác tập thể dựa vào Thư viện.

Hơn nữa, việc chứa các sản phẩm khác không dựa vào Thư viện cùng với Thư viện (hay với sản phẩm dựa vào Thư viện) trên thiết bị lưu trữ hay vật phát hành không nằm trong phạm vi của Giấy phép này.


[sửa] Phần 3

Bạn có thể chọn áp dụng các điều kiện của Giấy phép Công cộng GNU chuẩn, thay cho Giấy phép này, cho một bản sao nào đó của Thư viện. Để làm như thế, bạn phải thay đổi mọi thông báo đề cập Giấy phép này, để đề cập Giấy phép Công cộng GNU chuẩn, phiên bản 2, thay cho Giấy phép này. (Có phiên bản mới hơn của Giấy phép Công cộng GNU chuẩn thì bạn có thể ghi rõ phiên bản đó thay thế, nếu bạn muốn.) Đừng thay đổi gì khác trong những thông báo này.

Một khi làm thay đổi này trong bản sao nào, không thể đảo ngược lại cho bản sao đó, vì thế Giấy phép Công cộng GNU chuẩn áp dụng cho tất cả các bản sao phụ và sản phẩm bất nguồn từ bản sao đó.

Tùy chọn này không có ích khi bạn muốn sao chép phần mã nguồn của Thư viện vào một chương trình không phải là thư viện.


[sửa] Phần 4

Bạn có quyền sao chép và phát hành Thư viện (hoặc đoạn nào của nó hoặc sản phẩm dựa vào nó, dưới Phần 2) trong dạng thức mã đối tượng hay tập tin chạy được với điều kiện của Phần 1 và 2 bên trên, miễn là bạn kèm theo toàn bộ mã nguồn tương ứng mà máy có thể đọc được, được phát hành với điều kiện của Phần 1 và 2 bên trên, trên thiết bị lưu trữ thường dùng để trao đổi phần mềm.

Nếu việc phát hành mã đối tượng được làm bằng cách trao truy cập sao chép từ một nơi đã xác định, thì việc trao các truy cập sao chép tương đương đến mã nguồn đó từ cùng nơi đó được tính là sự phát hành mã nguồn, mặc dù người khác không bắt buộc phải sao chép mã nguồn cùng với mã đối tượng.


[sửa] Phần 5

Một chương trình không chứa sản phẩm bắt nguồn từ bất cứ đoạn nào của Thư viện, còn được thiết kế để làm việc với Thư viện bằng cách được biên dịch hay liên kết với nó, được gọi là « sản phẩm sử dụng Thư viện ». Sản phẩm như vậy, độc lập không phải là sản phẩm bắt nguồn từ Thư viện thì nằm ở ngoại phạm vi của Giấy phép này.

Tuy nhiên, việc liên kết một « sản phẩm sử dụng Thư viện » với Thư viện thì tạo một tập tin chạy được bắt nguồn từ Thư viện (vì nó chứa đoạn của Thư viện), hơn là một « sản phẩm sử dụng Thư viện ». Tập tin chạy được thì được bao quát bởi Giấy phép này. Phần 6 phát biểu các điều kiện phát hành tập tin chạy được như vậy.

Khi một « sản phẩm sử dụng Thư viện » cũng sử dụng đoạn nào của tập tin phần đầu thuộc về Thư viện, mã đối tượng cho sản phẩm này có thể là một sản phẩm bắt nguồn từ Thư viện, mặc dù mã nguồn không phải. Điều đó đúng hay không là quan trọng đặc biệt nếu sản phẩm này có thể được liên kết không có Thư viện, hoặc nếu sản phẩm này chính nó là thư viện. Pháp luật chưa xác định chính xác ngưỡng đúng của trường hợp này.

Tập tin đối tượng như vậy sử dụng chỉ các tham số kiểu số, bố trí cấu trúc dữ liệu, và vĩ lệnh nhỏ và hàm trực tiếp nhỏ (mỗi điều có độ dài tối đa 10 dòng) thì cách sử dụng tập tin đối tượng là vô hạn, bất chấp nó hợp lý là sản phẩm bắt nguồn. (Tập tin chạy được chứa mã đối tượng này cộng với đoạn của Thư viện vẫn còn nằm dưới Phần 6.)

Không thì, nếu sản phẩm bắt nguồn từ Thư viện, bạn có thể phát hành mã đối tượng của sản phẩm theo điều kiện của Phần 6. Bất kỳ tập tin chạy được chứa sản phẩm đó cũng nằm dưới Section 6, bất chấp nó được liên kết trực tiếp với Thư viện chính nó.


[sửa] Phần 6

Ngoại lệ những Phần trên là bạn cũng có thể kết hợp hay liên kết một « sản phẩm sử dụng Thư viện » với Thư viện để tạo một sản phẩm chứa đoạn của Thư viện, rồi phát hành sản phẩm đó dưới các điều khoản bạn chọn, miễn là điều khoản này cho phép sửa đổi sản phẩm cho người khách sử dụng riêng, và cho phép thiết kế đối chiếu để gỡ lỗi trong sự sửa đổi như vậy.

Bạn phải công bố rõ ràng trên mỗi bản sao của sản phẩm một thông báo rằng Thư viện được dùng trong nó, và rằng Thư viện và cách sử dụng nó được bao quát bởi Giấy phép này. Bạn phải cung cấp một bản sao của Giấy phép này. Nếu sản phẩm trong khi thực hiện cũng hiển thị thông báo tác quyền, bạn phải chèn thông báo tác quyền cho Thư viện vào trong các thông báo như vậy, cũng như một tham chiếu chỉ người dùng tới bản sao của Giấy phép này. Hơn nữa, bạn phải làm một của những việc này:


[sửa] a

Kèm theo toàn bộ mã nguồn Thư viện tương ứng mà máy có thể đọc được, gồm thay đổi nào được làm trong sản phẩm đó (mà phải được phát hành dưới Phần 1 và 2 bên trên); và nếu sản phẩm là một tập tin có khả năng chạy được liên kết với Thư viện, kèm theo toàn bộ « sản phẩm sử dụng Thư viện » cho máy đọc được, theo định dạng mã đối tượng và/hay mã nguồn, để người dùng có khả năng sửa đổi Thư viện rồi liên kết nó để tạo một tập tin chạy được chứa Thư viện đã sửa đổi. (Hiểu được rằng người dùng thay đổi nội dung của tập tin xác định trong Thư viện sẽ không nhất thiết có khả năng biên dịch lại ứng dụng để sử dụng lời xác định đã sửa đổi.)


[sửa] b

Dùng một cơ chế thư viện dùng chung thích hợp để liên kết với Thư viện. Cơ chế thích hợp (1) dùng vào lúc chạy một bản sao thư viện đã nằm trên hệ thống máy tính của người dùng, thay vào sao chép các hàm thư viện vào tập tin chạy được, và (2) sẽ hoạt động cho đúng với một phiên bản thư viện đã sửa đổi, nếu người dùng cài đặt nó, miễn là phiên bản đã sửa đổi có giao diện tương thích với giao diện của phiên bản trong đó sản phẩm được tạo.


[sửa] c

Kèm theo lời mời ghi trên giấy, hợp lệ trong ít nhất ba năm sau, cung cấp cho cùng người dùng những nguyên liệu được xác định trong Phần phụ 6a trên, với giá không lớn hơn giá cần thiết để phân phát sản phẩm này.


[sửa] d

Nếu việc phát hành được làm bằng cách trao truy cập sao chép từ một nơi đã xác định, thì trao các truy cập sao chép tương đương đến những nguyên liệu đã xác định trên từ cùng nơi đó.


[sửa] e

Kiểm tra xem người dùng đã nhận một bản sao của những nguyên liệu này, hoặc bạn đã gửi một bản sao cho người dùng này.

Đối với tập tin chạy được, dạng thức cần thiết của « sản phẩm sử dụng Thư viện » phải chứa chương trình nào kiểu dữ liêu hay tiện ích cần thiết để tạo lại tập tin chạy được từ nó. Tuy nhiên, ngoại lệ đặc biệt là các nguyên liệu được phát hành không cần phải bao gồm những gì được phát hành bình thường (trong dạng thức hoặc nguồn hoặc nhị phân) với các thành phần chính (bộ biên dịch, hạt nhân v.v.) của hệ điều hành nơi tập tin chạy được hoạt động, trừ khi thành phần kèm theo cần thiết để chạy tập tin.

Có thể xảy ra rằng điều kiện này mâu thuẫn sự hạn chế giấy phép của thư viện sở hữu khác không bình thường kèm theo hệ điều hành. Sự mâu thuẫn như vậy có nghĩa là bạn không thể sử dụng cả thư viện như vậy và Thư viện đều trong tập tin chạy được bạn phát hành.


[sửa] Phần 7

Bạn có thể để chức năng thư viện là sản phẩm dựa vào Thư viện cạnh nhau trong một thư viện riêng lẻ, cộng với các chức năng thư viện không được bao quát bởi Giấy phép này, và phát hành thư viện đã kết hợp như vậy, miễn là cho phép phát hành riêng « sản phẩm sử dụng Thư viện » và chức năng thư viện khác, và miễn là bạn làm hai việc này:


[sửa] a

Kèm theo thư viện đã kết hợp một bản sao của cùng « sản phẩm sử dụng Thư viện », riêng với chức năng thư viện khác nào. Nó phải được phát hành với các điều khoản của những Phần trên.


[sửa] b

Công bố rõ ràng trên thư viện đã kết hợp thông báo rằng phần của nó là « sản phẩm sử dụng Thư viện », cũng chỉ tới nơi chứa dạng thức riêng của cùng sản phẩm kèm theo.


[sửa] Phần 8

Không cho phép bạn sao chép, sửa đổi, liên kết với hay phát hành Thư viện, trừ với điều kiện được diễn tả dứt khoát trong Giấy phép này. Bất kỳ sự cố gắng nào trong việc sao chép, sửa đổi, cấp giấy phép phụ, liên kết với hay phát hành Thư viện bằng cách khác bị bãi bỏ, và sẽ tự động kết thúc các quyền của bạn dưới Giấy phép này. Tuy nhiên, người khác đã nhận bản sao hay quyền từ bạn dưới Giấy phép này sẽ không bị ảnh hưởng, miễn là họ tiếp tục tuân theo hoàn toàn.


[sửa] Phần 9

Bạn không bắt buộc phải chấp nhận Giấy phép này, vì bạn chưa ký tên vào nó. Tuy nhiên, không có gì khác cho phép bạn sửa đổi hay phát hành Thư viện hay sản phẩm bắt nguồn từ nó. Các hành động này bị pháp luật cấm nếu bạn không chấp nhận Giấy phép này. Vì vậy, bằng cách sửa đổi hay phát hành Thư viện (hay sản phẩm dựa vào nó), bạn ngụ ý sự chấp nhận Giấy phép này để làm như thế, gồm mọi điều kiện sao chép, phát hành hay sửa đổi Thư viện hay sản phẩm dựa vào nó.


[sửa] Phần 10

Mỗi lần bạn phát hành lại Thư viện (hay sản phẩm dựa vào Thư viện), người nhận có thể nhận tự động một giấy phép từ người cấp gốc, để sao chép, phát hành, liên kết với hay sửa đổi Thư viện với điều kiện này. Không cho phép bạn hạn chế thêm cách người dùng sử dụng các quyền đã được cấp trong Giấy phép này. Bạn cũng không phải chịu trách nhiệm về việc ép buộc người khác tuân theo điều kiện của Giấy phép này.


[sửa] Phần 11

Nếu, do kết quả của quyết định của toà án hay các cáo buộc vi phạm bằng sáng chế hay vì bất cứ lý do nào (không bị giới hạn trong vấn đề bằng sáng chế), bạn bị ép buộc chấp nhận điều kiện (hoặc vì quyết định của toà án, sự thoả thuận hoặc cách khác nào) mà mâu thuẫn điều kiện của Giấy phép này, trường hợp này không miễn cho bạn không phải thỏa mãn điều kiện của Giấy phép này. Nếu bạn không thể phát hành bằng cách thỏa mãn đồng thời các giao ước của bạn dưới Giấy phép này và bất kỳ giao ước thích hợp khác, thì kết quả là không cho phép bạn phát hành Thư viện bằng cách nào cả. Lấy thí dụ, nếu một bằng sáng chế nào đó không cho phép sự phát hành lại Thư viện một cách miễn tiền bản quyền phát minh cho mọi người nhận bản sao từ bạn một cách trực tiếp hay gián tiếp, thì cách duy nhất bạn có thể thỏa cả bằng đó và Giấy phép này là hoàn toàn không phát hành Thư viện.

Nếu đoạn nào trong phần này được quyết định là không hợp lệ hay không thể được ép buộc trong bất kỳ trường hợp riêng nào, đoạn còn lại dự định áp dụng được, và toàn bộ phần dự định áp dụng trong các trường hợp khác.

Không phải là mục đích của phần này để xúi giục bạn vi phạm bằng sáng chế nào hay lời yêu sách quyền tài sản khác, hoặc để không thừa nhận sự hợp lệ của lời yêu sách như vậy; phần này có mục đích duy nhất là bảo vệ tình trạng nguyên vẹn của hệ thống phát hành phần mềm tự do, mà được thực thi bởi các áp dụng giấy phép công cộng. Nhiều người đã đóng góp rộng lượng cho một phạm vị rộng của các phần mềm được phát hành qua hệ thống đó, nhờ sự thực thi nền bỉ hệ thống đó: tùy tác giả / người tặng quyết định nếu họ muốn phát hành phần mềm qua hệ thống khác nào, và người được cấp Giấy phép không thể điều khiển cách quyết định đó.

Phần này dự định diễn tả rõ ràng hoàn toàn kết quả được hiểu của phần còn lại của Giấy phép này.


[sửa] Phần 12

Nếu sự phát hành và/hay cách sử dụng Thư viện bị hạn chế trong một số quốc gia nào đó, hoặc bởi bằng sáng chế hoặc bởi giao diện có bản quyền tác giả, người giữ tác quyền gốc đã đặt Thư viện dưới Giấy phép này có khả năng thêm sự hạn chế phát hành địa lý riêng loại trừ những quốc gia đó, để cho phép phát hành chỉ trong hay giữa các quốc gia không bị loại trừ như thế. Trong trường hợp như vậy, Giấy phép này hợp nhất sự hạn chế đó như là nó được ghi trong thân của Giấy phép này.


[sửa] Phần 13

Tổ chức Phần mềm Tự do có thể xuất bản phiên bản đã sửa đổi và/hay mới của Giấy phép Công cộng Phụ GNU. Phiên bản mới như vậy sẽ có tinh thần tương tự với phiên bản hiện thời, nhưng có thể khác biệt trong chi tiết để giải quyết vấn đề mới.

Mỗi phiên bản được gán một số hiệu phân biệt phiên bản đó. Nếu Thư viện xác định số phiên bản riêng của Giấy phép này áp dụng cho nó, « và bất kỳ phiên bản sau nào », bạn có tùy chọn thỏa điều kiện hoặc của phiên bản đó, hoặc của bất kỳ phiên bản sau nào được xuất bản bởi Tổ chức Phần mềm Tự do. Nếu Thư viện không xác định số phiên bản riêng của Giấy phép này, bạn có khả năng chọn bất kỳ phiên bản nào của Giấy phép này đã được xuất bản bởi Tổ chức Phần mềm Tự do.


[sửa] Phần 14

Nếu bạn muốn hợp nhất phần nào của Thư viện vào chương trình tự do khác có điều kiện phát hành không tương thích với Giấy phép này, hãy xin phép tác giả. Đối với phần mềm có bản quyền tác giả của Tổ chức Phần mềm Tự do, hãy viết thư cho Tổ chức Phần mềm Tự do : thỉng thoảng chúng tôi cho phép ngoại lệ trong trường hợp này. Quyết định của chúng tôi sẽ được hướng dẫn bởi hai mục đích là sự bảo tồn trạng thái tự do của mọi điều bắt nguồn từ phần mềm tự do của chúng tôi, và sự đẩy mạnh sự chia sẻ và sử dụng lại phần mềm một cách chung.


[sửa] Không Bảo Hành


[sửa] Phần 15

VÌ THƯ VIỆN ĐÃ ĐƯỢC CẤP PHÉP MIỄN PHÍ, KHÔNG CÓ BẢO HÀNH ĐỐI VỚI THƯ VIỆN NÀY, VỚI ĐIỀU KIỆN ĐƯỢC PHÁP LUẬT CHO PHÉP. TRỪ KHI XÁC ĐỊNH KHÁC BẰNG TÀI LIỆU GIẤY TỜ, CÁC NGƯỜI GIỮ BẢN QUYỀN TÁC GIẢ VÀ/HAY NGƯỜI KHÁC CUNG CẤP THƯ VIỆN NÀY « NHƯ THẾ », KHÔNG CÓ BẢO HÀNH GÌ CẢ, KHÔNG PHÁT BIỂU NÓ, CŨNG KHÔNG NGỤ Ý NÓ, GỒM, NHƯNG KHÔNG BỊ HẠN CHẾ BỞI, SỰ BẢO ĐẢM ĐÃ NGỤ Ý TÌNH TRẠNG CÓ THỂ BÁN ĐƯỢC VÀ SỰ THÍCH HỢP VỚI MỘT MỤC ĐÍCH DỨT KHOÁT. MỌI RỦI RO VỀ CHẤT LƯỢNG, ĐỘ CHÍNH XÁC VÀ HIỆU SUẤT CỦA THƯ VIỆN NÀY BẠN SẼ TỰ CHỊU. NẾU THƯ VIỆN NÀY GÂY RA HƯ HỎNG, BẠN GÁNH VÁC HOÀN TOÀN TRÁCH NGHIỆM TRẢ TIỀN DỊCH VỤ GIÚP ĐỠ HAY SỪA CHỮA.


[sửa] Phần 16

KHÔNG CÓ TRƯỜNG HỢP NÀO (TRỪ KHI PHÁP LUẬT YÊU CẦU HAY KHI ĐƯỢC THỎA THUẬN BẰNG TÀI LIỆU GIẤY TỜ) MÀ BẤT KỲ NGƯỜI GIỮ BẢN QUYỀN TÁC GIẢ NÀO, HAY BẤT KỲ NGƯỜI KHÁC NÀO CÓ THỂ SỬA ĐỔI VÀ/HAY PHÁT HÀNH LẠI THƯ VIỆN NHƯ ĐƯỢC PHÉP BÊN TRÊN, SẼ CÓ TRÁCH NHIỆM VỀ PHÁP LÝ BỒI THƯỜNG, GỒM BẤT KỲ BỒI THƯỜNG KIỂU TỔNG QUÁT, ĐẶC BIỆT, NGẪU NHIÊN HAY DO HẬU QUẢ DO SỬ DỤNG HAY SỰ KHÔNG CÓ KHẢ NĂNG SỬ DỤNG THƯ VIỆN NÀY (GỒM NHƯNG KHÔNG PHẢI BỊ HẠN THẾ BỞI SỰ MẤT DỮ LIỆU HAY DỮ LIỆU BỊ LÀM CHO KHÔNG CHÍNH XÁC HAY CÁC MẤT MÁT CỦA BẠN HAY NGƯỜI KHÁC HAY SỰ KHÔNG HOẠT ĐỘNG ĐƯỢC THƯ VIỆN NÀY VỚI CHƯƠNG TRÌNH KHÁC), THẬM CHÍ NẾU BẠN HAY NGƯỜI KHÁC ĐÃ ĐƯỢC BÁO BIẾT CÓ KHẢ NĂNG THIỆT HẠI NHƯ VẬY.

Két thúc của điều kiện


[sửa] Cách áp dụng điều kiện này cho các chương trình mới của bạn

Nếu bạn phát triển thư viện mới, và muốn làm cho nó có ích nhiều nhất cho mọi người, phương pháp tốt nhất đạt được mục đích này là làm cho nó là phần mềm tự do mà mọi người có thể phát hành lại và sửa đổi với điều kiện này. Có thể làm như thế bằng cách cho phép phát hành lại dưới những điều kiện này (hoặc dưới những điều kiện của Giấy phép Công cộng chuẩn).

Để làm như thế, hãy đính các thông báo theo đây kèm chương trình. Cách an toàn nhất là đính chúng vào đầu của mỗi tập tin mã nguồn, để thể hiện cách thông báo không có bảo hành một cách hữu hiệu nhất; và mỗi tập tin nên chứa ít nhất đoạn « Tác quyền » và thông tin chỉ tới nơi tìm được thông báo đầy đủ.


   {một đoạn ghi tên thư viện và mô tả ngắn.}
Copyright © {năm tên của tác giả}
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.
   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.
   You should have received a copy of the GNU Lesser General Public
   License along with this library; if not, write to the
Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.

[Bản dịch: {một đoạn ghi tên chương trình và mô tả ngắn.}
Tác quyền © {năm tên của tác giả}

[một đoạn ghi tên chương trình và mô tả ngắn.}
Tác quyền © {năm tên của tác giả}

Thư viện này là phần mềm tự do; bạn có thể phát hành lại nó và/hoặc sửa đổi nó với điều kiện của Giấy phép Công cộng Phụ GNU như được xuất bản bởi Tổ chức Phần mềm Tự do; hoặc phiên bản 2.1 của Giấy phép này, hoặc (tùy chọn) bất kỳ phiên bản sau nào.

Thư viện này được phát hành vì mong muốn nó có ích, nhưng KHÔNG CÓ BẢO HÀNH GÌ CẢ, THẬM CHÍ KHÔNG CÓ BẢO ĐẢM ĐƯỢC NGỤ Ý KHẢ NĂNG BÁN HAY KHẢ NĂNG LÀM ĐƯỢC VIỆC DỨT KHOÁT. Xem Giấy phép Công cộng Phụ GNU để biết thêm chi tiết.

Bạn đã nhận một bản sao của Giấy phép Công cộng Phụ GNU cùng với chương trình này; nếu không, hãy viết thư cho Tổ chức Phần mềm Tự do,
số 51 Đường Franklin, Tầng thứ năm,
Thành Phố Boston, Tỉnh MA số bưu điện 02110-1301 Mỹ.
]

Bạn cũng nên thêm thông tin về cách liên lạc với bạn bằng cả thư bưu điện lẫn thư điện tử.

Bạn cũng nên yêu cầu người chủ của bạn (nếu bạn làm việc lập trình viên trong một công ty) hay trường học của bạn, nếu có, ký tên vào « đơn từ chối trách nhiệm tác quyền » về thư viện này, nếu cần. Đây là một mẫu ví dụ : {hãy thay thế đoạn nằm trong dấu ngoặc móc}


{Tên công ty hay trường}, hereby disclaims all copyright interest in the library `{Tên thư viện}’ (which {chức năng của thư viện}) written by {tên tác giả}.


[Bản dịch:
{Tên công ty/trường} bằng cách này từ chối bất kỳ sự sở hữu thư viện `{Tên thư viện}’ ({kiểu thư viện}) được tạo bởi {Tên lập trình viên}.

{chữ ký của chủ}, {ngày tháng}
{tên và chức vụ của chủ}
]


Verbatim copying and distribution of this translation of the GNU LGPL is permitted in any medium without royalty provided this notice is preserved.

Mọi người đều đuợc quyền sao chép và phân phối nguyên văn bản dịch giấy phép này, thông qua bất cứ phương tiện nào, miễn tiền bản quyền phát minh, miễn là thông báo này được bảo tồn.

[sửa] Xem thêm

GPL
GFDL
OFL

Giấy phép GNU LGPL

Tháng Chín 22, 2008

Bản dịch tiếng Việt của Giấy phép Công cộng GNU Hạn chế

Người dịch: Đặng Minh Tuấn
Email : dangtuan@vietkey.net

Đây là bản dịch tiếng Việt không chính thức của Giấy phép Công cộng GNU Hạn chế. Bản dịch này không phải do Tổ chức Phần mềm Tự do ấn hành, và nó không quy định về mặt pháp lý các điều khoản cho các phần mềm sử dụng giấy phép GNU LGPL — chỉ có bản tiếng Anh gốc của GNU LGPL mới có thể làm được như vậy. Tuy nhiên, chúng tôi hy vọng rằng bản dịch này sẽ giúp cho những người nói tiếng Việt hiểu rõ hơn về GNU LGPL.
This is an unofficial translation of the GNU Lesser General Public License into Vietnamese. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU LGPL–only the original English text of the GNU LGPL does that. However, we hope that this translation will help Vietnamese speakers understand the GNU LGPL better.

Giấy phép công cộng GNU hạn chế (LGPL)
    Phiên bản 2.1, tháng 2 năm 1999
    Copyright (C) 1991, 1999 Free


Software Foundation, Inc. 59 Temple Place – Suite 330, Boston, MA  02111-1307, USA Ai cũng được phép sao chép và lưu hành bản sao nguyên bản nhưng không được phép thay đổi nội dung của giấy phép này.
[Đây là phiên bản đầu tiên của Giấy phép GNU Hạn chế. Giấy phép này cũng được coi là phiên bản kế tiếp của Giấy phép công cộng GNU, phiên bản 2.0, do đó nó có phiên bản là 2.1.]
Lời nói đầu
Giấy phép sử dụng của hầu hết các phần mềm đều được đưa ra nhằm hạn chế bạn tự do chia sẻ và thay đổi nó. Ngược lại, Giấy phép Công cộng của GNU có mục đích đảm bảo cho bạn có thể tự do chia sẻ và thay đổi phần mềm tự do – tức là đảm bảo rằng phần mềm đó là tự do đối với mọi người sử dụng.
Giấy phép Công cộng GNU hạn chế này được áp dụng cho các gói phần mềm – đặc biệt là các thư viện — của Tổ chức Phần mềm Tự do hoặc của các tác giả quyết định sử dụng giấy phép này. Bạn cũng có thể sử dụng nó, nhưng theo chúng tôi bạn nên suy nghĩ kỹ lưỡng liệu nên sử dụng giấy phép này hoặc Giấy phép công cộng GNU bình thường cho từng trường hợp cụ thể, căn cứ theo những điều khoản dưới đây.
Khi nói đến phần mềm tự do, chúng ta nói đến sự tự do sử dụng chứ không quan tâm đến giá cả. Giấy phép Công cộng của chúng tôi được thiết kế để đảm bảo rằng bạn hoàn toàn tự do cung cấp các bản sao của phần mềm tự do (cũng như kinh doanh dịch vụ này nếu bạn muốn); rằng bạn có thể nhận được mã nguồn nếu bạn muốn; rằng bạn có thể sửa đổi phần mềm hoặc sử dụng các thành phần của phần mềm đó cho những chương trình tự do mới; và rằng bạn được thông báo là bạn có thể làm được những điều này.
Để bảo vệ quyền của bạn, chúng tôi cần đưa ra những hạn chế để ngăn chặn những ai chối bỏ quyền của bạn, hoặc yêu cầu bạn chối bỏ quyền của mình. Những hạn chế này cũng có nghĩa là những trách nhiệm nhất định đối với bạn khi bạn cung cấp các bản sao của thư viện hoặc khi chỉnh sửa thư viện đó.
Ví dụ, nếu bạn cung cấp các bản sao của một thư viện, dù miễn phí hay không, bạn phải cho người nhận tất cả các quyền mà bạn có. Bạn cũng phải đảm bảo rằng họ cũng nhận được hoặc có thể nhận được mã nguồn. Nếu bạn liên kết mã nguồn khác với thư viện, bạn phải cung cấp các tập tin đã dịch cho người nhận sao cho họ có thể liên kết lại được sau khi sửa đổi và dịch lại thư viện. Và bạn phải giới thiệu những điều khoản này cho họ để họ biết rõ về quyền của mình.
Chúng tôi bảo vệ quyền của bạn với hai bước: (1) bảo vệ bản quyền thư viện phần mềm, và (2) cung cấp giấy phép này để bạn có thể sao chép, lưu hành và/hoặc chỉnh sửa thư viện một cách hợp pháp.
Để bảo vệ người phân phối, chúng tôi cần phải làm rõ rằng không có bảo hành  cho những thư viện tự do. Nếu một người nào đó chỉnh sửa và sau đó phân phối nó, thì chúng tôi muốn những người sử dụng biết rằng cái họ đang có không phải là bản gốc, do đó tất cả những vấn đề, lỗi do những người khác gây ra hoàn toàn không ảnh hưởng tới uy tín của tác giả ban đầu. Cuối cùng, bất kỳ một chương trình tự do nào cũng đều thường xuyên có nguy cơ bị đe doạ bởi giấy phép bản quyền.
Chúng tôi muốn chắc chắn rằng các công ty không thể hạn chế người sử dụng đối với phần mềm tự do khi các công ty này có giấy phép từ những người nắm giữ bản quyền. Bởi vậy, chúng tôi yêu cầu mỗi giấy phép bản quyền cho thư viện cần phải được đảm bảo hoàn toàn tự do sử dụng theo giấy phép này.Phần lớn các phần mềm GNU, kể cả một số thư viện, được bảo vệ theo Giấy phép Công cộng thông thường.
Giấy phép này, Giấy phép Công cộng Hạn chế, được áp dụng cho những thư viện có mục đích xác định, khác hẳn so với Giấy phép Công cộng thông thường. Chúng ta sử dụng Giấy phép này cho mục đích liên kết những thư viện đó vào những phần mềm không tự do. Khi chương trình được liên kết với một thư viện, dù liên kết tĩnh hay liên kết động, thì kết hợp của hai thành phần đó về mặt pháp lý là một sản phẩm kết hợp, có nguồn gốc từ thư viện gốc ban đầu.
Giấy phép Công cộng thông thường chỉ cho phép những liên kết đó nếu toàn bộ sự kết hợp phải thoả mãn điều kiện tự do. Giấy phép Công cộng hạn chế đưa ra những điều kiện ràng buộc ít hơn khi liên kết mã nguồn khác với thư viện.
Chúng tôi gọi giấy phép này là Giấy phép Công cộng “Hạn chế” bởi vì nó bảo vệ quyền tự do của người sử dụng ở mức độ hạn chế hơn so với Giấy phép Công cộng thông thường. Nó cũng hạn chế tính ưu việt trong việc cạnh tranh với những phần mềm không tự do đối với những nhà phát triển phần mềm tự do khác.
Những hạn chế này cũng là lý do tại sao chúng ta dùng Giấy phép Công cộng thông thường cho đa số các thư viện. Tuy nhiên Giấy phép Công cộng Hạn chế cũng có những ưu điểm trong một số trường hợp xác định.
Ví dụ, trong một số hãn hữu trường hợp, cần phải quảng bá, phân phối rộng nhất có thể được đối với một số thư viện để sao cho nó sẽ thành chuẩn “thực tế” (de facto). Để làm được điều này, cần phải cho phép những phần mềm không tự do cũng có thể sử dụng được thư viện này.
Trường hợp phổ biến hơn là, khi thư viện tự do có cùng chức năng giống thư viện không tư do đang được dùng phổ biến, trong trường hợp này thì thư viện tự do sẽ hạn chế sử dụng chỉ trong các phần mềm tự do, vì vậy chúng ta cần sử dụng Giấy phép Công cộng hạn chế (để có thể nâng cao miền ảnh hưởng).
Trong các trường hợp khác, việc cho phép sử dụng một số bộ thư viện nào đó được sử dụng trong các phần mềm không tự do sẽ tạo ra một số lượng lớn hơn người sử phần mềm tự do.
Ví dụ, việc cho phép sử dụng bộ thư viện GNU C trong phần mềm không tự do sẽ khuyến khích nhiều người sử dụng hệ điều hành GNU cũng như các biến thể của nó, hệ điều hành GNU/LINUX.
Mặc dù Giấy phép Công cộng Hạn chế sẽ bảo vệ quyền tự do của người sử dụng ít hơn, nhưng nó vấn đảm bảo rằng người sử dụng phần mềm được liên kết với một thư viện xác định có sự tự do và đủ quyền để thực thi chương trình sử dụng phiên bản sửa đổi của thư viện đó.
Dưới đây là những điều khoản và điều kiện rõ ràng đối với việc sao chép, lưu hành và chỉnh sửa. Bạn hãy đặc biệt lưu ý sự khác nhau giữa hai khái niệm “Sản phẩm dựa trên bộ thư viện” và “Sản phẩm sử dụng bộ thư viện”; sản phẩm thứ nhất chứa mã nguồn được có nguồn gốc từ thư viện, còn sản phẩm thứ hai cần phải liên kết với thư viện mỗi khi thực thi.
NHỮNG ĐIỀU KHOẢN VÀ ĐIỀU KIỆN ĐỐI VỚI VIỆC SAO CHÉP, LƯU HÀNH VÀ CHỈNH SỬA

  • 0. Giấy phép này áp dụng cho bất kỳ một thư viện hay một chương trình mà người giữ bản quyền công bố rằng nó có thể được cung cấp trong khuôn khổ những điều khoản của Giấy phép Công cộng Hạn chế này. Mỗi người được cấp phép được gọi là “bạn”.
    Từ “thư viện” có nghĩa là tập hợp các hàm và/hoặc dữ liệu được chuẩn bị sao cho có thể dễ dàng liên kết với các chương trình (có sử dụng các hàm và dữ liệu này) để tạo thành chương trình hoàn chỉnh có thể thực thi được.
    Từ “Thư viện” (viết hoa chữ Thư) dưới đây có nghĩa là tất cả các thư viện chương trình hay sản phẩm được phân phối theo các điều khoản của giấy phép này. Sản phẩm dựa trên bộ Thư viện là Thư viện hoặc sản phẩm bắt nguồn từ Thư viện đó theo luật bản quyền, nghĩa là một sản phẩm chứa đựng Thư viện hoặc một phần của nó, hoặc đúng nguyên bản hoặc có một số chỉnh sửa và/hoặc được dịch ra một ngôn ngữ khác. (Sau đây, việc dịch được bao gồm nhưng không hạn chế trong khái niệm “chỉnh sửa”).
    “Mã nguồn” của sản phẩm là một dạng của sản phẩm thường được dùng để chỉnh sửa sản phẩm đó. Toàn bộ mã nguồn của một thư viện là tất cả mã nguồn của tất cả các mô-đun của thư viện đó, cộng với các tập tin định nghĩa giao diện tương ứng, cộng với các tập tin lệnh (scripts) được sử dụng để điều khiển quá trình biên dịch và cài đặt bộ thư viện.
    Trong Giấy phép này không đề cập tới các hoạt động khác ngoài việc sao chép, lưu hành và chỉnh sửa; chúng nằm ngoài phạm vi của giấy phép này. Hành động chạy chương trình sử dụng    Thư viện không bị hạn chế, và những kết quả từ việc chạy chương trình chỉ được đề cập tới nếu nội dung của nó tạo thành một sản phẩm dựa trên Thư viện (độc lập với việc sử dụng Thư viện tromg công cụ để viết ra nó). Điều này đúng hay không là phụ thuộc vào Thư viện thực hiện những gì và chương trình sử dụng Thư viện này thực hiện những gì.
  • 1. Bạn có thể sao chép và lưu hành những bản sao nguyên bản của toàn bộ mã nguồn Thư viện đúng như khi bạn nhận được, qua bất kỳ phương tiện nào, với điều kiện trên mỗi bản sao bạn đều kèm theo một ghi chú bản quyền rõ ràng và từ chối bảo hành; giữ nguyên tất cả các ghi chú theo Giấy phép này và về việc không có bất kỳ một sự bảo hành nào; và cùng với Thư viện bạn cung cấp cho người sử dụng một bản sao của Giấy phép này. Bạn có thể tính phí việc chuyển giao vật lý cho mỗi bản sao, và tuỳ theo quyết định của mình bạn có thể cung cấp bảo hành để đổi lại với chi phí mà bạn đã tính.
  • 2. Bạn có thể chỉnh sửa bản sao của bạn hoặc các bản sao của Thư viện hoặc của bất kỳ phần nào của nó, từ đó hình thành một sản phẩm dựa trên Thư viện, và sao chép cũng như phân phối sản phẩm đó hoặc những chỉnh sửa đó theo điều khoản trong Mục 1 trên đây, khi bạn đáp ứng được những điều kiện dưới đây:
    • a)  Sản phẩm đã chỉnh sửa cũng là một thư viện phần mềm.
    • b)  Bạn phải có ghi chú rõ ràng trong những tệp tin đã chỉnh sửa là bạn đã chỉnh sửa nó, và ngày tháng của bất kỳ một thay đổi nào.
    • c)  Bạn phải cấp giấy phép miễn phí cho tất cả các bên thứ ba toàn bộ sản phẩm theo những điều khoản của Giấy phép này.
    • d) Nếu một chức năng nào đó trong Thư viện đã sửa đổi liên quan đến một hàm nào đó hoặc một bảng dữ liệu nào đó được cung cấp đi kèm với một phần mềm, mà phần mềm này sử dụng chức năng đó khác với việc truyền tham số khi chức năng đó được thực hiện, thì bạn phải cố gắng đảm bảo rằng trong trường hợp chương trình không cung cấp kèm hàm và bảng dữ liệu thì chức năng đó vẫn phải hoạt động và thực hiện sao cho bất kỳ mục đích nào của nó vẫn phải có ý nghĩa.
      (ví dụ: một hàm trong thư viện dùng để tính căn bậc 2 được thiết kế để tính với những giá trị được định nghĩa từ trước trong ứng dụng, vì vậy mục 2d yêu cầu rằng bất kỳ hàm hay bảng dữ liệu bất kỳ nào được sử dụng bởi hàm của thư viện sẽ không bị phụ thuộc, nếu chương trình không cung cấp kèm theo chúng thì hàm tính căn bậc 2 vẫn phải tính được căn bậc 2).
      Yêu cầu này được áp dụng cho sản phẩm chỉnh sửa một cách tổng thể. Nếu một phần xác định nào đó của sản phẩm không có nguồn gốc từ Thư viện và nó có thể được coi và tách riêng thành sản phẩm độc lập thì Giấy phép này với các điều khoản của nó sẽ không áp dụng khi bạn phân phối chúng như là sản phẩm riêng biệt. Nhưng khi bạn phân phối nó như là một thành phần của một phần mềm hoàn chỉnh có sử dụng Thư viện đó thì việc phân phối phải tuân thủ các điều khoản của Giấy phép này mà việc cấp phép của nó cho người được cấp phép phải được mở rộng cho toàn bộ sản phẩm, tức là tới bất kỳ phần nào của sản phẩm không quan tâm người nào viết ra thành phần đó.
      Như vậy, điều khoản này không nhằm mục đích xác nhận quyền hoặc tranh giành quyền của bạn đối với những sản phẩm hoàn toàn do bạn viết; mà mục đích của nó là nhằm thi hành quyền kiểm soát đối với việc cung cấp những sản phẩm bắt nguồn hoặc tổng hợp dựa trên Thư viện.
      Ngoài ra, việc kết hợp thuần tuý Thư viện (hoặc một sản phẩm dựa trên Thư viện) với một sản phẩm không dựa trên Thư viện với mục đích lưu trữ hoặc quảng bá trong đĩa cứng, hoặc phuong tiện phân phối sẽ không đưa sản phẩm đó vào trong phạm vi áp dụng của Giấy phép này.
  • 3. Bạn có thể quyết định áp dụng các điều khoản của Giấy phép công cộng thông thường thay vì Giấy phép này cho một bản sao xác định của Thư viện. Để làm điều này, bạn cần phải thay đổi tất cả các ghi chú tham chiếu đến Giấy phép này để sao cho chúng sẽ tham chiếu đến Giấy phép Công cộng thông thường phiên bản 2, thay vì Giấy phép này (nếu xuất hiện phiên bản mới hơn phiên bản 2.0 của Giấy phép Công cộng thì Bạn có thể xác định phiên bản mới đó nếu Bạn muốn.) Bạn không được làm bất kỳ thay đổi nào khác trong các ghi chú này. Một khi các thay đổi này đã được áp dụng cho một bản sao xác định, thì điều đó không thể đảo ngược lại cho bản sao này. Vì vậy Giấy phép Công cộng thông thường sẽ được áp dụng cho các bản sao sau đó hoặc cho sản phẩm có nguồn gốc từ bản sao này. Lựa chọn này sẽ có ích khi Bạn muốn sao một phần mã nguồn của Thư viện vào một chương trình không phải là Thư viện.
  • 4. Bạn có thể sao chép và phân phối Thư viện (hoặc một phần của sản phẩm dựa trên Thư viện, nêu trong Mục 2) dưới hình thức mã đã biên dịch hoặc dưới dạng có thể thực thi được theo các điều khoản nêu trong Mục 1 và 2 ở trên, với điều kiện bạn phải kèm theo đó một bản mã nguồn  đầy đủ có thể biên dịch theo các điều khoản trong Mục 1 và 2 nêu trên trong một môi trường trao đổi phần mềm thông thường.Nếu việc phân phối mã đã biên dịch được thực hiện thông qua việc truy nhập tới một vị trí xác định thì việc cung cấp truy cập tương đương đến mã nguồn từ cùng vị trí đó hoàn toàn đáp ứng yêu cầu phân phối mã nguồn, mặc dù các đối tượng thứ 3 không bắt buộc phải sao cả mã nguồn cùng với mã đã biên dịch.
  • 5. Một phần mềm không chứa bất kỳ thành phần nào có nguồn gốc từ Thư viện nhưng được thiết kế để làm việc với Thư viện thông qua việc biên dịch và liên kết với Thư viện được gọi là “Sản phẩm sử dụng Thư viện”. Sản phẩm như vậy trong sự cô lập không phải là sản phẩm có nguồn gốc từ Thư viện do đó nó nằm ngoài phạm vi của Giấy phép này.
    Tuy nhiên, việc liên kết (link) một “sản phẩm sử dụng Thư viện” với Thư viện tạo ra sản phẩm thực thi có nguồn gốc từ Thư viện (bởi vì nó chứa một phần của Thư viện) chứ không phải là “Sản phẩm sử dụng Thư viện” vì vậy sản phẩm thực thi này sẽ nằm trong phạm vi của Giấy phép này. Mục 6 sẽ quy định những điều khoản cho việc phân phối các sản phẩm thực thi.
    Khi một “Sản phẩm sử dụng thư viện” sử dụng dữ liệu từ các tập tin tiền tố (header) là thành phần của Thư viện, mã đã biên dịch của sản phẩm này có thể là một sản phẩm có nguồn gốc từ Thư viện mặc dù mã nguồn của nó thì không có nguồn gốc từ Thư viện, Điều này có là sự thực hay không, tuỳ thuộc vào việc sản phẩm có được liên kết mà không cần tới Thư viện hoặc Sản phẩm bản thân có là Thư viện hay không, ngưỡng để phân biệt khi nào là sự thật, không được định nghĩa một cách chính xác trong luật.
    Nếu một tập tin đã biên dịch chỉ sử dụng các tham số là các giá trị số, cấu trúc dữ liệu về bố cục, các Macro nhỏ và các hàm nhúng nhỏ (10 dòng lệnh hoặc ít hơn) thì việc sử dụng các tập tin đã biên dịch như vậy là không hạn chế cho dù liệu nó có phải là sản phẩm dẫn xuất hợp pháp hay không. (Các sản phẩm thực thi có chứa những mã đã biên dịch này cộng với các thành phần của Thư viện vẫn phải tuân thủ Mục 6 của Giấy phép này).
    Nói một cách khác, nếu sản phẩm có nguồn gốc từ Thư viện thì bạn có thể phân phối mã đã biên dịch theo các điều khoản ở Mục 6. Một chương trình thực thi được có chứa những sản phẩm như vậy cũng phải tuân theo Mục 6 cho dù nó có được liên kết một cách trực tiếp với Thư viện hay không.
  • 6. Như là một ngoại lệ của Mục trên, bạn có thể kết hợp hoặc liên kết một “sản phẩm sử dụng Thư viện” với Thư Viện để tạo ra một sản phẩm chứa các thành phần của Thư viện và phân phối sản phẩm đó theo các điều khoản mà bạn chọn, với điều kiện các điều khoản này phải cho phép chỉnh sửa sản phẩm phục vụ nhu cầu của người sử dụng và cho phép kỹ thuật khôi phục ngược nhằm  gỡ rối cho những chỉnh sửa đó.Bạn cần phải đưa ra ghi chú rõ ràng với mỗi bản sao của sản phẩm rằng Thư viện được sử dụng trong đó và rằng Thư viện và việc sử dụng nó phải tuân thủ theo Giấy phép này. Bạn cũng phải kèm theo một bản sao của Giấy phép này. Nếu sản phẩm trong quá trình thực thi có hiển thị các ghi chú, bạn cũng phải thêm vào ghi chú bản quyền cho Thư viện cùng với các ghi chú đó cũng như tham chiếu hướng dẫn người sử dụng tới bản sao của Giấy phép này. Bạn cũng phải thực hiện một trong những điều sau:
    • a) Phân phối cùng với sản phẩm toàn bộ mã nguồn tương ứng có thể biên dịch được của Thư viện cùng với tất cả những chỉnh sửa được sử dụng trong sản phẩm (được phân phối theo các Mục 1 và 2 ở trên); và nếu sản phẩm là thực thi được liên kết với Thư viện, thì cũng phải phân phối toàn bộ “sản phẩm sử dụng Thư viện”, như mã đã biên dịch và/hoặc mã nguồn sao cho người sử dụng có thể chỉnh sửa Thư viện và liên kết lại để tạo ra sản phẩm mới có chứa Thư viện được chỉnh sửa. (Được hiểu là người sử dụng thay đổi nội dung các tập tin định nghĩa trong Thư viện sẽ không cần thiết để có thể dịch lại ứng dụng để sử dụng các định nghĩa được sửa đổi.)
    • b) Sử dụng một cơ chế thư viện chia sẻ phù hợp cho viện liên kết với Thư viện. Cơ chế phù hợp là cơ chế (1) sử dụng tại thời điểm thực thi bản sao của thư viện đã có ở trong hệ thống máy tính của người sử dụng mà không phải là sao chép các hàm của thư viện vào trong chương trình, và (2) hoạt động bình thường với phiên bản sửa đổi của thư viện, nếu người sử dụng cài đặt phiên bản sửa đổi có giao diện tương thích với phiên bản mà sản phẩm đã được dùng trước đó.
    • c) Kèm theo đó một đề nghị có hạn trong ít nhất 3 năm, theo đó cung cấp cho cùng một người sử dụng các nội dung được quy định trong Mục 6a ở trên, với giá chi phí không cao hơn giá chi phí vật lý của việc cung cấp đó.
    • d) Nếu phân phối sản phẩm được thực hiện thông qua việc truy cập để sao chép từ một vị trí xác định thì cũng phải cung cấp quyền truy nhập tương đương để sao các nội dung được quy định ở trên từ cùng vị trí.
    • e) Xác định rõ rằng người sử dụng đã nhận được bản sao của các nội dung trên và rằng bạn đã gửi cho người sử dụng đó một bản sao.

    Cho chương trình thực thi được, dạng yêu cầu của ”sản phẩm sử dụng thư viện”  cần phải kèm theo dữ liệu và các chương trình công cụ cần thiết cho việc tạo ra chương trình thực thi. Tuy nhiên, như một trường hợp ngoại lệ đặc biệt, khi các nội dung cần cung cấp không kèm theo bất cứ những gì được phân phối (kể cả ở dạng mã nguồn hay dạng nhị phân) với các thành phần lớn (bộ biên dịch, nhân, vân vân) của hệ điều hành mà chương trình sẽ chạy trên đó, trừ khi thành phần đó được kèm vào trong chương trình thực thi.Cũng có thể xẩy ra trường hợp các yêu cầu mâu thuẫn với các quy định trong giấy phép của các bộ thư viện độc quyền khác không kèm theo hệ điều hành. Mâu thuẫn này có nghĩa là bạn không thể sử dụng cả 2 bộ thư viện cùng nhau trong chương trình mà bạn phân phối.

    • 7. Bạn cũng có thể đặt bộ Thư viện là sản phẩm dựa trên Thư viện ngay cạnh với các bộ thư viện khác không thuộc phạm vi Giấy phép này trong cùng một thư viện và phân phối bộ thư viện kết hợp với điều kiện rằng việc phân phối tách biệt của sản phẩm dựa trên Thư viện và bộ thư viện khác cũng được cho phép bằng một cách khác, và với điều kiện bạn phải thực hiện được 2 điều sau:
      • a) Kèm theo thư viện kết hợp một bản sao của sản phẩm dựa trên Thư viện, chưa được kết hợp với bộ thư viện khác. Việc phân phối đó phải thực hiện theo các điều khoản của Mục trên.
      • b) Đưa ra một ghi chú rõ ràng với thư viện kết hợp rằng một phần của nó là sản phẩm dựa trên thư viện, và giải thích rõ có thể tìm được ở đâu dạng chưa kết hợp được kèm theo của cùng một sản phẩm.
    • 8.  Bạn không được phép sao chép, chỉnh sửa, cấp phép, liên kết hoặc cung cấp Thư viện trừ phi được nêu trong Giấy phép. Bất kỳ ý định bằng cách khác sao chép, chỉnh sửa, cấp phép hoặc liên kết, hoặc cung cấp Thư viện đều làm mất hiệu lực và tự động huỷ bỏ quyền của bạn trong khuôn khổ Giấy phép này. Tuy nhiên, các bên đã nhận được bản sao hoặc quyền từ bạn với Giấy phép này sẽ không bị huỷ bỏ giấy phép nếu các bên đó vẫn tuân thủ đầy đủ các điều khoản của giấy phép.
    • 9.  Bạn không bắt buộc phải chấp nhận Giấy phép này khi bạn chưa ký vào đó. Tuy nhiên, không có gì khác đảm bảo cho bạn được phép chỉnh sửa hoặc cung cấp Thư viện hoặc các sản phẩm bắt nguồn từ Thư viện. Những hành động này bị luật pháp nghiêm cấm nếu bạn không chấp nhận Giấy phép này. Do vậy, bằng việc chỉnh sửa hoặc cung cấp Thư viện (hoặc bất kỳ một sản phẩm nào dựa trên Thư viẹn), bạn đã thể hiện sự chấp thuận đối với Giấy phép này, cùng với tất cả các điều khoản và điều kiện đối với việc sao chép, cung cấp hoặc chỉnh sửa Thư viện hoặc các sản phẩm dựa trên nó.
    • 10. Mỗi khi bạn cung cấp lại Thư viện (hoặc bất kỳ một sản phẩm nào dựa trên Thư viện), người nhận sẽ tự động nhận được giấy phép từ người cấp phép đầu tiên cho phép sao chép, cung cấp, liên kết và chỉnh sửa Thư viện theo các điều khoản và điều kiện này. Bạn không thể áp đặt bất cứ hạn chế nào khác đối với việc thực hiện quyền của người nhận đã được cấp phép từ thời điểm đó. Bạn cũng không phải chịu trách nhiệm bắt buộc các bên thứ ba tuân thủ theo Giấy phép này.
    • 11. Nếu như, theo quyết định của toà án hoặc với những dẫn chứng về việc vi phạm bản quyền hoặc vì bất kỳ lý do nào khác (không giới hạn trong các vấn đề về bản quyền), mà bạn phải tuân theo các điều kiện (nêu ra trong lệnh của toà án, biên bản thoả thuận hoặc ở nơi khác) trái với các điều kiện của Giấy phép này, thì chúng cũng không thể miễn cho bạn khỏi những điều kiện của Giấy phép này. Nếu bạn không thể đồng thời thực hiện các nghĩa vụ của mình trong khuôn khổ Giấy phép này và các nghĩa vụ thích đáng khác, thì hậu quả là bạn hoàn toàn không được cung cấp Thư viện. Ví dụ, nếu trong giấy phép bản quyền không cho phép những người nhận được bản sao trực tiếp hoặc gián tiếp qua bạn có thể cung cấp lại Thư viện thì trong trường hợp này cách duy nhất bạn có thể thoả mãn cả hai điều kiện là hoàn toàn không cung cấp Thư viện.
      Nếu bất kỳ một phần nào trong điều khoản này không có hiệu lực hoặc không thể thi hành trong một hoàn cảnh cụ thể, thì sẽ cân đối các điều khoản để áp dụng, và toàn bộ điều khoản sẽ được áp dụng trong những hoàn cảnh khác.
      Mục đích của điều khoản này không nhằm buộc bạn phải vi phạm bất kỳ một bản quyền nào hoặc các quyền sở hữu khác hoặc tranh luận về giá trị hiệu lực của bất kỳ quyền hạn nào như vậy; mục đích duy nhất của điều khoản này là nhằm bảo vệ sự toàn vẹn của hệ thống cung cấp phần mềm tự do đang được thực hiện với giấy phép công cộng. Nhiều người đã đóng góp rất nhiều vào sự đa dạng của các phần mềm tự do được cung cấp thông qua hệ thống này với sự tin tưởng rằng hệ thống được sử dụng một cách thống nhất; tác giả/người cung cấp có quyền quyết định rằng họ có mong muốn cung cấp phần mềm thông qua hệ thống nào khác hay không, và người được cấp phép không thể có ảnh hưởng tới sự lựa chọn này. Điều khoản này nhằm làm rõ hậu quả của Giấy phép này.
    • 12. Nếu việc cung cấp và/hoặc sử dụng Thư viện bị cấm ở một số nước nhất định bởi các quy  định về bản quyền, thì người giữ bản quyền gốc đã đưa Thư viện vào phạm vi áp dụng của Giấy phép này có thể bổ sung một điều khoản hạn chế việc cung cấp ở những nước đó, nghĩa là việc cung cấp chỉ được phép ở các nước không bị liệt kê trong danh sách hạn chế. Trong trường hợp này, Giấy phép đưa vào những hạn chế được ghi trong nội dung của nó.
    • 13. Tổ chức Phần mềm Tự do có thể theo thời gian công bố những phiên bản chỉnh sửa và/hoặc phiên bản mới của Giấy phép Công cộng Hạn chế. Những phiên bản đó sẽ đồng nhất với tinh thần của phiên bản hiện này, nhưng có thể khác ở một số chi tiết nhằm giải quyết những vấn đề hay lo ngại mới. Mỗi phiên bản sẽ có một mã số phiên bản riêng. Nếu Thư viện áp dụng một phiên bản Giấy phép cụ thể, bạn có quyền lựa chọn tuân theo những điều khoản và điều kiện của phiên bản giấy phép đó hoặc của bất kỳ một phiên bản nào sau đó do Tổ chức Phần mềm Tự do công bố. Nếu Chương trình không nêu cụ thể mã số phiên bản giấy phép, bạn có thể lựa chọn bất kỳ một phiên bản nào đã từng được công bố bởi Tổ chức Phần mềm Tự do.
    • 14. Nếu bạn muốn kết hợp các phần của Thư viện vào các chương trình tự do khác mà có các điều kiện cung cấp khác, hãy viết cho tác giả để xin phép. Đối với các phần mềm được cấp bản quyền bởi Tổ chức Phầm mềm Tự do, hãy đề xuất với tổ chức này; đôi khi chúng tôi cũng có những ngoại lệ. Quyết định của chúng tôi sẽ dựa trên hai mục tiêu là bảo hộ tình trạng tự do của tất cả các sản phẩm bắt nguồn từ phần mềm tự do của chúng tôi, và thúc đẩy việc chia sẻ và tái sử dụng phần mềm nói chung.

    KHÔNG BẢO HÀNH

    • 15. DO THƯ VIỆN ĐƯỢC CẤP PHÉP MIỄN PHÍ NÊN KHÔNG CÓ MỘT CHẾ ĐỘ BẢO HÀNH NÀO TRONG MỨC ĐỘ CHO PHÉP CỦA LUẬT PHÁP. TRỪ KHI ĐƯỢC CÔNG BỐ KHÁC ĐI BẰNG VĂN BẢN, NHỮNG NGƯỜI GIỮ BẢN QUYỀN VÀ/HOẶC CÁC BÊN CUNG CẤP THƯ VIỆN NGUYÊN BẢN SẼ KHÔNG BẢO HÀNH DƯỚI BẤT KỲ HÌNH THỨC NÀO, BAO GỒM NHƯNG KHÔNG GIỚI HẠN TRONG CÁC HÌNH THỨC BẢO HÀNH ĐỐI VỚI TÍNH THƯƠNG MẠI CŨNG NHƯ TÍNH THÍCH HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ. BẠN LÀ NGƯỜI CHỊU TOÀN BỘ RỦI RO VỀ CHẤT LƯỢNG CŨNG NHƯ VIỆC VẬN HÀNH THƯ VIỆN. TRONG TRƯỜNG HỢP THƯ VIỆN CHO THẤY CÓ KHIẾM KHUYẾT, BẠN PHẢI CHỊU TOÀN BỘ CHI PHÍ CHO NHỮNG DỊCH VỤ SỬA CHỮA CẦN THIẾT.
    • 16. TRONG TẤT CẢ CÁC TRƯỜNG HỢP TRỪ KHI CÓ YÊU CẦU CỦA LUẬT PHÁP HOẶC CÓ THOẢ THUẬN BẰNG VĂN BẢN, NHỮNG NGƯỜI CÓ BẢN QUYỀN HOẶC BẤT KỲ MỘT BÊN NÀO CHỈNH SỬA VÀ/HOẶC CUNG CẤP LẠI CHƯƠNG TRÌNH TRONG CÁC ĐIỀU KIỆN NHƯ ĐÃ NÊU TRÊN KHÔNG CÓ TRÁCH NHIỆM VỚI BẠN VỀ CÁC LỖI HỎNG HÓC, BAO GỒM CÁC LỖI CHUNG HAY ĐẶC BIỆT, NGẪU NHIÊN HAY TẤT YẾU NẢY SINH DO VIỆC SỬ DỤNG HOẶC KHÔNG SỬ DỤNG ĐƯỢC THƯ VIỆN (BAO GỒM NHƯNG KHÔNG GIỚI HẠN TRONG VIỆC MẤT DỮ LIỆU, DỮ LIỆU THIẾU CHÍNH XÁC HOẶC CHƯƠNG TRÌNH KHÔNG VẬN HÀNH ĐƯỢC VỚI CÁC CHƯƠNG TRÌNH KHÁC), THẬM CHÍ CẢ KHI NGƯỜI CÓ BẢN QUYỀN VÀ CÁC BÊN KHÁC ĐÃ ĐƯỢC KHUYẾN CÁO VỀ KHẢ NĂNG XẢY RA NHỮNG THIỆT HẠI ĐÓ.

    KẾT THÚC CÁC ĐIỀU KHOẢN VÀ ĐIỀU KIỆN
    Áp dụng những điều khoản trên như thế nào đối với thư viện mới của bạn

    Nếu bạn xây dựng một thư viện mới, và bạn muốn cung cấp tối đa cho công chúng sử dụng, thì biện pháp tốt nhất để đạt được điều này là biến thư viện đó thành phần mềm tự do để ai cũng có thể cung cấp lại và sửa đổi. Bạn có thể thực hiện được điều này bằng việc cho phép các hạn chế theo các điều khoản của Giấy phép này (hoặc theo các điều khoản của Giấy phép GPL).
    Để áp dụng các điều khoản này, hãy đính kèm những ghi chú như sau cùng với thư viện của mình. An toàn nhất là đính kèm chúng vào phần đầu mỗi tệp tin mã nguồn để thông báo một cách hiệu quả nhất về việc không có bảo hành; và mỗi tệp tin đều phải có ít nhất một dòng về “bản quyền” và dòng trỏ đến nới có toàn bộ ghi chú.

      Một dòng đề tên chương trình và nội dung của nó.
      Copyright (C) năm  tên tác giả
      Thư viện này là phần mềm tự do, bạn có thể cung cấp lại và/hoặc chỉnh sửa nó theo những điều khoản của Giấy phép Công cộng Hạn chế của GNU do Tổ chức Phần mềm Tự do công bố; phiên bản 2.1 của Giấy phép, hoặc bất kỳ một phiên bản sau đó (tuỳ sự lựa chọn của bạn).
      Thư viện này được cung cấp với hy vọng nó sẽ hữu ích, tuy nhiên KHÔNG CÓ BẤT KỲ MỘT BẢO HÀNH NÀO; thậm chí kể cả bảo hành về KHẢ NĂNG THƯƠNG MẠI hoặc TÍNH THÍCH HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ. Xin xem Giấy phép Công cộng Hạn chế của GNU để biết thêm chi tiết.
      Bạn phải nhận được một bản sao của Giấy phép Công cộng Hạn chế của GNU kèm theo chương trình này; nếu bạn chưa nhận được, xin gửi thư về’
                Tổ chức Phần mềm Tự do
                59 Temple Place – Suite 330, Boston, MA  02111-1307, USA.

    Xin hãy bổ sung thông tin về địa chỉ liên lạc của bạn (thư điện tử và bưu điện).
    Bạn cũng cần phải lấy chữ ký của người phụ trách (nếu bạn là người lập trình) hoặc của trường học (nếu có) xác nhận từ chối bản quyền đối với thư viện. Sau đây là ví dụ:

      Yoyodyne, Inc., tại đây từ chối tất cả các quyền lợi bản quyền đối với thư viện ‘Frob’
      Viết bởi James Random Hacker.
      chữ ký của Ty Coon, 1 April 1990
      Ty Coon, Phó Tổng Giám đốc

Ext JS và Bài Học Về Mã Nguồn Mở

Tháng Chín 22, 2008

<nguồn: http://www.web2vietnam.com/2008/04/29/ext-js-and-lession-of-os-license/>

Cách đây ít ngày một thư viện JavaScript/Ajax mà tôi rất thích dùng, Ext JS, đột ngột chuyển giấy phép sử dụng từ LGPL (một phiên bản của GPL cho phép sử dụng phần mềm mã mở trong các dự án thương mại) sang GPL v3 (một giấy phép mã mở chặt chẽ bắt buộc các dự án muốn dùng phần mềm mã mở cũng phải là mã mở) sau khi công bố một bản nâng cấp nhỏ. Điều này đã làm dấy lên một làn sóng phản đối, công kích trong khắp cộng đồng người dùng và phát triển.

extjs-gpl.gif

Tôi đã dùng Ext JS ngay từ khi nó chỉ là một thư viện mở rộng của YUI. Đây là một thư viện rất tốt, đặc biệt nó cung cấp những gói UI rất đẹp và dễ sử dụng — chỉ cần vài dòng code JavaScript bạn đã có thể tạo nên một giao diện chuyên nghiệp cho ứng dụng web của mình. Lúc này thư viện có tên là YUI-Ext và được phân phối dưới giấy phép BSD như YUI.

Sau đó Jack Slocum và nhóm phát triển đã đưa thư viện YUI-Ext vượt khỏi phạm vi của YUI trở thành một dự án độc lập. Khi version đầu tiên của Ext JS ra lò, giấy phép sử dụng được đổi thành kiểu “song hành” (dual license): người dùng có thể chọn LGPL (với một vài hạn chế nhỏ) hay mua giấy phép sử dụng thương mại. Có thể nói đây là một bước đi không có gì đáng chê trách để Jack và đồng sự có thể kiếm tiền cho việc phát triển của dự án. Cộng đồng phát triển mã mở vẫn rất vui lòng đóng góp và ủng hộ cho dự án, hơn 35.000 thành viên của diễn đàn Ext JS đã đóng góp vô số ý kiến, thông báo lỗi và tạo nên các thư viện mở rộng (extension) cho chính Ext JS.

Sự kiện Ext JS chuyển giấy phép sử dụng thành GPL (từ phiên bản 2.1 trở đi) đã gây sốc cho công đồng mã nguồn mở vì nhiều lý do. Không hẳn vì chúng ta sẽ phải trả tiền cho Ext. Với giấy phép thương mại hiện tại bạn chỉ cần mua một bản (cho 1 lập trình viên) là có thể triển khai không hạn chế trên nhiều máy chủ (chính xác hơn là trên số CPU không giới hạn). Những lý do chính khiển cộng đồng phát triển không hài lòng là:

  1. Vấn đề đạo đức: Ext JS khởi đầu là một dự án “ăn theo” YUI, họ nhận được nhiều quan tâm vì danh tiếng của YUI. Sau khi xác lập đựơc vị trí, họ bỏ giấy phép tự do và bắt đầu theo đuổi giấy phép chặt chẽ hơn. Là một dự án mã mở, họ nhận được rất nhiều đóng góp từ cộng đồng và đổi lại cộng đồng phát triển ngày lại càng bị thu hẹp phạm vi sử dụng.
  2. Vấn đề lòng tin: Bạn có thể tin được một công ty thay đổi giấy phép thường xuyên theo hướng càng kiếm được nhiều tiền càng tốt hay không? Điều gì sẽ xảy ra nếu một ngày đẹp trời nào đó, sau khi triển khai ứng dụng trên hàng chục máy chủ (tức là vài chục CPU), Ext JS đổi giấy phép thương mại từ “unlimited” sang “per-CPU”? Bạn sẽ phải chấp nhận trả một khoản phí “trên trời rơi xuống” hay bỏ mặc ứng dụng của mình không được nâng cấp hay vá lỗi?
  3. Vấn đề phạm vi giấy phép: Điểm khác biệt giữa LGPL và GPL là giờ đây dự án nào muốn dùng Ext JS miễn phí thì cũng phải là “nguồn mở” theo đúng giấy phép GPL v3. Có ba vấn đề gây tranh cãi là: (1) Vì Javascript được chuyển từ server qua browser người dùng, thì việc này có được coi là “phân phối” mã nguồn và do đó chịu sự rằng buộc của GPL hay không? (2) Việc nén, obfuscate các thư viện Ajax theo GPL có hợp lệ hay không khi người được phân phối (tức là người dùng ứng dụng) không xem được toàn bộ mã nguồn? (2) Theo Jack, mã server-side (Java, PHP…) của dự án cũng phải là nguồn mở mới được dùng Ext JS trong khi một số chuyên gia về giấy phép mã mở cho rằng điều đó là không đúng vì mã JavaScript không có mối liên kết tĩnh (statical link) nào với mã server (?).
  4. Vấn đề thích hợp: Vì những rắc rối nói trên mà bản thân giấy phép GPL v3 không “bao phủ” được hoàn toàn nên hầu hết các thư viện JavaScript đều chọn các giấy phép nguồn mở tự do hơn như BSD hay Apache 2. Việc Ext JS chọn GPL sẽ để lại các “lỗ hổng” có thể dẫn tới việc tranh tụng trong nhiều trường hợp hay nói cách khác chúng giống như những cái bẫy tiềm năng khiến cho việc sử dụng thư viện này theo hướng mã mở hoặc không thể thực hiện được hoặc không hiệu quả.

Nhiều người nói rằng dùng mã nguồn mở là hướng đi rẻ tiền, dễ dàng cho các công ty Việt Nam nhưng câu chuyện trên chỉ là một phần nhỏ trong rất nhiều vấn đề mà các giấy phép mã nguồn mở đặt ra. Tại Mỹ, muốn có lời khuyên đúng đắn bạn sẽ phải nhờ tới các luật sư có kinh nghiệm trong lĩnh vực này và không thực sự có nhiều luật sư như vậy (chắc chắn Jack đã không có được một luật sư tốt).

Qua vụ việc này tôi đã có được nhiều bài học (rất hữu ích cho các CIO), xin tổng kết lại dưới đây:

  1. Giấy phép sử dụng (mã mở hay thương mại) có thể bị thay đổi bất kỳ lúc nào. Mặc dù việc thay đổi giấy phép không áp dụng ngược với các phiên bản trước nhưng bạn sẽ phải đối mặt với vấn đề “trả tiền để được nâng cấp, hỗ trợ hay bỏ mặc phần mềm đó“. Vì thế nên dùng phần mềm mở do các công ty có uy tín bảo trợ vì thường họ rất ít khi thay đổi giấy phép nếu không có lý do chính đáng.
  2. Khi dùng mã nguốn mở, bạn phải đánh giá được mức độ rủi ro có thể gây ra do việc đổi giấy phép và chấp nhận mức độ rủi ro này.
  3. Không phải tất cả các giấy phép mã mở đều giống nhau. Hiểu hết các “ngõ ngách” trong đống ngôn từ của các giấy phép này là việc của các chuyên gia và dù vậy bạn vẫn có thể dính vào kiện tụng do sự diễn dịch khác nhau giữa các bên và khi ấy quyền phán quyết nằm ở tòa án.
  4. Nếu bạn định phân phối phần mềm của mình dưới giấy phép mã nguồn mở thì hãy suy nghĩ và tìm hiểu thật kỹ về phạm vi của các giấy phép này. Tất nhiên, vì là phần mềm của bạn nên bạn có quyền thay đổi giấy phép bất kỳ lúc nào cho các phiên bản mới, nhưng nếu không có lý do chính đáng cộng đồng mã mở sẽ cho rằng bạn đang lợi dụng mã mở để chuộc lợi và bạn sẽ nhanh chóng bị tẩy chay. Trong thế giới đầy cạnh tranh, bạn sẽ biến mất nhanh hơn bạn tưởng.

Ext JS và cá nhân Jack đang chịu nhiều sức ép từ phía cộng đồng. Có thể việc thay đổi giấy phép là bắt buộc nhằm kiếm tiền từ dự án để trả lương cho các lập trình viên nhưng người dùng không khỏi có cảm giác bất mãn khi đã bỏ công sức xây dựng các ứng dụng dựa vào thư viện này rồi đột nhiên nhận thấy nó sẽ không thích hợp nếu sử dụng vào các dự án thương mại hay mã đóng như dự kiến. Quan trọng hơn, việc đổ vỗ lòng tin khiến cho những người dùng nghiêm túc phải suy nghĩ lại về quyết định của mình khi đặt niềm tin lâu dài vào Ext JS.

Các bạn có thể tham khảo thêm về “vụ” Ext JS ở các bài viết dưới đây:

 

Comments:

Thai | April 30th, 2008 at 1:14 am

Bài viết được. Chỉ có một lỗi nhỏ (hay gặp) là bồ đã đánh đồng “phần mềm thương mại” (commercial software) với “phần mềm nguồn đóng” (closed source or proprietary software). Hai khái niệm đó không tương đồng với nhau. Phần mềm thương mại vẫn có thể là phần mềm nguồn mở hay tự do. Phần mềm thương mại vẫn có thể sử dụng các thành phần nguồn mở hay tự do trong mã nguồn của chúng. Phần mềm nguồn đóng thì không thể làm được chuyện đó.

Bản thân tôi cho rằng, không thể trách nhóm Ext JS. Ext JS là của họ, họ có toàn quyền quyết định sẽ sử dụng giấy phép nào.

Nếu cộng đồng không thích và nếu cộng đồng đủ mạnh, họ hoàn toàn có thể lấy phiên bản cuối cùng của Ext JS phát hành với license LGPL mà phát triển lên tiếp.

Còn nếu cộng đồng không thể làm chuyện đó, chứng tỏ rằng, phần lớn công sức phát triển Ext JS là của nhóm của Jack, nên họ xứng đáng kiếm được nhiều tiền hơn từ công sức mà họ bỏ ra.

Vả lại, chọn giấy phép GPLv3 cũng không phải là một quyết định tồi, nếu đứng trên góc nhìn của người ủng hộ phần mềm tự do, nguồn mở.

Nếu có ai đó phải trách, tôi nghĩ chính là những người sử dụng Ext JS mà không có những nghiên cứu cần thiết về rủi ro hoặc chỉ chăm chăm muốn *bốc lột* công sức của người khác mà không muốn trả tiền.

———————————————————————–

TanNg | April 30th, 2008 at 1:51 pm

@Tác giả. Bài viết hay. Open Source, Open content còn cần một chặng đường dài để điều chỉnh và phát triển. Tuy vậy, một khi triết lý đã đúng, thì dù gặp vài trục trặc, cuối cùng phong trào mở vẫn sẽ chiến thắng.

@Thái. Đồng ý với bạn về việc cộng đồng nếu không thích có thể sử dụng bản cuối cùng để phát triển lên tiếp. Tuy vây, khi nhóm Jack đã sử dụng cộng đồng để phát triển nên sản phẩm này thì họ cũng có nghĩa vụ tham khảo và tôn trọng ý kiến cộng đồng trước khi đưa ra các quyết định quan trọng ảnh hưởng tới nhiều người như thay đổi License từ GPL sang GPL3.

Bình luận ngang một chút về GPL3. Open Source thường được đánh đồng với Tự do, nhưng tự do nhất có lẽ là BSD license, GPL3 tạo ra quá nhiều ràng buộc khiến người ta phải tuân theo và tự đánh mất triết lý cốt lõi của chính mình. Tôi có cảm giác rằng, thay vì việc định vị mình là phục vụ cộng đồng, phần nào GPL3 đã tự định vị mình là anti mã đóng.

———————————————————————–

Hồng Quang | April 30th, 2008 at 11:00 pm

@Thai, @TanNg: Thanks for good comments.

@Thai: Hình như mình không đề cập gì tới những khái niệm như phần mềm thương mại (commercial software – CS), phần mềm mã đóng (closed source software – CSS). Đây là một vấn đề khá phức tạp, tuy nhiên, để chúng ta không nhầm lẫn về ngữ nghĩa, mình xin làm rõ những điểm này:

+ Phần mềm thương mại: là những phần mềm được làm ra để cho mục đích thương mại (nói nôm na là để bán lấy tiền). Nghĩa là, trong phần lớn trường hợp, bạn sẽ phải phân phối nó cho khách hàng. Thường thì phần mềm thương mại là mã đóng (closed source) và thuộc sở hữu của một cá nhân hay tổ chức (proprietary software). Một số phần mềm thương mại là mã mở, trong trường hợp này nó sẽ có ít nhất hai loại giấy phép (dual license): giấy phép thương mại và giấy phép mã mở.

+ Giấy phép mã mở chủ yếu chi phối việc bạn có được phân phối lại trong các dự án thương mại hay không. Cụ thể LGPL, BSD hay Apache cho phép điều này (với các điều kiện khác nhau một chút), ngược lại GPL thì tuyệt đối không.

+ Vì thế bạn có thể dùng phần mềm mã mở (kể cả loại giấy phép GPL như MySQL) tự do, kg phải trả phí miễn là bạn không có ý định phân phối lại nó (thí dụ, dùng MySQL trong các dự án web của công ty bạn ngay cả dự án đó lớn như FaceBook). Đây là đọan trích từ Giấy Phép Mã Mở của MySQL:

“Free use for those who never copy, modify or distribute. As long as you never distribute the MySQL Software in any way, you are free to use it for powering your application, irrespective of whether your application is under GPL license or not.”
(Source: http://www.mysql.com/about/legal/licensing/opensource-license.html)

Ngược lại, bạn phải dùng giấy phép thương mại do MySQL AB cấp. Xin xem thêm các trường hợp cụ thể bạn phải mua giấy phép ở đây:
http://www.mysql.com/about/legal/licensing/commercial-license.html

+ Khi phân phối lại các phần mềm mã mở (nếu được phép) bạn phải kèm theo giấy phép và giữ nguyên tham chiếu xuất xứ để người dùng biết được bạn đang dùng các phần mềm mã mở nào, có thể tham khảo mã ở đâu…

+ Nếu bạn mua giấy phép thương mại của một phần mềm mã mở (như của Ext JS hay của MySQL) thì nó sẽ cho phép bạn triển khai trên một số CPU nhất định và/hoặc sử dụng cho số lập trình viên nhất định. Nếu bạn phân phối lại một phần mềm có giấy phép thương mại (thường là dạng thư viện – library) thì tùy trường hợp giấy phép sẽ đòi bạn trả phí thêm cho mỗi bản phân phối (royalty fee) hay kg có rằng buộc này (royalty free). Đương nhiên bạn không cần kèm giấy phép sử dụng và tham chiếu tới các phần mềm bạn mua trong bản phân phối của mình dù nó là mã mở.

Trường hợp các thư viện JavaScript/Ajax như Ext JS khá đặc biệt. Các thư viện này được “phân phối” từ máy chủ tới browser của người dùng (ít nhất theo lập luận của Jack) nên khi nó chuyển qua giấy phép GPL thì đòi hỏi cả dự án web dùng nó phải là nguồn mở. Đây là điểm gây nhiều tranh cãi:

1. Liệu việc sử dụng một ứng dụng web có bị coi là phân phối lại phần mềm hay không?

2. Việc sử dụng một thư viện JavaScript dưới giấy phép GPL có buộc cả dự án phải là mã mở hay không (vì mối liên kết giữa JavaScript và mã server-side có thể chưa đủ mạnh để bị coi là có “liên kết tĩnh” theo định nghĩa của GPL)?

3. Có được phép nén, obfuscate một thư viện JavaScript dùng giấy phép GPL hay không?

Nếu xảy ra tranh chấp và tòa án phán quyết rằng việc sử dụng ứng dụng web không bị coi là phân phối lại phần mềm (nhất là việc phân phối lại các mã JavaScript) thì có nghĩa là chúng ta sẽ có thể dùng Ext JS trong các dự án tương tự như dùng MySQL.

Còn nhiều vấn đề xung quanh câu chuyện này, nhưng hy vọng các bạn sẽ hiểu hơn về các giấy phép mã mở và phạm vi chi phối của chúng.

Nắm bắt con tim nàng

Tháng Chín 21, 2008

Bạn có muốn biết những suy nghĩ, những tâm tư mà con gái chẳng bao giờ tiết lộ? Hãy tìm hiểu dưới đây nhé, để biết cách chinh phục nàng.

Nên

Lãng mạn

Cô gái nào cũng mong muốn nhận được một đóa hồng và có một khung cảnh “kiss” lãng mạn như phim Hollywood. Cô ấy sẽ không bao giờ quên khoảng khắc ấy và sẽ yêu bạn hơn. Vì thế, hãy lập kế hoạch làm một điều gì đó đặc biệt tại một không gian thật ý nghĩa bạn nhé.

Bảo vệ, che chở

Hãy cho cô ấy cảm thấy an toàn, yêu thương và được quan tâm khi bạn ở bên cạnh. Tuy nhiên hãy biết cách cư xử khi ghen, đừng để cô ấy ái ngại với bạn bè xung quanh. Tốt nhất là nói thẳng thắn cảm xúc của bạn cho cô ấy, nhưng nhớ rằng cô ấy cũng cần có không gian của riêng mình.

Tin tưởng

Nếu bạn yêu cô ấy và cô ấy cũng yêu bạn, thì đâu còn có lý do nào để nghi ngờ cô ấy phải không? Đôi khi cũng thật khó khi cô ấy có nhiều cậu bạn thân, thế nhưng tin tưởng nàng tuyệt đối sẽ khiến nàng tự tin và yêu bạn nhiều hơn đó.

Đọc ngôn ngữ cơ thể

Nếu cô ấy muốn cầm tay bạn, cô ấy sẽ nghịch các ngón tay, còn nếu cô ấy muốn hôn bạn, cô ấy sẽ nũng nịu đôi môi. Và nếu cô ấy không muốn bạn làm điều gì, hãy ngừng ngay mọi hành động nhé.

Hãy nói lời yêu thương

Bày tỏ cảm xúc của bạn cho cô ấy nghe. Hãy đảm bảo những lời nói ấy phải đặc biệt và bạn thực sự hiểu ý nghĩa của chúng là gì.

Chia sẻ quyền lực

Hầu hết con gái thích bạn trai mình đã lên lịch sẵn các cuộc hẹn, hoặc ít ra cũng là người chủ động. Tuy vậy, cũng rất thú vị nếu cô ấy là người lựa chọn cùng bạn. Hãy đưa ra những phương án để cô ấy lựa chọn hoặc chia sẻ ý kiến cùng nhau.

Chiều chuộng

Dù cho cô ấy bảo không cần bạn tặng quà trong dịp Giáng sinh, sinh nhật thì bạn vẫn đem cho cô ấy một thứ gì đó thật ý nghĩa và dễ thương nha. Ví dụ như một lọ nước hoa hoặc một vòng cổ hay một món đồ trang sức nào đó. Ngoài ra, những món đồ tự tay bạn làm hoặc mang dấu ấn cá nhân sẽ còn ý nghĩa hơn rất nhiều.

Không nên

Áp đặt mọi sở thích của bạn lên cô ấy

Hãy để cô ấy có quyết định tham gia hay không và đừng bắt cô ấy làm điều gì cô ấy không muốn.

Lưỡng lự gọi điện hoặc gửi email

Rất nhiều mối quan hệ phải chấm dứt vì hai bên không thường xuyên liên lạc với nhau. Thêm vào đó, việc chàng trai chủ động gọi điện và trò chuyện là điều các cô gái mong chờ.

Mang bạn bè theo mà không hỏi ý kiến

Thường thi các nàng không ngại khi đi chơi cùng nhóm bạn, nhưng nếu mang bạn bè theo mà không nói với cô ấy trước, cô ấy sẽ cảm thấy bị động và chỉ muốn có hai người bên nhau mà thôi.

E dè thể hiện cảm xúc nơi công cộng

Không phải là những cử chỉ khiêu gợi nhưng một cái nắm tay, vòng tay ôm eo cô ấy hoặc đặt một nụ hộn trên trán cũng khiến cô ấy tự hào với tình yêu bạn dành cho.

Ngọc Linh

Theo Datingtips

RainbowCrack: Công cụ để crack mã md5 hiệu quả

Tháng Chín 19, 2008

Cái tool này được biết đến từ rát lâu rồi nhưng bây giờ mới lục lại. Version hiện tại là 1.2. Phần mềm này giải mã chuỗi mã md5 ra chuỗi nguyên thuỷ của nó.

RainbowCrack sử dụng giải thuật LanManager và vì vậy phải tạo ra các Rainbow Table.

Trang chủ : http://www.antsight.com/zsl/rainbowcrack/

Nếu bạn sử dụng Windows thì bạn có thể download ở địa chỉ sau:http://www.antsight.com/zsl/rainbowcrack/rainbowcrack-1.2-win.zip

Sau khi download về, bạn giải nén ra và trước tiên bạn nên đọc file readme.txt ở ngay trong thư mục của phần mềm.

Trong thư mục bạn vừa giải nén ra có một thư mục là doc, có chứa các file hướng dẫn bạn sử dụng phần mềm này.

Đầu tiên bạn phải tạo ra các rainbow table. Việc này mất rất nhiều time. Tốt nhất là bạn lên google và search các table này. Tất nhiên là với điều kiện mạng của bạn phải tốt vì  tập các file này nếu nén lại nhỏ thì cũng phải 1.5GB.

Từ khoá chính xác là : “index of /” lm_alpha.rt

(đuôi rt có nghĩa là Rainbow Table)

Và bây giờ, bạn thử lệnh này xem:

E:\rainbowcrack>rcrack f:\table2\*.rt -h e80b5017098950fc58aad83c8c14978e

nó sẽ tìm ra là 123456😀

Have a good time! (author:cthai83@yahoo.com)

“Lệnh help” cho một tình yêu… “sắp mất” ….. !

Tháng Chín 17, 2008

Làm thế nào để “undo” lại tình yêu của hai người sau khi “phe kia” trót “khai tử” nó trong một phút “bốc khói”? Nếu thật lòng muốn cứu chữa, không còn giải pháp nào khác ngoài việc cả hai đều phải “xắn tay áo” lên thôi!

Nếu cô ấy nói: “Anh không hiểu em, chúng ta nên dừng lại ở đây”

Thì tức là cô ấy không muốn bất – cứ – một – cuộc – tranh – luận nào nữa vào lúc này. Bởi vậy nếu bạn chọn phương án “phục kích” nàng để tiếp tục “làm rõ trắng đen” là “hạ sách” lắm đấy!

Lệnh “help” cho tình yêu của bạn lúc này là tìm một cách thật lãng mạn gửi lời xin lỗi tới cô ấy. Chẳng hạn như ôm lỳ một bó hoa hồng vàng (xin lỗi mà) và “đứng trơ” trước cổng nhà cô ấy xem nào. Chắc chắn là nàng nói chia tay phần lớn bởi vì… ”dỗi” mà thôi. Cứ tạm thời “lờ lớ lơ” lý do củ chuối khiến hai người “chiến tranh” một thời gian cái đã, thiệt đi đâu mà lo, nhỉ?

Nếu anh ấy chốt hạ: “Em chẳng còn thời gian dành cho anh nữa, có lẽ anh nên để em được tự do”

Thì tức là anh ấy đã quá “tủi thân” vì thái độ thờ ơ mà bạn đang “lạm dụng” với tình yêu của hai người. Thậm chí, khi anh ấy đề xuất chuyện chia tay thì bạn mới chột dạ, vì lâu nay “vẫn ngỡ như là…” cơ mà, hic?

“Lệnh help” khẩn cấp cho tình yêu lúc này là ngay lập tức “sửa sai” bằng hành động mang đúng “thiên chức” của – một – người – bạn – gái. Trở lại thói quen nhắn những sms tình cảm mà gần đây bạn quy kết nó là “xa xỉ”, rủ anh ấy cùng đi shopping và nhẹ nhàng ướm thử cho chàng một chiếc áo sơ mi, hoặc đơn giản là hẹn chàng đến quán café kỉ niệm và chân – thành – nhận – khiếm – khuyết với anh ấy. Nếu chuyện chia tay chỉ là “một phút tức giận” của chàng thì như thế là ok rùi đấy !

Nếu cô ấy tuyên bố: “Chúng ta chia tay nhé, em đã có người khác rồi”

Trong khi sự thật là cô nàng “ở nhà một mình” tất tần tật các tối cuối tuần, thì có nghĩa là số bạn vẫn còn… may chán. Lí do về một kẻ thứ ba chỉ là cái cớ để cô ấy “trừng phạt” bệnh ghen bóng gió của bạn. Đôi khi cách thể hiện tình yêu thái quá lại khiến cô ấy (cũng như bạn bè cô ấy) dị ứng vô cùng. Và bởi… ghét, nên cô ấy mới nóng giận mà buông ngay lời chia tay thế đấy!

“Lệnh help” duy nhất cứu nguy cho bạn lúc này là phải làm một bản “tường trình” với cô ấy về những lý do ghen tuông rất chi là “củ chuối” của bạn. Tất nhiên, vòng vo thế nào thì sau cùng vẫn phải chốt lại lý do vĩ đại nhất: do bạn quá yêu và lúc nào cũng sợ mất cô ấy mà thôi. Nhớ là sau khi cô ấy “mủi lòng” rồi thì nhất định “cam kết và giữ đúng cam kết” không ghen “vô tội vạ” nữa nhé!

 

Chăm chút cho tình yêu nhiều hơn nữa nhé!

Nếu hai người bỗng dưng “ngán nhau”

Nghe thì có vẻ “vô thưởng vô phạt” nhưng đây lại là lí do “hơi bị lớn” để dẫn đến chuyện “chia tay chia chân”. Khi một trong hai, hoặc là cả hai người không còn cảm thấy hứng thú với tình yêu của mình nữa, thì xu hướng “ngãng ra” là tất yếu. Tuy nhiên sau khi “trót” chia tay rồi, nhiều cặp mới hoảng hốt nhận ra sự thiếu vắng trong cuộc sống của mình. Không sao đâu, chỉ cần tình yêu của hai bạn vẫn còn tồn tại thì dù có “del nhầm” vẫn có thể cứu chữa được.

“Lệnh help” lần này yêu cầu cả hai phe đều phải “chấp hành tuyệt đối” để “gương vỡ lại lành”: Nhanh chóng bắn tín hiệu cho anh/cô ấy rằng bạn đang nhớ người ta không chịu được. Thêm vào đó là những thông điệp thật dí dỏm để “chữa ngượng” cho người ta, chẳng hạn như: “Anh nói chia tay là bởi đang muốn… cưa cẩm em lại từ đầu”, hoặc “Em muốn chia tay, là để “dắt mối” cho anh một cô gái đã được làm mới” đấy!

Nhớ là khi mọi chuyện đã ổn thì hai người phải nghiêm chỉnh chăm sóc cho một tình yêu đã được F5 nhé!

Một tình yêu đẹp trước hết được đo bằng độ bền của nó, đừng vì một phút nỏng nảy nhất thời mà vội vã tuyên bố “giã từ dĩ vãng” nhé! Sẽ là đáng tiếc lắm đấy, nếu như bạn không cố gắng đến cùng cho tình yêu của mình!
Theo DT

Bảng đánh giá kỹ năng

Tháng Chín 16, 2008

Đây là bản survey của forum cho các member nhằm mục đích tham khảo và kế hoạch phát triển đội ngũ HR cho forum. Các bạn tham khảo vào quote lại để trả lời nhé.

Kỹ năng
12345
Giải thích

Ngôn ngữ PHP
—–Từ mới học cho tới thuần thạo các php function string, date/time, array, I/O + upload, các php extension như mb_string

Lập trình OOP
—–Từ hiểu OOP tới viết thư viện dùng chung, n-tier coding, O/R mapping

Sử dụng PHP/MySQL
—–Mức kỹ năng có thể viết PHP và MySQL để lấy data, xử lý form/validation, SQL inject cho tới PDO, Doctrine, O/R mapping

JavaScript
—–Từ JS cơ bản, event hooker tới OOP với JS, sử dụng JS framework (prototype, jQuery, extJs, mootool,…)

Ajax
—–Kinh nghiệm AJAX từ sử dụng dựa vào Ajax framework tới Ajax pattern

Sử dụng framework
—–Từ biết sử dụng framework (cakePHP, code igniter,…) tới đánh giá được framework, tự phát triển framework

Open source/reverse engineering
—–Đánh giá kỹ năng sử dụng các opensource, viết module, plug-ins, core hack/override,… từ biết dùng tới customize template – function,…

Làm việc nhóm
—–Kỹ năng làm việc nhóm từ coding tới lead, planning, share code, review/optimize, bug tracking

Hướng dẫn: Thang điểm từ 1-5 cao dần.
1: đã có khái niệm/từng nghe tới nhưng chưa tìm hiểu sâu
2: đã tìm hiểu, thực hành nhưng chưa áp dụng thực tế
3: áp dụng thực tế, tham khảo code
4: áp dụng thuần thạo, nhiều kinh nghiệm debug, xử lý tình huống
5: có thể mở rộng, thay đổi hoặc phát triển mới
Ở mức điểm nào, bạn thay dấu – bằng số điểm tương ứng.

Kỹ năng viết mã PHP

Tháng Chín 16, 2008
Tủ sách mở Wikibooks

Bước tới: chuyển hướng, tìm kiếm

Tổng hợp về các phong cách viết mã PHP (tiếng Anh A brief on PHP Coding Styles) là một tập hợp các quy tắc mà người lập trình PHP, một khi đã lựa chọn nó, nên tuân thủ trong quá trình tạo ra chương trình nhằm mục đích tạo sự thống nhất chung giữa các đoạn mã dễ theo dõi, sử dụng lại, phát hiện lỗi, bảo trì và kế thừa chương trình. Việc tuân thủ quy ước này sẽ giúp duy trì được khả năng làm việc nhóm và khả năng kế thừa lại của người đi sau.

Tài liệu này nên được đọc và hiểu như là một tham khảo về các phong cách viết mã PHP đương đại để có thể tùy nghi lựa chọn, nghiên cứu thêm. Nó không phải là một hướng dẫn kĩ thuật để lập trình được với PHP.

Cách viết mã PHP này dùng các nguồn tham khảo chủ yếu đến từ PEAR, Chuẩn viết mã Java theo Sun và một số trang khác. Kỹ thuật này hướng dẫn phong cách lập trình PHP có thể được dùng để tham khảo trong quá trình viết mã PHP.

Mục lục

[ẩn]

[sửa] Giới thiệu

Trang này cần được wiki hóa. Xin hãy trình bày trang theo các hướng dẫn đề cập trong phần Cẩm nang về văn phong, rồi bỏ chú thích này đi.

[sửa] Tại sao cần có quy ước viết mã

Các quy ước viết mã có ý nghĩa quan trọng đối với các lập trình viên vì một số lý do:

  • 80% trong tổng số chi phí duy trì một gói phần mềm phát sinh trong giai đoạn bảo trì.
  • Hầu như không có bất cứ một phần mềm nào được bảo trì trong suốt cả thời gian tồn tại của nó bằng chính tác giả đầu tiên của nó.
  • Các quy ước viết mã nâng cao tính dễ theo dõi của phần mềm, cho phép các kĩ sư hiểu được các dòng mã mới nhanh hơn và sâu sắc hơn.
  • Một mã nguồn được đưa ra thị trường như là một sản phẩm cần phải được đảm bảo là nó được đóng góp chuẩn và gọn ghẽ như bất cứ sản phẩm nào khác.

Để các quy ước này có hiệu lực, tất cả những ai tham gia viết phần mềm đều phải tuân thủ theo các quy ước viết mã. Không trừ một ai.

[sửa] Kế thừa và đóng góp

Tài liệu này phản ánh các tiêu chuẩn viết mã trong ngôn ngữ lập trình PHP được tổng hợp từ các tài liệu về Quy ước viết mã trong PEAR, Java do Sun Microsystems và đội ngũ PHP cung cấp.

[sửa] Tên file

[sửa] Phần mở rộng của tập tin

Luôn đặt phần mở rộng của tập tin là .php. Việc đặt đuôi khác như .inc hay .class đôi khi sẽ gặp rắc rối và tập tin PHP sẽ không được thực thi.

[sửa] Cách đặt tên file

[sửa] Các tên file thường gặp trong các ứng dụng PHP

Phần này nói về các tên tập tin thường gặp và tại sao nên dùng cái nào và không nên dùng cái nào. Ví dụ: để cấu hình trong tập tin dạng .ini là không nên nếu chưa có kinh nghiệm về .htaccess. Ngoài ra còn .lng, .xsl, .xml, .tpl. Các tập tin khác như gpl.txt, README.txt

[sửa] Cách đặt tên file chứa lớp

Theo quy ước đặt tên của Mojavi framework, tất cả các tập tin chứa các lớp (bao gồm cả các thư viện của framework) đều có hậu tố là .class.php

Ví dụ: Action.class.php

[sửa] Cách tổ chức file

[sửa] Bố cục nội dung trong file

[sửa] Dữ liệu miêu tả đầu file và lớp

Tất cả các file mã nguồn nên có một khối dữ liệu miêu tả ở cấp trang ở ngày đầu file và một khối dữ liệu miêu tả ở cấp lớp nằm ngày trên phần mã cho mỗi lớp. Phần này nên viết bằng tiếng Anh. Ví dụ:

 <?php
 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 /**
  * Short description for file
  *
  * Long description for file (if any)...
  *
  * PHP versions 4 and 5
  *
  * LICENSE: This source file is subject to version 3.0 of the PHP license
  * that is available through the world-wide-web at the following URI:
  * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
  * the PHP License and are unable to obtain it through the web, please
  * send a note to license@php.net so we can mail you a copy immediately.
  *
  * @category   CategoryName
  * @package    PackageName
  * @author     Original Author <author@example.com>
  * @author     Another Author <another@example.com>
  * @copyright  1997-2004 The PHP Group
  * @license    http://www.php.net/license/3_0.txt  PHP License
  * @version    CVS: $Id:$
  * @link       http://pear.php.net/package/PackageName
  * @see        NetOther, Net_Sample::Net_Sample()
  * @since      File available since Release 1.2.0
  * @deprecated File deprecated in Release 2.0.0
  */
  // Place includes, constant defines and $_GLOBAL settings here.
/** * Short description for class * * Long description for class (if any)... * * @author Original Author <author@example.com> * @author Another Author <another@example.com> * @copyright 1997-2004 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License * @version Release: @package_version@ * @link http://pear.php.net/package/PackageName * @see NetOther, Net_Sample::Net_Sample() * @since Class available since Release 1.2.0 * @deprecated Class deprecated in Release 2.0.0 */ class foo { } ?>

Tham khảo PEAR: http://pear.php.net/pepr/pepr-proposal-show.php?id=128 (Còn tiếp)

[sửa] Thẻ đánh dấu mã PHP

Phần này nói rõ là nên dùng <?php?> chứ không dùng cái khác. Với cách dùng này, tập tin PHP sẽ luôn được hiểu một cách chính xác.

[sửa] Cách thụt lùi dòng và chiều dài của dòng

Phần này nói về số white space áp dụng cho các hàng thụt lùi: ví dụ cho hàm con thuộc lớp, lệnh if trong một hàm thì lùi vào so với số cột bắt đầu tên hàm là bao nhiêu….

[sửa] Chú thích mã

Nên chú thích mã như thế nào. Áp dụng các thẻ meta (param) như thế nào. Áp dụng /**/ cùng với // như thế nào.

[sửa] Định dạng file

Phần này tuân thủ nguyên tắc của PEAR (có sửa đổi) theo đó:

  • Định dạng file là dạng văn bản ASCII (nên xem lại điểm này vì tiếng Việt có thẻ chứa Unicode mà)
  • Sử dụng mã hóa kí tự UTF-8
  • Được định dạng cho Unix
    • "Định dạng theo Unix" nghĩa là:
      1. Các dòng phải được kết thúc chỉ với một kí hiệu line feed (LF). Các kí hiệu bắt đầu hàng mới như vậy được được biểu diễn như là các kí hiệu hệ thập phân (10), hệ bát phân (012) và hệ thập lục phân (0A) thông thường. Không dùng các kí hiệu về đầu hàng carriage returns (CR) như các máy Macintosh hay kết hợp carriage return/line feed (CR/LF) như các máy Windows.
      2. Nên có một line feed sau thẻ PHP đóng (?>). Điều đó có nghĩa là khi con trỏ ở tận cùng của file, thì nó nên có một hàng bên dưới thẻ PHP đóng.

[sửa] Quy ước đặt tên biến, hằng, hàm, phương thức, lớp

[sửa] Khai báo

[sửa] Khai báo và khởi tạo biến

[sửa] Biến toàn cục

Nếu một gói cần định nghĩa các biến toàn cục (global) thì tên của chúng nên bắt đầu bằng một gạch đơn dưới, sau đó là tên gói và một gạch dưới khác. Ví dụ, gói PEAR dùng một biến toàn cục là $_PEAR_destructor_object_list.

[sửa] Biến thông thường

Tên biến nên là danh từ có ý nghĩa miêu tả nó chứa cái gì hay nó làm nhiệm vụ gì. Tên biến nên bắt đầu bằng chữ viết thường. Nếu biến gồm có nhiều từ thì ghép các từ đó lại: từ đầu tiên viết thường, từ thứ hai và thứ ba viết hoa chữ cái đầu tiên. Ví dụ:

  • somePrivateProperty
  • counter

Các cái tên như "foo" và "tmp" nên tránh dùng vì nó không miêu tả cái gì cả. Tên biến không nên chứa các con số. Các con số nên được miêu tả bằng các chữ cái trừ khi có lý do thiết thực để không làm như vậy. (Theo Chuẩn của ezPublish).

Ví dụ:

  • $valueOne

[sửa] Tên lớp, khai báo lớp và giao diện

Tên lớp nên là một danh từ miêu tả, xác định rõ lớp đó nó là cái gì. Tránh dùng từ viết tắt. Tên lớp nên bắt đầu bằng từ viết hoa. Khi áp dụng kĩ thuật hướng đối tượng để viết mã thì cần chú ý tên lớp cũng nên phản ảnh cây phân cấp lớp, mỗi bậc của cây phân cấp được cách nhau thông qua một dấu gạch dưới. Ví dụ:

  • Log
  • Net_Finger
  • HTML_Upload_Error

[sửa] Định nghĩa hàm và gọi hàm

[sửa] Tên gọi của hàm

Trong PHP, khái niệm hàm và phương thức thay thế được cho nhau. Chúng ta gọi khái niệm hàm cho lập trình thủ tục và dùng khái niệm phương thức khi lập trình hướng đối tượng.

Hàm và phương thức đều chỉ mặt hoạt động, thao tác, vì vậy tên chúng nên gọi tả hành động tương ứng.

Hàm và phương thức nên được đặt tên theo quy tắc "studly caps" (còn được gọi là "bumpy case" hay "camel caps"). Hàm nên lấy tên gói làm tiền tố, để tránh xung độ giữa các gói. Phần tiền tố cách phần tên hàm thực thụ qua một dấu gạch dưới. Chữ cái đầu tiên của tên (sau tiền tố) nên viết thường, và mỗi một chữ bắt đầu một từ mới sẽ viết hoa. Ví dụ:

Các thành viên lớp dạng private (nghĩa là thành viên đó được tạo ra chỉ nhằm để tiếp xúc với bên trong lớp mà chúng được khai báo mà thôi) thì được bắt đầu bằng một dấu gạch dưới. Ví dụ:

  • _sort()
  • _initTree()
  • $this->_status

Cách khai báo này được dùng trong PHP 4.x khi các từ khóa sửa đổi phạm vi truy cập chưa được định nghĩa. Nhưng ở PHP5, PEAR không còn khuyến cáo cách làm này nữa do PHP 5 đã định nghĩa 3 phạm vi truy cập là private, public, protected.

[sửa] Định nghĩa hàm

Phần định nghĩa hàm nên tuân thủ theo quy ước "một ngoặc đơn thực sự". Không nên dùng dấu cách giữa tên hàm là dấu ngoặc đơn mở. Dấu ngoặc nhọn xác định phạm vi của hàm được đặt trên các dòng riêng.

 <?php
 function fooFunction($arg1, $arg2 = )
 {
     if (condition) {
         statement;
     }
     return $val;
 }
 ?>

Các đối số có giá trị mặc định được đặt ở cuối danh sách đối số. Cố gắng trả lại một giá trị có nghĩa từ một hàm, nếu có giá trị thích hợp. Ví dụ:

 <?php
 function connect(&$dsn, $persistent = false)
 {
     if (is_array($dsn)) {
         $dsninfo = &$dsn;
     } else {
         $dsninfo = DB::parseDSN($dsn);
     }
if (!$dsninfo || !$dsninfo['phptype']) { return $this->raiseError(); }
return true; } ?>

[sửa] Lời gọi hàm, phương thức

Khi gọi hàm, không nên dùng dấu cách giữa tên hàm, ngoặc đơn mở, và tham số thứ nhất; nên dùng một dấu cách giữa dấu phẩy và tham số, và không dùng dấu cách giữa tham số cuối cùng, dấu ngoặc đơn đóng và dấu chấm phẩy. Ví dụ:

 <?php
 $var = getMessage($bar, $baz, $quux);
 ?>

Như thấy ở trên, nên để một dấu cách ở hai bên dấu bằng dùng đến gán giá trị trả lại của một hàm vào một biến. Trong trường hợp viết nhiều phép gán có liên quan thì có thể dùng thêm nhiều dấu cách để làm tăng thêm tính dễ đọc:

 <?php
 $short         = foo($bar);
 $longVariable  = foo($baz);
 ?>

Lời gọi phương thức tuân theo những quy tắc cũng tương tự như lời gọi hàm. Phương thức là thuật ngữ dùng để chỉ hàm khai báo bên trong các lớp. Chuẩn này khuyến cáo không dùng dấu cách để tách phần dấu ngoặc đơn với đối số đặt ở giữa cặp ngoặc đơn này. Sau đây là ví dụ để bạn phân biệt cách gọi nào là hợp chuẩn:

 // Khuyến cáo theo Chuẩn này
 $object->method($a);
 $array[10] = 'foo';

 // Không khuyến cáo
 $object->method($a);
 $array[ 10 ] = 'foo';

[sửa] Khai báo hằng

Các hằng nên luôn viết tất cả dưới dạng chữ hoa, dùng gạch dưới để tách các từ. Phần tên hằng làm tiền tố thì dùng tên chữ hoa của lớp hoặc gói mà chúng ta định dùng chúng trong đó. Ví dụ, các hằng dùng trong gói DB:: tất cả đều bắt đầu bằng DB_. Điều này cũng là để tránh xung đột thôi.

Xin chú ý: Các hằng true, false và null là những trường hợp đặc biệt không bị chi phối bởi quy ước viết hoa này cho nên luôn viết chúng ra dưới dạng chữ thường.

[sửa] Câu lệnh

[sửa] Câu lệnh đơn giản

<?php echo "Welcome to http://www. http://www.vnrockworld.net"; ?>

<?php $text= " http://www.vnrockworld.net"; echo "mytext is" .$text; ?>

<?php // http://www.vnrockworld.net $i=4; $z=5; if ($i>$z) echo "True; else cho "Flase"; ?>

[sửa] Lệnh tổ hợp

[sửa] Lênh return

[sửa] Lệnh điều kiện và cấu trúc điều khiển

Cấu trúc điều khiển trong PHP bao gồm có if, for, while, switch, foreach.

Các cấu trúc điều khiển nên dùng một khoảng trống giữa từ khóa điều khiển và ngoặc đơn mở, để phân biệt chúng với lời gọi hàm.

Nên dùng các ngoặc nhọn ngay cả trong các tình huống chúng chỉ được xem là các tùy chọn kĩ thuật. Các dấu ngoặc nhọn sẽ làm cho mã dễ đọc hơn và làm giảm khả năng xảy ra các lỗi logic khi viết thêm các dòng mã mới.

[sửa] Lệnh if/else

Dưới đây là cách dùng hàm if/else tuân thủ quy ước chung

 <?php
 if ((condition1) || (condition2)) {
     action1;
 } elseif ((condition3) && (condition4)) {
     action2;
 } else {
     defaultaction;
 }
 ?>

[sửa] Lệnh for

Cách dùng vòng lặp for rất đơn giản:

 <?php
 
for ( expression1; condition; expression2 )
  { 
    expresion3;
  }
 ?>

[sửa] Lệnh while

Lệnh while cho phép thực thi một đoạn mã nếu như một điều kiện nào đó được thoả mãn, và chỉ ngừng chạy khi điều kiện đó không còn đúng.

Cú pháp cho vòng lặp while:

while (condition) code to be executed;

Ví dụ:

 <?php
    $i=1;
    while($i<=5)
    {
       echo "The number is " . $i . "<br />";
       $i++;
    }
 ?>

Giải thích ví dụ:

Vòng lặp while trên sẽ được thực thi lặp đi lặp lại với mỗi giá trị biếng $i thoả mãn điều kiện (nằm trong khoảng từ 1 đén 5). Giá trị khởi đầu của biến $i là 1. Sau mỗi lần thực hiện xong đoạn mã, giá trị này tăng thêm 1 (+1) rồi tiếp tục lặp lại đoạn mã đến khi nào đạt giá trị > 5 thì dừng.

Như vậy, kết quả của đoạn mã trên sẽ như sau:

 The number is 1 
 The number is 2 
 The number is 3 
 The number is 4 
 The number is 5 

[sửa] Lệnh dowhile

Lệnh Do…while có chức năng tương tự while. Nhưng trong khi while thực thi đoạn mã khi và chỉ khi điều kiện nêu ra được thoả mãn thì Do…while sẽ thực thi đoạn mã ít nhất 1 lần – ngay cả khi điều kiện không đúng – và tiếp tục lặp lại đoạn mã nếu như điều kiện vẫn còn đúng.

Cú pháp của vòng lặp Do…while:

 do
 {
   code to be executed;
 }
   while (condition);

Ví dụ:

 <?php 
 $i=0;
 do
 {
   $i++;
   echo "The number is " . $i . "<br />";
 }
 while ($i<5);
 ?>

[sửa] Lệnh switch
 <?php
 switch (condition) {
 case 1:
     action1;
     break;
  
 case 2:
     action2;
     break;
  
 default:
     defaultaction;
     break;
 }
 ?>

[sửa] Lệnh trycatch

[sửa] Liên kết ngoài

9 từ phụ nữ hay dùng

Tháng Chín 16, 2008

(Dân trí) – Đàn ông có “vô số lúc” không hiểu đúng phụ nữ. Đó là lý do tại sao bạn nên tìm hiểu ý nghĩa của 9 từ sau đây khi chúng được thốt ra từ cái miệng xinh xắn của nàng, để tự cứu mình trước gió giông đang sầm sập tới.

1. “Tốt thôi!”

Nàng sẽ nói vậy để kết thúc cuộc cãi vã. Lúc ấy phái yếu là người nắm thế chủ động, và trong trường hợp này, sự im lặng là điều tốt nhất bạn có thể làm.

2. “5 phút nữa”

Nếu cô ấy đang chuẩn bị thay đồ và trang điểm, phải mất ít nhất nửa tiếng đồng hồ. Hãy tự biến nửa tiếng đồng hồ ấy thành 5 phút bằng cách ngồi xem TV hoặc làm việc gì đó trong nhà, thời gian sẽ trôi nhanh thôi.

3. “Không có gì”

Đây là dấu hiệu bày tỏ thiện chí trước nguy cơ xảy ra tranh cãi. Những cuộc cãi vã đang “nhen nhóm” sẽ nhanh chóng được cứu cánh với “không gì cả” của nàng.

4. “Cứ thử xem”

Đó là một lời thách thức chứ không phải là sự cho phép của các nàng đâu nhé. Vì vậy, bạn chớ có dại mà làm.

5. Thở dài đánh thượt

Một tiếng thở dài cố tình cho bạn nghe thấy sẽ nói rằng cô ấy nghĩ bạn là tên ngốc và đang băn khoăn tự hỏi tại sao lại mất thời gian ở đây tranh cãi với bạn chẳng vì lý do gì.

6. “Được lắm”

Đây là một trong những lời nguy hiểm nhất mà một người phụ nữ có thể nói ra. “Được lắm” đồng nghĩa với việc cô ấy muốn có thời gian suy nghĩ lâu hơn trước khi quyết định đưa ra phương thức gì và thời điểm nào bạn sẽ phải trả giá cho sai lầm của mình.

7. “Cảm ơn”

Khi một người phụ nữ cảm ơn bạn, đừng nên hỏi lại hoặc giả bộ tảng lờ, mà chỉ cần nói “có gì đâu”. Nếu cô ấy nói “cảm ơn anh rất nhiều” thì thực chất đây chỉ là lời châm chọc và cô ấy không hề có ý cảm ơn bạn đâu. Trong trường hợp ấy, bạn nên cẩn thận vì câu đáp “có gì đâu” của bạn lại trở thành “thế nào cũng được” đối với cô ấy. Thật quá rắc rối phải không.

8. “Sao cũng được!”

Nói ra điều này, cô ấy đang muốn chửi đánh bạn lắm đó.

9. “Để em làm”

Đây lại là một câu nói đầy nguy hiểm vì nó có bao hàm ý nghĩa: “Anh biết phải làm việc này nhưng lại lười biếng không mó tay, và nằm dài đợi tôi về làm đấy!”.

Rất nhiều lần phụ nữ nhờ các chàng làm gì đó, nhưng cuối cùng họ lai phải xử lý một mình. Và nếu bạn hỏi “em sao thế?”, hãy xem lại câu nói số 3 của nàng.

Ngọc Linh

Theo Allwomenstalk

10 nguyên tắc cơ bản của những bậc thầy PHP

Tháng Chín 16, 2008

1. Chỉ sử dụng PHP khi bạn cần đến nó – Rasmus Lerdorf
Không ai có thể sử dụng PHP thành thạo hơn chính người tạo ra nó. Vào năm 1995, Rasmus Lerdorf đã tạo ra ngôn ngữ lập trình PHP và từ đó ngôn ngữ này nhanh chóng được giới phát triển ứng dụng và làm thay đổi bộ mặt Internet. Tuy nhiên, Rasmus Lerdorf không tạo ra PHP với mục đích đó, PHP được tạo ra nhằm mục đích giải quyết các vấn đề của các nhà lập trình và phát triển ứng dụng we.

And as with many open source projects that have gone on to become popular, the motivation was never philosophical or even narcissistic. It was purely a case of needing a tool to solve real-world Web-related problems. In 1994 the options were fairly limited when it came to Web development tools

Tuy bạn có thể sử dụng PHP cho mọi thứ trên website. Lerdorf là người đầu tiên thừa nhận rằng PHP đơn thuần chỉ là một công cụ trong danh sách các các công cụ bạn sử dụng cho website của mình, và tất nhiên PHP có những hạn chế.

Use the right tool for the job. I have run across companies that have completely bought into PHP, deploying it absolutely everywhere, but it was never meant to be a general-purpose language appropriate for every problem. It is most at home as the front-end scripting language for the Web.

Sử dụng PHP cho mọi thứ trên website là việc làm không hiệu quả, nếu bạn là một nhà phát triển ứng dụng web thì nó không phải là một ngôn ngữ tốt nhất để làm việc. Đừng ngại sử dụng những ngôn ngữ lập trình khác trong dự án của bạn nếu cảm thấy nó tốt hơn cho PHP.

2. Sử dụng nhiều table cho PHP và MySQL cho những cơ sở dữ liệu lớn – Matt Mullenweg
Hầu như không có ai hỏi Matt Mullenweg là ai và tại sao anh ta lại được tôn vinh như một bật thầy của PHP bởi vì anh đã quá nổi tiếng và nhiều người biết đến.

Nếu bạn chưa rõ về Matt Mullenweg tôi có thể trích ngang cho bạn vài dòng thế này: Matt Mullenweg là người phát triển hệ thống blog khá thịnh hành hiện nay: WordPress. Sau khi hoàn thành WordPress, Matt cùng với công ty của mình đã cho ra đời website

http://www.wordpress.com

– một website có thể được liệt vào hàng tinh tú của thế giới mạng và được xây dựng trên code WordPress MU. Đây là một ứng dụng multi blog tốt nhất hiện nay. Vào thời điểm bải viết này được viết, website

http://www.wordpress.com

đang chứa khoảng 4 triệu blog con và mỗi ngày có khoảng 140.000 bài viết được đăng. Bạn có thể xem các thông số mới nhất của nó tại đây.

Vào năm 2006, Matt Mullenweg đã đưa ra những quyết định sáng suốt cho việc thiết kế cấu trúc cơ sở dữ liệu của WordPress và lý giải tại sao WordPress MU sử dụng những table riêng biệt cho mỗi blog thay vì gom chúng lại thành một khối lớn cho tất cả các blog.

We tested this approach for MU, but found it was too expensive to scale past a certain point. With monolithic structures you hit a wall based on your hardware. In MU users are divided and can be partitioned easily, for example on WordPress.com we have the users partitioned between 4096 databases, which allows you to scale very cheaply and efficiently to hundreds of thousands and even millions of users and extremely high levels of traffic.

3. Đừng bao giờ tin vào bản thân bạn và người dùng của bạn – Dave Child

Dave Child là cha đẻ của website Added Bytes (trước đây có tên là ilovejackdaniels.com) với loạt bài viết cheat sheets for many programming languages. Ông đã từng làm việc cho nhiều công ty ở Anh và thiết lập nên uy tín riêng của mình trong cộng đồng giới lập trình viên thế giới.

Dave Child mang đến cho bạn lời khuyên hữu ích trong bài viết writing secure code in PHP: đừng bao giờ tin vào người dùng của bạn (your users). Họ chỉ làm cho bạn tổn thương …

So the cardinal rule of all web development, and I can’t stress it enough, is: Never, Ever, Trust Your Users. Assume every single piece of data your site collects from a user contains malicious code. Always. That includes data you think you have checked with client-side validation, for example using JavaScript. If you can manage that, you’ll be off to a good start. If PHP security is important to you, this single point is the most important to learn.

Dave chỉ cho chúng ta thấy những ví dụ cụ thể về việc bảo mật trong phần một, phần haiphần 3 của loạt bài viết “Writing Secure PHP“.

Finally, be completely and utterly paranoid. If you assume your site will never come under attack, or face any problems of any sort, then when something eventually does go wrong, you will be in massive amounts of trouble. If, on the other hand, you assume every single visitor to your site is out to get you and you are permanently at war, you will help yourself to keep your site secure, and be prepared in case things should go wrong.

4. Đầu tư và nghiên cứu caching – Ben Balbo

Ben Balbo đã viết cho Site Point một bài viết hướng dẫn các developer và các designer.

If you have a busy and predominantly static web site–such as a blog–that’s managed through a content management system, it will likely require little alteration, yet may benefit from huge performance improvements resulting from a small investment of your time. Setting up caching for a more complex site that generates content on a per-user basis, such as a portal or shopping cart system, will prove a little more tricky and time consuming, but the benefits are still clear.

Đây là một vài kỹ thuật cache dữ liệu cho PHP

  • cached function calls
  • setting expiry headers
  • caching file downloads in IE
  • template caching
  • Cache_Lite

Và còn nhiều kỹ thuật khác Ben Balbo chưa đề cập đến.

Vì tính chất của một ngôn ngữ động, cache bị phê phán và chỉ trích vì làm mất đi tính linh hoạt của trang web do ít bị thay đổi nhưng dù sao đi nữa caching cũng là một phương án rất hữu hiệu và được ứng dụng khá rộng trong lập trình website.

5. Tăng tốc độ trang web bằng cách sử dụng một IDE Template và cắt nhỏ ảnh – Chad Kieffer
Khi Chad Kieffer không bận bịu trong các công việc thiết kế giao diện người dùng và quản trị database cho khách hàng, anh thường đưa ra rất nhiều lời khuyên sáng suốt trên blog của mình: 2 tablespoons.
Chad tin rằng sử dụng một bộ IDE như Eclipse PDT (một gói phát triển của Eclipse giành cho PHP) với sự kết hợp các kỹ thuật cắt template và chia nhỏ nó có thể giúp tăng tốc độ tải trang web.

Busy schedules, long to do lists, and deadlines make it tough for developers to get familiar with some of the advanced features their tools provide. This is a shame, because some features, like Eclipse Templates, can really reduce coding time and errors.

Ngụ ý của câu nói trên nói rằng một khi bạn thực hiện một số nhiệm vụ một cách tự động, bạn sẽ cải thiện được thời gian hoàn thành project của mình.Một ví dụ mà dễ thấy là với bạn lưu những đoạn lặp lại trên website lại thành những phần riêng biệt bạn có thể kết hợp, sử dụng lại chúng một cách nhanh chóng mà chẳng tốn thời gian viết lại chúng. Vả lại còn có thể sử dụng lại chúng trong những project khác nữa.

Bằng cách sử dụng các IDE như Eclipse và các gói PDT, bạn có thể nhận ra thời gian thực hiện dự án của bạn được rút ngắn đáng kể. Các IDE sẽ cho phép bạn thực hiện rất nhiều công việc như gộp file, debug, kiểm tra việc thiếu các dấu chấm phẩy (;), một vài IDE còn cho phép bạn thực hiện các tác vụ cao cấp hơn như upload lên hosting.

6. Khiến cho việc dùng PHP trở nên thuận tiện hơn bằng cách sử dụng Filter – Joey Sochacki

While Joey Sochacki có thể không phải là một cái tên nổi tiếng giống như Matt Mullenweg trong cộng đồng PHP, anh ấy chỉ là một nhà phát triển website một cách ngẫu nhiên và chia sẻ kinh nghiệm anh có trong thời gian làm một developer trên blog Devolio của mình.

Filtering data. We all have to do it. Most, if not all of us, despise doing it. However, unbeknown to most are PHP’s filter_* functions, that allow us to do all sorts of filtering and validation. Using PHP’s filter_* functions, we can validate and sanitize data types, URLs, e-mail addresses, IP addresses, strip bad characters, and more, all with relative ease.

Bộ lọc có thể là một thứ gì đó thật xa vời và khó hiểu. Nhưng bạn có thể ghé thăm Blog của Joey Sochacki và với sự giúp đỡ của Joey Sochacki bạn có thể học được cách cài đặt bộ lọc, tìm hiểu những thứ một bộ lọc cần, tìm hiểu nó và cải thiện để tận dụng sức mạnh của PHP.

7. Sử dụng một PHP Framework – Josh Sharp
Hiện vẫn có những cuộc tranh cãi quanh việc sử dụng framework nào giữa Zend, CakePHP, Code Igniter, hoặc những framework khác.
Josh Sharp là một lập trình viên và là một nhà phát triển website cho khách hàng. Đâu là lý do tại sao bạn nên tin Josh khi anh bảo sử dụng framework để tiết kiệm thời gian và hạn chế lỗi khi lập trình ? Josh tin điều đó vì một lẽ đơn giản : PHP rất dễ học.

But PHP’s ease of use is also its downfall. Because there are less restrictions on the structure of the code you write, it’s much easier to write bad code. But there is a solution: use a Framework

Framework có thể giúp bạn chuẩn hóa chương trình, bạn có thể tiết kiệm rất nhiều thời gian trong quá trình xử lý mã nguồn … Bạn có thể đọc thêm lợi ích của việc sử dụng framework tại blog của Josh.

8 Đừng sử dụng Framework – Rasmus Lerdorf

Trái ngược với ý kiến ở trên của Josh ở trên, Rasmus Lerdorf – cha đẻ của PHP lại cho rằng framework không phải là một lựa chọn sáng suốt. Tại sao? Bởi vì nó sẽ làm cho chương trình của bạn biên dịch chậm hơn so với viết code PHP đơn thuần. Trong bài thuyết trình của mình tại Drupalcon 2008 , Rasmus đã so sách tốc độ xử lý của một trang “Hello world !” đơn giản sử dụng framework và không sử dụng framework (slides 24-32) và chỉ ra rằng framework làm cho tốc độ xử lý web page chậm hơn code php trực tiếp.

Bạn có thể xem và nghe toàn bộ bài phát biểu của Rasmus Lerdorf tại đây.

9. Sử dụng bộ xử lý đồng bộ (Batch Processing) – Jack D. Herrington

Theo từ điển Lạc Việt Batch Processing là một chế độ thao tác của máy tính, trong đó các thao tác lệnh của chưng trình được thực hiện liên tiếp nhau mà không có sự can thiệp của người sử dụng máy tính.

Jack D. Herrington không phải là người xa lạ trong cộng đồng PHP và Developer của thế giới. Herrington khuyến khích sử dụng batch processing và cron cho việc xử lý các tác vụ dưới tầng nền hệ thống. Người sử dụng web không muốn phải ngồi đợi quá lâu trong lúc hệ thống tải trang lên. Vì vậy, những thứ không cần thiết phải hiển thị ra ngoài bạn hãy để nó chạy dưới nền ứng dụng.

Certainly, in some small cases, it’s a bit easier to fire off of a helper thread to handle small jobs. But it’s easy to see that with the use of conventional tools — cron, MySQL, standard object-oriented PHP, and Pear::DB — creating batch jobs in PHP applications is easy to do, easy to deploy, and easy to maintain.

Jack tin rằng thay vì sử dụng các tiến trình trên server, để đơn giản hơn có thể sử dụng kết hợp cron, PHP và MySQL để xử lý các ứng dụng nền.

I’ve done both, and I think cron has the advantage of the “Keep It Simple, Stupid” (KISS) principle. It keeps the background processing simple. Instead of having a multithreaded job-processing application that runs forever and, thus, can never leak memory, you have a simple batch script that cron starts. The script determines whether there’s anything to do, does it, then exits. No need to worry about memory leaks. No need to worry about a thread stalling or getting caught in an infinite loop.

10.Bật chức năng Error Reporting – David Cummings

David Cummings điều hành công ty phần mềm của mình với một CMS đặc trưng và đã đạt được rất nhiều giải thưởng. Nếu nói về một người phát triển ứng dụng PHP thành công nhất, có lẽ đó là David.

David đã viết một vài viết trên SitePoint về Hai lời khuyên cho những người muốn học PHP. Một trong hai lời khuyên là “Turn on error reporting immediately“

The single most important thing I tell people who use PHP is to turn error reporting to its maximum level. Why would I want to do this? Generally the error reporting is set at a level that will hide many little things like:

  • declaring a variable ahead of time,
  • referencing a variable that isn’t available in that segment of code, or
  • using a define that isn’t set.

Error Reporting giúp bạn tìm kiếm các lỗi lập trình trong quá trình thực hiện project dễ dàng hơn. Rất nhiều lỗi nhỏ của PHP dễ dàng được tìm thấy với mô tả lỗi giúp bạn dễ dàng khắc phục nó hơn.

Dịch bởi : babyinternet – nhanweb.com

Theo dõi

Get every new post delivered to your Inbox.