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

Mustafa Suleiman

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

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

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

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

    474

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

  1. أرجو تشغيل الفيديو ثم إيقافه لبعض الوقت وسيتم تحميل جزء كبير منه وسيعمل معك بدون مشكلة. حاليًا لا تتوفر خاصية التحميل للدروس، وذلك لحماية المحتوى من القرصنة وحماية حقك أنت أيضًا.
  2. ستحتاج إلى أن يكون لديك دراية بلغات الويب وهم HTML, CSS, JS أو يمكنك استخدام مكتبات جاهزة للواجهة الأمامية مثل بوتستراب أو مكونات Tailwind. أو يمكنك شراء قالب جاهز.
  3. في بداية التعلم ذلك ما سيحدث لو قمت بالإنقطاع فجأة، تخيل الأمر كما لو أنك تتعلم قيادة السيارة فور الإنقطاع ستنسى طريقة القيادة وستحتاج إلى البدء من نقطة قريبة من البداية تقريبًا مرة أخرى. لكن بعض المعلومات ستكون في ذاكرتك مثل طريقة التنقل بين السرعات وتشغيل السيارة وهكذا، على العكس لو كنت تقوم بقياة السيارة لفترة طويلة فحتى لو انقطعت ستحتاج فترة بسيطة للعودة كما كنت، فالأمر أصبح مهارة ثابتة لديك، أو مثل لاعب الكرة يعود لللإحماء بعد فترة الإصابة. نفس الأمر في البرمجة، لكن في بداية التعلم يجب الإلتزام بجدول زمني وعدم الإنقطاع والتعلم بشكل مستمر وكتابة الكود والتطبيق العملي أهم نقطة في تعلم البرمجة ولا أقصد الكتابة وراء الشرح فذلك للتعلم، أما التطبيق فيكون بمفردك وتستطيع العودة للشرح لمراجعة بعض الأمور. ستجد تفصيل هنا:
  4. ممتاز، كفكرة مشروع جيد للتدريب، قومي بتحليل بيانات مبيعات شركة دولية لفهم أداء المنتجات في مختلف الأسواق، تحديد المناطق الجغرافية ذات الأداء العالي والمنخفض، وتقديم توصيات لتحسين الأداء. والبيانات ستكون كالتالي: تفاصيل المبيعات اليومية بما في ذلك التاريخ، المنتج، الكمية المباعة، والسعر. معلومات عن العملاء مثل الاسم، العمر، الجنس، والموقع الجغرافي. تفاصيل المنتجات مثل الاسم، الفئة، والسعر. معلومات عن الموظفين مثل الاسم، الدور، والموقع الجغرافي. حاولي البحث عن قاعدة بيانات مناسبة لذلك أو توليدها بنفسك، وعامًة المصادر الجيدة للبحث عن ذلك هم: Kaggle UCI Machine Learning Repository Google Dataset Search Awesome Public Datasets ومن خلال SQL عليك كتابة استعلامات SQL لاستخراج البيانات المطلوبة، وتنظيف البيانات عن طريق إزالة التكرارات وتصحيح الأخطاء. ثم تنظيف البيانات بواسطة Excel وPython، أي استخدام Excel لتنظيف البيانات بشكل أولي (مثل إزالة الفراغات، تصحيح الأخطاء الإملائية)، ثم مكتبة Panda في بايثون لإجراء تنظيف متقدم مثل التعامل مع القيم المفقودة وتحويل أنواع البيانات، وأيضًا لتحليل البيانات، مثل حساب المبيعات الشهرية، تحديد أفضل المنتجات أداءً، وتحليل سلوك العملاء. ثم مكتبات مثل Matplotlib وSeaborn لإنشاء رسوم بيانية توضيحية. بعد ذلك استيراد البيانات النظيفة إلى Power BI وTableau، وتقديم تحليل شامل يتضمن: الأداء الشهري والسنوي للمبيعات. تحليل جغرافي لمناطق الأداء العالي والمنخفض. تحليل الفئات العمرية والجنسية للعملاء. أداء المنتجات حسب الفئة. ثم بناءًا على التحليل والتصور، تقديم توصيات لتحسين الأداء، ومنها استهداف فئات عملاء معينة لزيادة المبيعات، تحسين المنتجات ذات الأداء الضعيف أو التسويق لها بشكل أفضل وتركيز الجهود التسويقية في المناطق الجغرافية ذات الأداء العالي.
  5. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  6. هناك أمر بحاجة للتوضيح، ستشعر في البداية أنك لست قادر على كتابة الخوارزميات ولست متفهم لطبيعة ذلك وما الذي عليك فعله، كل ذلك طبيعي، الأمر بحاجة إلى وقت وممارسة مع زيادة درجة التعقيد شيئًا فشيئًا. دائمًا كلمة السر هي عدم التفكير في المشكلة ككل، بل تفهم المطلوب، ثم تقوم بتقسيم المشكلة إلى أجزاء حسب المطلوب، ثم العمل على جزء جزء والتفكير في طريقة حله ثم ربط تلك الأجزاء ببعضها، وذلك هو المتبع في البرمجة. للتوضيح، تخيل أن الخوارزمية هي وصفة لتحضير طبقك المفضل، بالتالي عبارة عن سلسلة من الخطوات الواضحة والمنطقية التي يجب اتباعها خطوة بخطوة لحل مشكلة معينة أو إنجاز مهمة محددة، وإليك تطبيق عملي: 1- حدد المشكلة، ما الذي تريد من برنامجك أن يفعله بالضبط؟ إجابتك مثلاً أريد برنامج يحسب مساحة الدائرة. 2- حدد المُدخلات، ما هي المعلومات التي يحتاجها البرنامج من المستخدم؟ يحتاج البرنامج إلى معرفة نصف قطر الدائرة. 3- حدد العمليات، ما هي العمليات الحسابية أو المنطقية التي يجب على البرنامج تنفيذها؟ يجب على البرنامج ضرب نصف القطر في نفسه ثم ضرب الناتج في π (باي). 4- حدد المُخرجات، ما هي النتيجة التي يجب على البرنامج عرضها؟ يجب على البرنامج عرض مساحة الدائرة. لذا الخوارزمية بشكل مختصر ستكون كالتالي: قراءة قيمة نصف القطر من المستخدم. ضرب نصف القطر في نفسه. ضرب الناتج في 3.14 (قيمة π). عرض الناتج على أنه مساحة الدائرة. وبداخل كل نقطة تستطيع التفصيل.
  7. لا تقلق بخصوص الرد، يتم حاليًا مراجعة مشاريعك والأمر بحاجة إلى وقت، وسيتم الرد عليك، أرجو الإنتظار لبعض الوقت، في حال هناك أمر مطلوب منك سيتم توضيحه لك. في الوقت الحالي، من الأفضل مراجعة الأساسيات وتنفيذ مشروع كتدريب وذلك لتجهيز نفسك للإختبار.
  8. ستحتاج إلى "Realtime Database" أو "Firestore Database" حسب اختيارك، أنشئ قاعدة بيانات جديدة إذا لم تكن قد أنشأتها من قبل. ضمن قاعدة البيانات، أضف مسارًا جديدًا لتخزين سعر الدولار، كالتالي: { "exchangeRate": { "USD": 3.75 } } في لوحة تحكم الأدمن، أضف حقل إدخال للسعر الجديد وزر لحفظ التغييرات. <input type="text" id="dollarRate" placeholder="Enter dollar rate"> <button onclick="updateDollarRate()">Update Rate</button> ثم استخدم Firebase SDK و Firebase Functions للتفاعل مع قاعدة البيانات وتحديث سعر الدولار من خلال الإتصال بـ API يوفر ذلك، مثلاً في Node.js سيكون الأمر كالتالي: const functions = require('firebase-functions'); const admin = require('firebase-admin'); const axios = require('axios'); admin.initializeApp(); exports.updateDollarRate = functions.pubsub.schedule('every hour').onRun(async (context) => { try { const response = await axios.get('https://api.exchangerate-api.com/v4/latest/USD'); const dollarRate = response.data.rates.LOCAL_CURRENCY; await admin.database().ref('exchangeRate/USD').set(dollarRate); console.log('Dollar rate updated successfully:', dollarRate); } catch (error) { console.error('Error updating dollar rate:', error); } }); في LOCAL_CURRENCY ضع بدلاً منها رمز عملتك المحلية. ثم في تطبيق الديلفري، استخدم Firebase SDK لقراءة سعر الدولار من قاعدة البيانات وتحديث أسعار المنتجات التي يتم جلبها من قاعدة البيانات حسب سعر الدولار من خلال ضرب سعر المنتج بالدولار في سعر العملة المحلية حاليًا بالنسبة للدولار.
  9. عليك تشغيل Xampp كمسؤول كالتالي: ثم الضغط على الأيقونة التالية: وستظهر لك نافذة منبثقة اختر yes. بعد ظهور علامة صح في الأيقونة حاول تشغيل MySQL مجددًا. لكن أنصحك باستخدام Laragon وليس Xampp فهي بيئة تطوير قديمة.
  10. هنا symbol.upper(), لا تقوم بتحديث قيمة المتغير symbol بعد تحويله إلى أحرف كبيرة. def choose_symbol(self): h = ["X", "O"] while True: symbol = input(f"{self.name}, choose your symbol ({'/'.join(h)}): ") if symbol.isalpha() and len(symbol) == 1: symbol = symbol.upper() # تحديث قيمة symbol if symbol in h: self.symbol = symbol h.remove(symbol) break else: print(f"Please enter {h}") continue else: print("Please enter one letter only.") continue
  11. بسبب كيفية استخدامك لمتغير choice داخل دالتي display_main_menu و display_endgame_menu. أنت تقارن choice (وهو مُدخل نصي) مباشرةً بالأعداد الصحيحة (1 أو 2)، وفي بايثون، لن تنجح تلك المقارنة كما تتوقع، تستطيع تحويل الأرقام إلى نص من خلال دالة str. الصحيح هو تعديل المقارنة من choice == 1 إلى choice == '1' ومن choice == 2 إلى choice == '2' وذلك يضمن أنك تقارن مُدخل النص مع القيم النصية '1' و '2'. أيضًا دالتي choice يجب أن يقوموا بإرجاع نص ('1' أو '2'). بجانب أنت تستخدم h.remove(symbol) لإزالة الرمز الذي تم اختياره من القائمة h، لكن input() تُرجع دائمًا نصًا، بينما تحتوي h على أحرف كبيرة، لذا حوّل مُدخل المستخدم إلى حرف كبير باستخدام symbol.upper() قبل التحقق من وجوده في h وقبل إزالته.
  12. في حال كان في الأكاديمية هنا فالأمر ممنوع مشروع التخرج يتم إتمامه من قبلك بدون مساعدة.
  13. في الأكاديمية هنا؟ أم في الجامعة؟
  14. هل ذلك مشروع تخرج أم ما الذي تعمل عليه أرجو التوضيح؟
  15. ستحتاج جافاسكريبت لتنفيذ ذلك من أجل إظهار وإخفاء الحقل من خلال حدث change: <!DOCTYPE html> <html> <head> <script> document.addEventListener('DOMContentLoaded', function() { var selectElement = document.getElementById("book1"); var imageUploadDiv = document.getElementById("imageUpload"); selectElement.addEventListener('change', function() { if (selectElement.value === "yes") { imageUploadDiv.style.display = "block"; } else { imageUploadDiv.style.display = "none"; } }); }); </script> </head> <body> <form method="post" enctype="multipart/form-data"> <label for="book1">هل تريد إرسال صورة؟</label> <select id="book1" name="book1"> <option value="">اختر</option> <option value="yes">نعم</option> <option value="no">لا</option> </select> <div id="imageUpload" style="display:none;"> <label for="skool2">اختر صورة:</label> <input type="file" name="skool2" id="skool2"> </div> <input type="submit" value="إرسال"> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { if ($_POST["book1"] == "yes") { if (isset($_FILES["skool2"]) && $_FILES["skool2"]["error"] == 0) { $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["skool2"]["name"]); if (move_uploaded_file($_FILES["skool2"]["tmp_name"], $target_file)) { echo "تم تحميل الصورة بنجاح."; } else { echo "حدث خطأ أثناء تحميل الصورة."; } } else { echo "يرجى اختيار صورة لتحميلها."; } } else { echo "لم يتم اختيار تحميل صورة."; } } ?> </body> </html>
  16. ستحتاج إلى حلقة للتكرار وعرض الخيارات الخمسة، ثم حلقة أخرى في PHP للتكرار على تلك الحقول، وعليك تحديث البيانات الخاصة باستعلام قاعدة البيانات لوضع الصورة في العمود المناسب. <body> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { for ($i = 1; $i <= 5; $i++) { if (isset($_FILES["image" . $i]) && $_FILES["image" . $i]["error"] == 0) { $image_name = $_FILES["image" . $i]["name"]; $image_tmp = $_FILES["image" . $i]["tmp_name"]; move_uploaded_file($image_tmp, "uploads/" . $image_name); $sql = "UPDATE table_name SET hoos" . $i . " = '$image_name' WHERE id = id_name"; if ($conn->query($sql) === TRUE) { echo "تم تحميل الصورة " . $i . " بنجاح.<br>"; } else { echo "حدث خطأ أثناء تحميل الصورة " . $i . ": " . $conn->error . "<br>"; } } } $conn->close(); } ?> <form method="post" enctype="multipart/form-data"> <?php for ($i = 1; $i <= 5; $i++) { echo " <label for='option" . $i . "'>الخيار " . $i . ":</label> <select name='option" . $i . "'> <option value=''>اختر</option> <option value='option1'>الخيار 1</option> <option value='option2'>الخيار 2</option> <option value='option3'>الخيار 3</option> </select> <input type='file' name='image" . $i . "'><br><br> "; } ?> <input type="submit" value="إرسال"> </form> </body> عامًة وجود خمسة أعمدة منفصلة (hoos1، hoos2، ... hoos5) لخمس صور محتملة تصميم غير مرن وغير قابل للتطوير مستقبلاً.
  17. لا تقلق بخصوص مستقبل البرمجة، سأتحدث معك صراحًة اقلق حول المهارات التي تمتلكها أنت، تعلم مهارة أفضل من تعلم لا شيء. بالطبع هناك أفضلية لمجال عن مجال لكن تحديد المناسب لك بشكل عام سيضرك، يجب معرفة تفاصيل عنك وعن ما الذي تريد فعله. عامًة تعلم لغة مثل بايثون في البداية لن يضرك وستتمكن من فهم البرمجة بشكل عام، ومن الأفضل البدء بدورة علوم الحاسوب لكي تصحل على فكرة عامة عن علوم الحاسوب ومجال البرمجة، ثم بعدها تستطيع تحديد ما المجال الذي تراه قريب مما تريده. بخصوص طريقة الدراسة أرجو قراءة التالي:
  18. السؤال بشكل عام سيؤدي إلى حصولك على إجابة عامة، لذا ما هو عمرك الحالي وها هو تخصصك الدراسي، وما هي أوضاعك المالية هل تبحث عن عمل في أقرب وقت أم لديك الوقت كافي لتعلم ما تريد؟ هل لديك سابق معرفة بالحاسوب أو مجال البرمجة؟ أرجو الإجابة عن ما سبق لتحصل على إجابة مفيدة.
  19. بالنسبة للإختبار الحد الأدنى للتقدم هو إنهاء 4 مسارات فقط، وسيتم إختبارك في تلك المسارات فقط وليس كل محتوى الدورة. لكن لتحقيق الفائدة الكاملة من الدورة، أنصحك بإكمالها للنهاية، إتمام مشروع واحد ليس كافٍ حقيقةً، عليك التعرض لأفكار مختلفة والتعلم من المنطق البرمجي الخاص بها، في البداية أنت بحاجة إلى الكثير من الممارسة.
  20. لا مشكلة، أرجو إذن التواصل مع مركز المساعدة وسيتم تبديل الدورة لك. وفي الوقت الحالي تستطيع دراسة مسار أساسيات بايثون
  21. في البداية لن تتمكن من ذلك إلا من خلال الدفع لأصحاب بعض المواقع ذات الجودة الجيدة للإعلان عن موقعك ووضع رابط له في المحتوى. ولا أنصحك بالقيام ببناء أية روابط إلا بعد مرور 3 أشهر أو حتى 6 أشهر من وجود موقعك في جوجل، لأن جوجل تعلم أنه ليس من الطبيعي أن يشار إلى موقع جديد من خلال روابط خلفية. للعلم رابط واحد من موقع لديه Authority مرتفع أي تصنيف عالي، أفضل من 100 رابط من مواقع ذات تصنيف منخفض. ولا تُفكر في بناء روابط في أي موقع لديه spam score مرتفع. أيضًا موقعك مختص بالطقس، فلا تقوم ببناء رابط خلفي من موقع مختص بالطبخ مثلاً، فذلك سيضر بموقعك أكثر من نفعه، يجب أن يكون هناك صلة بالمحتوى الخاص بموقعك، مثلاً موقع تقني يقوم بالإعلان عنك كموقع طقس جيد أو وضع رابط لك أو موقع به مقالات تتحدث عن الطقس والمناخ وهكذا. أيضًا يمكنك إنشاء محتوى عملاق جدير بالنشر والإشارة إليه من قبل الآخرين، أو حتى تصميم موقع ذو تجربة مستخدم مرتفعة.
  22. كنصيحة، لو أردت تحسين ظهور موقعك في جوجل فالأمر بحاجة إلى صبر واستمرارية، لا تتوقع أي نتيجة على المدى القصير، على المدى الطويل ستجد نتيجة خاصًة بعد السنة الأولى بعد أن يكتسب موقعك ثقة جوجل ليقوم بترتيبه في مرتبة أعلى من مواقع أخرى حسب محتواه وسرعة الموقع وتجربة المستخدم والفائدة التي يقدمها له. بعد الأمور في موقعك قد تستغرق 3 أشهر لحين ظهور نتيجة خاصًة في بدايات الموقع. بخصوص التحديثات في الكونسول، من الطبيعي أن يحدث ذلك حيث ستعمل عناكب جوجل على أرشفة موقعك مرة في الأسبوع مثلاً، وسيتعين عليك إضافة الروابط بنفسك. لذا الزحف والفهرسة قد تستغرق من بضعة أيام إلى بضعة أسابيع لاكتشاف موقعك الإلكتروني الجديد وزحف إليه وفهرسة صفحاته. بمجرد الزحف إلى موقعك وفهرسته، يستغرق الأمر من يومين إلى أسبوع حتى تبدأ البيانات في الظهور في Search Console. وبعد فترة يصبح الأمر أسرع فأسرع، لحين أن يصل الأمر أن يصبح يومي.
  23. في حال فهمت ما تريده، فالأمر يتم من خلال جافاسكريبت لإظهار وإخفاء الحقول، كالتالي: <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script> function toggleInput() { var selectElement = document.getElementById("options"); var inf1Field = document.getElementById("inf1Field"); var inf2Field = document.getElementById("inf2Field"); if (selectElement.value === "option1") { inf1Field.style.display = "block"; inf2Field.style.display = "none"; } else if (selectElement.value === "option2") { inf1Field.style.display = "none"; inf2Field.style.display = "block"; } else { inf1Field.style.display = "none"; inf2Field.style.display = "none"; } } </script> </head> <body> <form action="process.php" method="post" enctype="multipart/form-data"> <label for="options">اختر الخيار:</label> <select id="options" name="options" onchange="toggleInput()"> <option value="">اختر...</option> <option value="option1">الخيار الأول</option> <option value="option2">الخيار الثاني</option> </select> <div id="inf1Field" style="display: none;"> <label for="inf1">حقل inf1:</label> <input type="file" name="inf1" id="inf1" accept="image/*"> </div> <div id="inf2Field" style="display: none;"> <label for="inf2">حقل inf2:</label> <input type="file" name="inf2" id="inf2" accept="image/*"> </div> <button type="submit">إرسال</button> </form> </body> </html> ثم في PHP تقوم بمعالجة الحقول المرسلة وتحديد حجم الصور كالتالي: <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $option = $_POST["options"]; $targetDir = "uploads/"; $uploadOk = 1; if ($option == "option1" && isset($_FILES["inf1"])) { $targetFile = $targetDir . basename($_FILES["inf1"]["name"]); $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION)); if ($_FILES["inf1"]["size"] > 2000000) { echo "عذراً، حجم الملف كبير جداً."; $uploadOk = 0; } $check = getimagesize($_FILES["inf1"]["tmp_name"]); if ($check === false) { echo "الملف ليس صورة."; $uploadOk = 0; } if ($uploadOk == 1) { if (move_uploaded_file($_FILES["inf1"]["tmp_name"], $targetFile)) { echo "تم رفع الملف ". htmlspecialchars(basename($_FILES["inf1"]["name"])). " بنجاح."; } else { echo "عذراً، حدث خطأ أثناء رفع الملف."; } } } elseif ($option == "option2" && isset($_FILES["inf2"])) { $targetFile = $targetDir . basename($_FILES["inf2"]["name"]); $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION)); if ($_FILES["inf2"]["size"] > 2000000) { echo "عذراً، حجم الملف كبير جداً."; $uploadOk = 0; } $check = getimagesize($_FILES["inf2"]["tmp_name"]); if ($check === false) { echo "الملف ليس صورة."; $uploadOk = 0; } if ($uploadOk == 1) { if (move_uploaded_file($_FILES["inf2"]["tmp_name"], $targetFile)) { echo "تم رفع الملف ".
  24. لا يوجد بالأكاديمية دورة خاصة بالتصميم، لكن هناك مقالات خاصة بذلك: قسم أدوبي فوتوشوب
  25. لا يُشترط ذلك، الفكرة هي أنّ الأمر سيصبح أسهل بمراحل بسبب المعرفة التي ستكتسبها، لكن تستطيع تعلم بايثون بدون دراسة علوم الحاسوب. الفكرة هي أنك لن تتمكن من معرفة كيف تعمل بعض الأمور في الخلفية وما سببها وهكذا. في حال تواجه صعوبة في فهم بعض الأمور، من الأفضل البدء بها بالطبع، أو مثلاً ليس لديك أي احتكاك بالحاسوب وما يتعلق به وتستخدمه بشكل عادي. من الصعب إعطائك نصيحة بشكل عام دون معرفة تفاصيل عنك ستجد تفصيل هنا:
×
×
  • أضف...