-
المساهمات
5207 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
65
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو محمد عاطف17
-
وعليكم السلام ورحمة الله وبركاته . المشكلة التي تحدث لك هي مشكلة مشهورة في تعدد المهام (multi threading) وهي التسابق (race condition) وفي تلك الحالة إذا كان هناك أكثر من عملية process تتعامل مع نفس البيانات فهنا تحدث مشكلة في التسابق . حيث كل عملية تقوم بتعديل القيمة قبل الأخرى وبذلك كل عملية يكون لديها بيانات مختلفة لنفس المتغير . هنا في دالة num يوجد حلقة تكرار وبداخل تلك الحلقة تقوم بزيادة قيمة x.value . ولكن في دالة checkNum تقوم بالتحقق من تلك القيمة . هنا يحدث تسابق فتقوم الدالة num بزيادة المتغير بطريقة سريعة جدا . ولكن checkNum لا تستطيع مجاراة ذلك التعديل وبالتالي الدالة checkNum يكون لديها قيم قديمة للمتغير x.value . أى لنفرض أن الدالة num قيمة المتغير x.value وصلت إلى 10000 ولكن بداخل الدالة checkNum قيمة x.value لديها لم تصل إلى ال 10 . وهذا هو سبب المشكلة . ويمكنك قراءة الإجابات التالية والمقالات لمزيد من التفاصيل حول تلك المشكلة : والحل لتلك المشكلة هي القفل Lock . حيث تقوم بقفل هذا المتغير قبل إستخدامه وبهذا إذا أرادت عملية الوصول لهذا المتغير لتعديله أو قراءته لن تستطيع إلا قبل أن يتم إلغاء القفل . وإليك الكود الصحيح بإستخدام ال Lock : import multiprocessing from multiprocessing import Manager def num(x, y, lock): while y.value == False and x.value != 10: with lock: x.value += 1 print(x.value, "\n") def checkNum(x, y, lock): while x.value <= 10 and y.value == False: with lock: print(x.value, ":") if x.value >= 10: print("x equal or greater than 10\n") y.value = True else: print("x doesn't equal or greater than 10\n") if __name__ == '__main__': manager = Manager() x = manager.Value("d", 0) y = manager.Value("b", False) lock = manager.Lock() # قفل لمنع الوصول المتزامن للمتغيرات المشتركة th1 = multiprocessing.Process(target=num, args=(x, y, lock)) th2 = multiprocessing.Process(target=checkNum, args=(x, y, lock)) th1.start() th2.start() th1.join() th2.join()
- 6 اجابة
-
- 1
-
-
لقد قمت بتمرير ال id كمتغير وليس كقيمة وأيضا قمت بإنشاء دالتين copy وهذا خطأ . إليك الكود الصحيح . index.html
- 3 اجابة
-
- 1
-
-
يجب الذهاب إلى المسار الخاص بالمشروع أولا لتنفيذ الأوامر التالية . ولفتح المشروع يمكنكي الذهاب إلى مكان الملف وفي العنوان يرجى كتابة cmd : بعد فتح ال cmd يرجى كتابة الأمر التالي : code . سيتم فتح vs code في المسار الموجود به الملف . بعد ذلك يجب تنفيذ الأمر التالي لتشغيل ملف python : python app1.py ويجب أن يعمل .إذا إستمرت المشكلة يرجى تحميل برنامج anydesk وإرسال العنوان الخاص بكي للدخول على جهازك ومحاولة حل المشكلة. ولكن يرجى إرسال العنوان أسفل الدرس وليس هنا.
-
ستجدين أسفل فيديو الدرس صندوق للتعليقات كما هنا يرجى طرح سؤالك أسفل الدرس وليس هنا حيث هنا قسم الأسئلة العامة ولا نقوم بإجابة الأسئلة الخاصة بمحتوى الدورة أو الدرس، وذلك لمعرفة الدرس الذي توجد به مشكلتك و لمساعدتك بشكل أفضل.
-
الفرق بين القواميس (Dictionaries) و القوائم (Lists) و المصفوفات (Arrays) يكون في طريقة تنظيم وهيكلية البيانات و طريقة حفظها و كيفية الوصول إليها. القواميس (Dictionaries) : القاموس هو هيكل بيانات يتم فيه تخزين العناصر في شكل أزواج من القيم و المفاتيح . يمكنك الوصول إلى القيمة من خلال المفتاح المربوط بها . لا يمكن أن يوجد أكثر من مفتاح متشابه في القاموس الواحد . مثال : my_dict = {'name': 'Mohamed', 'age': 25} print(my_dict['name']) # 'Mohamed' القوائم (Lists) : القائمة هي هيكل بيانات يتم تخزين العناصر في بالترتيب الذي تم إدخالهم به ويمكنك الوصول إلى العنصر من خلال ال index وهو الترتيب الذي يوجد به العنصر في القائمة. يتم بدأ عد ال index من 0 . يمكن حفظ أى نوع من البيانات في نفس القائمة حيث يمكن حفظ أرقام أو سلاسل نصية أو حتى قوائم أيضا . مثال : my_list = [1,"Mohamed", [3, 4]] print(my_list[0]) # 1 المصفوفات (Arrays) : المصفوفة هي هيكل بيانات يحتوي على مجموعة من البيانات ولها نفس النوع. هي نفس هيكل القوائم ولكن الإختلاف هنا أنه لا يمكن إستخدام عناصر من نوع مختلف كما في القوائم . مثال : import array my_array = array.array('i', [1, 2, 3, 4]) print(my_array[2]) # 3 في المثال السابق قد قمنا بتعريف المصفوفة أنها ستحتوي على عناصر من نوع "i" int أى رقم وهنا لا يمكن أن نضع عناصر ليست من نوع int . ويمكنك قراءة الدروس التالية لمزيد من التفاصيل : القوائم list في بايثون المصفوفات في بايثون القواميس dict في بايثون
- 1 جواب
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. الاشتقاق والجبر الخطي هما الأساسان المهمان في فهم الشبكات العصبية وكيفية تدريبها وعملها. وبالرغم من وجود العديد من الأدوات الجاهزة أمثال TensorFlow وPyTorch وغيرها والتي تسهل بناء وتدريب النماذج إلا أن الفهم لهذان المجالان مهم جدا. وحيث أن الأدوات الجاهزة توفر لك أساس لبناء النماذج لكن الفهم الجيد للاشتقاق والجبر الخطي يمكنك من تحسين تلك الأدوات وإستعمالها بكفائة عالية وحتى يمكنك من تعديلها تطويريها . فهناك أمثلة عديدة لذلك مثل برامج تصميم المباني وغيرها . هي بالفعل متاحة لجميع المهندسين ولكن كل شخص من الإبداع ومهارته يستطيع إستخدام تلك الأدوات والبرانج بالطريقة التي تمكنه من الإبداع . وهنا لن يتساوي المهندس الجيد بغيره .
- 3 اجابة
-
- 1
-
-
إذا قمت بمسح القيم من خلال dropna() فلن تستطيع تعويض تلك القيم . لأن dropna() تقوم بحذف الصف بأكمله ولهذا لن تسطيع ذلك . يمكنك إستخدام ال mean مباشرة دون حذف القيم الفارغةومن ثم إستبدال تلك القيم هكذا : mean_value = data.mean() data_filled = data.fillna(mean_value)
- 2 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. يجب أولا حساب نسبة كل شخص من المبلغ الكلي المدفوع لنقوم بحساب مساهمة كل شخص ونسبته في امتلاك المنزل . إجمالي المبلغ المدفوع = 1,000,000 + 600,000 + 450,000 = 2,050,000 . إذا المبلغ الإجمالي هو 2 مليون و 50 ألف . لنقوم بحساب نسبة كل شخص من امتلاك المنزل : الشريك الأول: (1,000,000 / 2,050,000 ) = 48.78% الشريك الثاني: (600,000 / 2,050,000 ) = 29.27% الشريك الثالث: (450,000 / 2,050,000 ) = 21.95% إذا النسب كالسابق وهي 48.78% للشريك الأول و 29.27% للشريك الثاني و 21.95% للشريك الثالث. إذا المبلغ يجب ضرب الرقم 4,000,000 في نسبة كل شخص لتكون المبلغ الإجمالي هو : الشريك الأول: (4,000,000 * 48.78% ) = 1,951,200 الشريك الثاني: (4,000,000 * 29.27% ) = 1,170,800 الشريك الثالث: (4,000,000 * 21.95% ) = 878,000 إذا الشخص الأول قام بإكتساب 951,200 ألف والثاني 570,800 والثالث 428,000. ولكن يرجى الإنتباه أن تلك القيم السابقة تقريبيه حيث النسب يوجد بها كسور بسيطة تم إهمالها مما يسبب فروق في جنيهات وقروش . ولكن إذا أردت القيمة بالشكل الصحيح والمبلغ الصحيح يمكنك إستخدام التالي : 4,000,000 * (1,000,000 / 2,050,000 ) = 1,951,219.512195121951219512195122 4,000,000 * (600,000 / 2,050,000 ) = 1,170,731.7073170731707317073170732 4,000,000 * (450,000 / 2,050,000 ) = 878,048.78048780487804878048780488
-
يوجد هنا العديد من الدورات التي تؤهلك لتصبح مطور واجهات خلفية ولكن كل دورة تستخدم لغة معينة والتقنيات الخاصة بتلك اللغة . لذلك يجب عليك أولا تحديد التقنية التي تريد العمل بها أو تحبها . دورة تطوير التطبيقات باستخدام لغة Python . يتم إستخدام لغة بايثون هنا وأطر العمل الخاصة بالواجهات الخلفية مثل Django و Flask و بعد الانتهاء من هذه الدورة يمكنك ان تصبح مطور برمجيات بلغة بايثون و backend devolper باطار عمل django وايضا تهيئك لمجال تحليل البيانات والذكاء الاصطناعى وتعلم الالة . دورة تطوير التطبيقات باستخدام JavaScript. حيث يتم إستخدام لغة javascript هنا وتقنيات الواجهات الخلفية مثل nodejs و إطار express و next js.و بعد الانتهاء من هذه الدورة يمكنك ان تصبح مطور واجهات خلفية بلغة جافاسكريبت وتمكنك أيضا من ان تصبح مطور MERN stack وايضا تمكنك من تطوير تطبيقات الهاتف . دورة تطوير تطبيقات الويب باستخدام لغة PHP . حيث يتم إستخدام لغة php وأطر عمل مثل laravel و wordpress . وبعد الانتهاء من هذه الدورة يمكنك ان تصبح مطور برمجيات بلغة php مع اطار عمل لارافيل و ووردبريس . دورة تطوير تطبيقات الويب باستخدام لغة Ruby عد الانتهاء من هذه الدورة يمكنك ان تصبح مطور برمجيات بلغة ruby. لذلك قبل إختيار دورة بعينها يرجى الأول تحديد اللغة التي تريدها وأيضا قم بالبحث في نطاقك عن التقنيات المطلوبة في الوظائف بكثرة لتستطيع الحصول على وظيفة سريعا.
-
وعليكم السلام ورحمة الله وبركاته. هل تقومين بفتح ملف التثبيت كمسؤول ؟ يجب تشغيل الملف كمسؤول ليستطيع الوصول إلى المكتبات اللازمة على الجهاز ليعمل . يجب الضغط على ملف التثبيت بالزر الأيمن وإختيار "Run as Administrator" ومحاولة التثبيت مرة اخرى . أيضا يجب ان يتم تثبيت net framework. حيث يتطلب إصدار NET 4.7.2 فما أعلى . لذلك يجب التأكد من تثبيت NET والتأكد من الإصدار الخاص به أيضا والمحاولة مرة أخرى.
-
وعليكم السلام ورحمة الله وبركاته. نعم لا بئس يمكنك مشاهدة مسار nodejs قبل react فهو منفصل عنه ولا يحتاج أى ترتيب مسبق . وإذا أردت عدم مذاكرة react إذا كنت تريد فقط التركيز على تطوير الواجهات الخلفية فلامشكلة أيضا ولكن يفضل مذاكرة جميع المسارات في الدورة للحصول على الإستفادة القصوى منها. ولقد تم تصميم الدورة بالترتيب المناسب ولكن بعد مسارات الأساسيات . فبعد تلك المسارات توجد تطبيقات عملية و تقنيات مختلفة ولهذا لا يمكن البدأ بها قبل إتمام المسارات التي قبلها .
- 2 اجابة
-
- 1
-
-
لنسخ أى شئ ووضعه في الحافظة "clipboard" يمكنك إستخدام الكود التالي في جافاسكريبت : navigator.clipboard.writeText("text to copy") ويمكنك بداخل الدالة writeText وضع النص الذي تريد نسخه ويمكنك تحديد عنصر html وتمرير النص الذي بداخله لتلك الدالة . وإليك ملف html بسيط يمكنك وضع الأكواد بداخل العنصر pre وستجد زر النسخ يمكنك الضغط عليه ونسخ محتوى العنصر . ويمكنك محاولة تحسين الملف من خلال إستخدام تنسيقات css ومكتبات مثل bootstrap وغيرها . index.html
- 3 اجابة
-
- 1
-
-
ستجد أسفل فيديو الدرس صندوق للتعليقات كما هنا يرجى طرح سؤالك أسفل الدرس وليس هنا حيث هنا قسم الأسئلة العامة ولا نقوم بإجابة الأسئلة الخاصة بمحتوى الدورة أو الدرس، وذلك لمعرفة الدرس الذي توجد به مشكلتك و لمساعدتك بشكل أفضل.
-
بما أن التحذير إختفى إذا تم حل المشكلة وتم الإتصال بقاعدة البيانات بشكل صحيح. الخطأ من الممكن في الكود لديكي أو في إعداد قاعدة البيانات . يرجى التأكد من أن البيانات يتم إدراجها في قاعدة البيانات بشكل صحيح حتى يعمل المشروع. والرابط الصحيح هو http://localhost/store/index.php ولا يجب كتابة 4432 إلا إذا قمتي بتغير xampp apache ليعمل على منفذ 4432
-
في هذا السطر يتم إستيراد ملف define.inc وهذا الملف هو الذي يحتوي على التعريفات . يمكنكي فتح الملف define.inc و البحث عن DBUSER فيه كما أخبرتك والتعديل عليه.
-
الخطأ يقول أنه لا يمكن الإتصال بقاعدة البيانات حيث تم رفض الوصول وهذا غالبا بسبب خطأ في كلمة مرور قاعدة البيانات . إذا لم تقومي بإنشاء كلمة مرور لقاعدة البيانات أثناء تثبيتها يرجى عدم كتابة كلمة مرور في الكود . أى يرجى البحث عن الثابت DBPWD في الكود لديكي ووضعه بسلسلة نصية فارغة هكذا : const DBPWD = ""; أما إذا أنشأتي كلمة مرور لقاعدة البيانات يجب وضع كلمة المرور تلك في الثابت DBPWD كما في السطر السابق.
-
وعليكم السلام ورحمة الله وبركاته. يفضل إستخدام برنامج laragon فهو حاليا أفضل وأحدث من برنامج xampp ويوفر العديد من المميزات الأخرى وسهل الإستخدام عن xampp. أما بخصوص xampp فتأكدي من أنه يعمل لديك هكذا : وبعد ذلك تأكدي من أن مجلد المشروع الخاص بكي يوجد في المسار التالي : C:\xampp\htdocs لنفرض مثلا أن مجلد المشروع لديك يسمى blog فيجب أن تضع المجلد ليكون بداخل htdocs في xampp أي تكون الملفات في المسار التالي : C:\xampp\htdocs\blog ويمكنكي الآن الوصول إلى المشروع من خلال العنوان : http://localhost/blog أما بخصوص قواعد البيانات فيجب الذهاب إلى عنوان phpmyadmin ويمكنكي الوصول إليه من خلال الضغط على الزر Admin: بعد ذلك يجب إنشاء قاعدة البيانات حيث أولا نضغط على Databases ومن ثم كتابة إسم قاعدة البيانات والضغط على create : بعد إنشاء قاعدة البيانات يمكنكي إستيراد قاعدة البيانات إذا كان لديكي ملف قاعدة البيانات . أو إنشاء الجداول يدويا بنفسك
-
وعليكم السلام ورحمة الله وبركاته. لا بئس يمكنك محادثتهم مرة أخرى مجددا وإذا كان متاح الخصم سيساعدونك في ذلك ويمكنك محادثتهم من خلال الرابط التالي : https://support.academy.hsoub.com/conversations
-
وعليكم السلام ورحمة الله وبركاته. إذا كنت تقصد المحادثة الخاصة بمركز المساعدة . فعند إنتهاء المشكلة الخاصة بك يتم إغلاق المحادثة القديمة التي أجريتها ويمكنك فتح محادثة جديدة إذا أردت . أما إذا كنت تقصد المحادثة الخاصة بالرسائل الشخصية في حسابك فيجب أن تظهر لديك الرسائل حتى لو كانت قديمة وإذا إختفت الرسالة فهذا يعني أنه تم حذفها . يبدوا أنك قد قمت بحذفها دون قصد .
-
إذا كان الكود هو نفسه الذي يتم تشغيله في البيئتين فإذا المشكلة غالبا في إختلاف البيئات حيث من الممكن أن هناك إختلاف في إصدار المكتبات أو إختلاف إصدارات بايثون لديك مما يسبب إختلاف في النتائج وتريتب النتائج في العمود engtype . لذلك يرجى تنفيذ الأمر التالي للتأكد من إصدارات المكتبات لديك في كلا البيئتين : pip show pandas matplotlib seaborn وإذا كانت الإصدارات مختلفة يرجى تحديث المكتبات . أيضا تأكد من أن الملف car_sales_new.csv هو نفسه في البيئتين حيث من الممكن إذا قمت بنسخه إلى البيئة الأخرى ان يكوم تم تعديل الملف أو حدثت مشكلة به مما تسبب في إختلاف النتائج.
-
لنفترض أن اسم مجلد مشروعك هو xxxx يمكنك الاتباع الخطوات التالية : أولاً قم بالذهاب الى Github لإنشاء مشروع جديد . اضغط على زر New Repository. أدخل اسم المستودع xxxx . حدد خيار Public أو Private حسب الحاجة. اضغط على Create Repository. بعد إنشاءه ستجد أن git يوضح لك بالفعل الخطوات التي يجب إستعمالها ولكن لنمشي معا خطوة بخطوة . قم بفتحه موجه الأوامر cmd لديك . قم بتهيئة المستودع باستخدام الأمر التالي: git init قم بإضافة ملفات المشروع git add . قم بكتابة رسالة توضح أمر الرفع git commit -m "Initial commit" بعد ذلك قم بتسخ رابط المستودع الخاص بك وستجده في صفحة المستودع مع الأمر التالي حيث يجب إستبدال <reposiory-link> برابط المستودع git remote add origin <repository-link> بعد ذلك قم برفع التغييرات في مشروعك على Github من خلال الأمر git push -u origin main وهكذا سيتم رفع الملفات من المشروع المحلي لك على مستودع git . ويمكنك دراسة أساسيات git من خلال الدرس التالي على الأكاديمية : ويمكنك قراءة الإجابة التالية لمزيد من التفاصيل السابقة مع الصور والشرح :
-
وعليكم السلام ورحمة الله وبركاته. يفضل بالطبع أن تقوم بإزالة نفس العمود من بيانات الاختبار. حيث عندما تقوم بإزالة عمود من بيانات التدريب فإن النموذج قد تدرب على البيانات بدون هذا العمود وإذا قمت بإبقاء نفس العمود في بيانات الاختبار فبنسبة كبيرة سيواجه النموذج صعوبة في التنبؤ بسبب الإختلاف في هيكل البيانات بين التدريب والاختبار. وبهذا فإذا لم تقم بمسح العمود فإن النموذج قد ينحاز لتلك البيانات في عمود الإختبار ويعطي لها وزن أكبر مما يسبب عدم دقة في نتيجة التنبؤ.
- 5 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. الإهتمام الأول ينصب دائما على دقة النموذج و سرعته والعوامل الأخرى التي تميزه ولكن الكود ليس مهما ككل . ولكن من الطبع يجب أن يكون الكود جيدا حيث في حالة الفوز سيكون الكود الخاص بك متاحا للجميع لرؤيته وهذا جيد حيث إذا كان بالفعل كودك جيدا فمن الممكن أن تحصل على فرص عمل جيدة أو الإنضمام إلى فريق أخر إذا أردت للدخول والفوز في مسابقات أخرى.
- 3 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. إن مكتبة SymPy هي مكتبة رياضيات رمزية (symbolic mathematics) وتسمح لك بالتعامل مع الرموز الرياضية مثل المعادلات الرياضية التي تحتوي على متغيرات ورموز بدلاً من قيم ثابتة وأرقام. و تستخدم بشكل رئيسي في حل المعادلات الرمزية في التفاضل والتكامل والعمليات الجبرية الخطية وغيرها. وتستطيع من خلالها العمل مع الرموز مثل x و y بدل من الأرقام. مثال لها : x = symbols('x') expr = x + 1 x = 2 print(expr) # output x + 1 أما مكتبة NumPy في تستخدم في الرياضيات عددية (numerical mathematics) وهي متخصصة في العمليات الحسابية العددية باستخدام المصفوفات (arrays) وغيرها و تستخدم الأرقام الحقيقية والأعداد وليس الرموز والمعادلات. ويمكنك معرفة الفروق والمكتبات المتاحة المشابهة ل numpy من خلال المقال التالي :
- 2 اجابة
-
- 1
-
-
وعليكم السلام ورحمة الله وبركاته. إن بايثون تعتمد على الإزاحات (Indentations) لتنظيم الكود وتحديد الهيكل والتسلسل الزمني للتعليمات وعند تضمين تعليمات داخل كتلة معينة مثل الشروط (if/else) أو الحلقات (loops)، نستخدم الإزاحات لتحديد البلوك الذي يتبع الكود. والخطأ لديكي في السطر الأخير الخاص بجملة print حيث يجب أن يوجد قبل هذا السطر مسافة حتى يتم التفرقة في الإزاحات. لذلك قبل كتابة print("you win ") يرجى وضع مسافة واحدة وسيعمل الكود.
- 1 جواب
-
- 1
-