لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 01/04/24 في كل الموقع
-
الإصدار 1.0.0
14673 تنزيل
لا يزال تعلم البرمجة نفسه مفيدًا لكثير من مستخدمي الحواسيب حتى لو كانوا لن يكتبوا برامج بأنفسهم، ذلك أن فهم كيفية تفكير الحواسيب معين على جعل التطبيقات أكثر منطقية وصديقة للمستخدم، فكثير من البرامج تسمح بتخصيصها أو تعديلها عن طريق كتابة بعض البريمجات الصغيرة التي تسمى بالشيفرات الجامعة أو الماكرو macro، وتلك يكتبها المستخدم حتى لو لم يكن مبرمجًا. إضافة إلى أن لدينا الويب بما فيه من فرص لإنشاء موقعك الخاص الشخصي أو التجاري، وإن فعلت ستجد أنك محتاج في مرحلة ما إلى إضافة بعض الخصائص الديناميكية لصفحاتك، وهذا من البرمجة لا شك، ثم إن الإنترنت والويب يحفزان المرء على الاهتمام العام بالحواسيب، وسيقود ذلك الاهتمام لا محالة إلى الرغبة في التحكم والسيطرة على ما يراه المرء فيهما، وما ذلك مرة أخرى إلا برمجة! هذا الكتاب مترجم عن الكتاب Learning to Program لكاتبه Alan Gauld وهو مبرمج شبه متقاعد بخبرة تصل إلى أربعين عامًا في البرمجة، ويُعد الكتاب من أفضل المراجع وأوضحها لتعلم البرمجة وقد اختارته أكاديمية حسوب بعناية لنقله للعربية. سنتحدث في الكتاب عن النظرية الأساسية التي بنيت عليها برمجة الحواسيب، وبعض من تاريخها، والتقنيات الأساسية المطلوبة لحل المشاكل التي تواجهنا كمبرمجين، لكن لن نتعمق بحيث نشرح تقنيات أو تفاصيل خاصة بلغة برمجة بعينها، بل سنستخدم عدة لغات برمجة كي ترى بنفسك أن كل لغة تمتاز عن غيرها في مجال بعينه أو مهام بعينها، لكن مع هذا فأغلب محتوى الكتاب سيكون بلغة اسمها بايثون Python، وكذلك سنذكر في الكتاب لغتي برمجة إضافيتين للغة بايثون منهما لغة اسمها جافاسكربت JavaScript كلغات بديلة، وذلك لبيان أن المفاهيم والتقنيات الأساسية ستعمل بغض النظر عن اللغة التي تستخدمها، وبمجرد أن تتقن الكتابة بلغة ما تستطيع الانتقال إلى غيرها بسهولة في بضعة أيام. وإن سبب اختيارنا للغة بايثون والتركيز عليها في شرح هذا الكتاب أنها سهلة التعلم، فبنيتها اللغوية بسيطة وبها مزايا قوية مدمجة فيها بنفس الوقت، كما تدعم كثيرًا من أنماط البرمجة، بداية من تلك البسيطة إلى المتقدمة، إضافة إلى أنها تعمل على المنصات على اختلافها، من يونكس إلى ويندوز إلى ماك وغيرها، وأخيرًا فإن لها مجتمعًا لطيفًا ومستعد للمساعدة من مستخدميها، وكل ذلك مهم للمبتدئ الراغب في تعلم البرمجة. يستهدف الكتاب القارئ الذي يعلم كيف يستخدم نظام التشغيل الذي لديه سواء كان ويندوز أو ماك أو لينكس أو غيرها رغم أن غير المحترفين لتلك النظم سيتمكنون من التعلم أيضًا وإن كان بوتيرة أبطأ قليلًا، كما نتوقع أن يفهم القارئ بعض المفاهيم الرياضية الأساسية مثل حساب الأشكال البسيطة والإحداثيات الهندسية والمجموعات وبعض الجبر، أي في مستوى طالب الصف الثاني الثانوي مثلًا. يمكنك قراءة الكتاب على شكل فصول منشورة على موقع أكاديمية حسوب مباشرةً إن كنت تحب القراءة على المتصفح مباشرة، وتجد الفصول مجمعة تحت وسم "تعلم البرمجة" وإليك روابطها تاليًا: ما هي البرمجة ومتطلبات تعلمها؟ بداية رحلة تعلم البرمجة التسلسلات البسيطة في البرمجة مدخل إلى البيانات وأنواعها: أنواع البيانات الأساسية مدخل إلى البيانات وأنواعها: التجميعات Collections بعض التسلسلات النصية المهمة لتعلم البرمجة الحلقات التكرارية في البرمجة أسلوب كتابة الشيفرات البرمجية وتحقيق سهولة قراءتها كيفية قراءة البرامج لمدخلات المستخدم مقدمة في البرمجة الشرطية البرمجة باستخدام الوحدات التعامل مع الملفات في البرمجة كيفية التعامل مع النصوص في البرمجة كيفية التعامل مع الأخطاء البرمجية فضاءات الأسماء Namespaces في البرمجة التعابير النمطية RegEx في البرمجة البرمجة كائنية التوجه object oriented programming البرمجة الحدثية Event Driven Programming المساقة بالأحداث برمجة الواجهات الرسومية باستخدام Tkinter مفهوم التعاودية Recursion مقدمة إلى البرمجة الوظيفية Functional Programming دراسة حالة برمجية التعامل مع قواعد البيانات التواصل مع نظام التشغيل عبر بايثون التواصل بين العمليات في البرمجة تواصل البرامج والعمليات البرمجية عبر الشبكة كيفية التعامل مع الويب برمجة عملاء ويب باستخدام بايثون كيفية كتابة تطبيقات الويب استخدام أطر العمل في برمجة تطبيقات الويب: فلاسك نموذجا البرمجة المتزامنة وفائدتها في برمجة التطبيقات1 نقطة -
الإصدار 1.0.0
24386 تنزيل
تسبق كل عملية تنفيذية عملية تصميمية تخطيطية مثل عملية تخطيط أي بناء ودراسته وتحليله ورسمه على المخططات قبل البدء ببنائه وتنفيذه على الأرض وكذلك الحال مع قواعد البيانات فقبل تنفيذها برمجيًا، يكون هنالك مرحلة تصميمية يجري فيها تصميم قواعد البيانات وتخطيط جداولها والأعمدة التي تحتويها وأنواع البيانات فيها والروابط الرابطة بينها والقيود المقيدة لها وهكذا، فلعملية التصميم تلك أهمية كبيرة لأي قاعدة بيانات، ولا يكاد يخلو أي نظام برمجي يتعامل مع البيانات من قاعدة بيانات لذا لابد من إجراء تصميم متين مناسب لقاعدة البيانات التي سيُبنى عليها النظام. يعد موضوع تصميم قواعد البيانات مادة أساسية تدرَّس في السنوات الأولى من تخصص علوم الحاسوب والتخصصات المتعلقة بهندسة الحاسوب والبرمجيات في الجامعة ولابد من تعلم الموضوع ودراسته قبل البدء بتعلم كيفية تنفيذ قاعدة بيانات برمجيًا، فلا يمكن بناء قاعدة بيانات قوية متينة الارتباطات سليمة القيود موحَّدة عديمة التكرارات دون دراسة موضوع التصميم نظريًا وإتقانه عمليًا وذلك بتصميم قواعد بيانات نموذجية والإطلاع على تصميمات أخرى لقواعد بيانات صممها مهندسون أكفَّاء. يشرح هذا الكتاب عملية تصميم قاعدة بيانات شرحًا موجزًا غير مخل، إذ يبدأ أولًا بتغطية كل المفاهيم المتعلقة بقواعد البيانات بدءًا من فكرة قاعدة البيانات بالأصل واختلافها عن أي نظام تخزين بيانات، وحتى العملية التصميمية وعمليات نمذجة البيانات وتمثيلها وعمليات الربط بين جداول البيانات وما يقوم عليها ثم يبني بعدها على ذلك كله شارحًا عملية تصميم قواعد البيانات وتطويرها حتى رسم مخطط ER النهائي لجداول قاعدة البيانات، وهو مخطط نموذج الكيان والعلاقة الواصف لقاعدة البيانات وجداولها وكل تفصيلة فيها، ثم يشرح بعدها كيفية تنفيذ المخطط الناتج عبر لغة SQL ولا يغيب عنه التطرق إلى أنظمة إدارة قواعد البيانات DBMS مع ذكر أشهرها. هذا الكتاب مترجم عن كتاب Database Design - 2nd Edition "تصميم قاعدة بيانات - الإصدار الثاني" لصاحبيه إيدرين وات Adrienne Watt ونيلسون إنج Nelson Eng وهو مبني في الأصل على عدة مصادر ركيزتها كتاب Database Design للمؤلف الأول إيدرين وات، فالمصادر المبني عليها كل فصل مدرجة في نهايته ويمكنك الرجوع إلى الكتاب الأجنبي الأصل إن أردت الإطلاع عليها، كما أن هذا الكتاب الأجنبي يُعتمد في بعض الجامعات لتدريس مادة تصميم قواعد البيانات في فصول قسم علوم الحاسوب وتصميم البرمجيات. انتبه إلى أن هذا الكتاب لا يركز على عملية تنفيذ قواعد البيانات وبرمجتها بل يركز على عملية تصميم قاعدة بيانات وكيفية نمذجتها وإن كان يتطرق إلى لغة SQL سريعًا شارحًا باقتضاب كيفية إنشاء قاعدة بيانات والعمليات الأساسية للتعديل عليها، أما إذا أردت الاستزادة والتعمق في هذا الموضوع، فننصحك بالرجوع إلى كتاب ملاحظات للعاملين بلغة SQL وكتاب الدليل العملي إلى قواعد بيانات PostgreSQL وتوثيق لغة SQL من موسوعة حسوب. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات مجموعة ضمن وسم «تصميم قواعد البيانات» وتجد روابطها تاليًا: تحليل نظام الملفات لإدارة البيانات وتخزينها واختلافه عن نظام قاعدة البيانات المفاهيم الأساسية في قواعد البيانات وتصميمها خصائص قواعد البيانات والمزايا التي تقدمها نمذجة البيانات وأنواعها في عملية تصميم قواعد البيانات مفاهيم نموذج البيانات العلائقية RDM الأساسية المهمة في تصميم قواعد البيانات نموذج الكيان والعلاقة ER لتمثيل البيانات وتخزينها في قاعدة البيانات قواعد السلامة وقيودها لضمان سلامة البيانات في قواعد البيانات نمذجة الكيان العلاقي ER عند تصميم قواعد البيانات الاعتماديات الوظيفية المستخدمة في تصميم قواعد البيانات فهم عملية التوحيد Normalization المستخدمة عند تصميم قاعدة البيانات عملية تطوير قواعد البيانات Database Development نظرة سريعة على لغة الاستعلامات الهيكلية SQL لغة معالجة البيانات DML الخاصة بلغة SQL أمثلة عملية عن كيفية تصميم قواعد البيانات1 نقطة -
1 نقطة
-
السلام عليكم انا قمت بإنهاء دوره تطوير الواجهات وانتقلت لمسات node.js مع التطبيق عل الدوره السابقه حتي لا يقل مستواي واتطور وعند بحثي عن بعض المعلومات لتعلم الباك اند وجدت أشخاص يقولون بأنه علي تعلم C++ و data structure هل هذا صحيح ؟ واريد معرفه هل تعلم الداتا استراكشر سيساعدني اثناء التعلم .1 نقطة
-
الإصدار 1.0.0
6309 تنزيل
تُعدّ هياكل البيانات data structures والخوارزميات algorithms واحدةً من أهم الاختراعات التي وقعت بالخمسين عامًا الأخيرة، وهي من الأدوات الأساسية التي لابُدّ أن يدرسها مهندسي البرمجيات. غالبًا ما تكون الكتب المتناولة لتلك الموضوعات -وفقًا للكاتب- ضخمةً للغاية، كما أنها عادةً ما تُركزّ على الجانب النظري، وتُقدِّم هذه المادة العلمية بدون سياق واضح وبدون أي حافز، فتَعرِض الهياكل البيانية واحدةً تلو الأخرى. هذا الكتاب مترجم عن الكتاب الشهير Think Data Structures لمؤلفه Allen B. Downey والذي يعد مرجعًا عمليًا في شرح موضوعي هياكل البيانات والخوارزميات اللذين يحتاج إلى تعلمهما كل مبرمج ومهندس برمجيات يتطلع إلى احتراف مهنته وصقل عمله ورفع مستواه. يحاول هذا الكتاب تنظيم الموضوعات نوعًا ما من خلال التركيز على برمجة تطبيق -برمجة محرك بحث-، ويَستخدِم هذا التطبيق هياكل البيانات بشكل مكثف، وهو في الواقع موضوع مهم وشيق بحد ذاته. في الحقيقة، سيدفعنا هذا التطبيق إلى دراسة بعض الموضوعات التي ربما لن تتعرَّض لها ببعض الفصول الدراسية التمهيدية الخاصة بمادة هياكل البيانات، حيث سنتعرَّض هنا مثلًا، لحفظ هياكل البيانات persistent data structure مثل ريدس Redis. يُقدِّم الكتاب أيضًا بعض الأساسيات التي تُمارَس عادةً بهندسة البرمجيات، بما في ذلك نظم التحكُّم بالإصدار version control، واختبار الوحدات unit testing. تتضمَّن غالبية فصول الكتاب تمرينًا يَسمَح للقراء بتطبيق ما تعلموه خلال الفصل، حيث يُوفِّر كل تمرين اختبارات أوتوماتيكية لفحص الحل، وبالإضافة إلى ذلك، يُوفِّر الكاتب حلًا لغالبية التمارين ببداية الفصل التالي. هذا الكتاب مُخصَّص لطلبة الجامعات بمجال علوم الحاسوب والمجالات المرتبطة به، ولمهندسي البرمجيات المحترفين، وللمتدربين بمجال هندسة البرمجيات، وكذلك للأشخاص الذين يستعدون لمقابلات العمل التقنية. ينبغي أن تكون على معرفة جيدة بلغة البرمجة جافا قبل أن تبدأ بقراءة هذا الكتاب. وبالتحديد، لابُدّ أن تَعرِف كيف تُعرِّف صنفًا class جديدًا يمتدّ extend أو يرث من صنف آخر موجود، إلى جانب إمكانية تعريف صنف يُنفِّذ واجهة interface. إذا لم تكن لديك تلك المعرفة، فيُمكِنك البدء بسلسلة مدخل إلى جافا فهي مترجمة عن كتاب شهير يشرح لغة البرمجة جافا. يمكنك قراءة الكتاب على شكل فصول منشورة على موقع أكاديمية حسوب مباشرةً إن كنت تحب القراءة على المتصفح مباشرة، وتجد الفصول مجمعة تحت وسم "هياكل البيانات 101" وإليك روابطها تاليًا: طريقة عمل الواجهات في لغة جافا مدخل إلى تحليل الخوارزميات تحليل زمن تشغيل القوائم المنفذة باستخدام مصفوفة تحليل زمن تشغيل القوائم المنفذة باستخدام قائمة مترابطة تحليل زمن تشغيل القوائم المنفذة باستخدام قائمة ازدواجية الترابط تنفيذ أسلوب البحث بالعمق أولا باستخدام طريقتي التعاود والتكرار في جافا تنفيذ أسلوب البحث بالعمق أولا باستخدام الواجهتين Iterables وIterators استخدام خريطة ومجموعة لبناء مفهرس Indexer تحليل زمن تشغيل الخرائط المنفذة باستخدام مصفوفة في جافا تنفيذ الخرائط باستخدام التعمية hashing في جافا تحسين أداء الخرائط المنفذة باستخدام التعمية HashMap في جافا تحليل زمن تشغيل الخرائط المنفذة باستخدام شجرة بحث ثنائية TreeMap في جافا استخدام أشجار البحث الثنائية والأشجار المتزنة balanced trees لتنفيذ الخرائط استخدام قاعدة بيانات Redis لحفظ البيانات فهرسة الصفحات وتحليل زمن تشغيلها باستخدام قاعدة بيانات Redis البحث الثنائي Boolean search ودمج نتائج البحث وترتيبها نظرة سريعة على بعض خوارزميات الترتيب1 نقطة -
أعمل على مشروع حاليًا، واستخدم به وlocalStorage لكن في الشروحات أرى أحيانًا استخدام لـ sessionStorage وأحيانًا cookies فما الفرق ومتى استخدم كل منهم في المشروع، أنا أعلم التعريف الخاص بهم لكن الاستخدام ليس لدي دراية به ما الفائدة منهم ومتى لا ينصح باستخدامهم؟1 نقطة
-
عليك القيام بالتالي: إزالة علامات <?php المتداخلة أي الزائدة في الكود حيث نضعها في بداية كود php فقط ثم نغلق ذلك الجزء من خلال ?> استخدام PDO::fetchAll() لجلب جميع النتائج دفعة واحدة لتحسين الكفاءة. استبدال mysql_fetch_assoc() بـ foreach للتنقل عبر الصفوف المسترجعة. إغلاق الاتصال بنقل سطر connection = null خارج الحلقة لضمان الإغلاق الصحيح. التعامل مع الأخطاء بإضافة كتلة try...catch وتمكين التعامل مع الأخطاء باستخدام PDO::ATTR_ERRMODE. الكود بعد التعديل: <!DOCTYPE html> <html lang="ar"> <head> <link rel="icon" href="https://c0.klipartz.com/pngpicture/573/614/gratis-png-ng%C5%A9-hanh-s%C6%A1n-distrito-casa-apartamento-inmobiliaria-volta-redonda-venta-de-logotipos-de-bienes-raices.png" /> <title>موقع العقارات</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Tajawal:wght@300&display=swap" rel="stylesheet"> <meta charset="utf-8" /> <link rel="stylesheet" type="text/css" media="screen" href="home.css"> </head> <body> <?php $server = 'DESKTOP-PJDLJNR'; $database = 'Legacy'; $username = ''; $password = ''; try { $connection = new PDO("sqlsrv:Server=$server;Database=$database", $username, $password); $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Enable error handling $sql_query = 'SELECT * FROM Problemss'; $statement = $connection->query($sql_query); $result = $statement->fetchAll(PDO::FETCH_ASSOC); // Fetch all results } catch (PDOException $e) { die("Connection failed: " . $e->getMessage()); } ?> <table border="1" width="100%"> <tr> <th>تم</th> <th>الحلول</th> <th>المشكلة</th> <th>م</th> <th>الرقم</th> </tr> <?php foreach ($result as $row) { ?> <tr> <td><?php echo $row['تم'] ?></td> <td><?php echo $row['الحلول'] ?></td> <td><?php echo $row['المشكلة'] ?></td> <td><?php echo $row['م'] ?></td> <td><?php echo $row['الرقم'] ?></td> </tr> <?php } ?> </table> </body> </html>1 نقطة
-
جدول اجازات به بيانات تاليه رقم الاجازة مفاتح رئيسي، رقم القرار، نوع الاجازة، سبب الاجازة، مدة الاجازة باليوم، بداية الاجازة، نهاية الاجازة، رصيد الاجازات المتبقي، وقت وتاريخ الادخال، وقت وتاريخ التعديل، المستخدم الذي قام بالادخال ، المستخدم الذي قام بالتعديل، رقم الموظف fk مفتاح اجنبي اخي اريد كيف طريقة التي احدد به مثلا موظف احمد اعبي له بيانات اجازة ثم بعده احدد موظف علي احدد له بيانات اجازة انا عرفت كيف اصمم صفحة موظف عبارة عن ادخال فقط لكن ماذا اضع في صفحة اجازات وكيف اعرف انه موظف احمد او علي ياريت توضح لي ماذا افعل في صفحة اجازات كذلك جدول موظف به حقل يسمي الوضع الحالي للموظف مفتاح اجنبي fkمرتبط بجدول تصنيف موظف الذي به حقول تاليه رقم تصنيف موظف اسم تنصيف موظف في شاشة بيانات موظف1 نقطة
-
نعم تعلم الداتا ستركتشر مهم جدا أثناء تعلم البرمجة بشكل عام. الداتا ستركتشر أو هياكل البيانات هي الطريقة التي نخزن وننظم المعلومات في البرنامج. تعتبر أحد المفاهيم الأساسية في البرمجة. بعض أهم أنواع الداتا ستركتشر التي سيكون من المفيد أن تتعرف عليها: - القوائم (Arrays) - القواميس (Objects) - الصفوف (Linked Lists) - الأشجار (Trees) - الطوابير (Queues) - المكامل (Stacks) فهم هذه الأنواع بشكل جيد سيساعدك كثيرا في اختيار أفضل تمثيل لبيانات تطبيقك والعمل عليها بشكل فعال. كما أن تعلم الداتا ستركتشر ضروري لفهم الخوارزميات والبرمجة الحسابية بشكل أعمق. إذا كنت تعلم هياكل البيانات، يمكنك تحسين قدراتك في تصميم الخوارزميات وتحليل الأداء، مما يساعد في بناء تطبيقات أفضل وأكثر فعالية. يمكنك البدء بفهم الهياكل الأساسية مثل القوائم، الطوابير، الأشجار، والجرافات، ثم توسيع فهمك لتشمل الهياكل المتقدمة وتطبيقاتها العملية. بالإضافة إلى ذلك، يمكن أن يكون تعلم هياكل البيانات مفيدًا عند التعامل مع بعض الإطارات (Frameworks) ومكتبات Node.js التي قد تستخدم هياكل البيانات في واجهة برمجة التطبيقات (API) الخاصة بها. في الخلاصة، تعلم الداتا ستركتشر مهم جدا للمبرمجين ولن يضرك بالتأكيد. أنصحك بتخصيص بعض الوقت له.1 نقطة
-
السلام عليكم ورحمة الله تعالى وبركلته جزاكم الله خيرا أختي الكريمة على هذا المجهود العالي ولدي سؤال لو تكرمتكم: كيف أبحث عن ما داخل الأقواس "أي شيء كان" لأغير تنسيقه فقط أريد معرفة كيف يمكنني الوصول إلى الموجود داخل الأقواس الهلاليه () الموجودة في ملفي والتعديل عليها وشكرا جزيلا سلفا1 نقطة
-
يرجى ضغط المشروع ورفعه في ملف واحد بدل رفع جميع الملفات منفصلة.1 نقطة
-
1 نقطة
-
من الممكن الخطأ في الكود في استخدام المتغير `i` في التعبير lambda. يمكنك تجربه تعديل جزء الكود ليبدو كما يلي: Table['3أكبر_قيمة'] = Table.apply(lambda row: col1_values[row.name] if col2_values[row.name]==0 else col2_values[row.name] if 0 < col2_values[row.name] <= 50 else None, axis=1) تم استبدال `i` بـ `row.name` لضمان استخدام الفهرس الصحيح للصفوف. يرجى تجربة هذا التعديل والتحقق مما إذا كان يحل المشكلة.1 نقطة
-
الإصدار 1.0.0
27935 تنزيل
يشرح هذا الكتاب كيفية كتابة تعليمات ووصفات يفهمها الحاسوب، ومن المعلوم أن الحواسيب شائعة ومنتشرة بحيث لا يخفى ذلك على ذي عقل وشأنها مثل شأن مفكات البراغي، غير أنها أعقد قليلًا وليس من السهل جعلها تنفذ ما تريد منها بالضبط، إلا إذا كانت المهمة التي تريد للحاسوب تنفيذها سهلة الفهم مثل عرض رسائلك البريدية أو تشغيل برنامج الحاسبة، فحينها ما عليك سوى فتح البرنامج المخصص لذلك، لكن حين تكون المهمة التي لديك فريدةً وأبعادها غير معرفة، فلن تجد تطبيقًا متاحًا لها. يأتي هنا دور البرمجة، فهي الفعل الذي يصف بناء برنامج يتكون من مجموعة أوامر محدَّدة جدًا لتخبر الحاسوب بما يجب فعله، وتُعَدّ الحواسيب بصفتها آلات غبية لا تستطيع فهم البرمجة ولا استيعابها، لكن إذا غضضت النظر عن هذا ورأيت أنه من الممتع والمسلِّي التفكير بمنطق يشبه ذاك الذي تفهمه تلك الآلات فستجد البرمجة أمرًا مسلِّيًا جدًا ونافعًا، فهي تتيح لنا اختصار زمن الأشياء التي ننفذها يدويًا وتستغرق أوقاتًا طويلةً إلى ثواني معدودة، وعليه يمكن النظر إليها على أنها طريقة تجعل حاسوبك يقوم بأمور لم يكن يستطيعها من قبل، وهي في ذاتها -أي البرمجة- بهذا الفهم تكون تدريبًا ممتازًا على التفكير النظري المجرَّد. دورة تطوير التطبيقات باستخدام لغة JavaScript تعلم البرمجة بلغة جافا سكريبت انطلاقًا من أبسط المفاهيم وحتى بناء تطبيقات حقيقية. اشترك الآن كما نوجه هذه الآلات لما نريده من خلال إعطائها أوامر محدَّدة كما ذكرنا، وتكون هذه الأوامر أو البرامج من خلال لغات خاصة بالبرمجة، وهي لغات أُنشئت عمدًا لتُستخدَم في برمجة الحواسيب، ومما يعجب المرء له أن البشر في تطويرهم للأسلوب الذي يتعاملون به مع الحاسوب لم يجدوا أفضل من الطريقة التي يتواصلون بها مع بعضهم بعضًا، فلغات البرمجة الحوسبية تشبه لغات البشر في إمكانية استخدام الكلمات والجمل في صور مختلفة لكتابة تعليمات جديدة في كل مرة تكتب برنامجًا فيها. كانت لغة بيزيك Basic ونظام دوس DOS في الثمانينيات والتسعينيات من القرن الماضي هما الطريقتان الأساسيتان في التعامل مع الحواسيب، وهما أنظمة نصية بالكامل من غير واجهة رسومية مثل التي تراها الآن أمامك على الشاشة، وقد استبدلنا الواجهات المرئية بهما منذ ذلك الحين بما أنها أسهل في التعلم للمستخدِم رغم أنها محدودة الإمكانيات موازنة بالواجهات النصية، لكن لا زالت لغات الحاسوب موجودةً، فإذا أمعنت النظر فسترى أنّ لغةً مثل جافاسكربت JavaScript موجودة في كل متصفح تستخدِمه أنت وهي في كل حاسوب تقريبًا، وإنّ مراد هذا الكتاب الذي بين يديك هو جعلك تألف التعامل مع هذه اللغة لتستخدِمها في صنع برامج نافعة لك ولعملائك. هذا الكتاب هو النسخة العربية المترجمة عن كتاب Eloquent JavaScript الشهير لصاحبه مارين هافربيك Marijn Haverbeke، ويقع في ثلاثة أجزاء، إذ يناقش أول جزء فيها لغة جافاسكربت في اثني عشر فصلًا؛ أما الفصول السبعة التالية فهي عن متصفحات الويب والأسلوب الذي تُستخدَم لغة جافاسكربت به لبرمجتها، ثم في النهاية فصلين آخرين مخصصين لبيئة أخرى لتشغيل جافاسكربت فيها وهي Node.js، كما سيكون في هذا الكتاب خمسة فصول عملية بها مشاريع تصف برامج كبيرة لتعطيك لمحةً عن البرمجة الحقيقية، وهي بناء روبوت توصيل ولغة برمجة ولعبة وبرنامج رسم بالبكسلات وموقعًا ديناميكيًا. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات مجموعة ضمن وسم «إِلِكوَنت جافاسكريبت» وتجد روابطها تاليًا: القيم والأنواع والعوامل في جافاسكريبت (الجزء الأول: اللغة) هيكل البرنامج في جافاسكريبت الدوال في جافاسكريبت هياكل البيانات: الكائنات والمصفوفات في جافاسكريبت الدوال العليا في جافاسكريبت الحياة السرية للكائنات في جافاسكريبت مشروع تطبيقي لبناء رجل آلي (روبوت) عبر جافاسكريبت الزلات البرمجية والأخطاء في جافاسكريبت التعابير النمطية Regular Expressions في جافاسكريبت الوحدات Modules في جافاسكريبت البرمجة غير المتزامنة في جافاسكريبت مشروع بناء لغة برمجة خاصة علاقة جافاسكريبت بتطور الإنترنت والمتصفحات (الجزء الثاني: المتصفح) نموذج كائن المستند في جافاسكريبت معالجة الأحداث في جافسكربت مشروع لعبة منصة باستخدام جافاسكربت الرسم على لوحة في جافاسكربت HTTP والاستمارات في جافاسكربت إنجاز مشروع محرر رسوم نقطية باستخدام جافاسكربت بيئة Node.js: استخدام جافاسكربت خارج المتصفح (الجزء الثالث: بيئة Node) مشروع بناء موقع لمشاركة المهارات باستعمال Node.js1 نقطة -
الإصدار 1.0.0
6114 تنزيل
تعد Node.js بيئة تشغيل مفتوحة المصدر يمكن خلالها تنفيذ شيفرات مكتوبة بلغة جافاسكربت JavaScript دون الحاجة إلى متصفح ويب، وبذلك لم يعد المتصفح المشغل الوحيد والحصري لها ما فتح الآفاق لاستخدام جافاسكربت في مختلف المجالات وليس فقط في تطوير الواجهات الأمامية front-end لصفحات ومواقع الويب وإضافة الفاعلية عليها مع لغة HTML ولغة CSS، وتُستعمل Node.js عادةً في تطوير الواجهات الخلفية لتطبيقات ومواقع الويب عبر بناء خوادم ويب خلفية كما يمكن استعمالها لتطوير أدوات وبرامج تعمل من سطر الأوامر. ستتعلم في هذا الكتاب أساسيات البرمجة باستخدام Node.js بأسلوب عملي تطبيقي إذ ستبني خلال هذا الكتاب عدة تطبيقات وخوادم ويب مختلفة، وستصبح قادرًا في نهايته على كتابة برامج تستخدم مختلف ميزات Node.js منها التنفيذ الغير متزامن والتعامل مع الأحداث والتحكم بالعمليات وإدارة الوحدات. كما سيتطرق الكتاب إلى بعض المواضيع المتقدمة في البرمجة منها كيفية تنقيح تطبيقات Node.js وتصحيح الأخطاء فيها باستخدام الأدوات المتوفرة سواءً في نود نفسها أو في المتصفح عبر أدوات التطوير DevTools، وأيضًا كيفية كتابة وحدات اختبار unite tests لوظائف التطبيق للتأكد من عملها وفق المطلوب. الكتاب موجه لمن يريد تعلم مجال تطوير الواجهات الخلفية back-end أو مجال التطوير الشامل full stack كما يتطلب أن تملك خبرة أساسية على الأقل بلغة جافاسكربت إذ سيركز الكتاب على شرح بيئة Node.js وميزاتها واستخدامها ولن يشرح لغة جافاسكربت التي ستُستعمل في كل الكتاب، فإن لم يكن لديك خبرة بهذه اللغة، ننصحك بقراءة كتاب البرمجة بلغة جافاسكربت أولًا ثم هذا الكتاب. هذا الكتاب مُترجم عن كتاب How To Code in Node.js بواسطة موقع DigitalOcean وقد ساهم به مجموعة مؤلفين من فريق Stack Abuse وهو مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «دليل تعلم Node.js»، أو مباشرة مما يلي: كتابة أول برنامج في بيئة Node.js وتنفيذه استخدام الوضع التفاعلي REPL في Node.js إدارة الوحدات البرمجية في Node.js باستخدام npm وملف package.json إنشاء وحدات برمجية Modules في Node.js طرق كتابة شيفرات غير متزامنة التنفيذ في Node.js اختبار الوحدات البرمجية باستخدام Mocha و Assert في Node.js إنشاء خادم ويب في Node.js باستخدام الوحدة HTTP استخدام المخازن المؤقتة Buffers في Node.js استخدام مرسل الأحداث Event emitter في Node.js تنقيح أخطاء Node.js باستخدام المنقح debugger وأدوات المطور DevTools التعامل مع العمليات الأبناء Child Process في Node.js التعامل مع الملفات باستخدام الوحدة fs في Node.js التعامل مع طلبات HTTP في Node.js1 نقطة -
الإصدار 1.0.0
5644 تنزيل
لغة CSS هي لغة توصيف شهيرة ذائعة الصيت تُستخدم في تنسيق صفحات HTML لمواقع الويب وإضفاء رونق جميل عليها وهي الركيزة الثانية الأساسية من ركائز بناء صفحات ومواقع الويب بعد لغة HTML ولغة جافاسكربت JavaScript فلا تخفى على أي مطور ويب أو مطلع على مجال الويب عمومًا. تعد لغة CSS بسيطة سهلة التعلم لكن في الوقت نفسه احترافها ليس بالسهل ويحتاج إلى خبرة وتعامل طويل معها، إذ تنسيق صندوق أو نص أو صفحة بسيطة بلغة CSS أمر شديد السهولة لكن عندما تطول الصفحة وتكثر عناصرها وتتشابك مع بعضها تبدأ الصعوبة والخروج عن النمط المألوف وحتى ظهور تعارضات وتداخلات بالتنسيق قد يأخذ حلها الدقائق وحتى الساعات. أمرٌ إضافيٌ وهو أن لغة CSS تحتاج إلى بيئة لتنفيذها وعادة ما تكون البيئة هي متصفح الويب، ومتصفحات الويب تعمل بمحركات داخلية مسؤولة عن تفسير اللغات وتنفيذها ومنها لغة CSS وهنا تظهر مشكلة التوافقية مع تلك المحركات والحاجة إلى توحيد التنسيق على جميع المتصفحات وهذا أمر آخر يحتاج مطور الويب إلى تعلمه ومعالجته. انطلاقًا من ذلك، جاء هذا الكتاب والذي يحمل عنوان "نصائح للعاملين بلغة CSS" وذلك لينقل مطور الويب من مرحلة المعرفة بأساسيات لغة CSS إلى الاحتراف ويختصر عليك الوقت الطويل ويغنيك عن التجريب والوقوع في الخطأ نفسه والتعلم منه، ويأتي الكتاب على شكل نصائح ومقتطفات من مطورين خبروا اللغة واستعملوها مرارًا وتكرارًا في مختلف المشاريع. هذا الكتاب مترجم عن كتاب "CSS Notes For Professionals" المبني على توثيق موقع StackOverflow وقد ساهم في إعداده عدد كبير من المساهمين على شبكة StackOverflow الشهيرة لحل المشاكل البرمجية. وإن أردت الاطلاع على قائمة المساهمين الكاملة، ارجع إلى قسم "Credits" في نهاية الكتاب الأصلي. انتبه إلى أن هذا الكتاب ليس مثل غيره من الكتب والشروحات التي تشرح لغة CSS من البداية شرحًا مُبسَّطًا ومتسلسلًا وإنَّما يعتمد على مبدأ خير الكلام ما قل ودل في الشرح وترك الشيفرة تشرح نفسها بنفسها، فيحوي على كم كبير من الشيفرات بالموازنة مع الشرح. وُجِّه هذا الكتاب لمن لديه معرفة بلغة CSS، لذا يفضَّل أن تمتلك خبرة بلغة SQL لتستفيد أكبر استفادة من هذا الكتاب وتقرأ الشيفرات وتفهمها وتتعلَّم منها. في هذه الحالة، سيساهم هذا الكتاب في رفع مستواك في لغة CSS وسيُملِّكك مهارات متقدمة في استعمالها بالإضافة إلى بعض الخدع والالتفافات المتقدمة أيضًا. قد تسأل نفسك، هل ينفع أن أقرأ الكتاب دون معرفة مسبقة بلغة CSS؟ سأقول، نعم، ولكن يجب أن تتحلى بالصبر في قراءة الشيفرة وتحليلها وفهمها والبحث عن أي موضوع لم تفهمه والسؤال عن شرح لأي شيفرة غامضة، إذ لن تجد كلامًا وشرحًا كبيرًا للمواضيع التي يتحدث عنها الكتاب، كما أن تسلسل المواضيع في الكتاب لا تراعي عدم امتلاك القارئ معرفة بلغة CSS. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». أنشئ العمل الأصلي من هذا الكتاب لأغراض تعليمية ولا يتبع إلى أي شركة أو مجموعة رسمية متعلقة بلغة SQL ولا حتى شبكة Stack Overflow، كما أن جميع العلامات التجارية المذكورة في هذا الكتاب تتبع إلى الشركات المالكة لها. يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «ملاحظات للعاملين بلغة CSS»، أو مباشرة مما يلي: أساسيات استعمال لغة CSS التحكم في تخطيط الصفحة وضبط محاذاة العناصر في CSS النموذج الصندوقي Box Model في CSS التحكم في تموضع العناصر في CSS تنسيق القوائم وإضافة الظلال ورسم الأشكال في CSS التنسيقات الأساسية للعناصر في CSS تنسيق الخلفيات Backgrounds في CSS تنسيق الصور في CSS العناصر العائمة Floats في CSS الانتقالات Transitions والحركات Animations في CSS استعلامات الوسائط Media Queries في CSS مواضيع متقدمة في CSS تنسيقات المتصفحات المخصصة ودعمها وأداءها في CSS1 نقطة -
هياكل البيانات data structures -أو تدعى بنى المعطيات أحيانًا- مصطلح يتكرر كثيرًا في علوم الحاسوب خصوصًا والبرمجة عمومًا ويعد من المصطلحات المعقدة البسيطة أو السهلة الممتنعة كما أن الكثير يخلط بينه وبين أنواع البيانات أو لا يكاد يميز بينهما، ولابد على أي داخل لمجال علوم الحاسوب ومن يريد تعلم البرمجة أن يفهم هذا المصطلح جيدًا لأنه الأساس الذي سيستند عليه في بناء بقية المفاهيم الأخرى اللاحقة. بناء على ذلك، جاء هذا المقال ليكون تعريفًا بهياكل البيانات وأنواعها بأسلوب بسيط سهل مدعوم بالصور التوضيحية كل هيكل بيانات بالإضافة إلى ذكر ميزات وعيوب بعض الأنواع، كما يتناول هذا المقال التعريف بأهمية هياكل البيانات وأهم تطبيقاتها والفرق بينها وبين أنواع البيانات، لذا لنبدأ! ما هي هياكل البيانات؟ تُعَدّ هياكل البيانات data structures من أهم المفاهيم التأسيسية في مجال علوم الحاسوب، فهي ببساطة مجموعة من الوسائل والطرق المستعملة في ترتيب البيانات في ذاكرة الحاسوب بهدف التعامل معها بكفاءة وفعالية وتسهيل إجراء العمليات عليها، وتوجد هناك أنواع أساسية ومتطورة من هياكل البيانات وجميعها مصمَّمة لتنظيم البيانات لاستخدامها في هدف محدَّد. أهمية هياكل البيانات data structures أحب بداية ضرب مثال يوضح هياكل البيانات وأهميتها وهو أننا نستعمل هذا المفهوم في حياتنا اليومية بصورة أو بأخرى، لنفترض أن البيانات تمثل ملابسنا، فهل نرمي الملابس في خزانة واحدة كلها؟ لا بالطبع لأن إخراج بنطال معين آنذاك سيستغرق وقتًا من البحث للعثور عليه وإخراج بل نضع الألبسة بطريقة معينة في عدة خزانات وسحابات وبطرق مختلفة بحيث نصل إلى بنطال أو قميص محدد بمجرد طلبه فورًا آنيًا دون تأخير. الأمر نفسه مع ترتيب البهارات وأوعية المطبخ والكتب وكل شيء حولنا تقريبًا. هذا بالضبط ما يحصل عند كتابة كلمة في محرك البحث لتظهر لك اقتراحات عد قد تطابق تمامًا ما تنوي كتابته في غضون أجزاء من الثانية، فهل تساءلت كيف تمكن محرك البحث من البحث في كم البيانات الضخم الموجودة في الإنترنت ووصل إلى النتيجة؟ لا يمكن ذلك بآلية الرمي العشوائي في مكان واحد التي ذكرناها في ترتيب الملابس تلك بل بتنظيم البيانات ضمن هياكل بيانات تشبه الأوعية والخزانات تسهل الوصول إليها بأسرع ما يمكن. نظرًا لتطور التطبيقات وازدياد تعقيدها وازدياد كمية البيانات الضخم يومًا بعد يوم والذي تتطلب عملية معالجتها معالجات هائلة السرعة، فكان لا بد من تنظيم البيانات وإدارتها بكفاءة في هياكل البيانات تمثل أوعية تخزين وتنظيم لها، إذ يمكن أن يساعد استخدام هياكل البيانات المناسبة في توفير قدر كبير من الوقت أثناء إجراء عمليات عليها مثل تخزين البيانات أو استرجاعها أو معالجتها، وبالتالي وصول أسرع إلى الذاكرة وتوفير في استهلاك العتاد من عمليات معالجة وطاقة للحاسوب. من الجدير بالذكر أيضًا أنّ هياكل البيانات ضرورية لتصميم خوارزميات فعالة والتي سنراها في تطبيقات هياكل البيانات ضمن هذا المقال. الفرق بين أنواع البيانات وهياكل البيانات يبدو لك أنّ أنواع البيانات Data Types وهياكل البيانات Data Structures وجهان لعملة واحدة لأنّ كلاهما يتعامل مع طبيعة البيانات وتنظيمها، ولكن في الحقيقة الأول يشرح نوع وطبيعة البيانات في حين يمثِّل الآخر التجميعات التي تُخزَّن تلك البيانات فيها، وفيما يلي الفروق الأساسية بين نوع البيانات وهيكل البيانات. يمثِّل نوع البيانات ماهية البيانات التي سيجري التعامل معها مثل أن تكون البيانات أعداد أو سلاسل نصية أو رموز …إلخ. في حين يُعَدّ هيكل البيانات تجميعةً collection تحوي تلك البيانات وهناك عدة أنواع من الهياكل تناسب مختلف أنواع البيانات. يحدد نوع البيانات ما يترتب عليه من عمليات تطبق على تلك البيانات مثل العمليات الرياضية على الأعداد وعمليات المعالجة على النصوص وهكذا أما هياكل البيانات فتحدد كيفية تخزين البيانات والوصول إليها والبحث فيها وغيرها من العمليات كما تدرس كيفية تحسين الأداء في تلك العمليات. يأخذ نوع البيانات شكل التنفيذ المجرد abstract implementation الذي يُعرَّف من خلال لغات البرمجة نفسها، في حين يُنفَّذ هيكل البيانات تنفيذًا حقيقيًا concrete implementation بحيث يُنشأ ليكون متوافقًا مع التصميم الذي يحتاجه المبرمج بالحجم الذي يريده وبنوع البيانات التي سيحتويها ضمن تطبيقه. يسمى نوع البيانات بأنه عديم القيمة dataless لأنه لا يخزِّن قيمة البيانات وإنما يمثِّل فقط نوع البيانات التي يمكن تخزينها، في حين يستطيع هيكل البيانات الاحتفاظ بأنواع مختلفة من البيانات مع قيمتها في كائن واحد. تحدد أنواع البيانات مع المتغيرات مثلًا في لغات البرمجة عند تعريفها، في حين تحتاج إلى كتابة بعض الخوارزميات لإسناد قيم البيانات إلى المتغيرات عند استخدام هيكل بيانات مثل عمليتَي الإضافة Push والجلب Pop للبيانات. لا يُكترث للزمن عند استخدام نوع البيانات، في حين يؤخذ بالحسبان عند استخدام هيكل البيانات (يطلق عليه تعقيد زمني BigO). تطبيقات هياكل البيانات يكاد لا يخلو أي تطبيق أو برنامج أو خوارزمية برمجية من وجود هيكل بيانات أو بنية معطيات تساعده في تحقيق الهدف المرجو منه، ومن هذه التطبيقات ما يلي: تنظيم البيانات في ذاكرة الحاسوب. تمثيل المعلومات في قواعد البيانات. خوارزميات معالجة البيانات مثل معالجة النصوص. خوارزميات تحليل البيانات مثل data minar. خوارزميات البحث في البيانات مثل محرك البحث. خورزميات توليد البيانات مثل مولِّد الأعداد العشوائية. خوارزميات ضغط البيانات وتفك ضغطها مثل المعتمدَة في برنامج zip. خوارزميات تشفير البيانات وتفك تشفيرها مثل المعتمدَة في نظام الأمان. البرامج التي تدير الملفات والمجلدات مثل مدير الملفات. دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن أنواع هياكل البيانات في لغات البرمجة تنقسم هياكل البيانات إلى هياكل بيانات أولية Primitive وهياكل بيانات غير أولية Non Primitive أو هياكل بيانات معقدة وكل منها يضم عدة أقسام سنشرحها تباعًا. هياكل البيانات الأولية Primitive هي هياكل البيانات الأساسية والبسيطة والتي تُستخدَم لتخزين قيمة من جزء واحد فقط ذات نوع محدَّد، ويندرج تحت هذا النوع ما يلي: integer: من أجل الأعداد الصحيحة مثل العدد 15. character: من أجل محرف واحد فقط. float: من أجل الأعداد العشرية. real: من أجل الأعداد الحقيقية. boolean: من أجل القيم البوليانية والذي يأخذ إحدى القيمتين؛ إما محققة true أو غير محققة false. ملاحظة: قد تتساءل عن هياكل تخزين النصوص، وهي في الحقيقة تدخل ضمن الهياكل الغير أولية أن النصوص مجموعة من الحروف والرموز التي تدعى محارف characters لذا تخزن عادة ضمن مصفوفة وأحيانًا تضيف لغات البرمجة نوعًا خاصًا لها يدعى string سلسلة نصية أو لا يضيف وتكون بالشكل char[] وما تراه [] يدل على هيكل مصفوفة. يوجد شيء خاص يدعى مؤشر pointer والمشهور في بعض اللغات البرمجية مثل سي C وسي بلس بلس ++C، إذ يُعَدّ مكانًا في الذاكرة ويخزِّن عنوان المتغير الذي يشير إليه والشي الخاص فيه أنه يملك نوع بيانات والذي يجب أن يطابق نوع البيانات الذي يشير إليها. ملاحظة: ممكن تسمية هياكل البيانات التي تخزن الأعداد العشرية باسم double (عدد عشري مضاعف الدقة) أو float (عدد عشري) عوضًا عن real بصورة عامة ويكمن الاختلاف حسب اللغة البرمجية في عدد الخانات العشرية الممكن تخزينها، أي عدد الخانات بعد الفاصلة العشرية، بالإضافة إلى الحجم في الذاكرة وأخيرًا طريقة التعريف declaration، ففي لغة سي شارب #C يكون تعريف المتغير من نمط float كما يلي: float x = 1.5f; أما تعريفه عندما يكون من نمط double، فيكون كما يلي: double x = 1.5; ملاحظة: يطلق أحيانًا على هياكل البيانات الأولية أنواع البيانات Data Type. هياكل البيانات غير الأولية هي هياكل البيانات التي تُستخدَم من أجل التخزين المعقّد والتي يمكنها أن تحمل أكثر من قيمة في بنيتها، وتنقسم إلى هياكل بيانات خطية Linear وهياكل بيانات غير خطية Non Linear. هياكل البيانات الخطية تكون هياكل البيانات خطيّةً إذا كانت عناصرها تشكل تسلسلًا فيما بينها بحيث يرتبط كل عنصر فيها بعنصر سابق وعنصر لاحق ضمن مستوى واحد وفي مسار واحد، ومن هذه الهياكل ما يلي: المصفوفة Array القائمة المترابطة Linked List المكدس Stack الرتل Queue المصفوفة تُعَدّ المصفوفة الخطية array أو المصفوفة ذات البعد الواحد أبسط أنواع الهياكل الخطية، ويمكن تشبيهها بقائمة من عدد محدود من العناصر التي تمتلك النوع ذاته، ويكون بعدها -أو طولها- هو عدد العناصر التي تملكها، كما تُخزّن في الذاكرة بحجم ثابت وبمواقع متجاورة. كل عنصر من عناصر هذه المصفوفة الخطية يملك فهرسًا للوصول إليه، وعادةً ما يبدأ الفهرس بالعدد 0 أي يكون فهرس العنصر الأخير هو n-1 في مصفوفة بعدها n، وفي بعض لغات البرمجة يكون فهرس البداية هو العدد 1 مثل لغة باسكال، وفيما يلي صورة توضِّح هذه البنية: ملاحظات: يُنظَر إلى السلسلة النصية string على أنها مصفوفة أحادية من المحارف، أي كلمة Hello هي سلسلة نصية وهي مصفوفة طولها 5 مكوّنة من خمسة عناصر بحيث يمثِّل كل عنصر محرفًا من المحارف كما أشرنا سابقًا. المصفوفة ثنائية البعد هي أيضًا مجموعة من المتغيرات المفهرسة التي تحتوي على النوع نفسه من البيانات ولكن تخزين البيانات فيها يكون على صورة جدول له أعمدة وأسطر، بحيث يمكن الوصول إلى العنصر في هذه المصفوفة من خلال فهرسين أحدهما يحدِّد السطر والآخر يحدِّد العمود. من الجدير بالذكر أنّ بُعد المصفوفة ثابت في بعض لغات البرمجة وبالتالي يجب معرفة عدد العناصر قبل تعريفها فإذا أردت تغيير البُعد وإضافة عناصر جديدة، فستحتاج إلى مصفوفة جديدة ببُعد جديد لتنقل إليها العناصر السابقة وبعدها تضيف العناصر الجديدة إليها، كما أنّ إضافة عنصر ما في مكان ما مملوء مسبقًا أي في وسط المصفوفة مثلًا سيستهلك الكثير من العمليات، إذ ستحتاج إلى إزاحة العناصر اللاحقة ليصبح له مكانًا فارغًا، ويُعَدّ ذلك من عيوب استخدام المصفوفات. هنالك لغات أخرى لا تشترط تحديد عدد عناصر المصفوفة ولكنها تستهلك آنذاك عمليات كثيرة وتكون مكلفة لعمليات المعالجة أما تلك التي تحدد عدد العناصر مسبقًا فذلك عائد إلى توفير عمليات المعالجة. ملاحظة: قد تجد كلمة static ساكن وكلمة dynamic متحرك لتصنيف الأنواع الغير خطية ولكن شرحهما متقدم جدًا يحتاج إلى مقال بأكمله وستحتاج إليه عند التعمق كثيرًا وليس في البداية. القائمة المترابطة تُعَدّ القائمة المترابطة linked list مجموعةً من العقد التي تخزَّن في الذاكرة بمواقع غير متجاورة، وكل عقدة من عقد القائمة مرتبطة بالعقدة المجاورة لها بمؤشر عدا العقدة الأخيرة التي يكون المؤشر فيها عبارة عن Null. تسمح هذه البنية بإدراج عناصر جديدة أو حذف عناصر موجودة سابقًا بسهولة وهذا ما يميزها عن المصفوفات؛ أما سرعة الوصول، فتُعَدّ المصفوفات أسرع لأنه يكفي ذكر الفهرس الرابع على عكس القائمة المترابطة التي يجب البدء فيها من الرأس ثم المرور على العناصر بالتتالي إلى حين الوصول إلى العنصر الرابع. من الجدير بالذكر أنّ القائمة المترابطة تحتاج إلى مساحة إضافية في الذاكرة من أجل المؤشر الذي يرتبط بالعنصر، وهذا عيب آخر من عيوب القوائم المترابطة. يوجد نوع متطور من القوائم المترابطة وهو القوائم المترابطة المزدوجة Doubly Linked List، إذ ترتبط كل عقدة بمؤشرَين أحدهما يربطها بالعقدة السابقة ويسمى عادةً prev والآخر يربطها بالعقدة التالية ويسمى عادةً next، وبالتالي تحتاج هذه القائمة إلى مساحة إضافية في الذاكرة لامتلاكها على مؤشر إضافي، وبالمثل يكون المؤشر prev في عقدة الرأس Null ومؤشر next في العقدة الأخيرة هو Null. يوجد نوع أخير من القوائم المترابطة وهو القوائم المترابطة الدائرية Circular Linked Lists والتي تُعَدّ تطويرًا عن المفردة بحيث يشير مؤشر next الخاص بعقدة النهاية إلى عقدة الرأس. كما توجد القوائم الدائرية المزدوجة بحيث يشير مؤشر prev الخاص بعقدة الرأس إلى عقدة النهاية ويشير مؤشر next الخاص بعقدة النهاية إلى عقدة الرأس، وبالتالي لا تحتوي القوائم المترابطة الدائرية على مؤشرات Null. المكدس يُعَدّ المكدِّس stack هيكل بيانات خطية يتبع ترتيبًا محددًا في تنفيذ عمليات الحذف والإضافة، والترتيب يكون LIFO أي الذي يدخل آخرًا يخرج أولًا Last In First Out، والذي يميز المكدس هنا هو دخول العناصر وخروجها من قمة المكدِّس أي من جهة واحدة. تدخل -أو تُضاف- العناصر إلى المكدِّس عن طريق عملية وحيدة وخاصة وهي دفع Push وبالمثل فإنها تخرج منه -أو تُحذَف- عن طريق عملية وحيدة وخاصة أيضًا وتدعى إخراج Pop، وتوجد أيضًا عمليتان خاصتان بالمكدِّس وهما Top -أو Peek- التي تعيد القيمة الموجودة في قمة المكدِّس دون حذفها، والعملية الأخرى هي عملية IsEmpty التي تُعيد القيمة true إذا كان المكدِّس فارغًا. عند إضافة عنصر إلى مكدِّس ممتلئ لا يستوعب المزيد من العناصر فستحصل حالة طفحان المكدِّس overflow؛ أما عند إجراء عملية الحذف من مكدِّس فارغ، فسنواجه حالة طفحان أو تجاوز الحد الأدنى underflow (قعر المكدس). الرتل يُعَدّ الرتل queue أحد هياكل البيانات الخطية شبيه بالمكدس لامتلاكه عمليات خاصة للحذف والإضافة ولكنه يختلف عنه في مكان الحذف والإضافة كما سنرى. يدعى الرتل أو الطابور بـ FIFO أي الذي يدخل أولًا يخرج أولًا First In First Out بحيث يكون الدخول -أو الإضافة- من الجهة الخلفية rear والخروج -أو الحذف- من الجهة الأخرى أي الأمامية front (كما يحصل عند الوقوف ضمن الطوابير تمامًا لشراء شيء ما)، وتحدث الإضافة عن طريق عملية ENQUEUE أما عملية الحذف فتكون عن طريق عملية DEQUEUE. يتميز الرتل أيضًا بامتلاكه عمليات خاصة وهي العملية IsFull التي تُعيد true إذا كان الرتل ممتلئًا، والعملية IsEmpty التي تُعيد true إذا كان الرتل فارغًا، والعملية Front التي تُعيد العنصر الأمامي من الرتل، بالإضافة إلى العملية Rear التي تُعيد العنصر الخلفي من الرتل. هياكل البيانات غير الخطية لا تحتوي هياكل البيانات غير الخطية -أو المتشعبة- على أيّ تسلسل محدد يربط جميع عناصرها، إذ يمكن أن يكون لكل عنصر أكثر من مسار ليرتبط بالعناصر الأخرى، كما أنّ العناصر الموجودة ضمن هذه الهياكل لا يمكن اجتيازها أو المرور عليها في جولة واحدة أو باستخدام حلقة برمجية واحدة. وأهم ما يميّز هذا النوع على الرغم من صعوبة التنفيذ موازنةً بالهياكل الخطية التي يزداد فيها تعقيد الوقت مع ازدياد حجم البيانات أنه يُعد أكثر كفاءة في استخدام الذاكرة وأكثر سرعة في تطبيق العمليات مثل عمليات البحث، ومن هذه الهياكل: الشجرة الرسم البياني الشجرة تُعَدّ الشجرة tree هيكل بيانات متعدد المستويات وتُعرَّف على أنها مجموعة من العقد التي تحتوي فيما بينها على علاقة هرمية بحيث تسمى العقدة العليا بالعقدة الجذر، كما تحتوي كل عقدة على أب وحيد، في حين يمكن أن يكون لها أكثر من ابن أو تابع. تسمى العقد التي تتفرع من عقدة معينة بأبناء children تلك العقدة والتي بدورها تدعى بالعقدة الأب parent، في حين تسمى العقد التي لا تمتلك أبناء بالأوراق leaves. تمتلك الشجرة عدة أنواع وهي: الشجرة الثنائية binary tree شجرة البحث الثنائية binary search tree شجرة AVL شجرة R-B شجرة البادئات الشجرة الثنائية الشجرة الثنائية binary tree هي شجرة بيانات تمتلك كل عقدة فيها -ما عدا الأوراق- على عقدَتي ابن فقط وهما الابن الأيمن والابن الأيسر. شجرة البحث الثنائية شجرة البحث الثنائية binary search tree أو BST اختصارًا هي شجرة ثنائية تحقق خاصيتان أساسيتان وهما أنّ العقد الواقعة في الفرع اليميني تكون أكبر من العقدة الأب والعقد الواقعة في الفرع اليساري تكون أصغر من العقدة الأب، مع ضمان وجود ابنَين لكل عقدة وعدم تكرار العقد. شجرة AVL تُعَدّ اختصارًا لـ Adelson-Velskii Tree إذ يُعَدّ أديسون Adelson وفيلسكي Velskii مخترعَيها للحفاظ على توازن شجرة البحث الثنائي وذلك لمنع تدهورها إلى قائمة مرتبطة عندما تحتوي الشجرة بأكملها على الشجرة الفرعية اليسرى فقط أو على الشجرة اليمنى فقط مما سينعكس سلبًا على أداء الشجرة، إذ يمكن استخدام سلسلة من عمليات التدوير بحيث تُحدَّد في كل عملية عقدة جذر إلى حين الوصول إلى شجرة بعقدة جذر معينة بحيث تكون متوازنة أي ارتفاع الشجرة اليسرى مساويًا لارتفاع الشجرة اليمنى، ويمكن القول هنا أنّ شجرة AVL هي شجرة BST تحقق شرط التوازن، علمًا أنّ ارتفاع الشجرة هو أكبر عمق موجود لها. شجرة R-B تعني الشجرة الحمراء والسوداء Red-Black tree وهي شجرة بحث ثنائية لها خصائص تميزها بحيث تحتوي كل عقدة فيها على بت تخزين يشير إلى لون العقدة والتي يمكن أن تكون حمراء أو سوداء فقط، كما أنّ عقدة الجذر والعقد الأوراق سوداء دائمًا، وإذا كانت العقدة حمراء فيجب أن يكون أبناءها سود، وأخيرًا يجب أن تحتوي جميع المسارات من عقدة إلى أحفادها العدد نفسه من العقد السوداء، فإذا تحقق ما سبق، فستكون الشجرة شجرة بحث ثنائية متوازنة. شجرة البادئات تُعَدّ شجرة البادئات Prefix tree نوعًا من أشجار البحث وتعرف أيضًا بالشجرة الرقمية أو tri كما تُعرَف بشجرة القاموس وتُستخدَم في البحث عن الكلمات بصورة عامة بما أنها مكوَّنة من أحرف الهجاء، وأهم ما يميزها أنّ جذرها لا يحتوي على أيّ محرف. الكومة تُعَدّ الكومة Heap بنية معطيات شجرية تمتلك خاصة الكومة وهي وجود أسلوب ترتيب متَّبع بين العقد الآباء والعقد الأبناء مثل أن يكون كل أب أكبر من جميع أبنائه وتسمى حينها بالكومة العظمى Max-Heap أو أن يكون كل أب أصغر من جميع أبنائه وتسمى حينها بالكومة الصغرى Min-Heap، وتُستخدَم الكومة بكثرة في خوارزميات الترتيب، كما تتميز الكومة بأنّ جميع مستوياتها ممتلئة بالكامل عدا المستوى الأخير، وفيما يلي صورة توضِّح كومة صغرى. الرسم البياني يختلف الرسم البياني graph أو المبيان عن الشجرة في عدم احتوائه على جذر ومن الممكن أن تتصل العقد مع بعضها باتجاه واحد directed graph أو بالاتجاهين معًا Bi-directional أو بدون اتجاه undirected، كما أنّ طبيعة العلاقات بين العقد في هذا النوع ليست ذات طبيعة هرمية، كما تسمى العقد بالرؤوس vertices والروابط التي بينها تسمى بالحواف أو الأضلاع edges ويكون عدد كل من الرؤوس والأضلاع محدودًا. يكون الزوج (1,2) في الرسم البياني الموجَّه والذي يدل على وجود اتجاه من الرأس 1 إلى الرأس 2 مختلفًا عن الزوج (2,1)، كما تُرمَز مجموعة الرؤوس في هذا النوع بالرمز V ومجموعة الأضلاع بالرمز E ويُستخدَم هذا النوع من البنى في تمثيل الشبكات الواقعية مثل شبكة الهاتف المحمول أو شبكات التواصل الاجتماعي مثل الفيسبوك على سبيل المثال. التقطيع Hashing يُعَدّ التقطيع Hashing أو التجزئة تحسينًا لهياكل البيانات السابقة في بعض التطبيقات التي تحتاج إلى ترتيب بياناتها بواسطة أعداد كبيرة وفريدة موجودة ضمن هذه البيانات مثل ترتيب سجلات المرضى ضمن المستشفيات بناءً على أرقام هواتفهم والتي تُعَدّ مفاتيحًا فريدةً unique لهذه السجلات، ويكون ذلك من خلال الاستعانة بدالة تدعى دالة التقطيع hashing function والتي تحوِّل هذا المفتاح الفريد إلى عدد صغير وصحيح بحيث يكون فهرسًا لجدول جديد يدعى جدول التقطيع hashing table. من الممكن أن يكون فهرس جدول التقطيع هو ذاته رقم هاتف المريض بحيث يكون طوله هو أكبر رقم هاتف موجود ضمن السجلات زائد واحد بما أنّ الفهرسة تبدأ من الصفر، وبالتالي نحصل على سرعة وصول عالية لأيّ سجل من خلال رقم الهاتف الخاص به، ولكن سيتسبب ذلك بتواجد فجوات gaps بين العناصر لعدم الحاجة لوجود جميع أرقام الهواتف المحتملة وبالتالي زيادة حجم التخزين في الذاكرة، لذا تُستخدَم دالة التقطيع لحل هذه المشكلة، وعندها يكون جدول التقطيع مصفوفةً يمثِّل كل عنصر فيها مؤشرًا على السجل الذي يحتوي على رقم الهاتف -في مثالنا- والذي تكون نتيجة تطبيق دالة التقطيع عليه هي فهرس هذا العنصر. من الضروري التأكد من أنّ دالة التقطيع لا تعطي النتيجة ذاتها لأكثر من مفتاح، فإذا كانت دالة التقطيع مثلًا هي تأخذ فقط الرقم الأخير من رقم الهاتف، فسيكون لرقمَي الهاتف 45451 و 56561 على سبيل المثال النتيجة نفسها أي العدد 1 وبالتالي سيحدث تصادم في جدول التقطيع الذي فهرسه العدد 1، وأحد حلول هذه المشكلة أن يكون كل عنصر من جدول التقطيع مؤشرًا على قائمة مترابطة تحتوي على السجلات التي نتيجة تطبيق دالة التقطيع على أرقام هواتفها هي ذاتها. ليكن لدينا الأعداد التالية 12 – 17 – 29 – 6 – 30 – 31 – 4 – 8، فإذا كان فهرس جدول التقطيع هو ذاته العدد المعطى، فسنحتاج إلى جدول بحجم 32، ولكن فعليًا نحتاج إلى 8 أماكن للتخزين وبالتالي سنحصل على فجوات وهدر في الذاكرة، لذا سنلجأ إلى دالة التقطيع والتي ستعطي آحاد العدد المُعطى، وبالتالي ستكون نتيجتها 2 – 7 – 9 – 6 – 0 – 1 – 4 – 8 عند تطبيقها على الأعداد السابقة على الترتيب، بحيث يُخزَّن العدد 12 في العنصر الذي فهرسه هو العدد 2 وهكذا، وبالتالي سنحتاج إلى جدول تقطيع بحجم 8 بدلًا من 32 كما يلي: 12 17 29 6 30 31 4 8 2 7 9 6 0 1 4 8 يمكن تقليص حجم هذا الجدول ليصبح 4 بتحسين دالة التقطيع، بحيث يكون الفهرس هو باقي قسمة كل عدد من الأعداد المعطاة على العدد 4، ولكن ستكون نتيجة الأعداد 17 و 19 هي الفهرس 1، أي سيحدث تصادم، ويمكن حل هذه المشكلة بجعل كل عنصر من عناصر جدول التقطيع مؤشرًا على قائمة مترابطة من الأعداد التي باقي قسمتها على العدد 4 هو فهرس هذا العنصر، أي كما في الشكل التالي: يمكن زيادة حجم جدول التقطيع في المستقبل، كما أنّ هذه التقنية هي الأكثر استخدامًا في جوجل google. الخاتمة تعرَّفنا في هذا المقال على هياكل البيانات بكافة أنواعها مع إعطاء أمثلة توضيحية تساعدك على تخيل هذه البنى، بالإضافة إلى التطرق إلى ذكر أهميتها والفرق بينها وبين أنواع البيانات مع ذكر أهم تطبيقاتها. اقرأ أيضًا مقدمة إلى مفهوم البيانات الضخمة Big Data هياكل البيانات: القوائم المترابطة Linked lists والأشجار Trees في لغة سي C هياكل البيانات: الكائنات والمصفوفات في جافاسكريبت تصميم قواعد البيانات table { width: 100%; } thead { vertical-align: middle; text-align: center; } td, th { border: 1px solid #dddddd; text-align: right; padding: 8px; text-align: inherit; } tr:nth-child(even) { background-color: #dddddd; }1 نقطة
-
الإصدار 1.0.0
13372 تنزيل
مع الغياب شبه التام لأي مصادر مفيدة باللغة العربية عن مجالات الخصوصية والحماية والأمان الرقمي وتأمين الأجهزة الشخصية، جاء هذا الكتاب ليكون شارحًا لمفاهيم الحماية والأمان التي يحتاج إليها كل من يعيش في هذا العصر الرقمي ويستعمل مختلف الأجهزة الرقمية في شتى مجالات الحياة وذلك لتأمين نفسه وحماية بياناته التي يضعها في تلك الأجهزة. إنّ الأمان الرقمي موضوعٌ مهم للحديث عنه وليس شيئًا رفاهيًا أو تكميليًا، خصوصًا مع اطّراد عدد المستخدمين الجدد مع عدد انتهاكات واختراقات الأمان والخصوصية التي تحصل كلّ يوم. إنّ هذا الكتاب موجّهٌ بالدرجة الأولى إلى عموم من يستخدم الحواسيب والأجهزة الذكية ويهدف إلى توعيتهم بأهم المسائل المتعلقة بالأمان الرقمي، ولا يخلو من مواضيع ومعلومات مفيدة ومتقدمة حتّى للخبراء والمتخصصين في المجال، إذ أنّ هذا الكتاب ما هو إلّا محاولة لتحصين المستخدمين ولفت انتباههم إلى مجال الأمان الرقمي وطرق حماية أنفسهم في العالم الرقمي، ولا يعد الكتاب مرجعًا شاملًا لكلّ شيء في المجال. يبدأ الكتاب بعرض المفاهيم الأساسية التي يجب أن يمتلكها أيّ قارئ للكتاب، وهي مفاهيمٌ تعتمد عليها الكثير من الفصول الأخرى في الكتاب فلا غنى عنها بحالٍ من الأحوال، ثم ينتقل الكتاب إلى الحديث عن الوعي وأهميته، وقد قدّمنا موضوع الوعي على غيره لأنّه مبدأٌ عام يُمكن تطبيقه في مختلف مجالات الحماية الرقمية وليس شرحًا لطريقة تثبيت برنامج أو إضافة مثلًا، كما أنّه أهم طريقة لحماية المُستخدم نفسَه. ويأتي بعد هذين الفصلين مختلف الفصول التي تشرح اختيار خدماتٍ معينة أو طريقة تأمين أجهزة وأنظمة معينة. يجد القارئ في كلّ فصلٍ من هذه الفصول شرحًا للمفهوم المُراد تأمينه قبل الشروع بطريقة حمايته وتأمينه ولذلك يمكنك قراءة هذه المفاهيم بالترتيب الذي تريد بحسب حاجتك إن أردت ذلك رغم أنه ينصح بقراءتها وفق ترتيبها المتسلسل. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «الأمان الرقمي»، أو مباشرة مما يلي: الفصل الأول: لماذا يجب أن نحافظ على أماننا الرقمي؟ الفصل الثاني: مفاهيم تأسيسية عن الأمان الرقمي الفصل الثالث: الوعي في العالم الرقمي الفصل الرابع: اختيار العتاد والبرامج في العالم الرقمي الفصل الخامس: اختيار الخدمات والمزودات في العالم الرقمي الفصل السادس: تأمين الأشياء الأساسية المحيطة بك في العالم الرقمي الفصل السابع: النسخ الاحتياطي وحفظ البيانات في العالم الرقمي الفصل الثامن: التشفير واستعمالاته في العالم الرقمي الفصل التاسع: كلمات المرور: كيفية حفظها واستعمالها في العالم الرقمي الفصل العاشر: تأمين متصفحات الويب في العالم الرقمي الفصل الحادي عشر: الحماية من مواقع الإنترنت في العالم الرقمي الفصل الثاني عشر: ما يلزم معرفته عند الشراء والدفع عبر الإنترنت الفصل الثالث عشر: تأمين الهاتف المحمول في العالم الرقمي الفصل الرابع عشر: كيف تعرف أنك اخترقت في العالم الرقمي وماذا تفعل حيال ذلك؟ الفصل الخامس عشر: مواضيع متقدمة في الأمان الرقمي1 نقطة -
الإصدار 1.0.0
10314 تنزيل
تُعد أنظمة التشغيل موضوعًا متقدمًا في العديد من برامج علوم الحاسوب، حيث يتعرف المتعلم على كيفية البرمجة بلغة C بحلول الوقت الذي يتعرف فيه على أنظمة التشغيل، وربما يأخذ المتعلم فصلًا دراسيًا في معمارية الحاسوب Computer Architecture قبل ذلك، فيصبح الهدف من تقديم هذا الموضوع عادةً هو عرض تصميم وتنفيذ أنظمة التشغيل للطلاب مع افتراض ضمني أن بعضهم سيجري بحثًا في هذا المجال، أو يكتب جزءًا من نظام تشغيل. هذا الكتاب مترجم عن الكتاب Think OS لكاتبه آلن داوني Allen B. Downey والذي يعد مسودة أولية لم تكتمل بصورة نهائية بعد إذ طُوّر لفصلٍ دراسي في كلية أولين Olin College يدعى أنظمة البرمجيات Software Systems. لا يفترض هذا الكتاب أنك قد درست معمارية الحاسوب، فيجب أن يمنحك فهمًا أفضل أثناء قراءته عن الحاسوب ومعماريته وكيف يعمل المعالج والذاكرة فيه وكيف تُدار العمليات وتُخزَّن الملفات وما يحدث عند تشغيل البرامج، وما يمكنك القيام به لجعل البرامج تعمل بصورة أفضل وأسرع بوصفك مبرمجًا. يشرح الفصل الأول بعض الاختلافات بين اللغات المُصرَّفة compiled واللغات المُفسَّرة interpreted، مع بعض الأفكار حول كيفية عمل المصرِّفات compilers، ويشرح الفصل الثاني كيف يستخدم نظام التشغيل العمليات لحماية البرامج قيد التشغيل من التداخل مع بعضها البعض. ويشرح الفصل الثالث الذاكرة الوهمية virtual memory وترجمة العناوين، ويتحدث الفصل الرابع عن أنظمة الملفات ومجرى البيانات، ويصف الفصل الخامس كيفية تشفير الأرقام والأحرف والقيم الأخرى، ويشرح أيضًا العامِلات الثنائية bitwise operators. أما الفصل السادس، فيشرح كيفية استخدام إدارة الذاكرة الديناميكية وكيفية عملها، ويدور الفصل السابع حول التخبئة caching وهرمية الذاكرة. ويشرح الفصل الثامن تعدد المهام multitasking والجدولة scheduling. ويدور الفصل التاسع حول خيوط POSIX وكائنات المزامنة mutexes، ويشرح الفصل العاشر المتغيرات الشرطية POSIX ومشكلة المنتج / المستهلك، ويدور الفصل الحادي عشر حول استخدام متغيرات تقييد الوصول POSIX وتطبيقها في لغة C. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «مدخل إلى أنظمة التشغيل»، أو تجدها مسردة بالترتيب التالي: الفصل الأول: مفهوم التصريف Compilation في لغات البرمجة الفصل الثاني: العمليات Processes في أنظمة التشغيل الفصل الثالث: الذاكرة الوهمية Virtual memory في نظام التشغيل الفصل الرابع: فهم الملفات Files وأنظمة الملفات file systems الفصل الخامس: تمثيل الأعداد والنصوص بالبتات وإجراء العمليات على مستوى البت الفصل السادس: إدارة الذاكرة Memory management في لغة C الفصل السابع: فهم عملية التخبئة Caching في معمارية الحاسوب الفصل الثامن: تعدد المهام Multitasking في الحواسيب الفصل التاسع: مفهوم الخيوط Threads في عملية المعالجة الفصل العاشر: المتغيرات الشرطية وحلها مشاكل التزامن بين العمليات في لغة C الفصل الحادي عشر: متغيرات تقييد الوصول Semaphores في لغة البرمجة سي C1 نقطة -
الإصدار 1.0.0
8398 تنزيل
إطار العمل Vue.js هو أحد إطارات جافاسكربت المخصصة لبناء تطبيقات ويب والواجهات الأمامية يتميز بأنه إطار شامل واعد سريع الأداء ذاع الصيت يتميز بالكثير من الخصائص القوية ويستحق تعلمه لبناء واجهات مواقع وتطبيقات ويب متميزة وقوية خصوصًا تطبيقات الويب ذات الصفحة الواحدة SPA، توجهت أنظارنا لإضافة محتوى عربي مميز يشمله في خطة لإضافة مصادر تعليمية عالية الجودة تشرح أشهر أطر لغة جافاسكربت لبناء الواجهات الأمامية للمواقع وتطبيقات الويب. يبدأ الكتاب فصوله الأولى بشرح مفهوم إطار العمل والتعرف على Vue.js وأخذك سريعًا وباختصار لبدء استعماله ببناء أول تطبيق عبره. ستبدأ من الفصل الثاني في Vue.js بالتعرف على إطار العمل Vue.js عن قرب وعن آلية عمله وكيفية استعماله في بناء الوجهات الأمامية ثم تنتقل بعدها إلى التعرف على الموجهات الشرطية والتكرارية واستعمالها في قوالب الواجهة الأمامية، يليها الدخول إلى عالم مكونات Vue.js وتعلم كيفية بناءها. ستبدأ بعدها في الفصل السابع الأمور المتقدمة إذ ستتعلم التعامل مع سطر أوامر Vue.js لبناء المشاريع والتطبيقات بسهولة ويسر ثم ستتعرف بعد ذلك على مفاهيم متقدمة في Vue.js وكيفية بناء تطبيقات ذات صفحة واحدة. ستتعلم في الفصول الأخيرة من الكتاب كيفية ربط تطبيقك بالإنترنت وإضافة قاعدة بيانات له وإطلاق إلى العالم الخارجي متحرين استعمال أشهر منصات النشر وأيسرها تعاملًا. حتى تستفيد أكبر استفادة من الكتاب، يجب أن تملك معرفة أساسية مسبقة بلغة HTML ولغة CSS ومعرفة جيدة بلغة جافاسكربت، إذ يركز الكتاب على إطار العمل Vue.js الذي هو أحد أطر عمل جافاسكربت ولن يتطرق الكتاب إلى شرح لغة جافاسكربت، وقد تجد صعوبة في فهم أجزاء الشيفرات والاستفادة من الكتاب دون تلك المعرفة المسبقة. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «مقدمة إلى vuejs»، أو تجدها مسردة بالترتيب التالي: مقدمة إلى Vue.js استخدام Vue.js للتعامل مع DOM الموجهات الشرطية والتكرارية في Vue.js التعرف بالتفصيل على كائن Vue.js مدخل إلى التعامل مع المكونات في Vue.js المزيد حول المكونات في Vue.js إنشاء مشاريع Vue.js باستخدام Vue CLI التعامل مع دخل المستخدم عن طريق نماذج الإدخال في Vue.js المرشحات Filters والـمخاليط Mixins في Vue.js استخدام Vue.js للاتصال بالإنترنت بناء تطبيقات ذات صفحة واحدة باستخدام التوجيه Routing في Vue.js نشر تطبيق Vue.js إلى الإنترنت1 نقطة -
الإصدار 1.0.0
13434 تنزيل
يأخذ هذا الكتاب بيدك في أمثلة عملية ومتنوعة تغطي أساسيات SQL وأساسيات إدارة قواعد بيانات Postgres، وتمر على مزايا مهمة في Postgres تزيد من فاعلية الاستعلامات ووضوح عبارتها، ويصل هذا الكتاب إلى مواضيع متقدمة في إدارة قواعد البيانات كالنسخ الاحتياطي وتتبع استخدام الذاكرة، وبذلك يتميز بأنه مناسب للمبتدئ والمتوسط ويضع قدمك على سكة المستوى المتقدم في قواعد بيانات Postgres. بني هذا الكتاب بدايةً على دليل PostgresGuide لمؤلفه Craig Kerstiens المرخص تحت رخصة CC BY-NC أي كان ترجمةً لذلك الدليل فقط، ولكن لمَّا وجدنا الإصدار المستعمل فيه من Postgres قديمًا وينقص الدليل عدة مواضيع إضافية، آثرنا البناء عليه وتحسينه وإضافة كل ما نراه ناقصًا ليحقق الكتاب مبدأ 80/20. فيما يميزه عن غيره، فهو أننا اتبعنا في بداية العمل على هذا الكتاب قاعدة باريتو 80/20، حيث حرصنا على تغطية 20% من مواضيع PostgreSQL التي تُستخدَم في 80% من الحالات في الواقع والمجال العملي، إذ حاولنا الابتعاد عن التفاصيل غير العملية أو قليلة الاستخدام، أي أن هذا الكتاب لا يتطرق إلى شرح أو استخدام الأدوات المتقدمة والتي قد يندر استخدام بعضها، فلم نرد عرض شيء لا يستخدم إلا في حالات قليلة (تكون قد نسيتها إلى حين استعمالها ;-) ). ساهم بالعمل على هذا الكتاب، مصطفى عطا العايش تأليفًا، وجميل بيلوني تحريرًا وإشرافًا، وأخرجه فنيًا فرج الشامي. نرجو أن نكون قد وفقنا في هذا العمل بتوفير دليل عملي نافع يثري المكتبة العربية. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «المرجع الشامل إلى تعلم PostgreSQL»، أو من هنا مباشرةً مما يلي: الفصل الأول: نظرة عامة على Postgres وتاريخها الفصل الثاني: تثبيت Postgres والتعرف على أساسيات إدارتها لقواعد البيانات الفصل الثالث: أساسيات استخدام صدفة psql الفصل الرابع: استخدام أساسيات SQL في Postgres الفصل الخامس: مزايا متقدمة في Postgres الفصل السادس: أنواع بيانات خاصة في قواعد بيانات Postgres الفصل السابع: إدارة النسخ الاحتياطي في قواعد بيانات Postgres الفصل الثامن: أساسيات إدارة الذاكرة في قواعد بيانات Postgres الفصل التاسع: كيفية إدارة الأداء في قواعد بيانات Postgres الفصل العاشر: أوامر متقدمة في صدفة psql1 نقطة