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

Kais Hasan

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

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

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

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

    24

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

  1. يجب أن يكون لديك مشروع مفتوح كما يجب أن تكون قد نزلت المكونات الخاصة بتشغيل المشروع، يجب أن تعطينا بعض المعلومات الإضافية عن ما هو المشروع و ما المشكلة التي تظهر لك حتى يمكننا مساعدتك بشكل دقيق أكثر. و لكن في حال قمت بتنزيل المكونات اللازمة (من برنامج التنزيل الخاص بال visual studio) فلا يجب أن تظهر لك أي مشكلة.
  2. يمكنك استعمال مكتبة ال opencv للقيام بذلك، بحيث تستعمل التابع imread لقراءة الصورة مع تمرير IMREAD_GRAYSCALE كبارامتر ثاني له (البارامتر الأول مسار الصورة) و ذلك لكي يتم تحويل الصورة إلى رمادية، بعد ذلك عليك القيام بعملية التعتيب التي تقوم بتحويل الصورة من رمادية إلى ثنائية أي bitmap، يمكن القيام بذلك باستعمال التابع threshold مثلا كما يلي: cv::threshold(image_src, image_dst, 200, 255, cv::THRESH_BINARY); يمكنك الإطلاع على البارامترات الخاصة بهذا التابع كيفية استعماله من هنا.
  3. إن النمط string موجود ضمن فضاء الأسماء std كما هو الحال من أجل ال cout أو ال cin و بالتالي عليك كتابة std::string حتى يتعرف عليها البرنامج.
  4. أعتقد أنك تريد تخزين العمودين في مصفوفة، بحيث تكون كل قيمة عبارة عن خانتين تمثل العمود الأول و الثاني. يمكنك القيام عن طريق تعريف مصفوفة فارغة خارج الحلقة و من ثم القيام بالإضافة عليها داخل الحلقة، أي يصبح كودك كما يلي: DB=load_workbook("AAA.xlsx") DS=DB["ABC"] list = [] for A in DS.iter_rows(min_row=1, max_row=100,min_col=1,max_col=10,values_only =True): list.append([A[5],A[6]]) print(list) بكافة الأحوال يمكنك الإضافة عن طريق التابع append، بغض النظر عن طريقة التخزين التي تريدها.
  5. إن هذه العملية مشهورة جداً و يتم ذلك عن طريق ما يسمى التعتيب thresholding حيث نقوم باختيار عتبة معينة بعدها نعتبر اللون أبيض و قبلها أسود. إن الصورة التي تقول عنها ابيض و اسود هي في الغالب رمادية و هذا يعني أن كل بكسل له قيمة بين ال 0 و ال 255 بحيث يكون الصفر هو اللون الأسود و ال 255 هو الأبيض و ما بينهما تدرجات لونية للإضاءة. فمثلاً إذا اخترت عتبة 150 فأنا أعتبر كل ما فوق هذه العتبة على أنه لون أبيض فيتم تحويل كل بكسل يحمل قيمة أكبر من 150 إلى لون أبيض أي إلى القيمة 255 (يمكنك لاحقاً تحويلها إلى 1). للقيام بكل ذلك عليك الإطلاع على مكتبة ال opencv و التي تحوي توابع للقيام بكل ذلك، حيث يمكنك قراءة الصورة باستعمال التابع imread و هناك توابع للتحويل أو يمكنك المرور على المصفوفة و تحويل قيم البكسلات لوحدك.
  6. إن ما تقوم به لا يعدل على ال list الأصلية، سأعطيك مثال لكيفية التعديل على list و قم بتقليده. li = [1, 2, None, 4] for i in range(len(li)): if li[i] is None: li[i] = 0 print(li) # [1, 2, 0, 4] أي عليك المرور على كل دليل و الوصول له بشكل فردي. يمكنك استبدال li باسم المصفوفة لديك و سيعمل الكود كما تريد.
  7. فقط قم بإزالة تعليمة الطباعة التي تقوم بطباعة HI. من عدا ذلك الكود يفترض أن يعمل، بالطبع ليست طريقة جيدة لكتابة الكود، حيث أن التعامل مع المتغيرات ال global بهذا الشكل غير جيد. لكن من الجيد تجربة هذه الأمور لتتأكد أنك تفهم ما يحدث.
  8. إن الصيغة خاطئة، عليك تنفيذها كما يلي: curl ... -H @{'apikey' = 'my_key'} ... أول ثلاث نقاط يجب أن تستبدلها بالخيارات الأولى التي قمت بذكرها، أي ال location و ما إلى هنالك. ثاني ثلاث نقاط يجب استبدالها برابط الموقع. أي بشكل أساسي عليك تمرير ال header عن طريق كتابة -H و من ثم اتباع الصيغة المذكورة. تحياتي لك.
  9. لقد كنت مثلك أعاني من هذه المشكلة في البداية، لكن مع الممارسة أصبح لدي مخزون جيد من الكلمات، كل ما عليك القيام به هو ترجمة الكلمة في حال لم تعرفها. أي لنفرض أنك تشاهد دورة أو تكتب كود و رأيت كلمة لم تعرف معناها، عليك القيام بترجمة هذه الكلمة و التعرف على معناها، و يمكنك كتابة الكلمات التي تعلمتها لكي تمر عليها مرة أخرى كل فترة، مثلاً كل أسبوع. طبعاً لا تقم بترجمة جملة كاملة، دائماً قم بترجمة كل كلمة لوحدها و حاول لوحدك استنتاج أفضل معنى للكلمة حسب السياق و ربط الكلمات ببعضها لتشكيل الجملة. أيضاً لا مانع من أن تتابع إحدى دورات اللغة الانكليزية الموجودة على اليوتيوب أو أي موقع آخر، حيث أن اللغة الانكليزية ضرورية بشكل عام في مجال البرمجة.
  10. إن العبارة a = wb.sheetnames تجلب لك الأسماء و تضعهم في list و بالتالي يمكن تمرير هذه ال list كما هي إلى ال combobox عن طريق البارامتر values، أي يصبح لديك كما يلي: self.combobox_1 = customtkinter.CTkComboBox(self.login_frame, values=a)
  11. الخاصية التي تشير إليها ليست حصراً على هذه اللغات، فلغات البرمجة العادية تتيح هذه الخاصية، مثلاً في ال c++ يمكنك القيام بذلك. مثلاً يمكننا القيام بما يلي: bool passed = true; string s = "The Student " + (passed ? "passed" : "failed") + " the exam"; بشكل عام هناك فروق أخرى و هي أنه يتم ترجمتها سطر سطر على عكس لغات مثل c++ التي يتم ترجمة الكود كاملاً و من ثم تنفيذه. و لكن حتى هذه الخاصية أصبحت متاحة للغات ال scripting مثلاً في بايثون هذه الخاصية موجودة حيث يتم ترجمة الكود إلى لغة السي و من ثم تنفيذه و ذلك لتسريع العمل، و لكن يبقى بإمكانك تنفيذه سطراً سطراً في حال أردت ذلك.
  12. يمكنك الوصول إلى قيمة s1 من أي مكان بدون الحاجة إلى class فلا معنى من وجوده هنا. كل ما عليك القيام به هو تعريف s1 على أنه global، أي نقوم بتعريفه خارج أي شيء و عندما نريد التعديل عليه داخل تابع نكتب في بداية التابع: global s1 هكذا يتم التعامل مع s1 على أنه متغير عام.
  13. إن هذا يتبع للغة التي تقوم بالبرمجة بها، كل لغة لها إضافة معينة تساعد على الإكمال التلقائي، يمكنك البحث باسم اللغة التي تعمل بها في قسم الإضافات و ستجد غايتك هناك. كما أنه في حال كنت تستعمل مكتبات إضافية مع اللغة يجب أن تخبر ال vscode أنك تستعمل بيئة معينة تحوي هذه المكتبات. في حال لم يعمل الاكمال التلقائي للمكتبات يمكنك إخبارنا و مشاركة لقطة شاشة حتى نستطيع مساعدتك.
  14. يمكنك الإطلاع على الكتب التي قام كاتب اللغة بكتابتها، هذه الكتب متوفرة باللغة الانكليزية يمكنك إيجاد هذه الكتب من موقع الكاتب هنا. كتاب ++Programming: Principles and Practice using C بالتحديد يحوي على مقدمة عن البرمجة و الخوارزميات و حل المشكلات. من أجل الكتب العربية أنصحك بدلاً منها بالإطلاع على مقالات أكاديمية حسوب فهي تحوي على الكثير من المقالات التي يمكن اعتبار محتواها بالمجمل يعادل محتوى كتاب.
  15. من فضلك قم بإرفاق الملف كما هو حيث أن الكود غير واضح نهائياً هنا، و قم بذكر المشكلة او رسالة الخطأ التي تظهر لديك.
  16. فقط قم باستدعاء الدالة لا أكثر. مثلاً في حال كان لديك listbox بالاسم lb يمكنك القيام بما يلي: x = lb.curselection() و الأمر مشابه لل combobox و لكن يتغير التابع فقط.
  17. من أجل ال listbox يمكنك الحصول على العناصر المحددة على شكل tuple باستعمال التابع curselection()، و الذي يعيد أرقام الأسطر التي تم اختيارها، من ثم يمكنك استعمال رقم السطر لمعرفة القيمة (حيث يجب أن يكون لديك ما يحويه ال listbox). من أجل ال comboBox يمكنك الحصول على القيمة الحالية باستعمال الدالة get.
  18. مرحباً سام، هناك دورة بايثون في أكاديمية حسوب تقدم لك كل ما تحتاجه لتطوير مواقع الويب باستعمال django. يمكنك القيام بما تريد عن طريق ما يدعى DetailView، و التي هي نوع خاص من ال view و التي تقوم بعرض التفاصيل في صفحة html، يمكنك ربط هذه ال view إلى url معين و جعل النقر على الزر الذي ترغب به يذهب إلى تلك ال view. يمكنك الإطلاع أكثر على كيفية كتابة هذه ال view من هنا. تحياتي لك.
  19. مرحباً اسماعيل، أنا مدرب في المسابقة البرمجية و لدي خبرة كبيرة بها، و بالتالي يمكنني أن أساعدك قليلاً في ذلك. إن المهارة الأساسية التي تنميها المسابقة هي مهارة حل المشكلات، على عكس ما يبدو من اسمها أنها مسابقة برمجية فقط، إلا أنها فعلياً ترتكز على مهارة حل المشكلات. هذه المهارة لا ترتبط بتخصص ما، يحتاجها الجميع بغض النظر عن اختصاصاتهم، قد تبدو لك غير مهمة و أنه يمكنك تعلم كتابة المشاريع فقط، هذا صحيح يمكنك تعلم كتابة المشاريع و لكن عندما تواجهك مشكلة ستحتاج وقتاً أطول في حلها من شخص خبير في البرمجة التنافسية. شخصياً المسابقة البرمجية جعلتني أسرع في تعلم أي شيء، بحيث أنني قادر على تركيز أفكاري في الأمور المهمة و استخلاص الأفكار فقط، و الاعتماد على مهارتي في حل المشكلات فيما تبقى، في حال لم تكن لديك هذه المهارة فإن الشيء الوحيد الذي يمكنك الاعتماد عليه هو خبرتك، و لكن الخبرة لوحدها تحتاج وقت طويل لتتكون، و هنا تأتي أهمية حل المشكلات.
  20. يمكنك اختبار فيما إذا كانت خلية فارغة أم لا عن طريق كتابة الشرط التالي: if cell.value: و بالتالي أي كود ترغب في تنفيذه على قيمة الخلية يجب أن يكون ضمن هذا الشرط، حيث أنها يجب أن تكون غير خالية حتى تقوم بتنفيذ ما تريد. من أجل سؤال الثاني يمكنك الوصول للخلية و استخراج قيمتها و من ثم إسناد القيمة هذه كأي قيمة أخرى للخلية التي تريدها.
  21. هل يمكنك توضيح ما هي اللغة التي تتعامل معها أو المكتبة التي تستعملها من أجل ال listbox و غيره؟ لا يمكننا مساعدتك بدون معرفة ذلك.
  22. تحتاج لحلقة for عادية تمر على الأرقام و ليس على السطور بشكل مباشر، حيث أنه يمكنك أن تجعل الخطوة بمقدار 2 و ذلك عن طريق ثالث وسيط في ال range. يمكنك تكوين اسم الخانة على شكل سلسلة نصية، لاحظ في كودك قمت بوضع E2 هنا بدل هذا يمكنك وضع E و رقم السطر بعدها. رقم السطر يكون في الحلقة.
  23. مرحباً سام، يوجد شروحات عن هذه المقالة و عن الدجانغو في الدورات الخاصة بأكاديمية حسوب، بشكل أساسي في دورة بايثون. إن المودل الخاص بالدجانغو يشكل طبقة وسيطة بينك و بين قاعدة البيانات مما يسهل العمل، من أجل أعمال بسيطة لن تحتاج لكتابة تعليمات sql بنفسك، فقط عليك استعمال المودل، و لكن من أجل استعمالات أكثر تعقيداً قد يكون من الأفضل و الأسرع من ناحية الأداء أن تقوم بكتابة تعليمة sql لوحدك، كما أنه أحياناً تحدث أخطاء في عمليات التهجير لقاعدة البيانات، يمكنك حلها فقط إذا كنت على معرفة بتعليمات ال sql و الجداول و ما إلى هنالك. تحياتي لك.
  24. بعد انتهاءك من هذه الدورة سوف تكون قد حصلت على معلومات كبيرة في الأساسيات المطلوبة لأي مجال، و بالتالي يمكنك البدء بأعمال بسيطة. في حال أردت التخصص في مجال معين يجب عليك أن تتابع دراستك في هذا المجال، هذه الدورة لا تختص في مجال معين و إنما تعطيك الأساسيات اللازمة لأي مجال مرتبط بعلوم الحاسوب سواء كان تطبيقات سطح مكتب أو تطبيقات موبايل أو صفحات ويب. هناك دورات في الأكاديمية تساعدك في التخصص، كل تخصص له دورة.
  25. سأعطيك الفكرة العامة و يمكنك محاولة تطبيقها لوحدك حيث أنها تقريبا نفس الكود الخاص بك. بشكل أساسي أنت تريد المرور على كل اسم، كل اسم يحوي سطرين، و بالتالي بدلاً من كودك الذي يقوم بوضع قيم الأسطر بشكل ثابت يمكننا القيام بذلك بشكل ديناميكي باستعمال حلقة for. إن الأسطر الخاصة بالأسماء تبدأ من السطر الثاني و بالتالي يمكننا بدء حلقة ال for من ال 2، و في كل مرة نقوم بزيادتها بمقدار 2 (حيث أن كل اسم يحتاج سطرين)، في حال كان اسم المتغير الخاص بالحلقة هو i فإننا نريد الأسطر i و i+1. الباقي نفس الشيء حيث أن الأعمدة لا تختلف هنا.
×
×
  • أضف...