-
المساهمات
2489 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
13
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Chihab Hedidi
-
تخصص تطوير الويب لا يزال له مستقبل قوي، خاصة مع تزايد الاعتماد على الإنترنت والحاجة المستمرة للمواقع والتطبيقات الإلكترونية، و الكثير من الشركات والمؤسسات تحتاج إلى مواقع وتطبيقات متقدمة لخدمة عملائها، سواء كان ذلك في التجارة الإلكترونية، الخدمات المالية، أو حتى التطبيقات الحكومية والتعليمية، و لكن مطلوب من مطوري الويب الاستمرار في تعلم أدوات ولغات جديدة وإطارات العمل المتقدمة. أما بخصوص التخصصات البرمجية المطلوبة حاليا وفي المستقبل، فأغلب الشركات متوجهة لمجال الذكاء الاصطناعي وتعلم الآلة لأنه سيستمر في النمو والتوسع في قطاعات كثيرة، أما أغلب التخصصات الأخرى فهي متوفرة و لكن يدرجات متفاوتة و يتعين عليك دائما الإطلاع على التخصصات المطلوبة في المكان أو الدولة التي أنت فيها في حالة كنت تريد العمل هناك.
-
يمكنك إنشاء واجهة توفر إنشاء كائنات لعائلات متعددة من الكائنات المرتبطة أو التابعة، دون الحاجة إلى تحديد فئاتها المحددة، و الفكرة الأساسية هي أن يكون لديك عدة مصانع مختلفة، كل مصنع يقوم بإنشاء مجموعة من الكائنات المتوافقة مع بعضها البعض، لنفترض أن لدينا منتجين كرسي و طاولة، ونريد مصنعين واحد يصنع الأثاث الحديث وآخر يصنع الأثاث الكلاسيكي، لذا سيتعين علينا إنشاء الواجهات بهذا الشكل: 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) و يمكنك أن تطلع أكثر على كيف يعمل بالضبط من خلال هذه المقالة :
- 3 اجابة
-
- 1
-
-
لدينا هنا حلقتان متداخلتان، بالنسبة للحلقة الخارجية ستعمل 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
-
يعتمد القرار على الاحتياجات المحددة وحجم البيانات التي يجب معالجتها، حيث يعتبر Dynamics 365 خيار شامل لإدارة الأعمال يتضمن أدوات لإدارة المحاسبة، الموارد البشرية، وإدارة العملاء، مما يجعله مناسبا لمكاتب المحاماة الكبيرة التي تحتاج إلى إدارة عملياتها المختلفة في منصة واحدة، ولكن يعتمد D365 بشكل أساسي على نموذج الاشتراك الشهري، مما قد لا يناسب الجميع إذا كنت تبحث عن حل لمرة واحدة، في المقابل يعد Power BI أداة قوية لتحليل البيانات وإنشاء التقارير المرئية، وهو مناسب في حال كان التركيز الرئيسي على التحليل وليس على إدارة العمليات اليومية، و يوفر نسخة مجانية للاستخدام، ولكن النسخ الأكثر تقدما تتطلب اشتراك شهري، لذا حاول أن تحدد هدفك و تربطها مع مميزات كل برنامج لتستطيع الإختيار بينهما.
-
بالنسبة للتمارين والواجبات بعد كل درس، فالأكاديمية تركز على التفاعل العملي أثناء الشرح، ثم تنتقل إلى قسم التطبيقات حيث يتم تثبيت المفاهيم بشكل أعمق، و لكن إذا كنت ترغب في الحصول على تمارين إضافية أو تطبيقات أكثر بعد كل درس، يمكنك دائما طلب ذلك في التعليقات أسفل فيديو الدرس، و سيتكفل المدربين بتزويدك بتمارين إضافية للمساعدة في تعزيز الفهم وتطوير مهاراتك بشكل أكبر.
-
لا يوجد خيار تحديث مباشر داخل البرنامج نفسه، حيث تحتاج إلى تثبيت الإصدار الأحدث بشكل منفصل، يمكنك هذا عبر الإنتقال إلى الموقع ل Visual Studio الرسمي لتحميل الإصدار الأخير، ثم اختر Visual Studio 2022 من بين الخيارات المتاحة بناء على احتياجاتك، و بعد تحميل المثبت، شغله واتبع التعليمات لإعداد بيئتك التطويرية، و يمكنك اختيار الحزم والميزات التي تحتاجها. بعد تثبيت Visual Studio 2022 يمكنك فتح المشاريع التي تم إنشاؤها في Visual Studio 2013، لكن قد يطلب منك Visual Studio تحديث ملفات المشروع لتتوافق مع الإصدار الجديد، وهو ما يمكنك الموافقة عليه، و أيضا إذا كنت ترغب في الاحتفاظ بالإصدار القديم لأغراض معينة، يمكنك ذلك حيث إن Visual Studio 2022 سيعمل بجانب Visual Studio 2013 دون إزالته.
-
مرحبا مروان، ستجد أسفل فيديو الدرس مكان مخصص لوضع التعليقات هناك، أرجوا وضع تعليقك في تلك الخانة، أما هنا فيمكنك طرح أسئلتك العامة و التي تكون خارج مجال الدروس.
-
نعم يمكنك ذلك في جامعة هارفارد، حيث يتم تدريس الكورس هناك، ومع ذلك عليك التأكد من التقديم على الكورس من خلال الجامعة نفسها، والتأكد من متطلبات القبول، مثل التسجيل في برامج معينة أو الحصول على تأشيرة دراسية إذا كنت طالبا دوليا. و بالتأكيد المعلومات الرسمية ستحصل عليها من موقع الجامعة أو عبر التواصل مع مكاتب القبول.
- 2 اجابة
-
- 1
-
-
يعتبر __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".
- 1 جواب
-
- 1
-
-
يمكنك استخدام عدة طرق، و إحدى الطرق الشائعة هي استخدام ميثود __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، يتم إنشاء الكائن، وإلا يتم إرجاع النسخة الموجودة. بهذا الشكل، يتم التأكد من أن أي محاولة لإنشاء كائن جديد من الفئة ستعيد النسخة نفسها الموجودة بالفعل.
- 2 اجابة
-
- 1
-
-
الحادثة معروفة حيث كانت المشكلة الرئيسية في نظام التحكم الآلي للطيران، و هذا النظام كان مصمما لضبط زاوية الطائرة أثناء الطيران لمنعها من الانحدار أكثر من اللازم.، و الخطأ حدث عندما تلقى النظام بيانات غير صحيحة من جهاز استشعار زاوية الهجوم الذي يحدد زاوية الطائرة بالنسبة للهواء المتدفق، و بسبب هذه البيانات الخاطئة، قام النظام بخفض مقدمة الطائرة بشكل غير مبرر، وهو ما أدى إلى فقدان الطيارين السيطرة على الطائرة وتحطمها في الحالتين. في وقتنا الحالي يمكن الإعتماد على تحليل البيانات، حيث يمكن تطوير خوارزميات تعمل على رصد الأنماط غير الطبيعية في البيانات الصادرة من الحساسات، إذا تم اكتشاف بيانات غير منطقية، يتم تجاهل المدخلات المشبوهة والتعامل مع البيانات البديلة.
- 2 اجابة
-
- 1
-
-
في لغة php لا يتم استخدام الأقواس {} لإنشاء الكائنات مثلما في جافاسكريبت، لذا فإن الطريقة الوحيدة لإنشاء كائنات في php هي باستخدام الكلمة المفتاحية new. بالنسبة ل Facades هي نمط تصميم يستخدم في البرمجة لتقديم واجهة مبسطة لمكتبة أو مجموعة من الكائنات المعقدة، بحيث يمكنك الوصول إلى الوظائف المعقدة أو العمليات المتعددة من خلال واجهة بسيطة ومباشرة، و في php يستخدم هذا المفهوم بشكل شائع في إطار العمل Laravel، حيث يسهل الوصول إلى العديد من الخدمات والأنظمة الداخلية مثل قواعد البيانات، الجلسات، وغيرها، فمثلا هنا: Cache::put('key', 'value', $minutes); $value = Cache::get('key'); Cache هو Facade يوفر طريقة للوصول إلى خدمة التخزين المؤقت بشكل بسيط،بدلا من الحاجة إلى إنشاء كائنات وتكوين الخدمات يدويا، يمكنك فقط استخدام هذا الـ Facade للوصول إلى الخدمة مباشرة.
-
عند استخدام الكلمة المفتاحية 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 تستخدم لإنشاء كائن يعتمد على صنف معين وتقوم بتشغيل دالة البناء عند إنشاء الكائن، أما الأقواس تستخدم لإنشاء كائنات مباشرة بدون الحاجة إلى صنف وتتيح لك تعيين الخصائص والقيم مباشرة.
- 4 اجابة
-
- 1
-
-
ليس هناك ما يمنع من استخدام بايثون لتطوير تطبيقات الهواتف، ولكن هناك تحديات عديدة تتعلق بالأداء، التكامل، والدعم. لهذا السبب، يميل المطورون لاستخدام أدوات أخرى مثل JavaScript وأطر العمل المخصصة لهذا الغرض، و لكن أعتقد أنه من الممكن أن نرى تطورا أكبر في المستقبل في استخدام بايثون في هذا المجال مع استمرار ظهور أطر عمل جديدة .
- 4 اجابة
-
- 1
-
-
نعم من الممكن الآن برمجة تطبيقات أندرويد وiOS باستخدام لغة بايثون، كما يمكن استخدام Flet لإنشاء واجهات مستخدم تفاعلية للتطبيقات التي تعمل على متصفح الويب أو تطبيقات سطح المكتب، و يعتبر دعم التطبيقات المحمولة ما زال قيد التطوير والتجريب، مما يعني أنه لازال هناك بعض المشاكل في التطوير و التناسق مع إصدارات الأندرويد و لكن ليس هذا هو إطار العمل الوحيد المتوفر، فهناك أيضا إطارات عمل أخرى مثل Kivy وBeeWare وPySide، التي توفر أدوات لتطوير تطبيقات أندرويد وiOS باستخدام بايثون، لكن بعض هذه الإطارات قد تتطلب بعض العمل الإضافي لتحقيق تجربة مستخدم مميزة وملائمة لكل منصة لذلك لم تلقى الرواج الكبير مثل ما حدث مع flutter و غيرها من اللغات و أطر العمل.
- 4 اجابة
-
- 1
-
-
العديد من الخوادم التي تستضيف تطبيقات الويب تستخدم أنظمة تشغيل Linux نظرا لاستقرارها وأمانها وكفاءتها العالية، لذا إذا كنت تعمل على مشروع يستخدم MERN stack، فمن المحتمل أن تحتاج إلى نشر تطبيقك على خادم يعمل بنظام Linux، و أيضا تعلم Linux يسمح لك باستخدام أدوات مثل SSH للوصول إلى الخوادم عن بعد وإدارتها، و هذا يمكن أن يشمل تثبيت وإعداد البرامج، إدارة قواعد البيانات، وإعداد الأمان والنسخ الاحتياطي. كما أن معظم أدوات تطوير البرمجيات مفتوحة المصدر، مثل Node.js وMongoDB، تعمل بشكل جيد مع Linux، فبيئة Linux غالبا ما تكون الخيار الأول للمطورين الذين يعملون مع البرمجيات مفتوحة المصدر، لذا فتعلم إستخدام ليس بالخسارة أبدا فأغلب المبرمجين يعتمدون على هذا النظام وبإستخدامه كثيرا ستلاحظ الفرق بينه و بين ويندوز
-
ليس عليك أن تكون مطورا في DevOps لتكون مطور MERN stack ناجح، لأن DevOps هو مجال مختلف يهتم بتحسين العمليات وتكامل البرمجيات والنشر الآلي وإدارة البنية التحتية، ولكن تعلم DevOps يمكن أن يكون مفيدا إذا كنت تعمل في شركة صغيرة أو ناشئة حيث يتوقع منك أن تكون متعدد المهام، أيضا فهم أساسيات DevOps يمكن أن يحسن من قدرتك على نشر وصيانة التطبيقات بكفاءة. بالنسبة لتعلم تطوير الموبايل، فإذا كنت تحب تطوير الواجهات الأمامية وتطبيقات الويب، قد يكون من الأفضل أن تستمر في تحسين مهاراتك في MERN stack وربما تتعلم أيضا React Native لتطوير تطبيقات الموبايل، أما ذا كنت مهتما بكيفية عمل التطبيقات بعد نشرها، وتحسين الأداء والأمان وإدارة البنية التحتية، فقد يكون من الجيد التوجه نحو DevOps، و بالتأكيد لا مشكلة في تعلم كلاهما إذا أحسنت تقسيم وقتك في اليوم و على المدى البعيد ستتقنهم.
- 1 جواب
-
- 1
-
-
مرحبا @محمود السعيد عوف، تأكد من تثبيت بايثون و إضافته إلى المسار، و أيضا قبل تنفيذ الأمر الثاني يجب عليك تنفيذ هذا الأمر أولا: curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py ثم جرب مرة أخرى.
-
لا مشكلة في تثبيت كل من 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
-
يمكنك إضافة الكود إلى القالب الخاص بالمدونة في الجزء الذي يدعم تشغيل الأكواد البرمجية مثل JavaScript، من داخل إعدادات بلوجر قم بالذهاب إلى قسم "التخطيط" أو "المظهر"، و اضغط على "المظهر" في القائمة الجانبية، ثم اختر "تحرير HTML" و ابحث عن الوسم </body> الذي يشير إلى نهاية جسم الصفحة، و أضف الكود الخاص بك مباشرة قبل وسم </body>. و أيضا تأكد من أن نموذج التعليقات في مدونتك لديه المعرف (id) comment-form كما في الكود، إذا كان له معرف مختلف، قم بتغيير #comment-form في الكود إلى المعرف الصحيح.
- 3 اجابة
-
- 1
-
-
بالنسبة لويندوز يمكنك مشاركة المجلدات عبر الشبكة، فقط قم بالنقر بزر الماوس الأيمن على المجلد الذي تريد مشاركته، ثم اختر "خصائص" ثم "مشاركة" بعدها اختر "مشاركة متقدمة" وأدخل الأذونات المناسبة. أما إذا تريد مشاركتها على أجهزة ليست في نفس الشبكة يمكنك إعداد خادم FTP على جهاز الكمبيوتر الخاص بك باستخدام برامج مثل FileZilla Server، و هذا سيتيح للأشخاص الآخرين الاتصال بجهازك وتنزيل الملفات، أو يمكنك إعداد خادم ويب محلي باستخدام برامج مثل XAMPP أو WAMP، و يمكنك وضع الملفات في مجلد الجذر لخادم الويب وتوفير الوصول إلى هذه الملفات عبر متصفح الويب. و أيضا استخدام خدمات التخزين السحابية يعتبر حل في هذا الحالة و هذا برفع الملفات إلى هذه الخدمات مشثل جوجل درايف ومشاركة الروابط مع الأشخاص الذين تريدهم، يعني أن هناك العديد من الطرق أنت فقط إختر الطريقة التي تناسبك.
- 3 اجابة
-
- 1
-
-
عند تعلم كل مكون بشكل منفصل، يمكنك التركيز على فهم كل جزء بمفرده دون تشتيت الانتباه بأمور أخرى، و هذا يساعدك على بناء معرفة قوية بالأساسيات التي ستحتاج إليها لاحقا عند العمل على مشاريع أكبر وأكثر تعقيدا، كما أن التعلم المنفصل يساعدك على استكشاف كل تقنية أو أداة بشكل أعمق، وفهم مزاياها وعيوبها ومتى تكون مناسبة للاستخدام، فإذا بدأت مباشرة بمشروع كبير، فقد لا تمتلك الوقت أو الفرصة لفهم تفاصيل كل أداة بشكل كاف، و هذا ما نحاول تجنبه في الدورات فالبدأ بالمشروع بشكل مباشر لن يغطي كل المفاهيم البرمجية و بالتالي عند معرفتك للأساسيات ستستطيع مع مرور الوقت تطبيقها كلها على حسب المشروع. و لا يخفى عليك أن التعلم بهذه الطريقة يمنع الشعور بالإرباك الذي قد ينشأ عند محاولة التعامل مع عدة تقنيات أو أدوات جديدة في آن واحد ضمن مشروع واحد، فعندما تتعلم كل مكون على حدة، تكون جاهزا بشكل أفضل لدمجها معا في وقت لاحق، و يمكنك تجربة ذلك بحيث تبدأ بالجزء الخاص ببناء المشروع و ستجد أن الأمر صعب و المفاهيم غامضة لأنه لن يكون لديك أي فكرة عليها.
- 3 اجابة
-
- 1
-
-
ستساعدك الأكاديمية بفريق محترف من أجل توجيهك للحصول على عمل في هذا المجال، فبعد اتمامك لأي من الدورات الموجودة في الأكاديمية وبعد اجتيازك الامتحان بنجاح ثم تطبيق إرشادات المختصين لتحسين سيرتك الذاتية وملفاتك الشخصية على مواقع العمل الحر، سيساعدك هذا الأمر في إيجاد عمل بشكل أسرع، كما يمكنك أن تبحث عن عمل من خلال مواقع العمل الحر كذلك مثل مستقل وخمسات. يمكنك أن تطلع أكثر على هذا المقال لتأخذ فكرة بشكل أفضل:
- 1 جواب
-
- 1
-
-
يمكنك ذلك باستخدام بعض التعديلات على الكود وإضافة بعض التعليمات البرمجية، لكن بلوجر لا يدعم بشكل مباشر هذه الميزة من خلال إعداداته، لذا ستحتاج إلى استخدام JavaScript أو بعض الحلول البرمجية المخصصة، حيث يمكنك إضافة كود JavaScript إلى قالب مدونتك للتحقق مما إذا كان المستخدم قد قام بالتعليق خلال الـ24 ساعة الماضية، سيقوم هذا الكود بتخزين توقيت آخر تعليق للمستخدم في متغيرات الجلسة أو محليا وتحديثها وفقا لذلك، و يكون الكود بهذا الشكل: document.addEventListener('DOMContentLoaded', (event) => { const lastCommentTimeKey = 'lastCommentTime'; const commentInterval = 24 * 60 * 60 * 1000; // 24 hours in milliseconds function canComment() { const lastCommentTime = localStorage.getItem(lastCommentTimeKey); if (!lastCommentTime) { return true; } const currentTime = new Date().getTime(); return (currentTime - lastCommentTime) > commentInterval; } function updateCommentTime() { localStorage.setItem(lastCommentTimeKey, new Date().getTime()); } if (document.querySelector('#comment-form')) { const form = document.querySelector('#comment-form'); if (!canComment()) { form.addEventListener('submit', (event) => { event.preventDefault(); alert('تستطيع التعليق مرة واحدة فقط كل 24 ساعة'); }); } else { form.addEventListener('submit', () => { updateCommentTime(); }); } } }); و تأكد من أنك قمت بإدراج هذا الكود بشكل صحيح ضمن القالب الخاص بك، وأنك قد اختبرت الكود جيدا للتأكد من عمله كما هو متوقع.
- 3 اجابة
-
- 1
-