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

ياسر مسكين

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

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

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

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

    2

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

  1. ياسر مسكين

    Php

    يمكنك حل مشكلة عدم ظهور الصور المتشابهة في نفس المجلد عن طريق تعديل اسم الصورة عند تخزينها من خلال إضافة طابع زمني أو رقم تسلسلي إلى اسم الصورة لضمان عدم تكراره وهذا مثال لكيفية عمل هذا مع شرح الخطوات التي اعتمدتها يمكنك الاستلهام منها والتعديل وفقا لمشروعك وفكرتك: <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { $targetDir = "Good/"; $fileName = basename($_FILES["file"]["name"]); $fileType = pathinfo($fileName, PATHINFO_EXTENSION); // إنشاء اسم فريد للصورة $newFileName = uniqid() . '.' . $fileType; $targetFile = $targetDir . $newFileName; // نقل الملف إلى المجلد if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) { echo "تم رفع الصورة بنجاح: " . htmlspecialchars($newFileName); } else { echo "حدث خطأ أثناء رفع الصورة."; } } ?> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="file" required> <input type="submit" value="رفع الصورة"> </form> لاحظ هنا أنّ التابع uniqid() استخدمته لإنشاء معرف فريد يعتمد على الوقت بينما move_uploaded_file تنقل الملف من الموقع المؤقت إلى المجلد المحدد وبهذا الشكل كل صورة سيتم تخزينها بإسم فريد، حتى لو كانت متشابهة.
  2. بالنسبة للبدء في كورس الأكاديمية، فجميع الدورات في الأكاديمية تولي أهمية كبيرة لهذا الأمر بحيث تقوم بتخصيص مسار كامل لمن ليس له خلفية كبيرة باللغة، كما أنّ هنالك دورة خاصّة بالمبتدئين والذين لا يملكون أيّ خلفية عن الحاسوب والبرمجة، وهذا سيسهّل عليك الأمر، لذا فنصيحتي ألا تضيّع الوقت بالدراسة من خلال تطبيقات الهاتف الذكي صحيح أنها تساعد، لكن أعتقد أنها مساعدة فقط في ترسيخ المفاهيم النظرية لا أقل ولا أكثر، فالبرمجة تحتاج إلى تطبيق وتعلّم مستمر وإلى حاسوب، لذا حتى وإن اخترت البدء في الدراسة في كورس الأكاديمية الآن، أو بعدما تكون مستعدّا لهذا فأنصحك بالصبر، الالتزام والاستمرارية مع التطبيق المستمر لما تتعلّمه مع المدرب، ويمكنك بعدها استخدام تطبيقات الهاتف معامل مكمّل فهذا لا حرج فيه بتاتا، لكن تبقى الدورات المنظمة والمهيكلة أفضل أسلوب للتعلم في وقتنا هذا لما توفّره من التزام وانضباط في التعلم.
  3. بناء أول مشروع في مجال تعلم الآلة يتطلب المرور بعدة مراحل وخطوات، أولها تحديد الهدف أساسا من المشروع كأن تطرح السؤال حول المشكلة التي تريد حلّها أو المهمة التي تودّ تحقيقها لأنّ هذا المجال واسع وينبغي التخصيص. بعد ذلك نأتي لمرحلة البحث عن مجموعة بيانات مناسبة توجد العديد من المصادر التي يمكن الاستعانة بها من خلال استخدام بيانات مفتوحة أو جمع بياناتك الخاصة إن وجدت مسبقا. يلي ذلك عملية استكشاف البيانات من خلال تحليل البيانات وفهمها واستخدام أدوات مثل Pandas وMatplotlib أو Seaborn لرسم البيانات. بعدها نقوم بتنظيف البيانات ويقصد ذلك بمعالجة أي قيم مفقودة، وحذف البيانات الغير صالحة. بعدها تقوم باختيار نموذج تعلم الآلة الذي يناسب المشكلة (مثل الانحدار الخطي، أو الشجرة العشوائية، أو الشبكات العصبية وغيرها كثير). مرحلة تدريب النموذج تبدأ من خلال تقسيم البيانات إلى مجموعتين، أولاهما للتدريب والثانية للاختبار بحيث تستخدم مجموعة التدريب لتدريب النموذج. المرحلة الحساسة وهي تقييم عمل النموذج وأدائه باستخدام مجموعة الاختبار تستخدم عادة مقاييس مثل الدقة، F1-score، أو متوسط الخطأ وبعدها يتم تجربة تحسين النموذج عبر تعديل المعلمات أو استخدام تقنيات مثل توليد البيانات حينها إذا كنت راضيًا عن الأداء، يمكنك نشر النموذج باستخدام واجهة API أو تطبيق ويب مع الاستعانة بتوثيق المشروع، بما في ذلك الخطوات والتقنيات المستخدمة.
  4. ياسر مسكين

    php

    سأجمع لك الشيفرات لكن هذا مثال فقط وأرجو فهم الفكرة، لأن كل شخص يمكنه التعديل على هذا المفهوم بناء على احتياجاته الخاصة في مشروعه: هنا ملف Edit Profile: <?php session_start(); function getUserInfo($userId, $conn) { $sql = "SELECT id, username, image_extension FROM users WHERE id = ?"; $stmt = $conn->prepare($sql); $stmt->execute([$userId]); return $stmt->fetch(PDO::FETCH_ASSOC); } $userId = $_SESSION['user_id']; $userInfo = getUserInfo($userId, $conn); $imagePath = "k4/" . $userInfo['id'] . "." . $userInfo['image_extension']; // عرض نموذج التعديل ?> <!DOCTYPE html> <html> <head> <title>Edit Profile</title> </head> <body> <h2>Edit Profile</h2> <form action="update_profile.php" method="post" enctype="multipart/form-data"> <img src="<?php echo $imagePath; ?>" alt="Profile Picture" style="width: 100px;"><br> <input type="file" name="new_image" accept="image/*"><br> <input type="hidden" name="current_extension" value="<?php echo $userInfo['image_extension']; ?>"> <button type="submit">Update Profile</button> </form> </body> </html> أما الملف الآخر فهو لتحديث البروفايل وهو كالآتي: <?php if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['new_image'])) { $userId = $_SESSION['user_id']; $currentExtension = $_POST['current_extension']; $newImage = $_FILES['new_image']; if ($newImage['error'] == 0) { $newExtension = pathinfo($newImage['name'], PATHINFO_EXTENSION); $newPath = "k4/" . $userId . "." . $newExtension; // حذف الصورة القديمة إذا كانت موجودة $oldPath = "k4/" . $userId . "." . $currentExtension; if (file_exists($oldPath)) { unlink($oldPath); } // حفظ الصورة الجديدة move_uploaded_file($newImage['tmp_name'], $newPath); // تحديث الامتداد في قاعدة البيانات $sql = "UPDATE users SET image_extension = ? WHERE id = ?"; $stmt = $conn->prepare($sql); $stmt->execute([$newExtension, $userId]); echo "Profile picture updated successfully."; } else { echo "Error uploading new image."; } } ?>
  5. ياسر مسكين

    php

    صحيح جزء ملف التعديل مثلا يبدأ من هنا: <?php // في ملف update_profile.php if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['new_image'])) {
  6. ياسر مسكين

    php

    بالطبع لا مشكلة، سأقدم نموذجا لكل جزئية بما يقابلها من شيفرة لتفهم أفضل ثم يمكنك ربط الأفكار بناء على مشروعك الخاص، أولا بالنسبة لاسترجاع معلومات المستخدم فهذه الدالة تسترجع معلومات المستخدم، بما في ذلك امتداد الصورة من قاعدة البيانات الذي يجب أن يكون مخزنا في إحدى الأعمدة في قاعدة البيانات فقد استخدمت image_extension هنا في المثال وهو عمود مفترض في جدول users في قاعدة البيانات أين يخزن امتداد ملف الصورة الخاص بكل مستخدم. function getUserInfo($userId, $conn) { $sql = "SELECT id, username, image_extension FROM users WHERE id = ?"; $stmt = $conn->prepare($sql); $stmt->execute([$userId]); return $stmt->fetch(PDO::FETCH_ASSOC); } بالنسبة لبناء مسار الصورة هنا نبني المسار باستخدام معرف المستخدم والامتداد المخزن في قاعدة البيانات كما قلنا سابقا كالتالي: $imagePath = "k4/" . $userInfo['id'] . "." . $userInfo['image_extension']; أما هذا النموذج فيعرض الصورة الحالية ويسمح بتحميل صورة جديدة بحيث يتحقق من وجود صورة جديدة مُحمّلة ويعالجها. if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['new_image'])) { $userId = $_SESSION['user_id']; $currentExtension = $_POST['current_extension']; $newImage = $_FILES['new_image']; if ($newImage['error'] == 0) { $newExtension = pathinfo($newImage['name'], PATHINFO_EXTENSION); $newPath = "k4/" . $userId . "." . $newExtension; // حذف الصورة القديمة إذا كانت موجودة $oldPath = "k4/" . $userId . "." . $currentExtension; if (file_exists($oldPath)) { unlink($oldPath); } // حفظ الصورة الجديدة move_uploaded_file($newImage['tmp_name'], $newPath); // تحديث الامتداد في قاعدة البيانات $sql = "UPDATE users SET image_extension = ? WHERE id = ?"; $stmt = $conn->prepare($sql); $stmt->execute([$newExtension, $userId]); echo "Profile picture updated successfully."; } else { echo "Error uploading new image."; } } ثم هنا نقوم بتحديث الصورة وقاعدة البيانات: move_uploaded_file($newImage['tmp_name'], $newPath); $sql = "UPDATE users SET image_extension = ? WHERE id = ?"; $stmt = $conn->prepare($sql); $stmt->execute([$newExtension, $userId]);
  7. ياسر مسكين

    php

    بما أن الصور محفوظة في ذلك المجلد، فأكيد أنه يوجد عمود يحتوي على امتداد الصورة لذا لجلب الصورة من المجلد k4 يجب استخدام معرف المستخدم كاسم للملف ثم نقوم بجلب امتداد الصورة من قاعدة البيانات مع بناء مسار الصورة كالتالي: "k4/[user_id].[image_extension]" ثم لعرض الصورة في نموذج التعديل، استخدم المسار الذي بنيته وعند التعديل، يمكنك استخدام هذه المعلومات للوصول إلى الصورة الحالية وتحديثها إذا لزم الأمر.
  8. ياسر مسكين

    php

    حسنا، لنبدأ بكود تسجيل الدخول أولا وهو الذي حسب تصفحي له ففي البداية فهو يقوم بالتحقق من وجود جلسة نشطة للمستخدم: <?php session_start(); if (isset($_SESSION['id']) && isset($_SESSION['fname'])) { // باقي الكود هنا } else { header("Location: login.php"); exit; } أما الجزء الرئيسي لتعديل البيانات فيبدأ بعد التحقق من وجود البيانات المرسلة وهو كالتالي: if(isset($_POST['fname']) && isset($_POST['uname'])){ include "../db_conn.php"; $fname = $_POST['fname']; $uname = $_POST['uname']; $old_pp = $_POST['old_pp']; $id = $_SESSION['id']; // التحقق من البيانات وتحديثها // ... } أما بخصوص أسماء الأعمدة المستخدمة في قاعدة البيانات فهي على النحو التالي: id: معرف المستخدم fname: الاسم الكامل username: اسم المستخدم pp: صورة الملف الشخصي فالكود يقوم بتحديث هذه البيانات في جدول users في قاعدة البيانات أما بخصوص تحديث البيانات بدون تغيير الصورة فهذا الجزء هو الذي يقوم بهذا الأمر: $sql = "UPDATE users SET fname=?, username=? WHERE id=?"; $stmt = $conn->prepare($sql); $stmt->execute([$fname, $uname, $id]); أما الجزء الذي يقوم بتحديث البيانات مع تغيير الصورة: $sql = "UPDATE users SET fname=?, username=?, pp=? WHERE id=?"; $stmt = $conn->prepare($sql); $stmt->execute([$fname, $uname, $new_img_name, $id]); فالكود يتحقق من وجود ملف صورة جديد، ويقوم بتحميله وحذف الصورة القديمة إذا وجدت. أما لاستخراج كود تعديل البيانات، يمكنك استخدام الجزء الذي يبدأ من: if(isset($_POST['fname']) && isset($_POST['uname'])){ وينتهي قبل القوس } الأخير في الملف.
  9. لاحظ أنك ستجد أسفل فيديو كل درس في نهاية الصفحة صندوقا للتعليقات، أرجو منك طرح الأسئلة المتعلقة بالدورات هناك وليس هنا في قسم الأسئلة البرمجية، وهذا لنساعدك بالشكل المناسب. بالنسبة للخطأ الذي تواجهه فهو بسبب وجود شرط if الذي يتحقق من أن (10 % 2 === 0) وهذا الشرط دائمًا صحيح لأنه يعبر عن عملية حسابية ثابتة، حيث ناتج قسمة 10 على 2 هو دائمًا 5 والباقي صفر، مما يجعل هذا الشرط صحيحا دائما. لذلك فالحلقة while ستعمل 10 مرات، ولكن الشرط في if لا يستخدم قيمة i ولن يكون له أي تأثير حقيقي على سلوك الحلقة، وهذا يعني أن الحلقة ستزيد قيمة i من 1 إلى 10، لكن الشرط في if لا يقوم بأي فحص على قيمة i نفسها. لذا إذا كنت ترغب في التحقق من شيء يعتمد على i داخل الحلقة، يجب أن تغير شرط if ليستخدم i. على سبيل المثال، إذا كنت ترغب في طباعة القيم الزوجية فقط من 1 إلى 10، يجب أن يكون الشرط كالتالي: let i = 1; while (i <= 10) { if (i % 2 === 0) { console.log(i); } i++; }
  10. نعم، يمكنك استخدام الملفات بدون دمجها في ملف واحد ففي مجال تعلم الآلة، يمكن تحميل البيانات من الملفات المختلفة والعمل عليها بشكل مستقل أو بشكل متكامل وفقا لاحتياجات كل مشروع لكن في النهاية سيتوجب عليك دمجهما في مرحلة معينة من مراحل التدريب لأنك ستعمل على تدريب نموذج بواسطة هاته الملفات فمن الطبيعي أن تتم عملية الدمج. وأعرض عليك فيما يلي بعض الطرق التي يمكنك استخدامها للعمل مع الملفات بدون دمجها: العمل على كل ملف بشكل منفصل: بحيث يمكنك تدريب نموذج على كل ملف بشكل مستقل أو استخدام البيانات من ملف واحد للتحليل والنمذجة. دمج البيانات أثناء التدريب: يمكن تحميل كل ملف على حدة والعمل عليهما معا أثناء عملية التدريب باستخدام دمج بيانات معين عند الحاجة، مثل دمج البيانات فقط في مرحلة معينة من التحليل أو النمذجة. تقديم البيانات من الملفات المختلفة إلى النموذج: في بعض الحالات، قد تقوم بتدريب النموذج باستخدام البيانات من الملفين بشكل متواز أو تستخدم أحد الملفات كمدخلات والآخر كإخراجات.
  11. لاحظ أنك ستجد أسفل فيديو كل درس في نهاية الصفحة صندوقا للتعليقات، أرجو منك طرح الأسئلة المتعلقة بالدورات هناك وليس هنا في قسم الأسئلة البرمجية، وهذا لنساعدك بالشكل المناسب.
  12. يمكنك ذلك من خلال التعديل على الشيفرة خاصتك بحيث تكون هكذا: <?php echo "تم بنجاح"; flush(); ob_flush(); sleep(2); echo "\nاهلا وسهلا."; ?> بحيث تستخدم flush() و ob_flush() لضمان إرسال المخرجات فورا إلى المتصفح ثم ينتظر لمدة ثانيتين باستخدام sleep(2) بعدها يطبع عبارة "اهلا وسهلا." .
  13. لاحظي أنك ستجدين أسفل فيديو كل درس في نهاية الصفحة صندوقا للتعليقات، أرجو منك طرح الأسئلة المتعلقة بالدورات هناك وليس هنا في قسم الأسئلة البرمجية، وهذا لنساعدك بالشكل المناسب. كحل سريع عليك بالتحقق من صحة مسار ملف CSS في الوسم <link> داخل ملف HTML فإذا كان ملف CSS في نفس المجلد مثل ملف HTML، يجب أن يكون المسار هو اسم الملف فقط أما إذا كان في مجلد فرعي، لذا تأكد من استخدام المسار الصحيح هكذا: <link rel="stylesheet" href="styles.css"> أو إذا كان في مجلد فرعي مثل css: <link rel="stylesheet" href="css/styles.css">
  14. في هذه الحالة يمكنك للتحكم في عرض واختفاء الـ<select> الثاني بناء على التحديد الأول كما يمكنك تحديد الخيار الصحيح في الـ<select> الثاني بناء على القيمة المخزنة في قاعدة البيانات وهذا من خلال استخدام كود جافا سكريبت كما موضح هنا: <!-- الـselect الأول --> <select name="Cn" id="Cn" onchange="showSelect(this)"> <option value="">الجننس</option> <option value="انثى" <?php echo ($row['Cn'] == 'انثى') ? 'selected' : ''; ?>>انثى</option> <option value="ذكر" <?php echo ($row['Cn'] == 'ذكر') ? 'selected' : ''; ?>>ذكر</option> </select> <!-- الـselect الثاني --> <select id="na" name="nah" style="display: <?php echo ($row['Cn'] == 'انثى') ? 'block' : 'none'; ?>;" value="<?php echo $row['nah']; ?>"> <option value="">نوع المركز</option> <option value="المركز الاول" <?php echo ($row['nah'] == 'المركز الاول') ? 'selected' : ''; ?>>المركز الاول</option> <option value="المركز الثاني" <?php echo ($row['nah'] == 'المركز الثاني') ? 'selected' : ''; ?>>المركز الثاني</option> </select> <!-- JavaScript للتحكم في العرض --> <script> function showSelect(selectElement) { var naSelect = document.getElementById('na'); if (selectElement.value === 'انثى') { naSelect.style.display = 'block'; } else { naSelect.style.display = 'none'; } } </script> فهنا عند تغيير القيمة في الـ<select> الأول (Cn)، يقوم التابع showSelect بالتحقق مما إذا كان الخيار المحدد هو "انثى" فإذا كان كذلك يتم عرض الـ<select> الثاني (na) أما إذا لم يكن كذلك، يتم إخفاؤه. كما يتم تعيين display للـ<select> الثاني استنادا إلى القيمة المخزنة في قاعدة البيانات عند تحميل الصفحة، بحيث إذا كانت القيمة المخزنة هي "انثى"، يتم عرض الـ<select> الثاني بشكل افتراضي.
  15. لاحظ أنك ستجد أسفل فيديو كل درس في نهاية الصفحة صندوقا للتعليقات، أرجو منك طرح الأسئلة المتعلقة بالدورات هناك وليس هنا في قسم الأسئلة البرمجية،وهذا لنساعدك بالشكل المناسب.
  16. لاحظ أنك ستجد أسفل فيديو كل درس في نهاية الصفحة صندوقا للتعليقات، أرجو منك طرح الأسئلة المتعلقة بالدورات هناك وليس هنا في قسم الأسئلة البرمجية،وهذا لنساعدك بالشكل المناسب.
  17. الأمر في الحقيقة يختلف من شخص إلى آخر، وكلّ على حسب ظروفه فإذا كنت ترى نفسك قادرا على تخصيص وقت من 3 إلى 5 ساعات يوميا للتعلمّ فهذا أمر جيد، بالنسبة لطريقة دراسة الدورات فتختلف أيضا، والأهم هو الاستمرارية، الصبر، وتطبيق المفاهيم التي تكتسبها مع المدربين، ثم عمل المشاريع بنفسك دون الرجوع إلى الدروس، كما أن العديد من النصائح والطرق ستجدها موضحة بشكل جيد من قبل العديد من المدربين خلال سياق النقاش حول هذه الأسئلة أدناه، يمكنك الاطلاع عليها وتصفحها واكتساب الخبرات التي تم مناقشتها سابقا:
  18. لاحظ أنك ستجد أسفل فيديو كل درس في نهاية الصفحة صندوقا للتعليقات، هناك يمكنك وضع تعليقك أو إرفاق أي صور للأخطاء أو مجلدات لديك كما الصورة:
  19. لاحظ أنك ستجد أسفل فيديو كل درس في نهاية الصفحة صندوقا للتعليقات، أرجو منك طرح الأسئلة المتعلقة بالدورات هناك وليس هنا في قسم الأسئلة البرمجية،وهذا لنساعدك بالشكل المناسب.
  20. توجد العديد من الإضافات والامتدادات التي يمكن تثبيتها ولكني أنصح بتثبيت الأشهر منها ومع مرور الوقت ستكتشف إضافات أخرى مفيدة، يمكنك الاطلاع على أشهرها من خلال هذا الرابط: توجد العديد منها مثلا نذكر: HTML CSS Support: لتحسين تجربة كتابة HTML وCSS عبر اقتراحات وAutocomplete. CSS Peek: لرؤية تعريفات CSS مباشرة من HTML. Live Server: لتشغيل خادم محلي وعرض تغييرات HTML/CSS/JS مباشرة. JavaScript (ES6) code snippets: لتحسين إنتاجية كتابة كود JavaScript. ESLint: لضمان التزام كود JavaScript بمعايير الكتابة من خلال الفحص التلقائي. PHP Intelephense: لتوفير تكامل كامل مع PHP بما في ذلك التلميحات، والأخطاء، والتحذيرات. PHP Server: لتشغيل خادم PHP محلي لمعاينة صفحات PHP. PHP Debug: لتصحيح أخطاء PHP باستخدام Xdebug. Prettier - Code formatter: لتنسيق الكود بشكل تلقائي. Bracket Pair Colorizer: لتمييز الأقواس المتطابقة بألوان مختلفة. Path Intellisense: لاقتراح المسارات أثناء كتابة الكود. كما يمكنك تثبيتها من خلال الذهاب إلى أيقونة Extensions على الجانب الأيسر من VS Code (أو بالضغط على Ctrl + Shift + X) ثم البحث عن الإضافة التي تحتاجها في شريط البحث وبعدها الضغط على Install لتثبيتها. يمكنك استخدام امتداد Live Server لتشغيل الخادم المحلي ومعاينة HTML وCSS وJavaScript. لكن إذا كان لديك PHP، فاستخدم PHP Server أو XAMPP لتشغيل خادم PHP من خلال وضع مشروعك في مجلد htdocs لتتمكن من تشغيله عبر localhost.
  21. يمكنك معرفة لمحة عن محتوى الدورة من خلال هذا الرابط هنا: دورة جافا سكريبت. بالطبع يوجد شروحات من الألف إلى الياء بخصوص التسجيل، إنشاء الحساب، باستخدام NodeJs ضمن مسار مخصص به، يمكنك تصفح هذه المقالة التي توضح محتويات دراسة هذا المجال وتطوير الويب باستخدام جافا سكريبت.
  22. توقيت إنهاء الدورة يختلف من شخص إلى آخر، فهنالك من ينهيها مبكرا، وهنالك من يستغرق منه الأمر بعض الوقت، لكن الأهم هو أن يتم دراسة محتوى الدورة وليس تجاوزه، أي أن تحاول الفهم قدر المستطاع صحيح قد تواجه بعض التحديات في البداية لكن هذا الأمر طبيعي، وكلما كنت تطبّق المفاهيم التي تدرسها ستجد نفسك تتقدّم شيئا فشيئا نحو الانتهاء من الدورة وأنت مستفيد من محتواها. موعد المشروع النهائي والعديد من الاستفسارات حوله يمكنك تصفح هذه المصادر: أو يمكنك تصفح هذه المقالة الغنية عن التعريف: https://support.academy.hsoub.com/exams. أو مراسلة مركز مساعدة أكاديمية حسوب للاستفسار عن كل صغيرة وكبيرة حول الاختبار.
  23. ستجد في أسفل فيديو الدرس في الأسفل تماما صندوق تعليقات مخصص لطرح الأسئلة المتعلقة بالدورات، أرجو طرح الأسئلة هناك وليس هنا في قسم الأسئلة البرمجية حيث نطرح هنا فقط الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بالشكل المناسب.
  24. لاحظ أنك ستجد أسفل فيديو كل درس في نهاية الصفحة صندوقا للتعليقات، أرجو منك طرح الأسئلة المتعلقة بالدورات هناك وليس هنا في قسم الأسئلة البرمجية،وهذا لنساعدك بالشكل المناسب.
  25. لاحظ أنك ستجد أسفل فيديو كل درس في نهاية الصفحة صندوقا للتعليقات، أرجو منك طرح الأسئلة المتعلقة بالدورات هناك وليس هنا في قسم الأسئلة البرمجية،وهذا لنساعدك بالشكل المناسب.
×
×
  • أضف...