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

عمار معلا

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

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

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

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

    3

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

  1. كما تحدث الاستاذ عمر فدورة علوم الحاسوب هي دورة تضعك على بداية الطريق في حال عدم معرفتك لإي شيء في البرمجة أو كنت مبتدئ وتريد أن تتعلم أكثر حول كتابة كود افضل وتحليل كودك وهل هو الأفضل أم لا وكذلك تعلم الامور الاساسية التي تخص عمل أنظمة التشغيل والسيرفرات واجراء الاتصال بينها، اذا لا غنى عنها في بداية الطريق يوجد عدة اختصاصات تستطيع العمل بها ولكن تحتاج منك تعلم لغة برمجة واتقانها والقيام بكتابة مشاريع بها مطور واجهة الامامية يختص بتطوير الواجهة التي يراها المستخدم مثل واجهة أكاديمية حسوب ولتحقيق ذلك يجب تعلم htm css javascript ثم احتراف إطار عمل مثل React js او vue js أو Angular مطور الواجهة الخلفية يختص بتطوير العمليات التي تحصل على الموقع ولا يراها المستخدم من تعامل مع database والتخزين والحذف والاضافة والتعديل وما إلى ذلك وهنا يمكنك تعلم أحد الاطر التالية node js, php laraval,python django لتحقيق المطلوب مطور تطبيقات موبايل يختص بتطوير التطبيقات التي تستخدم على اجهزة الموبايل وهنا يجب تعلم React Native أو Flutter مطور مواقع خاصة بإدارة الاعمال والمشاريع وهنا يجب أن تتعلم إطار العمل في بايثون Odoo مع javascript لتحقيق المطلوب
  2. وعليكم السلام ورحمة الله، في إي دورة تقوم بالتسجيل بها في الأكاديمية ، يوجد دائما مدخل للدورة ومقدمه عنها ابدأ دائما بالمدخل والمقدمة لتتعرف على الدورة وماذا سوف تتعلم، وبعد ذلك يجب عليك ان تقوم بحضور الدورة بنفس الترتيب الموضوعة به لأنه تنطلق من الاساسيات وصولا إلى المراحل المتقدمة وتستطيع كذلك قراءة التعليقات السابقة على الدروس لتستفاد من أسئلة الطلاب الاخرين لأنه من الممكن أن يخطر لك نفس التساؤل، كذلك تستطيع طرح الأسئلة في التعليقات وسوف نقوم بحل مشكلتك بأسرع وقت إن شاء الله، يمكنك التعرف على الأسئلة بكيفية الوصول إلى الدورات والتواصل مع المدربين وما إلى ذلك من خلال هذا الرابط https://support.academy.hsoub.com/
  3. وعليكم السلام، لا انصح باستخدام Anaconda هو يأخذ حجم كبير من العمليات على الحاسب، بدلا من ذلك قم بتنزيل vs code من هنا ثم بعد ذلك قم بتنزيل نسخة بايثون ولتكن بايثون 3.11 من هنا سوف تظهر لك الصورة التالية عند فتح الرابط والنزول إلى اسفل الصفحة اضغط مكان السهم وسوف يبدأ في التحميل بعد ذلك اضغط على البرنامج الذي تم تحميله ستظهر لك واجهة قم بالضغط على install حتى يتم تثبيت الاصدار، بعد ذلك يمكنك فتح vs code بعد تحميله ستظهر لك الصورة التالية قم بالضغط على new terminal اضغط بعد ذلك في الاسفل على السهم الازرق بعد ذلك قم بوضع التالي في terminal لإنشاء بيئة افتراضية بالاسم env (تستطيع تغييره لما تريد وسوف تختلف الاوامر اللاحقة بالاسم) خاصة بمشروعك بحيث تقوم بإضافة مكتبات عليها مثل numpy pandas ..الخ python -m venv env بعد ذلك قم بتفعيل البيئة عبر الاتي env\Scripts\activate # تستطيع تغيير اسم البيئة في أول الامر سوف يظهر لك الاتي عند التفعيل الصحيح في جزء الترمنال انا قد سميت البيئة الخاصة بي venv انت سوف تظهر لك env او الاسم الذي تختاره الان تستطيع تثبيت اي مكتبة عبر الاتي ولتكن numpy pip install numpy تستطيع ايضا قراءة هذا المقال المفيد والتوسع اكثر وحل مشاكلك
  4. وعليكم السلام ورحمة الله تستطيع قراءة الحلول الموجودة في هذا السؤال فهي مطابقة لمشكلتك ولكن حتى لو قمت بحل مشكلة اللغة العربية لن تظهر الكلمات مثل هذه الكلمات سوف تظهر معكوسة
  5. تماما لا تشغل بالك بهذه المهمة فبايثون تقوم بإدارة الذاكرة بدلا عنك
  6. في البداية يجب عليك معرفة أن بايثون مبنيه على سي بلس بلس مع ذلك فأن بايثون تقوم بإدارة الذاكرة تلقائيا، بينما في سي بلس بلس يتعيين على المبرمج إدارة الذاكرة يدويا في بايثون، يتم استخدام مفهوم (Garbage Collection) وهذ يعني أن الذاكرة التي لم تعد مستخدمة سيتم تحريرها تلقائيًا دون تدخل المبرمج، لاحظ الكود التالي b = 10 b = 50 عندما يتم تغيير قيمة المتغير "b" إلى 50 في السطر، ستتم إزالة القيمة السابقة 10 من الذاكرة تلقائيًا في سي بلس بلس، يتعين على المبرمج إدارة الذاكرة يدويًا كما ذكرت، يقع على عاتق المبرمج تخصيص الذاكرة وتحريرها يدويًا، على سبيل المثال، في الكود التالي: int main() { int *pointer = new int; // تخصيص ذاكرة *pointer = 10; delete pointer; // تحرير ذاكرة return 0; } في التعليق الأول يتم تخصيص ذاكرة جديدة باستخدام "new" عبر مفهوم المؤشرات حيث أن int يستهلك 4 بايتات من الذاكرة وبالتالي تم تخصيص هذه المساحة لنضع فيها القيمة 10 وبعدها تم تعيين قيمة المؤشر إلى 10 ثم في التعليق الثاني تم تحرير الذاكرة باستخدام "delete" يدويًا من قبل المبرمج، مما يعني أن الذاكرة التي تم تخصيصها لتخزين القيمة 10 ستتم تحريرها. وهذا هو الفرق بينهما في إدارة الذاكرة فبايثون تقوم بإدارة الذاكرة تلقائيًا دون تدخل المبرمج مما يجعلها أكثر سهولة للاستخدام وأقل عرضة لأخطاء إدارة الذاكرة مقارنة بسي بلس بلس التي يعتمد إدارة الذاكرة لديها على المبرمج تستطيع قراءة هذا المقال عن إدارة الذاكرة في لغة c
  7. ما طلبته في التحويل السابق، يتطلب وقت ليس ببسيط لتجهيز حل يعمل مع التحويل الخاص بك لأن الملف الذي وضعته يحوي على عمود يحوي 4 اعمدة و كذلك 4 اعمدة تحوي 4 اعمدة متماثلة هذا يعني سوف تقوم بتفكيك قيم هذه الأعمدة، حيث يجب أن تقوم بتعريف قاموس بقيم فارغة وهذا القاموس سوف نضع في جزء المفتاح اسم المادة وفي جزء القيم مصفوفة تحوي اربع قيم خاصة بأعمال السنة والنهائي والمجموع و التقدير وتقوم بفعل ذلك لكل دور ثم بعد الحصول على هذه المعلومات تستطيع بناء ملف excel من جديد ولكن كما ذكرت سوف يستغرق منك ذلك وقت ليس صغير
  8. وعليكم السلام، بالإضافة إلى ما تحدث عنه الأستاذ مصطفى، سوف تعلم الفرق الحقيقي بين production و developement عند الدخول في سوق العمل فمعظم الشركة تعتمدان على بيئتين أو ثلاث في حال وجود مرحلة الاختبار في حال developement هذه البيئة تكون مخصص للمطورين الموجودين في الشركة وتكون على سيرفر مستقل ومن الممكن أن تكون مشتركة مع بيئة الاختبار أو منفصلة عنها ولكن في الاغلب الاوقات تكون بيئة التطوير والاختبار على سيرفر واحد لتوفير التكاليف في حال production هذه البيئة يتم فيها إطلاق المنتج النهائي للخدمة وتكون على سيرفر مستقل وفي حال قمنا بتسمية سيرفر فمن الممكن أن تكون على اكثر من سيرفر وهذه السيرفرات مربوطة في نظام واحد في حال تعطل احدها يستطيع الاخر الرد على المستخدم ولكن يطلق عليها كمجموعة سيرفر وهنا تأتي فائدة node envirement حيث يوجد لكل بيئة متغيرات خاصة بها ونجد ذلك بشكل صريح في حال database، الاكيد أن database الخاصة ببيئة التطوير developement منفصلة عن بيئة الانتاج production من خلال اسم المستخدم كلمة السر وما إلى ذلك ولكن أنت لا تقوم بتعيين هذه القيم بشكل يدوي في كل مرة يتم وضع الكود فيها على بيئة التطوير والانتاج تقوم بوضع هذه القيم في ملفين مثلا الاول الخاص بالتطوير developement والاخر خاص بالانتاج production وتستطيع أن تضع في نفس الملف قيمة توضح على إي بيئة نعمل ثم عند وضع الكود في بيئة التطوير يقوم الكود بقراءة هذه القيم من الملف الخاص به باستخدام process.env وكذلك بالنسبة لبيئة الانتاج process.env وهذا يجعل مرحلة التطوير والانتاج اكثر عملية واقل تضيع للوقت
  9. وعليكم السلام ورحمة الله كما تحدث الاستاذ عدنان بالإضافة ليس اسماء المتحولات والمتغيرات بل يشمل إيضا اسماء التوابع وكذلك الكائنات المأخوذه من الصفوف وكذلك اسماء المكتبات المستخدمة ضمن الكود الخاص بك import numpy def get(x): return x a = 5 b = "Hi" c = [1, 2, 3, 4] names = dir() #طباعة الخرج print(names) #الخرج ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b', 'c', 'get', 'numpy'] ما يهمنا الجزء الاخير حيث نلاحظ وجود المتحولات a,b,c وكذلك اسم التابع get وكذلك اسم المكتبة numpy مع ذلك نحن كمبرمجين لا نقوم باستخدام جميع ما هو متوافر باللغة البرمجية بل نستخدم حسب الحاجة وهنا ك dir من الممكن أن لا يكون لها اي استخدام على مستوى الكود لأنها لا تقدم إضافة كبيرة
  10. وعليكم السلام ورحمة الله، يجب عليك توفير عينه بسيطة للملف الأول، إي قم برفع الملف إلى هنا لكي نستطيع مساعدتك في توفير كود لحل المشكلة
  11. الصورة لا تفتح، ارجو منك إدرج صورة صحيحة
  12. من الممكن أن تواجهه مشاكل في تفعيل whatsapp بالنسبة ل twilio وعند العمل في الشركة تقوم الشركة بتفعيل حساب تجاري تستطيع استخدامه لذلك في حال كنت تقوم ببناء مشروع بهدف أن تعرضه في مشاريعك إلى github قم بذلك مع telegram بدلا من whatsapp فهو يحقق نفس الفكرة التي تريد تحقيقها في whatsapp وتستطيع التعامل مع ذلك من خلال بوت والتحكم به من خلال python-telegram-bot
  13. لا يوجد اختلاف بالنسبة للاساسيات في بايثون حيث أن list هي نفسها array ولكن في بايثون تمت تسميتها list اما الفرق بينها وبين اللغات الاخرى وعلى سبيل المثال جرب أن تقوم بتعبئة مصفوفة في لغة سي بلس أو جافا بعناصر مختلفة لا يمكنك ذلك حيث لا يمكن وضع سلسلة نصية مع عدد صحيح مع عدد حقيقي [1.5, 1, "111", 'c'] # هذا خاطئ في سي بلس أو جافا في حين تستطيع القيام بذلك بكل سهولة في بايثون حيث تقبل list عناصر مختلفة كالمثال السابق [1.5, 1, "111", 'c', [1, 2, 3]] # هذا صحيح في بايثون حيث تقبل عناصر مختلفة في النوع
  14. تستطيع ذلك بكل سهولة عبر نفس الكود السابق مع إضافة البداية 10 عبر وضع الاتي language_list = df['A'][10:].tolist() # حددنا اسم العمود ضمن المتحول الذي خذنا فيه البيانات print(language_list) # طباعة النتيجة لاحظ فقط وضعنا اسم العمود ضمن قوسين مصفوفة ثم قوسين مع وضع 10 ثم نقطتين إي نعني بذلك من السطر العاشر وحتى النهاية بالنسبة للعمود A
  15. اقرا الرد السابق في اخره لقد شرحت ذلك عليك فقط تغيير اسم العمود إلى اسم العمود لديك
  16. لا يوجد فقط مكتبة واحدة تستخدم في حل مشكلة ضخمة مثل التقاط الصور الثقوب السوداء ف numpy مخصصة لإجراء العمليات الحسابية ومعالجة البيانات واجراء العمليات على المصفوفات لا تستطيع استخدام مكتبة معرفة في بايثون في لغة برمجة أخرى، كل لغة لها مكتباتها الخاصة بها
  17. اختيار موفق في استعمال pandas للتعامل مع البيانات الموجودة في ملفات csv و excel حيث انها توفر اشكالا سهلة وبسيطة سواء للتعامل او لقراءة للبيانات وكذلك العمليات الرياضية البسيطة التي توضح معالجة للبيانات بشكل سهل وواضح. كذلك فإنها تعتمد على شكل dataframe والذي يجعل شكل البيانات سهلا وواضحا للقراءة، لذا فهي اكثر المكتبات استخداما في مجال تحليل البيانات يوجد ملف في الاسفل خاص بexecl تستطيع قراءة الملف باستخدام pandas كالاتي import pandas as pd df = pd.read_excel("test.xlsx", header=0) # قراءة الملف باستخدام المسار print(df.head()) # استعراض أول 5 اسطر من الملف تستطيع وضع عدد الاسطر التي سوف تقوم بعرضها ضمن التابع والنتيجة كالاتي Rank Language Percentageof worldpopulation(2018) 0 1 Mandarin Chinese 12.3% 1 2 Spanish 6.0% 2 3 English 5.1% 3 3 Arabic 5.1% 4 5 Hindi 3.5% لتحويل العمود langauge إلى list نستطيع كتابة الاتي language_list = df['Language'].tolist() # حددنا اسم العمود ضمن المتحول الذي خذنا فيه البيانات print(language_list) # طباعة النتيجة #الخرج الذي سيظهر ['Mandarin Chinese', 'Spanish', 'English', 'Arabic', 'Hindi', 'Bengali', 'Portuguese', 'Russian', 'Japanese', 'Western Punjabi', 'Javanese'] حيث الوظيفة tolist تحول العمود إلى قائمة list وهكذا تستطيع التعامل مع العمود عبر كتابة اسم المتحول الذي يخزن البيانات وهو هنا df ثم قوسين مع اسم العمود ضمن علامتي اقتباس test.xlsx
  18. الأسئلة الاختبارية لا نقوم بالإجابة عليها ولكن نستطيع مساعدتك في تقريب فكرة الحل في البداية يجب عليك تعريف قيمة متغير N ويكون من النمط int إي عدد صحيح وإدخال قيمته باستخدام cin تعريف تابع لطباعة الرقم بالترميز الثنائي وليكن printBinary يأخذ عددًا صحيحًا ثم يقوم ضمن جسم التابع بالمرور على حلقة while ويتم في هذه الحلقة تقسيم العدد على 2 والاحتفاظ بها وطباعة باقي القسمة في كل تكرار سواء 0 أو 1 مع وتتوقف الحلقة عندما يصبح قيمة هذا العدد الصحيح 0 نفس التابع السابق ولكن نقوم بتسمية التابع printHexadecimal لطباعة الرقم بالترميز السداسي عشر يأخذ عددًا صحيحًا ثم ضمن جسم التابع يتم استخدام حلقة while ويتم ضمن الحلقة تقسيم العدد على 16 والاحتفاظ بها وطباعة باقي القسمة مع معالجة أنه اذا كان باقي القسمة من 0 إلى 9 يطبع كما هو أما اذا كان باقي القسمة 10 يتم طباعة A و 11 يتم طباعة B و 12 يتم طباعة C و 13 يتم طباعة D و 14 يتم طباعة E و 15يتم طباعة F وتستمر الحلقة في العمل طالما أن قيمة العدد الصحيح لم تصبح 0 استخدام هذه التوابع في البرنامج الرئيسي بالترتيب الثنائي printBinary ثم السداسي عشر printHexadecimal و أعطاء كل تابع القيمة N المدخلة
  19. وعليكم السلام ورحمة الله، تستطيع الاطلاع على الاسئلة التي تتشابه مع سؤالك لأنه يوجد الكثير ممن طرحوا هذا السؤال وأخذو إجابة وافية مثل العمل كمطور باك ايند باستخدام django أو العمل في odoo لتطوير منصات خاصة بالأعمال وتستطيع أن تجد هنا إجابات جيدة
  20. وعليكم السلام، بالطبع لا تحتاج هذه المكتبات في برمجة مواقع الويب فهذه المكتبات مخصصة لمعالجة البيانات والتعامل معها وتحويلها من شكل إلى أخر ولكن تلجأ إلى هذه المكتبات في حال كنت تعمل على برمجة موقع ويب وطلب منك ضرب مصفوفتين أنت في هذه الحالة تقوم باستخدام numpy لضرب المصفوفتين بطريقة سهلة، لكن هنا يبقى السؤال هل تكون قد ساهمت numpy في بناء موقع الويب لا بالطبع ، هي فقط ساهمت في تطبيق معالجة على طلب ما ضمن الموقع ولكن لم تساهم في برمجة الموقع
  21. وعليكم السلام، كونك قد بدأت في حل المسائل أو ما يعرف ب problem solver وهي تعني إيجاد حل مشكلة بأفضل طريقة وبأقل تكلفة وتحويل فكرتك إلى كود يجب عليك عند العمل على هذه المسائل في أي موقع مخصص لذلك ك codefores أو atcoder أو leetcode كل مسألة يكون لها نص ويوجد إدخال وأخراج لكل مسألة في البداية يجب عليك قراءة نص المسألة بشكل جيد ثم معرفة الحدود الدنيا والعظمى لمتحولات الدخل والخرج وهذا سوف يظهر جليا في المسائل التي تتطلب طباعة ارقام بعد الفاصلة، تأكد من البداية من قراءة النص بشكل جيد ولقط الفكرة الاساسية من المسألة كذلك قبل أن تقوم بإرسال الكود للتصحيح على الاختبارات، فكر في عقلك بالاختبارات التي من الممكن أن تعطل تنفيذ شيفرة الكود الخاص بك كمثال المسألة التي طرحتها وخاصة الاختبارات التي تكون بسيطة، طبعا لا تقلق في البداية سوف تكون طريقة الوصول للحل صعبه بعض الشيء إلى أن تعتاد على إيجاد الفكرة وكتابة الكود وحل المسألة، كذلك لا يكفي أن تقوم لاحقا بحل هذا النوع من المسائل التي تعتمد على فكرة بسيطة مبهمة، وخاصة اذا كنت تطمح للمشاركة في المسابقات البرمجية الموجودة في بلدك أو أولمبياد المعلوماتية والذي يستهدف هذا النوع من المسائل ولكن يتطلب مستوى جيد لتحصل على مركز متقدم، تستطيع قراءة التعليقات هنا
  22. وعليكم السلام اهلا بك في أكاديمية حسوب لتعلم الأمور التي تخص علوم الحاسب ، تستطيع البدء في المقال التي سوف أضعها لك في الاسفل والتي سوف تتعرف فيها على الاتي: ما هي علوم الحاسب؟ فوائد وتطبيقات علوم الحاسوب هل تعلم علوم الحاسوب مفيد؟ مواد علوم الحاسوب تخصصات علوم الحاسب كيف أختار التخصص المناسب لي من تخصصات علوم الحاسب؟ التوظيف وفرص العمل في مجال علوم الحاسوب ما الفرق بين علوم الحاسب وهندسة الحاسب؟ من أين أبدأ بتعلم علوم الحاسب؟
  23. من يستطيع تقديم المساعدة في الاشتراك بالدورات وإجراء عمليات الدفع هو الدعم الفني و يمكنك التواصل مع الدعم الفني من خلال فتح الرابط التالي مركز المساعدة
  24. الجدول الخامس خاص بإرسال واستقبال الايميل حيث الأعمدة فيه كالتالي SenderID: تمثل رقم المرسل للرسالة وهو مفتاح خارجي إي جميع قيمه مطابقة لقيم UserID في جدول User ويوجد فيها تكرار لأنه يمكن للمستخدم أن يقوم بإرسال أكثر من مرة، يعني لو كان لدينا مستخدم له رقم فريد 1 وكان هذا المستخدم قد قام بإرسال ايميل فسوف نجد سطر في الجدول EmailSenderReciever يحوي في SenderID القيمة 1 وفي حال قام بإرسال الايميل مرتين سوف نجد سطرين يحويان الرقم 1 في عمود SenderID ReceiverID: تمثل رقم المستقبل للرسالة وهو مفتاح خارجي إي جميع قيمه مطابقة لقيم UserID في جدول User ويوجد فيها تكرار لأنه يمكن للمستخدم أن يقوم بالاستقبال أكثر من مرة، يعني لو كان لدينا مستخدم له رقم فريد 2 وكان هذا المستخدم قد قام باستقبال ايميل فسوف نجد سطر في الجدول EmailSenderReciever يحوي في ReceiverID القيمة 2 وفي حال قام باستقبال الايميل مرتين سوف نجد سطرين يحويان الرقم 2 في عمود ReceiverID EmailID : يمثل رقم الايميل وهو إيضا مفتاح خارجي من جدول Email إي جميع قيمة مطابقة للعمود ID في جدول Email ويوجد فيها تكرار لأنه من الممكن أن يكون نفس الايميل قد تم إرساله لأكثر من شخص وتم استقباله من أكثر من شخص إي لو لدينا رقم ايميل وليكن 1 من الممكن أن نجد هذا الرقم أكثر من مرة في عمود EmailID في جدول EmailSenderReciever الجدول السادس خاص بإرسال واستقبال الايميل بالمجموعة حيث الأعمدة فيه كالتالي SenderID: تمثل رقم المرسل للرسالة وهو مفتاح خارجي إي جميع قيمه مطابقة لقيم UserID في جدول User ويوجد فيها تكرار لأنه يمكن للمستخدم أن يقوم بإرسال أكثر من مرة، يعني لو كان لدينا مستخدم له رقم فريد 1 وكان هذا المستخدم قد قام بإرسال ايميل فسوف نجد سطر في الجدول EmailTogroup يحوي في SenderID القيمة 1 وفي حال قام بإرسال الايميل مرتين سوف نجد سطرين يحويان الرقم 1 في عمود SenderID groubID: تمثل رقم المجموعة التي موجود فيها المستخدم الذي استقبل الرسالة وهو مفتاح خارجي إي جميع قيمه مطابقة لقيم groubID في جدول UserGroub ويوجد فيها تكرار لأنه يمكن للمجموعة أن يكون مستخدمين ضمنها قد استقبلو أكثر من رسالة ، وهذا يعني لو كان لدينا 5 مستخدمين في group وهذه المجموعة لها رقم 7 وهؤلاء المستخدمين استقبلو أكثر من ايميل فسوف نجد أكثر سطر في الجدول EmailTogroup يحوي في العمود groubID القيمة 7 EmailID : يمثل رقم الايميل وهو إيضا مفتاح خارجي من جدول Email إي جميع قيمة مطابقة للعمود ID في جدول Email ويوجد فيها تكرار لأنه من الممكن أن يكون نفس الايميل قد تم إرساله لأكثر من شخص وتم استقباله من أكثر من شخص إي لو لدينا رقم ايميل وليكن 1 من الممكن أن نجد هذا الرقم أكثر من مرة في عمود EmailID في جدول EmailTogroup
  25. الموقع جيد لا بأس به، لكن يوجد بعض الأمور الأساسية التي يجب أن تضيفها دائما في حال عملك على مشروع ويب بالفعل يوجد view لتسجيل الدخول لكن يجب أن يكون هناك view لإنشاء حساب register لأنك قمت بإضافة كل التوابع الخاصة الخاصه بتهيئة كلمة المرور وتسجيل الدخول وتسجيل الخروج وتغيير كلمة المرور، عندما نريد الدخول إلى التشات وأرسال رسال يجب أن تتغير الرسالة التالية لأنه أصبح يوجد رسائل في chat، كذلك جرب أن تقوم بإضافة اللغة العربية كلغة ثانية ويقوم المستخدم بالتبديل بينهما فيظهر له غرفة واحد أرسل رسالة وما إلى ذلك
×
×
  • أضف...