اذهب إلى المحتوى

لوحة المتصدرين

  1. Mohamed Abdalla6

    Mohamed Abdalla6

    الأعضاء


    • نقاط

      4

    • المساهمات

      56


  2. Adnane Kadri

    Adnane Kadri

    الأعضاء


    • نقاط

      4

    • المساهمات

      5196


  3. مصطفى اوريك

    مصطفى اوريك

    الأعضاء


    • نقاط

      2

    • المساهمات

      74


  4. Seyid Ahmed Khessam

    Seyid Ahmed Khessam

    الأعضاء


    • نقاط

      2

    • المساهمات

      27


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 09/28/21 في كل الموقع

  1. سلام عليكم اريد عمل اتصال بين node js و mysql workbench بدون استخدام اى برامج سيرفر مثل xamp وغيرها لقد حاولت اطبق هذا الفيديو لكن لم ينج الاتصال معى فاريد فى البدء ان ان يعمل معى الاتصال فى هذا الكود وشكرا var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "yourusername", password: "yourpassword" }); con.connect(function(err) { if (err) throw err; console.log("Connected!"); });
    2 نقاط
  2. السلام عليكم | كيف أتمرن على تصميم المواقع بـ html-css-Javascript ؟ هذا اكثر شيء يشكل علي لأنه إذا أردت التمرن عليهم بتقليد تصاميم مواقع معينة كيف أعرف أن الكود الذي كتبته سليم, أقصد كيف أعرف أني مطبق للـ "best practices" في كتابة الكود ليس فقط أحشو التصميم بالأكواد ؟ قلت أن أقلد هذه التصاميم ثم أرى الكود الأصلي لها ثم أقارنها بالكود الذي كتبته لكن المشكلة أن أغلب تصاميم المواقع تستخدم أطر العمل أو لغات أخرى مثل pugjs في كتابة الكود, فهل هناك مشكلة هذه الناحية ؟
    2 نقاط
  3. و عليكم السلام و رحمة الله . التطبيق العملي و بناء ما بني بالفعل لا يعني مماثلة طرق بناءه الأولى أو السير على نفس طريقة مصممها الأول , فما تراه أنت مناسبا أن يتم عمله بتخطيط شبكي Grid Layout يمكن أن أفضل عمله بـخواص الصندوق المرن flexbox مثلا و قس على ذلك الكثير . فقد نختلف في الطرق و نتفق في النتيجة . و هذا ما هو إلا نتيجة طبيعية للتنوع و التضارب بين الطرق , الأدوات و مختلف الفلسفات التي توفرها طبيعة المجال و حجمه و حجم مجتمعه . كما أني أهنئك على عدم النظر أو اختلاس كود الاخرين في مرحلة بناء و تقليد قالب ما , فهذا ما ينمي قدرة النمذجة لديك , أو ترجمة الواقع إلى شيفرة و هيكلية , و ذلك وفق طريقتك و فهمك الخاصتين . يعطيك هذا ثقة أكبر بالشيفرة التي تكتبها و إطلاعا أكبر عليها , و بالتالي تحكما أكبر و أوسع . و هو شيء لطالما ستحتاج إليه طول مسيرتك الدراسية أو العملية . و لا يعني هذا طبعا عدم الإطلاع على شيفرة الاخر و طريقة عمله للفكرة تماما أو بعد التطبيق أيضا , فإن كانت قد بنيت بأدوات تفهمها و تعرفها تأكد أن تقوم بمحاولة فهمها و إستيعابها , و إلا فإن نمذجتك لفكرة الغير بطريقتك كاف . و لذلك فإنه التوجه و البحث عن ما بني بالمهارات التي تكتسبها أفضل و أولى من تقليد أي قالب أو تطبيق , فهذا من شأنه أن ينمي قدراتك أيضا , فتأخذ بدل الطريقة طريقتين . أما عن طرق للتمرن على تصميم المواقع بـ html و css و javascript فإليك بعض النقاط التي أحب الإشارة إليها دوما : قم بتقليد التصاميم و القوالب الجاهزة , و ذلك كتغذية بصرية و تطويرا لقدرتك على النمذجة . قم ببناء تطبيقات بسيطة ( سيتم اقتراح بضعة تطبيقات فيما سيأتي ) , و ذلك لحاجتك لتطوير قدرتك على إستخدام مفاهيم اللغة و أساسياتها و خصوصا في الجافاسكربت . حاول فهم المشاكل التي تصادفها , وصفها , مناقشتها و تبسيطها و البحث عن ما يتعلق بها و قراءة اراء الاخرين و أكوادهم بشأنها . كن نقديا في انتقاء الأفكار , فبدل البحث عن "كيفية فعل كذا" ابحث عن "أفضل الطرق لفعل كذا". استعن بأوراق و ملصقات ملاحظات لتبسيط كل ما يصعب عليك . قم بتجزئة الأفكار إلى الكبيرة إلى أصغر و إلى أخرى أدق و هكذا , أي أنه لا يجب عليك رؤية التطبيق ككل في محاولة لفهمه , بل قم بتجزئته و تفكيك مفاهيمه . و نفس الشيء ينطبق على قوالب المواقع أو أية مجسمات أو تركيبات تظهر صعبة التشكيل بها . إليك 7 تطبيقات يمكنك تطبيق مهاراتك عليها : ساعة رقمية عن طريق الجافاسكربت . ساعة دائرية عن طريق الجافاسكربت و تحويلات الـ CSS . الة حاسبة عن طريق الجافاسكربت . تطبيق إدارة قائمة مهام To Do List . مولد ألوان عشوائية . تطبيق معرض صور Gallery . تطبيق عارض شرائح Slide Show .
    2 نقاط
  4. سلام عليكم حاولت اطبق ال http فى هذا المثال لكن ظهرت لى مشكلة عند عمل run للكود فاين المشكلة ؟ const http = require('http') const server = http.createServer((req, res) => { if (req.url === '/') { res.end('Welcome to our home page') } if (req.url === '/about') { res.end('Here is our short history') } res.end(` <h1>Oops!</h1> <p>We can't seem to find the page you are looking for</p> <a href="/">back home</a> `) }) server.listen(5000) فى الاول لما اعمل رن بشتغل معاى وبعرض لى النص كما فى الصورة ادناه وبعدها يظهر لى الايرور الذى ارسلته لكم فى الاعلى ولم يعرض لى الرسالة
    2 نقاط
  5. الإصدار 1.0.0

    116557 تنزيل

    سطع نجم لغة البرمجة بايثون في الآونة الأخيرة حتى بدأت تزاحم أقوى لغات البرمجة في الصدارة وذاك لمزايا هذه اللغة التي لا تنحصر أولها سهولة كتابة وقراءة شيفراتها حتى أصبحت الخيار الأول بين يدي المؤسسات الأكاديمية والتدريبية لتدريسها للطلاب الجدد الراغبين في الدخول إلى مجال علوم الحاسوب والبرمجة. أضف إلى ذلك أن بايثون لغةً متعدَّدة الأغراض والاستخدامات، لذا فهي دومًا الخيار الأول في شتى مجالات علوم الحاسوب الصاعدة مثل الذكاء الصنعي وتعلم الآلة وعلوم البيانات وغيرها، كما أنَّها مطلوبة بشدة في سوق العمل وتعتمدها كبرى الشركات التقنية. دورة تطوير التطبيقات باستخدام لغة Python احترف تطوير التطبيقات مع أكاديمية حسوب والتحق بسوق العمل فور انتهائك من الدورة اشترك الآن بني هذا العمل على كتاب «How to code in Python» لصاحبته ليزا تاغليفيري (Lisa Tagliaferri) وترجمه إلى العربية محمد بغات وعبد اللطيف ايمش، وحرره جميل بيلوني، ويأتي شارحًا المفاهيم البرمجية الأساسية بلغة بايثون، ونأمل في أكاديمية حسوب أن يكون إضافةً نافعةً للمكتبة العربيَّة وأن يفيد القارئ العربي في أن يكون منطلقًا للدخول إلى عالم البرمجة من أوسع أبوابه. رُبط هذا الكتاب مع توثيق لغة بايثون في موسوعة حسوب لتسهيل عملية الاطلاع على أي جزء من اللغة مباشرة وقراءة التفاصيل باللغة العربية. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «المرجع الشامل إلى تعلم لغة بايثون»، أو مباشرةً من الآتي: المقال الأول: دليل تعلم بايثون اعتبارات عملية للاختيار ما بين بايثون 2 و بايثون 3 المقال الثاني: تثبيت بايثون 3 وإعداد بيئتها البرمجية المقال الثالث: كيف تكتب أول برنامج لك المقال الرابع: كيفية استخدام سطر أوامر بايثون التفاعلي المقال الخامس: كيفية كتابة التعليقات المقال السادس: فهم أنواع البيانات المقال السابع: مدخل إلى التعامل مع السلاسل النصية المقال الثامن: كيفية تنسيق النصوص المقال التاسع: مقدمة إلى دوال التعامل مع السلاسل النصية المقال العاشر: آلية فهرسة السلاسل النصية وطريقة تقسيمها المقال الحادي عشر: كيفية التحويل بين أنواع البيانات المقال الثاني عشر: كيفية استخدام المتغيرات المقال الثالث عشر: كيفية استخدام آلية تنسيق السلاسل النصية المقال الرابع عشر: كيفية إجراء العمليات الحسابية المقال الخامس عشر: الدوال الرياضية المضمنة المقال السادس عشر: فهم العمليات المنطقية المقال السابع عشر: مدخل إلى القوائم المقال الثامن عشر: كيفية استخدام توابع القوائم المقال التاسع عشر: فهم كيفية استعمال List Comprehensions المقال العشرون: فهم نوع البيانات Tuples المقال الحادي والعشرين: فهم القواميس المقال الثاني والعشرين: كيفية استيراد الوحدات المقال الثالث والعشرين: كيفية كتابة الوحدات المقال الرابع والعشرين: كيفية كتابة التعليمات الشرطية المقال الخامس والعشرين: كيفية إنشاء حلقات تكرار while المقال السادس والعشرين: كيفية إنشاء حلقات تكرار for المقال السابع والعشرين: كيفية استخدام تعابير break وcontinue وpass عند التعامل مع حلقات التكرار المقال الثامن والعشرين: كيفية تعريف الدوال المقال التاسع والعشرين: كيفية استخدام *args و**kwargs المقال الثلاثين: كيفية إنشاء الأصناف وتعريف الكائنات المقال الحادي والثلاثين: فهم متغيرات الأصناف والنسخ المقال الثاني والثلاثين: وراثة الأصناف المقال الثالث والثلاثين: كيفية تطبيق التعددية الشكلية (Polymorphism) على الأصناف المقال الرابع والثلاثين: كيف تستخدم منقح بايثون المقال الخامس والثلاثين: كيفية تنقيح شيفرات بايثون من سطر الأوامر التفاعلي المقال السادس والثلاثين: كيف تستخدم التسجيل Logging المقال السابع والثلاثين: كيفية ترحيل شيفرة بايثون 2 إلى بايثون 3
    1 نقطة
  6. عندما اقوم بتنفيذ بمحاولة رفع بعض الملفات على github يقوم بطلب الباسوورد والاميل , عند ادخالهم تأتيني تلك الرسالة remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
    1 نقطة
  7. السلام عليكم ورحمة الله تعالى وبركاته ..♥ اواجه مشكلة في فهم نظام تغليف البيانات حيث انني تابعت اكثر من درس يشرح هاد الامر لكن لم استوعبه خاصة انه ليس له كلمات محجوزة خاصة به او توابع اعتقد انه مجرد مفهوم للكتابة الكود بطريقة سليمة ارجو ولو شرح بسيط عنه وماهي استخداماته اي متى نستعمله وفي الختام اشكر كل من افادني والصلاة والسلام على نبينا وحبيبنا وقائدنا محمد صلواة ربي عليه
    1 نقطة
  8. نعم بالضبط . و أضيف على ذلك , التوابع أيضا . فمن الممكن تغليف التوابع و جعلها غير قابلة للوصول إلا من خلال الصنف نفسه أيضا . كما أظن أن الحاجة لذلك في مسارك و أثناء تطبيقك العملي ستقوم بتوضيح ذلك أكثر لك . تعرف الكلمات public , private و protected في الوسط البرمجي كمحددات وصول ترجمة عن Access Modifiers بحيث تحدد هاته الكلمات الخواص و التوابع التي يمكن الوصول إليها . بحيث أن : public : تعني أن الوصول إليها قابل في كل مكان . protected : تعني أن الوصول محمي فقط داخل الصنف نفسه , و من داخل أي أصناف ترث هذا الصنف أيضا . private : تعني أن الوصول لا يتم إلا من خلال الصنف الذي يحدد هاته الخاصية أو أحد توابعه العامة . .
    1 نقطة
  9. شكرا لك اخي على الشرح الممتاز كالعادة زادك الله علما ينفعك الخلاصة التي وصلت اليها هي ان نظام التغليف يستعمل بشكل عام مع البيانات الحساسة بحيث يتم جعل الخواص التي تحمل قيم حساسة التي لايجب التعديل عليها او التعامل معها بطريقة مباشرة جعلها private ومن اجل التعامل معها سيتوجب استدعاء method من نفس الصنف وتمرير argument في ال method في حالة ما اردنا التعديل على الخواص
    1 نقطة
  10. و عليكم السلام و رحمة الله تعالى و بركاته . لنقم بفهم التغليف كالتالي : التغليف ترجمة عن encapsulation هو ميكانيزمة و طريقة لحماية الخواص و التوابع التابعة لصنف ما من التعديل المباشر عليها مع إمكانية إستعمال تابع معين للصنف لتعديل ذلك . و لكن ما الذي يعنيه ذلك ؟ لنأخذ التالي لفهم الحاجة من التغليف أساسا : تقوم شركات صنع سيارات بتوفير مقود في سياراتها كآلة للتحكم في إتجاهات سير السيارة , و من جانب اخر تقوم بإخفاء التعقيد وراء هاته العملية . أي أنها تقوم بتغليف و تغطية كل ما يتعلق بكيفية سيرها و توفير طريقة بسيطة لتغيير خاصية الإتجاه في السيارة . فهل يبدوا من المنطقي أن نقوم بتوصيل سلك بسلك أو تطبيق قوة ميكانيكية كل مرة نريد فيها تغيير اتجاه سيارة ؟ نفس الشيء ينطبق على التغليف في البرمجة الشيئية , فتغيير الخاصية مباشرة لا يكون سليما أحيانا , و قد يتعلق بمنطق عمل توابع أخرى تتأثر بتغير قيمة هاته الخاصية . و لكن تغييرها عن طريق توفير تابع يقوم بتحمل و اعتبار تبعات هذا التعديل حل نهائي للمشكلة . مثال عملي : ليكن الصنف DBInteract , المسؤول عن التفاعل مع قاعدة البيانات عن طريق عمليات CRUD العادية كالتالي : class DBInteract{ public $db_password = '68426123'; public $db_username = 'root'; public $db_name = 'my-db'; public function insert(string $table ,array $data) { } public function update(string $table ,array $data) { } public function delete(string $table) { } public function select(string $table ,array $rows) { } } و لنفرض أن كل من التوابع المعرفة تحمل شيفرات يمكن فهم وظيفتها عن طريق اسماءها الدلالية . و لنقل أننا نحتاج إدراج مهمة جديدة بجدول tasks في قاعدة البيانات بإسم my-db . أي أن العملية ستكون كالتالي : $db_class = new DBInteract(); $db_class->insert('tasks' ,$data); و منطقي هو أن التابع insert المسؤول عن عملية الإنشاء سيقوم بإستعمال الخواص التالية لمصادقة إتصاله مع قواعد البيانات : public $db_password = '68426123'; public $db_username = 'root'; public $db_name = 'my-db'; المشكلة هنا , هي أن هاته الخواص قابلة للوصول بشكل عادي عن طريق إستدعاء مباشر من أي كائن عن الصنف DBInteract . فلو أن مستخدما ما لصنفنا الجاهز DBInteract قام بتغيير الخاصية db_name بعد عشرات من إستعلامات الإنشاء و القراءة و الحذف و التعديل بمجرد سطر واحد : $db_class->db_name = 'new-db-name'; و لنقل أن بيانات المصادقة تحتاج فحصا قبل إعادة التعيين مثل أن يكون اسم قاعدة بياناتنا سلسلة نصية , و اسم مستخدمنا ليس قيمة فارغة , و كلمة سرنا تشكيلة أرقام . في حالة تعطل ذلك سيخل هذا بعمل كل من التوابع insert , update , delete , select . و هو ما لا نريده طبعا . و لحل المشكل لن نقوم إلا بتغليف هاته الخواص بإستعمال الكلمة المفتاحية private و إنشاء تابع جديد يمكننا من تغيير بيانات المصادقة هاته بطريقة سليمة لا تؤثر على عمل باقي التوابع . و ليكن مثلا : class DBInteract{ private $db_password = '68426123'; private $db_username = 'root'; private $db_name = 'my-db'; public function changeCreds($pass , $un , $db) { if(is_string($db) && is_numeric($pass) && !is_null($un)){ $this->db_password = $pass; $this->db_username = $un; $this->db_name = $db; } } public function insert(string $table ,array $data) { } public function update(string $table ,array $data) { } public function delete(string $table) { } public function select(string $table ,array $rows) { } } الان لو حاول شخص ما تغيير أحد بيانات المصادقة عن طريق مباشرة فهو لن يستطيع , و ستظهر له رسالة تخبره بذلك : cannot access private property و قس على ذلك العديد من الأمثلة و الوضعيات الأخرى التي تكون فكرة التغليف حلا فيها .
    1 نقطة
  11. المشكلة ما اظن انها عامة، لربما لا يقع بها الا ما ندر من الناس وصياغة خاصة لا اظن يعمل بها احد.
    1 نقطة
  12. أنا أخذت دورة " تطوير تطبيقات الجوال بإستخدام تقنيات الويب " ووجدت بها أكثر من لغة برمجة أو خلينا نقول html ,css إستصعبت تعلمهم . هل عادي تغيرون لي الدورة إلى " تطوير التطبيقات بإستخدام لغة JS " ؟؟ وإذا ممكن تخبروني مميزات هذه الدورة بشكل أوضح ؟ لايهمني عدد ساعات الدورة المهم تكون سهلة علي اللغة لغة البرمجة مع الشكر الكبير لكم .
    1 نقطة
  13. حاولت إخبارك بطريقة غير مباشرة أن Html , CSS هم أسهل مستوى يمكن تعلمه وإتقانه، لأن هذه الشيفرات فقط للعرض، وليس عليك عمل خوارزمية لتحقيق خطوت برنامج ما، جافاسكربت يمكنك تعلم أساياتها من دورتها (مسار أساسيات جافاسكربت متاح لك أيضا) مفاهيم جافاسكربت متقدمة بالنسبة ل Html , CSS. تابع أساسيات جافاسكربت من دورتها الخاصة، ثم اختر ماتراه منسباً إن أحببت جافاسكربت ورأيت أن التعامل بها يناسبك ونمط تفكيرك انتقل لدورتها، وإلا أكمل في دورة "تطوير تطبيقات الجوال بإستخدام تقنيات الويب" يتم تحديث الدورات وإضافة مسار بشكل متكرر ، فعدد التطبيقات سوف يزيد، أنت حاول أولا التطبيق مع المدرب وأنتج أول تطبيق لك، ثم ارفعه على المتجر، بعد هذا ستصبح قادراً على برمجة أفكارك الخاصة وصنع تطبيقات متنوعة على رغبتك. دورة تطوير تطبيقات الجوال بإستخدام تقنيات الويب فيها تنوع أكبر بتطبيقات الجوال لأن جميع مساراتها تدور حول كوردوفا وفي كل مسار تتعلم أشياء إضافية وتطبيق مختلف، أما دورة جافاسكربت يوجد مثال واحد لكل تقنية منها، ولكن بالطبع يتم استخدام جميع الأساسيات و جميع ميزات المكتبات و التقنيات أي ستتعلم الكثير، وبعدها اعتمد على نفسك وابحث عن المكتبات وحاول تضمينها في مشاريعك. يمكنك طرح الأسئلة بعد الانهاء من الدورة في قسم أسئلة البرمجية وسيتم متابعتك في جميع المشاريع التي تعمل بها ومساعدتك في حل المشاكل وتقديم الملاحظات اللازمة. يمكنك الوصول لجميع مشاريع الدورات (الملفات) من الرابط: github/HsoubAcademy
    1 نقطة
  14. هل توجد دالة تولد لنا رقم صحيح عشوائى؟ (لامشكل حتى لو كان كود لكن المهم طريقة ما نولد منها أرقام عشوائيه)
    1 نقطة
  15. نعم هناك الكلاس Random يمكنك استخدامه لتوليد أعداد صحيحية عشوائية. نقوم أولاً بتعريف غرض (object) من هذا الكلاس: Random rand = new Random(); ثم بعدها يمكنك استخدام الدالة next عن طريق استدعائها من خلال هذا الغرض لتوليد أعداد عشوائية كالتالي: int number = rand.Next(min, max); حيث تكون الأعداد المولَدة ضمن المجال [min,max] مثال: int number1 = rnd.Next(9, 99); // تولد رقم عشوائي بين ال 9 وال 99 int number2 = rnd.Next(9); // تولد رقم عشوائي بين ال0 وال 9
    1 نقطة
  16. عندما احاول فتح الصفحة تاتيني رسالة Wrong permissions on configuration file, should not be world writable!"
    1 نقطة
  17. تلك الرسالة تظهر بسبب تغيير الصﻻحيات الخاصة بملف ال config.inc.php أو المجلد الحامل لهذا الملف, من الممكن أن تكون قد قمت بتنفيذ أمرٍ ما لتغيير الصﻻحيات مثل sudo chmod -R 777 /opt/lampp/ أو قمت بتغييره بطريقة أخرى , ولكن بوجهٍ عام فإن الطريقة الصحيحة لتغيير الصﻻحيات هي أن تقوم بتغيير صﻻحيات مجلد المشروع وليس مجلد البرنامج كلهُ , وتقوم بتغيير صﻻحيات مجلد المشروع عبر تنفيذ نفس الأمر السابق ولكن تضع مسار مجلد المشروع بدلاً من مسار البرنامج الأب sudo chmod -R 777 /opt/lampp/php_project/ وبالنسبة لحل المشكلة التي تواجهك يمكنك تغيير الصﻻحيات من أجل حل المشكلة عن طريق الأمر التالي sudo chmod 755 /opt/lampp/phpmyadmin/config.inc.php وفي ذلك السؤال المرفق ستجد إجابة أستاذ وائل بها شرح كافي ووافي لكيفية تغيير الصﻻحيات بطريقة صحيحة
    1 نقطة
  18. يمكنك البحث عبر اليوتيوب على قنوات تقوم ببناء موقع ومن ثم تقوم بتقليد ذلك الموقع دون النظر إلى الشفرة البرمجية, وعند الإنتهاء تقوم بالنظر إلى الشفرة البرمجية ومقارنتها بالشفرة خاصتك
    1 نقطة
  19. ما معنى تلك الجملة في sql select count(*) over(partition by st_age order by st_id) from student وبشكل عام ﻻ افهم وظيفة ال over(partition)
    1 نقطة
  20. أداة MYSQL Workbench هي برنامج يحوي عدة أدوات تساعدك في استعراض وتعديل وتصميم وتهجير جداول البيانات، وهي تقوم بذلك بالتواصل مع خدمة MYSQL، أنت لن تتواصل مع الأداة بل مع الخدمة مباشرة يمكنك اتباع الخطوات التالية: تأكد من تشغيل خدمة MySQL على جهازك والتأكد من عنوان المنفذ Port التي تعمل عليه الخدمة (الافتراضي يكون 3306) تأكد من اسم المستخدم وكلمة المرور على الخدمة الذي تريد الدخول منه (الافتراضي هو المستخدم root وليس لديه كلمة سر) (اختياري) يمكنك الاتصال مباشرة بقاعدة بيانات معينة منشئة سابقة تأكد من اسمها قم بتمرير القيم السابقة لمعاملات تابع الاتصال createConnection، التالي طريقة القيام بالاتصال بالقيم الافتراضية: var con = mysql.createConnection({ host : 'localhost', // عنوان الخدمة port : 3306, // اختياري يمكن تجاهله في حال قيمته افتراضية user : 'root', // اسم المستخدم password : '', // كلمة سر المستخدم database : 'database_name' // اختياري اسم قاعدة البيانات });
    1 نقطة
  21. لدي تلك الشفرة البرمجية async function init(){ const data = await fetchData(path); data.map(element=>{ find(element.data); }) } عند محاولة تنفيذها ياتيني ذلك الخطأ Uncaught (in promise) TypeError: data.map is not a function
    1 نقطة
  22. ذلك هو الذي احصل عليه من نافذة الnetwork في الinspect { "#my-carousel .carousel-indicators":[ "<li data-target='#my-carousel' data-slide-to='0' class='active'></li>", "<li data-target='#my-carousel' data-slide-to='1'></li>", "<li data-target='#my-carousel' data-slide-to='2'></li>" ] }
    1 نقطة
  23. يمكننا فهم دالة حساب القوة وهي ضرب العدد بنفسه عدد من المرات، x قوة y هي جداء x*x*x*x* لعدد y من المرات. يمكننا كتابة دالة عودية بهذه الطريقة: public static int pow( int a, int n) { if ( n == 0 ) { return 1; } return a * pow(a,n-1); } سوف تتكرر عملية ضرب a بنفسها n مرة، وشرط التوقف هو n = 0 وبالاستفادة من الرياضيات، وخواص الأس aⁿ as a^n/2 ⨯ a^n/2 2^8 = Prod = ( (a ^ 2) ^ 2) ^ 2 تجزئة القوة والتوزيع /** divide & Conquer دالة to لحساب a^n. * n عدد صحيح موجب */ long power(int a, int n) { if(n==0) return 0; // إن كان الأساس 0 نعيد 0 if(a == 0) return 0; if(n%2 == 0) return power(a*a, b/2); // القوة عدد زوجي else return a * power(a*a, b/2); // القوة عدد فردي } هذا يختصر تعقيد الخوازرمية من (n)O إلى (n)log2 حيث في كل خطوة نحسب العودية لنصف قيمة الأس a^2 = a * a a^3 = a * a * a a^4 = a^2 * a^2 a^5 = a * a ^ 4 = a * a^2 * a^2
    1 نقطة
  24. يوفر سطر أوامر بايثون التفاعلي (Python interactive console)، ويسمى أيضًا مترجم بايثون (Python interpreter) للمبرمجين طريقة سريعة لتنفيذ الأوامر، وتجربة أو اختبار التعليمات البرمجية دون الحاجة إلى إنشاء وكتابة أي شيفرة برمجية. يمكن الوصول من خلال سطر الأوامر التفاعلي إلى جميع دوال بايثون المُضمّنة، وجميع الوحدات المثبّتة، وتاريخ الأوامر، والإكمال التلقائي. ويوفر سطر الأوامر التفاعلي الفرصة لاستكشاف وتجربة شيفرات تعليمات بايثون، والقدرة على نسخ الشيفرة البرمجية ولصقها في ملف الشيفرة المصدرية عندما تصبح جاهزة أي بعد تجريبها والتأكد من عملها. ستتناول هذه المقالة كيفية العمل بسطر الأوامر التفاعلي لبايثون، وكيفية الاستفادة منه أثناء كتابة الشيفرة. فتح سطر الأوامر التفاعلي يمكن الوصول إلى سطر الأوامر التفاعلي من أيّ حاسوب محلي أو خادم مثبّت فيه بايثون. التعليمة التي ستستخدمها عمومًا للدخول إلى سطر الأوامر التفاعلي في الإصدار الافتراضي لبايثون هي: python إذا أعددت البيئة البرمجية وجهزتها وفق إرشادات الدرس السابق، فيمكنك إنشاء بيئة واستعمال إصدار بايثون والوحدات المُثبَّتة فيها عن طريق الدخول أولاً إلى تلك البيئة (إن لم تُهيِّئ البية الوهمية بعد، فعد إلى الدرس السابق وجهِّز البيئة الوهمية قبل تنفيذ الأوامر التالية): cd environments . my_env/bin/activate ثم اكتب الأمر python: (my_env) sammy@ubuntu:~/environments$ python في مثالنا الحالي، الإصدار الافتراضي هو Python 3.5.2، والذي يُعرَض في المخرجات بمجرد إدخال الأمر، إلى جانب إشعار حقوق الملكية، وبعض الأوامر التي يمكنك كتابتها للحصول على معلومات إضافية: Python 3.5.2 (default, Nov 17 2016, 17:05:23) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> في بداية كل سطر ستجد ثلاث علامات "أكبر من" (<<<): >>> يمكنك استهداف إصدارات محددة من بايثون عن طريق إلحاق رقم الإصدار بالأمر، وبدون مسافات مثل: python2.7 Python 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> المخرجات تبيّن لنا أننا نستخدم الإصدار Python 2.7.12. إذا كان هذا هو الإصدار الافتراضي لبايثون 2، فيمكننا أيضًا الدخول إلى سطر الأوامر التفاعلي باستخدام الأمر python2. بالمقابل، يمكننا استدعاء إصدار بايثون 3 الافتراضي باستخدام الأمر التالي: python3 Python 3.5.2 (default, Nov 17 2016, 17:05:23) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> يمكن أيضًا أن نفتح سطر الأوامر التفاعلي أعلاه باستخدام الأمر python3.5. بعد تشغيل سطر الأوامر التفاعلي لبايثون، يمكننا المضي قدمًا والبدء في العمل. العمل في سطر أوامر بايثون التفاعلي يقبل مترجم بايثون التفاعلي (Python interactive interpreter) قواعد لغة بايثون، والتي تضعها بعد البادئة <<<. يمكننا، على سبيل المثال، إنشاء متغير وإسناد قيمة له بالشكل التالي: >>> birth_year = 1868 بمجرد تعيين قيمة العدد الصحيح 1868 إلى المتغير birth_year، سنضغط على زر الإدخال ونحصل على سطر جديد يبدأ بثلاث علامات "أكبر من" (<<<): >>> birth_year = 1868 >>> يمكننا الاستمرار في تعيين المتغيرات، وإجراء الحسابات الرياضياتية: >>> birth_year = 1868 >>> death_year = 1921 >>> age_at_death = death_year - birth_year >>> print(age_at_death) 53 >>> كما نفعل في ملفات البرامج النصية، أنشأنا متغيرات جديدة أخرى وأسندنا قيمةً لها تناسب اسمها، ثم طرحنا قيمة متغيرٍ من آخر، وطلبنا من سطر الأوامر طباعة المتغير الذي يمثل الفرق عبر الدالة print()‎. يمكنك أيضًا استخدام سطر الأوامر التفاعلي كآلة حاسبة: >>> 203 / 20 10.15 >>> هنا، قسمنا العدد الصحيح 203 على 20، نحصل على الناتج 10.15. تعدد الأسطر عندما نكتب شيفرة متعددة الأسطر، سيستخدم المترجم أسطر الاستمرارية، وهي أسطر مسبوقة بثلاث نقاط (...). وللخروج من أسطر الاستمرارية، ستحتاج إلى الضغط على الزر ENTER مرتين. الشيفرة التالية تعيّن قيمتي متغيّرين، ثم تستخدم عبارة شرطية لتحديد ما يجب طباعته: >>> sammy = 'Sammy' >>> shark = 'Shark' >>> if len(sammy) > len(shark): ... print('Sammy codes in Java.') ... else: ... print('Sammy codes in Python.') ... Sammy codes in Python. >>> في هذه الحالة، طولا السلسلتين النصيتين متساويان، لذلك يتم تنفيذ العبارة else. لاحظ أنك ستحتاج إلى الحفاظ على مسافة بادئة بايثون (Python indenting) المؤلفة من أربعة مسافات بيضاء، وإلا سيُطلق خطأٌ: >>> if len(sammy) > len(shark): ... print('Sammy codes in Java.') File "<stdin>", line 2 print('Sammy codes in Java.') ^ IndentationError: expected an indented block >>> إضافة إلى تجربة التعليمات البرمجية متعددة الأسطر في سطر الأوامر، يمكنك أيضًا استيراد الوحدات. استيراد الوحدات يوفر لك مترجم بايثون طريقةً سريعةً للتحقق مما إذا كانت وحدات معيّنة متوفرة في بيئة البرمجة الحالية. يمكنك ذلك باستخدام العبارة import: >>> import matplotlib Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'matplotlib' في الحالة أعلاه، لم تكن الوحدة matplotlib متاحة في بيئة البرمجة الحالية. لتثبيت تلك الوحدة، ستحتاج إلى ترك المترجم التفاعلي، وتثبيتها باستخدام أداة إدارة الحزم pip مثل العادة: (my_env) sammy@ubuntu:~/environments$ pip install matplotlib Collecting matplotlib Downloading matplotlib-2.0.2-cp35-cp35m-manylinux1_x86_64.whl (14.6MB) ... Installing collected packages: pyparsing, cycler, python-dateutil, numpy, pytz, matplotlib Successfully installed cycler-0.10.0 matplotlib-2.0.2 numpy-1.13.0 pyparsing-2.2.0 python-dateutil-2.6.0 pytz-2017.2 بمجرد تثبيت الوحدة matplotlib هي وجميع تبعياتها بنجاح، يمكنك العودة إلى المترجم التفاعلي: (my_env) sammy@ubuntu:~/environments$ python في هذه المرحلة، لن تتلقى أيّ رسالة خطأ إن استوردت الوحدة، ويمكنك استخدام الوحدة المثبتة إما داخل سطر الأوامر، أو داخل ملف. الخروج من سطر أوامر بايثون التفاعلي هناك طريقتان رئيسيتان لترك سطر الأوامر التفاعلي: إما استخدام اختصار لوحة المفاتيح، أو استخدام دالة من دوال بايثون. اختصار لوحة المفاتيح هو CTRL+D في أنظمة *نيكس، أو CTRL+Z ثم CTRL في أنظمة ويندوز، وبذلك ستخرج من سطر الأوامر، ويعيدك إلى البيئة الطرفية الأصلية: ... >>> age_at_death = death_year - birth_year >>> print(age_at_death) 53 >>> sammy@ubuntu:~/environments$ بدلًا من ذلك، الدالة quit()‎ ستنهي سطر الأوامر التفاعلي، وتعيدك إلى بيئة المحطة الطرفية الأصلية التي كنت فيها سابقًا: >>> octopus = 'Ollie' >>> quit() sammy@PythonUbuntu:~/environments$ في حال استخدام الدالة quit()‎، فستُسجَّل في ملف التأريخ (history file)، بالمقابل لن يُسجّل اختصار لوحة المفاتيح CTRL+D ذلك: # /home/sammy/.python_history الملف ... age_at_death = death_year - birth_year print(age_at_death) octopus = 'Ollie' quit() يمكن إنهاء مترجم بايثون بكلا الطريقتين، فاختر ما يناسبك. الاطلاع على التأريخ من فوائد سطر الأوامر التفاعلي أنّ جميع أوامرك تؤرَّخ في الملف ‎.python_history في أنظمة *ينكس، بحيث يمكنك الاطلاع عليها في أيّ محرر نصي، مثل nano: nano ~/.python_history بمجرد فتحه باستخدام محرر نصوص، سيبدو ملف تأريخ بايثون الخاص بك على هذا النحو: # /home/sammy/.python_history الملف import pygame quit() if 10 > 5: print("hello, world") else: print("nope") sammy = 'Sammy' shark = 'Shark' ... بمجرد الانتهاء من ملفك، يمكنك الضغط على CTRL+X للخروج. من خلال تتبع الأحداث المُؤرَّخة في بايثون، يمكنك الرجوع إلى الأوامر والتجارب السابقة، ونسخ ولصق أو تعديل الشيفرة لاستخدامها في الملفات البرمجية أو في Jupyter Notebook. الخلاصة سطر الأوامر التفاعلي هو فضاءٌ لتجربة شيفرة بايثون، إذ يمكنك استخدامه كأداة للاختبار والتجريب وغير ذلك. لتنقيح (Debug) ملفات البرمجة في بايثون، يمكنك استخدام الوحدة code لفتح مترجم تفاعلي داخل ملف، وسنتحدث عن ذلك بالتفصيل في الدرس التالي: كيفية تنقيح بايثون باستخدام سطر الأوامر التفاعلي. هذه المقالة جزء من سلسة مقالات حول تعلم البرمجة في بايثون 3. ترجمة -وبتصرّف- للمقال How To Work with the Python Interactive Console لصاحبته Lisa Tagliaferri اقرأ أيضًا المقالة اللاحقة: كيفية كتابة التعليقات في بايثون 3 المقالة السابقة: كيف تكتب أول برنامج لك في بايثون 3 المرجع الشامل إلى تعلم لغة بايثون كتاب البرمجة بلغة بايثون
    1 نقطة
×
×
  • أضف...