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

Kais Hasan

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

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

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

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

    24

كل منشورات العضو Kais Hasan

  1. إن هذا الأمر عادي و يحدث مع الجميع عند بداية تعلم البرمجة. يجب عليك حل الكثير من التمارين حتى تصبح جيداً في ذلك، أي تقوم بمحاولة حل تمرين لوحدك، إن لم تنجح في ذلك يمكنك السؤال هنا مع ذكر ما حاولت القيام به و يمكننا هنا مساعدتك خطوة بخطوة بدون إعطاءك الحل مباشرة مما يسمح لك بكسب المهارات بشكل أسرع. هناك الكثير من المواقع التي تحوي على تمارين برمجية بسيطة، منها hackerRank و hackerEarth.
  2. تم إضافة مسارين هما: تطوير تطبيقات أودو Odoo أساسيات تحليل البيانات و هما آخر مسارين بالتالي يجب عليك إكمال الدورة و لا داعي لإعادتها من البداية.
  3. جيد جداً ما قمت به، و لكن بما أن هذا الكود موجود على stackoverflow كما هو، فسأقوم بشرح تفاصيله بشكل مختصر لك باعتبار أنك فهمته، و سأقوم بشرح الفكرة التي يمكن تطبيقها لكي تستطيع حل مسألتك، و سيكون عليك كتابة الكود بنفسك، و في حال حدثت أخطاء إضافية فيمكنك السؤال دائماً. إنك في الكود السابق تحاكي العملية من أجل تكرار واحد، بحيث تقوم بإدخال العملية أولاً و ذلك عن طريق التابع input و من ثم تقوم بإدخال الأعداد أيضاً عن طريق التابع input و لكن بما أن الدخل يكون سلسلة نصية نقوم بتحويله من أجل الأرقام باستعمال int()، ثم نقوم بالقيام بالعملية المناسبة. الآن هذا ليس ما هو مطلوب تماماً، حيث أن الأعداد يجب أن تولد بشكل عشوائي و ليس المستخدم من يجب عليه إدخالها، يمكنك الإطلاع على الدالة random.randint و محاولة استعمالها في ذلك. بعد ذلك يمكنك القيام بالعمليات كما هي في الكود الذي أرفقته و ذلك لحساب القيمة الصحيحة، و لكن ليس عليك طباعتها مباشرة، حيث عليك الطلب من المستخدم إدخال النتيجة و مقارنتها بالنتيجة التي قمت بحسابها و طباعة فيما إذا كان حساب المستخدم صحيح أم خاطئ مع طباعة النتيجة في حال كان خاطئ، يمكنك القيام بذلك بشكل بسيط باستعمال العبارات الشرطية في بايثون و تعليمات الطباعة. لتكرار العملية 5 مرات يمكنك استعمال الحلقة for مع range، حاول البحث عن ذلك، يجب أن تعلم كيف تقوم بذلك في حال كنت تعلم القليل حول بايثون. تبقى أمر واحد و هو إظهار رسالة خطأ في حال أدخل المستخدم عملية خاطئة، سأترك هذا لك لتفكر به، حاول القيام بالأمور السابقة بداية ثم محاولة القيام بالتحقق من العملية.
  4. من فضلك قم بذكر ما الذي حاولت القيام به و ما الأخطاء التي حدثت معك، يمكننا مساعدتك بحل أخطاء معينة و لكن إعطاءك الجواب على سؤالك فوراً لن يعود عليك بأي فائدة و لن تتطور مهاراتك البرمجية في حال قمنا بذلك.
  5. لقد قمت بتجريب ال modal الخاص بك ك html و لا يوجد به أخطاء، أعتقد الخطأ في ملف ال html الأساسي، من فضلك هل يمكنك مشاركته هنا؟ و في حال كان بإمكانك إرفاق المشروع كاملاً فإن هذا أفضل، يمكنك ضغط المجلد الخاص بالمشروع و رفعه هنا.
  6. نعم هكذا تتم المقارنة. هذه أبسط طريقة على حد علمي، يمكنك أيضاً استعمال equalsIgnoreCase بدلاً من equals هذا يساعدك على المقارنة بغض النظر عن حالة الأحرف، بشكل عام هذه الخاصية مطلوبة.
  7. الكود غير صحيح، حيث أنه دائماً سيعيد not correct، السبب في ذلك أنك استعملت المعامل == لمقارنة السلسلة المدخلة مع السلسلة التي تريدها. إن المعامل == يقارن الأغراض و بالتالي سيعيد دائماً false حيث أن الغرض المدخل ليس نفسه الغرض "NOT" مثلاً و لو كان لهما نفس القيمة. لمقارنة تساوي المحتوى لسلسلتين استعمل ما يلي: if (answer.equals("NOT")) عندها سيصبح برنامجك صحيح (بالطبع يجب عليك القيام بذلك في كلا الشرطين). بالإضافة إلى ذلك يجب عليك إخبار المستخدم بما عليه إدخاله، حيث أنه لن يعرف، مثلاً قد يدخل no بدل not، فأخبره أن يجب ب NOT أو YES.
  8. كما ذكرت لك في الجواب السابق، عليك استعمال قواعد البيانات لتخزين كلمات السر بشكل مشفر، إن الخطوات اللازمة لذلك كما سبق و قلت تحتاج إلى التعامل مع الكثير من المفاهيم التي لا يمكن شرحها في جواب واحد، حيث أن هناك دورات كاملة لشرح آلية العمل هذه.
  9. إن السؤال غير واضح، كما أنه يجب عليك إظهار ما الذي قمت بالقيام به، يجب عليك أن تحاول حل المطلوب و في حال حدث خطأ معك أو لم تستطع استنتاج فكرة معينة يمكنك السؤال عنها. إخبارك بالحل مباشرة لن يساعدك على تطوير مهاراتك البرمجية.
  10. إن المشكلة في توليد المفاتيح، يمكنك القيام بذلك يدوياً كما يلي: في البداية نقوم بفتح سطر الأوامر، و نذهب إلى المجلد الخاص بالمشروع، باستعمال الأمر cd يليه المسار الخاص بالمشروع. ثم نقوم بكتابة ما يلي في سطر الأوامر: keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 بعد تنفيذ الأمر السابق سيتم إنشاء مجلد يحمل الاسم debug.keystore، نقوم بنسخ هذا المجلد و نتوجه إلى المجلد الذي يحمل الاسم: .android هذا المجلد يفترض أن يكون موجوداً ضمن مجلد المستخدم الخاص بك، قم بالبحث عنه لإيجاده و من ثم لصق المجلد الذي قمنا بنسخه فيه.
  11. أعتقد أنه كنت ترغبين بكتابة list.x هنا و ليس x، لقد قمتي بتعريف x ضمن الصف list على أنه متحول static و هذا يعني أن قيمة هذا المتحول تعرف مرة واحدة عند تعريف الصف و لا يتم تدميرها حتى ينتهي البرنامج، هذه القيمة مرتبطة بالصف و ليس بغرض محدد، و لكن يمكن للغرض الوصول إليها و تعديلها. نصيحة أخرى أود تقديمها هنا، هي أن الصنف list موجود أصلاً في ال std، لم يحدث لديك تعارض ﻷنك لم تقومي بتضمين المكتبة list و لكن بشكل عام يفضل عدم تسمية الصفوف التي نعرفها بأسماء صفوف موجودة في مكتبات أخرى، في برنامج صغير قد لا نقدر هذا الأمر و لكن من الجيد الاعتياد عليه حيث أنه يوفر علينا وقت كبير في البرامج الكبيرة لاحقاً.
  12. إن مفهوم ال output buffer هو مفهوم ستجده في كثير من اللغات و ليس فقط php، و بالتالي سأشرح لك المفهوم بشكل عام. إن ال buffer هو مثل مخزن يتم تخزين البيانات فيه، مثلاً في حال كنا نريد طباعة بعض الجمل إلى الشاشة أو المتصفح، فإنه قد تعتقد أن الأمر يتم فوراً، و لكن هذا غير صحيح، حيث أن ما تريد طباعته يتم تخزينه في ال buffer و من ثم يتم طباعته. لماذا كل هذا التعقيد؟ و لماذا لا نقوم بالطباعة مباشرة؟ الجواب على ذلك هو أن عملية الطباعة و إرسال البيانات لعرضها هي عملية مكلفة، و بالتالي نريد التقليل منها قدر الإمكان، و هذا يعني مثلاً أننا في حال كنا نريد طباعة عدة جمل فإذا كان بإمكاننا أن نرسلهم دفعة واحدة فهذا أفضل، و هذا ما يمكن تحقيقه باستعمال ال buffer. هذه مقالة جيدة من أجل ذلك PHP MVC Framework Tutorial.
  13. لا ينصح بتخزين كلمات السر في ملف عادي، حيث يجب تخزينها في قاعدة البيانات و بشكل مشفر. بالإضافة إلى ما سبق إن ما تريده يلزم وجود سيرفر لمعالجة الطلبات، أي يتم إرسال المعلومات إليه من فورم تسجيل الدخول و هو يقوم بمعالجته و التحقق، و من ثم التوجيه إلى الصفحة المطلوبة. إن القيام بذلك الأمر يحتاج إتقان الكثير من الأمور، الدورات التي تقدمها حسوب ستمكنك من القيام بذلك و بأكثر من ذلك، و يتم شرح الأمر بأكثر من لغة، سواء javascript باستعمال node.js أو python باستعمال django أو php و laravel.
  14. github ممكن استعماله مع مواقع ستاتيكية تعتمد على css و html فقط، لكن لا يمكن استعمال سيرفر من خلاله، حيث يجب عليك استعمال أحد الخدمات الخاصة بذلك، مثل AWS. لا يعتبر استضافة، إنه مستودع للأكواد، و ليس استضافة مواقع، أي يمكنك رفع أي كود عليه، لكن لا يمكنك تشغيل الكود عليه لعرض الموقع و نشره.
  15. يمكنك بشكل مبسط اعتبار github مستودع للمشاريع، حيث يمكنك القيام برفع المشاريع عليه، و لكن ليس مجرد تخزين عادي، حيث أنك ترفع عليه باستخدام git و التي تحافظ على كافة التعديلات مع تفاصيل متى حدث التعديل و ما الذي تم تعديله و من عدل عليه و بالتالي في أي لحظة يمكن الرجوع إلى كود سابق. بالإضافة إلى ما سبق، فهو يسهل عمل الفريق، حيث يمكن رفع المشاريع عليه و بإمكان أي أحد من الفريق سحب المشروع لديه و التعديل و نشر التعديلات التي تصبح مرئية لبقية أعضاء الفريق، طبعاً ضمن ضوابط و قواعد معينة حتى لا تحدث تضاربات. بالإضافة إلى كل ما سبق، في الآونة الأخيرة انتشرت بكثرة مفاهيم ال devOps و التي تعنى بالكثير من الأمور من بينها أتمتة عمليات الاختبار و النشر، و يوفر github أدوات لتحقيق ذلك، عن طريق ما يسمى github actions، حيث يمكن أتمتة عمليات الاختبار و أتمتة نشر الكود في مكان آخر، شخصياً لم أقم باستعمال هذه الميزات على github و لكن استعملت ميزات على موقع مشابه له اسمه gitlab و هي ميزات في غاية الأهمية، حيث قمت بواسطتها بأتمتة عملية الاختبار و النشر على AWS بحيث بدل أن تستغرق عملية النشر مني وقت طويل و قد أنسى عملية أو أخرى، فإن كل ذلك يحدث بشكل أوتوماتيكي و لا يستغرق أكثر من دقيقتين (حسب المشروع طبعاً).
  16. if form.is_valid(): form.save() username = form.cleaned_date.get('username') password = form.cleaned_date.get('password') user = authenticate(username=username , password=password) login(request,user) هنا في السطر الأخير، في حال لم يتنفذ ما بداخل ال if فهذا سيؤدي لخطأ حيث أن ال user غير معرف، أعتقد أنها يجب أن تكون بداخل ال if.
  17. إن الجواب على سؤالك الأول هو نعم في حال كان قصدك أنك تريد رؤية الكود، و لكن في حال أردت تشغيل الكود و لم يكن صاحب المشروع قد قام برفعه على استضافة فالإجابة لا. من أجل السؤال الثاني، إن المطلوب هو أنك تفهم ما الذي يتم عمله، في حال كنت تفهم الآلية العامة فهذا جيد جداً، حيث يمكنك ببساطة أن تعود إلى ما نسيته و تحضر الدرس مرة أخرى، هذا سيساعدك، أي تأكد أنك أصبحت ملم بكل جوانب الدورة و عندها يمكنك التقدم للاختبار و أنت واثق من نفسك و من معلوماتك.
  18. إن CPython هي عبارة عن تحقيق للغة البايثون بلغة c، و هي النسخة الأكثر استعمالاً و هي الافتراضية في حال قمت بتنزيل بايثون بدون تغيير أي شيء، و هي تقوم بعمل compile لكود البايثون إلى بايت كود ثم القيام بتنفيذه بنفس الطريقة التي ينفذ بها كود البايثون العادي و هذا يسرع العمل، قد ترى ذلك في مجلد يدعى __pycache__ بعد تنفيذ كود بايثون. بينما Cython هي لغة مستقلة و هي تحوي ميزات ال python بالإضافة إلى ميزات أخرى، و هي تملك نفس ال syntax الخاص بال c و يمكن استعمالها لكتابة إضافات لل CPython و يتم عمل compile للكود فيها.
  19. إن الخطأ الذي أخذت لقطة شاشة له يظهر نتيجة محاولة بناء التطبيق JavaFXApplication6 بينما يبدو أنك تكتب في التطبيق JavaFXApplication4 لاحظ هناك في الخرج نافذة أخرى لذلك ل JavaFXApplication4 غير التي تظهر الخطأ. يمكنك عمل run بالنقر بالزر الأيمن للفأرة على المشروع من ثم يظهر لك خيارات البناء و التنفيذ و ما إلى هنالك، و انتبه إلى اسم النافذة للتأكد أنك تنفذ الكود الصحيح.
  20. هناك عدة أخطاء في الكود، قبل ذكر الأخطاء نصيحتي لك هي القيام بترتيب الملف من حيث الإزاحات حيث أن اكتشاف الأخطاء بدون ذلك هو عملية صعبة جداً. لقد قمت بترتيب الملف من فضلك قم بأخذه حيث أن أرقام الأسطر التي سأذكرها تابعة لهذا الملف (أي الملف بعد الترتيب). login-php.php أول خطأ أنه لديك شرط if في السطر 4 و قد قمت بوضع else له في السطر 22 و أيضاً في السطر 44، و لكن لا يمكن أن يكون هناك عبارتي else ل if واحدة. ثاني خطأ أنك في السطر 27 لم تضع فاصلة منقوطة في نهاية التعليمة. ثالثاً في السطر 24 التعليمة غير صحيحة، أعتقد أنك وضعت قوساً عن طريق الخطأ بدل الفاصلة. رابعاً لم تقم بوضع إشارة $ قبل البارامتر الخاص بالتابع في السطر 5.
  21. إذا كنت تقصد أن كلاهما يستعمل لتحديد عناصر من أجل التنسيقات أو من أجل التعامل معهم من ال js فهذا صحيح. الفرق بينهما أن ال id فريد، و لا يجوز لعنصرين أن يكون لهما نفس ال id. بينما ال class ليس كذلك، و يمكن ﻷكثر من عنصر أخذ نفس القيمة. بالتالي يمكن استعمال ال id عندما نريد أن نصل لعنصر معين بذاته. بينما نستعمل class في حال كنا نريد تطبيق شيء على مجموعة ما، فيمكننا اعتبار ال class كأنه هنا يقول أن غرض ما ينتمي إلى مجموعة ما، و بالتالي تطبيق أمر ما على كل عناصر المجموعة. أي مثلاً في حال كان لدينا الكثير من المكونات div و كل منها يمثل مثلاً تعليق، فيمكننا وضع قيمة ال class لهم comment و تطبيق ما نريد عليهم دفعة واحدة.
  22. إن SQLCipher لا تحتوي على دعم ل REGEXP، يجب عليك إما عدم استعمالها أو محاولة الوصول إلى المعلومات التي تريدها دون استعمال regex.
  23. أعتقد حينها أن المشكلة حسب الآلة التي تستعملها، فكود الاسيمبلي ليس بالضرورة أن يعمل على كل آلة، لذلك في هذه الحالة يمكنك القيام بالطريقة الأولى التي ذكرتها، فتلك تقوم بعملية ترجمة حسب آلتك كونك تنفذها على آلتك.
  24. نعم، لم أتحقق من كود الأسيمبلي بشكل كامل و لكن أعتقد أنهم يقومون باستعمال الطريقة التي شرحتها في الأول و هي طريقة مضمونة حتماً.
  25. في javafx يجب أن يرث الصف الذي يحوي على التابع main الصف Application و الموجود في المكتبة javafx.application. في حال لم ينجح ذلك من فضلك قم بمشاركة الكود الخاص بك، بالإضافة إلى لقطة شاشة للخطأ الذي يظهر.
×
×
  • أضف...