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

Kais Hasan

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

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

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

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

    24

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

  1. استعمال ال qt مسموح في التطبيقات المغلقة المصدر، طالما أنك لا تعدل على الكود أو تستعمل أكواد ضمن ال qt، أنت عندما تقوم باستعمال ال qt لا تستعمل ال source code الخاص بها، أنت فقط تستعمل المكتبة و لذلك فلا مشكلة في استعمالها و جعل الكود الخاص بك مغلق المصدر. ولا داعي لأي ذكر للترخيص. و بالتالي نزل المكتبة بشكل طبيعي و لا تقلق حول الترخيص.
  2. الرخصة بحد ذاتها يكون فيها الإشارة اللازمة. و أي مكتبة تريد استعمالها يكون على الموقع الخاص بها مذكور كيف تقوم باستعمال الرخصة الخاصة بهم أو الإشارة إليهم.
  3. مع ملفات المشروع، بالإضافة لوضعهما مع التطبيق بعد نشره، أي بشكل عام أينما وجد الكود الخاص بك أو التطبيق الخاص بك يجب أن تكون نسخة من الرخصة موجودة.
  4. طالما لم تقم بالتعديل في الكود الخاص بالمكتبة فلا مشكلة، يكفي وضع الرخصة.
  5. كلا، فقط الجزء الذي استعملته من الكود تحت هذه الرخصة.
  6. MPL أي كود تستعمله تحت هذه الرخصة يجب عليك أن تسمح للآخرين بالوصول إليه حتى ولو كان التطبيق الخاص بك مغلق المصدر. MIT، LGPL، Apache يمكنك استعمالها من دون ذكر أي شيء، أي يمكن استعمال الكود بدون حتى ذكر أنك استعملته. BSD يجب وضع نسخة من الرخصة في حال استعمال كود يستعملها, و لكن لا داعي للسماح بالوصول إلى هذا الكود في مشروعك. HPND هي مجرد قالب و ليست رخصة بحد ذاتها.
  7. المخطط غير صحيح، و غير قابل للتصحيح، يجب إعادة كتابته من البداية. هناك حلقة واحدة فقط هلى التي تمر على السلسلة التي لديك، كل مرة يكون فيها ما يلي: اقراً القوس التالي، في حال عدم وجود قوس تالي نذهب إلى 5. اختبر فيما إذا كان قوس إغلاق، في حال كان قوس إغلاق اذهب إلى 3 و إلا إلى 4. تحقق من أعلى المكدس، في حال كان قوس مفتوح نزيله و نذهب إلى 1، و إلا ننهي التنفيذ و نقول أن الأقواس غير صحيحة. نضيف القوس إلى المكدس، و نذهب إلى 1. نتحقق فيما إذا كان المكدس فارغ تكون الأقواس صحيحة، و إلا خاطئة.
  8. إن الذكاء الصنعي لحد الآن ليس خطراً على أحد، و لكنه أداة مساعدة، فال chatGPT ليست مثالية و لا يمكن توقع تماماً ما الذي تقوم به ﻷنه ليس من المفهوم تماماً ما الذي يتم تعلمه. بخصوص سؤالك عن المواصفات اللازمة لتعلم الذكاء الصنعي، في حال كان لديك ميزانية يمكنك شراء جهاز، و لكن لا تجعل ذلك عائقاً لك، شخصياً و عن تجربة، لقد كان لدي جهاز بمواصفات ضعيفة جداً حيث أن كرت الشاشة مدمج و المعالج ضعيف و الرامات 4 و رغم ذلك لم يشكل ذلك عائقاً، و ذلك ﻷن google توفر خدمة مجانية اسمها google colab تعطيك وصول إلى موارد جيدة جداً، تقريبا حوالي 4 ساعات كل يوم و هو شيء كاف في البداية لغاية التعلم. يمكنك استخدام google colab ببساطة بالذهاب إلى google drive و إنشاء ملف و اختيار google colab (قد يكون الخيار غير ظاهر مباشرة فعليك الذهاب إلى الخيارات الإضافية لرؤيته).
  9. سأذكر لك الطريقة العامة و أعتقد أنه سيصبح من السهل عليك حل التمرين بعدها لوحدك. تكون الأقواس صحيحة أو بمصطلح آخر تكون الأقواس تشكل عبارة رياضية صحيحة، عندما يكون كل قوس مفتوح يقابله قوس مغلق يليه ( ليس بالضرورة مباشرة) و كل قوس مغلق يقابله قوس مفتوح يسبقه ( ليس بالضرورة مباشرة). أي مثلاً ما يلي يعبر عن أقواس صحيحة: () () ( () ) ( () ( () () ) ) () () () ( ( ( ) ) ) بينما ما يلي لا يشكل أقواس صحيحة: ) () () ( ( ( ) ) ) ( ( ) ) ( هناك طريقة بسيطة تعتمد على المكدس للتحقق من ذلك، و هي أن تقوم بالمرور على كل قوس و تقوم بما يلي كل مرة: في حال لم يتبقى أقواس تكون الأقواس صحيحة فقط إذا كان المكدس خالٍ. في حال كان القوس مفتوح نقوم بوضعه في المكدس و ننتقل إلى العنصر التالي. في حال كان القوس مغلق، نتحقق من المكدس، إذا كان خالٍ فالأقواس ليست صحيحة، أما إذا لم يكن خالٍ نقوم بإزالة العنصر أعلاه و ننتقل إلى العنصر التالي. أو يمكنك استبدال المكدس بعداد، بحيث تقوم بعد الأقواس المفتوحة، كلما قابلت قوس مفتوح تزيد العداد و كلما قابلت قوس مغلق تنقصه، و في أي لحظة إذا كان العداد سالب أو إذا وصلنا للنهاية و كان العداد أكبر من الصفر تكون الأقواس غير صحيحة، أما إذا وصلنا إلى النهاية بعداد يساوي الصفر تكون الأقواس صحيحة.
  10. أنا لم أقم بكتابة المودل كاملاً، أي في حال لم يكن في المودل قد تم تعريف count فسيظهر الخطأ. في حال كان هناك count، جربي استدعاء full_clean بدلاً من clean في الدالة save.
  11. يمكنك جلب الحد الاصغري من self، أي يكون الكود الخاص بك كما يلي: class Product(models.Model): .... firscoun = models.PositiveIntegerField( verbose_name=_("Minimum Countete:"),blank=True, null=True,) ################## def clean(self): errors={} if self.count < self.firscoun: errors['min_count']= f'The min count must be greater than {firscoun}.' if errors: raise ValidationError(errors) هل يمكنك تجربة أن تقومي بإضافة منتج من صفحة الأدمن بعد هذا التعديل؟ أعتقد أنه يجب استدعاء الطريقة clean بشكل يدوي قبل عمل save للمودل، يمكن القيام بذلك عن طريق كتابة الطريقة save للقيام بذلك قبل استدعاء العملية save الاصلية، أي كما يلي: def save(self, *args, **kwargs): self.clean() super(Product, self).save(*args, **kwargs) طبعاً نضع هذه الدالة في ال model الخاص بالمنتج، أي مع الدالة clean. طبعاً عندها في المكان الذي يتم فيه إنشاء منتج جديد يجب القيام بكتابة try..except لالتقاط الخطأ الذي نرميه في الدالة clean.
  12. أعتقد أن المشكلة في السطر هذا، كيف تقومين بكتابة قاموس الحدود الأصغرية هذا؟ أي أين تقومين بتعريفه و كيف؟
  13. هل الإضافة كما قلت لك أيضاً لا تنجح؟ أي أن تقومي بالإضافة ضمن ال model و ليس ضمن ال form.
  14. يمكن استعمال الطريقة clean ضمن ال model للتحقق من البيانات كما نشاء، طبعاً يوجد طرق أسهل في حال كان المطلوب هو التحقق بناء على قيمة الحقل فقط و ليس بناء على قيمة أكثر من حقل في نفس الوقت. حسب ما فهمت تريدين التحقق بناء على حقلين، هما رقم المنتج و الكمية المطلوبة، بحيث الحد الأدنى يعتمد على رقم المنتج. بافتراض أنك تخزنين الحد الأدنى من أجل كل منتج بناء على رقمه، يمكنك استعمال هذه الدالة بشكل مشابه لما يلي (ما يلي مجرد مثال بسيط يجب تعديله حسب ال model الذي لديك): from django.core.exceptions import ValidationError from django.db import models class Product(models.Model): def clean(self): errors={} # نجلب الحد الأصغري من أجل هذا المنتج بناء على رقمه product_lower_bound = products_lower_bound_map[self.product_number] # نتحقق فيما إذا كانت الكمية المطلوبة أصغر من الحد الأصغري if self.count < product_lower_bound: errors['min_count']= f'The min count must be greater than {product_lower_bound}.' if errors: raise ValidationError(errors) يمكنك الإطلاع أكثر على ما يمكن فعله باستعمال هذه الطريقة من هنا.
  15. إن الكود السابق يقوم بحساب المتوسط الحسابي و التباين لمجموعة من الأعداد المولدة بشكل عشوائي. إن مخطط التدفق يصف ببساطة سير العمليات، أي كل ما عليك القيام به هو المرور على الكود تعليمة تعليمة و استبدال كل تعليمة بما يوافقها من رموز مخطط التدفق، مثلاً ال if عادة يتم تمثيها بشكل هندسي هو "المعين" و يتم وضع الشرط داخله، و يتفرع من هذا الشكل خطان، واحد لحالة أن يكون الشرط محقق و الآخر لحالة أن يكون غير محقق. نفس الأمر بالنسبة إلى ال for إلى أن الوضع قد يصبح أكثر تعقيداً. هذا مثال لتأخذ فكرة عن كيفية القيام بمثل هذه الأشياء
  16. سأساعدك في المفاهيم و عليك أنت المحاولة و في حال حدوث أخطاء يمكنك سؤالنا أكثر، هذا أفضل من أجل أن تكسب خبرة في العمل. المتوسط هو عبارة عن عملية رياضية، بشكل بسيط هي فقط مجموع الأعداد على عددها، أي كل ما عليك القيام به هو جمع الأعداد و تقسيم المجموع على عدد الأعداد و الذي هو هنا رقم ثابت 1000، مجموع الأعداد يمكن حسابه بشكل بسيط عبر حلقة تمر على الأعداد و متغير نخزن فيه المجموع. التباين هو مجموع مربعات الفروق بين العدد و القيمة المتوسطة، أي هو يقيس مقدار البعد عن المتوسط، يمكن حسابه عن طريق جمع مربعات الفروق و تقسيمها على عدد الأعداد ناقص 1 أي على 999 هنا، أي يجب أن نمر على كل عدد و نقوم بحساب الفرق بينه و بين المتوسط و تربيع هذا الفرق ثم إضافته إلى المجموع. أعتقد أنه من السهل الآن كتابة البرنامج.
  17. لا يمكن لأي دورة في العالم تغطية كل شيء بالحرف، حيث أن أي مجال من مجالات البرمجة و التقنية ستجد العشرات و أحيانا المئات من المراجع المكتوبة عنه، فهل يجب تغطيتها كلها؟ بالطبع لا، إن جودة الدورة ليس بكمية ما تغطيه، بل بأهمية ما تغطيه، قد تعمل لمدة سنوات في مجال ما بدون أن تستعمل أكثر من جزء صغير من التقنيات المتواجدة فيه، و لذلك الدورة الجيدة هي من تقدم لك التقنيات التي غالبا ستعمل بها و تستعملها. باقي التقنيات يمكنك تعلمه عند الحاجة فقط، و غالبا سيكون سهلاً عليك بعد أن تكون قد فهمت الأساسيات و آلية العمل. إن دورات حسوب تكفل لك أنك ستتعلم هذه الأمور الهامة لسوق العمل، و ليس مجرد حشو للمعلومات بدون فائدة فعلية.
  18. جرب كتابة ما يلي: const config = { headers:{ "Access-Control-Allow-Origin": "*" } }; axios.get("الرابط", config) طبعاً باقي الكود يبقى كما هو، أي أننا نحاول وضع ترويسة معينة عند إرسال الطلب لا أكثر.
  19. عليك تحديد هل تريد المقلوب أم المعكوس، هناك فرق رياضي كبير بينهما، و هما في أغلب الأحيان غير متساويان ( فقط في حالات خاصة يكونان متساويان). المنقول هو مجرد قلب الأعمدة أسطر و الأسطر أعمدة، أي كما شرح لك المدرب مصطفى. أما المعكوس فهو إيجاد المصفوفة التي يكون ناتج ضربها بالمصفوفة الحالية مساوٍ للمصفوفة I و التي هي الحيادي بالنسبة لعملية ضرب المصفوفات و تدعى Identity matrix. عملية إيجاد المعكوس عملية معقدة و تعقيدها الحسابي كبير و لا ينصح بكتابتها بنفسك و ذلك ﻷن هذه العملية تحتاج شخص خبير في العمليات الرياضية ضمن الحاسب لما يحدث من أخطاء دقة. سأشرح لك الفرق بينهما من ناحية الفكرة حتى تستطيع أن تقرر ما الذي تريده، و أن تفهم الفرق بشكل واضح. إن كل مصفوفة هي عبارة عن تمثيل لتابع خطي من فضاء شعاعي إلى آخر، و عندما نفكر بذلك يمكننا تحديد المعكوس لتابع ما f على أنه التابع g الذي يحقق f(g(v)) = v و g(f(v)) = v . بينما المنقول يمثل شيء آخر كلياً في موضوع معقد له علاقة بالفضاءات الثنائية. و بالتالي كما سبقت و نصحتك هذه المواضيع تحتاج شخص خبير جداً و على دراية بما يفعل في حال أراد نتائج جيدة، لذلك يفضل استعمال مكتبة جاهزة تم كتابتها من قبل خبير في هذه المواضيع، يمكنك أن تستعمل مكتبة ALGLIB مثلاً. حيث تحوي هذه المكتبة على تابع لإيجاد المعكوس و هو rmatrixinverse، و الذي تقوم بتمرير المصفوفة له فقط و هو يقوم بحساب معكوسها، كما يعيد لك true أو false تمثل فيما إذا كان يمكن عكسها أم لا، فهناك الكثير من المصفوفات غير القابلة للعكس.
  20. من فضلك هل يمكنك إرفاق فيديو يوضح ما الذي يحدث تماماً. تحياتي.
  21. إذا كان هدفك الوصول إلى الشركات الكبيرة و العمل بها، فستحتاج إلى هندسة البرمجيات حيث أنك ستجد فيها الكثير من المفاهيم النظرية التي تطبق عملياً في الشركات الكبيرة و لكنك لن تجدها في الشركات المحلية البسيطة أو محدودة النطاق. هندسة البرمجيات تحتوي على المفاهيم الضرورية، بالطبع ستتعلم البرمجة فيها، و لكن البرمجة مجرد لغة ما هو مهم هو فهمك للمفاهيم البرمجية و لطريقة تصميم المشاريع من الناحية الفكرية و التنظيمية، بالإضافة لمهاراتك الأخرى. في حال كان لديك الصبر و الثقة بأنك ستطبق المفاهيم النظرية التي تعطى في هندسة البرمجيات فأنصحك بالدخول إليها و إلا يمكنك الدخول إلى الكلية الأخرى، و في كافة الأحوال قد يختلف الأمر بين بلد و بلد، فأعتقد أنه يمكننا مساعدتك بشكل أفضل في حال كنت تستطيع ذكر أسماء المواد في كل منهما.
  22. أغلب المواقع تستعمل ما تم ذكره مسبقاً من قبل المدربين، إلا أنه يمكن استعمال طريقة أفضل في التقييم، حيث أنه من غير الصحيح دائماً اعتبار كافة الأصوات متساوية، فتقييم مستخدم ليس له خبرة في الأفلام يجب أن يكون أقل أهمية من تقييم خبير، لذلك هناك بعض المواقع التي توفر عدة أنواع من التقييمات بحيث يكون هناك وزن. لحساب ذلك يتم إعطاء وزن لكل مستخدم (مثلاً بناء على تاريخه في مشاهدة الأفلام على الموقع) كقيمة عددية (كلما كانت أكبر كلما كان الرأي أهم) و يتم حساب التقييم عن طريق ضرب تقييم كل مستخدم بالوزن المسند إليه و من ثم جمع النواتج، و في النهاية التقسيم على مجموع الأوزان. يمكن عن طريق الطريقة السابقة الحصول على تقييم أكثر فاعلية، حيث يمكن تجنب مشكلة دخول مستخدمين كثر لتقييم مسلسل ما بشكل سلبي نتيجة هجوم معين عليه، حيث أن المستخدم الذي أنشئ حسابه منذ بضع دقائق لن يتم أخذ تقييمه مثل المستخدم القديم في الموقع.
  23. أفضل طريقة للتطبيق هي تطبيق شيء ترغب به، و أنصحك بالقيام بذلك بدلاً من البحث عن أفكار جاهزة، دائماً يمكنك البدء بفكرة بسيطة و تطويرها تدريجياً. مدة التطبيق تختلف من شخص لآخر، بشكل عام مفاهيم ال html و ال css ليست كثيرة و بالتالي عندما تجد نفسك قد أصبحت قادراً على الكتابة بشكل جيد بهما و حل المشاكل التي تواجهك فهذا كاف، خاصة أنك لن تستطيع بناء مواقع كبيرة باستعمالهما. في حال لم تجد أي فكرة للقيام بها يمكنك البدء بصفحة بسيطة تعريفية عن نفسك، أي مثل سيرة ذاتية و لكن على شكل موقع.
  24. يمكنك بالطبع القيام بذلك، عندما تعلمت أنا ال django كانت لدي خبرة في البايثون فقط و القليل من ال html, css ، و لم يشكل هذا عائقاً لي أبداً، بالطبع تحتاج القليل من المعرفة بال html خاصة حتى تستطيع عرض صفحة الويب الخاصة بك. و في حال كنت ستعمل ك backend developer فقط فغالبا لن تحتاج إلى ال javascript، و لكن عليك تذكر أنه لن تستطيع إدخال أي تفاعلية على صفحتك في حال لم تكن على علم بال javascript، و لكن لا مشكلة في ذلك الآن، تعلم بايثون و من ثم django و بعدها يمكنك تعلم القليل من ال javascript في حال أردت تطوير مهاراتك.
×
×
  • أضف...