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

Chihab Hedidi

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

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

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

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

    13

كل منشورات العضو Chihab Hedidi

  1. المشكلة تكون مرتبطة إما بتنسيق واجهة المستخدم أو بمشكلة في عرض الموارد الرسومية داخل التطبيق، لذا تأكد من أن جميع الصور والخلفيات المستخدمة موجودة في المجلد الصحيح وأنه لا يوجد أي خطأ في تسميتها أو استدعائها في الـ XML أو الكود. و أيضا تأكد أن لون خلفية الشاشة والخلفيات المخصصة صحيحة، لأن وجود لون خلفية أسود أو غير مرئي يمكن أن يؤدي إلى ظهور شاشة سوداء، و حاول استخدام Logcat في Android Studio لرؤية أي أخطاء أو تحذيرات عند تشغيل التطبيق، حيث قد توفر هذه السجلات معلومات إضافية حول المشكلة.
  2. جرب تغيير الhost إلى : host="127.0.0.1" لأنه بالطريقة التي كتبتها يتم تحويله إلى IPV6 و هي التي يمكن أن تكون سبب المشكلة، أما بالطريقة الجديدة فيتم إستخدام IPV4 بشكل مباشرة، و إذا كنت قد قمت بوضع كلمة مرور عند تثبيت Mysql تأكد منها حيث التي تستخدمها في الكود هي YES.
  3. هي مجموعة من الاختبارات والشهادات التي تقدمها شركة مايكروسوفت لتقييم مهارات الأفراد في مختلف التقنيات والبرمجيات التي تقدمها الشركة، و الهدف هو منح شهادات احترافية في مجالات علوم الحاسوب بصفة عامة و يوجد العديد منها لكن أشهرها هي Microsoft Certified: Azure Fundamentals: هنا تختبر المعرفة الأساسية بخدمات Azure السحابية. Microsoft Certified: Azure Administrator Associate: تهدف هذه الشهادة إلى أولئك الذين يديرون بيئات Azure السحابية. Microsoft Certified: Power BI Data Analyst Associate: تختبر القدرة على استخدام Power BI لتحليل البيانات وإنشاء تقارير تفاعلية. Microsoft Certified: Security, Compliance, and Identity Fundamentals: تركز على مفاهيم الأمان والامتثال وحلول الهوية. Microsoft Certified: Microsoft 365 Fundamentals: تغطي الأساسيات المتعلقة بـ Microsoft 365 والخدمات المرتبطة بها مثل Outlook وTeams وOneDrive. و بالتأكيد كل شهادة لها متطلبات مختلفة وتركز على مجالات معينة.
  4. أغلبية السرفرات المحلية مثل XAMPP و Uniform Server مصممة عادة لتكون متعددة المنصات وتعمل على بيئات 64 بت و32 بت، حيث إذا كنت تبحث عن سيرفر محلي 32 بت ليعمل على جهاز 64 بت، فهذا ممكن لأن معظم أنظمة التشغيل 64 بت تدعم تشغيل تطبيقات 32 بت. و يعتبر WampServer هو بديل لـ XAMPP، ويوفر بيئة PHP، Apache، و MySQL. يوجد منه إصدار يدعم 32 بت ويعمل بشكل جيد على أنظمة 64 بت، أو يمكنك إستخدام Laragon هو بيئة تطوير محلية مشابهة لـ XAMPP و WampServer. تدعم إصدارات 32 بت، وتعمل بسلاسة على أنظمة 64 بت و يعتبر بديل ممتاز أيضا.
  5. قم بإنشاء سيرة ذاتية قوية تسلط الضوء على مهاراتك، خبراتك السابقة، ومشاريعك العملية، و تأكد من التركيز على المهارات التي تطلبها جوجل مثل البرمجة أو تحليل البيانات، ثم اذهب إلى موقع وظائف جوجل واختر "Internships" وابحث عن الفرص المتاحة، و بمجرد أن تجد الفرصة المناسبة، قدم طلبك عبر الموقع مع إرفاق سيرتك الذاتية وخطاب تقديمي إذا كان مطلوب. تأكد من قراءة المتطلبات بعناية، و يمكنك دائما البحث عبر الإنترنت عن تجارب متدربين سابقين في جوجل والاستفادة من نصائحهم للتحضير بشكل أفضل.
  6. إذا استخدمت i أو أي اسم آخر كمؤشر في الحلقة، فهذا يعني أنك قد تنوي استخدام هذا المتغير داخل الحلقة بهذا الشكل: for i in range(5): print(i) هنا يتم استخدام i لطباعة الأرقام من 0 إلى 4. أما عندما تستخدم _ فهذا يعني أنك لا تنوي استخدام المتغير داخل الحلقة، وأنك تريد فقط تنفيذ الكود داخل الحلقة بدون الحاجة لاستخدام المؤشر، و يعتبر _ هنا تعبير متعارف عليه للإشارة إلى أن المتغير لن يُستخدم. for _ in range(5): print("Hsoub") فهنا يتم تكرار الكود داخل الحلقة 5 مرات، لكن لا يتم استخدام المتغير _.
  7. تخصص تطوير الويب لا يزال له مستقبل قوي، خاصة مع تزايد الاعتماد على الإنترنت والحاجة المستمرة للمواقع والتطبيقات الإلكترونية، و الكثير من الشركات والمؤسسات تحتاج إلى مواقع وتطبيقات متقدمة لخدمة عملائها، سواء كان ذلك في التجارة الإلكترونية، الخدمات المالية، أو حتى التطبيقات الحكومية والتعليمية، و لكن مطلوب من مطوري الويب الاستمرار في تعلم أدوات ولغات جديدة وإطارات العمل المتقدمة. أما بخصوص التخصصات البرمجية المطلوبة حاليا وفي المستقبل، فأغلب الشركات متوجهة لمجال الذكاء الاصطناعي وتعلم الآلة لأنه سيستمر في النمو والتوسع في قطاعات كثيرة، أما أغلب التخصصات الأخرى فهي متوفرة و لكن يدرجات متفاوتة و يتعين عليك دائما الإطلاع على التخصصات المطلوبة في المكان أو الدولة التي أنت فيها في حالة كنت تريد العمل هناك.
  8. يمكنك إنشاء واجهة توفر إنشاء كائنات لعائلات متعددة من الكائنات المرتبطة أو التابعة، دون الحاجة إلى تحديد فئاتها المحددة، و الفكرة الأساسية هي أن يكون لديك عدة مصانع مختلفة، كل مصنع يقوم بإنشاء مجموعة من الكائنات المتوافقة مع بعضها البعض، لنفترض أن لدينا منتجين كرسي و طاولة، ونريد مصنعين واحد يصنع الأثاث الحديث وآخر يصنع الأثاث الكلاسيكي، لذا سيتعين علينا إنشاء الواجهات بهذا الشكل: from abc import ABC, abstractmethod # واجهة الكرسي class Chair(ABC): @abstractmethod def sit_on(self): pass # واجهة الطاولة class Table(ABC): @abstractmethod def eat_on(self): pass ثم تعرف الفئات التي تنفذ الواجهات: # كراسي حديثة class ModernChair(Chair): def sit_on(self): return "Sitting on a modern chair." # طاولات حديثة class ModernTable(Table): def eat_on(self): return "Eating on a modern table." # كراسي كلاسيكية class ClassicChair(Chair): def sit_on(self): return "Sitting on a classic chair." # طاولات كلاسيكية class ClassicTable(Table): def eat_on(self): return "Eating on a classic table." ثم إنشاء المصنع المجرد: class FurnitureFactory(ABC): @abstractmethod def create_chair(self) -> Chair: pass @abstractmethod def create_table(self) -> Table: pass و المصانع الملموسة: # مصنع الأثاث الحديث class ModernFurnitureFactory(FurnitureFactory): def create_chair(self) -> Chair: return ModernChair() def create_table(self) -> Table: return ModernTable() # مصنع الأثاث الكلاسيكي class ClassicFurnitureFactory(FurnitureFactory): def create_chair(self) -> Chair: return ClassicChair() def create_table(self) -> Table: return ClassicTable() و في الأخير تستخدمهم بهذا الشكل: def client_code(factory: FurnitureFactory): chair = factory.create_chair() table = factory.create_table() print(chair.sit_on()) print(table.eat_on()) # استخدام مصنع الأثاث الحديث modern_factory = ModernFurnitureFactory() client_code(modern_factory) # استخدام مصنع الأثاث الكلاسيكي classic_factory = ClassicFurnitureFactory() client_code(classic_factory) و يمكنك أن تطلع أكثر على كيف يعمل بالضبط من خلال هذه المقالة :
  9. لدينا هنا حلقتان متداخلتان، بالنسبة للحلقة الخارجية ستعمل 5 مرات، حيث تتغير قيمة i من 0 إلى 4، أما بالنسبة للحلقة الداخلية فلكل قيمة من i في الحلقة الخارجية، يتم تشغيل الحلقة الداخلية 6 مرات، حيث تتغير قيمة n من 0 إلى 5، و إجمالي عدد التكرارات = 5 * 6 = 30 تكرار، و لكن بما أن الكود يستخدم pass، فهذا يعني أنه لا يتم تنفيذ أي شيء داخل الحلقات، فهي تعمل فقط بدون أي نتيجة ملموسة. و إذا كنت تريد فهم كيف تعمل بشكل أفضل يمكنك طباعة قيم المتغيرات i وn في كل تكرار بهذا الشكل: for i in range(5): for n in range(6): print(f"i = {i}, n = {n}") حيث سيكون الناتج: i = 0, n = 0 i = 0, n = 1 i = 0, n = 2 i = 0, n = 3 i = 0, n = 4 i = 0, n = 5 i = 1, n = 0 i = 1, n = 1 i = 1, n = 2 i = 1, n = 3 i = 1, n = 4 i = 1, n = 5 . . . i = 4, n = 0 i = 4, n = 1 i = 4, n = 2 i = 4, n = 3 i = 4, n = 4 i = 4, n = 5
  10. يعتمد القرار على الاحتياجات المحددة وحجم البيانات التي يجب معالجتها، حيث يعتبر Dynamics 365 خيار شامل لإدارة الأعمال يتضمن أدوات لإدارة المحاسبة، الموارد البشرية، وإدارة العملاء، مما يجعله مناسبا لمكاتب المحاماة الكبيرة التي تحتاج إلى إدارة عملياتها المختلفة في منصة واحدة، ولكن يعتمد D365 بشكل أساسي على نموذج الاشتراك الشهري، مما قد لا يناسب الجميع إذا كنت تبحث عن حل لمرة واحدة، في المقابل يعد Power BI أداة قوية لتحليل البيانات وإنشاء التقارير المرئية، وهو مناسب في حال كان التركيز الرئيسي على التحليل وليس على إدارة العمليات اليومية، و يوفر نسخة مجانية للاستخدام، ولكن النسخ الأكثر تقدما تتطلب اشتراك شهري، لذا حاول أن تحدد هدفك و تربطها مع مميزات كل برنامج لتستطيع الإختيار بينهما.
  11. بالنسبة للتمارين والواجبات بعد كل درس، فالأكاديمية تركز على التفاعل العملي أثناء الشرح، ثم تنتقل إلى قسم التطبيقات حيث يتم تثبيت المفاهيم بشكل أعمق، و لكن إذا كنت ترغب في الحصول على تمارين إضافية أو تطبيقات أكثر بعد كل درس، يمكنك دائما طلب ذلك في التعليقات أسفل فيديو الدرس، و سيتكفل المدربين بتزويدك بتمارين إضافية للمساعدة في تعزيز الفهم وتطوير مهاراتك بشكل أكبر.
  12. لا يوجد خيار تحديث مباشر داخل البرنامج نفسه، حيث تحتاج إلى تثبيت الإصدار الأحدث بشكل منفصل، يمكنك هذا عبر الإنتقال إلى الموقع ل Visual Studio الرسمي لتحميل الإصدار الأخير، ثم اختر Visual Studio 2022 من بين الخيارات المتاحة بناء على احتياجاتك، و بعد تحميل المثبت، شغله واتبع التعليمات لإعداد بيئتك التطويرية، و يمكنك اختيار الحزم والميزات التي تحتاجها. بعد تثبيت Visual Studio 2022 يمكنك فتح المشاريع التي تم إنشاؤها في Visual Studio 2013، لكن قد يطلب منك Visual Studio تحديث ملفات المشروع لتتوافق مع الإصدار الجديد، وهو ما يمكنك الموافقة عليه، و أيضا إذا كنت ترغب في الاحتفاظ بالإصدار القديم لأغراض معينة، يمكنك ذلك حيث إن Visual Studio 2022 سيعمل بجانب Visual Studio 2013 دون إزالته.
  13. مرحبا مروان، ستجد أسفل فيديو الدرس مكان مخصص لوضع التعليقات هناك، أرجوا وضع تعليقك في تلك الخانة، أما هنا فيمكنك طرح أسئلتك العامة و التي تكون خارج مجال الدروس.
  14. نعم يمكنك ذلك في جامعة هارفارد، حيث يتم تدريس الكورس هناك، ومع ذلك عليك التأكد من التقديم على الكورس من خلال الجامعة نفسها، والتأكد من متطلبات القبول، مثل التسجيل في برامج معينة أو الحصول على تأشيرة دراسية إذا كنت طالبا دوليا. و بالتأكيد المعلومات الرسمية ستحصل عليها من موقع الجامعة أو عبر التواصل مع مكاتب القبول.
  15. يعتبر __name__ كمتغير خاص يستخدم لتحديد ما إذا كان الملف الذي يحتوي على الكود يتم تنفيذه كبرنامج رئيسي أم أنه تم استيراده كملف وحدة في برنامج آخر، حيث عندما تقوم بتشغيل ملف بايثون مباشرة، يتم تعيين قيمة __name__ إلى "__main__"، و هذا يعني أن الملف يتم تنفيذه كبرنامج رئيسي، أما إذا تم استيراد الملف كملف وحدة في برنامج آخر، فإن __name__ تأخذ قيمة اسم الملف.يمكنك استخدام هذا المبدأ لتحديد الكود الذي يجب تنفيذه فقط عندما يكون الملف هو البرنامج الرئيسي، وليس عند استيراده كوحدة، وهذا مفيد لتنظيم الكود وجعل الوحدات البرمجية أكثر مرونة. # mymodule.py def hello(): print("Hello, world!") if __name__ == "__main__": hello() عند تشغيل mymodule.py مباشرة، سيتم طباعة "Hello, world!" لأن __name__` سيكون "__main__". لكن إذا قمت باستيراد mymodule.py` في ملف آخر، فإن hello() لن يتم استدعاؤها تلقائيا لأن __name__ لن تكون "__main__" بل ستكون "mymodule".
  16. يمكنك استخدام عدة طرق، و إحدى الطرق الشائعة هي استخدام ميثود __new__ لضمان أنه يتم إنشاء كائن واحد فقط من الفئة مهما تم استدعاؤها بهذا الشكل: class Singleton: _instance = None # متغير يخزن النسخة الوحيدة def __new__(cls): if cls._instance is None: cls._instance = super(Singleton, cls).__new__(cls) return cls._instance # اختبار Singleton singleton1 = Singleton() singleton2 = Singleton() # التحقق من أن الكائنين هما نفس النسخة print(singleton1 is singleton2) # ستطبع True هنا في الكود new هي ميثود خاصة يتم استدعاؤها قبل إنشاء الكائن، وتستخدم هنا لضمان أن النسخة الوحيدة من الفئة يتم إرجاعها كل مرة، أما cls._instance فهو متغير فئوي يخزن النسخة الوحيدة من الكائن، إذا كانت None، يتم إنشاء الكائن، وإلا يتم إرجاع النسخة الموجودة. بهذا الشكل، يتم التأكد من أن أي محاولة لإنشاء كائن جديد من الفئة ستعيد النسخة نفسها الموجودة بالفعل.
  17. الحادثة معروفة حيث كانت المشكلة الرئيسية في نظام التحكم الآلي للطيران، و هذا النظام كان مصمما لضبط زاوية الطائرة أثناء الطيران لمنعها من الانحدار أكثر من اللازم.، و الخطأ حدث عندما تلقى النظام بيانات غير صحيحة من جهاز استشعار زاوية الهجوم الذي يحدد زاوية الطائرة بالنسبة للهواء المتدفق، و بسبب هذه البيانات الخاطئة، قام النظام بخفض مقدمة الطائرة بشكل غير مبرر، وهو ما أدى إلى فقدان الطيارين السيطرة على الطائرة وتحطمها في الحالتين. في وقتنا الحالي يمكن الإعتماد على تحليل البيانات، حيث يمكن تطوير خوارزميات تعمل على رصد الأنماط غير الطبيعية في البيانات الصادرة من الحساسات، إذا تم اكتشاف بيانات غير منطقية، يتم تجاهل المدخلات المشبوهة والتعامل مع البيانات البديلة.
  18. في لغة php لا يتم استخدام الأقواس {} لإنشاء الكائنات مثلما في جافاسكريبت، لذا فإن الطريقة الوحيدة لإنشاء كائنات في php هي باستخدام الكلمة المفتاحية new. بالنسبة ل Facades هي نمط تصميم يستخدم في البرمجة لتقديم واجهة مبسطة لمكتبة أو مجموعة من الكائنات المعقدة، بحيث يمكنك الوصول إلى الوظائف المعقدة أو العمليات المتعددة من خلال واجهة بسيطة ومباشرة، و في php يستخدم هذا المفهوم بشكل شائع في إطار العمل Laravel، حيث يسهل الوصول إلى العديد من الخدمات والأنظمة الداخلية مثل قواعد البيانات، الجلسات، وغيرها، فمثلا هنا: Cache::put('key', 'value', $minutes); $value = Cache::get('key'); Cache هو Facade يوفر طريقة للوصول إلى خدمة التخزين المؤقت بشكل بسيط،بدلا من الحاجة إلى إنشاء كائنات وتكوين الخدمات يدويا، يمكنك فقط استخدام هذا الـ Facade للوصول إلى الخدمة مباشرة.
  19. عند استخدام الكلمة المفتاحية new، يتم إنشاء كائن من نوع محدد بناء على الفئة التي تم تحديدها فمثلا: function Person(name, age) { this.name = name; this.age = age; } let person1 = new Person("Ahmed", 25); هنا نحن نقوم بإنشاء كائن جديد من النوع Person باستخدام الكلمة المفتاحية new، هذه الطريقة تنشئ كائن جديد باستخدام البنية المحددة في الدالة أو الصنف، مع إنشاء خصائص name و age وتعيين القيم لها. و عند استخدام الأقواس {}، يتم إنشاء كائن عادي أو مباشر بدون الحاجة إلى قالب أو صنف، و يمكنك تحديد الخصائص والقيم مباشرة داخل الأقواس بهذا الشكل: let person2 = { name: "Ahmed", age: 25 }; حيث هنا تم إنشاء كائن person2 باستخدام الأقواس {}، هذا الكائن يحتوي على الخصائص name و age وتم تعيين القيم لها مباشرة، و هذه الطريقة مناسبة لإنشاء كائنات سريعة بدون الحاجة إلى تعريف دالة أو صنف. و الفرق هو أن new تستخدم لإنشاء كائن يعتمد على صنف معين وتقوم بتشغيل دالة البناء عند إنشاء الكائن، أما الأقواس تستخدم لإنشاء كائنات مباشرة بدون الحاجة إلى صنف وتتيح لك تعيين الخصائص والقيم مباشرة.
  20. ليس هناك ما يمنع من استخدام بايثون لتطوير تطبيقات الهواتف، ولكن هناك تحديات عديدة تتعلق بالأداء، التكامل، والدعم. لهذا السبب، يميل المطورون لاستخدام أدوات أخرى مثل JavaScript وأطر العمل المخصصة لهذا الغرض، و لكن أعتقد أنه من الممكن أن نرى تطورا أكبر في المستقبل في استخدام بايثون في هذا المجال مع استمرار ظهور أطر عمل جديدة .
  21. نعم من الممكن الآن برمجة تطبيقات أندرويد وiOS باستخدام لغة بايثون، كما يمكن استخدام Flet لإنشاء واجهات مستخدم تفاعلية للتطبيقات التي تعمل على متصفح الويب أو تطبيقات سطح المكتب، و يعتبر دعم التطبيقات المحمولة ما زال قيد التطوير والتجريب، مما يعني أنه لازال هناك بعض المشاكل في التطوير و التناسق مع إصدارات الأندرويد و لكن ليس هذا هو إطار العمل الوحيد المتوفر، فهناك أيضا إطارات عمل أخرى مثل Kivy وBeeWare وPySide، التي توفر أدوات لتطوير تطبيقات أندرويد وiOS باستخدام بايثون، لكن بعض هذه الإطارات قد تتطلب بعض العمل الإضافي لتحقيق تجربة مستخدم مميزة وملائمة لكل منصة لذلك لم تلقى الرواج الكبير مثل ما حدث مع flutter و غيرها من اللغات و أطر العمل.
  22. العديد من الخوادم التي تستضيف تطبيقات الويب تستخدم أنظمة تشغيل Linux نظرا لاستقرارها وأمانها وكفاءتها العالية، لذا إذا كنت تعمل على مشروع يستخدم MERN stack، فمن المحتمل أن تحتاج إلى نشر تطبيقك على خادم يعمل بنظام Linux، و أيضا تعلم Linux يسمح لك باستخدام أدوات مثل SSH للوصول إلى الخوادم عن بعد وإدارتها، و هذا يمكن أن يشمل تثبيت وإعداد البرامج، إدارة قواعد البيانات، وإعداد الأمان والنسخ الاحتياطي. كما أن معظم أدوات تطوير البرمجيات مفتوحة المصدر، مثل Node.js وMongoDB، تعمل بشكل جيد مع Linux، فبيئة Linux غالبا ما تكون الخيار الأول للمطورين الذين يعملون مع البرمجيات مفتوحة المصدر، لذا فتعلم إستخدام ليس بالخسارة أبدا فأغلب المبرمجين يعتمدون على هذا النظام وبإستخدامه كثيرا ستلاحظ الفرق بينه و بين ويندوز
  23. ليس عليك أن تكون مطورا في DevOps لتكون مطور MERN stack ناجح، لأن DevOps هو مجال مختلف يهتم بتحسين العمليات وتكامل البرمجيات والنشر الآلي وإدارة البنية التحتية، ولكن تعلم DevOps يمكن أن يكون مفيدا إذا كنت تعمل في شركة صغيرة أو ناشئة حيث يتوقع منك أن تكون متعدد المهام، أيضا فهم أساسيات DevOps يمكن أن يحسن من قدرتك على نشر وصيانة التطبيقات بكفاءة. بالنسبة لتعلم تطوير الموبايل، فإذا كنت تحب تطوير الواجهات الأمامية وتطبيقات الويب، قد يكون من الأفضل أن تستمر في تحسين مهاراتك في MERN stack وربما تتعلم أيضا React Native لتطوير تطبيقات الموبايل، أما ذا كنت مهتما بكيفية عمل التطبيقات بعد نشرها، وتحسين الأداء والأمان وإدارة البنية التحتية، فقد يكون من الجيد التوجه نحو DevOps، و بالتأكيد لا مشكلة في تعلم كلاهما إذا أحسنت تقسيم وقتك في اليوم و على المدى البعيد ستتقنهم.
  24. مرحبا @محمود السعيد عوف، تأكد من تثبيت بايثون و إضافته إلى المسار، و أيضا قبل تنفيذ الأمر الثاني يجب عليك تنفيذ هذا الأمر أولا: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py ثم جرب مرة أخرى.
  25. لا مشكلة في تثبيت كل من npm وpip على نفس الجهاز، حيث أن كل منهما مدير حزم للغات برمجة مختلفة، و إذا لم يكن لديك Python مثبتا على جهازك، قم بتنزيله من الموقع الرسمي، توجه إلى صفحة تنزيل Python، و اختر الإصدار المناسب لنظام التشغيل الخاص بك، و عادة ما يأتي pip مثبتا بشكل افتراضي مع Python. للتحقق مما إذا كان pip مثبتا بالفعل، افتح موجه الأوامر و أكتب: pip --version إذا كانت pip مثبتة، سترى إصدارها يظهر على الشاشة، و إذا لم تكن مثبتة افتح موجه الأوامر اكتب الأمر التالي لتحميل ملف get-pip.py: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py ثم قم بتشغيل الملف لتثبيت pip: python get-pip.py
×
×
  • أضف...