2011-06-21 36 views
5

Tôi đang làm việc trên một dự án độc lập cho trường học và tôi cần một chút hướng dẫn về các tài nguyên có thể có. Về cơ bản, tôi đang cố gắng xây dựng một vỏ kiểu Unix (có thể chuyển sau này sang Windows) trong C hoặc C++. Tôi sẽ thêm các lệnh shell theo kiểu mô-đun, thêm chức năng như tôi đi. Bước cuối cùng sẽ là quảng cáo lệnh "kết nối" cho phép người dùng kết nối với BBS telnet mà tôi đã thiết kế. BBS cũng sẽ chỉ có chức năng cơ bản, xương. E.G., tôi có thể sẽ có các bản tin mờ, có thể là một ứng dụng cơ bản và một trò chơi cửa cơ bản.Sách được đề xuất để xây dựng máy chủ shell/BBS

Tôi thực sự không cần trợ giúp về lập trình (ít nhất là chưa), nhưng tôi đã gặp khó khăn trong việc tìm kiếm tài nguyên tốt để giúp tôi. Những gì tôi đang tìm kiếm là một cuốn sách hay về lập trình shell (không phải viết script, nhưng thực sự lập trình shell từ đầu, và các tương tác khác nhau của nó với hệ thống bên dưới), và một cuốn sách hay về cách thêm chức năng telnet. tôi muốn sử dụng máy tính của mình làm máy chủ và cho phép một vài người dùng khác kết nối để kiểm tra xem hệ thống của tôi có hoạt động không. Tôi hiện đang đọc Sans "Teach Yourself TCP/IP trong 24 giờ" đã chứng tỏ hữu ích hợp lý cho ai đó có hiểu biết tốt về CS, thuật toán, cấu trúc dữ liệu, v.v. Tôi chỉ cần một cái gì đó cụ thể hơn một chút.

Chỉ một chút nền tảng- Tôi là sinh viên năm thứ hai Khoa học Máy tính tại Purdue và tôi đang thực hiện nghiên cứu độc lập này để gắn kết với nhau nhiều khái niệm mà tôi đã học được từ trước tới nay. Nếu bất cứ ai có thể chỉ cho tôi một số nguồn tài nguyên thực sự xuất sắc, nó sẽ được đánh giá rất nhiều.

Vui lòng cho tôi biết nếu bạn cần thêm chi tiết hoặc làm rõ để chỉ cho tôi hướng tới tài nguyên thích hợp. Lưu ý rằng tôi sẵn sàng mua bất kỳ cuốn sách nào có sẵn nếu nó chứng tỏ là một tài nguyên có giá trị. Ngoài ra, tôi đã thử tìm kiếm các tài nguyên này trên SO, nhưng hầu hết các câu hỏi dường như quá cụ thể (thường là về các vấn đề mà ai đó đang gặp phải khi triển khai vỏ, v.v.); Tôi cũng thích các khuyến nghị cá nhân từ các lập trình viên giàu kinh nghiệm trong lĩnh vực này.

Xin cảm ơn trước. -S

PS- Để làm rõ "BBS" cho các lập trình viên trẻ hơn - đây là những gì đã tồn tại trước Internet. Hệ thống bảng thông báo trên trường học cũ, quay số, văn bản dựa trên modem 2400 baud. Tôi rõ ràng không thể tái tạo chính xác, nhưng hy vọng của tôi là tổng hợp trải nghiệm bằng telnet hoặc SSH. Xem http://www.telnetbbsguide.com/ để biết thêm thông tin về BBS telnet. Tuy nhiên, tôi cần phải có khả năng viết phần mềm của riêng mình, chỉ đơn thuần là có một phần nhỏ chức năng của BBS thực. Nhưng, tôi không chắc chắn những gì tôi cần phải được tìm kiếm để tìm hiểu thêm về điều này - tôi có nên nhìn vào cuốn sách máy chủ, sách mạng, hoặc cái gì khác hoàn toàn?

PPS- Làm rõ thêm. Hầu hết những cuốn sách tôi đã thấy trên BBS là những cuốn sách về cách thiết lập, chạy và duy trì BBS như một sysop, sử dụng phần mềm có sẵn. Những gì tôi cần làm là viết phần mềm bản thân mình. Tôi có thể sẽ sử dụng telnet, vì nó dường như dễ dàng hơn để sử dụng SSH đó (ít nhất, để chương trình-xin vui lòng sửa tôi nếu tôi sai về điều này). Tôi là bạn của tôi khuyên tôi nên có một cuốn sách về các mẫu, và cũng là một bản sao của "Người lập trình thực dụng". Xin vui lòng cho tôi biết nếu anh ta chỉ cho tôi đúng hướng cho những gì tôi muốn xây dựng. Ngoài ra, cũng giống như một lưu ý phụ, tôi có kiến ​​thức khá tốt (nếu cơ bản) về lập trình, thuật toán và cấu trúc dữ liệu - nhưng hoàn toàn không có kiến ​​thức về mạng hoặc máy chủ và tôi không thực sự chắc chắn mình thực sự cần biết bao nhiêu để bắt đầu phát triển dự án này. Vâng, tôi biết một chút về mạng, không phải từ quan điểm của một lập trình viên. Cảm ơn tất cả các bạn một lần nữa.

Trả lời

1

Tôi chưa bao giờ thấy một cuốn sách về lập trình vỏ, mặc dù tôi rất vui khi biết rằng có một thứ như vậy.

Nhưng thực sự, không phải lập trình trình bao cơ bản là list of features mà bạn sẽ thực hiện VÀ thứ tự đánh giá về cách diễn giải đầu vào của người dùng? Bạn có thể thấy một bài viết tốt về thứ tự đánh giá trong 'Lập trình vỏ cổ điển', Robbins và Beebe VÀ trong 'C Shell Field Guide' (Andersons) và những người khác.

Tất nhiên, bạn sẽ học được rất nhiều bằng cách tìm hiểu mã nguồn sẵn có cho các shell, bash, z shell, ksh.

Xin lỗi, tôi không có bất kỳ ý tưởng nào về phần máy chủ BBS trong câu hỏi của bạn. Khi bạn tìm thấy cuốn sách SAMS hữu ích, tôi khuyên bạn nên xem xét W. Richard Stevens' Network Programming Series of books, đó là 99% lập trình mạng Unix và có thể không phải là những gì bạn muốn.

(Cuối cùng, hãy xem xét thay đổi thẻ đề xuất cho bash hoặc zsh, vì nhiều người đóng góp thường xuyên tại SO kiểm tra câu hỏi mới bằng cách tìm kiếm trên thẻ 'của họ'. Những người có thể trả lời câu hỏi của bạn tốt hơn có thể không đọc)

Tôi hy vọng điều này sẽ hữu ích.

+0

Tôi chỉ có thể nghĩ ra một ý nghĩa cho từ viết tắt BSS ở đó;) (winkwink) +1 để viết đẹp – sehe

+0

argv! Đã hiểu tôi! ; -> Và +1 của bạn có ý nghĩa rất nhiều. Cảm ơn! (Bây giờ sửa chữa trong văn bản). – shellter

+0

Nơi tạm trú- cảm ơn phản hồi của bạn. Tôi đã thêm một chút rõ ràng hơn về những gì tôi có ý nghĩa của BBS, vì mọi người đã không thực sự sử dụng những từ cuối những năm 80/đầu những năm 90. Có lẽ bạn có thể đưa ra một đề xuất khác - tôi quen thuộc hơn với C, nhưng tôi biết tôi sẽ cần phải học C++ - vì vậy, câu hỏi trở thành, tôi có nên viết điều này trong C hoặc trong C++ không? Cảm ơn một lần nữa. -S –

2

Có sách về lập trình vỏ unix! được viết bởi không ai khác hơn Axel Tobias-Schreiner, tác giả lừng lẫy của ooc.pdf, "Hướng đối tượng C" PDF (Google, nhưng đừng quên tên của anh ấy!).

Nó được gọi là "Sử dụng C với Curses, Lex và Yacc: Xây dựng một cửa sổ Shell cho Unix System V", Prentice Hall, 1990; và nó thực sự cần được xem xét Phần 3 của saga bắt đầu vào K & R"Ngôn ngữ lập trình C", và tiếp tục trong nửa thứ hai của K & P"The UNIX Lập trình Môi trường".

Vỏ sách mô tả là "hệ thống cửa sổ" kiểu lừa đảo hoạt động bên trong thiết bị đầu cuối (sử dụng lời nguyền), bao gồm trình xem tệp văn bản và trình thông dịch ngôn ngữ lệnh chạy các lệnh bên trong các "cửa sổ này ". Ngôn ngữ lệnh sử dụng lex và yacc để thực hiện lexer/parser. Vì vậy, cuốn sách đóng vai trò giới thiệu về những thứ như vậy, một chương trình chữ viết lớn trong C, và các đoạn trích để sử dụng các lời nguyền, xử lý các tùy chọn phức tạp và triển khai một ngôn ngữ lập trình bằng cách sử dụng các công cụ unix tiêu chuẩn.

Các vấn đề liên quan