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

ياسر مسكين

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

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

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

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

    2

إجابات الأسئلة

  1. إجابة ياسر مسكين سؤال في ما الفرق بين هذين الجملتين في SQL؟ كانت الإجابة المقبولة   
    الفرق بين الاستعلامين هو في طريقة اختيار السجلات التي يتم عرضها، وسبب الاختلاف في النتائج هو كيفية تعامل كل استعلام مع الأعمدة "quantity" و"price" ففي الاستعلام الأول:
    select product_id, year as first_year, quantity, price from Sales where (product_id, year) in ( select product_id, min(year) from Sales group by product_id ); يتم تحديد السجلات التي تحمل أقل سنة (min(year)) لكل منتج (product_id) الشرط (product_id, year) يضمن أن الصف المحدد هو الذي يحتوي على أقل قيمة للسنة بعدها يتم الاحتفاظ بالأعمدة quantity و price كما هي موجودة في الصف الموافق لأقل سنة.
    بينما الاستعلام الثاني:
    select product_id, min(year) as first_year, quantity, price from Sales group by product_id; يستخدم group by لتجميع الصفوف حسب product_id بحيث يتم إرجاع أقل سنة (min(year)) لكل منتج، لكن لا يمكن ل SQL هنا معرفة أي قيمة من quantity أو price تختارها لأنهما لا يشتركان في قاعدة التجميع.
    لذلك إذا أردت التأكد من أن القيم الخاصة بـ quantity و price صحيحة، استمر باستخدام الاستعلام الأول، لأنه يربط القيم بالسجل الصحيح أما إذا كنت تريد العمل فقط مع السنة الدنيا دون الحاجة للتأكد من ارتباط الأعمدة الأخرى بالسنة، يمكنك استخدام الاستعلام الثاني.
  2. إجابة ياسر مسكين سؤال في أين أجد مستقل مصمم برنامج قصص مصورة بلغة c#؟ كانت الإجابة المقبولة   
    أنصحك بطرح سؤالك في إحدى منصات العمل الحر المتخصصة كخمسات، مستقل أو بعيد، أو غيرها، أما هنا في الأكاديمية فهي ليست مخصصة لذلك، يمكنك إيجاد مستقلين متمكّنين يمكنهم إنجاز مشروعك باحترافية كما يمكنك تقييم سيرتهم الذاتية وعملهم بناء على النتيجة التي يقدّمونها لك، لكن أولا عليك بالتسجيل مثلا في موقع مستقل كصاحب مشاريع ثم بعد ذلك تقوم بإضافة مشروعك للبحث عن مستقلين لإنجاز أعمالك.
  3. إجابة ياسر مسكين سؤال في أحتاج شخص يساعدني في مشروع تحليل وتصميم النظم! كانت الإجابة المقبولة   
    هل ترغب في الحصول على مساعدة لإنجاز هذا المشروع بنفسك أم ترغب في أن ينجزه لك مبرمج محترف؟
    في حال أردت التعلم يمكننا توجيهك للوصول إلى هذا المستوى سواء كنت مشتركا في إحدى الدورات أو لم تشترك يمكنك أخذ لمحة من هنا:
    أما إن كنت ترغب في أن يتم إنجازه كاملا فأنصحك بنشر عرض عملك في إحدى منصات العمل الحر، كمستقل وخمسات وبعيد وحتما ستجد هناك من يمكن أن ينفذ لك مشروعك.
  4. إجابة ياسر مسكين سؤال في هل بتعلمي لدورة بايثون سوف اصبح مؤهل لان ادخل سوق العمل و اصبح موظف براتب شهري ؟ كانت الإجابة المقبولة   
    يعتمد ذلك على حرصك على التعلم المستمر وعمل المشاريع الخاصة بالدورة بشكل جيد وفهم دروسها وإتمامك للاختبار النهائي، وبعد إتمامك للاختبار بنجاح سيتم مرافقتك من قبل مختصين لتحسين سيرتك الذاتية وملفاتك الشخصية على مختلف مواقع العمل الحر وسيتم إرشادك للحصول على عمل ودخول سوق العمل.
    لذا أنصحك بالتركيز حاليا مع دروس الدورة في حال كنت مشتركا فيها ويمكنك طرح أي انشغال أو استفسار حول الدورة في صندوق التعليقات المخصص لذلك أسفل كل درس.
  5. إجابة ياسر مسكين سؤال في هل يتم حذف جميع المعلومات الشخصية مع حذف حساب أكاديمية حاسوب كانت الإجابة المقبولة   
    أهنئك أولا على إتمامك للدورة، وإنجازك المشروع وتحصلك على الشهادة، هنيئًا لك، بخصوص سؤالك فلا يوجد حاليا إعداد مباشر لحذف الحساب مباشرة يمكنك الوصول لإعدادات ملفك الشخصي من هنا: https://academy.hsoub.com/settings/ لكني لا أنصحك بحذفه في حالة ما أردت أن تبقى على اطلاع دائم وتتلقى تحديثات الدورة، فالوصول غير محدود لها.
    يمكنني توجيهك إلى مركز مساعدة أكاديمية حسوب عبر هذا الرابط: مركز المساعدة.
    لكونهم المخوّلون بالتصرف في هذه الأمور، يمكنك طرح استفسارك وانشغالك بخصوص حسابك وسيتم التعامل مع حالتك وفق الإجراء المعمول به.
  6. إجابة ياسر مسكين سؤال في ما هي افضل استضافات المواقع؟ كانت الإجابة المقبولة   
    وعليكم السلام،
    يمكنك مراجعة هذه المقالة فهي تتحدث عن الموضوع باستفاضة:
  7. إجابة ياسر مسكين سؤال في لا تعليق كانت الإجابة المقبولة   
    في حال كنت تقصد التعليق أسفل دروس الدورة التي اشتركت فيها، فخاصية التعليق تعمل بشكل عادي أسفل الدرس ستجد صندوقا للتعليقات يمكنك وضع تعليقك عليه، أما بالنسبة للمسارات الأولى من الدورات الأخرى المفتوحة فأرشدك بمراجعة هذه الإجابة السابقة:
  8. إجابة ياسر مسكين سؤال في هل يوجد شرح git بالأكاديمية كانت الإجابة المقبولة   
    توجد سلسلة من المقالات المفيدة يمكنك الوصول إليها من خلال هذا الرابط وكلها متعلقة بال Git: مقالات الأكاديمية حول Git.
    كما يمكنك الوصول إلى عدة فيديوهات تتحدث عنه على قناة الأكاديمية على موقع يوتيوب من هنا مثلا هذا الفيديو يتحدث عن أساسيات Git:
    وهنا فيديو آخر يتحدث عن نفس الشيء نظام التحكم بالإصدارات وكيف يتم إدارة النسخ في Git:
  9. إجابة ياسر مسكين سؤال في اصدار شهادات PDF باللغة العربية Laravel كانت الإجابة المقبولة   
    مكتبة mpdf تعتبر من أفضل الخيارات لدعم اللغة العربية ويمكنك تثبيتها من خلال:
    composer require mpdf/mpdf ومن مميزاتها أن لها دعم كامل للغة العربية كما أنها سهلة التركيب والاستخدام وتوجد إمكانية استخدام صور كخلفية وتدعم اتجاه RTL بشكل جيد
    أي أن لها أداء جيد مع النصوص العربية
    ولدينا أيضا مكتبة Snappy PDF تثبيتها من خلال:
    composer require barryvdh/laravel-snappy دعمها جيد للغة العربية لكن المميز فيها أنها تعتمد على wkhtmltopdf ولها جودة عالية في تحويل HTML إلى PDF لكن ستحتاج إلى تثبيت wkhtmltopdf على السيرفر.
    في حين مكتبة DomPDF:
    composer require barryvdh/laravel-dompdf من مميزاتها أنها خفيفة وسريعة لكن دعمها محدود للغة للعربية لكنك لن تحتاج إلى تثبيت برامج إضافية.
    بالنسبة لحالتك بما أنك تريد استخدام صورة كقالب والكتابة عليها باللغة العربية وقد جربت FPDF ولم تنجح معك أنصحك باستخدام mPDF لأنها تدعم العربية بشكل ممتاز كما أنها سهلة الإعداد وتدعم استخدام الصور كخلفية كما تدعم تحديد مواضع النصوص بدقة.
     
  10. إجابة ياسر مسكين سؤال في تشغيل تطبيقReact native على emulator Android studio بدون Expo كانت الإجابة المقبولة   
    السبب حسب ماهو موضح في الخطأ فيبدو أن ملف react.gradle مفقود من مسار node_modules\react-native وبما أن المشروع قديم نوعا ما فيمكنك إعادة تثبيت React Native من خلال إزالته من مشروعك من خلال هذا الأمر:
    npm uninstall react-native react-native-cli يمكنك تجربة الحلول التالية لحل هذه المشكلة:
    ثم إعادة تثبيته باستخدام الأمر:
    npm install react-native react-native-cli لكن تأكد من استخدام إصدار Gradle متوافق مع React Native. يمكنك التحقق من إصدار Gradle المطلوب من خلال هذا الرابط هنا:  في وثائق React Native ومن أن إصدار Gradle المحدد في ملف build.gradle (app) يتطابق مع الإصدار المثبت على جهازك.
    هذا الأمر سيساعد أيضا من خلال تنظيف Cache npm فقد تكون المشكلة منه في بعض الحالات، باستخدام الأمر:
    npm cache clean --force ثم قم بإعادة تثبيت React Native مرة أخرى ولا تنسى من التثبت من أن ملفات Gradle موجودة في المسار الصحيح. عادة ما تكون موجودة في android/app/build.gradle و node_modules/react-native/react/build.gradle.
    إذا كانت الملفات مفقودة، يمكنك محاولة تنزيلها من مستودع React Native على غيتهاب من هنا: مستودع React Native على Github
     
  11. إجابة ياسر مسكين سؤال في إستفسار عن طريقة برمجة نظام إدارة القوالب php كانت الإجابة المقبولة   
    فهمتك، ستحتاج إلى تطوير الدوال والتكرارات اللازمة في ملفات القوالب لعرض المحتوى بطريقة ديناميكية باتباع هذه الخطوات:
    هيكلة ملفات القوالب، من خلال إنشاء مجلد يحتوي على ملفات القوالب الخاصة بموقعك، مثل:
       - `index.php`: لعرض الصفحة الرئيسية.    - `header.php`: لعرض الهيدر.    - `footer.php`: لعرض الفوتر.    - `single.php`: لعرض صفحة التدوينة الفردية.    - `post.php`: لعرض التدوينات الفردية. تطوير الدوال والتكرارات، ففي كل ملف قالب، يمكنك القيام بتطوير الدوال والتكرارات اللازمة لعرض المحتوى بشكل ديناميكي. على سبيل المثال، في ملف `index.php`، يمكنك استخدام حلقة تكرارية لعرض مقالات المدونة واستدعاء دالة لعرض العنوان والصورة والمحتوى لكل مقالة.
    بعدها يمكنك تطوير صفحة التدوينة الفردية (`single.php`) ففي هذا الملف، يمكنك استخدام دوال لعرض تفاصيل التدوينة الفردية مثل العنوان، المحتوى، التصنيفات، التعليقات، إلخ.
    بعدها في تطوير صفحة التدوينة (`post.php`) يمكنك استخدام هذه الصفحة لعرض التدوينات الفردية بعد النقر عليها من الصفحة الرئيسية أو الصفحة الفردية.
    ويجب أن تحرص على تنظيم الربط بين الصفحات في ملفات القوالب لضمان التنقل السلس بين الصفحات.
  12. إجابة ياسر مسكين سؤال في خطأ Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client كانت الإجابة المقبولة   
    شكرا على إرفاقك لملفات المشروع.
    لقد تصفحتها، ووجدت أن المشكلة تكون بعد الضغط على أي منتج لتصفحه، هنا يظهر لك الخطأ الأول وهو عبارة عن خطأ [ERR_HTTP_HEADERS_SENT]: ويعني أنه لا يمكن تعيين الرؤوس بعد إرسالها إلى العميل في errorMiddleware.js ويحدث هذا الخطأ عادة عند محاولة إرسال أكثر من استجابة واحدة لطلب واحد، وغالبًا ما يكون السبب في ذلك هو إرسال استجابة في middleware أو معالجات الطرق ثم محاولة إرسال استجابة أخرى لاحقًا.
    حللت المشكلة من خلال التأكد من إرسال استجابة واحدة فقط لكل طلب، وهنا في ` ، نقوم بتجنب إرسال استجابة إذا تم بالفعل إرسال الرؤوس.من خلال إضافة هذين السطرين في برمجية errorHandler في ملف errorMiddlware.js:
    if (res.headersSent) {     return next(err); // تمرير الخطأ إلى middleware التالي إذا تم بالفعل إرسال الرؤوس   } بهذا الشكل:
    const errorHandler = (err, req, res, next) => {   if (res.headersSent) {     return next(err); // تمرير الخطأ إلى middleware التالي إذا تم بالفعل إرسال الرؤوس   }   let statusCode = res.statusCode === 200 ? 500 : res.statusCode;   let message = err.message;   res.status(statusCode).json({     message: message,     stack: process.env.NODE_ENV === "production" ? null : err.stack,   }); }; export { errorHandler }; بعد حل المشكل يظهر الخطأ التالي كما هو موضح في الصورة، وهو متعلق بالمورد فهو غير موجود والخطأ يكمن في ملف productController.js، ويحدث هذا الخطأ عندما يُتوقع وجود مورد (في هذه الحالة ، هو عبارة عن منتج) ولكنه لا يتم العثور عليه.لضمان التعامل الصحيح مع الأخطاء وإرجاع الاستجابات المناسبة عند عدم العثور على الموارد، يمكن تصحيح الكود من خلال استرداد المنتج باستخدام ال Id بالشكل الصحيح بهذا الشكل في ملف productController.js،
     
    import asyncHandler from "../middlewares/asyncHandler.js"; import Product from "../models/productModel.js"; /** * desc Fetch All Products * route Get /api/products * access Public */ const getProducts = asyncHandler( async(req, res) => { const products = await Product.find({}) res.json(products) }); /** * desc Fetch Product By Id * route Get /api/products/id * access Public */ const getProductById = asyncHandler(async (req, res) => { const product = await Product.findById(req.params.id); if (product) { res.json(product); return; // Add return here to exit the function after sending the response } res.status(404).json({ message: 'Resource not found' }); // Use 404 status for resource not found }); export { getProducts, getProductById }; وهكذا لن تظهر أي مشكلة.

  13. إجابة ياسر مسكين سؤال في حركة اللاعب من منظور الشخص الثالث في يونيتي third person كانت الإجابة المقبولة   
    في هذه الحالة، يجب استخدام إدخالات مؤشر الفأرة لتغيير اتجاه اللاعب والكاميرا.
    using UnityEngine; using UnityEngine.InputSystem; public class PlayerMovement : MonoBehaviour {     public float speed = 5f;     private Vector2 movementInput;     private Vector2 mouseInput;     private Transform mainCameraTransform;     void Start()     {         // الحصول على مكون التحويل للكاميرا الرئيسية         mainCameraTransform = Camera.main.transform;     }     // استدعاء الإدخال لتحريك اللاعب     private void OnMove(InputValue value)     {         movementInput = value.Get<Vector2>();     }     // استدعاء الإدخال لتحديث اتجاه الفأرة     private void OnLook(InputValue value)     {         mouseInput = value.Get<Vector2>();     }     void FixedUpdate()     {         // حساب الحركة الجديدة بناءً على الإدخالات         Vector3 movement = new Vector3(movementInput.x, 0f, movementInput.y) * speed * Time.fixedDeltaTime;         // تحريك اللاعب         transform.Translate(movement);         // تحديث اتجاه الكاميرا بناءً على حركة المؤشر         Vector3 rotatePlayer = new Vector3(0f, mouseInput.x, 0f) * Time.fixedDeltaTime * 100f;         transform.Rotate(rotatePlayer);         // تحديث اتجاه الكاميرا بناءً على حركة المؤشر الرأسي         Vector3 rotateCamera = new Vector3(-mouseInput.y, 0f, 0f) * Time.fixedDeltaTime * 100f;         mainCameraTransform.Rotate(rotateCamera);     } } هنا تمت إضافة دالة جديدة `OnLook` للتعامل مع إدخالات حركة المؤشر بحيث تقوم هذه الدالة بتحديث قيمة `mouseInput` التي تستخدم لتحديث اتجاه اللاعب والكاميرا، هذا الكود يستخدم `Camera.main` للوصول إلى مكون التحويل الخاص بالكاميرا.
×
×
  • أضف...