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

Kais Hasan

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

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

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

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

    26

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

  1. بالطبع يمكنك تسجيل الدخول بنفس الحساب من أي جهاز تريده. أنا شخصياً أفتح حسابي على لابتوبين و موبايل.
  2. هي عبارة عن لوحة إدارة مصممة بشكل جميل و صنعت خصيصاً للارافيل من قبل مطوري لارافيل. يمكنك الإطلاع أكثر عليها من الرابط التالي: https://nova.laravel.com/
  3. لا يوجد شرح لها في الدورة، تم استعمال قالب bootstrap من أجل صفحة الإدارة الخاصة بالموقع. يمكنك بعد إنهاء الدورة محاولة تغيير ذلك ليصبح المشروع يستعمل laravel nova و دائماً يمكنك السؤال و سنكون سعيدين بالإجابة و مساعدتك في تحقيق ذلك.
  4. يبدو أنك بحثت بشكل خاطئ، أحياناً لا يتم ذكر بايثون بشكل مباشر في تاغات الموقع بل يتم ذكر إطار عمل يستعمله مثلاً django، أنا شخصياً قمت بالعديد من الأعمال على مستقل بلغة البايثون. إنها ليست لغة ميتة بالعكس تماماً، إنها من أكثر اللغات المطلوبة حالياً. كما أن الكثير من العروض لا يحدد تماماً ما الذي ستستعمله، أي مثلاً يطلب منك بناء تطبيق لسطح المكتب، و أنت حر في إطار العمل و اللغة التي ستستعملها.
  5. يمكنك تعلم لغة البايثون بدون معرفة مسبقة بأي لغة أخرى، بالطبع من المفيد في حال كنت تعرف لغة أخرى و لكن هذا غير ضروري. لكن بما أن هذه هي اللغة الأولى لك فنصيحتي لك هو أن تركز على تطوير مهاراتك و تفكيرك المنطقي أكثر من محاولة بناء تطبيقات كبيرة، ﻷنه عندما تمتلك هذه المهارات سيصبح أمر تعلم لغة ما أكثر سهولة و سرعة. لتطوير هذه المهارات و أهمها مهارة حل المشكلات يمكنك الإطلاع على المسائل البرمجية التي تقدمها بعض المواقع مثل CodeForces و HackerRank. هذه المواقع أيضاً تحوي مسائل متعلقة ببعض الخوارزميات و بنى المعطيات و التي هي أيضاً من أهم الأمور في البرمجة.
  6. لدي خبرة 3 سنين في العمل الحر، يمكنني مساعدتك في ذلك. من ناحية الخبرة فإن هذا الأمر يختلف بين شخص و آخر و لكن بشكل عام يلزم على الأقل سنة حتى تستطيع بناء تطبيقات جيدة و القيام بأعمال متوسطة إلى كبيرة الحجم، أما في حال صادفك الحظ في إيجاد أعمال صغيرة فقد تكون 6 أشهر كافية لذلك و لكن لا تعتمد على ذلك. من المهم جداً أن يكون لديك مشاريع جيدة لعرضها في معرض أعمالك، فهذا هو المعيار الحقيقي لما تعرفه، حاول أيضاً أن تكون المشاريع ليست مكررة كثيراً و إلا قد يعتقد من يرى مشروعك أنك نسخته من مشروع آخر على github. من الجيد أن قمت بالاشتراك بدورة بايثون، الاشتراك بدورة تم وضعها من قبل خبراء سيساعدك في تسريع عملية الحصول على المعلومة، و قد تصبح قادراً على العمل خلال 6 أشهر فقط، و لكن هذا يعتمد على أن تقوم أيضاً بمشاريع بعد الدورة و ذلك لعرضها بالإضافة للمشروع الذي ستقوم به في هذه الدورة، كما أن وجود فريق من المدربين لمساعدتك سيكون لصالحك في هذا. كنصيحة أخيرة، لقد رأيت الكثير من الناس يقعون في خطأ أنهم يبحثون عن كيفية العمل بشكل حر أكثر مما يقضونه من الوقت في التعلم لتحقيق ذلك، ابدأ بالدراسة و التدريب المكثف في حال كنت تريد تحقيق ذلك، و كن واثقاً بأنك ستجد عمل إن شاء الله في حال كنت مجتهداً فلا تيأس إذا تم رفض عروضك في البداية.
  7. المقصود أي برنامج لديه وظيفة محددة يقوم بها، مثلاً تطبيق لتنظيم الأمور المالية، من ناحية طريقة العمل فهي واحدة بغض النظر عن الجهاز الذي تستعمله للتواصل مع هذا التطبيق، و لكن تختلف الواجهة، و التي هنا عبارة عن موقع تستعرضه عبر المتصفح.
  8. تطبيقات الويب هي عبارة عن تطبيقات مثل أي تطبيق عادي، و لكنها تعمل على سيرفر و يتم التعامل معها عن طريق المتصفح، أي يمكنك اعتبارها بشكل مبسط تشبه مواقع الويب. نعم يمكن تطوير تطبيقات جوال باستعمالها.
  9. هذا غريب، لا يظهر نفس الخطأ، حتى أن محتوى الشرط فارغ، من فضلك قم مشاركة الكود بعد التعديل حتى أتأكد أنك قمت بتعديله بالشكل الصحيح.
  10. لقد قمت بذكر الكود في تعليقي.
  11. من فضلك قم بطباعة تعليمة ال SQL كما ذكرت حتى يمكننا تحديد الخطأ.
  12. للتأكد دائماً من صحة أي عبارة SQL تكتبها من الجيد طباعتها. أي قم بتعريف متحول يحمل العبارة و قم بطباعته ثم تنفيذه. مثلاً كما يلي: query = "SELECT * FROM employee WHERE " + self.se_by.get() + " like '%" + self.se_var.get() + "%'" print(query) cur.execute(query) يمكنك مشاركة الخرج معنا في حال لم تستطع حل المشكلة بعد رؤية العبارة. أيضاً يمكنك تسهيل الأمور عن طريق كتابة العبارة كما يلي: query = f"SELECT * FROM employee WHERE {self.se_by.get()} like '%{self.se_var.get()}%'" print(query) cur.execute(query) هذه تدعى f-string و تستعمل لوضع متغيرات داخل ال string، هذه هي الطريقة الحديثة الأفضل للقيام بذلك.
  13. هذا يعتمد على ما تقومين باستعماله، من فضلك اذكري بعض التفاصيل الإضافية للتقنيات التي تقومين باستعمالها حتى يمكننا المساعدة بشكل دقيق. في حال كنت تقومين بالإضافة على جدول في قاعدة البيانات فيمكن الحصول على معرف آخر سطر تمت إضافته في sqlite كما يلي: select last_insert_rowid();
  14. يجب أن تكتب Number و ليس number، حالة الحرف مهمة جداً في لغات البرمجة.
  15. من فضلك شارك الكود بعد التعديل حتى أتأكد أنه تم بالشكل الصحيح.
  16. السبب في ذلك أن prompt تقوم بإرجاع القيمة المدخلة على شكل string، و بالتالي عليك تحويلها قبل ذلك عن طريق تمريرها إلى Number كما يلي: x = Number(prompt("..."));
  17. إن دورة تطوير واجهات المستخدم أفضل بالنسبة لما ذكرته، فهي ترتكز على تطوير الواجهات لمواقع الويب، على عكس الدوة الثانية التي تحوي على تطوير تطبيقات أندرويد و غير ذلك أيضاً. كما أنه من غير الجيد أن تبدأ بتعلم إطار عمل بلغة ما بدون أن تكون لديك معلومات جيدة حول هذه اللغة، و هذا ينطبق على أي لغة من اللغات بما فيها الجافا سكربت، و بالتالي من المفيد أن تتعلم الأساسيات قبل أن تتعلم إطار عمل ما. كما أن الدورة الأولى و التي هي دورة تطوير واجهات المستخدم مخصصة لمن ليس لديهم معلومات في الويب و يريدون تطوير مهاراتهم في هذا المجال. بالإضافة إلى كل ما سبق، إن تطوير الواجهات الأمامية ليس فقط جافا سكربت، حيث ستحتاج إلى htmlو css و هذا مشروح في الدورة الأولى.
  18. لا يوجد أنواع من المصفوفات في بايثون، في بايثون لدينا ما يدعى باللائحة list، هذه اللائحة يمكنها أن تحوي أي غرض كان، سواء رقم، سلسلة نصية، لائحة أخرى، أو حتى تابع. بالتالي لا فكرة من التفريق بين لائحة أحادية و لائحة ثنائية، ﻷن اللائحة الثنائية ما هي إلا لائحة أحادية عناصرها لوائح، و بالتالي أصبح لدينا العمق اثنان و لهذا دعوناها بالثنائية و لكنها في النهاية مجرد لائحة. نفس الأمر ينطبق على اللوائح الثلاثية، يمكنك حتى الحصول على لوائح رباعية أو أكثر.
  19. بما أنك لا تعرف شيئاً عن البرمجة فمن الأفضل أن تبدأ بتعلم أساسيتها و أساسيات علوم الحاسب قبل أن تتخصص في مجال ما، حيث أن أي مجال يتطلب منك معرفة الأساسيات حتى تصبح جيداً فيه. يمكنك الإطلاع على دورة اساسيات علوم الحاسب التي تقدمها الأكاديمية فهي مناسبة جداً لحالتك، حيث من خلالها يمكنك تعلم أساسيات البرمجة و الحاسوب بشكل عام، بالإضافة إلى مهارات مثل التفكير المنطقي و الذي ستلزمك كثيراً في أي مجال. من ناحية العمل فمن الصعب قليلاً إيجاد أعمال حرة في هذا المجال، أي أن أغلب الأعمال تكون في شركات و الشركات تتطلب أن يكون عمرك على الأقل 18 سنة، كما أن أغلب الشركات تطلب أن يكون لديك شهادة بكالوريوس في مجال علوم الحاسب لذلك نصيحتي لك أن تكمل تعليمك الجامعي، و لكن يمكنك طبعاً القيام ببعض الأعمال و في حال كانت جيدة جداً قد يتم قبولك بلا شهادة جامعية، و لكن لا تعتمد على ذلك و احصل على الشهادة.
  20. يبدو أن السؤال خاص بأحد الدروس من أحد الدورات، من فضلك قم بطرح الأسئلة الخاصة بدرس ما أسفل ذلك الدرس. و لكن كجواب على سؤالك بشكل عام فإن عملية التحقق يمكن وضعها في 3 أماكن و ذلك حسب أهمية هذا التحقق و هذه الأماكن بالترتيب من الأضعف إلى الأقوى: لدى المستخدم، هذا يتم مثلاً عندما تقوم بإدخال بريد الكتروني ليس له النمط العام لأي بريد الكتروني، أو عندما تحاول إدخال نص في مربع إدخال يقبل أعداد فقط. هذا النوع من التحقق جيد لتخفيف العبء على السيرفر من ناحية الطلبات الخاطئة و يساعد المستخدم على معرفة ما الذي عليه إدخاله بشكل أسرع و بالتالي يعطي تجربة جيدة للمستخدم. لكن هذا النوع يمكن تجاوزه بسهولة عن طريق إرسال طلب بشكل مباشر بدلاً من استعمال المتصفح و الكثير من الطرق الأخرى و بالتالي من غير الجيد استعماله للأمور الحساسة. في السيرفر، هذا يتم بعد إرسال المستخدم لبياناته يقوم السيرفر بالتحقق من هذه البيانات و من أنها تراعي الشروط المطلوبة. هذا أكثر أماناً من الطريقة السابقة و دائماً يمكن استعماله للأمور الحساسة و لكن الخطأ البرمجي هنا قد يسبب مشاكل غير ملحوظة. في قاعدة البيانات، هذا النوع مهم جداً لضمان أنه حتى في حال حدوث خطأ برمجي لن يتم إدخال بيانات غير مناسبة إلى قاعدة البيانات و هو مهم جداً كما في المثال الذي ذكرته. طبعاً يمكن استعمال الطرق الثلاث السابقة معاً، و لكن هذا يعتمد على حساسية التطبيق الذي تقوم ببناءه و متطلباته، بالتالي في حالتك من الجيد إضافة الشرط إلى قاعدة البيانات و لكن قد يكون ليس هذا هو الغرض من الدرس و لذلك لم يتم إضافته، و لكن عندما تقوم ببناء تطبيق حقيقي فمن الأفضل أن تضيف الأنواع الثلاث من التحققات.
  21. هناك طريقتان لحل هذا التمرين. أول طريقة تتمثل في أن تستعمل مقارنة المحارف مباشرة، و هنا سينجح الأمر لأن ترتيب المحارف الخاصة بالخانات موافق لترتيب الأرقام، أي المحرف '1' أصغر من المحرف '2' ، في هذه الحالة يمكنك فقط استعمال ما يدعى list comprehension للقيام بذلك بالإضافة إلى الدالة join، كما يلي: s = "41345491294358" res = ''.join(['1' if x >= '5' else '0' for x in s]) print(res) هذا هو الحل الأمثل بالنسبة للغة البايثون، حيث أن هذه هي الطريقة المفضلة للكتابة في هذه اللغة، بالطبع يمكنك القيام بكتابة حلقة عادية و الإضافة إلى لائحة و من ثم الدمج و لكن ذلك سيكون أسلوب اللغات الاخرى مثل c++ و ليس بايثون. الطريقة الثانية لحل هذه المسألة تكون ببناء الحل مباشرة إلى سلسلة نصية، أي بدلاً من التخزين في مصفوفة و من ثم التحويل إلى سلسلة نصية نقوم فوراً بالإضافة إلى سلسلة نصية، كما يلي: s = "41345491294358" res = '' for x in s: res += '1' if x >= '5' else '0' print(res)
  22. نقوم باستعمال البحث الثنائي لتسريع عملية البحث، أي بدلاً من أن نبحث بشكل خطي عن عنصر يمكنك استعمال البحث الثنائي، و هذا له شرطان، أولاً أن تكون العناصر مخزنة بشكل خطي (سأشرح ذلك فيما يلي) ثانياً أن تكون العناصر مرتبة. و بالتالي في حال لم تكن العناصر مخزنة بشكل خطي لا معنى من البحث الثنائي، لأنه في تلك الحالة ستكون العناصر مخزنة بشكل يسرع البحث تلقائياً. مثلاً في القواميس بلغة البايثون يمكن الوصول إلى مفتاح بشكل مباشر و بسرعة كبيرة و ذلك لأن عناصر القاموس ليست مخزنة بشكل خطي و بالتالي لا فكرة من البحث الثنائي. كذلك الأمر بالنسبة للمجموعات set فالبحث فيها سريع جداً. بالطبع يمكنك استخراج عناصر القاموس و من ثم القيام بعملية بحث ثنائي و لكن ليس من ذلك أي فائدة.
  23. هنالك موقع إضافي يتبع لحسوب و هو بعيد. و هو يساعدك على إيجاد أعمال مع شركات حتى، بشكل أدق هو موقع توظيف عن بعد، و ليس موقع عمل حر كما هو الحال في مستقل و خمسات. يمكنك الإطلاع على الموقع من الرابط التالي: https://baaeed.com/
  24. قد يكون السبب وراء ذلك هو أنك تحاول تذكر حل المشكلة بدلاً من حلها، لقد كان الكثير من الطلاب لدي يعانون من هذه المشكلة. بشكل عام لا يمكن لأحد مساعدتك في هذا الأمر، فقط قم بمحاولة التركيز على كيفية حل المشكلة و انسى أنك حللتها من قبل. بعض التقنيات التي وجدتها فعالة من أجل ذلك: انسى المشكلة الأصلية و حاول إيجاد بعض الملاحظات فقط، أي حاول استنتاج أمور صغيرة، شيئاً فشيئاً سترى طريق الحل يتضح أمامك، هذه التقنية مفيدة جداً عندما تصل إلى طريق مسدود في التفكير. في حال كان هناك شروط معينة حاول حل مسألة أسهل لا يوجد فيها أحد هذه الشروط، أو يوجد بشكل أضعف، أي مثلاً لنفترض أنك تريد حل مسألة يكون الدخل فيها عبارة عن 100 ألف عنصر، حاول حلها من أجل 1000 عنصر مثلاً، في الكثير من الأحيان هذه الطريقة تساعدك على بناء الحل من المسألة الأقل تعقيداً إلى الأكثر تعقيداً. حاول تجزئة ما لديك من أمور في المسألة و حل كل جزء لوحده، هذه الطريقة مشهورة جداً في الخوارزميات حتى و تدعى divide and conquer ، مثلاً إذا كان لديك عدة متطلبات حاول حل كل على حدى (في حال كان ذلك ممكن). حاول التفكير بالحل باستعمال قلم وورقة، أي كفكرة فقط و ليس ككود، من ثم ضع مخططاً للبرنامج الذي تريد كتابته، و في النهاية ابدأ الكتابة. الكثير من المشاكل و البطء في الكود يكون نتيجة أن الشخص يتوجه إلى الكود بدون أن يتحقق بشكل كامل من فكرته هل هي صحيحة أم لا. هذا قد يبدو إضاعة للوقت في البداية، و لكن هذا القليل من الوقت الذي تخصصه لما قبل كتابة الكود سيجعل كتابة الكود أسرع و يحميك من الوقوع في الأخطاء لاحقاً و التي ستكلفك الكثير من الوقت لحلها.
  25. نعم، حتى الدوال تعتبر كائنات، هذا يعني أنه يمكنك تمرير دالة كمعطى، أو يمكنك تخزين دالة في متغير و كل ما يمكنك تطبيقه على أي كائن. مثال على ذلك: def f(x): return x * x def apply_f(arr, func): return [func(e) for e in arr] arr = [1, 2, 3, 4] result = apply_f(arr, f) print(result) # [1, 4, 9, 16]
×
×
  • أضف...