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

مرفت مهنا

الأعضاء
  • المساهمات

    47
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    1

آخر يوم ربح فيه مرفت مهنا هو ديسمبر 15 2017

مرفت مهنا حاصل على أكثر محتوى إعجابًا!

آخر الزوار

1873 زيارة للملف الشخصي

إنجازات مرفت مهنا

عضو مساهم

عضو مساهم (2/3)

23

السمعة بالموقع

5

إجابات الأسئلة

  1. السلام عليكم معالجة الصور الرقمية والذكاء الصناعي باستخدام الشبكات العصبونية ضمن بيئة ماتلاب التعرف على صنف الأشجار بناء على صورة أوراقها بالتوفيق
  2. هذه السكربتات تعمل ضمن بيئة لينكس فقط ومكتوب ضمن الموقع طريقة تشغيلها فمثلا في السكربت الأول تقوم بنسخه على الحاسب ضمن مجلد معين يحوي على ملفات الفيديو التي تريد تحولها ثم تنتقل من التيرمنل (سطر الأوامر) ثم تنفذ الأمر: bash create-vod-hls.sh beach.mkv حيث beach.mkv هو اسم الملف الذي تريد تحويله و create-vod-hls.sh هو اسم السكربت والأمر bash من أجل تنفيذ السكربت
  3. السلام عليكم إن معالجة الصور الرقمية مجال واسع وقبل تحديد الخوارزمية يجب تحديد الهدف من معالجة الصور أهي من التعرف على الوجوه مثلا أو من أجل الحصول على رقم من صورة (لوحة سيارة مثلا) حيث تهدف المعالجة على استخلاص معلومات معينة يتم استخدامها لاحقا في تطبيقات أخرى مثل الذكاء الصناعي والشبكات العصبونية وأفضل بيئة برمجية لمعالجة الصور هي الماتلاب حيث تحوي على دوال جاهزة لمختلف مراحل وعمليات معالجة الصور وشكرا
  4. مقدمة: إن Django هو عبارة عن إطار عمل برمجي مفتوح المصدر لتطوير تطبيقات الويب مكتوب بلغة البرمجة Python، ويقوم على النمط البنائي للبرمجيات model template view (MTV) أي النموذج-القالب-العرض، والمُستمد من النمط البنائي model–view–controller (MVC) أي النمط والعرض والمتحكم. حيث قامت مؤسسة إطار العمل Django البرمجية بتعريف النمط model على أنه مصدر مفرد ومحدد من البيانات، والعرض view على أنه عبارة عن البيانات التي يتم إظهارها للمستخدم والناتجة عن استدعاء دالة لغة البرمجة Python الخاصة بالاستجابة لطلب العناوين الالكترونية URL، والقالب على أنه عبارة عن الآلية التي يستخدمها Django لتوليد صفحات HTML. إن مبادئ إطار العمل البرمجي Django هي: قابلية التوسُّع وإعادة الاستخدام وسرعة التطوير، كما يمتاز بالتماسك واستقلالية مكوناته عن بعضها. أي أن إطار العمل Django يقوم على المبدأ البرمجي لا تكرر نفسك DRY programming . سنشرح في هذه المقالة طريقة تهيئة البيئة البرمجية لإطار العمل Django، كما سيتم شرح طريقة تنصيب Python 3 وpip 3 وDjango وvirtualenv لتزويدك بالأدوات الضرورية لتطوير تطبيقات الويب باستخدام إطار العمل Django. المتطلبات: حساب مستخدم عادي (غير جذر "root") بصلاحيات sudo مُهيّأ مسبقًا على خادم لينكس Debian أو Ubuntu. الخطوة الأولى- تنصيب Python ومدير الحزم pip: قبل البدء بتنصيب لغة البرمجة Python، يجب القيام بتحديث نظام التشغيل عن طريق تنفيذ الأمر التالي في موجه أوامر لينكس: sudo apt-get update && sudo apt-get -y upgrade حيث تم استخدم العلم -y من أجل تأكيد موافقتنا على تنصيب جميع البرامج والحزم البرمجية المحدَّثة (كي لا نقوم بتأكيد الموافقة يدويًا أثناء عملية التحديث). وعند السؤال عن إعداد grub-pc نضغط المفتاح ENTER لقبول الإعدادات الافتراضية، أو نُعدّه كما نريد. تنصح مؤسسة إطار العمل Django البرمجية باستخدام الإصدار Python 3 من لغة البرمجة Python، لذا بعد انتهاء عملية تحديث النظام سنقوم بتنصيب Python 3، وذلك بتنفيذ الأمر التالي في موجه أوامر لينكس: sudo apt-get install python3 وللتأكّد من أنه تم تنصيب Python 3 بنجاح، ننفذ أمر عرض إصدارها في موجه الأوامر: python3 –V فنحصل على الخرج التالي في نافذة موجه الأوامر: Output Python 3.5.2 بعد تنصيب Python 3، سنقوم بتنصيب الأداة pip الخاصة بإدارة وتنصيب حزم Python البرمجية، وذلك بتنفيذ الأمر التالي: sudo apt-get install -y python3-pip وللتأكد من نجاح عملية تنصيب الأداة pip، ننفذ أمر عرض إصدارها في موجه الأوامر: pip –V فنحصل على الخرج التالي في نافذة موجه الأوامر: Output pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5) الآن وبعد أن تم الانتهاء من تنصيب أداة تنصيب وإدارة الحزم pip، نستطيع استخدامها لتنصيب الحزم الضرورية لبيئة Python البرمجية. الخطوة الثانية- تنصيب البيئة الافتراضية Virtualenv البيئة الافتراضية virtualenv هي عبارة عن بيئة تطوير برمجية معزولة عما حولها، والتي تسمح لنا بتنصيب البرامج وحزم Python بشكل مضمَّن فيها، وبالتالي تمنع تفاعل هذه البرامج والحزم مع البيئة العامة للخادم. هذا ويتم تنصيب البيئة الافتراضية باستخدام أداة تنصيب وإدارة الحزم كما يلي: pip3 install virtualenv وللتأكد من أنه تم تنصيب virtualenv بنجاح، ننفذ أمر عرض إصدارها كما يلي: virtualenv –-version فنحصل على الخرج التالي في نافذة موجه الأوامر: Output 15.1.0 أي أنه تم تنصيب البيئة الافتراضية virtualenv بنجاح، وبالتالي أصبح بإمكاننا عزل تطبيق الويب الذي سوف نطوره بإطار العمل Django وكل ما يتعلق به من برمجيات عن باقي مشاريع وحزم Python البرمجية الموجودة على النظام. الخطوة الثالثة- تنصيب إطار العمل البرمجي Django: هناك ثلاث طرق لتنصيب إطار العمل البرمجي Django هي: الخيار الأول: تنصيب إطار Django ضمن البيئة الافتراضية virtualenv. وتعد هذه الطريقة مثالية عند الرغبة بعزل Django عن بيئة الخادم العامة. الخيار الثاني: تنصيب إطار Django من المصدر، تُستخدم هذه الطريقة عند الرغبة بتنصيب آخر إصدار Django مباشرةً من مصدره، في حال لم يتوفرا في مخزن Ubuntu APT. غير أن طريقة التّنصيب هذه تتطلب الانتباه والترقية المستمرة عند الرغبة بالمحافظة على Django محدثًا بشكل مستمر. الخيار الثالث: تنصيب إطار Django بشكل عام باستخدام أداة تنصيب الحزم pip. سنستخدم في هذه المقالة الخيار الثالث في تنصيب إطار العمل Django ضمن البيئة الافتراضية، لكن علينا في البّداية إنشاء مجلد جديد باسم django-apps (أو أي اسم آخر) ضمن المسار home على الخّادم، من أجل احتواء تطبيق Django الخّاص بنا، وذلك بتنفيذ الأوامر التالية في موجه أوامر النّظام: mkdir django-apps cd django-apps ثم نقوم بإنشاء بيئتنا الافتراضية باسم env ضمن المجلد django-apps، وذلك بتنفيذ الأمر التالي في موجه أوامر النظام: virtualenv env ثم نقوم بتفعيل بيئتنا الافتراضية env، وذلك بتنفيذ الأمر التالي: . env/bin/activate فيتحول موجه الأوامر من النظام إلى البيئة الافتراضية كما يلي: (env) sammy@ubuntu:$ والآن سنقوم بتنصيب django ضمن البيئة الافتراضية env، عن طريق الأداة pip كما يلي: (env) sammy@ubuntu:$ pip install django وللتأكد من أنه تم تنصيب إطار العمل django بنجاح، ننفذ أمر عرض إصداره كما يلي: (env) sammy@ubuntu:$ django-admin –-version فنحصل على الخرج التالي في نافذة موجه الأوامر: Output 2.0.1 الآن وبعد أن تم تنصيب إطار العمل django بنجاح، نستطيع الانتقال لإنشاء مشروع تجريبي للتأكد من أن كل شيء يعمل بشكل سليم. الخطوة الرابعة- إنشاء مشروع تجريبي بإطار العمل Django: سنقوم باختبار إطار العمل البرمجي Django المُنصَّب من خلال إنشاء هيكل تطبيق الويب. ضبط إعدادات جدار الحماية: في البداية يجب علينا إن كان ممكنًا فتح المنفذ الذي سوف نستخدمه في جدار حماية الخادم، وفي حال كانت أداة إعداد جدار الحماية UFW مُنصّبة على الخادم، يمكن عندها فتح منفذ بتنفيذ الأمر التالي: (env) sammy@ubuntu:$ sudo ufw allow 8000 وفي حال كُنت تَستخدم جدار حماية DigitalOcean، قم باختيار HTTP من بين قواعد دخل جدار الحماية. بدء المشروع: نستطيع الآن توليد مشروع جديد عن طريق الأداة django-admin والمستخدمة في إدارة المهام في Python، وذلك باستخدام الأمر startproject من أجل إنشاء بنية مسار المشروع (الملفات والمجلدات الأساسية) لموقع الويب التجريبي، وذلك كما يلي: (env) sammy@ubuntu:$ django-admin startproject testsite نستطيع الآن الانتقال إلى مسار المشروع لتصفح ملفاته ومجلداته التي تم إنشائها وذلك بتنفيذ الأوامر التالية: (env) sammy@ubuntu:$ cd testsite (env) sammy@ubuntu:$ ls Output manage.py testsite نلاحظ أن هذا المسار يحتوي على الملف manage.py والمجلد testsite. إن الملف manage.py مشابه للأداة django-admin حيث يقوم بوضع حزمة المشروع في sys.path، كما يقوم بإعداد متغيرات البيئة ل DJANGO_SETTINGS_MODULE بحيث تشير إلى ملف المشروع settings.py. هذا ويمكن عرض محتويات الملف manage.py باستخدام الأمر less كما يلي: (env) sammy@ubuntu:$ less manage.py وعند الانتهاء من قراءته نضغط المفتاح q للخروج منه. والآن سننتقل إلى المجلد testsite لتصفح باقي الملفات التي تم إنشائها وذلك بتنفيذ الأوامر التالية: (env) sammy@ubuntu:$ cd testsite/ (env) sammy@ubuntu:$ ls Output __init__.py settings.py urls.py wsgi.py نلاحظ أنه يحتوي على مجموعة من الملفات هي: __init__.py: يلعب هذا الملف كنقطة دخول إلى مشروع Python. settings.py: يصف هذا الملف إعدادات الإطار Django الذي تم تنصيبه، كما يسمح للإطار Django بمعرفة الخيارات المتاحة. urls.py: ويتضمن هذا الملف على اللائحة urlpatterns والتي تُستخدم لتوجيه العناوين الالكترونية URLs إلى العروض الموافقة لها views. wsgi.py: ويتضمن على إعدادات واجهة مدخل خادم الويبWeb Server Gateway Interface (WSGI)، والتي هي منصة Python القياسية المستخدمة في نشر خوادم وتطبيقات الويب على استضافة الويب. بدء وعرض موقع الويب الذي تم إنشائه: نستطيع الآن تشغيل الخادم runserver وعرض الموقع على المضيف والمنفذ المخصص، وذلك بتنفيذ الأمر: (env) sammy@ubuntu:$ runserver يجب إضافة عنوان IP الخادم إلى لائحة ALLOWED_HOSTS ضمن الملف settings.py الموجود في المسار: ~/test_django_app/testsite/testsite/. يتضمن المتغير ALLOWED_HOSTS لائحة من السلاسل النصية التي تمثل أسماء المضيف والنطاق host/domain التي يستطيع Django خدمتها، حيث تم وضع معيار الأمان هذا لمنع اختراقات الترويسة والتي يمكن أن تتم حتى ولو تم مراعاة الكثير من إعدادات الأمان لخادم الويب. يمكنك استخدم أي محرر نصوص من أجل إضافة عنوان IP الخادم الخاص بك إلى الملف settings.py، فمثلا يمكنك استخدام محرر نصوص موجه الأوامر nano بتنفيذ الأمر التالي: (env) sammy@ubuntu:$ nano ~/django-apps/testsite/testsite/settings.py فبعد أن يُفتح الملف عليك الانتقال إلى قسم ALLOWED_HOSTS ثم إضافة عنوان IP الخادم الخاص بك ضمن القوسين وبين علامة أو علامتي تنصيص كما هو موضح في الملف التالي: ثم قم بحفظ التعديل وإنهاء المحرر nano وذلك بالضغط على المفاتيح CONTROL وX ثم ضغط المفتاح y (نعم) عند سؤال المحرر عن الرغبة بحفظ التعديلات على الملف، ثم العودة إلى مسار المشروع بتنفيذ الأمر التالي: (env) sammy@ubuntu:$ cd ~/django-apps/testsite/ بعد العودة لمسار المشروع، ننفذ الأمر التالي بعد استبدال your-server-ip بعنوان IP الخادم الذي قمنا بتخصيصه في الخطوة السابقة: (env) sammy@ubuntu:$ python3 manage.py runserver your-server-ip:8000 ثم نقوم بإدخال العنوان http://your-server-ip:8000/ طبعاً بعد استبدال your-server-ip بعنوان IP الخادم، في المتصفح من أجل عرض موقع الويب التجريبي الذي قمنا بإنشائه فيظهر كما يلي: وهذا يؤكد على أنه تم تنصيب إطار العمل البرمجي Django بشكل صحيح، وعلى أن مشروعنا التجريبي يعمل بشكل صحيح أيضًا. بعد الانتهاء من تصفح الموقع نقوم بإيقاف الأمر runserver وذلك بالضغط على المفاتيح CTRL وC، فنعود إلى موجه أوامر بيئتنا الافتراضية. ثم نقوم بالخروج من البيئة الافتراضية والرجوع إلى موجه أوامر النظام وذلك بتنفيذ الأمر التالي: (env) sammy@ubuntu:$ deactivate ملخص: تم في هذه المقالة شرح طريقة تحديث Python 3 لآخر إصدار لها من مخزن Ubuntu APT، كما تم شرح طريقة تنصيب أداة تنصيب وإدارة الحزم pip 3، والبيئة الافتراضية virtualenv، والإطار البرمجي Django. ترجمة بتصرف للمقال: [How To Install Django and Set Up a Development Environment on Ubuntu 16.04] لصاحبه Jeremy Morris
  5. السلام عليكم أن كنت نعمل على نظام Ubuntu فإن لغة البرمجة Python 3 تكون منصبة بشكل افتراضي قم في البداية بتحديث النظام بتنفيذ الأمر التالي في موجه أوامر النظام: $ sudo apt-get update $ sudo apt-get -y upgrade ثم قم بالتأكد من وجود الاصدار كما يلي: $ python3 –V يجب أن تكون نتيجة التنفيذ قريبة من الخرج التالي: Python 3.5.2 سنقوم الآن بتنصيب الأداة pip الخاصة بإدارة حزم Python البرمجية, وذلك بتنفيذ الأمر التالي: $ sudo apt-get install -y python3-pip تُستخدم الأداة pip من أجل تنصيب وإدارة حزم Python البرمجية المراد استخدامها في عملية تطوير المشاريع البرمجية, حيث يتم تنصيب حزم Python البرمجية بتنفيذ الأمر التالي: $ pip3 install package_name حيث package_name هو اسم حزمة Python البرمجية المراد تنصيبها, والتي يمكن أن تكون مثلاً الحزمة Django المستخدمة في تطوير تطبيقات الويب. أرجو ان أكون قد وفُقت في حل مشكلتك وشكرا
  6. يؤمن تطبيق المفكرة Jupyter Notebook موجه أوامر تفاعلي شبيه بتطبيقات الويب، والذي يمكن استخدامه مع العديد من لغات البرمجة مثل Python و Julia و R و Haskell و Ruby، وذلك في التطبيقات الخاصة بالبيانات والإحصاء والذكاء الصناعي. سيتم في هذه المقالة شرح طريقة تهيئة وإعداد تطبيق المفكرة Jupyter Notebook للعمل مع أكواد لغة البرمجة Python 3 محليًا أو من الخادم Ubuntu 16.04 server. إن تطبيق المفكرة Jupyter Notebook هو عبارة عن برنامج مفكرة يقوم بتوليد المستندات المتضمنة على الأكواد البرمجية والشروحات والصور والمخططات البيانية والمعادلات الرياضية، لاستخدامها في عرض وتطوير ومشاركة الأبحاث العلمية. المتطلبات قبل البدء يجب توفر بيئة برمجية مهيّأة محليًا (على الحاسب الشخصي) أو على الخادم Ubuntu 16.04 مع امتلاك صلاحية مدير النظام (المستخدم الجذر root) أو استخدام الأمر sudo عند تنفيذ الأوامر في موجه أوامر لينكس. الخطوة الأولى- تنصيب تطبيق المفكرة Jupyter Notebook سيتم استخدام أداة إدارة الحزم pip لتنصيب تطبيق المفكرة Jupyter Notebook في بيئة Python البرمجية المُنشأة مسبقًا. لكن يجب في البداية الانتقال إلى المجلدenvironments الخاص ببيئة Python البرمجية my_env المُنشأة مسبقًا وتفعيلها، وذلك بتنفيذ الأوامر التالية في موجه أوامر النظام: sammy@ubuntu:~$ cd ~/environments sammy@ubuntu:~/environments$ . my_env/bin/activate (my_env) sammy@ubuntu:~/environments$ ثم علينا التأكد من أن الأداة pip محدّثة لآخر إصدار وذلك بتنفيذ الأمر التالي: (my_env) sammy@ubuntu:~/environments$ pip install --upgrade pip ثم نقوم عن طريق الأداة pip بتنصيب تطبيق المفكرة Jupyter Notebook في البيئة البرمجية my_env، وذلك بتنفيذ الأمر التالي: (my_env) sammy@ubuntu:~/environments$ pip install jupyter وهكذا تم تنصيب تطبيق المفكرة Jupyter Notebook في البيئة البرمجية. الخطوة التالية وهي اختيارية للذين يريدون الاتصال عبر قناة الاتصال SSH بواجهة الويب التفاعلية لتطبيق المفكرة Jupyter Notebook المنصَّب على الخادم. الخطوة الثانية (اختيارية)- الاتصال بتطبيق المفكرة Jupyter Notebook المنصَّب على الخادم عبر قناة الاتصال SSH سيتم في هذه الخطوة شرح طريقة الاتصال بواجهة الويب التفاعلية لتطبيق المفكرة Jupyter Notebook المنصَّب مسبقًا على الخادم، وذلك عبر قناة الاتصال SSH. حيث تؤمن قناة الاتصال SSH اتصالاً آمنًا بتطبيق المفكرة Jupyter Notebook كونه يستخدم منفذ محدد في الخادم (مثل المنفذ :8888 أو :8889 الخ). سيتم في الفقرتين التاليتين شرح طريقة إنشاء قناة الاتصال SSH. الأولى من نظام التشغيل ماكنتوش أو لينكس، والثانية من نظام التشغيل ويندوز. طريقة إنشاء قناة الاتصال SSH من نظام التشغيل ماكنتوش أو لينكس سيتم في هذه الفقرة شرح طريقة إنشاء قناة اتصال SSH من نظام التشغيل ماكنتوش أو لينكس، باستخدام الأمر ssh مع مجموعة من المعاملات التي تؤمن نجاح عملية الاتصال. يمكن إنشاء قناة اتصال SSH جديدة بتنفيذ الأمر التالي في نافذة جديدة لموجه أوامر النظام: $ ssh -L 8888:localhost:8888 your_server_username@your_server_ip حيث يستخدم الأمر ssh من أجل فتح اتصال SSH، في حين يستخدم العلم -L لتحديد المنفذ المعطى في المضيف المحلي (العميل) الذي سيتم توجيهه إلى المنفذ والمضيف البعيد (الخادم) المعطى، أي أن أي شيء سيعمل على المنفذ الثاني (مثلا 8888) على الخادم، سيظهر على المنفذ الأول (مثلا 8888) على العميل (الحاسب الشخصي). ويفضل تغيير رقم المنفذ 8888 إلى أي رقم آخر اختياري لتجنب وجود عملية أخرى تعمل على نفس المنفذ. إن المُعامل your_server_username هو اسم المستخدم (مثلا sammy) الذي تم إنشاؤه مسبقًا على الخادم، والمُعامل your_server_ip هو عنوان IP للخادم (مثلا 203.0.113.0). أي يصبح الأمر السابق بعد إدخال اسم المستخدم وعنوان IP للخادم كما يلي: $ ssh -L 8888:localhost:8888 sammy@203.0.113.0 وفي حال نجاح عملية الاتصال بالخادم وعدم حدوث أي خطأ، ينتقل موجه أوامر النظام إلى البيئة البرمجية المهيّأة مسبقًا على الخادم كما يلي: (my_env) sammy@ubuntu:~/environments$ ثم نقوم بتشغيل تطبيق المفكرة Jupyter Notebook المنصَّب مسبقًا في بيئتنا البرمجية كما يلي: (my_env) sammy@ubuntu:~/environments$ jupyter notebook والآن أصبح بالإمكان التفاعل مع تطبيق المفكرة Jupyter Notebook من خلال واجهة الويب التفاعلية الخاصة به، وذلك بإدخال العنوان الالكتروني http://localhost:8888 في المتصفح، كما يجب إدخال السلسلة الرمزية token الخاصة بالتصديق عند طلبها من قبل المتصفح، أو كتابتها بعد العنوان في المتصفح. طريقة إنشاء قناة الاتصال SSH من نظام التشغيل ويندوز عن طريق Putty تستخدم الأداة Putty لإنشاء قناة اتصال SSH في نظام التشغيل ويندوز، لذا يجب في البداية تنصيبها، وعند فتحها تظهر واجهة الأداة كما هو موضح بالشكل التالي: حيث يتم إدخال العنوان الإلكتروني URL للخادم أو عنوان IP ضمن حقل اسم المضيف Host Name، ثم الضغط على الخيار SSH في أسفل النافذة اليسارية من واجهة الأداة، فتظهر قائمة منسدلة من الخيارات، نختار منها الخيار Tunnels فتظهر في النافذة اليمينية مجموعة من خيارات التحكم بقناة الاتصال SSH كما هو موضح بالشكل التالي: ثم نقوم بإدخال رقم منفذ الحاسب الشخصي المراد استخدامه لتطبيق المفكرة Jupyter Notebook (مثلًا 8888)، ضمن حقل منفذ المصدر Source port، ويفضل أن يكون رقم هذا المنفذ أكبر من 8888 لضمان عدم وجود أي تطبيق أخر يعمل على هذا المنفذ. ثم ندخل العنوان localhost:8888 في حقل الهدف Distination حيث :8888 هو رقم المنفذ الذي يعمل عليه تطبيق المفكرة Jupyter Notebook في الخادم، ثم نضغط على زر الإضافة Add، فيظهر المنفذ في قائمة المنافذ الموجَّهة Forwarded ports. وأخيرًا نضغط على زر الفتح Open من أجل الاتصال بالخادم عن طريق قناة الاتصال SSH، ثم ندخل العنوان localhost:8888 (طبعًا يجب أن يكون رقم المنفذ موافقًا لرقم المنفذ الذي تم اختياره) في متصفح الويب من أجل الاتصال بتطبيق المفكرة Jupyter Notebook العامل على الخادم، كما يجب إدخال السلسلة الرمزية token الخاصة بالتصديق عند طلبها من قبل المتصفح، أو كتابتها بعد العنوان في المتصفح. الخطوة الثالثة- تشغيل تطبيق المفكرة Jupyter Notebook بعد الانتهاء من تنصيب تطبيق المفكرة Jupyter Notebook، يصبح بالإمكان تشغيله من موجه أوامر النظام بتنفيذ الأمر التالي: (my_env) sammy@ubuntu:~/environments$ jupyter notebook فيُطبع في نافذة موجه الأوامر سجل معلومات تشغيل تطبيق المفكرة Jupyter Notebook كما يلي: [I NotebookApp] Serving notebooks from local directory: /home/sammy [I NotebookApp] 0 active kernels [I NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/ [I NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). ... حيث تتضمن هذه المعلومات على رقم المنفذ الذي يعمل عليه التطبيق، وعند تشغيل التطبيق لأول مرة سيكون رقم المنفذ 8888. يقوم المتصفح الافتراضي تلقائياً بفتح واجهة الويب التفاعلية الخاصة بتطبيق المفكرة Jupyter Notebook عند تشغيله على الحاسب الشخصي (ليس على الخادم)، وفي حال لم يتم ذلك أو تم إغلاق المتصفح، يمكن إعادة فتحه من جديد بإدخال عنوانه http://localhost:8888/ الظاهر في سجل معلومات التطبيق في المتصفح. يتم إنهاء تطبيق المفكرة Jupyter Notebook بالضغط على المفاتيح CTRL و C ثم ضغط المفتاح y (نعم) عند السؤال عن تأكيد عملية الإنهاء، ثم ضغط المفتاح ENTER، فتُطبع رسالة تأكيد عملية إنهاء التطبيق التالية في نافذة موجه الأوامر: [C 12:32:23.792 NotebookApp] Shutdown confirmed [I 12:32:23.794 NotebookApp] Shutting down kernels الخطوة الرابعة- استخدام تطبيق المفكرة Jupyter Notebook سيتم في هذه الفقرة شرح أساسيات استخدام تطبيق المفكرة Jupyter Notebook، لكن يجب في البداية تشغيله إن لم يكن في حالة العمل، وذلك بتنفيذ الأمر التالي: (my_env) sammy@ubuntu:~/environments$ jupyter notebook نستطيع الآن الإتصال به والتفاعل معه من خلال واجهة الويب التفاعلية. يمتاز تطبيق المفكرة Jupyter Notebook بالقوة حيث يحتوي على الكثير من الميزات، لكن سيقتصر الشرح على بعض الميزات الأساسية التي تسمح بمباشرة العمل على هذا التطبيق. يعرض تطبيق المفكرة Jupyter Notebook جميع الملفات والمجلدات الواقعة ضمن المسار الذي تم تشغيله منه، لذا يجب تشغيله دائمًا من مسار المشروع البرمجي الذي يتم العمل عليه. يتم إنشاء ملف مفكرة Jupyter Notebook جديد بالضغط على خيار جديد New الموجود في الزاوية اليمينية العُلوية من واجهة الويب التفاعلية، فتظهر قائمة منسدلة نختار منها Python 3 كما هو موضح بالشكل التالي: فيُفتح الملف الجديد المُنشأ ضمن واجهة الويب التفاعلية. نستطيع الآن كتابة وتنفيذ كود Python ضمن خليّة الكود البرمجي. كما يمكن تغيير هذه الخلية لتقبل لغة التوصيف Markdown، وذلك بالضغط على خيار الخلية Cell ثم خيار نوع الخلية Cell Type ثم خيار التوصيف Markdown من الشريط العلوي، فيصبح بالإمكان الآن استخدام هذه الخلية لكتابة الملاحظات وحتى تضمين المعادلات الرياضية المكتوبة بلغة LaTeX بعد وضعها بين الرمزين ($$)، فمثلا يمكن كتابة كود التوصيف التالي ضمن الخلية بعد تحويلها لخلية توصيف: # Simple Equation Let us now implement the following equation: $$ y = x^2$$ where $x = 2$ يتم تحويل هذا الكود إلى نص بضغط المفاتيح CTRL و ENTER فنحصل على النتيجة التالية: وهكذا نلاحظ أنه يمكن استخدام خلايا التوصيف من أجل توثيق الكود البرمجي. سنقوم الآن بإنشاء معادلة رياضية بسيطة ونطبع نتيجة تنفيذها، وذلك بالضغط على الخلية العلوية ثم الضغط على المفاتيح ALT و CTRL من أجل إنشاء خلية جديدة تحتها ثم ندخل فيها الكود التالي: x = 2 y = x**2 print(y) ثم نقوم بتنفيذ الكود بضغط المفاتيح CTRL و ENTER فنحصل على النتيجة التالية: أصبح بمقدورك الآن وبعد أن تعلمت أساسيات تطبيق المفكرة Jupyter Notebook ، أن تقوم باستيراد النماذج البرمجية، وأن تستخدم هذه المفكرة كما تريد مع أي بيئة برمجية أخرى. ملخص أصبحت قادرا الآن على كتابة أكواد Python والملاحظات القابلة للتطوير والمشاركة، بعد أن تعلمت كيفية تنصيب وتشغيل والعمل على تطبيق المفكرة Jupyter Notebook. يمكن الحصول على مزيد من المعلومات والمساعدة حول كيفية استخدام هذه المفكرة، بالدخول إلى User Interface Tour عن طريق الخيار Help الموجود في الشريط العلوي من واجهة الويب التفاعلية. ترجمة المقال How To Set Up Jupyter Notebook for Python 3 لصاحبته Lisa Tagliaferri
  7. تستخدم الأصناف في البرمجة الغرضية التوجيه من أجل إنشاء الأغراض، وإعطاء القيم الابتدائية للمتغيرات المستنسخة. لكل صنف اسم خاص يعبر عن نوعه ووظيفته. تعريف الأصناف جميع الأصناف في Ruby مستنسخة من الصنف الرئيسي Class، حيث يتم تعريف الأصناف في لغة Ruby كما يلي: يبدأ الصنف بالكلمة الدلالية class وبعدها يكتب اسم الصنف. يجب أن يبدأ اسم الصنف بحرف كبير. وفي حال كان اسم الصنف مكون من عدة كلمات، يتم تمييز هذه الكلمات بكتابة أول حرف من كل كلمة بالنمط الكبير وباقي الأحرف صغيرة، كونه لا يمكن استخدام فراغات فاصلة بين الكلمات في أسماء الأصناف. يمكن أن يحتوي الصنف على متغير الصنف، والمتغير المستنسخ، ودالة الصنف، بالإضافة لإمكانية استدعاء الدوال الأخرى مثل الدالة attr_accessor (دوال الولوج). ينتهي الصنف بالكلمة الدلالية end. يوضح المثالي التالي طريقة تعريف الأصناف: class SampleClass # some code describing the class behavior def sample_method end end الاستنساخ يتم إنشاء الأغراض من الأصناف بعملية تسمى الاستنساخ، حيث يصبح الغرض عبارة عن نسخة من الصنف الذي تم استنساخه عنه. تنفذ عملية الاستنساخ باستخدام الدالة new مع اسم الصنف المراد إنشاء الغرض منه كما هو موضح بالمثال التالي: std1 = Student.new(parameters) المتغيرات المستنسخة وهي المتغيرات التي يتم تعريفها ضمن دوال الأصناف بإضافة الرمز @ لبداية اسم المتغير. وينحصر نطاقها فقط على الغرض المُنشأ من الصنف، ولا يمكن الولوج إليها وإظهار قيمها أو تعديلها إلاّ من خلال الدالة التي عُرّفت فيها (دوال الولوج). سيتم توضيح هذه المتغيرات من خلال المثال التالي: class Calculation @x = 100 def add_num @x = 200 end def show_data puts 'Value of x is : '، @x end end instance = Calculation.new instance.show_data instance.add_num instance.show_data Output Value of x is : Value of x is : 200 نلاحظ أن الخرج الأول الدالة show_data من الغرض instance والمُنشأ من الصنف Calculation فارغ، لأن قيمة المتغير المستنسخ @x مازالت nil (لا شيء) بالرغم من أنه تم إسناد القيمة 100 لهذا المتغير في بداية تعريف الصنف Calculation، وذلك لأن طريقة التعريف هذه خاطئة للمتغير المستنسخ @x، حيث يجب أن يتم تعريفه ضمن دوال الصنف فقط، بالتالي تم تجاهل هذا التعريف. أما الخرج الثاني لهذه الدالة أصبح 200 لأنه تم تنفيذ الدالة add_num (التي عُرّف فيها) من الغرض instance والتي قامت بتهيئة المتغير المستنسخ @x بالقيمة 200. دوال الولوج وهي دوال الصنف التي تعرَّف ضمنها المتغيرات المستنسخة، حيث تُستخدم هذه الدال من أجل الولوج إلى المتغيرات المستنسخة للأغراض من أجل قراءة قيمها أو تعديلها. يوضح المثال التالي هذه الدوال: class MyData def set_data(n) @x = n end def get_data @x end end d = MyData.new puts d.set_data(1000) puts d.get_data Output 1000 1000 حيث يحتوي الصنف MyData على دالتي ولوج هما: الدالة set_data لتعديل قيمة المتغير المستنسخ @x، والدالة get_data لقراءة قيمة هذا المتغير المستنسخ. متغيرات الأصناف وهي المتغيرات المعرفة في بداية الصنف بإضافة الرمز @@ لبداية اسم المتغير، حيث يتم مشاركة قيمها مع جميع الأغراض المُنشأة من هذا الصنف وكذلك مع جميع الأصناف المورَّثة من هذا الصنف، على عكس المتغيرات المستنسخة التي لا يتم مشاركة قيمها بين الأغراض. والمثال التالي يوضح هذه المتغيرات: class MyData @@x = 1 def add_n @@x = @@x + 10 end def value @@x end end ins1 = MyData.new ins2 = MyData.new puts ins1.value ins1.add_n puts ins1.value puts ins2.value Output 1 11 11 المتغيرات المستنسخة للأصناف تختلف هذه المتغيرات عن متغيرات الأصناف، بأنه يتم مشاركة قيمها مع الأغراض المُنشأة من هذا الصنف فقط، كما هو موضح بالمثال التالي: class Employee class << self; attr_accessor :instances; end def store self.class.instances ||= [] self.class.instances << self end def initialize name @name = name end end class Overhead < Employee; end class Programmer < Employee; end Overhead.new('Martin').store Overhead.new('Roy').store Programmer.new('Erik').store puts Overhead.instances.size # => 2 puts Programmer.instances.size # => 1 Output 2 1 دوال الأصناف يتم تعريف دوال الأصناف بنفس طريقة تعريف دوال Ruby الاعتيادية باختلاف وحيد، وهو إضافة اسم الصنف أو الكلمة الدلالية self وبعدها نقطة قبل اسم الدالة. يتم استدعاء دوال الأصناف على مستوى الصنف الذي عرفت فيه دون الحاجة لوجود غرض مُنشأ من هذا الصنف. كما يمكن لدوال الأصناف الولوج إلى متغيرات الأصناف لكنها لا تستطيع الولوج إلى المتغيرات المستنسخة (فقط دول الولوج تستطيع ذلك). يوضح المثال التالي كيفية تعريف واستدعاء دوال الأصناف: class Student def self.no_students puts 'There are five hundred students in my school.' end end Student.no_students Output There are five hundred students in my school. مستويات الوصول لدوال الأصناف هنالك ثلاث مستويات للوصول إلى دوال الأصناف هي: الدوال العامة: إن دوال الأصناف في Ruby هي دوال عامة بشكل افتراضي، أي يمكن لأي أحد الوصول إليها، وتشكل واجهة التخاطب للأصناف، حيث يتم من خلالها تبادل المعطيات بين الصنف والعالم الخارجي. الدوال الخاصة: يتم تحديدها بالكلمة الدلالية private، وهي للاستخدام الداخلي فقط ضمن الصنف (يمكن استدعائها خارجياً عن طريق دالة عامة تحوي على هذه الدالة الخاصة مثل whisper_louder)، حيث يمكن الوصول إليها واستخدامها فقط من قبل الدوال الموجودة ضمن تعريف الصنف نفسه أو الأصناف المورَّثة منه، بشرط أن يكون استدعائها صريح (مثل whisper) دون أن تكون مضمّنة في غرض آخر حتى ولو كان من نفس الصنف (مثل self.whisper). عند الرغبة باستدعاء هذه الدوال خارج الصنف عن طريق استدعائها بشكل مضمّن في الدوال العامة كما هو موضح بالمثال التالي: class Person def speak puts "Hey، Tj!" end def whisper_louder whisper end def whisper_louder_with_self self.whisper end # private methods are for internal usage within the defining class private def whisper puts "His name's not really 'Tj'." end end a_hater = Person.new a_hater.speak # استدعاء دالة عامة a_hater.whisper # استدعاء دالة خاصة خارج الصنف a_hater.whisper_louder # استدعاء دالة عامة تحوي على دالة خاصة صريحة a_hater. whisper_louder_with_self # استدعاء دالة عامة تحوي على دالة خاصة مضمنة Output "Hey، Tj!" NoMethodError "His name's not really 'Tj'." NoMethodError الدوال المحمية: ويتم تحديدها بالكلمة الدلالية protected، وهي نفس الدوال الخاصة بفارق أساسي هو إمكانية استدعائها داخليا بشكل مضمّن في غرض من نفس الصنف كما هو موضح بالمثال التالي: class User def say_secret_with_self self.secret end protected def secret "secret" end end u = User.new u.say_secret_with_self # => استدعاء دالة عامة تحوي على دالة محمية مضمنة Output "secret" دوال القراءة والكتابة الشخصية تُنشأ المتغيرات المستنسخة لكل غرض مُنشأ من صنف، لتستخدم بشكل أساسي ضمن هذا الغرض، لكنها لا تشبه الدوال الخاصة من حيث اقتصارها على الاستخدام الداخلي. حيث يمكن إظهار وتعديل قيمها من خارج الغرض، وذلك عن طريق تعريف دوال القراءة والكتابة الشخصية (مشابه لدوال الولوج). يوضّح المثال التالي طريقة تعريف دالة القراءة (student_name) التي تقوم بقراءة قيمة المتغير المستنسخ: class Student def initialize(student_name، id) @student_name = student_name @id = id end def student_name @student_name end end std1 = Student.new("Sara"، 5) puts std1.student_name Output Sara والمثال التالي يوضّح طريقة تعريف دالة الكتابة (sname=) والتي تقوم بتغيير قيمة المتغيّر المستنسخ: class Student def initialize(sname) @sname = sname end def sname @sname end def sname=(new_name) @sname = new_name puts @sname end end # you could the access @sname variable as a = Student.new('Sara') puts a.sname a.sname ='Robin' Output Sara Robin دوال القراءة والكتابة الافتراضية يمكن تنفيذ جميع وظائف قراءة وتعديل قيم المتغيرات المستنسخة عن طريق الدوال attr_accessor و attr_reader و attr_writer والموجودة في لغة Ruby بشكل افتراضي، حيث تستخدم الدالة attr_accessor لتنفيذ عمليتي القراءة والكتابة معًا في هذه المتغيرات كما هو موضح بالمثال التالي: class Student def initialize(sname) @sname = sname end attr_accessor :sname end # attr_accessor generates variable @sname accessor methods automatically: a = Student.new('Sara') puts a.sname a.sname = 'Robin' puts a.sname Output Sara Robin أما الدالة attr_reader فتستخدم لتنفيذ عملية القراء فقط، والدالة attr_writer فتستخدم لتنفيذ عملية الكتابة فقط كما هو موضّح بالمثال التالي: class Student attr_reader :sname attr_writer :sname end s1 = Student.new s2 = Student.new s1.sname = "Sara" s2.sname = "Robin" puts s1.sname puts s2.sname Output Sara Robin ثوابت أصناف لغة Ruby يمكن أن تعرّف الثوابت ضمن الأصناف، لكن يمكن الولوج إليها من خارج الأصناف على خلاف المتغيرات المستنسخة التي تحتاج لدوال خاصة لتنفيذ ذلك، ويوضح المثال التالي طريقة تعريف الثوابت ضمن الأصناف، واستخدامها داخل وخارج الأصناف: class ConstClass Color1='Red' Color2='Green' Color3='White' def show puts "#{Color1} #{Color2} #{Color3}" end end puts( ConstClass::Color1) ConstClass.new.show Output Red Red Green White الوراثة وهي العلاقة بين صنفين، حيث يمكن لصنف أن يرث الوظائف والمتغيرات من صنف أعلى منه مرتبة، ويسمى عندها الصنف الموروث بصنف الأب أو الصنف الأساس، ويسمى الصنف الوارث بصنف الابن، هذا ولا تسمح Ruby بالوراثة المتعددة، أي لكل صنف في Ruby صنف أساس واحد. يوضح المثال التالي طريقة توريث جميع الوظائف والمتغيرات الغير خاصة لصنف آخر (صنف الابن): class Student def schooldetails puts 'There are 700 students in our school.' end end class Classfive < Student # < means inherit def class5 puts 'There are 75 students in Class V.' end end instance = Classfive.new instance.class5 instance.schooldetails Output There are 75 students in Class V. There are 700 students in our school. حيث تم في هذا المثال توريث الصنف Classfive من الصنف Student. يستطيع الصنف الابن الولوج إلى دوال الصنف الأب، عن طريق الكلمة الدلالية super، كما هو موضّح بالمثال التالي: class Student def schooldetails puts 'There are 700 students in our school.' end end class Classfive < Student # < means inherit def schooldetails super puts 'There are 75 students in Class V.' end end instance = Classfive.new instance.schooldetails Output There are 700 students in our school. There are 75 students in Class V. يمكن في الوراثة المتعددة الولوج إلى دوال الصنف الأب باستخدام أسماء بديلة عن طريق الدالة alias، كما هو موضّح بالمثال التالي: class V def ccccc "Class V " end end class VI < V alias vcv ccccc def ccccc vcv + "VI " end end class VII < VI def ccccc vcv + "VII " end end puts V.new.ccccc puts VI.new.ccccc puts VII.new.ccccc Output Class V Class V VI Class V VII حيث تم استخدام الاسم vcv كبدل لاسم الدالة ccccc المعرّفة في الصنف V، ثم تم استخدام هذا الاسم البديل في الأصناف الوارثة كون اسم دوالها هو نفس الاسم الأصلي لدالة الصنف V. الأصناف الفريدة تحتوي لغة Ruby على طريقة لتعريف دوال محددة من أجل غرض معين، حيث تسمى هذه الدوال بالدوال الفريدة. فعند القيام بتعريف دوال فريدة في غرض ما، فإن لغة Ruby تقوم تلقائياً بإنشاء صنف جديد لاحتواء هذه الدوال الفريدة فقط، والذي يسمى عندها بالصنف الفريد. ويفيد هذا الصنف عند الرغبة باستدعاء دواله في أقسام مختلفة من التطبيق البرمجي، مثل تأمين الاتصال مع النظام الخارجي أو الولوج لقاعدة البيانات أو غيرها. ويوضح المثال التالي هذه الأصناف: tutorial1 = String.new def tutorial1.size "Learn Ruby" End tutorial2 = String.new puts tutorial1.singleton_methods puts tutorial2.singleton_methods Output Learn Ruby String 0 حيث تم استخدام الدالة singleton_method للحصول على قائمة أسماء جميع الدوال الفريدة الموجودة في الغرض.هذا ويمكن الولوج إلى صنف الغرض الفريد باستخدام الصيغة التالي: class << object كما هو موضح بالمثال التالي: arra1 = [] class << arra1 def foo "Hello World!" end end puts arra1.singleton_methods Output foo ترجمة –وبتصرّف- للمقال Ruby Classes حقوق خلفية الصورة البارزة محفوظة لـ all-free-download.com
  8. السلام عليكم يمكنك ذلك بتحويله إلى ملف pdf من خلال الموقع http://www.convertfiles.com/
  9. السلام عليكم أخي الكريم اقرأ هذه المقالة لعلها تحل مشكلتك: http://securityaffairs.co/wordpress/53438/malware/ransomware-recover-guide.html
  10. السلام عليكم أخي الكريم ان كنت تجيد اللغة الانكليزية بشكل جيد, فهذا كتاب رائع لتعلم لغة ++C من الصفر حتى الاحتراف ضمن بيئة Visual studio: http://dlx.b-ok.org/genesis/1526000/aa2a4e46d364bd2c37e48dab81c6a10a/_as/[Ivor_Horton]_Ivor_Horton's_Beginning_Visual_C++_2(b-ok.org).pdf
  11. السلام عليكم لا يمكنك تنفيذ كود PHP بشكل مباشر ضمن صفحة جافا سكريبت js. لأنه لا تتم معالجتها من قبل مترجم أوامر PHP, لكن يمكنك اسناد كود PHP إلى متغير ضمن الصفحة الرئيسية للموقع مثل index.php (و التي يكون امتدادها .php), ومن ثم استخدام هذا المتغير ضمن صفحات جافا سكربت بدل الكود المسند. أي تكتب الكود التالي ضمن الصفحة الرئيسية: index.php
  12. ليس لجهازك تعريفات للويندوز 10 يوجد للوندوز 8 وما دون أقترح عليك تنصيب ويندوز 7 64 وهذه صفحة التعريفات قم بتحديد نوع نظام التشغيل في أعلى الصفحة فتظهر التعريفات: https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/lenovo-b-series-laptops/lenovo-b590-notebook/downloads
  13. هل التسخة القديمة احتياطية تأتي مع الجهاز أم قمت بتنصيبها بنفسك استخدم تعريفات الشركة فقط حتى ولو كانت قديمة لأنها متوافقة مع بعضها أي نصب نسخة ويندوز جديدة ثم نصب التعريفات من موقع الجهاز أو من السيدي المرفق مع الجهاز, طبعا دون أن يكون الحاسب بالانترنت, ثم ألغي التحديث التلقائي لتعريفات الجهاز لتحافظ على التعريفات كما هي.
  14. السلام عليكم على ما يبدو أنه لديك حدوث عدم توافق في الحاسب عند تحديث التعريفات, لذا جرب أن تعيد نسخة ويندوز 10 التي كانت على الحاسب, ثم قم بإلغاء التحديث التلقائي لتعريفات الأجهزة من خلال الضغط على أيقونة جهاز الكبيوتر بالزر اليميني ثم اختيار خصائص Properties فتظهر نافذة خصائص النظام يتم منها اختيار إعدادات النظام المتقدمة Advanced System Settings فتظهر نافذة, يتم فيها اختيار الكيان الصلب Hardware ثم الضغط على خيار اعدادات تحيث تعريفات الأجهزة Windows Update Driver Settings واختيار عدم تفحص التعريفات عن توصيل الجهاز Windows Update Driver Settings أرجو أن يساعد ذلك في حل المشكلة
  15. السلام عليكم ان البرنامج البديل ل V-Ray هو Mental Ray حيث يحوي على معظم مزايا برنامج V-Ray لكنه أرخص منه وقد تم تطويره في الآونة الأخيرة بعد أن تعهدته شركة NVIDIA.
×
×
  • أضف...