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

Kais Hasan

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

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

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

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

    24

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

  1. و عليكم السلام، إن الأكاديمية موجهة للجمهور العربي و من الطبيعي استعمال اللغة العربية و تعريب المصطلحات، يتم ذكر المصطلح الأنكليزي دائماً حتى تتعرف عليه إن قرأته في مكان آخر. جودة الدورة في المحتوى الخاص بها و الأفكار و طريقة العرض، اللغة مجرد وسيلة لنقل ذلك. لماذا يصبح المصطلح قابل للنسيان اذا كان باللغة العربية؟ المصطلحات لها معنى، مثلاً وراثة يوضح مفهوم أن صنف يأخذ من صنف آخر.
  2. المشكلة هنا غالباً أنك تقوم بتغيير الحجم بشكل بسيط عن طريق تغيير الأبعاد فقط، هذا سيخرب ما ندعوه بال aspect ratio الخاص بالصورة، و هو نسبة بين عرض و ارتفاع الصورة، و تغييرها سيؤدي إلى تشوه الصورة. الحل هو التحجيم بناء على ذلك، أي تغيير الحجم مع الحفاظ على ال aspect ratio، أي برنامج تعديل على الصور حتى paint3d الموجود ضمن ويندوز بشكل افتراضي يمكنه القيام بذلك. لكن هنا قد لا يمكنك الوصول إلى الحجم الذي تريده، فالحفاظ على ال aspect ratio يضع قيوداً على تغيير الحجم، لذلك هناك طريقتين: جعل أطول بعد للصورة مساوٍ لأقصر بعد تريده، هذا سيؤدي إلى جعل البعد الآخر أصغر من المطلوب و بالتالي سيبقى فراغ صغير، غالباً هذا الفراغ غير مؤثر كثيراً، و ذلك لأنه عند استعمال الصورة غالباً تريد أحد الأبعاد أن يكون مساوٍ لقيمة معينة و ليس البعدين، فنقوم فقط بتغيير ذلك البعد مع المحافظة على ال aspect ratio. الطريقة الثانية هي في حال كنت تريد الأبعاد بالضبط، و الحل هو أن نقوم بتغيير أصغر بعد في الصورة ليساو أكبر بعد نريده، و ستصبح صورتنا أكبر بقليل من المطلوب فنقوم بقصها، ذلك ممكن لأنه غالباً يمكنك التخلص من بعض الحدود بدون التأثير على فكرة الصورة. و لكن هذا يفترض أن تجد صورة قريبة نظرياً مما تريده، أي مثلاً لنفترض تريد صورة طولية (كخلفية الموبايل مثلاً)، فلن ينجح أن تجلب صورة عريضة و تطبق ما سبق، عليك على الأقل جلب صورة طولية بحيث لا يكون هناك فرق كبير في ال aspect ratio بين ما تريده و ما لديك.
  3. السبب هو أنك كتبتيه خارج العنصر input، لاحظي العنصر input ينتهي عند القوس < و بالتالي يجب عليك وضع ذلك قبل هذا القوس حتى يكون ضمن العنصر input.
  4. بما أنك لا تعرفين الجواب فالجواب هو c++، استعمال لغة السي يتم في حالات خاصة جداً و يجب أن يكون الشخص خبيراً جداً ليقوم بذلك، ما عدا ذلك قومي باستعمال c++، حيث يمكنك اعتبارها تطوير للغة السي. لغة السي قد تحتاجين لها للتعامل مع الهاردوير في حالات خاصة، و لكن غالباً c++ تكفي لذلك. أيضاً لغة السي أصبحت قديمة و مشاكلها كثيرة.
  5. قبل رسم هذه الصناديق يفترض أنه يوجد ما توقعه النموذج من أصناف، بالتالي كل ما عليك القيام به هو أخذ ذلك الخرج و عد عدد التوقعات التي تساوي person. غالباً النموذج يتوقع ذلك بشكل عددي، لذلك عليك معرفة ما هو رقم الصنف person حتى يمكنك عد التوقعات التي تمثله. اذا كان الكود هو نفسه الذي قمتي بالسؤال عنه سابقاً، فيفترض أنه ضمن هذه الحلقة: for out in outs: for detection in out: scores = detection[5:] class_id = np.argmax(scores) confidence = scores[class_id] if confidence > 0.5: center_x = int(detection[0] * Width) center_y = int(detection[1] * Height) w = int(detection[2] * Width) h = int(detection[3] * Height) x = center_x - w / 2 y = center_y - h / 2 class_ids.append(class_id) # هنا تحديداً confidences.append(float(confidence)) boxes.append([x, y, w, h]) في المكان الذي وضعت تعليق عنده، لديك ال id الخاص بالصنف، و كما يبدو من تابع الرسم فإنه يوجد مصفوفة اسمها classes فيها الأسماء التي تقابل كل id و لذلك يمكنك معرفة فيما إذا كان هذا التوقع هو person أما لا.
  6. كما يبدو من رسالة الخطأ أنك قمت بكتابة myapp.urs بدلاً من myapp.urls، أعتقد أنك قمت بذلك ضمن الملف urls.py الخاص بالتطبيق الأساسي، أي ضمن include. في حال لم تكن قد قمت بهذا الخطأ فمن فضلك شارك ملفات المشروع معنا لنتحقق منه.
  7. كل ما عليك القيام به هو وضع dropdown ضمن ال dropdown مع معالجة ذلك في جافاسكربت، يمكنك القيام بذلك بشكل مشابه لما يلي: <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <style> .dropdown-submenu { position: relative; } .dropdown-submenu .dropdown-menu { top: 0; left: 100%; margin-top: -1px; } </style> </head> <body> <div class="container"> <div class="dropdown"> <button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">Example Dropdown <span class="caret"></span></button> <ul class="dropdown-menu"> <li><a href="#">Profile</a></li> <li class="dropdown-submenu"> <a class="test" href="#">Language <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#">English</a></li> <li><a href="#">Arabic</a></li> </ul> </li> <li><a href="#">Log out</a></li> </ul> </div> </div> <script> $(document).ready(function(){ $('.dropdown-submenu a.test').on("click", function(e){ $(this).next('ul').toggle(); e.stopPropagation(); e.preventDefault(); }); }); </script> </body> </html> لاحظ هنا كيف وضعنا عنصرين ضمن ال li، فعلياً سيتم عرض أول عنصر، و لكن عند الضغط قمنا بكتابة كود js يقوم بمعالجة ذلك و إظهار مجموعة الخيارات الثانية. كود ال css لتغيير مواقع ال dropdown، في حال لم نضعه ستظهر الثانية فوق الأولى لذلك قمنا بإزاحتها قليلاً.
  8. سأفترض أنك المستوى الذي تريدينه هو مبتدئ. بعض أهم الأسئلة التي يمكنك محاولة حلها هي كما يلي: اكتبي برنامج يقوم بحساب أكبر عنصر في لائحة. (أيضاً أصغر عنصر). اكتبي برنامج يقوم بالتحقق فيما إذا كان عدد مكرر في لائحة. اكتبي برنامج يقوم باستقبال دخل عددي من المستخدم يمثل عدد عناصر لائحة، ثم يستقبل هذه العناصر ضمن سطر واحد، و يقوم بطباعة مجموع هذه الأعداد. اكتبي برنامج يقوم بحساب الحد رقم n من متتالية فيبوناتشي (يمكنك البحث عنها على غوغل لمعرفة ما هي) و الرقم n هو رقم يجب على المستخدم إدخاله. اكتبي برنامج لحساب n للأس m حيث أنهما مدخلان من قبل المستخدم.
  9. ما زال السؤال غير مفهوم، هل تريدين منا إعطاءك أسئلة تقومين بكتابة البرامج لها؟
  10. مرحباً شهد، سؤالك غير واضح، هل يمكنك إضافة بعض التفاصيل لشرح ما تريدينه بالضبط؟
  11. vscode هو محرر أكواد و ليس بيئة متكاملة. لإنشاء exe عليك استعمال كومبايلر في لغة c++، مثلاً يمكنك استعمال visual studio و ليس visual studio code. أما في حال كنت تستعمل بايثون فيمكنك استعمال المكتبة auto-py-to-exe و هي تسمح لك بالقيام بذلك من خلال واجهة و ليس فقط من سطر الأوامر مما يسهل عليك العمل. يمكنك الإطلاع عليها من هنا: https://pypi.org/project/auto-py-to-exe/
  12. المشكلة أنك لم تضيفي average='micro' إلى ال precision و ال recall كما قمتي بذلك من أجل ال f1score. عليك إضافة هذا البارامتر إلى كل هذه التقييمات لأنها بشكل افتراضي تعتبر أن البيانات لها labels ثنائية، أي لدينا فقط صنفان (مثلاً قطة و كلب) و لكن هنا لدينا عدة أصناف و بالتالي يجب تمرير هذا البارامتر.
  13. يمكنك إزالة الخاصية required و وضع قيمة افتراضية لهذه البارامترات عن طريق الخاصية default. هذا يفترض أن يحل المشكلة الخاصة بك، بحيث في حال لم تقومي بإضافة هذه البارامترات يستعمل ما وضعتيه في ال default. مثلاً: ap.add_argument('-w', '--weights', default="yolov3.weights", help = 'path to yolo pre-trained weights')
  14. من الجيد دائماً عند القيام ببرنامج خاص بالخرائط استعمال google map api، فهي تسمح لك بجلب خريطة تفاعلية و القيام ببعض التعديلات عليها. مثلاً عندما تقول أن المستخدم سيرفع ملف مواقع، عليك أن تحدد الشكل الخاص بمحتوى هذا الملف، و بناء عليه تقوم بمعالجته و إرسال طلبات لل api لإضافة مواقع معينة. باقي العمليات نفس المبدأ، عليك القيام ببعض المعالجة لوحدك و من ثم إرسال الطلب المناسب لل api. لكن هناك مشكلة في حساب الموقع بين كل نقطة و أخرى، سيكون هناك الكثير من النقاط و بالتالي حساب المسافة سيكون معقد جداً من الناحية الحسابية و غير ممكن.
  15. لا، نحن نقوم بالوراثة من المودل الأصلي و بالتالي كل خصائصه تبقى كما هي.
  16. في حال كانت الأكاديمية لا تقدم دروساً يمكنك نشر عرضك على مستقل، فهناك الكثير من الخبراء في هذا المجال هناك، حتى المدربون لديهم حسابات على مستقل و بالتالي من الممكن أن يقدم أحدهم عرض على طلبك.
  17. التعديل لا يتم على النسخة التنفيذية، و إنما يتم على الكود المصدري الذي قمت بتطويره. أنت تقول أنك صممت تطبيق flutter بالتالي لديك الكود، إخراج نسخة تنفيذية منه لا يعني أنه يجب أن تكمل التطوير منها، هي فقط ناتج مرحلي، و عملية التطوير تستمر على الكود المصدري. و المراحل التالية لإنشاء نسخة apk هو أن تقوم بمحاولة نشرها على Google Play، فهذا سيتيح لغيرك تنزيلها و استعمالها، كما قد يدر عليك المال في حال كان تطبيقك يتضمن إعلانات مثلاً. و لكن بالطبع عليك تقديم محتوى فريد لتصل إلى الكثير من المستخدمين. يمكنك أيضاً عرض التطبيق على أصدقاءك و معارفك و أخذ آرائهم، فقد يكتشف أحدهم خطأً قد غفلت عنه، أو يرى أحدهم أن الواجهة ليست سهلة الاستخدام، لذلك أخذ أراء الآخرين مهم جداً في هذا الأمر.
  18. كما هو مذكور في التوثيق الخاص بدجانغو، يجب عليك القيام بذلك في بداية المشروع قبل أي عملية migration و إلا سيصبح من الصعب جداً تعديل ذلك. بشكل عام يتم إنشاء تطبيق خاص بالمستخدمين (عادة نسميه accounts) و ضمن ال models.py نضع ما يلي: from django.db import models from django.contrib.auth.models import AbstractUser class User(AbstractUser): gender = models.BooleanField(default=True) # True for male and False for female # you can add more fields here. ضع الخصائص التي تريدها. ثم يجب عليك إخبار دجانغو بأن هذا الصنف هو ما تريد استعماله من أجل حساب المستخدم، و يمكن ذلك عبر إضافة ما يلي إلى ملف الإعدادات settings.py: AUTH_USER_MODEL = 'accounts.User' طبعاً في حال اخترت تسمية التطبيق الخاص بالحسابات غير accounts عليك تغيير ذلك فيما سبق. أما من أجل إعدادات الوصول و السماحية فأبسط طريقة هي أن تقوم بإضافة حقل إلى المستخدم يدل على صلاحيته و عند وجود عملية تحتاج صلاحية تتحقق من هذا الحقل.
  19. دورة علوم الحاسوب هي دورة أساسيات تحتاجها في أي عمل، و لكنها لوحدها لا تمكنك مثلاً من تصميم موقع ويب، أو كتابة تطبيق سطح مكتب. يفضل أن تأخذ دورة أخرى في المجال الذي ترغب بالعمل فيه. بالطبع قد تجد أعمال كشرح دروس أو أعمال بسيطة بلغات برمجة تعرفها و لكن الشخص الذي سيوظفك مثلاً لتصميم موقع ويب عليه أن يرى أنه لديك مشاريع في هذا المجال حتى يثق بك، أو شهادة ضمن هذا المجال.
  20. أعتقد ما تقصدينه هو محرر أكواد بايثون و يمكن عن طريقه تنفيذ برامج بايثون. في هذه الحالة هناك عدة خيارات ممكنة، بعضها يعطيك خيار كتابة برامج بلغات أخرى أيضاً، سأذكر أهمها بحيث يمكنك الاختيار بينها: https://www.online-python.com/ https://www.programiz.com/python-programming/online-compiler/ https://replit.com/languages/python3 https://www.onlinegdb.com/online_python_compiler https://ideone.com/ https://codesandbox.io/ في حال كنتي تريدين شيء بسيط فأنصحك بأول خيار، أما في حال كنتي تريدين تنزيل مكتبات أيضاً و بيئة برمجية كاملة فالخيار الأخير هو الأفضل.
  21. هناك بعض الشركات التي توفر خيار البدء بشكل تدريبي لمن لديه معلومات أساسية جيدة و لكن ليس لديه الخبرة في المجال، بالتالي يمكنك أن تحصل على هكذا فرصة. و لكن هذه الفرص قليلة جداً. لذلك في حال أردت العمل في باك ايند عليك أيضاً أخذ كورس باك ايند، و القيام ببعض المشاريع حتى يكون لديك أكثر من مشروع مما يزيد من فرصك في القبول. حالياً ركز على الأساسيات و عندما تنهيها يمكنك أخذ كورس باك ايند.
  22. يفترض أنك في الواجهة تقوم بعرض جزء من المنتجات فقط، بالتالي الواجهة عندما تستدعي الباك ايند يجب أن تمرر المجال الذي تريد عرضه، أي لنفترض أن المنتجات لها أرقام فتقوم بتمرير رقم البداية و رقم النهاية، بحيث لا يتم إرسال إلا هذه المنتجات إلى الواجهة للعرض. نفس العمل يجب أن تقوم به بين الباك و قاعدة البيانات، عليك استعمال أوامر مثل offset و limit للقيام بجلب العناصر المرغوب بها فقط.
  23. لا توجد طريقة واحدة جيدة، هذا يختلف من شخص لآخر، و لكن بالطبع ليس عليك حفظ المعلومات. الطريقة التي أغلب الطلاب يدرسون بها هي أن تقوم بمشاهدة الدرس، ثم تحاول التطبيق بنفسك بدون الرجوع إلى الدرس. و لكن هنا قد تواجه مشكلة أن تحاول تذكر الدرس أكثر من التفكير بنفسك، لذلك سأقترح عليك طريقة مختلفة قليلاً، يمكنك تجربتها و في حال لم تكن فعالة معك يمكن السؤال مجدداً بحيث يمكننا مناقشة طريقة أخرى و لكن بالطبع عليك أن تعطيها بعض الوقت فالنتائج لا تظهر بشكل فوري. لحل مشكلة أنك تحاول التذكر أكثر من التفكير، من الجيد أن تقوم بمشاهدة الدرس، ثم محاولة إعادة تطبيق ما فيه و لكن بشكل مختلف قليلاً، أي حاول التغيير في بعض الأمور بحيث تبقى الفكرة نفسها و لكن يختلف الشكل التطبيقي قليلاً لها، بهذه الحالة ستعتمد على الفكرة فقط و ليس على ذاكرتك. بالطبع قد تنسى بعض التوابع، عندها حاول البحث عنها على غوغل بدل من العودة إلى الدرس، فمهارة البحث أيضاً مهمة. سأعطيك مثال لتوضيح ما سبق، لنفترض أن الدرس عن كيفية تطبيق css على ملف html، و لنفترض أن ملف ال html عبارة عن مربع نصي و زر عند الضغط عليه يتم عرض ما قمت بإدخاله ضمن إطار ما. بدلاً من ذلك يمكنك مثلاً تعديل التطبيق نفسه بحيث يصبح بدون زر، أي فقط تقوم بالإدخال و هو يحدث بشكل مستمر ما ضمن الإطار، أو حتى يمكنك تغيير الإطار في حال كان الدرس عن هذه الفكرة، مثلاً يمكنك تغيير شكل الإطار أو لونه. هذا سيساعدك على البحث و التفكير و لكن بحيث تعتمد على أفكار الدرس و ليس على حفظه.
  24. لا يوجد مجال غير مربح، و لكن بعض المجالات يكون الطلب عليها أكبر مما يعني أن أغلب الأشخاص بغض النظر عن مستواهم سيجدون عملاً مربحاً. أما المجالات التي ليس عليها طلب كبير ستكون مربحة فقط للأشخاص ذوي المهارات العالية و الخبرة فيها. مجال الفرونت ايند مطلوب جداً، و لكن أساسيات html و css لا تكفي حتى تجد عملاً، عليك تعلم javascript كأساسيات اللغة، ثم الانتقال إلى تعلم إحدى أطر العمل مثل React أو Angular. استثمر في نفسك أولاً و ستجد لاحقاً العائد المادي.
  25. لا يمكن الإجابة عن سؤال كهذا بدون معرفة مهاراتك و معلوماتك، لا يمكنك الدخول في أي مجال و الربح منه بشكل مباشر. عدم ربحك من مجال الدروب شوبينغ في البداية لا يعني أنه غير مربح، قد تكون تنقصك بعض المهارات الأساسية في هذا المجال. يمكنك إخبارنا بالمعلومات و المهارات التي تملكها حتى يمكننا مساعدتك بشكل أكبر.
×
×
  • أضف...