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

Mustafa Suleiman

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

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

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

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

    384

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

  1. هل عند نسخ الملف على جهازك يعمل البرنامج بشكل سليم؟ أيضًا حاول تحديث البرنامج.
  2. قم بتفقد الاستجابة من خلال أداة مثل postman، هل يستجيب البوت للطلبات المرسلة؟ إن كان يستجيب، قم بإختباره بشكل منفصل في جروب منفصل، فربما هناك تضارب في الأوامر بين البوتات.
  3. لا يوجد مرجع عربي شامل، لكن أقرب مثال لما تريده هو arabflutter، وستجد على اليوتيوب دورات عربية تشرح فلاتر، لكن كنصيحة أنت تدور في دائرة مفرغة، تحتاج إلى تحسين لغتك الإنجليزية إلى الحد الذي تستطيع به الاستماع والقراءة بشكل جيد، فاللغة الإنجليزية هي لغة البرمجة.
  4. شركة الاستضافة تعتمد على حجم الزورار المتوقع، عامًة لو كان المشروع في بدايته وعدد زوار قليل، فيكفي رفع المشروع على vercel أو netlify أو GitHub pages أو Cloudflare pages ثم شراء domain خاص وربطه ليبدوا المشروع بشكل إحترافي. وتلك أقل تكلفة، وللعلم الأسهل في نشر المشروع هي vercel أو netlify. بالنسبة لتحسين الـ SEO من خلال الكلمات المفتاحية، عليك البحث عن meta tags وستحتاج إلى استخدام مكتبة React Helmet. ولو أردت تحسين الـ SEO بشكل أفضل، ابحث على اليوتيوب عن React SSR، وذلك ما يتم في المشاريع التي بحاجة إلى أرشفة جوجل أي الظهور في نتائج جوجل. وستوفر عليك الكثير من المجهود لو قمت ببناء المشروع من خلال Next.js، لكن حاليًا أنت في مرحلة التعلم والقيام ببناء مشاريع React فقط أمر واجب لفهم آلية عمل المكتبة والأساسيات. بالنسبة لتكلفة المشروع، فأنت وحدك من تستطيع تقدير الأمر حيث يربطك صلة قرابة، والمشاريع الخاصة بالشركات تكون تكلفتها مرتفعة عن المشاريع الخاصة بالأفراد، أيضًا ضع في إعتبارك أنّ المشروع ليس بالجودة الأفضل فأنت ما زلت تتعلم، أرجو مشاهدة التالي: وما قمت به في المشروع مجهود ممتاز حقًا أحسنت، لكن التصميم بحاجة إلى تحسين، وأيضًا الـ Navbar بحاجة إلى توضيحه فنص الروابط غير واضح بسبب الصور في الخلفية، والنموذج الخاص بالتواصل عليك إلغاء التنسيق الذي يجعله متدلي فذلك غير إحترافي، عليك الموازنة بين التأثيرات والإحترافية وراحة المستخدم. أيضًا خلفية الصفحات نفسها من الأفضل أن تكون بيضاء أو مائلة للبياض، أو خلفية سوداء.
  5. برنامج الحماية من الفيروسات لديك يمنع عملية التثبيت، قم بتعطيله أثناء التثبيت لتجنب تلك المشكلة، ثم إعادة تفعيله.
  6. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل. وأرجو إرفاق صورة للمشكلة لمعرفة ما يحدث والخطأ الذي ظهر لك، عامًة إليك مثال بسيط لعمل scraping: import requests from bs4 import BeautifulSoup url = "http://quotes.toscrape.com/" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') quotes = soup.find_all('div', class_='quote') for quote in quotes: quote_text = quote.find('span', class_='text').text author = quote.find('small', class_='author').text print(f"Quote: {quote_text} - Author: {author}")
  7. معنى ذلك أنه يوجد تحديثات لمحتوى ذلك المسار، أي الفيديو جديد غالبًا، وللعلم لو قمت بالضغط على زر جعل الموقع كمقروء سيتم تحديد جميع محتوى الموقع كمقروء أو شاهدته بما في ذلك دروس الدورة، فتجنب ذلك.
  8. لا أنصحك بالبحث عن استضافة عربية، الاستضافات الأفضل من حيث التكلفة والأداء هي أجنبية، ويوجد سيرفرات في الدول الأسيوية والأوروبية بها، ولكن ليس الدول العربية. ما هي تفاصيل المشروع لديك، هل تريد استضافة مجانية أم لديك مشروع صغير؟ عامًة أقرب استضافة لما تريده هي AWS لأنها تمتلك مركز بيانات في البحرين.
  9. الأمر ليس له علاقة، فالدورات المقدمة من أي شركة لا تعني الإنضام إليها، فتلك دورة تقدمها Google و جامعة ميشيغان، وتهدف إلى مساعدة الطلاب على تطوير مهاراتهم في تحليل البيانات وتحضيرهم للعمل في ذلك المجال. لذا عليك تطوير مهاراتك بشكل قوي لكي تتمكن من الوصول إلى شركات كبيرة مثل جوجل والأمر صعب وليس بالسهل، وتلك هي طبيعة أي شيء ذو قيمة.
  10. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  11. أرجو التعليق أسفل فيديو الدرس الذي تواجه به مشكلة لمساعدتك وتفقد هل يوجد مشكلة أم لا
  12. ذلك مجتمعٌ عالميّ يهدف إلى دعم وتمكين النساء العاملات في مجال تحليلات البيانات. بمعنى يهدف إلى ربط النساء بعضهن ببعض، وتوفير فرص التطوير المهني، وتشجيع مشاركة النساء في ذلك المجال الذي يهيمن عليه الرجال غالبًا على حد قولهم. ويوفر موارد تعليمية، وفرصًا للتواصل، وفعاليات، وشبكات دعم لمساعدة النساء على النجاح في مسيرتهن المهنية في المجال. وفي رأي الشخصي، الموقع هو أجندة جندرية، بغرض نشر التفاهات والمساواة ودعم المثليين والمتحولين وما شابه ذلك.
  13. بشكل مختصر، لم نعد بالفعل بحاجة إلى jQuery بعد إصدار ES6 في عام 2015 من جافاسكريبت، فمنذ ذلك الإصدار وأصبحت جافاسكريبت توفر ما كانت jQuery تقوم به ولكن بأداء أفضل. لذا نتعلمها من أجل التمكن من تطوير المشاريع القديمة التي ما زالت تستخدمها، ففي الواقع العملي ستجد مشاريع تم تطويرها منذ سنوات وما زالت تستخدم لك المكتبة. لذا أنصحك أثناء التعلم، بمحاولة كتابة نفس الكود من خلال جافاسكريبت بعد كتابة كود JQuery، وذلك من أجل التعلم واكتساب معرفة والتعمق في اللغة البرمجية نفسها. ولا يصح مقارنة jQuery بمكتبة React وغيرها، فتلك تقوم بمهمة مختلفة تمامًا، بمعنى jQuery هي مكتبة تُسهّل التفاعل مع DOM (Document Object Model) وتُبسّط بعض مهام JavaScript الشائعة. أما React فهي مكتبة لبناء واجهات المستخدم (UI) باستخدام مفهوم المكونات Components و البيانات التي تمثل حالة التطبيق state، أي بطريقة تختلف جذريًا عن jQuery.
  14. بالطبع ذلك متاح على مواقع العمل الأجنبية بشكل خاص، لكن ستعمل مع أفراد وعلى بيانات ليست بالكبيرة، بينما العمل الحقيقي يكون مع الشركات حيث يتم التعاقد مع شركات أخرى كبيرة لديها بيانات ضخمة مع إمضاء عقود بعدم الإفصاح عن البيانات للحساسيتها وأهميتها، مثلاً شركة لديها بيانات عقارية من خلال قاعدة بيانات ضخمة للعملاء وتريد تحليلها والقيام بأمر ما بناءًا على النتيجة.
  15. بالطبع يوجد، فالـ || والتي تعني أو، هي من ضمن العوامل المنطقية Logical Operators في جافاسكريبت. وهي كالتالي: && تعني (و - AND): تعطي true فقط في حال كانت جميع العبارات المتصلة بها صحيحة. ||تعني (و - OR): تعطي true لو كانت واحدة على الأقل من العبارات المتصلة بها صحيحة. ! تعني (ليس - NOT): وهي تعكس القيمة المنطقية للعبارة، أي تحول true إلى false والعكس صحيح. وضمن الجملة الشرطية if نستطيع أيضًا استخدام عوامل المقارنة Comparison Operators وهي: == (يساوي): تقارن القيم بدون مراعاة نوع البيانات، وتقوم بتحويلات ضمنية للأنواع قبل المقارنة بمعنى تحول '5' النص إلى رقم 5 عند المقارنة مع رقم صحيح 5. === (يساوي تماماً): تقارن القيم مع مراعاة نوع البيانات، أي لا تقوم بأي تحويلات ضمنية، ويفضل استخدامها لتجنب الأخطاء. != (لا يساوي): تقارن القيم بدون مراعاة نوع البيانات، تعطي true إن كانت القيم غير متساوية. !== (لا يساوي تماماً): تقارن القيم مع مراعاة نوع البيانات، تعطي true في حال كانت القيم أو أنواعها غير متساوية. > (أكبر من): تعطي true عندما تكون القيمة الأولى أكبر من القيمة الثانية. < (أصغر من): تعطي true إن كانت القيمة الأولى أصغر من القيمة الثانية. >= (أكبر من أو يساوي): تعطي true في حال القيمة الأولى أكبر من أو تساوي القيمة الثانية. <= (أصغر من أو يساوي): تعطي true لو كانت القيمة الأولى أصغر من أو تساوي القيمة الثانية.
  16. مكتبة next-intl تحتاج إلى ضبط المنطقة الزمنية TimeZone، فإعدادك الحالي لا يحددها، أي المشكلة ليست في ملفات i18n.ts أو middleware.ts، بل في عدم تحديد المنطقة الزمنية في تطبيقك. ستجد توضيح في المستند الرسمي: https://next-intl-docs.vercel.app/docs/usage/configuration#time-zone يخبرك كيفية القيام بالأمر.
  17. بالطبع من المرجح جداً أن تكون جودة النتائج سيئة بسبب قلة البيانات التدريبية، حيث 24 سطراً فقط من البيانات غير كافية لتدريب نموذج لغوي كبير مثل Llama 3، وحتى مع استخدام تقنيات مثل LoRA (Low-Rank Adaptation) التي تقلل من عدد المعلمات التي تحتاج إلى التدريب. النتائج تُظهر انخفاضاً تدريجياً في خسارة التدريب Training Loss خلال 60 خطوة، وذلك مؤشر إيجابي، حيث يعني أن النموذج يتعلم ويُحسّن من أدائه على البيانات التدريبية. لكن، قيمة الخسارة النهائية (0.2155) لا تُخبر الكثير عن جودة النموذج، فالخسارة منخفضة نسبياً، لكن ذلك لا يعني بالضرورة أن النموذج جيد. فهي مقياس للأداء على البيانات التدريبية فقط، وليس على بيانات جديدة (اختبار)، فربما يكون النموذج قد حفظ البيانات التدريبية عن ظهر قلب overfitting دون القدرة على التعميم على بيانات جديدة. أيضًا 60 خطوة قليلة جداً للتدريب، بالنسبة للبيانات القليلة التي لديك قم بتنفيذ 1000 إلى 5000 خطوة واختبر النتيجة. حاول توليد بيانات من خلال الذكاء الاصطناعي نفسه، بتوفير بيانات له وإخباره بتوليد بيانات بنفس النمط، وذلك يسمى Data synthesis. أيضًا هناك تقنيات Few-Shot Learning ومنها Prompt Engineering أي ركز على كتابة توجيهات prompts دقيقة وواضحة للنموذج، بتقديم أمثلة قليلة في التوجيه نفسه لإظهار المطلوب من النموذج، وتلك الطريقة تعتمد على قدرة النموذج على تعميم ما تعلمه من الأمثلة القليلة على بيانات جديدة. أو التعلم القليل اللقطات مع التكيف Few-Shot Learning with Adaptation وبها تقنيات مثل meta-learning أو transfer learning لتكييف النموذج المسبق التدريب على بياناتك الصغيرة، حيث تُركز على تعلم كيفية التعلم من بيانات قليلة، بدلاً من تعلم كل شيء من الصفر.
  18. الدولة التي تقيم بها حاليًا والمسجلة في بطاقة الهوية الخاصة بك، أي بطاقة الرقم القومي أو البطاقة التعريفية في بلدك أيًا يكن المسمى، في السعودية تسمى بطاقة الهوية الوطنية.
  19. بالطبع تحتاج إلى فهم البيانات جيدًا لاختيار الخوارزمية المناسبة، وذلك يشمل: نوع البيانات: (مثل: صور، نصوص، أرقام). خصائص البيانات: (مثل: ضوضاء، عدم توازن، ترابط). العلاقات بين المتغيرات: ما هي العلاقات بين عناصر البيانات المختلفة؟ أهداف المشروع: (مثل: تصنيف، انحدار، تجميع). وذلك يساعدك أيضًا على تحضير بياناتك بشكل صحيح للخوارزمية وتقييم أداء الخوارزمية بشكل صحيح. وتحتاج لفهم الخوارزمية نفسها بشكل عميق، أي لست بحاجة لأن تكون خبيرًا في آلية عمل الخوارزمية الداخلية، ولكن يجب أن يكون لديك فهم جيد لهدف الخوارزمية والغرض منها وكيف تعمل الخوارزمية بشكل مبسط؟ وما هي مميزاتها وعيوبها؟ ومتى تستخدمها ومتى لا تستخدمها؟ بالتالي لست بحاجة لأن تكون خبيرًا في الاشتقاقات الرياضية أو تفاصيل التنفيذ الداخلية للخوارزمية.
  20. حاول القيام بالأمر حتى لو ظهرت أخطاء المهم المحاولة، وسيتم إرشادك للطريقة الصحيحة عند توفير الكود، قم بحل جزء من المطلوب مثلاً
  21. أقصد استخدامك لعمود IDENTITY (الذي يزيد تلقائيًا) كمفتاح أساسي وعندما تحذف صفًا، يبقى الفراغ في تسلسل الأرقام، ولا يعيد IDENTITY استخدام الأرقام المحذوفة. لذا إما تجاهل الفراغات وذلك أبسط حل، لأنّ IDENTITY يقوم بعمله كمفتاح أساسي فريد، والفراغات لا تؤثر على عمل قاعدة البيانات إلا في حال لديك تقارير تحتاج لتسلسل متصل، لكن رتّب نتائج الاستعلام فقط عند عرضها. لا تحتاج لتغيير أي شيء في قاعدة البيانات كالتالي: SELECT * FROM TB_CAT ORDER BY Id DESC; أما لو الترتيب التنازلي ضروريًا دائمًا فأضف عمودًا جديدًا لجدولك، مثل DisplayOrder من نوع INT، وسيحتوي على الترتيب الذي تريده للعرض. وعند إضافة صف جديد، املأ DisplayOrder بالترتيب الصحيح، بواسطة دالة أو استعلام للحصول على أعلى قيمة في DisplayOrder ثم إضافة 1. وعند حذف صف، ستحتاج لتحديث DisplayOrder للصفوف المتبقية، وذلك يتطلب استعلام UPDATE معقد نوعًا ما. كالتالي: DELETE FROM TB_CAT WHERE Id = 3; UPDATE TB_CAT SET DisplayOrder = ROW_NUMBER() OVER (ORDER BY Id) سيتم إعادة ترقيم DisplayOrder باستخدام ROW_NUMBER()، لكن الاستعلام سيكون بطيئًا جدًا مع الجداول الكبيرة. أيضًا تستطيع ضبط مسألة التسلسل من خلال الواجهة الأمامية من خلال حلقة تكرار وجلب البيانات من قاعدة البيانات، وذلك أفضل.
  22. مسار المشروع يحتوي على أحرف غير ASCII (أي أحرف غير إنجليزية أو أرقام)، الأمر الذي يسبب مشكلة لبناء التطبيق على ويندوز، عليكِ نقل المشروع إلى مجلد جديد لا يحتوي على أسماء مجلدات أو ملفات بأسماء عربية أو تحتوي على أحرف خاصة. أو هناك طريقة أخرى وهي حلًا مؤقتًا تتضمن إضافة سطر إلى ملف gradle.properties، افتحي مجلد android داخل مجلد مشروعك (flutter_application_1\android)، وابحثي عن ملف يُسمى gradle.properties، وفي حال لم تجديه، قومي بإنشائه ثم أضيفي التالي إليه: android.overridePathCheck=true وحاولي تشغيل التطبيق مرة أخرى.
  23. بعد تعلم أساسيات Git ستتمكن من رفع مجلد المشروع بما به من ملفات ومجلدات على مستودع GitHub. بخصوص مجلد البيئة الإفتراضية فلا نقوم برفعه، يجب رفع الكود المصدري فقط على المستودع وتجاهل أية ملفات ومجلدات أخرى وذلك بكتابة ذلك في ملف باسم .gitignore ووضعه في مجلد الجذر (الرئيسي) للمشروع أي المجلد الذي به كود المشروع. وإليك قالب لذلك الملف لأغلب مشاريع بايثون: __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ cover/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder .pybuilder/ target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv # For a library or package, you might want to ignore these files since the code is # intended to run in multiple environments; otherwise, check them in: # .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # PEP 582; used by e.g. github.com/David-OConnor/pyflow __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ # pytype static type analyzer .pytype/ # Cython debug symbols cython_debug/ لاحظ التالي في الكود: # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ تلك هي الأسماء الممكنة لمجلد البيئة الإفتراضية فإن كان لديك مختلف عليك كتابته أيضًا.
  24. بالضبط،عندما تنقر على أيقونة برنامج، يرسل نظام التشغيل طلبًا إلى وحدة إدارة الملفات للعثور على الملف التنفيذي للبرنامج على القرص الصلب. بعد العثور على الملف، يقوم نظام التشغيل بتحميله إلى الذاكرة RAM، وتلك العملية تتضمن قراءة البيانات من القرص الصلب ونقلها إلى الذاكرة، حيث نظام التشغيل يدير العملية، ويحدد مكان تحميل البرنامج في الذاكرة، ويضمن عدم حدوث تداخل مع عمليات أخرى. قبل بدء تشغيل البرنامج، يقوم نظام التشغيل بإعداد بيئة تشغيل مناسبة له، بما في ذلك تخصيص الموارد اللازمة مثل الذاكرة والمسجلات، ثم يقوم نظام التشغيل بتحويل التحكم إلى البرنامج المُحمل في الذاكرة، ليبدأ في التنفيذ. وبالطبع الـ CPU ينتظر وصول البرنامج إلى الـ RAM قبل معالجته، فلا يمكن للمعالج معالجة التعليمات مباشرة من القرص الصلب، لأنّ القرص الصلب بطيء جدًا مقارنة بسرعة المعالج، لذلك، يجب تحميل البرنامج إلى الذاكرة أولاً، وهي ذاكرة أسرع بكثير، قبل أن يتمكن المعالج من الوصول إلى تعليماته ومعالجتها. بعد تحميل البرنامج إلى RAM، أحيانًأ يتم نسخ أجزاء منه إلى ذاكرة التخزين المؤقت للمعالج Cache لزيادة سرعة الوصول، فالمعالج يفضل الوصول إلى البيانات من ذاكرة التخزين المؤقت لأنها أسرع بكثير من RAM، لكن ذلك لا يغير من حقيقة أن البرنامج يجب أن يكون في RAM أولاً. في بعض الحالات، يبدأ المعالج في معالجة أجزاء من البرنامج قبل تحميله بالكامل إلى RAM، وذلك من خلال تقنيات مثل التنفيذ التنبؤي Speculative Execution، أيضًا البرنامج يحتاج إلى أن يكون في RAM بشكل كامل ليتم تنفيذه بشكل صحيح.
  25. الأمر ليس ثابت بالنسبة للجميع، هل لديك وقت كافي للتعلم؟ إذن تستطيع التعلم من لغات برمجة منخفضة المستوى. إن لم يكن لديك وقتٍ كافٍ عليك تحديد roadmap للتخصص الذي اخترته ثم تعلم اللغة البرمجية الخاصة بذلك المجال، فمثلاً مجال الويب يعني لغة جافاسكريبت وهكذا. تستطيع تعلم لغة البرمجة من خلال أي لغة، بالطبع هناك لغات ستتعلم منها الأساسيات بشكل أفضل مثل C++ و جافا أو حتى C# لكن الأمر يتطلب مجهود وصبر والبعض قد يحبط من الصعوبة النسبية لتلك اللغات، لذا الأشخاص الذي ليس لديهم أي دراية بالحاسوب لا يصلح لهم تلك اللغات ومن الأفضل البدء من خلال بايثون. لذا لا توجد نصائح معلبة تصلح للجميع، وبالطبع لو لديك الوقت والقدرة فلا أنصحك بالبدء من خلال بايثون أو جافاسكريبت.
×
×
  • أضف...