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

Kais Hasan

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

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

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

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

    24

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

  1. المشكلة غالباً في شكل الدخل، إن الشبكة تتوقع أن يكون الدخل 3 أبعاد، بحيث يكون أول بعد هو عدد البيانات و ثاني بعد هو طول الجملة و الثالث هو ال features. يجب عليك أن تضيف بعد ال features في حال كان غير موجود، عن طريق كتابة ما يلي قبل تمرير البيانات إلى النموذج: x_train[..., np.newaxis] في حال عدم نجاح ذلك، من فضلك أرفق ملف الداتا حتى يمكنني تجريب الكود لدي و معرفة الخطأ.
  2. من الجيد مراجعة الدروس السابقة، حيث أن فترة الانقطاع الطويلة دائماً ما يكون لها تأثير على ما تعلمته. يمكنك المرور عل الفيديوهات بشكل سريع عن طريق تسريع الفيديو و في حال وصلت إلى مقطع لا تتذكره يمكنك إعادة السرعة لوضعها الطبيعي. كما أنه من الجيد أن تقوم بمحاولة كتابة التطبيق لوحدك مرة أخرى، إن هذا يساعدك على تثبيت المعلومات التي تعلمتها و لذلك لا تعتبره وقت ضائع. أنصحك أن تحاول ألا تنقطع فترات طويلة، أي حاول لو ساعة كل يوم، كما أنه من غير الجيد أن تقوم بمشاهدة الكثير من الدروس في وقت واحد، قد يبدو لك أنك تفهمها في لحظتها و لكنك ستنساها بسرعة، أعطي كل درس حقه، من الفهم و التطبيق و محاولة التعديل على ما تعلمته للتأكد من أنك فهمت كل تفصيل صغير.
  3. لديك عدة خيارات يمكنك الاختيار بينها: في حال كان موقعك غير ديناميكي، أي مجرد html + css يمكنك استعمال ال github pages التي تقدم لك هذه الخدمة بشكل مجاني تماماً. يمكنك استعمال خدمة AWS LightSail و التي تقدم لك 3 أشهر مجانية يمكنك تجربة الخدمة بها، بعدها يصبح عليك الدفع ما يقارب 20 دولار في الشهر، و لكن كما ذكرت لديك 3 أشهر مجانية يمكنك استعمالها في حال أردت تجريب الموقع. خدمة Google Cloud أيضاً تقدم فترة مجانية، على شكل مبلغ (أعتقد 300 دولار) يتم إعطاءك إياه لاستعماله في خدمات غوغل فقط، و عندها يمكنك شراء خدمة استضافة لرفع موقعك عليها، أي فعلياً هي مجانية لفترة ليست قصيرة، أعتقد يمكنك استعمال هذا المبلغ لمدة 5 أشهر.
  4. هناك خاصيتين يمكنك استعمالهما لذلك، هما ال bottom و ال fixed-buttom، الأولى تقوم بوضع ال footer أسفل الموقع بشكل كامل، أي لا يظهر حتى تقوم بالنزول إلى آخر الموقع، أما الثانية فتقوم بوضعه في أسفل الشاشة، أي دائماً يكون ظاهراً أسفل الشاشة حتى و أنت تقوم بالنزول أو الصعود في الموقع. هذه الخواص يمكننا وضعها ضمن الخاصية class طبعاً. يمكنك القيام بتجريبهما لترى بشكل أفضل تأثير كل منهما.
  5. إن إعطاءك الحل مباشرة لن يساهم في تحسين مهاراتك البرمجية و لن يعود عليك بأي فائدة، من فضلك قم بمحاولة كتابة الكود لوحدك و في حال حدوث أخطاء يمكنك إخبارنا بها. سأساعدك في الفكرة فقط، هنا لديك مثل سلسلة نصية، بالطبع من الأفضل وضع أكبر عدد في الخانة التي على أقصى اليسار، و بالتالي نحن هنا كأننا نريد ترتيب العدد تنازلياً. الكثير من لغات البرمجة تحوي على توابع جاهزة لترتيب سلسلة نصية، و لكن في حال كنت لا تريد استعمال تابع جاهز يمكنك ببساطة إدخال السلسلة، ثم إيجاد طولها (هناك تابع جاهز دائماً لذلك) و بعدها وضع كل خانة في عنصر في مصفوفة و من ثم ترتيب هذه المصفوفة، يوجد توابع جاهزة لترتيب المصفوفة.
  6. من فضلك قم بمحاولة حل التمرين لوحدك، إعطاءك الحل لن يساهم في تحسين مهاراتك البرمجية و لن يعود عليك بأي فائدة، يمكننا مساعدتك في حال حدوث خطأ. سأعطيك الفكرة و أنت قم بكتابة الكود المناسب لها باللغة التي تريدها. ببساطة في حال لدينا مصفوفتان نريد جمعهما، فإننا يجب أن نجمع كل عنصر مع ما يقابله، و بالتالي بديهياً يجب أن تكون المصفوفتان بنفس الطول. بالتالي يمكننا المرور بحلقة على عناصر المصفوفتين، و في كل مرة جمع العناصر في الدليل الحالي، أي في حال كنا في الدليل الثاني فيجب أن نجمع العنصر الثاني من كل مصفوفة. يمكن تخزين الناتج في أحد المصفوفتين في حال لم نعد بحاجة لهما أو إنشاء مصفوفة جديدة بطول يساوي طول المصفوفتين و من ثم تنفيذ الحلقة.
  7. يمكن المقارنة بين سلسلتين نصيتين في c++ بشكل مباشر مثلها مثل أي نمط معرف من قبل ال c++ ، أي يمكننا كتابة ما يلي: string s1 = "first string"; string s2 = "second string"; cout << (s1 == s2) << endl; // false s1 = s2; cout << (s1 == s2) << endl; // true و بالتالي كل ما عليك هو كتابة دالة تأخذ بارامترين كلاهما string و تقوم بالمقارنة. من فضلك قم بمحاولة كتابتها و في حال حدوث أخطاء يمكننا مساعدتك، الآن يفترض أنك تعرف كل ما يلزم لكتابتها، في حال لم تكن تعرف كيف نقوم بكتابة دالة يمكنك مراجعة مقالات أكاديمية حسوب فهي تحوي على كل ما يلزمك.
  8. مرحباً مروان، يمكن القيام بذلك عن طريق عدة خطوات، كما يلي: نقوم بتحديد تاريخ اليوم، يمكن الوصول إلى تاريخ اليوم عن طريق الدالة TODAY. نقوم بحساب الفارق بين التاريخين باستعمال الدالة DATEDIF، أحد البرامترات الخاصة بها يدلنا على أي فرق نريد، أي مثلاً نريد الفرق في الأيام أو الفرق في الشهور أو في السنين، يمكنك هنا اختيار الشهور فهي تعطيك عدد الأشهر الكاملة بين تاريخين. ثم يمكننا مقارنة الفارق مع العدد الأعظمي للفرق، هنا تريد أن يتحقق في حال كان الجواب 1 أو أكثر. تحياتي لك.
  9. يجب عليك تغيير إحداثيات المثلث، حيث أنك تقوم برسم المثلث تبعاً لإحداثياته. يمكنك معرفة الإحداثيات الجديدة عن طريق عمل عملية انعكاس و من ثم سحب المثلث، أو يمكنك وضع إحداثيات جديدة بيدك. من أجل الإحداثيات التي لديك يمكنك عكسها على المستقيم x=10 ، للقيام بذلك علينا طرح 10 من المسقط الأول لكل النقاط، هكذا أصبح يمكننا القيام بعملية الانعكاس على المحور y و التي يمكن القيام بها عن طريق ضرب كافة المساقط x ب -1، بعد ذلك نقوم بإعادة جمع 10 إلى المسقط الأول لكل النقاط. قم بذلك باستعمال ورقة و قلم و استنتج الإحداثيات الجديدة، في حال عدم نجاح ذلك يمكنك إخباري.
  10. عليكي بالترجمة، في البداية سيأخذ الأمر وقتاً طويلاً و لكن بعدها ستصبحين سريعة في ذلك. إن دورات حسوب تقدم لك الشرح باللغة العربية و لكن لا يمكن ترجمة التعليمات بذاتها. كما أن رسائل الأخطاء دائماً تكون بالانكليزية و بالتالي يجب عليكي تعلم هذه اللغة.
  11. إن حفظ التغييرات يتم بحفظ الملف فقط، بشكل عام يكون هناك زر للحفظ، أو يمكنك الضغط على ctrl+s لحفظ الملف الحالي. إن الملف يكون موجود على القرص في مكان إنشاء المشروع، يمكنك أخذه و رفعه فقط، أي فقط عليك تذكر أين وضعتي المشروع.
  12. من فضلك هل يمكنك تصوير الكود او إرفاق الملف كما هو؟ حيث أن ترتيب الكود غير واضح مما يجعل من الصعب تحديد الخطأ.
  13. يجب عليك تنزيل microsoft visual studio السبب وراء ذلك أن بعض التطبيقات تحتاج إلى بيئة لبناء و ترجمة أكواد c++ و غيرها، و هذا هو الهدف هنا. يمكنك تنزيل ال visual studio من هنا. انتبه أنه عليك تنزيل visual studio و ليس visual studio code، كما أنه بعد تنزيله سيطلب منك تحديد الخيارات التي تريدها، من فضلك قم باختيار الخيارات التي تتضمن ال c++، يمكنك مشاركة الخيارات هنا في حال لم تعرف ما تختار، و سنساعدك في ذلك.
  14. بشكل عام هذا الموضوع ليس بالسهل و يتطلب شخص خبير في ال reverse engineering حتى يمكنه حماية تطبيقك من ذلك، أي كما يتم توظيف الهاكرز لحماية الشركات فهم الأكثر خبرة بهذه الأمور. في حال التطبيقات البسيطة فهذا مكلف جداً، و لن يقوم أحد بعمل هندسة عكسية في حال لم تكن الفائدة أعلى من التكلفة التي سيدفعها. بالإضافة إلى ذلك إن تطبيقات flutter لا تزال آمنة نسبياً حتى الآن، فيمكنك بناء التطبيق حالياً بدون قلق من ذلك.
  15. من فضلك قم بمحاولة حل التمرين لوحدك و مشاركة محاولاتك معنا في حال حدوث أخطاء، حيث يمكننا مساعدتك في تلك الحالة على حلها، و لكن إعطاءك الحل بشكل مباشر لن يحسن من مهاراتك البرمجية و لن يجعلك تطورها و لن يعود عليك بأي فائدة. سأعطيك الفكرة و أنت حاول كتابة الكود لها، هنا كما تلاحظ لدينا ال json يشبه القاموس، أو ما يدعى في c++ بال map و بالتالي كل عمود في ال csv سيقابله مفتاح في ال json. يمكننا المرور على كافة العناصر في المصفوفة الموجودة في ملف ال json و في كل مرة يمكننا الوصول إلى العنصر a و وضع قيمته في العمود الأول مثلاً، و الوصول إلى العنصر b ووضع قيمته في العمود الثاني مثلاً. نكرر هذه العملية من أجل كل عنصر في المصفوفة.
  16. من فضلك قم بمحاولة حل التمرين لوحدك و ذكر ما قمت بمحاولة القيام به، و في حال حدوث أخطاء يمكننا مساعدتك. سأقوم بمساعدتك من ناحية ما المكتبة التي يمكنك استعمالها للقيام بذلك، المكتبة هي curlpp و يمكنك الإطلاع عليها من هنا. باستعمال هذه المكتبة يمكنك إرسال requests إلى api معينة، و هذا ما يجب عليك القيام به. الموقع الذي أرفقته يحوي على api يمكنك الحصول على مفتاح منه و استعماله للوصول إلى ال api و طلب ما تريد منها، يمكنك الإطلاع على قسم ال api في الموقع فهو يحوي العنوان الذي تحتاج إرسال request إليه لتحصل على ما تريد.
  17. يمكنك القيام بذلك عن طريق الضغط بالزر الأيمن للفأرة على اسم المشروع، و اختيار الخيار publish. ستظهر لك نافذة تحوي بضع خيارات يمكنك اختيار طريقة التصدير التي تريدها، و من ثم تختار المكان على القرص التي تريد وضع البرنامج فيه. يمكنك بعدها أخذ هذا البرنامج و إرساله إلى من تريد بحيث سيستطيع تنزيل برنامجك، كأي برنامج عادي.
  18. إن الكود لا يتطلب معرفة عميقة بلغة البرمجة، يكفي أن تعرف كيفية الإدخال و الطباعة و مفاهيم بسيطة مثل المصفوفات و الحلقات التكرارية و العبارات الشرطية، هذه المفاهيم يمكنك تعلمها في بضع ساعات، يمكنك الإطلاع على مقالات أكاديمية حسوب فهي تحتوي على المطلوب. ليس لدي علم بوجود فيديو يقوم بشرح هذا التمرين بالضبط، و لا ينصح بالقيام بذلك حتى لو كانت البرمجة خارج تخصصك، اعتبرها فرصة لتعلمها، لا تفوت هذه الفرصة هذه نصيحتي لك.
  19. يمكنك القيام بذلك عن طريق تحدد ال domains التي يمكنها استعمال ال api الخاصة بك. يمكن القيام بذلك في laravel عن طريق التعديل على ملف cors.php بحيث نحدد ال domains التي نرغب في السماح لها بالوصول ضمن المتغير allowed_origins. يمكنك الاتصال بال api باستعمال التابع fetch بحيث تحدد له الطريقة و كافة المعلومات المطلوبة لل request.
  20. من فضلك قم بذكر المحاولات التي قمت بها و الأخطاء التي حدثت معك حتى يمكننا مساعدتك، لا يمكننا إعطاءك الحل بشكل مباشر. سأقوم بذكر المفاهيم التي يمكنك استعمالها لحل التمرين السابق، و عليك محاولة كتابة الكود لوحدك، يفترض أنك تعرف كيف تقوم بترتيب مصفوفة في java (في حال كنت لا تعرف يمكنك الإطلاع على مقالات أكاديمية حسوب). الأمر الذي يجب علينا القيام به هنا هو محاولة ربط كل اسم مع الراتب، لأنه في حال قمنا بعمل مصفوفة للأسماء و مصفوفة للرواتب لن يمكننا ترتيب الرواتب لوحدهم، حيث أنه عندها لن نعرف أي راتب لأي موظف. بدلاً من القيام بعمل مصفوفتين لكل منهما، يمكننا عمل class يمثل الموظف، يكون له خاصيتين هما الاسم و الراتب، و يجب علينا تعريف طريقة المقارنة داخل الصف و التي لها الشكل التالي: @Override public int compareTo(Student s){ ... } هنا افترضت أن الصف الخاص بك له الاسم Student، نقوم في هذا التابع باستعمال التابع compareTo الخاص بالخاصية التي تمثل الراتب، و هنا تلقائياً جافا ستعرف كيف ترتب لأن الراتب سيكون من نمط معرف من قبل الجافا. حاول كتابة التمرين و يمكنك طلب المساعدة في حال حدوث أخطاء معك.
  21. من فضلك هل يمكنك تزويدي بملف ال excel الذي تقوم بتحميله في الكود، أي الملف الذي اسمه excel2.xlsx، بهذا الشكل أستطيع مساعدتك بشكل فوري.
  22. سأقوم بشرح الأفكار لك و يمكنك محاولة كتابة الكود و في حال حدوث أخطاء يمكنك سؤالنا عنها. إن المجموعة هي عبارة عن مجموعة من العناصر تتبع لحقل معين، بما أنه هنا لم يتم ذكر الحقل الذي يتم العمل عليه فسأعتبر الحقل هو مجموعة الأعداد الصحيحة، و لكن ما سأشرحه تالياً يبقى نفس المبدأ بغض النظر عن الحقل المستعمل. العلاقة تعرف عن طريق أزواج من العناصر، بحيث عندما يكون زوجان من العناصر في مجموعة هذه العلاقة فإن هذه العلاقة توجد بين هذين العنصرين، أي مثلاً لنفترض أنه لديك المجموعة {1, 2, 3, 4} و كان لدينا العلاقة بين x, y تمثل أن x > y، يكون لدينا مجموعة الأزواج الممثلة لهذه العلاقة في هذا المثال هي: {(1, 2), (2, 3), (1, 3), (3, 4), (2, 4), (1, 4)}. المصفوفة التي تمثل العلاقة هي عبارة عن مجموعة من الأسطر بحيث كل سطر يمثل رقم و أيضاً كل عمود يمثل رقم من مجموعة الأرقام التي لدينا، أي في هذا المثال سيكون لدي العمود الأول يمثل الرقم 1 و العمود الثاني يمثل 2 و هكذا، و لدي السطر الأول يمثل الرقم 1 و السطر الثاني يمثل الرقم 2 و هكذا، و تكون قيمة العنصر في السطر x و العمود y هي 1 في حال كان يوجد علاقة بين x و y أي في مثالنا السابق في حال كان x أكبر من y، و تكون القيمة 0 في حال عدم وجود هذه العلاقة بين هذين الرقمين. العلاقة تحقق الخاصية الانعكاسية في حال كان هناك علاقة بين الرقم و نفسه، و بالتالي في حال كان القطر الرئيسي للمصفوفة الخاصة بالعلاقة يحوي على 1 في كل عنصر منه، و ذلك لأن القطر الرئيسي هو مجموعة العناصر التي لها نفس الرقم للسطر و العمود. العلاقة تحقق الخاصية التناظرية في حال كانت المصفوفة متناظرة، لأن المصفوفة متناظرة في حال كان هناك نفس الرقم في العنصر x, y و العنصر y,x و بالتالي يمكن المرور على المصفوفة للتحقق من ذلك، أي عندما نكون في العنصر x, y نتحقق هل يساوي العنصر y, x. العلاقة تحقق الخاصية المتعدية كما يلي: في حال كان هناك علاقة بين x, y و بين y, z فإنه يجب أن يكون هناك علاقة بين x,z، يمكن التحقق من هذه الخاصية عن طريق تطبيق خوارزمية Floyd warshall على المصفوفة الخاصة بالعلاقة، في حال تغير هذه المصفوفة بعد تطبيق الخوارزمية فإن العلاقة لا تحقق العلاقة المتعدية، بينما في حال بقيت المصفوفة كما هي فإنها تحقق العلاقة المتعدية، أي يجب علينا الاحتفاظ بنسخة من المصفوفة و تطبيق الخوارزمية على نسخة أخرى و مقارنة المصفوفتين، يمكنك إيجاد خوارزمية floyd بشكل سهل باللغة التي تريدها. تكون العلاقة تكافؤ في حال كانت العلاقة تحقق الخواص السابقة. يمكنك الآن محاولة كتابة الكود الذي يقوم بما شرحته سابقاً، يجب أن تستطيع كتابته في حال كنت على إطلاع على ال c#، في حال لم تكن على معرفة كافية بها يمكنك الإطلاع على مقالات أكاديمية حسوب التي تقدم شروحات ممتازة عن هذه اللغة.
  23. بشكل عام الهدف من المخططات هو توضيح المشروع و تنظيمه، و يفضل لكل تصميم أن يكون له أهدافه الواضحة. في حال وضع السلوك مع الهيكل سيصبح المخطط شديد التعقيد، و عندها يجب علينا البحث لمعرفة كل منهما. بينما الفصل بينهما يسهل الأمر، أيضاً من الممكن ألا تريد إلا الهيكل الخاص بالمشروع بدون معرفة التفاعل بين الأغراض في هذا المشروع و السلوك الذي سيسلكه. كما أريد أن أذكر أن المخططات لا تقتصر على هذين الصنفين فقط، فهناك الكثير من المخططات الآخرى التي يتم استعمالها.
  24. بشكل عام عندما نريد القيام بأمر يمكننا البحث عن كيف قامت مواقع أخرى بالقيام بذلك، أفضل موقع يمكننا النظر إليه هو مواقع ال stackexchange التي من بينها ال stackoverflow، إن هذه المواقع و خاصة الموقع الخاص بالرياضيات تستعمل ما يدعى بال MathJax و الذي يسمح لك بكتابة معادلات رياضية بطريقة تشبه طريقة ال Latex، و هو من أفضل الحلول لهذه المشكلة. يمكنك تضمينه في الموقع الخاص بك كما يلي: <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> </script> هذا مثال على صفحة بسيطة في ال html مكتوبة باستعمال ال MathJax: <!DOCTYPE html> <html> <head> <title>MathJax TeX Test Page</title> <script type="text/x-mathjax-config"> MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}}); </script> <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"> </script> </head> <body> When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$ </body> </html> ما يوجد في ال head هو كود عام لتضمين ال MathJax و هو بشكل عام رابط المكتبة بالإضافة إلى بعض الإعدادات التي تسمح بالتعامل مع المفردات الخاصة به. في ال body كما تلاحظ توجد كتابة تستعمله، لاحظ مثلاً كتبنا الجذر التربيعي على أنه \sqrt{b^2-4ac} و نضع أي شيء نريد كتابته ك MathJax ضمن إشارة دولار، إشارة واحدة تجعل ما ضمنها يكون ضمن نفس السطر، بينما إشارتين تجعل المعادلة على سطر لوحدها. أي معادلة يمكنك كتابتها باستعمال هذه اللغة، و بالطبع هنا عرضت لك مثال العرض و لكن بشكل مماثل يمكنك صنع كود للإدخال في حال أردت ذلك، حيث سيكتب الطالب باستعمال ال MathJax. عليك تعلم التعليمات الخاصة به، و هي ليست سهلة و لكنها أسهل ما يمكن، يمكنك الإطلاع عليها من هنا.
  25. يمكنك قراءة كل ملف في البداية و تخزين الملفات في لائحة، لقراءة ملف يمكنك كتابة ما يلي: from openpyxl import load_workbook wb = load_workbook('name.xlsx') ثم يجب عليك الانتقال إلى sheet ضمن هذه الملفات، يجب أن تعرف اسم ال sheet الذي يجب أن تنتقل إليه، يمكنك الحصول على أسماء ال sheets و من ثم الانتقال إلى أحدها كما يلي: print(wb.sheetnames) # ['sheet1', 'sheet2'] ws = wb['sheet1'] ثم يمكنك الوصول إلى قيمة معينة كما يلي: ws.cell(row=1, column=1).value و بالتالي بناء على التعليمات السابقة يجب عليك في البداية الحصول على لائحة من ال sheets التي ترغب في العمل عليها، ثم القيام بالمرور على كافة العناصر ضمن كل sheet للبحث عما تريد.
×
×
  • أضف...