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

محمد_عاطف

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

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

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

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

    134

كل منشورات العضو محمد_عاطف

  1. نعم بالفعل سيتم حفظها على الاستضافة بجوار ملف php الذي به هذا الكود . يمكنك بعد انشاء النسخة اعادة التوجيه الى اسم الملف مع المسار الموجود به وسيتم تحميل الملف على جهازك
  2. يرجى محاولة إستبدال الدالة system بالدالة exec هكذا : exec($command, $output) // بدلا من system($command, $output) إذا ظهرت مشكلة لديك يرجى إرفاقها هنا . إذا لم تظهر يرجى قراءة الإجابة التي أرفقتها لك سابقا جيدا وإتباع ما تم ذكره فيها فمن الممكن المشكلة لديك في متغيرات البيئة . وهذه هي الإجابة يرجى مراجعتها جيدا :
  3. وعليكم السلام ورحمة الله وبركاته. في جافاسكريبت الكائنات (Objects) هي عبارة عن مجموعات من الأزواج تتكون من مفتاح (key) و قيمة (value). وإن الكائنات في جافاسكريبت لا تحتفظ بترتيب محدد للخصائص ا(لمفاتيح) الخاصة بها. أى أن البيانات لا يتم تخزينها دائما بنفس الترتيب الذي تمت إضافتها به مثل المصفوفات ولا يمكن الاعتماد على ترتيب البيانات عند التكرار عبر الكائن. في المواصفات الرسمية لجافاسكريبت (ECMAScript)، لا يتم ضمان ترتيب الخصائص في الكائنات. قبل الإصدار ES6 كانت معظم المتصفحات تعرض الخصائص بنفس الترتيب الذي تمت إضافتها به لكن هذا لم يعد السلوك الحالي منذ ES6 حيث تم تحديد بعض القواعد لترتيب الخصائص لكنها لا تنطبق على جميع الحالات. حيث القواعد الحالية لترتيب الخصائص: المفاتيح الرقمية (أرقام): يتم ترتيبها تصاعديا. المفاتيح النصية (strings): يتم ترتيبها حسب الترتيب الذي تمت إضافتها به. المفاتيح من نوع Symbol: يتم ترتيبها حسب الترتيب الذي تمت إضافتها به. ولكن كما وضحت لك هذا الترتيب ليس مضمونا. لنرى المثال التالي : let obj = { "b": 2, "a": 1, 3: "three", 1: "one" }; console.log(obj); // { '1': 'one', '3': 'three', b: 2, a: 1 } console.log(Object.keys(obj)); // قد يعطي ["1", "3", "b", "a"] أو ["1", "3", "a", "b"] لاحظ كيف في الكائن السابق تم ترتيب المفاتيح التي هي أرقام أولا ترتيب تصاعدي حيث تم وضع 1 أولا و من ثم 3 . وبعد ذلك المفاتيح النصية تم ترتيبها بناء على الترتيب التي تم وضعها به . حيث تم وضع b أولا قبل a حين أنشأنا الكائن لهذا ظهرت b قبل 2 . ولكن كما وضحت لك هذا الترتيب ليس مضمون الحصول عليه. المشكلة الرئيسية لديك في دالة reduce حيث أنت تقوم بإنشاء كائن وتقوم بوضع الخصائص به وتجعل المفاتيح له هي أرقام لهذا يتم ترتيبها تصاعديا .حيث كما وضحت لك أن javascript تقوم بترتيب الكائن بالقواعد السابقة التي وضحتها وليس كما قمت أنت بوضعها . لهذا يتم ترتيب العنصر بشكل مختلف عن الذي أنشأته . والحل الأفضل لك هو إستخدام Map بدلا من ال obj في دالة reduce هكذا : function orderWeight(strng) { // "103 123 4444 99 2000" => "2000 103 123 4444 99" let arr = strng.split(" "); let weightsObject = {}; arr.map((number)=>{ let total = 0; let chars = number.split("") chars.map((char)=>{ total += +char; }) return weightsObject[number] = total; }) let sortedValues = Object.entries(weightsObject) .sort(([, a], [, b]) => a - b) .reduce((acc, [key, val]) => (acc.set(key, val)), new Map()); console.log(sortedValues); console.log(weightsObject); } orderWeight("100 180 90 56 65 74 68 86 99") وستجد أنه تم التريتب بناء على ترتيب وضع الخصائص وليس كما تفعل الكائنات.
  4. وعليكم السلام ورحمة الله وبركاته. ال Deep Learning ليس دائما أفضل من ال Machine Learning بشكل عام بل يعتمد ذلك على المشكلة التي تعمل عليها وحجم البيانات والميزات المتاحة لديك. حجم البيانات (Data Size): Deep Learning: إن التعليم العميق يتطلب كميات ضخمة وكبيرة جدا من البيانات لتدريب النماذج بفعالية. فإذا كانت لديك بيانات ضخمة ومعقدة مثل الصور أو الصوت أو حتى النصوص فإن الشبكات العصبية العميقة مثل CNN أو RNN ستكون جيدة لك. Machine Learning: إن تعلم الآلة يمكن أن يعمل بشكل جيد مع مجموعات بيانات أصغر من التعلم العميق . تعقيد المشكلة (Problem Complexity): Deep Learning: إن التعليم العميق مناسب للمشاكل المعقدة التي تحتوي على علاقات غير خطية أو أنماط معقدة مثل التعرف على الصور و معالجة اللغة الطبيعية والتعرف على الصوت و الشبكات العصبية قادرة على تعلم العلاقات المعقدة من البيانات. Machine Learning: إن تعلم الآلة يعمل بشكل جيد مع المشاكل الأبسط أو عندما تكون العلاقات بين الميزات وواضحة قليلا و إذا كانت المشكلة يمكن حلها باستخدام خوارزميات أبسط إذا فليس هناك أى حاجة لإستخدام التعلم العميق . عدد الميزات (Number of Features): Deep Learning: إن التعليم العميق يمكنه التعامل مع عدد كبير جدا من الميزات بشكل تلقائي حيث يستطيع النموذج أن يتعلم الفرق بين المميزات وأي المميزات هي الأكثر أهمية. Machine Learning : إن تعلم الآلة قد يحتاج إلى اختيار الميزات يدويا أو إستخدام هندسة المميزات ال (Feature Engineering) لتحسين الأداء خاصة إذا كان عدد الميمزات كبير لديك. الوقت والحسابات (Computation and Time): Deep Learning: إن التعليم العميق يتطلب قوة حسابية كبيرة بإستخدام ال GPUs أو ال TPU ووقت التدريب كبير وبخاصة مع البيانات الكبيرة. Machine Learning: إن تعلم الآلة عادة ما يكون أسرع في التدريب ويتطلب موارد حسابية أقل من التعلم العميق. تلخيصا لما سبق يمكنك إستخدام التعلم العميق عندما يكون لديك كمية كبيرة جدا من البيانات و عندما تكون المشكلة معقدة بشكل كبير وتتطلب تعلم أنماط غير خطية ومعقدة وأيضا إذا كانت الموارد لديك تسمح بذلك . أما عندما تكون البيانات محدودة لديك وتكون المشكلة أبسط ويمكن حلها بخوارزميات أبسط والموارد التي لديك ليست كافية فالأفضل إستخدام تعلم الآلة. ويمكنك قراءة الإجابة التالية للتوضيح أكثر :
  5. وعليكم السلام ورحمة الله وبركاته. هل يظهر البطئ وإستهلاك البطارية الكثير دائما أم في بعض الأحيان . إذا لم يكن دائما هل يمكنك توضيح متى يتم ذلك ؟ هل عندما تستخدم برنامج ما ؟ أو تقوم بتنفيذ أمر معين في ال power shell أو ال cmd ؟ يمكنك دائما فتح مدير المهام task manager لرؤية السبب الذي يؤدي إلى هذا . يمكنك فتح ال task manager من خلال الضغط بالزر الأيمن على شريط المهام : يرجى الضغط على ال CPU لرؤية البرامج التي تستهلك موارد كثيرة ويمكنك رؤية النسب لكل برنامج : يمكنك محاولة تنزيل antivirus لفصح الجهاز لديك حيث مضاد الفايروسات الخاص بالويندوز ليس جيدا في إكتشاف جميع الفيروسات. وأنصح بتنزيل برنامج malwarebytes وسيعطيك فترة مجانية يمكنك منه فحص جهازك وهو جيد في إكتشاف الفايروسات وال malware التي تسرق بياناتك أو تعمل في الخلفية.
  6. وعليكم السلام ورحمة الله وبركاته. أولا قبل التقسيم يجب عليك التأكد من أن الفئات أو التصنيفات التي لديك في البيانات متوازنة أيضا. فإذا كانت البيانات نفسها غير متوازنة مثل وجود فئة أكثر من الأخرى فستحتاج إلى استخدام تقنيات مثل Stratified Sampling لتستطيع الحفاظ على نفس النسبة في كل مجموعة. حيث يمكنك من استخدام train_test_split مع stratify للحفاظ على نفس التوزيع في كل مجموعة : from sklearn.model_selection import train_test_split X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.3, stratify=y) X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, stratify=y_temp) هنا test_size=0.3 تعني أننا نريد 30% من البيانات أن تكون في مجموعة التطوير والاختبار. و stratify=y تضمن أن التوزيع في الفئات y سيكون متشابها في جميع المجموعات. حيث أن X هي البيانات و إن y هي الفئات. ويمكنك قراءة المزيد حول stratify في مكتبة scikit-learn من خلال الرابط : https://scikit-learn.org/stable/modules/cross_validation.html#stratification
  7. ستجد في الرابط الخاص بشروط التقد للإختبار كل شئ ستريده . وإليك التالي وهو مقتبس من هذا الرابط : سنحدد لك موعد لاجراء محادثة صوتية لمدة 30 دقيقة يطرح المدرب فيها أسئلة متعلقة بالدورة ويناقش معك ما نفذته خلالها. سيحدد لك المدرب مشروعًا مرتبطًا بما تعلمته أثناء الدورة لتنفيذه خلال فترة محددة تتراوح بين أسبوع الى أسبوعين. سيراجع المدرب المشروع الذي أنجزته، وإن سارت جميع الخطوات السابقة بشكل صحيح، ستتخرج وتحصل على الشهادة أو يرشدك المدرّب لأماكن القصور ويطلب منك تداركها ثم التواصل معنا من جديد.
  8. وعليكم السلام ورحمة الله وبركاته. بعد الإنتهاء من الدورة يمكنك محادثة مركز الدعم من خلال الرابط التالي : https://support.academy.hsoub.com/conversations ويمكنك إخبارهم برغبتك في التقدم للإمتحان . ويرجى التأكد أولا من أنك قد أنهيت على الأقل أربع مسارات من الدورة و رفع جميع التطبيقات التي قمت بها في الدروس مع المدرب على github . ويمكن قراءة الشروط للتقدم للإختبار من خلال الرابط التالي: https://support.academy.hsoub.com/exams
  9. وعليكم السلام ورحمة الله وبركاته. أولا بالنسبة إلى أن الصور لا تظهر ذلك بسبب أنه لم يتم تنفيذ أمر ربط مجلد storage وذلك لأن الصور بداخل مجلد storage وليست public لهذا يجب تنفيذ أمر الربط ليتم وضع رابط storage بداخل مجلد public . لهذا يجب تنفيذ الأمر التالي : php artisan storage:link أما بخصوص عرض المنتجات فهناك مشكلة إما في التنسيقات أ, أنك قمت بتغير هيكل الصفحة ولهذا التنسيقات قد إختلفت . ولا أعلم ما هي هيكل الصفحة الذي كنت تستعمله مسبقا ولكن أعتقد أن المنتجات من المفترض أن تكون بداخل عنصر div والذي يحوي السمة frame-21 . ولهذا قمت بتعديلها لك . وأيضا في ملف التنسيقات سيتوجب عليك وضع الخاصية flex-wrap بقيمة wrap للعنصر frame-18 وأيضا سيتوجب عليك وضع تنسيقات للصور حتي يكون حجمها مناسب حيث إذا لم يتم وضع حجم لها ستأخذ كامل الصفحة . لذلك يجب عليك وضع السطر التالي في ملف التنسيقات في سطر 543 : flex-wrap: wrap; وإضافة تنسيقات الصور التالية في الملف أيضا : .frame-21 img { width: 100px; } وستظهر لك بالشكل التالي : إذا أردت تغير حجم الصور يمكنك تغيرها في التنسيق الصابق وزيادة حجمها ويمكنك تغير التنسيقات الأخرى كما تريد بنفسك . لقد قمت بإرفاق الملفين لك بعد التعديل . stylePS.css gallery.blade.php
  10. لا داعي للشكر . وإياكم اللهم آمين . هذه مشكلة في postman بسبب أنه إذا أردنا إرسال بيانات من خلال طلب PUT أو PATCH يجب أن يتم إرسالها من خلال x-www-form-urlencoded : ولكن x-www-form-urlencoded لا تدعم إرسال ملفات ولهذا يمكننا إرسال الطلب ك POST ولكن نضيف ال _method بنوع الطلب الذي نريده سواء PUT أو PATCH و سيتم إرسال البيانات دون أى مشاكل وسيستطيع لارافل التعرف على نوع الطلب من خلال ال _method. وهذه المشكلة شائعة في Postman
  11. من الممكن أن المشكلة في postman لنحاول إرسال الطلب من نوع POST اي يجب عليكي تغير PUT إلى POST وإضافة : _method بقيمة PUT في البيانات هكذا :
  12. يرجى إستبدال $request->all() بالكود $request->validated(). أى في الجزء المشار إليه في الصورة السابقة يرجى إستبداله بالتالي : $request->validated() ويرجى أيضا محاولة طباعة السطر السابق والتاكد من أن البيانات التي يتم إرسالها من postman تصل بشكل صحيح. إذا إستمرت المشكلة يرجى إرفاق المشروع للإطلاع عليه ومساعدتكي بشكل افضل.
  13. يرجى حذف السطر الذي أخبرتك بوضعه . لقد ظننت أن هذا هو ال controller وليس ال service . من المفترض أن يتم التعديل . هل قمتي بوضع المتغير $fillable في ال model الخاص بال Organizer ؟ حيث يجب وضع الأعمدة التي تريدين أن يتم تعديلها أو حفظها من خلال ال mass assignment . حيث إذا لم يتم وضع المتغير $fillable فلن يتم تعديل الأعمدة الموجودة بهذا النموذج. لذلك يجب التأكد من وجود السطر التالي في النموذج Organizer : protected $fillable = ['name','image'];
  14. وعليكم السلام ورحمة الله وبركاته. أولا تحتاج أن تتعلم كيفية إستخدام إستعلام mysqldump في mysql لأخذ نسخة إحتياطية من قاعدة البيانات . حيث هذا هو الإستعلام الذي ستقوم به وكتابته في كود php ويمكنك تعلم المزيد حول كيفية إستيراد وتصدير قاعدة بيانات mysql من خلال المقال التالي : وإليك الكود التالي لفعل ذلك من خلال php : <?php // بيانات الاتصال بقاعدة البيانات $host = 'localhost'; // خادم myqsl $user = 'root'; // اسم المستخدم $pass = ''; // كلمة المرور $dbname = 'database_name'; // اسم قاعدة البيانات // تحديد اسم الملف الذي سيتم حفظ النسخة الاحتياطية فيه $backupFile = 'backup_' . $dbname . '_' . date('Y-m-d_H-i-s') . '.sql'; // إستعلام mysql الخاص بأخذ نسخة إحتياطية $command = "mysqldump --host=$host --user=$user --password=$pass $dbname > $backupFile"; // تنفيذ الأمر system($command, $output); // التأكد من أن النسخة الاحتياطية تم إنشاؤها if ($output === 0) { echo "تم إنشاء النسخة الاحتياطية بنجاح!"; } else { echo "حدث خطأ أثناء إنشاء النسخة الاحتياطية."; } ?> وإليك الإجابة التالية بتفصيل كيف تقوم بأخذ نسخة إحتياطية وحل المشكال التي من الممكن أن تواجهك : أما إذا أردت إستعادة النسخة الاحتياطية وإستيرادها إلى قاعدة بيانات لديك فيمكنك استخدام الكود التالي: <?php // بيانات الاتصال بقاعدة البيانات $host = 'localhost'; // خادم mysql $user = 'root'; // اسم المستخدم $pass = ''; // كلمة المرور $dbname = 'database_name'; // اسم قاعدة البيانات // إسم ملف النسحة الإحتياطية التي تريد إستيراده $backupFile = 'backup_2025-02-15_12-00-00.sql'; // التأكد من أن الملف موجود if (file_exists($backupFile)) { // إستعلام mysql الخاص بإستيراد النسخة الإحتياطية $command = "mysql --host=$host --user=$user --password=$pass $dbname < $backupFile"; // تنفيذ الأمر system($command, $output); // التأكد من نجاح الاستعادة if ($output === 0) { echo "تم استعادة النسخة الاحتياطية بنجاح!"; } else { echo "حدث خطأ أثناء استعادة النسخة الاحتياطية."; } } else { echo "الملف غير موجود."; } ?>
  15. وعليكم السلام ورحمة الله وبركاته. الخطأ لديكي أنكي تقومين بتعريف data كمعامل في الدالة . وتقومين بتمريرها للدالة update دون وضع البيانات بها . حيث البيانات تكون في الطلب request ولا يتم تمريرها إلى data تلقائيا. لذلك يجب في بداية الدالة كتابة السطر التالي : $data = $request->all(); وهكذا سيتم تمرير البيانات إلى المتغير data وهي البيانات التي تم إرسالها من النموذج form وهكذا ستحتوي data على البيانات الصحيحة وسيتم تمريرها إلى الدالة update . ويفضل حذف data من المعاملات الخاصة بالدالة .
  16. إذا لنقم بطريقة إرسال الأحداث مع useState لأن ال localstorage تغيرها لا يؤدي إلى تحديث حالها المكونات. يرجى إستبدال ملف routes.js بالتالي : const router = (user) => createBrowserRouter([ { path: "/", element: !user ? <LoginPage /> : <Navigate to="/dashboard" /> }, { path: "/dashboard", element: user ? <DashboardLayout /> : <Navigate to="/" />, children: [ { index: true, element: <Dashboard /> }, ] } ]); export default function Router() { const [user, setUser] = useState(JSON.parse(localStorage.getItem("user"))); useEffect(() => { const handleStorageChange = () => { setUser(JSON.parse(localStorage.getItem("user"))); }; window.addEventListener('storage', handleStorageChange); return () => { window.removeEventListener('storage', handleStorageChange); }; }, []); return <RouterProvider router={router(user)} />; } والآن في ملف LoginForm.js نقوم بإرسال الحدث بعد حفظ البيانات في ال localstorage هكذا : const submitHandler = async (e) => { e.preventDefault(); mutate(formData, { onSuccess: (data) => { localStorage.setItem("user", JSON.stringify(data.user)); window.dispatchEvent(new Event("storage")); navigate("/dashboard"); } }); };
  17. الخطأ الأساسي لديك أنك تقوم بمحاولة إرفاق عنوان الصورة التي تحاول رفعها من الواجهة الأمامية وهذا خاطئ . حيث لا يجب إرسال عنوان بل يجب إرسال الملف نفسه من الواجهة الأمامية لتستطيع حفظ الملف من خلال الواجهة الخلفية. في ملف frontend\src\components\createProduct.js سطر 20 يجب إرسال ال image وليس req.file.path حيث لا يوجد ما يسمى req في الواجهة الأمامية وأيضا المتغير لم تقم بتمريره لهذا يحدث خطأ أنك تحاول إستخدام متغير req فارغ . لهذا يجب عليك إستبدال السطر بالتالي : formData.append('image', image); بعد ذلك في سطر 43 يرجى وضع الملف مباشرة وليس العنوان url هكذا : setImage(e.target.files[0]); بعد ذلك في سطر 52 يرجى إستبداله بالتالي لتظهر الصورة في النموذج form حينما تقوم برفعها : <img src={image ? URL.createObjectURL(image):""} style={{ margin: "0 auto", width: "25%" }} /> الآن تم حل مشكلة الواجهة الأمامية . توجد مشكلة في الواجهة الخلفية في ملف backend\routes\index.js حيث في سطر 26 انت تحاول إستقبال الملف بإسم file ولكنك في الواجهة الأمامية قمت بإرساله من خلال إسم image وليس file لذلك يمكنك إما تغيره هنا أو في الواجهة الأمامية . ويمكنك تغيره هنا هكذا : router.post("/create-products",upload.single("image"),isLoggedIn,productController.createProduct); اما بخصوص الإضافة إلى cart فأنت في الواجهة الأمامية تقوم بإرسال البيانات في ال headers وهذا خاطئ حيث يجب إرسالها في ال body وأنت تستقبلها من ال body في الواجهة الخلفية.وأيضا يجب أن تقوم بعمل parse للبيانات التي تقوم بإحضارها من ال localStorage . لهذا في ملف frontend\src\components\getProduct.js سطر رقم26 يرجى إستبداله بالتالي : userId: JSON.parse(localStorage.getItem("id")), وسطر 39 يجب إستبداله بالتالي : .post(ADD_TO_CART ,headers, ولقد قمت بإرفاق الملفات لك بعد التعديل . index.js createProduct.js getProduct.js
  18. وعليكم السلام ورحمة الله وبركاته. إن collections هي وحدة (module) مدمجة في بايثون. توفر لك هياكل بيانات متقدمة ومحسنة مقارنة بالأنواع الأساسية مثل القوائم (list) و القواميس (dict) و المجموعات (set). وهذه الوحدة مرتبطة بشكل كبير بهياكل البيانات لأنها توفر لك نظام حاويات تخزن بها البيانات و التي ستسهل عليك التعامل مع البيانات بطرق أكثر كفاءة وفعالية. ومن هياكل البيانات التي توفرها لك : namedtuple : نستخدمها لإنشاء tuple بأسماء حقول مما يجعل الوصول إلى العناصر أكثر وضوحا بدلا من استخدام الفهرس والتعامل مع الارقام. deque : هي قائمة ذات طرفين تسمح بإضافة وحذف العناصر من البداية والنهاية بكفاءة وبسرعة دون الحاجة لإستخدام حلقات التكرار أو تغيرها يدويا. Counter : نستخدمها لحساب تكرار العناصر في قائمة أو أي كائن قابل للتكرار حيث تقوم بإنشاء قاموس مكون من المفاتيح وهي القيم الفريدة في البيانات و قيمة تلك القواميس هي عدد تكرار تلك البيانات. وإليك التوثيق الرسمي لها لمزيد من التفاصيل والدوال التي تقدمها لك : https://docs.python.org/3/library/collections.html
  19. وعليكم السلام ورحمة الله وبركاته. المشكلة الأولي أنك لا تقوم بحفظ بيانات المستخدم في localStorage عند تسجيل الدخول . ولذلك عند إعادة التوجيه إلى dashboard لا يتم العثور على user في localStorage ويتم إعادة التوجيه مرة أخرى إلى login . لهذا يجب عليك إستبدال الكود السابق بهذا الكود والذي نقوم فيه بتخزين بيانات المستخدم : const submitHandler = async (e) => { e.preventDefault(); mutate(formData, { onSuccess: (data) => { localStorage.setItem("user", JSON.stringify(data)); navigate("/dashboard"); } }); }; وتأكد من أن المتغير data هو بيانات المستخدم لديك . وإذا كانت البيانات بداخل كائن أخر بداخل data مثل data.user تأكد من حفظ data.user حينها. يجب أن يحل ذلك المشكلة إذا ظلت المشكلة أخبرني وذلك لنقوم بتجربة حل إنشاء حدث لإعادة تحديث الحالة.
  20. هل هذه هي الصفحة التي تقوم بإرسال البيانات لها ؟ إذا كان كذلك حاول طباعة البيانات في بداية الملف وأنظر هل يتم الطباعة أم لا في نافذة network وذلك لتتأكد هل يذهب الطلب بشكل صحيح أم لا . ولكن أعتقد أن المشكلة في ملف إرسال البريد . وخاصة في السطر أخير contact->send فإذا تم طباعة الجملة التي كتبتها في بداية الملف فإذا الخطأ في php-email-form.php
  21. الخطأ الآن هو خطأ مختلف وهو 405 Method not allowed وهو يخبرك أن نوع الطلب هذا غير مسموح به أى أنه لا يقبل نوع POST . لذلك يجب عليك التأكد في الخادم أنك قمت بإنشاء الطلب من نوع POST أيضا وليس GET فقط .
  22. هذا بسبب أنك تحاول إرسال البيانات إلى الخادم ولكنه لم يتم الوصول إلى الخادم وهذا بسبب إما أنه يوجد مشكلة لديك في الإنترنت أو أن الخادم لا يعمل . أوحدثت مشكلة أثناء تنفيذ طلبك . يرجى فتح نافذة network في أدوات المطور من خلال الضغط على CTRL + SHIFT + I وإختيار نافذة network : بعد ذلك قم بالضغط على زر send message مرة أخرى وستجد الطلب يظهر هنا ويمكنك رؤية سبب الخطأ. يرجى إرفاق صورة للطلب لديك في نافذة network مع إرفاق الكود لمساعدتك.
  23. هنا نحن في أكاديمية حسوب لا نقوم بالإجابة على أسئلة الإختبارات أو التقيمات ولكن يمكننا أن ندلك على طريقة الحل. أولا بالنسبة إلى توسيط العناصر في الشاشة فيمكنك إستخدام flexbox لتستطيع بناء عناصر متجاوبة وتوسيطها في أى حجم للشاشة ويمكنك قراءة الدرس التالي حول كيفية إستخدام flexbox : أما بخصوص المؤشر فتوجد خاصية في css تسمي caret-color يمكنك قراءة كيفية إستخدامه من خلال موسوعة حسوب على الرابط التالي : الخاصية caret-color ولتستطيع إنشاء border يحوى لونين يمكنك إستخدام الدالة linear-gradient()‎ في css مع الخاصية border-image لتحقيق ذلك ويمكنك قراءة كيفية إستخدام تلك الخاصيتين من خلال موسوعة حسوب على الرابط التالي : الدالة linear-gradient()‎ الخاصية border-image يمكنك محاولة حل التقيم بنفسك وإخبارنا بالكود الذي توصلت إليه .
  24. ستجدين أسفل فيديو الدرس صندوق للتعليقات كما هنا يرجى طرح سؤالك أسفل الدرس وليس هنا حيث هنا قسم الأسئلة العامة ولا نقوم بإجابة الأسئلة الخاصة بمحتوى الدورة أو الدرس، وذلك لمعرفة الدرس الذي توجد به مشكلتك و لمساعدتك بشكل أفضل.
  25. لا يمكنك إستخدام متغير قبل تعريفه في أى لغة برمجة . لذلك يجب عليك نقل هذا الكود في بداية الصفحة لتستطيع إستخدامه في أى مكان بعده.
×
×
  • أضف...