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

Mustafa Suleiman

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

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

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

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

    297

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

  1. بعد دراسة الأساسيات، من المفترض أن تكون قد استوعبتها بشكل جيد ومتفهم لما تم شرحه وليس مجرد أنك شاهدته فقط، وفي البرمجة المشاهدة بدون التطبيق العلمي يعني أن لم تتعلم شيء للأسف، فعند التطبيق العملي ستجد أنك لست قادر على ذلك، لذا هل تشعر بأريحية عند التطبيق بمفردك؟ أيضًا هل تشعر بأنك مستوعب لكيفية استخدام ما قمت بتعلمه في المكان المناسب، أي وظيفة كل دالة مثلاً ولماذا نستخدمها وهكذا، أو ما الفائدة من مفهوم برمجي معين. هل قمت بتنفيذ نماذج بسيطة ثم تنفيذ مشاريع كاملة؟ بعد الشعور بأريحية فيما سبق تستطيع الإنتقال للمستوى التالي.
  2. التسعير صعب في البداية بالفعل على الجميع، وهناك آراء كثيرة مختلفة حوله ولكل شخص ظروفه والمستويات مختلفة، والموضوع يتوقف على معرض الأعمال لديك ومستوى جودته والخبرة التي تمتلكها وهل ستقوم أنت بالتصميم والبرمجة أم البرمجة فقط، أيضًا بلد العميل وقوة العملة لديه. بشكل بسيط، في المتوسط يمكنك تحديد سعر تطوير صفحة واحدة بالموقع بسعر 50 دولار لكن في حال كانت صفحة كانت ليست معقدة وبها الكثير من المكونات فالسعر يرتفع بالطبع إن كانت كذلك. وهناك طريقة أفضل وهي تحديد سعر ساعة العمل الخاصة بك، ثم ضرب عدد ساعات العمل المتوقعة للمشروع في سعر الخاصة بك ولتكن مثلاً 10 دولار كمثال ليس أكثر فساعات العمل تتراوح ما بين 10 إلى 50 دولار حسب الخبرة ومستوى الجودة. لكن مشكلة سعر الساعة هو أنه في البداية لن يكون لديك دراية بالمدة المناسبة للمشروع حيث ستتمكن من معرفة ذلك لاحقًا بعد تنفيذ مشاريع واكتساب خبرة، لذا تفقد الأسعار للمبرمجين الذي يعملون بنفس التقنيات الخاصة بك على مواقع العمل الحر من حيث سعر الساعة، ثم ضع احسب متوسط السعر وضع سعر ساعة منخفض قليلاً عن المتوسط في البداية وقدم جودة عمل جيدة أعلى من المطلوب في حال كان ذلك أول مشروع لك. وستجد تفصيل أكثر بخصوص التسعير هنا طرحته من قبل: https://io.hsoub.com/programming/103606-أيها-المبرمج-كيف-تسعر-أعمالك
  3. أرجو توضيح السؤال، ما المقصود بالمستوى التالي؟
  4. بالطبع، فهي تُستخدم في العديد من مجالات الذكاء الاصطناعي، وكأمثلة: معالجة اللغة الطبيعية (NLP)، مثل تحديد المكونات المترابطة في النص، مثل الجمل والعبارات، والكيانات المسمّاة في النص، مثل الأشخاص والأماكن والمنظمات. أيضًا الرؤية الحاسوبية كتقسيم الصورة إلى مناطق مترابطة وتحديد الكائنات في الصورة، ومعالجة البيانات لاستخراج البيانات من مصادر مختلفة وتنظيفها من الأخطاء والتناقضات. وغيرهم من المجالات.
  5. اضغطي على Ctrl + Shift + P ولكن اضغطي على زر CTRL الأيمن وليس الأيسر، ثم ابحثي عن Terminal:Clear واضغطي علي ذلك الخيار ثم أعيدي تشغيل vscode. إن استمرت المشكلة، من الأفضل تحميل تطبيق الـ terminal التالي في الويندوز: https://apps.microsoft.com/detail/9n0dx20hk701?rtc=1&hl=en-eg&gl=EG ثم أعيدي تشغيل vscode وحاولي تشغيل التيرمنال، إن استمرت المشكلة اضغطي على Ctrl + Shift + P ثم ابحثي عن select default terminal واضغي عليه ثم اختاري powershell. إن استمرت المشكلة من الأفضل حذف vscode ثم تثبيته من خلال الرابط التالي: https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user
  6. الأمر بسيط من خلال CSS عليك عمل inspect للعنصر ثم تفقد ما هو اسم الـ class أو الـ id الخاص به ثم استهدافه في css وتطبيق التنسيقات التي تريدها، ولا تنسى استخدام !important من أجل فرض تطبيق التنسيق وإعطاء أولوية لتنسيقاتك وليس تنسيقات المكتبة.
  7. الأمر بسيط لا تقلق، انت بحاجة فقط إلى دراسة أساسيات HTML و CSS و جافاسكريبت، وذلك متاح في المسار الأول من دورة تطوير واجهات المستخدم، فالمسار الأول من جميع الدورات متاح لك بشكل مجاني، وأهم نقطة هو عنصر النموذج form فمن خلاله نقوم بتضمين الحقول لملء البيانات من قبل المستخدم ثم إرسالها ومعالجتها من قبل جافاسكريبت. وفي دورة علوم الحاسوب تم شرح التعامل مع قواعد البيانات بواسطة Node.js في مسار قواعد البيانات حيث استخدمنا SQLite. ويمكنك تعلم أساسيات بايثون في المسار الأول لدورة بايثون ونفس الأمر بالنسبة لدورة جافاسكريبت. ما هي قاعدة البيانات التي ستستخدمها لمساعدتك، في حال كان المشروع بسيط استخدم SQLite كما تم التوضيح بالدورة.
  8. عبارة مجموعة من الخوارزميات المستخدمة في نظرية الرسم البياني لحلّ مشكلتين رئيسيتين. الأولى هي إيجاد المكونات المتصلة بقوة (SCC)، وذلك لتحديد جميع المجموعات الفرعية من العقد في الرسم البياني الموجه بحيث يكون هناك مسار من أي عقدة إلى أي عقدة أخرى داخل المجموعة، وتُعرف تلك المجموعات باسم "المكونات المتصلة بقوة". الثانية إيجاد أدنى مسار موجه (DAG) من أي عقدة إلى أي عقدة أخرى في الرسم البياني الموجه. وتُستخدم خوارزميات Tarjans في العديد من التطبيقات العملية، بما في ذلك: تحديد المجموعات الفرعية من الأشخاص الذين يتفاعلون مع بعضهم البعض بشكل متكرر في شبكة اجتماعية. التحقق من صحة تصميمات الدوائر الإلكترونية. تحديد المكونات المترابطة في الكود البرمجي. تحديد مجموعات البيانات المترابطة في مجموعة بيانات كبيرة. أي نستخدمها لحلّ العديد من المشكلات المختلفة في نظرية الرسم البياني، لكنها غير مستقرة في بعض الحالات، مما يعني أن نتائجها قد تتغير اعتمادًا على ترتيب معالجة العقد، أيضًا صعبة الفهم، خاصة للمبتدئين.
  9. تستطيع تعديل حجم صندوق الرسالة من خلال إضافة السطر التالي داخل دالة confirmDelete: Swal.fire({ ... width: 600, height: 200, ... }); وتعديل القيم كما تريد.. أو من خلال CSS كالتالي: .swal2-modal { width: 600px !important; height: 200px !important; } أيضًا هناك عض الخيارات الإضافية لتعديل شكل صندوق الرسالة: padding: للتحكم في المسافة بين محتوى صندوق الرسالة وحدوده. margin: للتحكم في المسافة بين صندوق الرسالة وباقي العناصر على الصفحة. background-color: لتغيير لون خلفية صندوق الرسالة. border-radius: لتغيير شكل زوايا صندوق الرسالة.
  10. أولاً عليك إنشاء حساب على مركز المعلومات الوطنيhttps://www.moi.gov.sa/wps/vanityurl/ar/nic وتفعيل حسابك. ثم تأتي خطوة الحصول على مفتاح API من خلال التالي: تسجيل الدخول إلى حسابك انتقلي إلى قسم "التطبيقات" اضغطي على "إنشاء تطبيق جديد" أدخلي اسم التطبيق ووصفًا له حددي الخدمات التي تريد الوصول إليها (خدمة "الاستعلام عن بيانات المواطن") اضغطي على "إنشاء" وسيتم توفير مفتاح API الخاص بك بعد ذلك عليك تثبيت إضافة "WP API Manager" من مستودع ووردبريس وتفعيل الإضافة ثم انتقلي إلى "الإعدادات" -> "WP API Manager". ثم إضافة مفتاح API بالضغط على "إضافة نقطة نهاية جديدة" وأدخلي اسم نقطة النهاية (مثل "مركز المعلومات الوطني") ثم عنوان URL نقطة النهاية. ثم أدخلي مفتاح API وحددي طريقة المصادقة (Bearer Token)، ثم اضغطي على "حفظ. الآن عليك إنشاء نموذج تسجيل مستخدم جديد، وذلك بإنشاء صفحة جديدة في ووردبريس ثم أضيفي نموذجًا باستخدام عنصر "Formidable Forms". وأضيفي الحقول التالية إلى النموذج: الاسم رقم الجوال العنوان الوطني ومن خلال الـ API تستطيعي ملء تلك الحقول عن طريق الاستعلام بالرقم القومي مثلاً.
  11. التوثيق الرسمي الجديد هو: https://react.dev/reference/react وفي حال مواجهة مشكلة في تصفحه، فربما يوجد مشكلة في الإنترنت لديك أو وجود إضافة في المتصفح تسبب تلك المشكلة حاول تجربة متصفح آخر، أو اعتمد على بروكسي من خلال الرابط التالي تستطيع تصفح الموقع مباشرًة: https://azureserv.com/reference/react?__cpo=aHR0cHM6Ly9yZWFjdC5kZXY وإن تمكنت من تصفحه إذن المشكلة في الإنترنت لديك، حيث يتم حجب الموقع لسبب ما والبروكسي هو الموقع التالي إذا أردت استخدام لموقع آخر: https://plainproxies.com/resources/free-web-proxy
  12. لستَ بحاجة إلى استخدام NEXT AUTH في مشروعك إذا لم يكن لديك باك إند مبني على Next.js. لأن NEXT AUTH هو حل مخصص لتسهيل مهام المصادقة في مشاريع Next.js الكاملة، حيث يتكامل بسلاسة مع واجهة المستخدم الأمامية ويوفر واجهة برمجة تطبيقات سهلة الاستخدام للتعامل مع المستخدمين في واجهة المستخدم الخلفية. بينما أنت ستعتمد على باك إند من خلال إطار Laravel لذا بإمكانك الربط بواسطة واجهة برمجة تطبيقات RESTful كالتالي: إنشاء واجهة برمجة تطبيقات RESTful في Laravel للتعامل مع عمليات المصادقة وإدارة المستخدمين. استخدم واجهة برمجة تطبيقات RESTful من Next.js لإرسال طلبات HTTP إلى Laravel للتحقق من صحة المستخدمين وإنشاء جلسات جديدة. استخدام مكتبات مثل Axios أو Fetch API لإجراء طلبات HTTP من Next.js إلى Laravel. أو استخدام JWT (JSON Web Tokens): كالتالي: إنشاء JWT في Laravel عند تسجيل دخول المستخدم. إرسال JWT إلى Next.js كملف تعريف ارتباط أو في عنوان URL. تحقق من صحة JWT في Next.js قبل السماح للمستخدم بالوصول إلى صفحات أو ميزات معينة. أو استخدام مكتبة مثل Passport فهي مكتبة Laravel شائعة لتسهيل مهام المصادقة، ونعتمد عليها لإنشاء واجهة برمجة تطبيقات OAuth 2.0 في Laravel. وبالطبع تستطيع استخدام مكتبة Passport في Next.js للتفاعل مع واجهة برمجة تطبيقات OAuth 2.0. لذا في حال وجود متطلبات مصادقة بسيطة، فاستخدام واجهة برمجة تطبيقات RESTful كافيًا، بينما لميزات مصادقة أكثر تقدمًا، مثل التخويل على أساس الأدوار، فنلجأ إلى JWT أو Passport كخيار أفضل.
  13. لاحظ وجود حرف a زائد في كلمة ClaassName الصحيح هو ClassName أي كالتالي: const paragraph = document.getElementsByClassName("content");
  14. jQuery تم تطويرها في وقت تكنولوجي قديم وكانت مصممة لمعالجة صعوبات التلاعب والتحكم بالـ DOM في المتصفحات القديمة. ,الـ DOM يعني "Document Object Model"، وهو نموذج برمجي يُستخدم في تمثيل وتنظيم هيكل ملفات HTML أو XML في موقع ويب لكننا نستخدم HTML في الغالب لمواقع الويب، وبببساطة، يمثل الـ DOM الصفحة ويتيح لك كمبرمج التفاعل مع الصفحة بواسطة لغة برمجة الويب وهي JavaScript. فعندما يتم تحميل صفحة ويب، يقوم المتصفح بإنشاء نموذج لتلك الصفحة باستخدام الـ DOM، ويتكون النموذج من عناصر (elements) كالعناصر المرئية (مثل الأزرار والنصوص والصور) والعناصر الأخرى مثل الروابط والجداول. وعند حدوث تغيير أو تحديث للمحتوى على الصفحة، يتم تحديث الـ DOM بشكل ديناميكي، مما يسمح للصفحة بالتفاعل مع المستخدم بدون إعادة تحميل الصفحة بأكملها، مما يجعل تجربة المستخدم أكثر سلاسة وديناميكية عند استخدام تطبيقات الويب. ومع تقدم التكنولوجيا وظهور المتصفحات الحديثة، تم تحسين دعم JavaScript الأساسي لعمليات DOM ومعالجة الأحداث، مما قلل من الحاجة إلى استخدام jQuery، وبالأخص بدايًة من تحديث ES6 في عام 2016. ولعلك تتسائل لماذا نستخدم jQuery إذن؟ السبب هو أن نسبة كبيرة جدًا من المواقع كانت تستخدم jQuery وما زالت تستخدمها حتى الآن لذلك يجب الإعتياد على استخدام تلك المكتبة حتى تتمكن من التعديل والتطوير على أحد تلك المواقع عند دخول سوق العمل. وبالإضافة لمكتبة jQuery سنستخدم مكتبة Font Awesome وهي مكتبة خاصة بالأيقونات، ومن خلالها نستطيع إضافة أيقونات بشكل سهل في موقعنا. ستجد تفصيل أكثر هنا: شرح jQuery
  15. عليك توصيل قارئ 3M 9000 بجهاز الكمبيوتر الخاص بك بشكل صحيح، ويجب وجود بيئة ASP Classic مثبتة على جهاز الكمبيوتر أيضًا، وستحتاج إلى مكتبة ActiveX لـ قارئ 3M 9000 وتستطيع تنزيلها من موقع 3M على الويب. بالإَضافة إلى كتابة كود ASP Classic لاستخدام مكتبة ActiveX وقراءة بيانات MRZ من جواز السفر. للتوضيح سيكون كود ASP Classic مشابه للتالي: <% Dim reader As Object Dim data As String Set reader = CreateObject("3M.Reader") reader.Open() data = reader.ReadMRZ() reader.Close() Set reader = Nothing %> واستبدل "3M.Reader" باسم مكتبة ActiveX التي قمت بتثبيتها.، وسيتم قراءة بيانات MRZ من جواز السفر وحفظها في المتغير "data" والذي تستطيع استخدامه لعرض معلومات جواز السفر على صفحة الويب.
  16. بالطبع، وأيضًا هناك متطلبات لازمة للتعامل معه حيث يتطلب فهمًا عميقًا لمفاهيم تعلم الآلة ومنها: البرمجة بلغة Python الجبر الخطي حساب التفاضل والتكامل نظرية الاحتمالات وتتوفر العديد من الوثائق لـ TensorFlow، ولكن معظمها موجه للمستخدمين ذوي الخبرة. لذا يتم التعلم أولاً من خلال Keras وScikit-learn أو PyTorch. حيث أنّ Keras هو واجهة برمجة تطبيقات عالية المستوى مبنية على TensorFlow، و Scikit-learn هي مكتبة Python شائعة الاستخدام لتعلم الآلة، أما PyTorch فهو إطار عمل مشابه لـ TensorFlow ولكنه أسهل في الاستخدام. بالطبع السابق مع مكتبات مثل pandas للتعامل مع البيانات.
  17. المشكلة بسبب حزمة typescripts فهي بالمشروع بالإصدار 5.3.3 بينما في مكتبة react-scripts تريد تنزيل الحزمة بالإصدار 3.2.1. لذا لحل تلك المشكلة قم بخفض الإصدار كالتالي في ملف package.json: typescript: "^3.2.1" ثم تنفيذ أمر npm i
  18. من الطبيعي أن يظهر كود الواجهة الأمامية HTML, CSS, JS، وإذا أردت إخفاءهم عليك باستخدام أداة مثل zend guard. لكن كود PHP في الواجهة الخلفية ليس لأحد صلاحية الوصول إليه سواك أنت حيث لديك صلاحية الوصول للسيرفر الذي به ملفات الواجهة الخلفية.
  19. الطريقة الأولى سهلة التنفيذ ولا تتطلب الكثير من التعديلات على الكود، وربما تزيد من وقت تحميل الصفحة ومن خطر حدوث أخطاء. أما الطريقة الثانية تمنع حدوث مشكلات حجز المخزون وتقلل من خطر حدوث أخطاء، ولكن أكثر تعقيدًا من الطريقة الأولى وتتطلب المزيد من التعديلات على الكود. حاول استخدام حزمة Laravel Cashier لدمج بوابات الدفع بسهولة.
  20. تعتمد الطريقة على آلية ربط حسابك على المنصة بحسابك على منصة التواصل الاجتماعي (مثل فيسبوك أو تويتر) وبالتالي، يمكن للموقع تتبع نشاطك والتأكد من أنك قمت بمتابعة الحسابات المطلوبة. ولا ينصح باستخدام تلك الطريقة لأسباب أخلاقية وأيضًا لأنها قد تؤدي إلى إغلاق حسابك على منصة التواصل الاجتماعي. وكبدائل أخلاقية لزيادة المتابعين، قم بإنشاء محتوى جذاب وذو جودة عالية، التفاعل مع متابعيك بشكل منتظم، استخدام هاشتاقات relevante، الترويج لحسابك على منصات أخرى واستخدام الإعلانات المدفوعة.
  21. أرجو حذف الملفات المؤقتة من خلال تحديث الصفحة بواسطة الضغط على CTRL + F5. إن استمرت المشكلة حاول التجربة من متصفح أو جهاز آخر لمعرفة أين تكمن المشكلة، إن استمرت حاول إعادة تشغيل راوتر الإنترنت.
  22. يجب توضيح ما الغرض من ذلك لتقديم نصيحة مفيدة لك، لكن عامًة في حال كان المحتوى مرتبط ببعضه ويُفضل جمعه في صفحة واحدة فإذن ستحقق استفادة وزيادة عدد الصفحات التي تم زيارتها من قبل المستخدم وتسهيل عملية الوصول للمحتوى. وأيضًا المحتوى الطويل مفيد للـ SEO في حال كان مرتبط ببعضه، لكن يجب توفير تقنية Lazy load من أجل ألا يؤثر المحتوى الطويل على سرعة التحميل فتصبح النتيجة عكسية. أما في حال كان المحتوى غير مرتبط بحيث لا يُفضل وضعه في صفحة واحدة، إذن سيؤثر ذلك على الـ SEO، وربما يصبح التنقل في صفحة واحدة معقدًا للمستخدمين الذين يبحثون عن معلومات محددة، وبالتالي يؤثر ذلك على تجربة المستخدم والتي هي العامل الأهم بالنسبة لجوجل حاليًا. وستفقد الترتيب على كلمات معينة، حيث يجب الربط بين صفحات الموقع داخليًا وإنشاء شبكة فيما بينها. بشكل بسيط إن كان ما ستفعله يعني تجربة مستخدم أفضل فلا مشكلة، ويمكن معالجة ذلك الأمر، لكن إن كان العكس فلا تقم بذلك.
  23. في البداية عليك تعريف صنف User الأساسي، حيث نستخدم AbstractUser من Django كقاعدة لصنف User، ويوفر AbstractUser جميع الخصائص والوظائف الأساسية للمستخدمين في Django، أي يمكننا إضافة أي خصائص إضافية نحتاجها إلى صنف User. class User(AbstractUser): phone_number = models.CharField(max_length=20) address = models.CharField(max_length=255) ثم تعريف صنف Vendor، ونرث من صنف User باستخدام class Vendor(User)، ونضيف خاصية type مميزة لصنف Vendor لتحديد نوع المستخدم، ونستطيع إضافة أي خصائص إضافية محددة لصنف Vendor نحتاجها. class Vendor(User): type = models.CharField(max_length=50, default="vendor") company_name = models.CharField(max_length=255) business_license_number = models.CharField(max_length=20) ثم تعريف صنف Customer، ونرث من صنف User باستخدام class Customer(User):، ونضيف خاصية type مميزة لصنف Customer لتحديد نوع المستخدم، أيضًا إضافة أي خصائص إضافية محددة لصنف Customer نحتاجها. class Customer(User): type = models.CharField(max_length=50, default="customer") shipping_address = models.CharField(max_length=255) billing_address = models.CharField(max_length=255) الآن نستخدم Vendor.objects.create_user لإنشاء بائع جديد ونمرر اسم المستخدم وكلمة المرور وخصائص أخرى إلى الطريقة create_user. from django.contrib.auth import authenticate username = "test_vendor" password = "password1234" vendor = Vendor.objects.create_user(username=username, password=password, type="vendor") # ... (إتمام عملية تسجيل البائع) أو نستخدم Customer.objects.create_user لإنشاء عميل جديد، ونمرر اسم المستخدم وكلمة المرور وخصائص أخرى إلى الطريقة create_user. from django.contrib.auth import authenticate username = "test_customer" password = "password5678" customer = Customer.objects.create_user(username=username, password=password, type="customer") # ... (إتمام عملية تسجيل العميل) وعليك استخدام الطريقة create_user الخاصة بكل صنف، واستيراد جميع النماذج (models) المُستخدمة في الكود.
  24. أهم ما في الأمر، هو تسليمك الكود المصدري وذلك من خلال ملف مضغوط بصيغة rar مثلاً، وأيضًا من خلال مستودع GitHub. وإن كانت هناك أية ملفات مصدرية أخرى مثل ملفات التصميم يتم تسليمها، لكن ذلك على إشتراط أنه تم الإتفاق على ذلك من البداية، فأحيانًا تكوت تكلفة المشروع أقل مقابل عدم تسليم تلك الملفات. يجب الرجوع إلى الإتفاق وشروطه لمعرفة حقوقك. وإن كانت هناك بيانات خاصة بالاستضافة الخاصة بالمشروع يجب تسليمها أيضًا، بعد الاستلام عليك تغيير بيانات الدخول والحساب لكي لا يتمكن شخص من الدخول. وستجد تفاصيل هنا:
×
×
  • أضف...