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

Chihab Hedidi

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

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

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

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

    13

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

  1. لا تقلق من الطبيعي أن تشعر ببعض النسيان بعد فترة من الانقطاع، ابدأ بمراجعة المفاهيم الأساسية التي تعلمتها في البداية، يمكنك أيضا قراءة الملاحظات التي كتبتها خلال الدورة، و أيضا حاول إعادة مشاهدة الدروس التي تناولت المواضيع الأساسية و سرع الفيديو ليكون فقط كتذكير لك. و البرمجة تحتاج إلى ممارسة مستمرة، حاول حل بعض التمارين البسيطة أو المشاريع الصغيرة التي كنت قد عملت عليها سابقا، ودائما حدد وقتا يوميا لممارسة البرمجة، حتى لو كان لفترة قصيرة (مثل 30 دقيقة يوميا)، فالاستمرارية أكثر أهمية من الكمية.
  2. نعم يمكنك ذلك عن طريق تصدير جميع المنتجات والمعلومات الأخرى ذات الصلة من Shopify إلى ملف CSV، يمكنك القيام بذلك من خلال لوحة التحكم في Shopify أو يمكنك إستخدام بعض الإضافات في المتصفح مثل إضافة ShopSwap و التي تساعدك على هذا الأمر، بعدها استخدمي ملحق WooCommerce الخاص بالاستيراد لتحميل ملف CSV الذي قمت بتصديره من Shopify، و بعد استيراد المنتجات، ستحتاجين إلى تعديل الروابط الثابتة في WooCommerce لتتطابق مع الروابط القديمة في Shopify. يمكنك القيام بذلك من خلال إعدادات الروابط الثابتة.
  3. الكود الذي كتبته يحتوي على خطأ بسيط حيث أنك إستخدمت price بدل print يمكنك تصحيح الكود فقط بالشكل التالي: price = [50, 60, 100, 500, 1000, 1000000, 20000000, 91000000000] max_price = max(price) print(max_price)
  4. لا مشكلة في ذلك أهم شيء قم بتنظيم السكربتات في ملفات منفصلة وضعها في مجلد محدد داخل مشروعك و قم بإداراتها بالشكل المناسب.
  5. نعم، يمكن أن تسبب وجود عدة سكربتات مشاكل في بعض الأحيان، خاصة إذا لم تتم إدارتها بشكل صحيح، فمثلا إذا كانت هناك سكربتات متعددة تعمل على معالجة نموذج واحد، فقد يحدث تضارب بينها مما يؤدي إلى سلوك غير متوقع أو أخطاء، كما أنه كثيرا ما يؤثر استخدام العديد من السكربتات على أداء النظام وقد يتسبب في بطء في استجابة النموذج، لذا يجب أن تأخذ هذه الأمور بعين الإعتبار.
  6. عدد الأعمدة التي يمكن أن تتحملها قاعدة البيانات يعتمد على عدة عوامل مثل نوع قاعدة البيانات، والاستضافة، وتكوينات الخادم، في العادة قواعد البيانات الحديثة والاستضافات المدفوعة تتيح لك إمكانية إنشاء جداول تحتوي على عشرات الأعمدة بدون مشاكل، و يمكنك تحسين أداء قاعدة البيانات بتنظيم الجداول واستخدام فهارس بشكل صحيح. بالنسبة للاتصال بين النموذج وملف Excel، يمكنك ذلك بطرق مختلفة، إذا كنت تستخدم خادم ويب معين مثل Apache أو Nginx، يمكنك استخدام سكريبتات برمجية لمعالجة البيانات المرسلة من النموذج وكتابتها إلى ملف Excel، يمكنك الإعتماد في هذا على PHPExcel.
  7. كتابة الخوارزمية تعني وصف الخطوات الأساسية التي يجب اتباعها لحل مشكلة معينة أو تنفيذ مشروع معين بشكل منطقي ومنظم، قبل أن تبدأ في كتابة الخوارزمية، تأكد من أنك تفهم المشكلة تماما وما هي الأهداف التي تريد تحقيقها، و حدد ما هي المدخلات والمخرجات اللازمة لحل المشكلة، بعدها قم بتقسيم العملية إلى خطوات بسيطة ومنطقية، يجب أن تكون هذه الخطوات واضحة وسهلة الفهم، و أيضا كخطوة أساسية إذا كانت هناك شروط معينة يجب التحقق منها أو عمليات تكرارية، قم بإدراجها في الخوارزمية، و اكتب الخطوات بشكل مرتب وواضح، بحيث يمكن لأي شخص آخر فهمها بسهولة، يمكنك استخدام لغة طبيعية أو أي لغة برمجة (Pseudocode). يمكنك أن تقرأ هذه المقالات و التي ستساعدك كثيرا:
  8. مرحبا أحمد، يجب أن تعرف أنه للتقدم للإختبار يجب عليك إنهاء أربع مسارات على الأقل، أما بالنسبة للتقدم بما أنك وصلت لمرحلة أتك قادر على برمجة المواقع من الصفر فأعتقد أنك جاهز للإختبار، لكن يجب أن تعرف أنه سيتم سؤالك عن كل المحتوى في الدورة، يمكنك الإطلاع أكثر على معلومات حول الإختبار من خلال هذه الإجابة :
  9. يجب عليك التركيز على الجودة بدلا من الكمية، واحرص على أن تأتي الروابط الواردة من مواقع ذات سمعة جيدة وتصنيف عال، وذات محتوى ذو صلة بمحتوى موقعك، وأيضا قم بإنشاء محتوى ذو جودة عالية يستحق الروابط، وحاول في نفس الوقت التواصل مع مواقع أخرى في نفس مجالك واطلب منهم الارتباط بموقعك، و عندر الرغبة في ذكر موقعك في موقع آخر حاول أن يكون ذلك عند الحاجة بطريقة طبيعية وغير ترويجية مفرطة. ولا تنسى أن تستخدم أدوات مثل Ahrefs وSEMrush لتحليل الروابط الواردة إلى منافسيك ومعرفة من أين يحصلون على روابطهم. يمكنك قراءة هذه المقالات ستفيدك كثيرا:
  10. الخطأ الذي يظهر سببه أن PropertyPage هو مكون React ويفترض أن يكون دالة وظيفية عادية وليست دالة async، في React، المكونات الوظيفية لا يمكن أن تكون دوال async لأنها يجب أن ترجع JSX مباشرة، وليس وعدا (Promise). في الكود الذي كتبته، عند إضافة async إلى PropertyPage، تقوم بجعل هذه الدالة ترجع وعدا، مما يؤدي إلى أن React لا يعرف كيف يتعامل مع هذا الوعد ويعرض المكون، و لحل المشكلة، يمكنك فصل منطق الجلب (fetching) في useEffect كما فعلت، لكن تأكد من عدم استخدام async في دالة المكون الرئيسية. إليك كيف يمكنك إعادة كتابة الكود بشكل صحيح: "use client" import React, { useEffect, useState } from "react"; import Link from "next/link"; import { useParams } from "next/navigation"; import { FaArrowLeft } from 'react-icons/fa'; import { fetchProperty } from "@/utils/requests"; const PropertyPage = () => { const [property, setProperty] = useState(null); const [loading, setLoading] = useState(true); const { id } = useParams(); useEffect(() => { const fetchPropertyData = async () => { if (!id) return; try { const property = await fetchProperty(id); setProperty(property); } catch (error) { console.error('Error fetching property', error); } finally { setLoading(false); } }; fetchPropertyData(); }, [id]); if (loading) { return <div>Loading...</div>; } return ( <> <section> <div className="container m-auto py-6 px-6"> <Link href="/properties" className="text-green-500 hover:text-green-600 flex items-center" > <FaArrowLeft className="mr-2" /> Back to Properties </Link> </div> </section> <section className="bg-green-50"> <div className="container m-auto py-10 px-6"> <div className="grid grid-cols-1 md:grid-cols-70/30 w-full gap-6"> <aside className="space-y-4"> property single page </aside> </div> </div> </section> </> ); }; export default PropertyPage; في هذا الكود، يتم تنفيذ دالة fetchPropertyData داخل useEffect كما هو مطلوب، دون جعل المكون الرئيسي async. بهذه الطريقة، يمكنك ضمان أن المكون يرجع JSX وليس وعدا، وبالتالي تتجنب الخطأ الذي ظهر.
  11. يمكنك استخدام PHP مع JavaScript لجعل الحقول تظهر أو تختفي بناء على الخيار المحدد في حقل select، سنستخدم JavaScript للتعامل مع تغيير الخيارات في حقل select وPHP لعرض الحقول المناسبة بناء على هذا التغيير. أولا نقوم بإعداد HTML وJavaScript: <!DOCTYPE html> <html> <head> <title>Form Example</title> <script type="text/javascript"> function showJobs() { var gender = document.getElementById("gender").value; var maleJobs = document.getElementById("maleJobs"); var femaleJobs = document.getElementById("femaleJobs"); if (gender == "male") { maleJobs.style.display = "block"; femaleJobs.style.display = "none"; } else if (gender == "female") { maleJobs.style.display = "none"; femaleJobs.style.display = "block"; } else { maleJobs.style.display = "none"; femaleJobs.style.display = "none"; } } </script> </head> <body> <form method="post" action="submit.php"> <label for="gender">الجنس:</label> <select id="gender" name="gender" onchange="showJobs()"> <option value="">اختر...</option> <option value="male">ذكر</option> <option value="female">أنثى</option> </select> <div id="maleJobs" style="display:none;"> <label for="maleJob">وظائف الذكور:</label> <select id="maleJob" name="maleJob"> <option value="job1">وظيفة 1</option> <option value="job2">وظيفة 2</option> <option value="job3">وظيفة 3</option> </select> </div> <div id="femaleJobs" style="display:none;"> <label for="femaleJob">وظائف الإناث:</label> <select id="femaleJob" name="femaleJob"> <option value="job4">وظيفة 4</option> <option value="job5">وظيفة 5</option> <option value="job6">وظيفة 6</option> </select> </div> <input type="submit" value="إرسال"> </form> </body> </html> في ملف submit.php، يمكنك معالجة البيانات المرسلة من النموذج: <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $gender = $_POST["gender"]; if ($gender == "male") { $job = $_POST["maleJob"]; } elseif ($gender == "female") { $job = $_POST["femaleJob"]; } echo "الجنس: " . $gender . "<br>"; echo "الوظيفة: " . $job; } ?> عند تغيير الخيار في حقل select، تقوم JavaScript باستدعاء وظيفة showJobs التي تعرض أو تخفي حقول الوظائف بناء على الخيار المختار، و عند إرسال النموذج، تقوم PHP بمعالجة البيانات وتحديد الوظيفة المختارة بناء على الجنس، و بهذا الشكل يمكنك جعل الحقول تظهر وتختفي بناء على الخيارات المحددة في حقل select.
  12. مرحبا، أسفل الفيديو الخاص بالدورة تجد مكان للسؤال، أرجوا طرح السؤال هناك.
  13. لا يشترط فهم جميع المواضيع الموجودة في موسوعة الحاسوب، بل حاول البدء بالأساسية حيث يجب عليك أن تركز على فهم المفاهيم الأساسية لـ HTML (هيكل الصفحة، العناصر، العلامات) وCSS (التنسيق، الألوان، الخطوط)، كما أنه أفضل طريقة لتعلم HTML وCSS هي من خلال العمل على مشاريع عملية، لذا القيام بالمشاريع مع المدرب سيزيد من نسبة فهمك لهذه الأمور، و في نفس الوقت يمكنك استخدام موسوعة حاسوب كمرجع عند الحاجة.، أي لا تحاول حفظ كل شيء. كما أن الدورة فيها جزء كبير يتحدث على الأساسيات و بالتالي ستستفيد منه كثيرا، لذا يمكنك البدء فيها الآن. بالتوفيق إن شاء الله.
  14. الكود يبدو صحيحا، تأكد من أن النموذج (Model) الخاص بك مكتوب بالأحرف الكبيرة كالتالي: Student وليس student، و في الـ Controller، تأكد من أنك تقوم باستيراد النموذج بشكل صحيح: use App\Models\Student; class StudentController extends Controller { public function index() { $students = Student::all(); return view('student.index', compact('students')); } } و في الأخير جرب مسح التخزين المؤقت للعرض: php artisan view:clear
  15. المشكلة بسبب متغير غير معرف في العرض (view). من الصور التي أرفقتها، الخطأ يأتي من ملف العرض student.blade.php حيث لا يتم تمرير متغير $student بشكل صحيح من الـ Controller إلى العرض. في الصورة الأولى، في ملف الـ Controller StudentController، لاحظت أنك قمت بتعريف المتغير $student كالتالي: $student = student::all(); لكن عندما تقوم بتمرير المتغير إلى العرض، يجب أن تستخدم الطريقة الصحيحة وهي: $students = Student::all(); return view('student.index', compact('students')); لاحظ أنني قمت بتغيير اسم المتغير من $student إلى $students ليعكس أن هناك مجموعة من الطلاب، ويجب تمريره بنفس الاسم إلى العرض. ثم في ملف العرض student.blade.php، يجب عليك استخدام المتغير $students بنفس الاسم كالتالي: @foreach ($students as $student) <tr> <td>{{ $student->name }}</td> </tr> @endforeach تأكد من أن الأسماء المستخدمة في العرض تتطابق مع الأسماء التي قمت بتمريرها من الـ Controller، حاول تعديل الكود وتحقق مما إذا كانت المشكلة قد حلت.
  16. مرحبا حمد، تحت كل فيديو من الدورة توجد يوجد مكان للأسئلة أرجوا أن تطرح مشكلتك هناك، بخصوص التي في الصورة، فهذه النسخة الخاصة بال macOS لذا لا يشترط أن يكون الأمر نفسه في الوينداوز، يمكنك فقط التثبيت و الإستمرار في الفيديو.
  17. خاصية الإستشارة عن طريق الإتصال بالفيديو غير متوفرة حاليا و لكن في حالة أردت اي معلومة أو إستشارة يمكنك أن تطرحها كسؤال هنا و سيتكفل المدربين بمساعدتك.
  18. مرحبا بدر، نعم في حالة شرائك للدورة سيمكنك في أي فترة مشاهدتها و في حالة لم تفهم أي جزء من أي فيديو في الدورة يمكنك أن تطرح مشكلتك أسفل الفيديو و سيتكفل المدربون بمساعدتك في الأمر، أما من ناحية الجروبات فهي غير متوفرة حالية فأغلب النقاشات تكون ظاهرة لكل المشتركين في الدورة أسفل الفيديوهات و بالتالي يستفيد كل المتدربين من المشاكل التي يصادفها كل شخص.
  19. يجب أن نفهم أن الكابتشا موجودة لحماية المواقع من الروبوتات والهجمات الإلكترونية، و استخدام الطرق لتجاوز هذه الأنظمة يعد انتهاكا لشروط استخدام معظم المواقع، وقد يكون غير قانوني، حتى أن تجاوزها يعتبر صعب و يتطلب مهارة برمجية عالية من قراءة لمحتوى الصفحة و إستخراج الكابتشا منه و من ثم القيام بالعمليات اللازمة و تسجيل النتيجة، كما أن أغلب المواقع تكون مزودة بحماية من مثل هذه السكريبتات لذا الأمر شبه مستحيل.
  20. دائما هذه القيم تعتمد على المبرمج بحد ذاته و مدى فعاليته، و مثل ما نعرف أن أقل مشروع في موقع مستقل ب 25 دولار، بمسار لغة البيثون يمكنك العمل على العديد من المشاريع، يمكنك حتى أن تكمل مشروعين في الأسبوع و هو معدل جيد كبداية و مع مرور الوقت ستصبح قادر على العمل على مشاريع أكبر و بالتالي سيزيد دخلك بشكل أفضل، لذا حاول عدم التركيز على الدخل بقدر ما تركز على المشاريع المنجزة، لأنه هو السبيل الذي سيزيد من خبرتك و دخلك أيضا.
  21. أسهل طريقة هي إستعمال Office 365 online، و هذه هي أسهل طريقة للحصول على نسخة مجانية من أوفيس. كل ما تحتاجه هو حساب مايكروسوفت، اذهب إلى موقع Office.com، سجل الدخول باستخدام حساب مايكروسوفت الخاص بك (أو أنشئ حساباً جديداً إذا لم يكن لديك واحد)، و بمجرد تسجيل الدخول، سترى قائمة بتطبيقات أوفيس المتاحة. انقر فوق التطبيق الذي تريد استخدامه (مثل Word أو Excel)، سيفتح التطبيق في متصفح الويب الخاص بك ويمكنك البدء في استخدامه على الفور. هذه النسخة من أوفيس عبر الإنترنت وتتطلب اتصالا بالإنترنت للعمل.
  22. SVM مبنية على فكرة إيجاد مستوي hyperplane والذي يقوم بتقسيم البيانات الى عدة اجزاء منفصلة بحيث يمثل كل جزء منهم class او تصنيف معين من البيانات.وتعتبر أقرب نقطتين للمستوي الفائق الذي تقوم برسمه ال SVM هي المتجهات الداعمة او support vector كما هو موضح في الصورة التالية: بالنسبة لمميزات SVM، فهي فعالة في البيانات عالية الأبعاد و تعمل بشكل جيد مع البيانات التي تحتوي على العديد من الميزات، و أيضا فعالة في البيانات التي يكون فيها عدد العينات أقل من عدد الميزات. و تستخدم عادة في تصنيف النصوص كتصنيف البريد الإلكتروني العشوائي، وتحليل المشاعر، أو التعرف على الصور كالتعرف على الوجوه، وتصنيف الصور.
  23. نعم يمكنك ذلك فأغلب الدورات هنا يكون القسم الأول منها عبارة عن تعليم الأساسيات للغة البرمجة التي سيتم إستعمالها و بالتالي لن تجد مشكلة في هذا، بالنسبة للعمل من الأيباد نعم يمكنك ذلك كبداية فقط و ستعتمد بشكل أكثر على google colab و لكن هناك بعض الأدوات أو البرامج التي تتطلب حاسوبا للتنفيذ العملي، لذا يفضل امتلاك حاسوب للاستفادة الكاملة من جميع الدروس. في الأخير بإمكانك العثور على فرص عمل في مجال الذكاء الاصطناعي والعمل عن بعد بعد اكتساب المهارات اللازمة، و بالتأكيد سيتكفل فريق من الأكاديمية بمرافقتك في هذا الأمر، فهناك طلب متزايد على خبراء الذكاء الاصطناعي والمحللين، ويمكنك العمل في مجالات متعددة مثل تحليل البيانات، تطوير النماذج، والتعلم الآلي.
  24. هناك العديد من البرامج التي يمكنك استخدامها أشهرها برنامج Recuva هو برنامج مجاني وسهل الاستخدام، يمكنه استعادة الملفات المحذوفة من أجهزة USB، وأيضًا من الحواسيب والأجهزة الأخرى و متاح لنظام التشغيل ويندوز. و أيضا برنامج EaseUS Data Recovery Wizard برنامج قوي لاستعادة البيانات، يدعم استعادة الملفات من مجموعة واسعة من الأجهزة، بما في ذلك أجهزة USB، و يوفر نسخة مجانية بحد معين من الاستعادة ونسخة مدفوعة بمزايا كاملة، و متاح لنظامي التشغيل ويندوز وماك. قبل استخدام أي من هذه البرامج، يفضل تجنب الكتابة أو إجراء تغييرات على جهاز USB لتجنب الكتابة فوق البيانات المحذوفة التي ترغب في استعادتها.
  25. سبب المشكلة هو فشل التحقق من عدم وجود قيمة فارغة في حقل name في جدول Category1 عند إضافة كتاب جديد، وكذلك مشكلة تكرار الفئة عند تحديث الصفحة، يمكنك إجراء التعديلات التالية: تأكد من إضافة الفئة فقط عند وجود قيمة مدخلة، و في الكود الخاص بـ views.py، تأكد من أنك تتحقق من وجود قيمة في الحقل المدخل للفئة قبل محاولة حفظها في قاعدة البيانات. يمكنك تعديل الكود في الدالة index ليكون كالتالي: def index(request): if request.method == "POST": add = BookForm(request.POST, request.FILES) if add.is_valid(): add.save() addcate = request.POST.get("cate") if addcate: # تحقق من أن هناك قيمة مدخلة قبل إضافة الفئة addca = Category1(name=addcate) addca.save() context = { 'book': Book.objects.all(), 'cate': Category1.objects.all(), 'form': BookForm(), 'form1': CategoryForm(), } return render(request, "pages/conten.html", context) و تأكد من أن تعريف النموذج في forms.py لفئة CategoryForm يستخدم ModelForm بدلاً من forms.Form. التعديل كالتالي: from django import forms from .models import Book, Category1 class CategoryForm(forms.ModelForm): class Meta: model = Category1 fields = '__all__' widgets = { 'name': forms.TextInput(attrs={'class': 'form-control'}), } class BookForm(forms.ModelForm): class Meta: model = Book fields = '__all__' widgets = { 'titile': forms.TextInput(attrs={'class': 'form-control'}), 'author': forms.TextInput(attrs={'class': 'form-control'}), 'photo_book': forms.FileInput(attrs={'class': 'form-control'}), 'photo_author': forms.FileInput(attrs={'class': 'form-control'}), 'pages': forms.NumberInput(attrs={'class': 'form-control'}), 'price': forms.NumberInput(attrs={'class': 'form-control'}), 'ratelday': forms.NumberInput(attrs={'class': 'form-control'}), 'rateltime': forms.NumberInput(attrs={'class': 'form-control'}), 'statue': forms.Select(attrs={'class': 'form-control'}), 'categry': forms.Select(attrs={'class': 'form-control'}), # تعديل اسم الحقل هنا } و أيضا تأكد من أنك تستخدم الاسم الصحيح للحقل categry في BookForm. لاحظ أن هناك مسافة إضافية في تعريف الحقل في كودك الأصلي. قم بتعديل الحقل ليكون كالتالي: 'categry': forms.Select(attrs={'class': 'form-control'}), بهذه الطريقة تكون قد قمت بإجراء التعديلات الضرورية لحل مشكلة عدم وجود قيمة في الحقل name في جدول Category1 عند إضافة كتاب جديد، وأيضًا قمت بحل مشكلة تكرار الفئة عند تحديث الصفحة.
×
×
  • أضف...