Tài liệu tự học làm một hacker
hacker How To Become A Hacker (HVA COPY CONMALE) Đây là bản dịch của tài liệu "How To Become A Hacker" của Eric Steven Raymond. Bản gốc có ở Tôi dịch tài liệu này với hy vọng phần nào cung cấp thông tin nhằm mục đích giải toả một số ngộ nhận về cái gọi là 'hacking'. Cá nhân tôi cho rằng Eric Raymond có một cái nhìn cực đoan thể hiện qua những điều anh ta định nghĩa và phân tích trong tài liệu này. Có nhiều điểm anh ta cố tình (hay vô ý), càng về sau, càng đưa tính chất hacking hướng về việc đóng góp và phát triển cộng đồng mở nguồn và đây là một cái nhìn (theo tôi là) thiên vị. Tuy vậy, tài liệu này của Eric Raymond đã đưa ra những điểm giá trị về cái gọi là "thái độ" và khả năng tư duy một hacker. Những điểm bàn về "phong cách" và thói quen của hackers là những điểm lý thú. Theo tôi, hacker và hacking không có biên giới rõ ràng về hệ điều hành, về software, về môi trường Hacking là việc thay đổi tính chất và khả năng làm việc của một sự thể và "sự thể" này không có giới hạn Microsoft, Linux, BSD, Solaris Hacking cũng không nhất thiết phải là những đóng góp cho cộng đồng mã nguồn mở. Bất cứ nơi đâu, hacking để giải quyết trở ngại, để cải thiện công việc, để nâng cao chất lượng đều là hacking. Rất mong bạn đọc với cái nhìn tỉnh táo. Tại sao có tài liệu này? Là chủ biên của mục và một số tài liệu nổi tiếng có tính chất tương tự, tôi thường nhận rất nhiều e-mail từ các newbies hỏi cách "làm sao tôi có thể học để trở thành cao thủ hacker - 1-?" Quay về năm 1996, tôi thấy chẳng có FAQ -2- hoặc tài liệu trên web giải đáp câu hỏi tuyệt đối cần thiết đó, bởi thế tôi bắt đầu với tài này. Ngày nay, rất nhiều hackers cho rằng tài liệu này là một kim chỉ nam -3-. Nếu bạn đang đọc một bản lưu nào đó của tài liệu này, phiên bản hiện lưu có ở: Có khá nhiều bản dịch của tài liệu này cho các thứ tiếng: Ả Rập, Bulgary, Catalan, tiếng Hoa (giản thể), Đan Mạch, Hoà Lan, Farsi (tiếng Iran), Phần Lan, Đức, tiếng Do Thái thuộc nhánh Hy Lạp, Ý, Nhật, Na Uy, Ba Lan, Bồ Đào Nha, Romania, Nga, Tây Ban Nha, Thổ Nhĩ Kỳ và Thụy Điển. Xin lưu ý vì bản chính thỉnh thoảng có thay đổi nên các tài liệu dịch có thể bị lỗi thời ở mức nào đó. Năm chấm trong chín hình vuông được dùng để trang trí trên tài liệu này được gọi là glider. Nó là một mẫu đơn giản có các giá trị đáng ngạc nhiên của một quy trình simulation toán học được gọi là đã làm nhiều hackers kinh ngạc nhiều năm qua. Tôi nghĩ nó có thể dùng để làm một biểu tượng tuyệt vời cho những điều hackers ưa thích - tính trừu tượng -4-, thoạt tiên có vẻ mang một chút bí ẩn, nhưng đó là cổng vào một thế giới đầy logic của riêng nó. Bạn có thể đọc thêm về biểu tượng glider ở. Hacker là gì? Trên mục có chứa một mớ định nghĩa cho từ 'hacker', hầu hết liên quan đến khả năng kỹ thuật và cái sướng sau khi giải quyết những trở ngại và vượt qua các giới hạn. Nếu bạn muốn biết cách trở thành một hacker, chỉ có hai định nghĩa là xác hợp. Có một cộng đồng, một nơi có thứ văn hoá chia xẻ của các chuyên viên lập trình và các cao thủ mạng từ nhiều thập kỷ trước, từ thời các tiểu vi tính -5- lần đầu được tung ra và từ thời ARPAnet còn hoang sơ. Các thành viên của cộng đồng này tạo ra từ 'hacker'. Hackers xây dựng nên Internet. Hackers tạo ra hệ điều hành UNIX ngày nay. Hackers điều quản Usenet. Hackers làm cho World Wide Web hoạt động. Nếu bạn là một phần của cộng đồng này, nếu bạn đã đóng góp cho nó và những người trong cộng động này biết đến bạn, gọi bạn là 'hacker' thì bạn chính là hacker. Tư duy của một hacker không giới hạn trong khuôn khổ văn hoá 'software-hacker'. Những người này đã áp dụng thái độ của hacker vào những việc khác ví dụ như trong điện tử hoặc trong âm nhạc - thật sự ra, bạn có thể thấy điều này ở đẳng cấp cao nhất của lãnh vực khoa học hay nghệ thuật. Dân Software hackers nhận ra được mối liên hệ đồng cảm ở những lĩnh vực khác và có thể gọi họ (những người ở những lĩnh vực khác) là 'hackers' - vài người cho rằng bản sắc tự nhiên của hacker thật sự độc lập với thể trạng mà hackers làm việc và tiếp cận -6-. Phần còn lại của tài liệu này chúng ta sẽ tập trung vào khả năng và thái độ của software hackers và các truyền thống của nền văn hoá chia xẻ đã tạo ra từ 'hacker'. Có một nhóm người khác luôn tự cho họ là hackers một cách ầm ĩ nhưng thật sự họ không phải là hackers. Những người này (phần lớn là các cậu ở tuổi đang lớn) là những người "ghi bàn" được một vài cú thâm nhập vào máy tính và lừa lọc hệ thống điện thoại. Những hackers thực thụ gọi loại người này là 'crackers' và họ (hackers) chẳng muốn dính dáng gì đến đám người này. Hackers thực thụ hầu hết cho rằng đám 'crackers' lười nhác, vô trách nhiệm và không thông minh cho lắm. Việc có thể bẻ gãy cơ chế bảo mật chẳng biến anh thành một hacker; cái này chẳng khác gì khả năng 'đề' xe (không cần chìa) -7- biến anh thành một kỹ sư xe máy. Không may, quá nhiều phóng viên và cây viết đã bị ngu hoá với việc dùng từ 'hacker' để mô tả crackers; điều này làm cho các hackers thứ thiệt cực kỳ khó chịu. Điểm khác biệt căn bản là: hackers xây dựng, crackers đánh đổ. Nếu bạn muốn trở thành hacker, tiếp tục đọc. Nếu bạn muốn trở thành cracker, hãy đến với news:atl.2600 newsgroup và sẵn sàng lao vào để tìm thấy rằng bạn không khôn ngoan như bạn tưởng. Và đó là bấy nhiêu điều tôi muốn nói về crackers. Thái độ của Hacker Hackers giải quyết trở ngại và xây dựng vật thể, và họ tin tưởng ở tự do và tự nguyện chia xẻ, giúp đỡ lẫn nhau. Để được tiếp nhận như một hacker, bạn phải tự trọng như thể chính bạn có thái độ này. Và để tự trọng như thể bạn có thái độ ấy, bạn phải thật sự tin vào thái độ ấy -8-. Nhưng nếu bạn nghĩ rằng chỉ cần bồi đắp thái độ để được tiếp nhận vào xã hội này thì bạn đã ngộ nhận. Trở thành một người tin tưởng vào những điều này là điều quan trọng cho bạn- bởi lẽ, từ việc giúp đỡ, chính bạn sẽ học hỏi và duy trì động lực cho chính bạn. Cũng như với các lĩnh vực nghệ thuật, cách hữu hiệu nhât để trở thành bậc thầy là bắt đầu với tư duy của bậc thầy - không chỉ ở khía cạnh trí thức mà còn ở khía cạnh tinh thần. Hoặc, như một đoản thơ Thiền như sau: Theo lối dẫn: ngẩng nhìn thầy, đi theo thầy, đi cùng thầy, nhìn thấu thầy, trở thành thầy. Thế, nếu bạn muốn trở thành hacker, lặp đi, lặp lại các điều sau cho đến khi bạn tin vào chúng: 1. Thế giới đầy những trở ngại kỳ lạ đang chờ được giải quyết. Làm một hacker có nhiều điều vui, nhưng những điều vui này đòi hỏi rất nhiều cố gắng. Cố gắng tạo động lực. Các vận động viên tìm thấy động lực từ những điểm thú vị trong việc khiến cho cơ thể của họ hoạt động, trong việc tự đẩy họ vượt qua chính giới hạn thể lực hiện có. Tương tự, để làm một hacker bạn cần bắt lấy những niềm thích thú nho nhỏ từ việc giải quyết được những trở ngại, tinh luyện khả năng và thực tập trí thông minh của mình. Nếu bạn không phải là dạng người có cảm nhận những chuyện này một cách tự nhiên, bạn sẽ cần biến mình thành một người như thế thì mới có thể trở thành hacker. Nếu không, bạn sẽ thấy năng lượng hacking của mình bị những thứ dễ làm chi phối như tình ái, tiền bạc và danh tiếng cắn xé tơi bời. (Bạn cũng cần phát triển một thứ niềm tin với khả năng học hỏi của chính mình - một niềm tin, ngay cả có thể bạn không biết mọi điều cần thiết để giải quyết trở ngại, nếu bạn chỉ cần lao vào để giải quyết một mảnh trở ngại rồi học hỏi từ điểm ấy, bạn sẽ học đủ để giải quyết mảnh kế tiếp - và như thế, cho đến khi bạn hoàn tất.) 2. Không có trở ngại nào nên được giải quyết hai lần Những khối óc sáng tạo là những thứ quý báu, có giới hạn. Chúng không nên bị phí phạm trong việc tái tạo những thứ đã có sẵn -9- trong lúc có quá nhiều trở ngại lạ kỳ đang đợi được giải quyết ngoài kia. Để có thái độ như một hacker, bạn cần tin rằng thời gian suy gẫm của các hackers khác là những thứ quý giá - quý giá đến nỗi, đối với bạn nó trở thành trách nhiệm đạo đức để phải chia xẻ thông tin, giải quyết trở ngại và sau đó chia xẻ giải pháp để giúp những hackers khác có thể giải quyết những trở ngại mới thay vì họ phải thường xuyên tái xét những trở ngại đã được (ai đó) giải quyết. Tuy vậy, nên nhớ là câu "không có trở ngại nào nên được giải quyết hai lần" không ẩn dụ rằng mọi giải pháp hiện có đều quý giá, hoặc chỉ có một giải pháp đúng đắn cho một trở ngại. Thông thường, chúng ta nghiên cứu một trở ngại nào đó chưa từng đối diện trước đây bằng cách hình thành một giải pháp tức thời. Điều này không có gì sai và thường là cần thiết để giúp quyết định một cách tốt hơn. Điều không hay nằm ở chỗ trở ngại thuộc giới hạn kỹ thuật trá hình, pháp luật hoặc các hàng rào cản tập đoàn (như mã nguồn đóng) làm ngăn cản giải pháp tốt được tái dụng và buộc mọi người phải tái tạo lại những thứ đã có sẵn. (Bạn không cần phải tin rằng bạn bị buộc phải chia xẻ mọi sản phẩm sáng tạo của bạn, dẫu rằng những hackers làm việc này là những người được nể trọng nhất trong đám hackers. Việc duy trì thu nhập cho thức ăn, tiền trọ, chi phí cho máy tính là chuyện cần thiết. Bạn dùng khả năng hack của mình để hỗ trợ gia đình hoặc ngay cả làm giàu, đều tốt cả, miễn sao bạn đừng quên sự gắn bó của bạn đối với cái đẹp bạn tạo ra và đối với những bạn hackers đồng hành cũng đang làm như thế). 3. Chán nản và đơn điệu là ám chướng Hackers (và những người sáng tạo nói chung) không nên bị cảm thấy chán nản hoặc đơn điệu trong khi làm những việc mang tính lặp đi, lặp lại một cách ngu xuẩn, bởi vì khi cảm giác này xảy ra có nghĩa họ không làm những điều họ đáng làm - giải quyết trở ngại. Sự lãng phí này làm hỏng mọi người. Bởi thế, chán nản và đơn điệu không chỉ không thú vị mà còn là ám chướng. Để có thái độ như một hacker, bạn cần tin vào điều này, đủ để tự động hoá những công việc nhàm chán càng nhiều càng tốt, không chỉ cho riêng bạn mà cho mọi người (đặc biệt cho những hackers khác). (Có một ngoại lệ hiển nhiên cho điều (số 3) này. Hackers đôi khi làm những chuyện có vẻ như lặp đi lặp lại hoặc chán phèo để đóng vai như một quan sát viên cho công việc "tẩy não" hoặc để thu thập kiến thức hoặc kinh nghiệm nào đó không thể có được nếu không làm như thế. Nhưng việc này tùy người - chẳng có ai nên bị đẩy vào vị thế chán chường.) 4. Tự do là điều tốt Hackers có bản tính tự nhiên là những người chống cửa quyền. Bất cứ ai có thể ra lệnh cho bạn đều có thể ngăn bạn làm công việc giải quyết trở ngại mà bạn đam mê - và, bộ não của những kẻ có quyền lực thường nảy ra những lý do ngu xuẩn và buồn nôn để ngăn trở bạn. Thế nên, thái độ của kẻ cửa quyền cần được công kích bất cứ nơi nào bạn thấy có, hãy làm cho nó tan biến khỏi bạn và những hackers khác. (Đây không phải tương tự như chống đối luật pháp. Trẻ con cần được uốn nắn và tội phạm cần được kiểm chế. Một hacker có thể đồng ý một thể dạng luật pháp để đổi lấy cái gì đó anh ta muốn thay vì thúc thủ tuân lệnh. Nhưng đây là chuyện có giới hạn, mặc cả tỉnh táo; một dạng chấp nhận trao đổi bán chính thức giữa kẻ có quyền lực và bạn.) Những kẻ có quyền lực thích bồi đắp khả năng ngăn cản và tính bí mật. Và thế, họ không tin vào thái độ tự nguyện hợp tác và tự nguyện chia xẻ thông tin - họ chỉ muốn 'hợp tác' theo kiểu họ khống chế. Bởi thế, để có thái độ như một hacker, bạn cần phát triển phản xạ chống trả với thái độ ngăn cản, thái độ bí hiểm bằng vũ lực hoặc ép buộc. Bạn cần có ý chí để làm chuyện này. 5. Thái độ không thay thế thực chất khả năng Để làm một hacker, bạn cần bồi đắp một số thái độ như thế. Nhưng chỉ có thái độ sẽ không đủ biến bạn trở thành một hacker hoặc một vận động viên vô địch hoặc một ngôi sao nhạc rock. Trở thành một hacker cần kiến thức, thực hành, bền bỉ và chăm chỉ. Bởi thế, bạn cần hoài nghi 'dáng điệu' và thật sự tôn trọng thực chất khả năng. Hackers không để cho những kẻ làm dáng lãng phí thời gian của họ, ngược lại (hackers) thường tôn thờ thực chất khả năng - đặc biệt là thực chất khả năng hacking và thực chất khả năng làm bất cứ việc gì có giá trị. Thực chất khả năng cho những nhu cầu ích lợi (mà không hiếm người đạt được) là điều rất tốt, và thực chất khả năng cho những nhu cầu đòi hỏi sự linh mẫn của trí tuệ, khéo léo và độ tập trung là tốt nhất. Nếu bạn đã có sẵn thực chất khả năng, bạn sẽ phát triển nó một cách thích thú - chăm chỉ và chuyên cần sẽ tạo nên trạng thái căng thẳng và sẽ không có chỗ cho sự uể oải. Thái độ này là điểm tối quan trọng để trở thành một hacker. Kỹ năng hacking căn bản Thái độ cần thiết của hacker là điểm quan trọng nhưng kỹ năng lại càng quan trọng hơn. Thái độ không thể thay thế cho khả năng thật sự, và một số "đồ nghề" -10- căn bản mà bạn phải có trước khi một hacker nào khác gọi bạn là hacker. "Đồ nghề" này thay đổi dần dần theo thời gian khi công nghệ hình thành những cái mới và làm cho cái cũ trở nên vô dụng. Ví dụ, trước đây thường bao gồm việc lập trình bằng ngôn ngữ của máy -11- và gần đây, việc dùng HTML chẳng hạn không còn đòi hỏi này nữa. Ngay lúc này 'đồ nghề' gồm có những thứ khá rõ ràng như sau: 1. Học lập trình Hiển nhiên đây là điểm nền móng cho kỹ năng hacking. Nếu bạn không biết một ngôn ngữ lập trình nào, tôi đề nghị bạn bắt đầu với Python. Ngôn ngữ này được thiết kế gọn, sạch, tài liệu đầy đủ và khá nhẹ nhàng cho những người bắt đầu. Mặc dù thích hợp cho ngôn ngữ đầu tiên, nó không phải là đồ chơi; nó rất mạnh mẽ, linh động và có thể thích hợp cho các công trình lớn. Tôi đã viết một bài chi tiết (đánh giá Python). Các bài có chất lượng có ở Java cũng là một ngôn ngữ tốt để học lập trình. Nó khó hơn Python nhưng cho phép tạo code nhanh hơn Python. Tôi cho rằng nó là một chọn lựa rất tuyệt cho ngôn ngữ thứ nhì. Không may, phần nền của Java vẫn thuộc dạng "đóng". Điều này không phải là vấn đề gì với chính ngôn ngữ Java cả, nhiều bộ biên dịch nguồn mở chất lượng cao cho Java có trên mạng; vấn đề thật sự với Java là các lớp thư viện phải luôn luôn đi kèm với ngôn ngữ -12-. Các lớp thư viện nguồn mở cho Java thường bị tụt lùi sau bộ thư viện của Sun. Bởi thế, nếu bạn chọn Java, nên chọn một ứng dụng nguồn mở thay vì bị lệ thuộc vào nguồn đóng của Sun. Nhưng coi chừng một điều, bạn sẽ không đạt được mức kỹ năng cần thiết của một hacker hoặc ngay cả một lập trình viên nếu bạn chỉ biết có một hoặc hai ngôn ngữ - bạn nên học cách suy nghĩ đến những trở ngại lập trình một cách tổng quát, không phụ thuộc vào bất cứ ngôn ngữ nào. Trở nên một hacker thật sự, bạn cần đi đến chỗ bạn có thể học một ngôn ngữ mới trong giới hạn tính theo ngày bằng cách liên hệ từ những gì có trong tài liệu chỉ dẫn và những gì bạn đã biết. Điều này có nghĩa bạn nên học rất nhiều ngôn ngữ. Nếu bạn muốn đi sâu vào lập trình một cách nghiêm túc, bạn sẽ phải học C, ngôn ngữ cốt lõi của Unix. C++ liên hệ rất gần với C; nếu bạn đã biết cái này, học cái kia sẽ không khó. Tuy vậy, chẳng có cái nào tốt hơn để học trước cả. Và thật ra, càng tránh lập trình trên C, bạn càng năng suất. C rất hiệu năng và hiệu dụng cho tài nguyên của máy. Không may C đòi hỏi bạn phải thực hiện rất nhiều công tác quản lý tài nguyên ở mức cấp thấp và bằng tay (trong phần bộ nhớ chẳng hạn) để đạt được mức hiệu năng đó. Tất cả mã nguồn ở mức cấp thấp rất phức tạp và dễ tạo lỗi, chúng dễ hao tổn cả khối thời gian của bạn cho việc tìm lỗi. Với độ mạnh mẽ của máy tính hiện nay, việc đánh đổi (thời gian) thế này là điều không hay - dùng một thứ ngôn ngữ tốn kém thời gian của máy, thiếu hiệu xuất nhưng lại tiết kiệm thời gian của bạn có lẽ là chọn lựa thông minh hơn. Như: Python chẳng hạn. Những ngôn ngữ khác cũng không kém phần quan trọng đối với hackers như và Perl đáng để học vì lý do thực dụng; nó được sử dụng rộng rãi cho ứng dụng web và công tác quản lý hệ thống, thế nên, ngay cả bạn không bao giờ viết Perl, bạn cũng nên học cách đọc nó. Nhiều người sử dụng Perl để tránh dùng C với những công việc không đòi hỏi mức hiệu năng của C, tôi nghĩ nên dùng Python thì thích hợp hơn. Bạn cần phải hiểu code của những người khác. LISP đáng để đề cập đến vì một lý do khác - đó là cảm giác "phê" khi bạn nắm bắt được nó. Cảm giác này sẽ biến bạn trở thành một lập trình viên tốt hơn, ngay cả bạn không bao giờ dùng LISP. (Bạn có thể nắm bắt được kinh nghiệm dùng LISP khá dễ dàng bằng cách viết và điều chỉnh chế độ điều chỉnh cho Emacs -13- hoặc Script-Fu plugin cho GIMP -14-.) Tốt nhất là nên học luôn cả năm ngôn ngữ: Python, C/C++, Java, Perl và LISP. Ngoài lý do chúng là những ngôn ngữ lập trình quan trọng nhất cho hacking, chúng còn đại diện cho các hướng tiếp cận rất khác nhau cho việc lập trình và mỗi ngôn ngữ này sẽ giáo dục bạn bằng những cách có giá trị khác nhau. Tôi không thể cho bạn cách thức học từng ngôn ngữ ở đây - đây là một thứ kỹ năng phức tạp. Tôi có thể cho bạn biết rằng những cuốn sách và các khoá học cũng sẽ không chỉ cho bạn cách rèn luyện (rất nhiều, có thể nói là hầu hết các hackers chiến nhất là những người tự học). Bạn có thể học tính năng của ngôn ngữ - phần kiến thức - từ sách vở, nhưng phần tư duy giúp chuyển hoá kiến thức vào kỹ năng thật sự trong đời sống chỉ có thể tìm được qua thực hành và rèn luyện. Đó là những thứ (a)đọc code và (b) viết code. Peter Norvig là một trong những hackers đứng đầu của Google -15- và là đồng tác giả của cuốn sách giáo khoa phổ biến nhất cho về AI -16-, đã viết một tài liệu sáng giá có tên gọi là (tự dạy lập trình trong mười năm). Đây là "công thức để thành công trong lập trình" của ông ta, một tài liệu đáng chú ý. Học cách lập trình giống như học cách viết một thứ ngôn ngữ tự nhiên. Cách tốt nhất là đọc một ít những thứ đã được các bậc thầy viết, rồi tự bạn viết cái gì đó, đọc nhiều hơn nữa, viết thêm chút nữa, đọc nhiều hơn nữa, viết nhiều hơn nữa và lặp lại cho đến khi những thứ bạn viết bắt đầu hình thành sức mạnh và giá trị mà bạn thấy được từ những mẫu người bạn noi theo. Trước đây, tìm code hay để đọc là điều rất khó bởi vì rất ít có chương trình đủ lớn mà có luôn mã nguồn để các hackers mới gia nhập có thể đọc và táy máy. Điều này đã thay đổi rất nhiều; các chương trình mở nguồn, các công cụ lập trình và các hệ điều hành (tất cả được hackers xây dựng) lúc này có sẵn khắp nơi. Điều này dẫn tôi đến phần tiếp theo . 2. Lấy ngay một cái Unix nguồn mở và học cách sử dụng và điều khiển nó. Tôi giả định bạn có máy tính cá nhân hoặc có thể sử dụng một cái ở đâu đó. (Hãy suy gẫm chốc lát để cảm thấu điều này. Văn hoá hacker nguyên thủy biến thiên từ lúc máy tính thật đắt tiền đến nỗi rất nhiều người không thể làm chủ nổi một cái). Bước đầu tiên và quan trọng nhất cho bất cứ newbie nào để có thể vươn đến kỹ năng của hackers là lấy ngay một bản Linux hoặc một bản BSD-Unix hoặc OpenSolaris, cài nó lên máy và chạy nó. Vâng, có nhiều hệ điều hành khác trên thới giới ngoài Unix nhưng chúng được cung cấp ở dạng binary - bạn không thể đọc được mã nguồn và bạn không thể điều chỉnh nó. Cố học hack trên máy chạy Microsoft Windows hoặc trên một máy chạy hệ điều hành nào thuộc dạng mã đóng cũng giống như cố học cách khiêu vũ trong lúc cơ thể đang bó bột -17-. Có thể dùng MacOS X nhưng chỉ một phần của hệ điều hành là nguồn mở - bạn hẳn sẽ sa vào hàng đống bế tắc và bạn cần cẩn thận để tránh lâm vào thói quen xấu là phải dựa dẫm vào mã nguồn có bản quyền của Apple. Nếu bạn tập trung vào phần Unix bên dưới, bạn có thể học được vài điều hữu dụng. Unix là hệ điều hành của Internet. Trong khi bạn có thể học cách sử dụng Internet mà không cần biết đến Unix, bạn lại không thể là một Internet hacker nếu không hiểu Unix. Vì lý do này, văn hoá hacker ngày nay tập trung khá mạnh ở Unix. (Điều này không phải lúc nào cũng đúng, và một số hacker thời trước vẫn không vui với chuyện này nhưng mối quan hệ cộng sinh giữa Unix và Internet đã trở nên đủ mạnh khiến cho cả bắp thịt Microsoft không đủ sức làm xước được nó). Thế, mang Unix vào câu chuyện - bản thân tôi thích Linux nhưng có những cách khác (và vâng, bạn có thể chạy cả Linux và Microsoft Windows trên cùng một máy). Học nó. Chạy nó. Máy mó nó. Trao đổi trên Internet với nó. Đọc mã nguồn. Chỉnh mã nguồn. Bạn sẽ có những công cụ lập trình (bao gồm C, LISP, Python và Perl) tốt hơn bất cứ một hệ điều hành Microsoft nào mơ tưởng để có được. Bạn sẽ vui thích, bạn sẽ bồi đắp thêm kiến thức nhiều hơn mà bạn có thể hình dung (bạn chỉ có thể thấy) lúc nào đó, khi nhìn lại trọn bộ quá trình như một hacker bậc thầy. Để có thêm thông tin về việc học Unix, xem. Bạn cũng có thể cần xem Để mó tay vào Linux, xem ; bạn có thể tải đồ từ đó hoặc (tốt hơn nữa) tìm một nhóm người dùng ở địa phương giúp bạn cho việc cài đặt. Đối với người dùng mới với Linux. tất cả Linux Distribution đều tương tự như nhau. Bạn có thể tìm thông tin giúp đỡ và tài nguyên về BSD Unix ở Tôi cũng đã viết một bài tổng luận về (căn bản về Unix và Internet). (Ghi chú: Tôi thật lòng không đề nghị việc tự cài Linux hoặc BSD một mình nếu như bạn là newbie. Với Linux, tìm một nhóm người dùng Linux ở địa phương bạn để được giúp đỡ.) 3. Học cách sử dụng World Wide Web và viết HTML Hầu hết hackers xây dựng những thứ giúp cho công việc không hiển hiện cụ thể, họ giúp điều khiển nhà máy, văn phòng và trường đại học mà chẳng để lại ảnh hưởng cụ thể gì đến đời sống của những người không phải là hacker. Web lại là một ngoại lệ to lớn, web là một món đồ chơi khổng lồ và lấp lánh khiến cho ngay cả đám chính trị gia -18- cũng phải thừa nhận rằng nó đã thay đổi thế giới. Chỉ cần mỗi lý do này (và nhiều lý do đáng giá khác nữa) đủ để bạn cần học cách làm việc với Web. Điều này không có nghĩa học cách sử dụng trình duyệt (ai cũng làm được việc này), nhưng học cách viết HTML, thứ ngôn ngữ hình thành Web. Nếu bạn không biết cách lập trình, viết HTML sẽ dạy bạn một số thói quen tinh thần ích lợi cho việc học lập trình. Thế nên, làm vài trang web. Cố bám vào XHTML, một dạng HTML sạch hơn dạng HTML cổ điển. (Có rất nhiều bài thực tập hay trên Web; Nhưng chỉ có vài trang chủ thì chẳng đủ thiếu gì để biến bạn trở thành một hacker. Web tràn ngập những trang chủ. Chúng hầu hết vô ích, ngập ngụa trang trí nhưng hoàn toàn không có nội dung - rất hào nhoáng, rất ngập ngụa, bạn phải biết, sự ngập ngụa này y hệt như nhau (xem thêm ở (trang HTML gớm giếc). Để đáng công sức, trang của bạn phải có nội dung - nó phải lý thú và/hoặc hữu dụng cho các hackers khác. Điều này dẫn dắt chúng ta đến phần kế tiếp . 4. Nếu bạn không có tiếng Anh ở mức đủ dùng, học. Một người Mỹ và nói tiếng Anh như tôi, trước đây tôi đã từng ngần ngại khi đề nghị điều này, e rằng sẽ bị ngộ nhận như một thứ văn hoá chủ nghĩa đế quốc. Nhưng hàng loạt những người có tiếng mẹ đẻ là tiếng Anh và các thứ tiếng khác đã thúc đẩy tôi nên nhấn mạnh rằng tiếng Anh là thứ ngôn ngữ dùng để làm việc của xã hội hacker và của Internet, và bởi thế, bạn cần phải biết nó để có thể làm việc và sinh hoạt trong cộng đồng hacker. Quay lại khoảng 1991, tôi được biết có nhiều hackers dùng tiếng Anh (là thứ ngôn ngữ thứ nhì của họ) trong các cuộc thảo luận kỹ thuật ngay cả bằng khẩu âm của tiếng mẹ đẻ. Tôi được cho biết khi đó tiếng Anh có từ vựng kỹ thuật phong phú hơn nhiều ngôn ngữ khác nên nó trở thành chọn lựa thích hợp. Cho những lý do tương tự, các bản dịch từ những sách kỹ thuật được viết bằng tiếng Anh thường thiếu sâu sát (khi chúng được hoàn thành hay chăng nữa). Linus Torvalds, người Phần Lan, chú thích mã nguồn của anh ta bằng tiếng Anh (hiển nhiên anh ta chưa hề làm khác hơn thế - chú thích bằng tiếng Phần Lan). Sự nhuần nhuyễn tiếng Anh của anh ta là một trọng điểm cho phép anh triệu tập cộng đồng phát triển nhu liệu của toàn thế giới cho Linux. Đây là một ví dụ đáng để noi theo. Là một người có tiếng Anh là tiếng mẹ đẻ không bảo đảm bạn có đủ kỹ năng ngôn ngữ để hoạt động như một hacker. Nếu lối viết của bạn thuộc dạng thiếu hụt, không có văn phạm và đầy lỗi chính tả sẽ khiến cho nhiều hackers khác (kể cả tôi) có xu hướng làm ngơ bạn. Dù rằng lối viết bừa bãi không hẳn là biểu thị của lối suy nghĩ lộn xộn nhưng chúng tôi thưòng thấy mối liên hệ này khá gần - và chúng tôi chẳng có chỗ cho những người có lối suy nghĩ lộn xộn. Nếu bạn chưa thể viết một cách mạch lạc, hãy rèn luyện để viết như thế. Vị thế trong xã hội Hacker Tương tự như hầu hết các dạng xã hội không dùng tiền nong làm tiêu chuẩn, hacker hoạt động dựa trên uy tín. Bạn đang cố giải quyết một số trợ ngại lý thú, nhưng chúng thật sự lý thú thế nào, và liệu những giải pháp của bạn thật sự tốt, có cái gì để chỉ có những người đồng đẳng kỹ thuật với bạn hoặc những người ở mức cao hơn mới có thể đủ sức đánh giá những giải pháp này? Theo đó, khi bạn chơi trò chơi hacker, bạn học cách ghi bàn chủ yếu dựa trên nền tảng các hackers khác nghĩ thế nào về kỹ năng của bạn (đây là lý do tại sao bạn không thực sự là một hacker cho đến khi khác hackers khác thường xuyên gọi bạn là một hacker). Sự thật này trước đây bị lu mờ bởi hình ảnh hacking như một hoạt động đơn độc, và cũng bởi trong thâm tâm các hacker chống lại những quan điểm cho rằng động cơ làm việc là niềm kiêu hãnh hoặc sự công nhận từ bên ngoài (quan điểm này đã dần dần đã bị suy thoái từ những năm cuối thập niên 1990 nhưng vẫn còn ảnh hưởng ít nhiều). Một cách cụ thể, sinh hoạt hacker là một thứ mà những chuyên gia xã hội học -19- gọi là văn hoá cho tặng -20-. Bạn đạt được vị trí và uy tín trong xã hội này không phải do đè nén những người khác, không phải vì ngoại diện đẹp đẽ mà cũng chẳng phải do có những thứ vật chất khiến những người khác thèm muốn nhưng vì sự hiến tặng. Cụ thể hơn, do bạn hiến tặng thời gian của bạn, khả năng sáng tạo của bạn và hiến tặng cả kinh nghiệm của bạn. Có năm điều căn bản bạn có thể làm để được các hackers khác kính trọng: 1. Viết chương trình mã nguồn mở Điều đầu tiên (cốt tủy và truyền thống nhất) là viết những chương trình khiến những hackers thấy vui và hữu dụng, và hiến tặng mã nguồn của chương trình cho cả cộng đồng hacker sử dụng. (Trước đây chúng tôi gọi nó là "free software", nhưng từ này làm nhiều người lầm lẫn và không xác định rõ "free" là thế nào. Hầu hết bây giờ chúng tôi dùng cụm từ Những đại cao thủ -21- trong thế giới hacker là những người đã viết các chương trình to lớn, có khả năng đáp ứng những nhu cầu rộng lớn và hiến tặng chúng để mọi người có thể dùng. Tuy vậy, có một điểm lịch sử tinh tế ở đây. Hiện tại, các hackers tìm trong cộng đồng phát triển mã nguồn mở để chọn ra những người "chiến" nhất, nhưng trước bán thập niên 1990, hầu hết các hackers làm việc với mã nguồn đóng. Điều này vẫn còn đúng ngay khi tôi viết bản đầu tiên của tài liệu HOWTO này vào năm 1996. Sau 1997 luồng mã nguồn mở mới thật sự trở mình. Ngày nay, "cộng đồng hacker" và "những người phát triển mã nguồn mở" là hai biểu dạng cho cùng một văn hoá và dân số - nhưng đáng để nhớ rằng đây không phải là điều luôn luôn như vậy trước đây. 2. Giúp thử nghiệm và tìm lỗi mã nguồn mở Những hackers cũng đóng góp trong việc tìm lỗi cho software mã nguồn mở. Trong thế giới thiếu hoàn hảo này, chúng ta không tránh khỏi việc phải mất hầu hết thời gian trong phân đoạn tìm lỗi của cả một quá trình phát triển software. Đó là lý do tại sao bất cứ một tác giả của phần mềm mở nguồn nào có suy nghĩ thường cho bạn biết rằng những người thử nghiệm phó bản đều được xứng đáng hưởng trọng lượng của họ ngang với số lượng hồng ngọc (đây là những ai biết mô tả tình trạng rõ ràng, phân vùng những trở ngại rạch ròi, có thể tiếp nhận lỗi trong một bảng công bố nhanh (quick release), và sẵn sàng áp dụng một số chu trình kiểm tra đơn giản). Ngay cả ai đó có thể giúp thay đổi trong phân đoạn tìm lỗi, một phân đoạn mất thời gian và mệt nhọc thay vì kéo lê, chẳng đi tới đâu cũng đáng ca ngợi. Nếu bạn là một newbie, thử tìm một chương trình đang được phát triển mà bạn thích và làm một người thử nghiệm phó bản xem sao. Có một sự biến thiên từ việc giúp thử nghiệm chương trình đến tìm lỗi chương trình và điều chỉnh chúng. Bạn sẽ học rất nhiều theo cách này và tích đức -22- cho những người họ sẽ giúp bạn về sau. 3. Phổ biến thông tin hữu ích Một cách rất hay là sưu tập và chọn lọc những thông tin hữu ích và lý thú để tạo các trang web hoặc các tài liệu như "Những câu hỏi thường gặp" (FAQ) và phổ biến chúng một cách rộng rãi. Những người bảo trì các FAQ kỹ thuật quan trọng được nể trọng như những tác giả tạo mã nguồn mở. 4. Giúp duy trì cơ sở hạ tầng Xã hội hacker (và những cơ cấu kỹ thuật) được các tình nguyện viên điều hoạt. Có rất nhiều công việc cần thiết nhưng không "xôm tụ" cần được gánh vác để xã hội này tiếp tục hoạt động - quản lý mailing lists, điều hợp newsgroups, duy trì các site software lưu trữ, phát triển RFC -23- và các tiêu chuẩn kỹ thuật khác. Những người làm các loại việc này rất được nể trọng bởi vì mọi người biết rằng loại công việc này ngốn không biết bao nhiêu là thời gian và không lý thú như việc táy máy với mã nguồn. Làm những việc này chứng tỏ sự đóng góp lớn lao. 5. Phục vụ chính văn hoá hacker Sau chót, bạn có thể phục vụ và phát triển chính văn hoá này (bằng cách, ví dụ như viết một bài tổng luận về cách làm thế nào để trở thành hacker ). Đây không phải là điều bạn có thể làm được cho đến khi đã sinh hoạt ít lâu và đã được biết đến với một trong bốn điểm ở trên. Văn hoá hacker không có các vị lãnh tụ, nói một cách chính xác, nhưng nó vẫn có những vị anh hùng và những "già làng", những sử gia và những phát ngôn viên. Một khi bạn ở trong bộ lạc đủ lâu, bạn có thể trở thành một trong những người như thế. Coi chừng: hackers không tiếp nhận dạng người tự phụ trơ trẽn trà trộn trong nhóm "già làng" của họ, bởi thế, thấp thoáng với tới "danh phận" này có phần nguy hiểm. Thay vì phấn đấu để được lấy nó, bạn nên an nhiên, khiêm tốn và hài lòng với chính vị trí của mình. Mối quan hệ Hacker/Dân gạo cội -24- Ngược với những điều thường được bàn tán, bạn không cần là một tay "nerd" mới trở thành hacker. Nó có phần ích lợi và nhiều hackers quả thật là những tay "nerd". Đôi khi bị tách rời khỏi xã hội thông thường -25- giúp bạn tập trung vào những điều quan trọng như suy nghĩ và hacking. Vì lý do này, nhiều hackers tiếp nhận nhãn hiệu "geek" như một loại phù hiệu để hãnh diện - đó là cách để công bố tính độc lập với các dự tưởng xã hội thông thường (cũng là một cách chuộng những thứ khác như khoa học giả tưởng và các loại game chiến thuật cũng thường đi đôi với những ai là hacker). Từ "nerd" được dùng trước đây theo tinh thần này vào những năm 90, khi mà 'nerd' là một dạng bị từ chối hạng nhẹ và 'geek' là dạng nặng hơn; một lúc nào đó sau năm 2000, chúng đổi chỗ, ít ra là với văn hoá phổ thông của Mỹ, và hiện nay, một thứ văn hoá 'tự hào geek' càng lan tràn trong đám người không phải là dân kỹ thuật. Nếu bạn có thể làm cách nào để đủ tập trung vào hacking hoặc giỏi với chuyện này mà vẫn có một đời sống sinh hoạt bình thường -26- thì đây là điều rất tốt. Chuyện này dễ dàng hơn nhiều ở thời nay so với thời tôi còn là newbie vào những năm 70; xã hội chính thống bây giờ có thiện cảm với đám 'kỹ thuật gạo cội' hơn rất nhiều. Thậm chí số người tin rằng đám hackers thường là những người yêu tuyệt vời và những người phối ngẫu lý tưởng. Nếu bạn bị lôi cuốn vào hacking bởi vì bạn không có một đời sống bình thường, điều này cũng tốt cả - ít ra bạn sẽ không bị trở ngại với việc tập trung. Có thể bạn sẽ có một cuộc sống bình thường về sau. conmale dịch và chú thích từ nguyên bản "How To Become A Hacker" - 14/9/2006 . có tài liệu này? Là chủ biên của mục và một số tài liệu nổi tiếng có tính chất tương tự, tôi thường nhận rất nhiều e-mail từ các newbies hỏi cách " ;làm. bắt đầu với tài này. Ngày nay, rất nhiều hackers cho rằng tài liệu này là một kim chỉ nam -3-. Nếu bạn đang đọc một bản lưu nào đó của tài liệu này, phiên