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

Chihab Hedidi

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

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

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

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

    13

كل منشورات العضو Chihab Hedidi

  1. يمكنك تحميله من الموقع الرسمي الخاص ب Scratch و هذا حسب نظام التشغيل الخاص بك، أو يمكنك إنشاء حساب بشكل مباشرة في الموقع و العمل به أونلاين.
  2. نعم ستكون شغالة.
  3. نعم مثل الكود الذي أرسلته يمكنك نسخه أو أضافة هذا السطر: fprintf($output, "\xEF\xBB\xBF");
  4. المشكلة بسبب الترميز و يجب التأكد من أن ملف Excel الناتج يتم ترميزه بشكل صحيح بتنسيق UTF-8، و هذا يتطلب القيام ببعض الخطوات البسيطة في الكود لضمان ترميز النصوص بشكل صحيح عند كتابتها إلى ملف CSV، عند إنشاء ملف CSV يجب إضافة BOM (Byte Order Mark) في بداية الملف، هذه العلامة تساعد Excel على التعرف على أن النصوص في الملف مرمزة بـ UTF-8 وبالتالي تعرض الحروف العربية بشكل صحيح.
  5. يجب التأكد من أن الملف الناتج يحفظ بالترميز الصحيح UTF-8، يمكنك القيام بذلك عن طريق التأكد من استخدام الترميز الصحيح عند كتابة البيانات إلى ملف CSV بهذا الشكل: <?php include('conn.php'); if (isset($_POST['disease_type'])) { $disease_type = $_POST['disease_type']; $sql = "SELECT * FROM UN WHERE disease_type = '$disease_type'"; $result = $conn->query($sql); if ($result->num_rows > 0) { $filename = "data_from_UN_$disease_type.csv"; header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=' . $filename); $output = fopen('php://output', 'w'); fprintf($output, "\xEF\xBB\xBF"); $header = ['الاسم', 'عنوان', 'نوع']; fputcsv($output, $header); while ($row = $result->fetch_assoc()) { fputcsv($output, $row); } fclose($output); exit(); } else { echo "No data found for this disease type."; } } $conn->close(); ?> حيث نقوم بإضافة الـ BOM (\xEF\xBB\xBF) في بداية ملف CSV. هذا يساعد في تأكيد أن Excel سيتعرف على الترميز UTF-8 ويعرض النصوص العربية بشكل صحيح.
  6. نعم يوجد شرح لهذا الأمر في مشروع تطبيق يشبه WhatsApp يمكنك الدخول إلى مسار تطبيق الويب و من ثم الدرس رقم 7 ستجدين الفيديو الخاص بتسجيل الدخول بإستخدام و يمكنك العثور داخل هذا المشروع على كل العمليات التي يمكنك القيام بها الخاصة بتسجيل الدخول و الخروج أو تغيير كلمة السر أو غيرها من العمليات، و لكن يجب عليك التغيير من الكود البرمجي المستخدم بما يتناسب مع مشروعك.
  7. لا يوجد مدة محددة يمكنك الدراسة في أوقات فراغك يوميا، و للتقديم على الإختبار والحصول علي الشهادة يجب : إتمام أربعة مسارات تعليمية كاملة على الأقل التطبيق العملي مع المدرب والاحتفاظ بالمشاريع العملية الناتجة لإرسالها للمراجعة رفع المشاريع على حسابك على GitHub حتي يتم مشاركتها. بعد الإنتهاء من الدورة تقوم بمراسلة مركز المساعدة وتوفير روابط المشاريع على GitHub أي التطبيقات العملية ليتم مراجعتها، ثم تحديد موعد للإختبار.
  8. دخلت للموقع و المشكلة لم تظهر لي.
  9. أنصح ب VsCode لأنه يعد من أشهر البرامج ويحتوي على إضافات لدعم PHP، أما إذا كنت تبحث عن بيئة تطوير متكاملة يمكنك تجربة PHPStorm فيقدم مزايا متقدمة لتطوير PHP. بالنسبة لمشكلة ال port ، إذا كان المنفذ 80 مشغول من قبل برنامج آخر، يمكنك معرفة البرنامج الذي يشغل المنفذ باستخدام الأوامر التالية في موجه الأوامر في ويندوز: netstat -aon | findstr :80 ستظهر لك قائمة بالبرامج التي تستخدم المنفذ 80 مع معرف العملية، و يمكنك تغيير المنفذ الذي يستخدمه Apache في XAMPP من خلال تعديل ملف التكوين httpd.conf. افتح الملف وابحث عن السطر الذي يحتوي على: Listen 80 و قم بتغييره إلى المنفذ الذي تريد.
  10. تأكد من استخدام CSS لتثبيت الهيدر والشريط السفلي عند التمرير، و أيضا حاول استخدم ميديا كويري لضبط التنسيقات بناء على حجم الشاشة بهذا الشكل: @media only screen and (max-width: 600px) { header, footer { position: fixed; width: 100%; } } و جيب عليك تأكد من عدم وجود تضارب في الأكواد والتأكد من عدم وجود أخطاء في CSS، فأسباب المشكلة كثيرة و بالتالي يجب عليك فحص الكود جيدا.
  11. للتقدم من أجل إلإختبار تحتاج على الأقل إنهاء أربع مسارات من كل دورة، و لكن من الأفضل إنهاءها كلها فالمسارات متعلقة و مكملة لبعضها البعض، أما بالنسبة لطريقة رفع المشاريع فيجب عليك إنشاء مستودع لكل مسار في github و ترفع المشاريع هناك بحيث يكون كل مشروع في مجلد خاص بك حتى يكون العمل سهل للمدربين فيما بعد، و يمكنك أن تطلع أكثر على طريقة رفع المشاريع من هنا :
  12. هذا الأمر يأتي بشكل تلقائي عند العمل الكثير و التعلم لفترة طويلة، و انا هنا أتحدث على الدوال التي تكون بشكل إفتراضي مع لغة البرمجة التي تعتمد عليها، فبسبب تكرار إستخدامها كثيرة ستحفظها، أما بخصوص الدوال الخاصة بالمكتبات فهذا الأمر يكون أيضا مع المكتبات التي تستخدمها كيثرا و بشكل متكرر و لكن يمكنك دائما الإطلاع على التوثيق الخاص بالمكتبة لمعرفة الدوال الخاصة بها، فمعرفة أسماء الدوال والوظائف التي تقوم بها يمكن أن يساعدك في الكتابة بفعالية أكبر وتوفير الوقت، و يكفي أن تكون لديك فكرة عامة عن الدوال الأساسية والشائعة الاستخدام في اللغات التي تعمل بها.
  13. يمكنك تجربة الرجوع إلى الإصدار الذي كان يتوافق مع قاعدة البيانات الخاصة بك، و تأكد من إزالة أي تغييرات قد تكون حدثت مع التحديث الجديد لتجنب تعارضات في المستقبل، و حاول دائما في المرات القادمة أن تقوم بحفظ نسخة إحتياطية من المشروع الخاص بك أو إستخدام البرامج الخاص بإدارة التحديثات مثل Github.
  14. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  15. التحديثات سريعة في أغلب المكتبات و أعتقد أن التخطي ليس حل ممتاز لهذا الأمر، يمكنك أن تثبت النسخة نفسها التي يستخدمها المدرب و بالتالي تتخلص من هذه الأخطاء، أو كحل أفضل هو أن تستخدم آخر نسخة مع الإطلاع على التوثيق الخاص بالمكتبة و محاولة حل الأخطاء، و إذا واجهك أي خطأ حتى مع إستخدام التحديث الجديد يمكنك طرح تساؤلك أسفل الفيديو الخاص بالدورة و سيقوم المدربين بتوجيهك لتتعامل مع التحديث الجديد.
  16. في هذه الحالة أعتقد أنه من الأفضل تضمين الكود في ملفات PHP الخاصة بك (مثل SHOW1.PHP, SHOW2.PHP, إلخ) لتصدير البيانات مباشرة إلى ملف Excel، و هذا عن طريق إنشاء زر تصدير للبيانات إلى Excel في كل ملف PHP، وسيتعامل الكود مع تصدير البيانات فقط للمرض المحدد في ذلك الملف، على سبيل المثال ملف SHOW1.PHP الذي يعرض بيانات مرضى السكر: <?php include('conn.php'); $disease_type = "Diabetes"; // نوع المرض لهذا الملف $sql = "SELECT * FROM UN WHERE disease_type = '$disease_type'"; $result = $conn->query($sql); if ($result->num_rows > 0) { echo "<table border='1'> <tr> <th>اسم المريض</th> <th>عنوان المريض</th> <th>نوع المرض</th> </tr>"; while($row = $result->fetch_assoc()) { echo "<tr>"; echo "<td>" . $row['patient_name'] . "</td>"; echo "<td>" . $row['patient_address'] . "</td>"; echo "<td>" . $row['disease_type'] . "</td>"; echo "</tr>"; } echo "</table>"; } else { echo "No data found for this disease type."; } $conn->close(); ?> <!-- زر تحميل البيانات إلى Excel --> <form method="post" action="export_to_excel.php"> <input type="hidden" name="disease_type" value="<?php echo $disease_type; ?>"> <button type="submit">تصدير البيانات إلى Excel</button> </form> يمكن أن يكون هكذا و أيضا قم بإنشاء ملف جديد export_to_excel.php لتنفيذ تصدير البيانات إلى ملف Excel: <?php include('conn.php'); if (isset($_POST['disease_type'])) { $disease_type = $_POST['disease_type']; $sql = "SELECT * FROM UN WHERE disease_type = '$disease_type'"; $result = $conn->query($sql); if ($result->num_rows > 0) { $filename = "data_from_UN_$disease_type.csv"; header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=' . $filename); $output = fopen('php://output', 'w'); $header = ['اسم المريض', 'عنوان المريض', 'نوع المرض']; fputcsv($output, $header); while ($row = $result->fetch_assoc()) { fputcsv($output, $row); } fclose($output); exit(); } else { echo "No data found for this disease type."; } } $conn->close(); ?> هكذا بالإضافة لعرض البيانات المحددة حسب نوع المرض، نقوم بإضافة زر لتصدير البيانات إلى Excel، والذي يرسل نوع المرض إلى export_to_excel.php، سيقوم هذا املف باستقبال نوع المرض من النموذج، و استعلام البيانات من جدول UN بناء على نوع المرض، ثم تصدير البيانات إلى ملف CSV وتحميله.
  17. يمكنك استخدام وظائف PHP المدمجة لإنشاء ملف Excel بصيغة CSV بدون استخدام مكتبة خارجية، حيث أن صيغة CSV مدعومة من قبل Excel ويمكن فتحها وعرضها بسهولة، بالشكل التالي: <?php include('conn.php'); // تضمين ملف الاتصال بقاعدة البيانات // تحديد الجدول الذي ترغب في تحميل بياناته $tableName = "UN"; // أو "CH" حسب ما ترغب // استعلام للحصول على البيانات من الجدول المحدد $sql = "SELECT * FROM $tableName"; $result = $conn->query($sql); if ($result->num_rows > 0) { // تحديد اسم الملف $filename = "data_from_$tableName.csv"; // ضبط ترويسات HTTP header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=' . $filename); // فتح تدفق الخرج $output = fopen('php://output', 'w'); // الحصول على أسماء الأعمدة $fields = $result->fetch_fields(); $header = []; foreach ($fields as $field) { $header[] = $field->name; } // كتابة أسماء الأعمدة إلى ملف CSV fputcsv($output, $header); // كتابة البيانات إلى ملف CSV while ($row = $result->fetch_assoc()) { fputcsv($output, $row); } // إغلاق تدفق الخرج fclose($output); exit(); } else { echo "No data found in the table."; } $conn->close(); ?>
  18. يمكنك استخدام المكتبة الحديثة PHPSpreadsheet لأنها تحظى بدعم مستمر، تأكد من تثبيت مكتبة PHPSpreadsheet باستخدام Composer. إذا لم تكن قد ثبت Composer بعد، يمكنك تنزيله من الموقع الرسمي Composer. ثم، لتثبيت PHPSpreadsheet، افتح نافذة الأوامر في مجلد مشروعك واستخدم الأمر التالي: composer require phpoffice/phpspreadsheet بعد تثبيت المكتبة، يمكنك استخدام الكود التالي لتحميل البيانات من قاعدة البيانات إلى ملف Excel: <?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "database_name"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // تحديد الجدول الذي ترغب في تحميل بياناته $tableName = "UN"; // أو "CH" حسب ما ترغب $sql = "SELECT * FROM $tableName"; $result = $conn->query($sql); if ($result->num_rows > 0) { $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); // الحصول على أسماء الأعمدة $fields = $result->fetch_fields(); $column = 'A'; foreach ($fields as $field) { $sheet->setCellValue($column . '1', $field->name); $column++; } // الحصول على البيانات $rowNumber = 2; while($row = $result->fetch_assoc()) { $column = 'A'; foreach ($row as $cell) { $sheet->setCellValue($column . $rowNumber, $cell); $column++; } $rowNumber++; } // حفظ الملف $writer = new Xlsx($spreadsheet); $filename = "data_from_$tableName.xlsx"; $writer->save($filename); echo "Data has been exported to $filename successfully."; } else { echo "0 results"; } $conn->close(); ?> بعد الاتصال بقاعدة البيانات، نقوم بكتابة استعلام جميع البيانات من الجدول المحدد (UN أو CH)، ثم إنشاء ملف Excel جديد باستخدام مكتبة PHPSpreadsheet، و تعبئة الملف بأسماء الأعمدة والبيانات، ثم في الأخير نقوم بحفظ الملف باسم data_from_UN.xlsx أو data_from_CH.xlsx حسب الجدول المستخدم. و تأكد من تغيير بيانات الاتصال بقاعدة البيانات ($servername، $username، $password، $dbname) بما يتناسب مع إعدادات قاعدة البيانات الخاصة بك.
  19. اختيار الخصائص هو عملية مهمة في تحليل البيانات وتعلم الآلة، والهدف منها هو تحسين أداء النماذج وتقليل تعقيدها، حيث أن تقليل عدد الخصائص يمكن أن يحسن أداء النموذج من خلال تقليل احتمالية الإفراط في التكيف أو overfitting وتحسين الدقة، كما أنه يمكن أن يقلل من وقت التدريب ويقلل من استخدام الموارد الحاسوبية، و بالتالي يكون النموذج أسهل في التفسير وفهم العلاقات بين البيانات، و في بعض الأحيان بعض الخصائص قد تكون غير ذات صلة بالنتيجة المطلوبة أو تحتوي على معلومات ضوضاء، واختيار الخصائص يساعد في إزالة هذه البيانات غير المفيدة.
  20. مكنك استخدام ميزة "التنسيق التلقائي" أو ما يعرف بـ "Format Document"، هذه الميزة تساعدك في ترتيب الكود وجعل الوسوم في HTML أو الأكواد في لغات البرمجة الأخرى منظمة وسهلة القراءة، حيث يجب عليك تثبيت ملحق مناسب للغة البرمجة أو التنسيق الذي تستخدمه يمكنك تثبيت ملحق مثل "Prettier - Code formatter"، بعد تثبيته يمكنك تنسيق الكود عبر اختصار لوحة المفاتيح Shift + Alt + F، أو يمكنك أيضا الضغط بالزر الأيمن داخل الملف واختيار "Format Document" من القائمة.
  21. نعم، استخدام htmx يمكن أن يكون خيارا ممتازا لك إذا كنت ترغب في البدء بتعلم جوانب الواجهة الأمامية دون التعمق كثيرا في تفاصيل جافاسكريبت ، و أيضا تعتبر htmx مكتبة خفيفة الوزن تجعل التعامل مع الواجهات الديناميكية أكثر سهولة من خلال تقليل الحاجة إلى كتابة JavaScript مخصص. و لكن لا تستطيع الحكم إلا إذا جربت بنفسك، ستتعلم من خلال استخدام htmx كيفية التعامل مع الطلبات من جانب العميل والتفاعل مع الخوادم، مما يعطيك فهما جيدا لكيفية بناء تطبيقات تفاعلية دون الغوص في تفاصيل جافاسكربت، كما أنه يمكنك إستخدامها لتسهيل بناء واجهات المستخدم الخاصة بك، ومع مرور الوقت، يمكنك الانتقال إلى أدوات ومكتبات أكثر تعقيدا مثل Vue.js أو React إذا شعرت بالحاجة إلى مزيد من التحكم والتخصيص.
  22. لحل هذه المشكلة تحتاج إلى التأكد من التعامل الصحيح مع حالات الخطأ في جزء الواجهة الأمامية وكذلك في جزء الخلفية حيث يجب عليك التأكد من أن الكود الخاص بـ actAuthLogin يقوم بإرجاع رسالة خطأ مفهومة عند حدوث خطأ في المصادقة: const actAuthLogin = createAsyncThunk( "login/actAuthLogin", async (formData: TFormData, thunkApi) => { const { rejectWithValue } = thunkApi; try { const response = await axios.post<TResponse>("/login", formData); return response.data; } catch (error) { // تأكد من إعادة الخطأ return rejectWithValue(AxiosError(error)); } } ); و أيضا تأكد من أن الكود يتعامل بشكل صحيح مع حالات الرفض في extraReducers: builder.addCase(actAuthLogin.rejected, (state, action) => { state.loading = "failed"; if (isString(action.payload)) { state.error = action.payload; } else { state.error = "An unknown error occurred"; // رسالة خطأ افتراضية } }); و أهم أمر هو التحقق من الاستجابة في الخلفية، يحب أن تتأكد من أن API الخاصة بك تعيد رسالة خطأ مناسبة عند تسجيل الدخول بإيميل غير موجود: app.post("/login", async (req, res) => { const { email, password } = req.body; const user = await findUserByEmail(email); if (!user || !isValidPassword(user, password)) { return res.status(401).json({ error: "Invalid email or password" }); } // بقية منطق تسجيل الدخول هنا });
  23. على الأغلب الكود لن يعمل بالشكل المطلوب لأن عمليات الأتمتة تتطلب خبرة كبيرة للتعامل مع المواقع، مع ذلك يفضل أولا تجربة الكود بدون بوت تلغرام، بحيث يكون سكريبت عادي يمكنك تشغيله من ال terminal و في حالة إشتغل يمكنك تحويله إلى بوت تلغرام بسهولة، يجب أن تعرف أيضا أن أغلب كودات الذكاء الإصطناعي من إصدارات قديمة من المكاتب لذا يجب عليك تحديثها بما يتوافق مع التحديث الأخير. أما لإتشاء بوت تلغرام يجب عليك أولا الحصول على معرف البوت و إنشاءه و هذا يكون من داخل تلغرام عن طريق Botfather بعدها يمكنك وضع المعرف في الكود الخاص بك و تشغيله.
  24. نعم توجد بعض الواجبات التي يمكنك أن تتمرن عليها و تطرح أجوبتك في التعليقات أسفل الفيديو الذي فيه الواجب و سيتكفل المدربين بمساعدتك، كما تحتوي الدورات على العديد من المشاريع و التي ستعمل عليها أيضا لتتقدم أكثر في المجال الذي إخترته، و في حالة لم تفهم أي جزء من الدرس أو كنت تريد واجبات أو تمرينات إضافية يمكنك طلب ذلك في التعليقات و سيتم منحك المزيد من التمارين لتتمرن أكثر.
  25. لكل منهما وظيفة مختلفة ف return تستخدم لإرجاع قيمة من دالة إلى المكان الذي تم استدعاء الدالة منه، كما أنه بعد تنفيذ جملة return يتم إنهاء تنفيذ الدالة ويُعاد القيمة المحددة، و يمكن استخدام القيمة المرجعة في العمليات اللاحقة، مثل تخزينها في متغير أو استخدامها في حسابات. بينما print تستخدم لطباعة المعلومات إلى الشاشة أو إلى مكان الإخراج المخصص، مثل وحدة التحكم أو سطر الأوامر، و لا تعيد أي قيمة من الدالة، بل تقوم فقط بعرض المعلومات للمستخدم، كما أنها لا تؤثر على القيم التي قد تحتاجها العمليات البرمجية الأخرى. و يمكنك أن تطلع أكثر على الفرق بينهما من خلال هذا السؤال:
×
×
  • أضف...