لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 03/22/21 في كل الموقع
-
الإصدار 1.0.0
116589 تنزيل
سطع نجم لغة البرمجة بايثون في الآونة الأخيرة حتى بدأت تزاحم أقوى لغات البرمجة في الصدارة وذاك لمزايا هذه اللغة التي لا تنحصر أولها سهولة كتابة وقراءة شيفراتها حتى أصبحت الخيار الأول بين يدي المؤسسات الأكاديمية والتدريبية لتدريسها للطلاب الجدد الراغبين في الدخول إلى مجال علوم الحاسوب والبرمجة. أضف إلى ذلك أن بايثون لغةً متعدَّدة الأغراض والاستخدامات، لذا فهي دومًا الخيار الأول في شتى مجالات علوم الحاسوب الصاعدة مثل الذكاء الصنعي وتعلم الآلة وعلوم البيانات وغيرها، كما أنَّها مطلوبة بشدة في سوق العمل وتعتمدها كبرى الشركات التقنية. دورة تطوير التطبيقات باستخدام لغة 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 إلى بايثون 31 نقطة -
أهلا ممكن تساعدوني في تصميم لعبة فيديو تتعلق بأحد مجالات الثورة الصناعية الرابعة باستخدام برنامج البايثون ...1 نقطة
-
اريد ان اكتب رنامج بايثون يقوم بقراءة عدد معين تم طباعة جدول الضرب الخاص به مع العلم ان جدول الضرب من0 الى10؟1 نقطة
-
في c# ايش الفرق بين var و object لما نستخدمهم بدوارة foreach? أيضا ماذا يعني partial class كلاس جزئي بس ما المقصود به؟1 نقطة
-
1 نقطة
-
التجريد (Abstraction) والوهمية (Virtualization) ينبغي معرفة مصطلحين مهمين قبل الخوض في الحديث عن العمليات (processes) هما: التجريد (abstraction): هو تمثيلٌ مُبسّط لشيء معقد. عند قيادة سيارة ما على سبيل المثال يُفَهم أن توجيه عجلة القيادة يسارًا يوجه السيارة يسارًا والعكس صحيح. ترتبط عجلة القيادة بسلسلة من الأنظمة الميكانيكية والهيدروليكية، حيث توجّه هذه الأنظمة العجلات لتتحرك على الطريق. يمكن أن تكون هذه الأنظمة معقدة، ولكنّ السائق غير ملزَمٍ بالاكتراث بأي من تلك التفاصيل التي تجري داخل أنظمة السيارة، فالسائق يقود السيارة بالفعل وذلك بسبب امتلاكه نموذجًا ذهنيًا (mental model) بسيطًا عن عملية قيادة السيارة، وهذا النموذج البسيط هو التجريد (abstraction) بعينه. استخدام متصفح الويب (web browser) هو مثال آخر عن التجريد، فعند النقر على ارتباط (link) يعرض المتصفح الصفحة المرتبطة بهذا الارتباط. لا شكّ أن البرمجيات (software) وشبكات الاتصال (network communication) التي تجعل ذلك ممكنًا معقدة، ولكن لا يتوجب على المستخدم معرفة تفاصيل تلك الأمور المعقدة. جزء كبير من هندسة البرمجيات هو تصميم التجريدات التي تسمح للمستخدمين والمبرمجين استخدام أنظمة معقدة بطريقة سهلة دون الحاجة إلى معرفة تفاصيل تنفيذ هذه الأنظمة. الوهمية (Virtualization): وهي نوع من التجريد (abstraction) الذي يخلق وهمًا (illusion) بوجود شيء فعليًا في حين أنه موجود وهميًا فقط. فمثلًا تشارك العديد من المكتبات العامة في تعاون بينها يسمح باستعارة الكتب من بعضها البعض. عندما تطلب كتابًا يكون الكتاب على رف من رفوف مكتبتك أحيانًا، ولكن يجب نقله من مكان آخر عند عدم توافره لديك، ثم سيصلك إشعار عندما يُتاح الكتاب للاستلام في كلتا الحالتين. ليس هناك حاجة أن تعرف مصدر الكتاب ولا أن تعرف الكتب الموجودة في مكتبتك. إذًا يخلق النظام وهمًا بأن مكتبتك تحتوي على كتب العالم جميعها. قد تكون مجموعة الكتب الموجودة في مكتبتك فعليًا صغيرة، لكن مجموعة الكتب المتاحة لك وهميًا هي كل كتاب موجود في تلك المكتبات المتشاركة. الإنترنت (Internet) هو مثال آخر عن الوهمية وهو مجموعة من الشبكات والبروتوكولات التي تعيد توجيه (forward) الحزم (packets) من شبكةٍ لأخرى. يتصرف نظام كل حاسوب كأنه متصل بكل حاسوب آخر على الإنترنت من وجهة نظر المستخدم أو المبرمج، حيث يكون الاتصال الفعلي أو الفيزيائي بين كل حاسوب وآخر قليلًا، أما الاتصال الوهمي كبير جدًا. يُستخدم المصطلح وهمي (virtual) ضمن عبارة آلة وهمية (virtual machine) أكثر الأحيان. والآلة الوهمية تعني البرمجية التي تمنح المستخدم القدرة على إنشاء نظام تشغيل على حاسوب يشغّل نظام تشغيل مختلف، وبذلك تخلق هذه الآلة وهمًا بأن هذا النظام المنشَأ يعمل على حاسوب مستقل بذاته، ولكن في الحقيقة يمكن تشغيل عدة أنظمة تشغيل وهمية على حاسوب واحد بنفس الوقت وكأنّ كل نظام تشغيل يعمل على حاسوب مختلف. وبالتالي يُدعى ما يحدث فعليًا physical وما يحدث وهميًا logical أو abstract. العزل (Isolation) العزل هو أحد أهم مبادئ الهندسة، فعزل المكونات عن بعضها البعض هو أمر جيد عند تصميم نظام متعدد المكونات من أجل ألّا يؤثر مكون على المكونات الأخرى تأثيرًا غير مرغوب به. عزل كل برنامج قيد التشغيل عن البرامج الأخرى من أهم أهداف نظام التشغيل، فبذلك لا يضطر المبرمجون إلى الاهتمام باحتمالية حدوث تفاعلات بين البرامج المشغّلة، وبالتالي يحتاج نظام التشغيل إلى كائن برمجي يحقق هذا العزل ألا وهو العملية (process). ولكن ما هي العملية؟ العملية (process) هي كائنٌ برمجي يمثل برنامجًا مشغلًا، وبالتالي يُمثَّل كل برنامج بعملية معينة. حيث يُقصَد بعبارة «كائن برمجي» بكائنٍ له روح البرمجة كائنية التوجه (object-oriented programming)، حيث يتضمن كل كائن بيانات (data) وتوابع (methods) تعمل على هذه البيانات. فالعملية هي كائن ولكن يتضمن البيانات التالية: نص البرنامج (text of the program): وهو سلسلة من تعليمات لغة الآلة عادةً. بيانات مرتبطة بالبرنامج (Data associated with the program): والتي تنقسم إلى نوعين: بيانات ساكنة (static data) (تُخصَّص مواقعها في الذاكرة في وقت التصريف) و بيانات ديناميكية (dynamic data) (تُخصَّص مواقعها في الذاكرة في وقت التشغيل). حالة عمليات الإدخال/الإخراج المعلَّقة (The state of any pending input/output operations): مثل انتظار العملية قراءة بيانات من القرص، أو انتظار وصول حزمة عن طريق الشبكة، فحالات عمليات الانتظار هذه هي جزء من العملية نفسها (process). حالة عتاد البرنامج (The hardware state of the program): التي تتضمن البيانات المخزنة في المسجلات (registers)، ومعلومات الحالة (status information)، وعداد البرنامج الذي يحدد أية تعليمة ستنفّذ حاليًا. تشغّل كل عملية برنامجًا واحدًا في أغلب الأحيان، ولكن يمكن لعملية ما أن تحمّل وتشغّل برنامجًا آخر أيضًا. ويمكن أن تشغّل عدة عمليات نفس البرنامج، ففي هذه الحالة تتشارك العمليات بنص البرنامج ولكن ببيانات وحالات عتاد مختلفة. توفر معظم أنظمة التشغيل مجموعة أساسية من القدرات لعزل العمليات عن بعضها البعض هي: تعدد المهام (Multitasking): تتمتع معظم أنظمة التشغيل بالقدرة على مقاطعة تنفيذ أية عملية في أي وقت تقريبًا مع حفظ حالة عتاد العملية المُقاطعة، ثم استئناف تشغيل العملية لاحقًا. على كل حال لا يضطر المبرمجون إلى التفكير كثيرًا في هذه المقاطعات (interruptions)، حيث يتصرف البرنامج كما لو أنه يعمل باستمرار على معالج مخصص له فقط دون غيره، ولكن ينبغي التفكير بالوقت الفاصل بين كل تعليمة وأخرى من البرنامج فهو وقت لا يمكن التنبؤ به. الذاكرة الوهمية (Virtual memory): تخلق معظم أنظمة التشغيل وهمًا بأن كل عملية لها قطعتها (chunk) من الذاكرة وهذه القطعة معزولة عن قطع العمليات الأخرى. يمكن القول مرة أخرى بأن المبرمجين غير مضطرين لمعرفة كيفية عمل الذاكرة الوهمية، فيمكنهم المتابعة في كتابة برامجهم معتبرين كل برنامجٍ له جزءٌ مخصص من الذاكرة. تجريد الجهاز (Device abstraction): تتشارك العمليات العاملة على نفس الحاسوب بمحرك الأقراص أو قرص التخزين (disk drive) وبطاقة الشبكة (network interface) وبطاقة الرسوميات (graphics card) ومكونات عتادية أخرى أيضًا. إذا تعاملت العمليات مع تلك المكونات العتادية للحاسوب مباشرةً ودون تنسيق من نظام التشغيل، سيؤدي ذلك إلى فوضى عارمة. فيمكن لعملية ما أن تقرأ بيانات شبكة عمليةٍ أخرى على سبيل المثال، أو يمكن أن تحاول عمليات متعددة تخزين بيانات في الموقع نفسه على محرك القرص الصلب (hard drive). الأمر متروك لنظام التشغيل في النهاية ليحافظ على النظام من خلال توفير تجريدات مناسبة. لا يحتاج المبرمج لمعرفة الكثير عن كيفية عمل قدرات نظام التشغيل لعزل العمليات عن بعضها البعض، ولكن إذا دفعك الفضول لمعرفة المزيد عن ذلك فهو أمر جيد، فالإبحار في معرفة مزيد من التفاصيل يصنع منك مبرمجًا أفضل. عمليات UNIX تخيل السيناريو التالي: العملية التي تعيها عند استخدامك الحاسوب للكتابة هي محرر النصوص، وإذا حرّكت الفأرة على الطرفية (terminal) يتنبه مدير النوافذ (window manager) وينبّه terminal التي بدورها تنبّه الصدفة (shell)، فإذا كتبت الأمر make فإن shell تنشئ عملية جديدة لتنفيذ الأمر Make التي بدورها تنشئ عملية أخرى لتنفيذ LaTeX وهكذا يستمر إنشاء العمليات حتى عرض نتائج تنفيذ الأمر make. يمكن أن تبدل إلى سطح المكتب (desktop) إذا أردت البحث عن شيء ما، فيؤدي ذلك إلى تنبيه مدير النوافذ أيضًا. ويتسبب نقرك على أيقونة متصفح الويب في إنشاء عملية تشغّل المتصفح. تنشئ بعض المتصفحات، Chrome مثلًا، عمليات لكل نافذة وتبويب جديدين. ولكن توجد عمليات أخرى تعمل في الخلفية (background) في ذات الوقت، تتعلق تلك العمليات في معظمها بنظام التشغيل. يمكن استخدام الأمر ps في UNIX لمعرفة معلومات عن العمليات التي تعمل حاليًا، فيظهر الخرج التالي عند تنفيذ الأمر: PID TTY TIME CMD 2687 pts/1 00:00:00 bash 2801 pts/1 00:01:24 emacs 24762 pts/1 00:00:00 ps يمثل العمود الأول معرِّف العملية الفريد ID، بينما يمثل العمود الثاني الطرفية (terminal) التي أنشأت العملية حيث يشير (TTY) إلى عبارة teletypewriter (وهي جهاز قديم اُستخدِم لإرسال و استقبال الرسائل المكتوبة من خلال قنوات اتصال مختلفة)، ويمثل العمود الثالث الزمن الإجمالي المستغرَق خلال استخدام العملية للمعالج ويكون بالشكل التالي: ساعات، دقائق، ثواني، ويمثّل العمود الرابع والأخير اسم البرنامج المشغَّل، حيث bash هو اسم الصدفة (Shell) التي قاطعت الأوامر المكتوبة في الطرفية (terminal)، و emacs هو محرر النصوص المستخدَم، و ps هو البرنامج الذي ولّد الخرج السابق. فخرج الأمر ps هو قائمة تحوي العمليات المتعلقة بالطرفية (terminal) الحالية فقط، ولكن باستخدام الراية -e مع ps (أو باستخدام الراية aux التي هي خيارٌ آخر وشائع) فستظهر كل العمليات بما في ذلك عمليات المستخدمين الآخرين والذي برأيي، يقول الكاتب، هو ثغرة أمنية . يوجد على نظامي التشغيلي مثلًا، يقول الكاتب، 233 عملية حاليًا فيما يلي بعض منها: PID TTY TIME CMD 1 ? 00:00:17 init 2 ? 00:00:00 kthreadd 3 ? 00:00:02 ksoftirqd/0 4 ? 00:00:00 kworker/0:0 8 ? 00:00:00 migration/0 9 ? 00:00:00 rcu_bh 10 ? 00:00:16 rcu_sched 47 ? 00:00:00 cpuset 48 ? 00:00:00 khelper 49 ? 00:00:00 kdevtmpfs 50 ? 00:00:00 netns 51 ? 00:00:00 bdi-default 52 ? 00:00:00 kintegrityd 53 ? 00:00:00 kblockd 54 ? 00:00:00 ata_sff 55 ? 00:00:00 khubd 56 ? 00:00:00 md 57 ? 00:00:00 devfreq_wq أول عملية تنشأ عند بدء نظام التشغيل هي init التي تنشئ العديد من العمليات ثم تبقى خاملة بلا عمل حتى تنتهي تلك العمليات التي أنشأتها. أما kthreadd فهي العملية التي يستخدمها نظام التشغيل لإنشاء خيوط (threads) جديدة (سنتكلم عن الخيوط لاحقًا ولكن يمكن القول أن الخيط هو نوع معين من العمليات)، ويشير k في بداية kthreadd إلى نواة (kernel)، وهي جزء نظام التشغيل المسؤول عن قدرات نظام التشغيل الأساسية مثل إنشاء الخيوط threads، ويشير حرف d الإضافي إلى عفريت (daemon)، وهو اسم آخر للعملية التي تعمل في الخلفية وتوفر خدمات نظام التشغيل. وبالنسبة للعملية ksoftirqd فهي عفريت للنواة (kernel daemon) أيضًا وعملها معالجة طلبات المقاطعة البرمجية software interrupt requests أو soft IRQ. أما kworker فهي عملية تنشئها النواة للعمل على عمليات معالجة خاصة بها. توجد عمليات متعددة تشغّل خدمات النواة، ففي حالتي، يقول الكاتب، توجد 8 عمليات ksoftirqd و35 عملية kworker. لن نخوض في تفاصيل العمليات المتبقية، ولكن إذا كنت مهتمًا يمكنك البحث عن معلومات عنها وتطبيق الأمر ps لترى العمليات المشغلة على نظامك. ترجمة -وبتصرّف- للفصل Processes من كتاب Think OS A Brief Introduction to Operating Systems1 نقطة
-
إن Eloquent في لارافيل تقوم تلقائياً بتحويل الأنماط التابعة للـ timestamps أي الحقول: (created_at, updated_at) إلى غرض من نوع carbon، وللسهولة عندما نقوم بإضافة حقل تاريخ جديد نقوم بإضافة السطر التالي ضمن المودل ليتم تحويله من قبل لارافيل بشكل مماثل لباقي حقول التاريخ: protected $dates = ['last_visit']; الآن وبالنسبة للمقارنة فيوجد العديد من عمليات المقارنة التي تقدمها carbon مثل: eq() equals ne() not equals gt() greater than gte() greater than or equals lt() less than lte() less than or equals ويمكننا استخدامها بالشكل التالي مثلاً: if($model->last_visit->gt($model->created_at)){ .... }1 نقطة
-
نقوم بتحويل النمط من Carbon إلى String عن طريق الدالة التالية Carbon::parse($last_visit)->format('Y-m-d H:i'); مع تغيير صيغة الوقت والتاريخ الذي تريده فمثلًا Y: السنة m: الشهر d: اليوم H: الساعة i: الدقيقة1 نقطة
-
السطر الذي أضفته ليس الطريقة الصحيحة بل هذه: this.increaseCounter = this.increaseCounter.bind(this); الهدف اﻷصلي من التعليمة أن arrow function الممرر للـonClick لها قواعد خاصة من ناحية this هذه القواعد تمنع الوصول إلى Component instance وبدلاً من ذلك تكون this مساوية لـundefined. لكن بعد تنفيذ التعليمة السابقة أنت تجعل increaseCounter يأخذ الـthis دائماً من Component instance لهذا سمي التابع بـbind وهو للعلم تابع جافاسكريبت عادي ليس مخصوصاً بالـReactJS ، كل ما هنالك أن استعماله في React class components شائع جداً. بالطبع مع وجود react hooks يمكنك كتابة functional components وحينها لن تحتاج إلى عمل أي binding ﻷنه حينها لا يوجد class لتقوم بعمل this.1 نقطة
-
يمكنك استدعاء السكوب ضمن الاستعلام مع with بالشكل التالي: $departments = Department::with(['users' => function ($q) { $q->available(); }])->get(); ويمكنك أيضاً بطريقة مماثلة تعريف علاقة: public function usersAvailable() { return $this->hasMany('User')->available(); // أو // return $this->users()->available(); } ثم عند الاستدعاء: //جميع المستخدمين $department->users; // المستخدمين المتاحين $department->usersAvailable; // eager loading $department->with('usersAvailable')->get();1 نقطة
-
لننظر إلى السطر التالي: setClock(clock + 1); من أين تأتي clock؟ من خارج التابع الممرر إلى useEffect وبالتالي لدينا closure وقيمة الـclock عند استدعاء التابع داخل useEffect هي 0 لذا التعليمة السابقة مكافئة للتالية: setClock(0 + 1); // => setClock(1) هذا يحصل كل ثانية ولكن لا معنى لذلك ﻷنك تضع قيمة ثابتة. لحل المشكلة نستخدم نسخة setClock التي تمرر لها تابعاً هكذا: setClock(clock => clock + 1); بهذه الطريقة تحل المشكلة بإذن الله. طبعاً هناك طريقة ثانية وهي تمرير clock ضمن dependencies array ولكن تلك الطريقة ستقوم بعمل clearInterval ثم setInterval بشكل متكرر مما يؤذي اﻷداء لذلك لم نتبعها.1 نقطة
-
حتى يصبح الوسيط parameter اختياري في المسار نضع بعد اسمه إشارة استفهام {?username}1 نقطة
-
يمكنك وضع المتغير هكذا في الوسم التالي <li><a href="{{ route('user.profile', $nickname) }}">Profile</a></li> بحيث $nickname هو المتغير وفي هذه الحالة هو اسم الشخص الذي تود الدخول إلى عضويته.1 نقطة
-
يجب أن تقوم بتمرير المتغيّر أثناء الإشارة إلى المسار بالشكل التالي: <li><a href="{{ route('user.profile', $username) }}">Profile</a></li> والسبب في ذلك هو أنك قمت أثناء تعريف المسار بإضافة متغيّر ضمن الرابط: Route::get('{username}/settings') ولكن عندما يتم الضغط على زر الحساب الشخصي أو غيره لا يتم تمرير قيمة هذا المتغيّر مع الرابط ولذلك يمكن أن يظهر لك الخطأ أو من الممكن ألا يتم التعرّف على المسار في حالات أخرى. وفي حال كنت تريد في حالتك تمرير اسم المستخدم الذي قام بتسجيل الدخول إلى مسار التوجيه ليتم بعدها معالجته في المتحكّم الخاص، يمكنك تنفيذ ذلك كالتالي: <li><a href="{{ route('user.profile', auth()->user()->username) }}">Profile</a></li>1 نقطة
-
قم أولاً بعمل: react-native start -- --reset-cache وبعدها: react-native run-android يظهر هذا الخطأ عند الترقية بين نسختين من RN.1 نقطة
-
لقد قمت بتنفيذ الخطوات التاليو لأقوم بحذف مكتبة أو package في مشروع لارافيل: لقد قمت بحذف تعريف اسم المكتبة من ملف composer.json ضمن قسم require، ثم جميع الصفوف التي تنتمي لهذه المكتبة ضمن الملف app.php ثم قمت بتنفيذ الامر: composer update وبعدها قمت بتنفيذ الأمر: composer dump-autoload ولكن لم يتم حذف ال package وعادت إلى المشروع. هل يوجد خطوات إضافية يجب أن أقوم بها؟1 نقطة
-
كما يجب حذف تعريف service provider من config/app.php و أي اسدعاء للأصناف و تنفيذ التعليمات السابقة مع هذه التعليمة1 نقطة
-
بإمكانك إنشاء دالة تقبل المفتاح و القيمة الجديدة بالشكل التالي: public function setEnvironmentValue($envKey, $envValue) { $envFile = app()->environmentFilePath(); $oldValue = env($envKey); if (file_exists($envFile)) { file_put_contents($envFile, str_replace( "{$envKey}={$oldValue}", "{$envKey}={$envValue}", file_get_contents($envFile) )); } } مثال للإستخدام: $this->setEnvironmentValue('APP_ENV', 'production');1 نقطة
-
يمكنك استخدام الأمر التالي composer remove vendor/package بحيث vendor/package هو اسم المكتبة التي تود حذفها.1 نقطة
-
إضافةً الى ما قالته المدربة يمنى، هناك حل آخر بدون استخدام مكتبات خارجية: import * as React from 'react'; import { View, Image, Dimensions } from 'react-native'; // أولاً، سنستخدم أبعاد الشاشة لحساب نسبة العرض الى الطول const window = Dimensions.get('window'); // هذه بعض الصور للتجربة بأحجام مختلفة const images = [ 'https://source.unsplash.com/512x256', 'https://source.unsplash.com/1024x512', 'https://source.unsplash.com/2048x1024' ]; // نقوم بكتابة دالة خاصة لحساب العرض والطول // Image.getSize function getImageDimensions(uri) { return new Promise((resolve) => { Image.getSize(uri, (width, height) => { resolve([width, height]); }); }); } /** * مكون مخصوص لطباعة صورة واحدة، يستخدم بدلاً من Image */ function HomeImage({ uri }) { const [width, setWidth] = React.useState(0); const [height, setHeight] = React.useState(0); const [ratio, setRatio] = React.useState(0); React.useEffect(() => { getImageDimensions(uri).then(dimensions => { setWidth(dimensions[0]); setHeight(dimensions[1]); setRatio(window.width / width); // معادلة حساب نسبة الصورة }); }); return ( <Image style={{ width: window.width, // سيكون العرض هو نفسه عرض الشاشة height: height * ratio // والطول يساوي نسبة الصورة في طولها }} source={{ uri }} /> ); } export default function App() { return ( <View> { images.map(image => ( <HomeImage uri={image} /> )) } </View> ); } عند تشغيل التطبيق، ستظهر الصور بالشكل التالي:1 نقطة
-
نحتاج لإدخال قيمة العدد ثم المرور بحلقة الضرب و طباعة النتيجة؟ أرجو المحاولة قبل رؤية الحل إنه سؤال سهل . . num = int(input("Display multiplication table of? ")) for i in range(0, 11): print(num, 'x', i, '=', num*i)1 نقطة
-
لتبسيط المشكلة, نبدأ باستخدام حلقة for لاستخدامها في جدول الضرب1 نقطة
-
يوجد العديد من الحلول لهذه المشكلة، استخدام الخاصية resizeMode بالقيمة contain، كما في المثال التالي: <Image source={require('./local_path_to/your_image.png')} style={{ width: 30 }} resizeMode="contain" /> أو يمكنك استخدام مكتبة تسمى react-native-scalable-image فهي تؤدي الوظيفة التي تريدها تحديدًا: import React from 'react'; import { Dimensions } from 'react-native'; import Image from 'react-native-scalable-image'; const image = ( <Image width={Dimensions.get('window').width} // height will be calculated automatically source={{uri: '<image uri>'}} /> );1 نقطة
-
يمكنك استخدام دوال PHP echo env('APP_ENV'); putenv('APP_ENV=testing'); echo env('APP_ENV'); أو يمكنك استخدام مصفوفة $_ENV $_ENV['DB_CONNECTION'] = 'mysql';1 نقطة
-
يمكنك تعديل وقراءة البيانات في ملف .env عن طريق config() بحيث تقوم بالتعديل على البيانات كالآتي: config(['database.connections.mysql.host' => '127.0.0.1']); // القيمة الجديدة أو قراءة القيم الحالية: config('database.connections.mysql.host');1 نقطة
-
بإمكانك إستخدام التابع withCount لتحقيق ذلك: Hackathon::withCount('participants') ->orderBy('participants_count', 'desc') ->paginate(10); // or ->take(10) إذا كنت تريد جلب العشر الأوائل في الترتيب كما يُمكنك إستخدام join أيضاً كما هو موضح أدناه: $hackathons = Hackathon::leftJoin('hackathon_user','hackathons.id','=','hackathon_user.hackathon_id') ->selectRaw('hackathons.*, count(hackathon_user.hackathon_id) AS `participants_count`') ->groupBy('hackathons.id') ->orderBy('participants_count','DESC') ->paginate(10);1 نقطة
-
يوجد خطأين يسببان مشاكل حاليا؛ index.php 145 وما بعده: التأكد من وجود دليل المصفوفة قبل محاولة قراءة القيمة <?php if (isset($_GET['to'])){ $to = intval($_GET['to']); include("show.php"); } ?> show.php 42 $message=""; if (isset($_REQUEST['text'])){ $$message = $_GET['to']; } سأرى موضوع الرسائل1 نقطة
-
يمكنك استخدام الشكل التالي $emails = ['myoneemail@esomething.com', 'myother@esomething.com','myother2@esomething.com']; Mail::send('emails.welcome', [], function($message) use ($emails) { $message->to($emails)->subject('This is test e-mail'); }); var_dump( Mail:: failures()); exit; أو الشكل التالي $users_temp = explode(',', 'first@example.com,second@example.com'); $users = []; foreach($users_temp as $key => $ut){ $ua = []; $ua['email'] = $ut; $ua['name'] = 'test'; $users[$key] = (object)$ua; } Mail::to($users)->send(new OrderAdminSendInvoice($o));1 نقطة
-
تحتاج بداية الى التعرف على الحاسوب وكيف يعمل وتتعرف على أهم المصطلحات في علم البرمجة وتتعرف على أساسيات البرمجة وما هي قواعد البيانات وأيضا التعرف على الشبكة العالمية وعالم الويب وكيف يعمل وهذا كله متوفر في دورة علوم الحاسوب, ثم لكي نصمم الموقع سوف نحتاج التعرف على أهم التقنيات المستخدمة في تصميم مواقع الانترنت مثل html, css ,js bootstrap,jquery وغيرها الكثير وكيفية بناءها من الصفر وذلك سوف تجده في دورة تطوير واجهات المستخدم, ثم بعد ذلك تحتاج الى لغة برمجة تطور بها النظام الخلفي للموقع وتربط بها الواجهات التي صممتها بقواعد البيانات الخاصة بالموقع وذلك يتوفر في عدو دورات منها دورة تطوير تطبيقات الويب باستخدام لغة PHP وأيضا دورة تطوير تطبيقات الويب باستخدام لغة Ruby وأيضا دورة تطوير التطبيقات باستخدام JavaScript, بعد ذلك تحتاج الى تقنيات لبناء تطبيقات جوال يمكنك ذلك من خلال دورة تطوير تطبيقات الجوال باستخدام تقنيات الويب وأيضا دورة تطوير التطبيقات باستخدام JavaScript التي تتعلم من خلالها تطوير تطبيقات جوال باستخدام React Native وبناء تطبيق دردشة يشبه WhatsApp.1 نقطة
-
بالنسبة لدورة تقوم بعمل متجر فهذه هي دورة تطوير واجهات المستخدم أما عن دورة تطبيق أندرويد فهي دورة تطوير التطبيقات باستخدام الجافا سكربت لا توجد دورتين مرتبطتين كما تريد الرجاء التأكد من المحتوى قبل الإشتراك1 نقطة
-
أتساءل عما إذا كانت هناك طريقة صحيحة للقيام بتصميم css شرطي وقد رأيت استعمال بهذه الطريقة style={{ color: completed ? 'green' : 'none' }} أفضل عدم استخدام التصميم المضمن ، لذا أريد بدلاً من ذلك استخدام فئة للتحكم في التصميم الشرطي. كيف يمكن للمرء أن يتعامل مع هذا بطريقة تفكير React؟ أم يجب علي فقط استخدام طريقة التصميم المضمنة هذه؟1 نقطة
-
لدي نموذج يحتوي على 8 مكونات للإدخال النصي. أحتاج إلى معالجة كل واحد، ولكن بدون كتابة دالة لكل مدخل نصي. import * as React from 'react'; import { Button, Text, TextInput, View } from 'react-native'; class InsuranceInformation extends React.Component { constructor(props) { super(props); this.state = { inputs: [ { type: 'text', label: 'الأسم الأول', value: '' }, { type: 'text', label: 'الأسم الثاني', value: '' }, { type: 'date', label: 'تاريخ الميلاد', value: '' }, { type: 'text', label: 'العنوان (1)', value: '' }, { type: 'text', label: 'العنوان (2)', value: '' }, { type: 'number', label: 'رقم الجوال', value: '' }, { type: 'text', label: 'رقم البطاقة', value: '' }, { type: 'number', label: 'رقم التأمين السابق', value: '' } ] }; this.handleSubmit = this.handleSubmit.bind(this); } handleSubmit(e) {} render() { const { title } = this.props; return ( <View> <Text>{title}</Text> { this.state.inputs.map(input => ( <TextInput onChangeText={() => {}} // ماذا اكتب هنا؟ placeholder={input.label} /> )) } <Button onPress={this.handleSubmit} title="إرسال" /> </View> ); } }1 نقطة
-
ما هي الطريقة الصحيحة لاخفاء المفاتيح والمعلومات المهمة في مشروع create-react-app والحيال دون ظهورها في الشيفرة البرمجية1 نقطة
-
لقد صنعت سكريبت ترجمة بلغة بايثون. عند تشغيله عن طريق cmd لا تظهر الحروف العربية فقط لكن عن طريق IDLE او Editor تشتغل عادي . هل من حل؟1 نقطة
-
الأمر سهل وبسيط فقط عندما تفهم احتياجاتك في الشيفرة التي تود كتابتها . يمكن صياغة الأمر الى استخدامين الأول في حالة انك لا تعتمد على الstate القديم في اجراء التغييرات وهذا مثال بسيط export default function App() { const [state, setState] = useState('some data'); const handleChange = () => { setState('other data'); }; return <div>.....</div>; } و هذا مثال أخر export default function App() { const [state, setState] = useState({ username: '', password: '', }); const handleChange = (e) => { setState({ ...state, [e.target.name]: e.target.value, }); }; return <div>.....</div>; } لكن في حالة ما اذا اردت تغيير ال state بالاعتماد على ال state القديم فحينها يجب عليك استخدام callback export default function App() { const [state, setState] = useState(0); const handleChange = (e) => { function increment() { setState((prevState) => prevState + 1); } }; return <div>.....</div>; }1 نقطة
-
يمكنك استخدام خطاف useLocation الذي يوفره react-router-dom import React from 'react'; import { useLocation } from 'react-router-dom'; function useQuery() { return new URLSearchParams(useLocation().search); } export default function App() { let query = useQuery(); const firebaseKey = query.get('__firebase_request_key'); console.log(firebaseKey); //somethingHere return <div>.....</div>; }1 نقطة
-
إن كنت تريد النتائج السريعة والكبيرة فعليك أن تبذل بعض المال كي تنشر تطبيقك وكي يرى النور في أجهزة عشرات أو مئات الآلاف من أجهزة المستخدمين. هنالك عدة خيارات للتسويق الرقمي المدفوع، قد يكون أفضلها هو عن طريق عرض الاعلانات في هواتف الأندرويد، عبر الاعلانات التي تظهر في الكثير من التطبيقات، يتم ذلك عن طريق عدة شبكات اعلانية لعل أشهرها هي (AdMob) والتي هي شبكة اعلانية متخصصة في تطبيقات الهواتف الذكية، مفيدة لكلا الطرفين ، الناشرين والمعلنين. هنالك طبعاً الوسائل الأخرى للترويج عن تطبيقك مثل الفيسبوك و Google Adwards وغيرها1 نقطة
-
1 نقطة
-
مرحباً أحمد: إذا كانت هذه الحالة الوحيدة من نوعها فيمكنك رفع حالة المكون component4 إلى المكون component 1 عن طريق ال props وبعد ذلك إعطاء القيمة للمكون الخامس عن طريق ال prop ولكن هذ الطريقة غير محببة لأنه قد يكون لديك أكثر من ٤ مكونات بداخل بعضهم الطريقة الثانية : هي أن تقوم باستعمال ال stateManagement بحيث تقوم في المكون ٤ بإعطاء القيمة لل store ومن ثم استخدامها في المكون الخامس الطريقة الثالثة : هي عن طريق عمل context يخزن فيه الحالة التي تريد استخدامها ودالة تقوم بتغيير هذه الحالة (. state ) وفي المكون الرابع تستخدم الدالة لتغيير الحالة كما تريد والمكون الخامس يستخدم الحالة نفسها (.يقرأها )1 نقطة
-
مرحباً بك: تحتاج ال stateManagement فقط في حالة كانت ال state مشتركة في مكونات كثيرة ولكن هنا هي فقط state ما بين الثلاث مكونات كالآتي: function App() { state= { isFilterChanged: false }; // عند تغيير الفلاتر تقوم بتحديث ما تريد في ال state updateFilterState = () => { // تقوم بتحديث كمثال isFilterChanged this.setState({ isFilterChanged: true }); } render() { const { isFilterChanged } = this.state; // تمرير الخاصية للمكونات الأخرى return( <> <TopBar isFilterChanged={isFilterChanged} /> /* عند تغيير الفلاتر نقوم بتحديث ال state وتمريرها للمكونات الأخرى */ <Filters onChangeFilter={updateFilterState} /> </> ); } } وعندما تريد الإستفادة من التغيير الحاصل يجب أن تستقبل isFilterChanged بداخل المكونات الأخرى ومقارنة قيمتها الحالية بقيمتها السابقة فإذا كانت مختلفة تقوم بتنفيذ كود معين function TopBar() { componentDidUpdate(prevProps) { const { isFilterChanged } = this.props; // التحقق ما إذا كانت القيمة تغيرت أم لا if(prevProps.isFilterChanged !== isFilterChanged) { // نقوم بتنفيذ دالة هنا أو أي شيئ تريده لأن القيمة اتغيرت console.log('isFilterChanged', isFilterChanged) } } render() { return( <> <nav>Header</nav> </> ); } }1 نقطة
-
لإزالة القيم المتكررة في مصفوفة على Python والحصول على قيم وحيدة، نستعمل دالة Set وهي دالة توفرها لنا Python لهذا الغرض. إذن يكفي أن نمرر متغير المصفوفة إلى الدالة Set بهذا الشكل : >>> t = [1, 2, 3, 1, 2, 5, 6, 7, 8] >>> t # عرص محتوى المصفوفة [1, 2, 3, 1, 2, 5, 6, 7, 8] # المصفوفة تتوفر على قيم متكررة >>> list(set(t)) # Set استعمال الدالة [1, 2, 3, 5, 6, 7, 8] #Set القيم المتكررة أزيلت بعد استعمال الدالة * لاحظ أن Set تستعمل مع دالة أخرى تدعى ب list. كما أن لهذه الدالة استعمالا آخر، وهو مقارنة قيم مصفوفتين، بهذه الطريقة: >>> t = [1, 2, 3, 5, 6, 7, 8]>>> s = [1, 2, 3] >>> list(set(t) - set(s)) [8, 5, 6, 7]1 نقطة