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

بلال زيادة

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

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

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

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

    30

كل منشورات العضو بلال زيادة

  1. عند الدخول إلى الدورة ستجد كل الأقسام يمكنك البدء فيها تدريجياً بدءًا ب أساسيات لغة بايثون Python و متابعة الدورة مع المدرب و من ثم الانتقال لباقي الأقسام خطوة خطوة.
  2. يمكنك الدخول إلى الدورة من خلال تبويب دوراتي و ستجد الدورة التي اشتركت فيها و يمكنك البدء بأول الدروس مع المدرب تدريجياً و ستجد ربما أسفل الدروس ما سوف تحتاجه.
  3. نعم، إذا قمت باستبدال الرابط https://jsonplaceholder.typicode.com/users برابط http://localhost/users في الكود المستخدم مع مكتبة Axios، فقد يتم عرض بيانات المستخدمين إذا كان هناك خادم محلي يعمل على localhost (مثل http://localhost:3000/users) ويعيد بيانات المستخدمين بتنسيق JSON.
  4. إذا كنت بتسأل عن المستقبل بعد أخذ كورس في الذكاء الاصطناعي (AI) وبعد موجة الـ AI الحالية، الإجابة تعتمد على إزاي هتستفيد من الكورس وتطور مهاراتك الـ AI لسه في مرحلة نمو متسارعة، وموجته مش هتوقف قريب؛ بالعكس، هتتوسع في كل المجالات زي الطب، التعليم، الصناعة، وحتى الفن، لما تخلّص الكورس، الخطوات اللي ممكن تتبعها عشان تبقى في الصورة: حاول تعمل مشاريع عملية، زي بناء موديل AI صغير أو تحليل بيانات. المشاريع هتخلّيك مرغوب أكتر في سوق العمل. الـ AI بيتغير بسرعة. اشترك في مدونات، كورسات متقدمة، أو تابع أخبار زي اللي على X عن آخر الأبحاث والتطبيقات. اختار مجال زي معالجة اللغة الطبيعية (NLP)، الرؤية الحاسوبية، أو التعلم المعزز. التخصص هيديك ميزة تنافسية. شارك في مجتمعات AI زي اللي على GitHub أو LinkedIn، وتواصل مع محترفين في المجال. في المستقبل، الـ AI هيستمر يكون جزء أساسي من الصناعات. الشركات هتحتاج ناس عندهم مهارات عملية وفهم عميق للـ AI، مش بس شهادات. لو بتفكر في فرص شغل، مجالات زي هندسة البيانات، تطوير النماذج، أو حتى أخلاقيات الـ AI هتكون مطلوبة جدًا.
  5. افتح ملف main.py و تحقق من أن الكود يحتوي على تعريف صحيح للمشهد مثال from manim import * class BooleanOperations(Scene): def construct(self): circle = Circle() # رسم دائرة self.play(Create(circle)) # عرض الدائرة self.wait(1) # الانتظار لمدة ثانية و حاول تشغيل Manim من موجه الأوامر (Command Line) cd d:\Hassoub\New_School\Pharaonic_Programmer\projects\Dijkstra's_Algorthum\Scripts وتأكد تفعيل البيئة الافتراضية .\venv\Scripts\activate و الأمر التالي لتشغيل المشهد manim -p -qh main.py BooleanOperations التأكد من إعدادات Manim Sideview لإضافة Manim Sideview في VS Code تعتمد على إعدادات معينة، من السجل، يبدو أن الإضافة تعثر على Manim والبيئة الافتراضية بشكل صحيح، لكن قد تكون هناك مشكلة في الإعدادات، ما يجب التحقق منه، إصدار Manim Sideview: تأكد من أنك تستخدم أحدث إصدار من الإضافة. يمكنك تحديثها من VS Code عبر قسم الإضافات (Extensions). إعدادات الإضافة: افتح إعدادات VS Code (Ctrl + ,). ابحث عن Manim Sideview. تأكد من أن المسار إلى Manim والبيئة الافتراضية صحيح (يجب أن يكون تلقائيًا إذا تم تثبيت Manim في venv). بما أنك قمت بتثبيت FFmpeg، تحقق من إضافته إلى متغيرات النظام (System Path)، يجب فتح موجه الأوامر وتنفيذ الأمر التالي ffmpeg -version إذا لم يظهر إصدار FFmpeg، أعد إضافته إلى الـ Path، حيث يجب البحث عن ملف ffmpeg.exe (عادةً في مجلد مثل C:\ffmpeg\bin). أضف هذا المجلد إلى متغيرات النظام (System Environment Variables) عبر إعدادات Windows. حاول تحديث Manim إلى أحدث إصدار من خلال الأمر التالي pip install --upgrade manim
  6. المشكلة يخبرك بأنه لم يتم العثور على المسار الخاص desktop\ code يجب التأكد من المسار الذي تريد انشاء المجلد بداخله و ثم تنفيذ الأمر التالي mkdir taskaty
  7. يعني أن المتصفح لا يستطيع العثور على الملف المطلوب (في هذه الحالة index.html) على الخادم أو المسار المحدد. هذا الخطأ (404) يشير إلى أن المورد غير موجود، تأكد من ملف index.html بأنه موجود في مساره ، هل يمكنك ارفاق صورة من المشكلة؟
  8. لو لاحظت في تفاصيل كل دورة تخبرك التفاصيل بأن كل دورة تبدأ مع الطالب من الصفر و بالتالي لا يشترط بأن يكون لديه خلفية مسبقة في المجال و بالتالي لا داعي للقلق.
  9. انصحك دورة تطوير التطبيقات باستخدام لغة JavaScript لانها تبدأ من الاساسيات و من الصفر و تؤهل الطالب لخوض اي دورة تعتمد على الواجهات الامامية مستقبلاً.
  10. إذا كنت بتستخدم Python 3 pip install python-nmap يمكنك التحقق من إصدار python لديك من خلال الأمر التالي pip --version إذا كان python3 فلا بأس، لو لا يمكن استخدام pip3 pip3 install python-nmap
  11. مصطلح Vibe Coding أو "الكودينج الحسي" هو مفهوم جديد في عالم البرمجة ظهر في فبراير 2025 على يد عالم الحاسوب أندريه كارباثي، اللي كان أحد مؤسسي OpenAI وقائد فريق الذكاء الاصطناعي في تسلا سابقًا. باختصار، المصطلح ده بيصف طريقة برمجة تعتمد بشكل كبير على الذكاء الاصطناعي (AI)، وتحديدًا نماذج اللغة الكبيرة (LLMs) زي ChatGPT أو Cursor Composer. بدل ما تكتب الكود بنفسك سطر سطر، بتقدر توصف فكرتك أو المطلوب باستخدام لغة بشرية عادية (زي الإنجليزية أو حتى العربية لو الأداة بتدعمها)، والذكاء الاصطناعي هو اللي بيكتب الكود ليك. يعني بتحول دورك من مبرمج بيكتب كود يدويًا إلى مُوجّه أو مُدير بيوصف اللي عايزه والـ AI ينفذه. أهم خصائص Vibe Coding الاعتماد على اللغة الطبيعية بدل ما تتعلم لغات برمجة زي Python أو JavaScript، بتكلم الـ AI بلغتك العادية، مثلاً: "قلّص المسافة في الشريط الجانبي للنص"، والـ AI ينفذ. تقليل التدخل اليدوي كتير من المستخدمين بيستخدموا أدوات زي SuperWhisper عشان يدّوا الأوامر بالصوت بدل الكتابة. قبول التغييرات بسرعة كتير من المستخدمين بيقبلوا التعديلات اللي بيعملها الـ AI من غير ما يراجعوها بعمق، وده جزء من "الجو الحسي" للمصطلح. مناسب للمبتدئين المصطلح ده بيفتح الباب للناس اللي ماعندهمش خبرة برمجية كبيرة، لأنهم مش محتاجين يتعلموا البرمجة التقليدية عشان يعملوا تطبيقات بسيطة.
  12. يجب عليك فهم هيكل الكورس حيث الخطوة الأولى هي مراجعة محتوى الكورس بالكامل (الوحدات، المواضيع، المشاريع، الاختبارات) لتكوّن صورة عامة عن المسارات. معظم كورسات الذكاء الاصطناعي في حسوب تشمل: أساسيات البرمجة (مثل Python). الرياضيات للذكاء الاصطناعي (الجبر الخطي، الإحصاء، التفاضل). تعلم الآلة (Machine Learning). التعلم العميق (Deep Learning). معالجة البيانات ومشاريع عملية. ثم وضع خطة دراسية أسبوعية تشمل التحقق من المدة المقترحة للكورس إذا لم تُحدد، افترض أن الكورس يحتاج 3-4 أشهر بمعدل 2-4 ساعات يوميًا ثم تقوم بتقسيم الوحدات إلى أسابيع على سبيل المثال، إذا كان الكورس يحتوي على 12 وحدة، خصص وحدة إلى وحدتين أسبوعيًا ثم خصص يومًا أو يومين في الأسبوع لمراجعة ما درسته أو حل المشاريع/الاختبارات. مثال لجدول أسبوعي (لمدة 3 أشهر) الأحد-الخميس: 2-3 ساعات يوميًا لدراسة وحدة جديدة (محاضرات + تمارين عملية). الجمعة: مراجعة الملاحظات، حل أسئلة إضافية، أو تطبيق مشروع صغير. السبت: يوم راحة أو لتعويض أي تأخير. و لتحقيق أقصى استفادة دون تشتت، اتبع روتين يومي معين حيث قبل البدء حدد هدفًا واضحًا لكل جلسة (مثل: "فهم الجبر الخطي" أو "كتابة كود لخوارزمية التصنيف") ثم جهّز بيئة دراسة هادئة خالية من المشتتات (أغلق الإشعارات، استخدم سماعات) ثم قم بتقسيم الوقت (لجلسة مدتها 2-3 ساعات) فمثلا : 10 دقائق راجع فيها ملخص الدرس السابق أو الملاحظات. 40-50 دقيقة شاهد فيديو المحاضرة أو اقرأ المحتوى النظري مع تدوين النقاط الرئيسية. 10 دقائق استراحة قم و تحرك قليلًا أو اشرب ماء. 40-50 دقيقة ركز على التمارين العملية أو كتابة الكود. إذا كنت تدرس Python أو خوارزميات، جرّب تطبيق ما تعلمته على مشكلة بسيطة. 10 دقائق راجع ما أنجزته، اكتب أي أسئلة أو نقاط غامضة للبحث عنها لاحقًا. نصيحة استخدم تقنية Pomodoro (25 دقيقة دراسة + 5 دقائق استراحة) إذا كنت تجد صعوبة في التركيز لفترات طويلة.
  13. هل قمت بتشغيل السيرفر الشخصي و mysql كما في الصورة المرفقة يجب الضغط على start ل apache , mysql , ومن ثم ارجع للصفحة و اخبرني علي فتح التثبيت معك أو لا
  14. تأكد من مجلد المشروع هو نفسه في htdocs و أيضا هل يمكنك إرفاق صورة من المشكلة و ماذا يعرض المتصفح لك ؟
  15. هل ممكن توضح المشكلة بشكل كامل مع ارفاق الاكواد الذي تواجه فيها مشكلة ؟
  16. لحساب رصيد الموظف لكل نوع من الإجازات بناء على القواعد المذكورة يجب إنشاء دالة مخصصة لكل نوع إجازة تأخذ بعين الاعتبار القواعد المحددة (مثل الإجازة السنوية، المرضية، الحج، الزواج، وفاة الزوج). سنقوم بتحديث دالة calculateVacationBalance مع دوال إضافية لحساب رصيد كل نوع إجازة، مع افتراض أن لديك جدول vacations يحتوي على سجلات الإجازات المستخدمة تحديث الدالة <?php function calculateVacationBalance($con, $emp_id, $type, $hire_date, $birth_date, $gender, $to_date) { $to = new DateTime($to_date); $hire = new DateTime($hire_date); $birth = new DateTime($birth_date); $current_year = $to->format('Y'); // حساب سنوات الخدمة $service_years = $to->diff($hire)->y; // حساب العمر $age = $to->diff($birth)->y; // استعلام للحصول على الأيام المستخدمة $stmt = $con->prepare(" SELECT COALESCE(SUM(DATEDIFF(end_date, start_date) + 1), 0) AS used_days FROM vacations WHERE emp_id = ? AND type = ? AND accept = 1 AND YEAR(start_date) = ? "); $stmt->bind_param("iss", $emp_id, $type, $current_year); $stmt->execute(); $stmt->bind_result($used_days); $stmt->fetch(); $stmt->close(); $used_days = $used_days ?: 0; switch ($type) { case 'اجازة سنوية': // 30 يومًا سنويًا، 45 يومًا إذا كان العمر ≥ 50 أو الخدمة ≥ 20 سنة $annual_days = ($age >= 50 || $service_years >= 20) ? 45 : 30; $balance = $annual_days - $used_days; // التأكد من أن الرصيد لا يقل عن 15 يومًا متصلة إذا لم يتم استخدامها return max(0, $balance); case 'اجازة مرضية': // 45 يومًا متصلة أو 60 يومًا متقطعة سنويًا $sick_balance = 60 - $used_days; return max(0, $sick_balance); case 'اجازة الحج': // 20 يومًا مرة واحدة خلال الخدمة $stmt = $con->prepare(" SELECT COUNT(*) AS taken FROM vacations WHERE emp_id = ? AND type = 'اجازة الحج' AND accept = 1 "); $stmt->bind_param("i", $emp_id); $stmt->execute(); $stmt->bind_result($taken); $stmt->fetch(); $stmt->close(); return $taken > 0 ? 0 : 20; case 'اجازة زواج': // 14 يومًا مرة واحدة خلال الخدمة $stmt = $con->prepare(" SELECT COUNT(*) AS taken FROM vacations WHERE emp_id = ? AND type = 'اجازة زواج' AND accept = 1 "); $stmt->bind_param("i", $emp_id); $stmt->execute(); $stmt->bind_result($taken); $stmt->fetch(); $stmt->close(); return $taken > 0 ? 0 : 14; case 'اجازة وفاة الزوج': // 130 يومًا (4 أشهر و10 أيام) للإناث فقط، مرة واحدة if ($gender !== 'أنثى') { return 0; } $stmt = $con->prepare(" SELECT COUNT(*) AS taken FROM vacations WHERE emp_id = ? AND type = 'اجازة وفاة الزوج' AND accept = 1 "); $stmt->bind_param("i", $emp_id); $stmt->execute(); $stmt->bind_result($taken); $stmt->fetch(); $stmt->close(); return $taken > 0 ? 0 : 130; default: return 0; } } ?> و لعرض رصيد الاجازات <!-- أضف هذا داخل النموذج بعد حقل اختيار الموظف --> <div class="col-md-12"> <div class="form-group" style="margin-top:10px;"> <label>رصيد الإجازات</label> <div id="vacation_balance" style="border:1px solid #ccc; padding:10px;"> <!-- سيتم ملء هذا الحقل ديناميكيًا --> </div> </div> </div> <!-- أضف السكربت التالي في نهاية الصفحة --> <script> $(document).ready(function() { $('select[name="emp_id"]').change(function() { var emp_id = $(this).val(); if (emp_id) { $.ajax({ url: 'get_vacation_balance.php', type: 'POST', data: { emp_id: emp_id }, success: function(response) { $('#vacation_balance').html(response); }, error: function() { $('#vacation_balance').html('<p>حدث خطأ أثناء جلب الرصيد.</p>'); } }); } else { $('#vacation_balance').html(''); } }); }); </script> و يجب <?php include('config.php'); // تأكد من تضمين ملف الاتصال بقاعدة البيانات include('functions.php'); // افترض أن هذا الملف يحتوي على دالة calculateVacationBalance if (isset($_POST['emp_id'])) { $emp_id = intval($_POST['emp_id']); // جلب بيانات الموظف $stmt = $con->prepare("SELECT e.start_date, p.birth_date, p.gender FROM employees e JOIN people p ON e.person_id = p.id WHERE e.person_id = ?"); $stmt->bind_param("i", $emp_id); $stmt->execute(); $employee = $stmt->get_result()->fetch_assoc(); $stmt->close(); if ($employee) { $hire_date = $employee['start_date']; $birth_date = $employee['birth_date']; $gender = $employee['gender']; $to_date = date('Y-m-d'); // أنواع الإجازات $vacation_types = [ 'اجازة سنوية', 'اجازة مرضية', 'اجازة الحج', 'اجازة زواج', 'اجازة وفاة الزوج' ]; $output = '<ul>'; foreach ($vacation_types as $type) { $balance = calculateVacationBalance($con, $emp_id, $type, $hire_date, $birth_date, $gender, $to_date); $output .= "<li>$type: $balance يوم</li>"; } $output .= '</ul>'; echo $output; } else { echo '<p>لم يتم العثور على بيانات الموظف.</p>'; } } else { echo '<p>يرجى اختيار موظف.</p>'; } ?> إنشاء ملف get_vacation_balance.php و هذا الملف سيحسب رصيد الإجازات للموظف المحدد ويعيده كـ HTML.
  17. وعليكم السلام ورحمة الله وبركاته، سأساعدك في كتابة كود آمن لاستعادة كلمة المرور باستخدام PHP ، مع التركيز على الأمان وأفضل الممارسات. الكود سيسمح للأعضاء بطلب رابط إعادة تعيين كلمة المرور عبر البريد الإلكتروني، مع استخدام رمز (token) مؤقت ومشفّر لضمان الأمان يجب إنشاء قاعدة بيانات تحتوي على جدول للأعضاء (مثال: users) وجدول لتخزين رموز إعادة التعيين (password_resets) و خادم بريد (SMTP) لإرسال البريد الإلكتروني (سنستخدم مكتبة PHPMailer) و تهيئة قاعدة البيانات وملفات الكود. project/ config.php # إعدادات الاتصال بقاعدة البيانات forgot_password.php # صفحة طلب إعادة تعيين كلمة المرور reset_password.php # صفحة إدخال كلمة المرور الجديدة vendor/ # مكتبة PHPMailer (يتم تثبيتها عبر Composer) database.sql # هيكلية قاعدة البيانات و جدول قاعدة البيانات تحتوي على -- جدول الأعضاء CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(255) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- جدول رموز إعادة تعيين كلمة المرور CREATE TABLE password_resets ( id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(255) NOT NULL, token VARCHAR(255) NOT NULL, expires_at DATETIME NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (email) REFERENCES users(email) ); وصفحةصفحة طلب إعادة تعيين كلمة المرور هي <?php require 'config.php'; session_start(); $message = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $message = 'البريد الإلكتروني غير صالح.'; } else { // التحقق من وجود البريد في قاعدة البيانات $stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?"); $stmt->execute([$email]); $user = $stmt->fetch(); if ($user) { // إنشاء رمز (token) عشوائي $token = bin2hex(random_bytes(32)); $expires_at = date('Y-m-d H:i:s', strtotime('+1 hour')); // تخزين الرمز في قاعدة البيانات $stmt = $pdo->prepare("INSERT INTO password_resets (email, token, expires_at) VALUES (?, ?, ?)"); $stmt->execute([$email, $token, $expires_at]); // إعداد رابط إعادة التعيين $reset_link = "http://yourdomain.com/reset_password.php?email=" . urlencode($email) . "&token=" . $token; // إرسال البريد الإلكتروني باستخدام PHPMailer $mail = new PHPMailer(true); try { $mail->isSMTP(); $mail->Host = SMTP_HOST; $mail->SMTPAuth = true; $mail->Username = SMTP_USER; $mail->Password = SMTP_PASS; $mail->SMTPSecure = SMTP_SECURE; $mail->Port = SMTP_PORT; $mail->setFrom(SMTP_USER, 'نظام إعادة تعيين كلمة المرور'); $mail->addAddress($email); $mail->isHTML(true); $mail->Subject = 'إعادة تعيين كلمة المرور'; $mail->Body = "مرحبًا،<br><br>لقد طلبت إعادة تعيين كلمة المرور. انقر على الرابط التالي لإعادة التعيين:<br><a href='$reset_link'>إعادة تعيين كلمة المرور</a><br><br>الرابط صالح لمدة ساعة واحدة فقط.<br>إذا لم تطلب هذا، يرجى تجاهل هذا البريد."; $mail->AltBody = "لقد طلبت إعادة تعيين كلمة المرور. انسخ الرابط التالي في متصفحك: $reset_link\nالرابط صالح لمدة ساعة واحدة."; $mail->send(); $message = 'تم إرسال رابط إعادة التعيين إلى بريدك الإلكتروني.'; } catch (Exception $e) { $message = 'فشل إرسال البريد: ' . $mail->ErrorInfo; } } else { $message = 'البريد الإلكتروني غير مسجل.'; } } } ?> <!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>استعادة كلمة المرور</title> <style> body { font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px; } .message { padding: 10px; margin-bottom: 10px; border-radius: 5px; } .success { background-color: #d4edda; color: #155724; } .error { background-color: #f8d7da; color: #721c24; } input { width: 100%; padding: 10px; margin-bottom: 10px; border: 1px solid #ddd; border-radius: 5px; } button { padding: 10px 20px; background-color: #007bff; color: #fff; border: none; border-radius: 5px; cursor: pointer; } button:hover { background-color: #0056b3; } </style> </head> <body> <h2>استعادة كلمة المرور</h2> <?php if ($message): ?> <div class="message <?php echo strpos($message, 'تم') === 0 ? 'success' : 'error'; ?>"> <?php echo htmlspecialchars($message); ?> </div> <?php endif; ?> <form method="POST" action=""> <label for="email">البريد الإلكتروني:</label> <input type="email" id="email" name="email" required> <button type="submit">إرسال رابط إعادة التعيين</button> </form> </body> </html> وصفحة إعادة تعيين كلمة المرور هي <?php require 'config.php'; session_start(); $message = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $message = 'البريد الإلكتروني غير صالح.'; } else { // التحقق من وجود البريد في قاعدة البيانات $stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?"); $stmt->execute([$email]); $user = $stmt->fetch(); if ($user) { // إنشاء رمز (token) عشوائي $token = bin2hex(random_bytes(32)); $expires_at = date('Y-m-d H:i:s', strtotime('+1 hour')); // تخزين الرمز في قاعدة البيانات $stmt = $pdo->prepare("INSERT INTO password_resets (email, token, expires_at) VALUES (?, ?, ?)"); $stmt->execute([$email, $token, $expires_at]); // إعداد رابط إعادة التعيين $reset_link = "http://yourdomain.com/reset_password.php?email=" . urlencode($email) . "&token=" . $token; // إرسال البريد الإلكتروني باستخدام PHPMailer $mail = new PHPMailer(true); try { $mail->isSMTP(); $mail->Host = SMTP_HOST; $mail->SMTPAuth = true; $mail->Username = SMTP_USER; $mail->Password = SMTP_PASS; $mail->SMTPSecure = SMTP_SECURE; $mail->Port = SMTP_PORT; $mail->setFrom(SMTP_USER, 'نظام إعادة تعيين كلمة المرور'); $mail->addAddress($email); $mail->isHTML(true); $mail->Subject = 'إعادة تعيين كلمة المرور'; $mail->Body = "مرحبًا،<br><br>لقد طلبت إعادة تعيين كلمة المرور. انقر على الرابط التالي لإعادة التعيين:<br><a href='$reset_link'>إعادة تعيين كلمة المرور</a><br><br>الرابط صالح لمدة ساعة واحدة فقط.<br>إذا لم تطلب هذا، يرجى تجاهل هذا البريد."; $mail->AltBody = "لقد طلبت إعادة تعيين كلمة المرور. انسخ الرابط التالي في متصفحك: $reset_link\nالرابط صالح لمدة ساعة واحدة."; $mail->send(); $message = 'تم إرسال رابط إعادة التعيين إلى بريدك الإلكتروني.'; } catch (Exception $e) { $message = 'فشل إرسال البريد: ' . $mail->ErrorInfo; } } else { $message = 'البريد الإلكتروني غير مسجل.'; } } } ?> <!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>استعادة كلمة المرور</title> <style> body { font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px; } .message { padding: 10px; margin-bottom: 10px; border-radius: 5px; } .success { background-color: #d4edda; color: #155724; } .error { background-color: #f8d7da; color: #721c24; } input { width: 100%; padding: 10px; margin-bottom: 10px; border: 1px solid #ddd; border-radius: 5px; } button { padding: 10px 20px; background-color: #007bff; color: #fff; border: none; border-radius: 5px; cursor: pointer; } button:hover { background-color: #0056b3; } </style> </head> <body> <h2>استعادة كلمة المرور</h2> <?php if ($message): ?> <div class="message <?php echo strpos($message, 'تم') === 0 ? 'success' : 'error'; ?>"> <?php echo htmlspecialchars($message); ?> </div> <?php endif; ?> <form method="POST" action=""> <label for="email">البريد الإلكتروني:</label> <input type="email" id="email" name="email" required> <button type="submit">إرسال رابط إعادة التعيين</button> </form> </body> </html> ثم قم بتثبيت PHPMailer عبر Composer composer require phpmailer/phpmailer
  18. يجب عليك فهم هيكل الكورس حيث الخطوة الأولىهي مراجعة محتوى الكورس بالكامل (الوحدات، المواضيع، المشاريع، الاختبارات) لتكوّن صورة عامة عن المسارات. معظم كورسات الذكاء الاصطناعي في حسوب تشمل: أساسيات البرمجة (مثل Python). الرياضيات للذكاء الاصطناعي (الجبر الخطي، الإحصاء، التفاضل). تعلم الآلة (Machine Learning). التعلم العميق (Deep Learning). معالجة البيانات ومشاريع عملية. ثم وضع خطة دراسية أسبوعية تشمل التحقق من المدة المقترحة للكورس إذا لم تُحدد، افترض أن الكورس يحتاج 3-4 أشهر بمعدل 2-4 ساعات يوميًا ثم تقوم بتقسيم الوحدات إلى أسابيع على سبيل المثال، إذا كان الكورس يحتوي على 12 وحدة، خصص وحدة إلى وحدتين أسبوعيًا ثم خصص يومًا أو يومين في الأسبوع لمراجعة ما درسته أو حل المشاريع/الاختبارات. مثال لجدول أسبوعي (لمدة 3 أشهر) الأحد-الخميس: 2-3 ساعات يوميًا لدراسة وحدة جديدة (محاضرات + تمارين عملية). الجمعة: مراجعة الملاحظات، حل أسئلة إضافية، أو تطبيق مشروع صغير. السبت: يوم راحة أو لتعويض أي تأخير. و لتحقيق أقصى استفادة دون تشتت، اتبع روتين يومي معين حيث قبل البدء حدد هدفًا واضحًا لكل جلسة (مثل: "فهم الجبر الخطي" أو "كتابة كود لخوارزمية التصنيف") ثم جهّز بيئة دراسة هادئة خالية من المشتتات (أغلق الإشعارات، استخدم سماعات) ثم قم بتقسيم الوقت (لجلسة مدتها 2-3 ساعات) فمثلا : 10 دقائق راجع فيها ملخص الدرس السابق أو الملاحظات. 40-50 دقيقة شاهد فيديو المحاضرة أو اقرأ المحتوى النظري مع تدوين النقاط الرئيسية. 10 دقائق استراحة قم و تحرك قليلًا أو اشرب ماء. 40-50 دقيقة ركز على التمارين العملية أو كتابة الكود. إذا كنت تدرس Python أو خوارزميات، جرّب تطبيق ما تعلمته على مشكلة بسيطة. 10 دقائق راجع ما أنجزته، اكتب أي أسئلة أو نقاط غامضة للبحث عنها لاحقًا. نصيحة استخدم تقنية Pomodoro (25 دقيقة دراسة + 5 دقائق استراحة) إذا كنت تجد صعوبة في التركيز لفترات طويلة.
  19. تعلم Odoo ليس ضروريًا بشكل مباشر لمطور باك إند يعمل بتقنيات مثل Laravel أو Node.js، لأن Odoo هو نظام تخطيط موارد المؤسسات (ERP) يعتمد على إطار عمل خاص به ويستخدم Python كلغة أساسية. اختصاص مطور الباك إند يعتمد على متطلبات العمل أو المشروع الذي يشارك فيه، إذا كانت الشركة أو المشروع يعتمد على Odoo لإدارة العمليات (مثل المحاسبة، المخزون، المبيعات)، فقد تحتاج إلى تعلمه لتطوير وتخصيص الوحدات (Modules) أو دمج أنظمة أخرى معه، و ايضا Odoo مطلوب في بعض الأسواق، خاصة في الشركات الصغيرة والمتوسطة التي تستخدمه كحل ERP. تعلمه قد يفتح فرص عمل جديدة. و ايضا إذا كنت تعمل على دمج تطبيقات Laravel أو Node.js مع Odoo، ففهم طريقة عمل Odoo (خاصة APIs وXML-RPC) قد يكون ضروريًا.
  20. رجاء ارفق اخر كود وصلت له ؟ لاستطيع حل المشكلة
  21. وعليكم السلام ورحمة الله وبركاته، رائع أنك قررت استكمال كورس البايثون، هذه خطوة مهمة نحو تطوير مهاراتك البرمجية، يجب عليك تنظيم الجدول اليومي لك بحيث تحدد ساعات التعليم و متابعة الدورة، و يجب عليك ترتيب التعلم بايثون لغة مرنة ومناسبة للمبتدئين، لكن تحتاج إلى ترتيب منطقي لفهم المفاهيم. إذا كان الكورس مقسمًا إلى وحدات، التزم بها، ثم حاول كتابة دوال بسيطة و سأقدم لك نصيحة عملية، جرب كتابة برامج صغيرة، مثل حاسبة أو برنامج لإدارة قائمة مهام، حاول قدر الامكان عدم التشتت و التركيز في الدورة و المتابعة مع المدرب فيديو فيديو و تجنب التقديم و تسريع الفيديو حتى لا تضيع عليك أي جزئية في الدورة.
  22. لا، لن تنسى البرمجة، على مستواي الشخصي الحرب قائمة عنا بقطاع غزة منذ مدة كبيرة و انقطعت عن البرمجة فترة أكثر من سنة وشهرين و عندما عدت للبرمجة كنت اتذكر كل شيء مجرد ما أقوم بكتابة أي كود و بالتالي الانقطاع لا يؤثر كثيراً و لكن ربما تكون هناك اصدارات من اللغات و اطارات العمل قد تم تحديثها و اصبح تغييرات يجب ان ترجع لها و تحدث معلوماتك و لكن بشكل عام لا تؤثر كثير.
  23. لتخصيص البحث بحيث لا يتم تنفيذه إذا كان صندوق البحث فارغًا أو يحتوي على عدد قليل من الأحرف (على سبيل المثال أقل من 3 أحرف)، يمكننا إضافة تحقق إضافي في كود PHP قبل تنفيذ الاستعلام. سأقوم بتعديل الكود ليشمل هذا التحقق. يمكنك استخدام الكود التالي <?php // إعداد الاتصال بقاعدة البيانات $servername = "localhost"; // اسم الخادم $username = "root"; // اسم مستخدم قاعدة البيانات $password = ""; // كلمة المرور $dbname = "test_db"; // اسم قاعدة البيانات // إنشاء الاتصال $conn = new mysqli($servername, $username, $password, $dbname); // التحقق من الاتصال if ($conn->connect_error) { die("فشل الاتصال: " . $conn->connect_error); } // تعيين الترميز لدعم اللغة العربية $conn->set_charset("utf8"); // التحقق من إرسال بيانات البحث if (isset($_POST['search'])) { $search_term = trim($_POST['search_term']); // إزالة المسافات البيضاء // التحقق من أن الحقل ليس فارغًا ويحتوي على 3 أحرف على الأقل if (empty($search_term)) { echo "يرجى إدخال اسم للبحث."; } elseif (strlen($search_term) < 3) { echo "يجب أن يحتوي البحث على 3 أحرف على الأقل."; } else { // استعلام البحث (حماية من SQL Injection باستخدام prepared statements) $sql = "SELECT email FROM users WHERE name LIKE ?"; $stmt = $conn->prepare($sql); $search_term = "%" . $search_term . "%"; // إضافة % للبحث الجزئي $stmt->bind_param("s", $search_term); $stmt->execute(); $result = $stmt->get_result(); // عرض النتائج if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "البريد الإلكتروني: " . $row['email'] . "<br>"; } } else { echo "لا توجد نتائج مطابقة."; } $stmt->close(); } } // إغلاق الاتصال $conn->close(); ?> <!-- نموذج HTML لإدخال البحث --> <!DOCTYPE html> <html lang="ar"> <head> <meta charset="UTF-8"> <title>البحث في قاعدة البيانات</title> </head> <body> <h2>البحث في قاعدة البيانات</h2> <form method="POST" action=""> <label for="search_term">أدخل اسم المستخدم للبحث:</label> <input type="text" id="search_term" name="search_term" required> <button type="submit" name="search">بحث</button> </form> </body> </html>
  24. لتشغيل موسيقى متكررة لكل خلفية بشكل منفصل دون تداخل في برنامج سكراتش (Scratch)، يمكنك استخدام الكائنات (Sprites)، القوائم (Lists)، أو المتغيرات للتحكم في تشغيل الموسيقى بناء على الخلفية المعروضة، أضف الخلفيات المختلفة إلى المسرح (Stage) في سكراتش، على سبيل المثال، خلفية1، خلفية2، خلفية3 ثم تأكد من تسمية الخلفيات بشكل واضح (مثل "Background1"، "Background2") لتسهيل الإشارة إليها، ثم قم بتحميل ملفات صوتية (موسيقى) إلى سكراتش لكل خلفية حيث يمكنك فعل ذلك من خلال علامة تبويب "الأصوات" (Sounds) في المسرح أو كائن معين ثم بتسمية الأصوات بشكل يربطها بالخلفيات، مثل "Music1" للخلفية1، "Music2" للخلفية2، وهكذا ومن ثم أنشئ متغيرًا يُسمى مثلاً "CurrentBackground" لتتبع الخلفية المعروضة حاليًا، عند تغيير الخلفية، قم بتحديث قيمة هذا المتغير لتعكس اسم الخلفية الحالية أو رقمها ثم في المسرح (Stage)، استخدم كتلة "عندما يتغير الخلفية إلى" (When backdrop switches to) للكشف عن تغيير الخلفية ثم أضف كتلة "إيقاف جميع الأصوات" (Stop all sounds) قبل تشغيل الموسيقى الجديدة لضمان عدم تداخل الأصوات ثم استخدم كتلة "تشغيل الصوت بشكل متكرر" (Play sound until done) أو "بدء الصوت" (Start sound) مع اختيار الصوت المرتبط بالخلفية الحالية ثم لجعل الموسيقى تتكرر، يمكنك إما استخدام ملف صوتي يحتوي على تكرار مدمج، أو إضافة كتلة "كرر باستمرار" (Forever loop) حول كتلة تشغيل الصوت.
  25. لم تنجح في الوصول لمجلد المشروع ويمكنك استخدام الأمر التالي للدخول لمجلد Python باستخدام Cmd C: cd Code\Python
×
×
  • أضف...