كتب ومجلات

كتاب: The Linux Programming Interface

تم أرشفة هذا المحتوى


تقرير عن 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

‫13 تعليقات

  1. كتاب راائع واهم شي انه ياخدك من الصفر

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

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

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

    شكرا حبيبي على الريفيو الرائع ونتمنى ان شاء الله ان نصل الى مثل هذا في العلم واكثر فنحن لسه مبتدئيين

  2. شكرا جزيلا أخي عبد المهيمن على الذي تقدموه هنا
    منذ عدة سنوات كنت قد تعلمت بعض مبادئ في لغة c# ,ماهو الكتاب الذي تنصح به قبل هذا للمبتدئين تماما,وبأي كتاب تنصح من يريد أن يتعلم البرمجة من الصفر وبأي لغة عليه أن يبدأ.

  3. @hasn: لحسن حظي أني ما كنت اكتب وقت الحفظ D: .. لا تذكرني!

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

    من فترة ملاحظ عدد لا بأس به في iSecur1ty مهتم بتعلم البرمجة لذلك أنا و الأخ زيد بدأنا بتحضير مفاجئة سنبدء بها قريباً إن شاء الله 😉

  4. أكثر ما يعجبني فيك هو اهتمامك بنفسك وبتطوير قدراتك

    وفقك الله وجعلك ذخراً للأمة العربية والإسلامية

  5. 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

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

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

    وشكرا ً ^_^

  7. @Silver: اللغات التفسيرية مثل روبي وبايثون مفيدة أكثر فالانتاجية بهم أسرع بكثير وعند البرمجة تركز على الأداة التي تبرمجها ولا داعي للتفكير بكثير من الأمور المنخفضة المستوى كما هو الحال بلغة سي. لكن إذا أردت تعلمها فهي مفيدة بلا شك.

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

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

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

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

  8. مشكور على الكتاب اخونا المبدع عبدالمهيمن

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

    ولدي سؤال اخر هل تعلم الباك تراك وكل امور الحماية سيفيد في تعلم الشبكات لاني ناوي اخد دورة mcse ثم ارقيها ب mctip ؟؟؟؟؟
    واريد رايك اخي في هذا الموضوع ورايك اذا كان هناك ترتيب افضل في تعلم الشبكات ؟؟؟؟؟؟؟؟؟
    مع العلم اني درست a+ و network+

  9. 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

  10. انا تعلمت c++ ومكاتبها فهل بامكاني استخدام الكتاب بال c++
    وماهي الاشياء التي تنصحني بها؟
    وشكرا …..

  11. السلام عليكم ورحمة الله وبركاتة وبعد
    اتمنا لك التوفيق والنجاح …. احببت ان اشارك موضوعك ولو بشكل بسيط .
    بعد قراءة الكتاب كاملا … بكل محتوياته …. لا تعتمد على الكتاب انه بشكل كامل …. كل فصل من فصوله اعط محتوى بسيط .

    ما دمت انك اتخذت قرار في تعلم لغة السي …. فقرارك صائب .. ولن تندم يوما انك وضعت جل وقتك لتعلمها واتقانها .

    هناك اشخاص كثير يلخبط بين مسألة البرمجة بلغة السي على انظمة الدوس .. او اعني انظمة الوندز …. وبين انظمة يونكس او لينكس .
    لغة السي بشكل عام …. مفهومها العام .. هو اتقان استخدام هيكلها …. بغض النظر عن اتقان التعامل مع المكتبات ودوالها .

    انا شخصيا .. لا اتعامل مع السي الا على منصة لينكس منذُ ١٣ سنة . وانصح بذلك .. ليس لان من يتعلمها على تلك المنصه انه سيكون اكثر احترافيا
    على من يتعامل بها على منصات اخرى كنظام وندز . … لا … وألف لا … لآن لغة السيء مفهومها ليس باستخدام المكتبات كما يعتقد الكثيرين .
    فكرتها ولبها اكبر من كذا .

    بأختصار … اتمنا ان تتعمق في اللغة نفسها … بغض النظر عن إي منصه تستخدم تلك اللغه عليها .
    هذه المواضيع :

    Decision Making
    Loop Controls
    Array
    Functions
    Pointer
    Storage Classes
    String Handling
    Preprocessor
    Bitwise Operator
    Structure & Union
    File Handling
    جميع الكتب التي تشرحها …. تكون بشكل ايصال فكرة .. لكن .. حاول التلاعب معها بشكل كبير .. والتعمق فيها . لان هناك كتب ادفانس فيها … والتي تشعر انها ليست مجرد خطوة وانتهى كل شيء ..بل هناك خطوات.. والتي تساعدك في فتح أبواب كبيرة . وطالما انك تميل قليلا
    للشبكات …. ستكون اللغة بين يديك … سترسم خوازميات في ذاكرتك .. تستطيع من خلالها .. كتابة كود عميق جدا .. بذكاء انت لم تكن تعلم انك ستصل الى هذا المستوى .

    وفي الاخير ،، انا لست هنا … ارسم لك الخطة في تعلم هذه اللغة .. انما اكتب شيئا متعقما فيه … واستخدم تلك اللغة حتى الان في مجال عملي .. فيما يخص الهاردوير بشكل خاص .

    سيأتي اليوم الذي لا يعيقك إي شيء … حتى مسألة التعامل مع اي درايفر او إي سستم .. حينما تجد ان لغة السي قد اصبحت هي رفيقة دربك .

    تقبل تحياتي ،،،،،،،

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى