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

سمير عبود

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

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

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

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

    34

كل منشورات العضو سمير عبود

  1. مرحباً عبد الرحمن، لا تقلق كثيراً فمنصة مستقل تحفظ حقوق الطرفين (صاحب المشروع و المستقل) تأكد أن مبلغ ميزانية المشروع محجوز لدى الإدارة و هي الفاصل بينكما، وارد الحدوث ان يغيب أحد الطرفين لسبب ما، بإمكانك في هذا الحال الصبر قليلاً لمدة 48 ساعة خلال هذه المدة إذا لم يتواصل معك صاحب المشروع بإمكانك فتح تذكرة من خلال مركز المساعدة و شرح المشكلة لهم و سيقومون بالتدخل لتنبيه صاحب المشروع بعد مدة محددة من تاريخ التنبيه إن لم يتواصل معك سيقومون بإستلام المشروع و إن وجدو أنك قمت بإنهائه بالشكل المطلوب سيستلمونه فلا تقلق بخصوص هذا الأمر إن قمت بإنجاز كل شيء على الشكل المطلوب فتأكد أن حقك لن يضيع، قد تأخذ هذه الإجراءات بعض الوقت لذلك عليك بالصبر قليلاً. بالتوفيق.
  2. مرحباً عبد الواحد، تُسمى هذه الأشياء أنواع البيانات (Data types) و هي مفهوم موجود في لغات البرمجة يُمكننا من خلاله تحديد نوع المُتغير، بحيث يتم حجز مكان في الذاكرة على حسب نوع البيانات فلا يأخذ مساحة أكبر و لا يأخذ مساحة أقل، في قواعد البيانات لكل عمود في جدول ما يُمكننا تحديد نوع البيانات و هناك عدة أنواع بإمكانك الإطلاع عليها: أنواع البيانات في SQL لكل نوع من هذه الأنواع تابع يُقابله في إطار لارافيل على مُستوى الصنف Blueprint بإمكانك أيضا الإطلاع على التوابع الموجودة من خلال موسوعة حسوب: تهجير قاعدة البيانات في Laravel أو يُمكنك الإطلاع على التوثيق الرسمي. بالتوفيق.
  3. مرحباً أحمد، رُبما طريقة تحميلك للملف التنفيذي للبرنامج خاطئة او تقوم بتحميل ملف خاطئ، برنامج mamp يعمل على كل من نظام ويندوز و نظام ماك فرُبما قمت بتحميل نُسخة لا تعمل على نظامك، إليك طريقة التحميل: إذهب إلى الموقع الرسمي للبرنامج من خلال: صفحة التحميل ستجد أنه قد رشح لك نُسختين كما هو موضح في الصورة أدناه: قم بالضغط على النُسخة التي تُوافق نظامك و سيبدأ التحميل. بعد إنتهاء التحميل بإمكانك تثبيت البرنامج على الجهاز كأي برنامج آخر. بالتوفيق.
  4. مرحباً منصور، نعم بإمكانك نشر تطبيقك بالإستعانة بإستضافة 000webhost فهي تُوفر خطة مجانية بموقع واحد فقط و 300MB مساحة تخزين، بإمكانك إتباع أحد الشروحات على موقع يوتيوب و ستتمكن من نشر التطبيق بكل سهولة. بالتوفيق.
  5. مرحباً سيد حسن الموسوي، نعم بإمكانك ذلك، لكن في هذه الحالة سيُصبح لديك نُستختين من التطبيق، نُسخة تعمل على خادم heroku، و نُسخة ثانية تعمل على السيرفر المحلي، وهذا ما أفعله شخصياً أثناء التطوير أعمل على السيرفر المحلي و عند إنجاز بعض الخصائص أرفعها مُستودع الgithub و هذا المُستودع يكون مربوط مع تطبيق heroku و بالتالي يُمكن نشر الخصائص الجديدة و مُشاركتها مع العُملاء بكل سهولة. بالتوفيق.
  6. مرحباً @Sami Remili يُمكننا بإستخدام f-string عمل تنسيق أو سلسلة نصية بالإعتماد على قيمة مُتغيرات ثانية أو عمليات و هي إختصار ل format string و يُمكن من خلال المعقوفات {} الحصول على قيم مُتغيرات او عمليات حسابية لتكوين سلسلة نصية مُعينة. و إذا ما أخذنا المثال الذي أدرجته فإنه سيم إستخدام قيم المُتغيرات month و days لتكوين سلسلة نصية إذا كانت قيمة month هي June و قيمة days هي 30 سيكون المُتغير result يحتوي على القيمة: June has 30 days. و هذا مثال آخر: print(f"The sum of 1 + 2 is { 1+2 }") سيُعطي النتيجة: The sum of 1 + 2 is 3 بالتوفيق.
  7. مرحباً عبد الواحد، كل من سلة و اكسباند كارت تم بناؤهما على نظام ووردبريس بإستخدام إضافات تساعد في ذلك أما shopify فتم بناؤه بإستخدام إطار عمل Ruby on Rails كما تعلم فإن نظام الووردبريس تم بناؤه بلغة php، فبالتالي بإمكانك إنشاء مثل هذه المُنتجات بإستخدام نظم إدارة المُحتوى كووردبريس أو غيره. كما يُمكنك إنشاء المُنتج من الصفر بالإعتماد على لغات البرمجة و أطر العمل الخاص بها. و هناك عدة خيارات: لغة php و أطر العمل الخاصة بها ك laravel أو symfony ... لغة بايثون و إطار django لغة روبي و إطار Rails لغة جافا و إطار spring boot و العديد من الخيارات الأخرى لكن قبل التفكير في إنجاز مثل هذه المُنتجات عليك دراسة السوق و عليك إكتساب خبرة مُعتبرة في أحد هذه الأدوات. بالتوفيق.
  8. مرحباً @عبدالله ابوالخير هناك عدة طرق لحفظ التعديلات التي نقوم بها على مُستوى أدوات المُطور في المُتصفح غالباً ما نستخدم هذه الأدوات لعمل تعديلات تحتاج إلى رؤية النتيجة مُباشرة فبدل التنقل كثيراً من المتصفح إلى مُحرر الأكواد نختار التعديل مُباشرة في المتصفح و عندما نصل للنتيجة المطلوبة ننسخ الأكواد التي قمنا بها و نضعها في الملفات غالباً التعديلات لا تكون كثيرة مثلا كضبط تموضع عنصر مُحدد، ضبط قيم الحشوات و الحواف لعنصر ما، ضبط تجاوبية الصفحة، و في هذه الحالات التعديلات تكون قليلة يسهل نسخها إلى مُحرر الأكواد. هناك طرق ثانية يُتيحها المُتصفح ك workspaces و هذه الخاصية تسمح بإستخدام المُتصفح كIde أي سنتمكن من خلالها التعديل على الملفات مُباشرة في المتصفح لإستعمال هذه الخاصية نفتح أدوات المُطور ثم نتوجه إلى sources ثم Filesystem و بعدها نضغط بالزر الأيمن و نختار Add Folder to Workspace بعدها تختار مُجلد مشروعك بعدها ستظهر لك رسالة من المتصفح من خيارين للسماح او عدم السماح له للتعديل على الملفات بعد الضغط على زر السماح ستتمكن من التعديل على الملفات مُباشرةً : هناك طريقة أخرى تُسمى Local Overrides و لإستعمالها تتبع الخطوات التالية: فتح أدوات المُطور إنتقل إلى Source إنتقل إلى تبويب Overrides إضغط على Select Folder For Overrides حدد مُجلد المشروع الذي تريد حفظ التغييرات فيه. في الأعلى سيطلب من المتصفح صلاحية قراءة و التعديل على الملفات إضغط على زر السماح قم بالتعديلات التي تريد بالتوفيق.
  9. مرحباً @hsn_dv أظن أنك مُشترك في دورة تطوير تطبيقات الويب باستخدام لغة PHP و في هذه الدورة يوجد مسار من خلاله ستستطيع إنشاء موقع يُشبه إلى حد ما الشيء الذي تريده و هو مسار: تطوير شبكة اجتماعية لمشاركة الصور تشبه Instagram بإمكانك الدخول لأول درس من المسار و تستكشف ما الذي ستبنيه من خلال هذا التطبيق و ماهي المُميزات و الخصائص التي سنعمل عليها خلال دروس المسار. بالتوفيق.
  10. مرحباً، هناك عدة أجوبة مفيدة لك فقد قمتِ بطرح نفس السؤال سابقاً و قد أجابك الإخوة: بالتوفيق.
  11. مرحباً يحيى، يُمكنك إستخدام الدالة reversed الموجودة في اللغة لعمل المطلوب بهذا الشكل: fun main() { val sentence = "Yahia" val reversed = sentence.reversed() println("The reversed sentence is: $reversed") } و ستكون النتيجة بهذا الشكل: The reversed sentence is: aihaY بالتوفيق.
  12. مرحباً عبد الواحد، برأيي أنه يُمكن لشخص ما تعلم إطار لارافيل و ذلك بعد الإلمام ببعض أساسيات اللغة من دون التعمق في مواضيع كثيرة أو إنشاء مشاريع بإستخدام لغة php فقط من دون إطار (pure php) و هذه الأساسيات إن لم يفهمها لن يتمكن من فهم أبسط الأشياء في الإطار: المتغيرات و أنواع البيانات في اللغة الثوابت الشروط الحلقات المصفوفات بأنواعها الدوال التعامل مع النماذج و الملفات المتغيرات العامة المُحددة مُسبقاً في اللغة ( GLOBALS ،SERVER، REQUEST، POST ، GET، FILES ،COOKIE، SESSION ) الجلسات و الكعكات البرمجة الكائنية بلغة php مجالات الأسماء التعامل مع قواعد البيانات مثل MySql ... و بعض المفاهيم الأخرى هذه المواضيع يجب المرور عليها ليس فقط إذا أراد الشخص تعلم لارافيل بل أي إطار عمل آخر .
  13. جرب فتحها بمُتصفح آخر
  14. هل قمت بتحميل الملفات التي أرسلتها لك و جربتها؟ يُمكن أنك أخطأت في شيء ما فهي تعمل عندي و يتم عرض السعر 1000 في الصفحة بشكل عادي
  15. هذه ملفات تطبيقك يُمكنك تجربتها: th.zip يبدو أنك لا تحفظ التغييرات التي تُجريها على الملفات.
  16. مرحباً، سبب الخطأ هو أن أكواد الجافاسكربت حالياً يتم تنفيذها قبل أن تتحمل عناصر الصفحة و بالتالي عند البحث عن العُنصر ذو المُعرف price لم يكن موجود بعد على الصفحة و بالتالي فإن: document.getElementById("price") تعود ب null و لا يُمكن تطبيق الخاصية innerHTML على null لحل المُشكل هناك عدة الطرق من بينها أن نُخبر javascript أن تنتظر حتى تتحمل الصفحة و ذلك عن طريق الكود التالي: document.addEventListener("DOMContentLoaded", function(event) { // هنا نضع الأكواد }); أي بهذا الشكل: document.addEventListener("DOMContentLoaded", function(event) { //do work var myPrice = 1000; myNewprice = 900, myDiscont = myPrice - myNewprice + 500; //1000 - 900 + 500 = 600 document.getElementById("price").innerHTML = myPrice; }); و بهذا الشكل لن يتم تنفيذ شيفرات الجافاسكربت إلا بعد تحميل كافة عناصر الصفحة. الطريقة الثانية بنقل وسم الscript إلى قبل وسم الإغلاق <body/> : <body> <div id="price"> your div </div> <script src="test.js"></script> </body> و هذا هو المكان المُفضل لتضمين ملفات الجافاسكربت. لديك خطأ مطبعي آخر في هذا السطر: <link rel="staylsheet" href=file.css" type="text/css"> الصح: <link rel="stylesheet" href="file.css" type="text/css"> بالتوفيق.
  17. مرحباً @Thamer Alfaifi جيد بما أنك أردت التطبيق على ما تعلمته و هذا ما أنصحك به دائما طبق على ما تتعلمه حتى تتطور و تترسخ لديك المعلومات. سبب تحرك العناصر ليس أنها تتحرك و إنما الborder هو الذي يدفعها فهو لم يكن موجودا و عند تمرير الفأرة فوق العنصر يتم إضافته و بالتالي يأخذ مساحة 2px من كافة الجوانب مما يؤدي إلى دفع العناصر الأخرى و بالتالي يظهر لك و كأنها تحركت، و الحل بإضافة الborder في الحالة العادية و جعله شفاف و عند تمرير الفأرة أي عند ال hover نُغير اللون بهذا الشكل: ul li { overflow: auto; text-emphasis: none; display: inline; margin: 20px; padding: 5px 20px; border: 2px solid transparent; /* إضافة بوردر شفاف */ } ul li:hover{ border: 2px solid #fff; /* تغيير اللون */ background-color: fuchsia; } الأمر يعتمد على ما الذي تريد الوصول إليه أنت حالياً تستخدم صورة بيضاء و لون الكتابة أيضاً أبيض فيُمكنك إما تغيير الصورة إلى صورة مُتوافقة مع الأبيض أو تغيير اللون. ستتمكن بعد إتمام مسار أساسيات جافاسكربت من إنشاء موقع شخصي و ذلك في آخر مسار من مسار أساسيات تطوير الويب تطبيقات لِما تعلمته، هذه ملفات مشروعك : thamer.zip بالتوفيق
  18. مرحباً عبد الواحد، لارافيل هو أحد أطر العمل المبنية على لغة php و هي عبارة عن MVC Framework أي أنها تعتمد على معمارية MVC تُعتبر هذه الأخيرة نمط تصميم في مجال البرمجيات ككل فهو ليس خاص بلغة برمجة مُعينة او إطار عمل مُحدد، و هو إختصار ل Model, View, Controller و يُستخدم لفصل الإهتمامات و هدف مُحدد، Model هو النموذج الذي يتعامل مع قاعدة البيانات و في لارافيل تجد أن كل نموذج يتعامل مع جدول مُحدد و يُعتبر الواجهة البرمجية لهذا الجدول و عندما نريد ربط الجداول مع بعض لتكوين علاقات فإننا نستخدم هذا النموذج view: هو عبارة عن الواجهة او صفحة العرض التى يتعامل معاها المستخدم فى التطبيق مثل القوائم و حقول البحث و السليدات وغيرها controller : هو الوسيط بين view و model فهو يعالج العمليات المنطقية والطلبات القادمة (requests) وكذلك التعامل مع البيانات القادمة من قواعد البيانات لاخراجها على view فى صورة ملائمة فهو يتحكم و يربط بين العرض و النموذج فتلاحظ أن هذا النمط سهل علينا العملية و فصل الإهتمامات و نظم العملية أكثر، في لارافيل هذا النمط موجود و تم تسخيره لك لتستعمله فأنت لست مُجبر لتعلم ما الذي يجري خلف الكواليس و كيف تم تطبيق النمط لكن إن كنت مُهتم بذلك فيُمكنك مستقبلا البحث و التعمق أكثر حول تطبيق أنماط التصميم أو بناء إطار عمل بسيط على MVC بخصوص الMigration فهي بكل بساطة ملفات تُساعدنا على بناء و التعديل على جداول قاعدة البيانات و الأعمدة المُكونة لهذه الجداول قد يبدو الأمر مُعقّدا بعض الشيء، لكنه في الحقيقة بسيط، وبمُجرد أن تفهم الآلية ستُلاحظ أنه مفيد جدا يُمكنك الإطلاع على هذا المقال لمعلومات أكثر: بالتوفيق.
  19. مرحباً حنان، ال target هي خاصية تابعة لل event interface و تعود على الكائن الذي كان السبب في إطلاق الحدث بإمكانك الإطلاع على موقع مطورين موزيلا للحصول على معلومات و أمثلة حول هذه الأمور : Event.target كما يُمكنك الإطلاع على التوثيق الكامل لل event interface بكل الخاصيات و التوابع الموجودة من خلال هذا الرابط: Event هذه المواضيع قد لا تجدي لها شرح في دورات او مقاطع فيديو فالأحسن في هذه الحالة قراءة المقالات و أنصحك بالإطلاع على موقع javascript.info لأنه يشرح المواضيع بأمثلة بسيطة و أيضاً يقدم لك مهمات لحلها مع توفير الحل في حالة أردت الإطلاع على الحل. و هذا مثال عن event-delegation بالتوفيق.
  20. هناك بعض المواقع تُقدم شهادات مجانية لكن هذه الشهادات تُعطى لك لإتمامك مسار مُحدد فقط و لن تُفيدك في شيء، توجد مبادرة مليون مبرمج عربي إبحث عنها فممكن تُفيدك في شيء بالتوفيق
  21. مرحباً @belkaditouts لا تقلق فالرسالة التي تم إرسالها لك توحي أن طلبك قيد المُراجعة و سيتم إرسال كافة الخطوات اللازمة و توضيحها لك في أقرب وقت على نفس البريد الإلكتروني الذي إشتركت به، إن لم يتم ذلك يُمكنك دائماً الإستفسار عن الأمر من خلال مركز المساعدة في حسوب : https://help.hsoub.com/ ثم فتح تذكرة لمُشكلتك و سيتم الرد عليك في أقرب وقت، أتمنى لك التوفيق.
  22. مرحباً مُحمد، من أشهر الشهادات في لغة python هي تلك التي تُقدمها OpenEDG Python Institute و هي خمس شهادات لمبرمجي لغة بايثون و تبدأ من شهادة مبرمج مبتدئ إلى شهادة مبرمج خبير: 1- شهادة مبرمج بايثون مبتدئ | PCEP: معلومات عن الاختبار: رمز الإختبار PCEP-30-01. مدة الإختبار 45 دقيقة. يتألف الإختبار من 30 سؤال. نوع الأسئلة هو إختيار من متعدد. نسبة النجاح 70%. الإختبار باللغة الإختبار باللغة الإنجليزية. سعر الاختبار 59$. يتمحور الإختبار حول المفاهيم الأساسية في البرمجة بلغة البايثون. لمزيد من المعلومات يُمكنك زيارة هذا : الرابط 2- شهادة مشارك معتمد في لغة بايثون | PCAP: معلومات عن الاختبار: رمز الإختبار PCAP-31-02. مدة الإختبار 65 دقيقة. يتألف الإختبار من 40 سؤال. نوع الأسئلة هو إختيار من متعدد. نسبة النجاح 70%. الإختبار باللغة الإختبار باللغة الإنجليزية. سعر الإختبار 295$. يتمحور الإختبار حول أساسيات اللغة بالإضافة إلى بعض المفاهيم المتقدمة كالإستثناءات و التعامل مع المكتبات بالإضافة إلى مفاهيم البرمجة الكائنية بلغة بايثون، لمزيد من المعلومات يُمكنك زيارة هذا : الرابط 3- شهادة مبرمج بايثون محترف 1 | PCPP: معلومات عن الإختبار: رمز الإختبار PCPP-32-201. مدة الإختبار 65 دقيقة. يتألف الإختبار من 40 سؤال. نوع الأسئلة هو إختيار من متعدد. نسبة النجاح 70%. الإختبار باللغة الإنجليزية. سعر الإختبار 195$. يتمحور الإختبار حول البرمجة الكائنية بالإضافة إلى التعامل مع الملفات و المكتبات و قواعد البيانات و برمجة الواجهات الرسومية، لمزيد من المعلومات يُمكنك زيارة هذا : الرابط 4– شهادة مبرمج بايثون محترف 2 | PCPP: معلومات عن الإختبار: رمز الإختبار PCPP-32-201. مدة الإختبار 65 دقيقة. يتألف الإختبار من 40 سؤال. نوع الأسئلة هو إختيار من متعدد. نسبة النجاح 70%. الإختبار باللغة الإنجليزية. سعر الإختبار 195$. يتمحور الإختبار حول تثبيت و إنشاء المكتبات بالإضافة إلى أنماط التصميم و أساسيات التعامل مع قواعد بيانات MySql بلغة بايثون، لمزيد من المعلومات يُمكنك زيارة هذا : الرابط 5– مبرمج و خبير بايثون | CEPP: سوف تمنح هذه الشهادة بدون إجراء أي اختبار وذلك لأنك اجتزت جميع الاختبارات وحصلت على كافة الشهادات السابقة. لا أدري إن كانت هناك شهادات مجانية لكن يُمكن البحث عن مبادرة مليون مبرمج عربي فَلَرُبما تجد مسار يُناسبك. نصيحة مني لا تبحث عن الشهادات و إنما ابحث عن إكتساب الخبرة و تعلم ما يفيدك لبناء معرض أعمال و سيرة ذاتية قوية. بالتوفيق.
  23. مرحباً محمود، أظن أنك تستخدم PDO، بما أنك تريد الإستعلام عن عدد السجلات التي تم تخزينها في اليوم الحالي فلم لا تستخدم الدالة count التابعة للغة sql بالشكل التالي: <?php $checkLog = $conn->prepare("SELECT count(id) FROM logs WHERE DATE(date) = CURDATE() AND user = ?"); // prepare the query $checkLog->execute([$SUI]); $rowCount = $checkLog->fetchColumn(); // جلب عدد الصفوف // عمل الشرط المناسب حسب عدد الصفوف if($rowCount < 5) { echo "Still Yes"; }else{ echo "done today"; } المفروض إذا كان عدد الصفوف أصغر من 5 يتحقق الشرط و بالتالي يطبع عبارة still yes لكن إن كان أكبر من أو يُساوي 5 يطبع done today، بالتوفيق.
  24. مرحباً عبد الواحد، بإمكانك برمجة إرسال بريد إلكتروني فمُعظم اللغات تُوفر و تُسهل هذه الميزة سواء عن طريق إستخدام دالة موجودة في اللغة نفسها أو إستخدام مكتبة أو إضافة ففي ال php مثلا توجد دالة mail او إستخدام إضافة تحتوي على العديد من الخصائص ك PHPMailer ايضاً مُعظم أطر العمل تُسهل هذه الخاصية فمثلاً إطار عمل laravel يُوفر واجهة ثابتة للتعامل مع إرسال بريد: Mail و قد شرحنا هذه الميزة في دورة لارافيل في مسار تطوير موقع إعلانات مبوبة جزء التواصل مع المُعلن. بقية اللغات وأطر العمل الخاصة بها تُوفر أيضاً أشياء مُشابهة مثل البايثون و نود جي أس و غيرها ... مثال عن إستخدام دالة mail: <?php // The message $message = "Line 1\r\nLine 2\r\nLine 3"; // In case any of our lines are larger than 70 characters, we should use wordwrap() $message = wordwrap($message, 70, "\r\n"); // Send mail('caffeinated@example.com', 'My Subject', $message); ?> بإمكانك الإستفادة أكثر بالبحث عن طريق مُحرك البحث بإسم اللغة او الإطار الذي تعمل عليه يتبعها send email مثال: laravel send email و سيُرشح لك عدة مقالات و مقاطع مُفيدة ستُساعدك بالتوفيق.
  25. مرحباً عبد الله، معنى العرض المُستبعد هو أن المشروع الذي قدمت عليه هذا العرض تم توظيف مُستقل آخر عليه، بطبيعة الحال عند نشر مشروع جديد من عميل فإن مجموعة من العروض يتم تقديمها على هذا المشروع و في الأخير يتم توظيف شخص واحد وهو المُستقل الذي تم قبول عرضه، بقية العروض تُصبح تلقائياً مُستبعدة، هناك فترة مُحددة إن لم يتم فيها قبول أي عرض من طرف صاحب المشروع يتم إغلاق المشروع تلقائياً و يُمكن فتحه مرة ثانية من قبل العميل. مايؤثر عليك كمُستقل هو التقييمات التي تتلقاها ( التقييم الكلي بالإضافة إلى التقييمات التفصيلية) و أيضاً مُعدل إكمالك للمشاريع (كل ماكان كبير كل ما كان أحسن) إضافة إلى الأوسمة التي تتلقاها من المنصة ( مُستقل مُلتزم، مُستقل مُميز .. ) هل تعلم ما معنى أن العروض المُستبعدة 100% معناه أن كل العروض التي قدمتها استبعدت، و في هذه الحالة لن يحدث شيء ما دام أنك تستطيع التقديم على مشاريع. هناك 5 حالات للعروض الخاصة بك: بانتظار الموافقة: مشاريع قدمت عليها و لم يتم توظيف اي مستقل عليها و لم يتم إغلاقها. قيد التنفيذ: التي قُبلت فيها و تعمل عليها و لم تُنهيها. المكتملة: عملت عليها و أكملتها المستبعدة: التي قدمت عليها و تم توظيف مستقلين غيرك ليعملو عليها. مغلقة: تم إغلاقها لتجاوز الفترة المُحددة و عدم توظيف أي مُستقل عليها. ولكل حالة نسبة من العدد الإجمالي للعروض التي قدمتها ككل. بالتوفيق.
×
×
  • أضف...