كتاب: The Linux Programming Interface
تقييم المستخدمين: / 9
عاديممتاز 
الكاتب عبدالمهيمن الآغا   
الأحد, 21 نوفمبر 2010 02:11

تقرير عن The Linux Programming Interface. كتاب جديد يتكلم عن البرمجة في بيئة Linux و Unix بإستخدام لغة C بشكل مفصل جداً وبأسلوب بسيط مع كثير من الأمثلة. لا أبالغ إن قلت أن هذا أفضل كتاب وجدته في هذا المجال فالكاتب Michael Kerrisk هو نفسه المسؤول عن Linux man pages بذل جهد خرافي في كتاب يزيد عن 1500 صفحة!

The linux programming interface

 

بعدما بدأت بتعلم لغة C والإنتهاء من الأساسيات إخترت لينوكس طبعاً ليكون البيئة التي سأكتب بها برامجي وفي هذه المرحلة كان علي إختيار كتاب موجه للبرمجة في نظام لينوكس وبيئة يونكس بشكل عام لكي أستفيد من مكتبات النظام نفسه وأستخدم System calls و Linux API لأتمكن من كتابة أدوات فعالة بلغة C عوضاً عن إعادة إختراع كل شيء من الصفر. بدأت البحث عن كتاب واضح وشامل يغطي الأمور التي أحتاجها ولكي أستخدمه كمرجع أيضاً كوني لم أتعمق كثيراً بلغة سي بعد. أثناء بحثي تذكرت أن No Starch Press أرسلوا لي إيميل من فترة يحتوي على آخر الكتب التي قاموا بنشرها من ضمنهم كتاب يتكلم عن البرمجة في بيئة لينوكس وبعد الإطلاع على فهرس الكتاب, الأمثلة المنشورة, معلومات المؤلف والمراجعات الإيجابية الكثيرة التي كتبها مهندسين من أكبر الشركات من ضمنهم Google, Novell وحتى مؤلفي كتب سابقين وباحثين بالجامعة لم أتردد من طلبه فحتى تاريخ كتابة هذا الخبر هذا أحدث كتاب يتكلم عن البرمجة بلغة C في بيئة لينوكس ومتوافق مع كيرنل 2.6.35 ومكتبة glibc 2.12 نشر في شهر أكتوبر 2010. بمعنى آخر هذا ما كنت أبحث عنه تماماً.

أول ما وصلني الكتاب بدأت القراءة أكثر فيه والتدقيق بأسلوب الشرح لأن هذه النقطة مهمة جداً بالنسبة لي خصوصاً للغة برمجة مثل سي!, الجميل أنه لم يتطلب أي خبرة في برمجة الأنظمة فكل ما تحتاجه هو فهم بسيط لنظام لينوكس وسطر الأوامر ومعرفة بأساسيات لغة سي (هذا الكتاب ليس مناسب للأشخاص الذين لا يعلمون شيء عن لغة C بعد) مع العلم أن الكتاب سيبدء مع القارء بالتكلم عن تاريخ UNIX و GNU/Linux ولغة C ثم في الفصل الثاني والثالث عن بعض المبادء والأساسيات في لينوكس وبرمجة الأنظمة ثم سيبدء مباشرة بطرق التعامل مع الملفات, العمليات, الذاكرة, المجموعات والمستخدمين, threads ويتابع مع جميع الأمور التي قد تحتاجها عن البرمجة في بيئة لينوكس وصولاً لأهم قسم بالنسبة لي وهو برمجة الشبكات والتعامل مع الـ sockets.

 

The linux programming interface - iSecur1ty

 

محتوى الكتاب:

Chapter 1: History and Standards
Chapter 2: Fundamental Concepts
Chapter 3: System Programming Concepts
Chapter 4: File I/O: The Universal I/O Model
Chapter 5: File I/O: Further Details
Chapter 6: Processes
Chapter 7: Memory Allocation
Chapter 8: Users and Groups
Chapter 9: Process Credentials
Chapter 10: Time
Chapter 11: System Limits and Options
Chapter 12: System and Process Information
Chapter 13: File I/O Buffering
Chapter 14: File Systems
Chapter 15: File Attributes
Chapter 16: Extended Attributes
Chapter 17: Access Control Lists
Chapter 18: Directories and Links
Chapter 19: Monitoring File Events
Chapter 20: Signals: Fundamental Concepts
Chapter 21: Signals: Signal Handlers
Chapter 22: Signals: Advanced Features
Chapter 23: Timers and Sleeping
Chapter 24: Process Creation
Chapter 25: Process Termination
Chapter 26: Monitoring Child Processes
Chapter 27: Program Execution
Chapter 28: Process Creation and Program Execution in More Detail
Chapter 29: Threads: Introduction
Chapter 30: Threads: Thread Synchronization
Chapter 31: Threads: Thread Safety and Per-Thread Storage
Chapter 32: Threads: Thread Cancellation
Chapter 33: Threads: Further Details
Chapter 34: Process Groups, Sessions, and Job Control
Chapter 35: Process Priorities and Scheduling
Chapter 36: Process Resources
Chapter 37: Daemons
Chapter 38: Writing Secure Privileged Programs
Chapter 39: Capabilities
Chapter 40: Login Accounting
Chapter 41: Fundamentals of Shared Libraries
Chapter 42: Advanced Features of Shared Libraries
Chapter 43: Interprocess Communication Overview
Chapter 44: Pipes and FIFOs
Chapter 45: Introduction to System V IPC
Chapter 46: System V Message Queues
Chapter 47: System V Semaphores
Chapter 48: System V Shared Memory
Chapter 49: Memory Mappings
Chapter 50: Virtual Memory Operations
Chapter 51: Introduction to POSIX IPC
Chapter 52: POSIX Message Queues
Chapter 53: POSIX Semaphores
Chapter 54: POSIX Shared Memory
Chapter 55: File Locking
Chapter 56: Sockets: Introduction
Chapter 57: Sockets: UNIX Domain
Chapter 58: Sockets: Fundamentals of TCP/IP Networks
Chapter 59: Sockets: Internet Domains
Chapter 60: Sockets: Server Design
Chapter 61: Sockets: Advanced Topics
Chapter 62: Terminals
Chapter 63: Alternative I/O Models
Chapter 64: Pseudoterminals

Appendix A: Tracing System Calls
Appendix B: Parsing Command-Line Options
Appendix C: Casting the NULL Pointer
Appendix D: Kernel Configuration
Appendix E: Further Sources of Information
Appendix F: Solutions to Selected Exercises

أو يمكن الإطلاع على المحتوى بشكل مفصل من هنا.

إذا كنت مهتم بالبرمجة بلغة C في بيئة لينوكس أو يونكس وتريد تعلّم الأساليب الصحيحة والآمنة لكتابة البرامج أنصحك بهذا الكتاب مع العلم أن سعره ليس رخيص $99.95 لكن بصراحة مقابل المعلومات الموجودة فيه أجده يستحق هذا السعر فالكتاب يعتبر الأحدث حالياً وهو مرجع كامل يحتوي على جميع المعلومات التي أحتاجها بشكل منسّق مما سيوفّر علي ساعات من البحث في الانترنت والتجربة وهذا يعني أني سأتمكن من البرمجة بشكل أسهل وأسرع.

موقع الكتاب: The Linux Programming Interface

صفحة شراء الكتاب: No Starch Press

التعليقات (12)Add Comment
hasn
الله يزيدك علم
أرسلت بواسطة: hasn في November 21, 2010
كتاب راائع واهم شي انه ياخدك من الصفر

لدي لك اقتراح يفيدك وبنفس الوقت تفيد غيرك

تذكر ايام الدراسة لما بيقولو وانت تقرا اكتب الي تقراه او اكتب المعلومة وانت تقرا علشان ترسخ في ذهنك
هذا ما ارديك ان تفعله ،، ان تقرا وتلخص في ورقه ووهكذا حتى تنهي الكتاب ثم قم بطباعة الورق كله الي كنت تكتب فيه ووضعه في ملف pdf . :)

بس لخص بلعربي xd


شكرا حبيبي على الريفيو الرائع ونتمنى ان شاء الله ان نصل الى مثل هذا في العلم واكثر فنحن لسه مبتدئيين
عمر خرسه
ما هو الكتاب الذي تنصح به لمن لا يعرف شيئا عن c
أرسلت بواسطة: عمر خرسه في November 21, 2010
شكرا جزيلا أخي عبد المهيمن على الذي تقدموه هنا
منذ عدة سنوات كنت قد تعلمت بعض مبادئ في لغة c# ,ماهو الكتاب الذي تنصح به قبل هذا للمبتدئين تماما,وبأي كتاب تنصح من يريد أن يتعلم البرمجة من الصفر وبأي لغة عليه أن يبدأ.
عبدالمهيمن الآغا
...
أرسلت بواسطة: عبدالمهيمن الآغا في November 21, 2010
@hasn: لحسن حظي أني ما كنت اكتب وقت الحفظ D: .. لا تذكرني!

@عمر: C# لغة ولغة C لغة اخرى مختلفة تماماً. يوجد عدة كتب لتعليم لغة سي للمبتدئين. شخصياً وجدت C: How to program 6th edition ممتاز وهذا الذي اخترته أنا وهو بحد ذاته مرجع آخر بحدود 1000 صفحة بالاضافة طبعاً للمصادر على الانترنت اذا اردت الزيادة...

من فترة ملاحظ عدد لا بأس به في iSecur1ty مهتم بتعلم البرمجة لذلك أنا و الأخ زيد بدأنا بتحضير مفاجئة سنبدء بها قريباً إن شاء الله ;)
Silver
....
أرسلت بواسطة: Silver في November 22, 2010
ماشاء الله ..

وفقك الله اخي عبدالمهيمن .

له تعلم لغة C مفيد لل Pentest ???

عادل
...
أرسلت بواسطة: عادل في November 22, 2010
أكثر ما يعجبني فيك هو اهتمامك بنفسك وبتطوير قدراتك

وفقك الله وجعلك ذخراً للأمة العربية والإسلامية
rootsystem2010
ممتاز
أرسلت بواسطة: rootsystem2010 في November 22, 2010
مشاء الله مشاء الله.....فى انتظارك جديدك انت و الاخ زياد
Ali Bawazeer
very interesting ..!!
أرسلت بواسطة: Ali Bawazeer في November 22, 2010
thanks abdo
but i'd like to ask you , if i buy this book online they will deliver it to me ??
in everywhere in the world
----
the second thing for who is asking for good book to learn C from the basic i advise all of you to have a look at this book (Let us in C )..it's really nice book for the beginner

and abdo almahen i wannt you to upload this book how to program 6th edition

M.B.O
...
أرسلت بواسطة: M.B.O في November 22, 2010
بصراحه عند محاولتي البرمجة بلغة C على اللينوكس واجهة صعوبات كثيرة بل مشاكل مستعصية جدا ً
ليس فقط مع لغة C بل حتى مع لغات اخرى مثل PHP و HTML
اول مشكلة واجهتني في لغة PHP هي مشكلة صلاحيات root وما ادراك ما صلاحيات الروت
ولاني مبدئ في اللينوكس صراحه يئست من المشكلة وانتقلت للوندوز للبرمجة بهذه اللغة كافضل خيار
ثم ايضا ً واجهتني مشاكل اخرى مع لغة C اولها باختيار محرر compiler مناسب لكتابة الاكواد حملت الكثير من المحررات ولكن معظمها تكتب الكود وكانك تكتب نص عادي بدون الوان ومافي خصائص ولا حتى تكمله لكلمة بسيطة مثل بعض المحررات ,, وتقبلت الوضع وجلست اكتب الاكواد بدون الوان ,, لكن يومين فقط وبدءت المشاكل تظهر
دائما ً البرنامج يطلع لي Error رغم ان الاكواد صحيحه لكن بعد ذلك اكتشفت ان المشكلة في المحرر نفسه ,, ويلا روح جيب محرر ثاني ونفس المشكلة شوية والا يطلع لك اخطاء ,, وبصراحه هذه المشاكل دائما ً ما اواجهها في اللينوكس واخر مشكلة واجهتني في اللينوكس هي الواير لس وما ادراك ما الواير لس ,, بعدها قررت ان اللينوكس نظام يبغاله جلسه ومزاج طوييييييييييييييييييييل
لذلك قررت ارجع للوندوز لانه اسهل ويختصر عليك كثير من الجهد هذا غير ان البرمجة فيه غير عن اللينوكس اولها با المحررات الي تفتح النفس وثانيا ً قلة المشاكل خصوصا ً لما تتعامل مع لغة برمجة مثل C

خلاصة النياحة الي با الاعلى كلها ,, ابغى طلب من خبراء اللينوكس مثل ما دلونا على الكتاب الحلو هذا , يدلونا على توزيعه حلوة للبرمجة بدون تعقيدات ولا روح وتعال وايضا ً تدعم 64 بت ,, وايضا ً لو مافيها كلافة يدلونا على محرر كذا حلو يفتح النفس تكون البرمجة فيه اسهل ,, لان صراحه تعبت من كثرة اللف والدوران ,,
والانحراف عن الهدف ,,

وشكرا ً ^_^
عبدالمهيمن الآغا
...
أرسلت بواسطة: عبدالمهيمن الآغا في November 22, 2010
@Silver: اللغات التفسيرية مثل روبي وبايثون مفيدة أكثر فالانتاجية بهم أسرع بكثير وعند البرمجة تركز على الأداة التي تبرمجها ولا داعي للتفكير بكثير من الأمور المنخفضة المستوى كما هو الحال بلغة سي. لكن إذا أردت تعلمها فهي مفيدة بلا شك.

@Ali Bawazeer: أجل يمكنك شراء الكتاب من موقعهم وسيرسلوه لك. يمكنك أن تراسلهم لتتأكد من الدولة. بخصوص كتاب C: How to program فأنا أملك النسخة الورقية وكما تعلم (أو أفترض أنك تعلم) يمنع تداول أي مواد لها حقوق ملكية أو فكرية بالموقع =)

@M.B.O: ما حاجة php لصلاحيات رووت وبالمناسبة البرمجة بكل من php و c أفضل بكثير على لينوكس من ويندوز.. ويندوز سأستخدمه للبرمجة إذا كنت أبرمج بلغة C# مثلا أو اطار دوت نت بشكل عام بغير ذلك لينوكس أفضل لك.

بالنسبة للـ compiler ففي لينوكس هو gcc طبعاً أما ويندوز يمكنك اختيار cygwin او mingw ومحرر النصوص الأفضل برأيي Notepad++ في ويندوز أو gedit / kate في لينوكس. أما اذا أردت بيئة تطويرية (IDE) لتساعدك على كتابة الأكواد لديك eclipse أو netbeans.

بخصوص التوزيعة أنا أستخدم فيدورا بشكل أساسي وأختبر أبونتو على اللابتوب الآخر.. شخصياً ارتحت لفيدورا أكثر! رأيي شخصي طبعاً =)
prince
كتاب مفيد
أرسلت بواسطة: prince في November 22, 2010
مشكور على الكتاب اخونا المبدع عبدالمهيمن

بالنسبة لتوزيعه الاوبنتو اخي برايك ماهي التوزيعة الافضل 10.4 ام 10.10 لاني كما عرفت ان النسخة الجديدة بها مشاكل

ولدي سؤال اخر هل تعلم الباك تراك وكل امور الحماية سيفيد في تعلم الشبكات لاني ناوي اخد دورة mcse ثم ارقيها ب mctip ؟؟؟؟؟
واريد رايك اخي في هذا الموضوع ورايك اذا كان هناك ترتيب افضل في تعلم الشبكات ؟؟؟؟؟؟؟؟؟
مع العلم اني درست a+ و network+
Ali Bawazeer
!!
أرسلت بواسطة: Ali Bawazeer في November 22, 2010
thanks abdo for your replying
and i know that it's not allowed in your website just i'm just asking for a link from amazon or any commercial site because when i was looking for it i got so many books carried the same name

thanks in advance
yahyai0
استخدام c++
أرسلت بواسطة: yahyai0 في April 06, 2011
انا تعلمت c++ ومكاتبها فهل بامكاني استخدام الكتاب بال c++
وماهي الاشياء التي تنصحني بها؟
وشكرا .....

أضف تعليق
يجب عليك الاشتراك بالموقع لتتمكن من كتابة التعليقات, الاشتراك مجاني ويستغرق بضع ثوان فقط!
اذا كنت مشترك مسبقا في الموقع فضلاً قم بتسجيل الدخول.

busy
 

SecurityTargets