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

Khaled Osama3

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

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

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

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

    1

كل منشورات العضو Khaled Osama3

  1. ستجد أسفل الدرس صندوق للتعليقات كما هنا، من فضلك يرجي طرح الأسئلة هناك حيث هنا هو قسم الأسئلة العامة ولا نقوم بالإجابة بالأسئلة الخاصة بالدورات هنا وذلك لمعرفة الدرس الذي تريد الإستفسار عنه و مساعدتك بشكل أفضل.
  2. اضغط على (مدخل الى علوم الحاسوب) ثم ابأ فى الفيديوهات حتى تنتهى. ثم بعد ذلك اساسيات البرمجة و هكذا اما الدورات الأخرى التي تراها هي دورات اخرى تقدمها الأكاديمية
  3. ستجد أسفل الدرس صندوق للتعليقات كما هنا، من فضلك يرجي طرح الأسئلة هناك حيث هنا هو قسم الأسئلة العامة ولا نقوم بالإجابة بالأسئلة الخاصة بالدورات هنا وذلك لمعرفة الدرس الذي تريد الإستفسار عنه و مساعدتك بشكل أفضل.
  4. يتم بناء على حلول الأسئلة التي تساعد في حلها ، و أيضا على الأعجابات التي تحصل عليها من الأعضاء الأخرين ، ايضا على عدد و كمية المشاركات و الأسئلة التي تقوم بنشرها . وهي أمر لقياس مدى نشاطك على الأكاديمية فقط، الأمر مشابه لموقع Stack Overflow في حال قمت بتصفحه من قبل ستجد أن لكل عضوة نقاط سمعة. وبالنسبة لك فنقاط السمعة الـ 24 التي حصلت عليها قادمة من حصولك على 24 اعجابا على مشاركاتك في الموقع.
  5. برجاء السؤال عن الجمل الشرطية بداخل الدورة اسفل الفيديو المخصص لها. هنا نسأل الاسئلة العامة فقط
  6. من الجيد ان تحفظ اسماء الدوال التى سوف تستخدمها فهذا يساعد على: معرفة الدالة التي تحتاج إليها بسرعة بدون الرجوع إلى الوثائق أو البحث. يجعل الكتابة أسرع ويقلل من الحاجة للبحث. تجنب الأخطاء الشائعة التي تحدث عند كتابة أسماء الدوال بشكل غير صحيح. و سوف تحفظ الدوال من كثرة الاستخدام و العمل عليها و توثيق الدوال قد يساعدك فى حفظها سريعا و تذكرها. ولكن ليس من الضرورى ان تحفظ اسماء جميع الدوال. لان دوال البرمجة كثيرة جدا.
  7. مرحبا @Baraa Mohsen Elalfy اذا ظهر معك اى خطا فمن من الممكن ان تسألى عنه فى تعليق اسفل الفيديو فمن الممكن ان يكون خطأ من ال code او الجهاز شكرا
  8. نعم يمكن ان تشارك ابنك فى جهاز اخر ليتابع الدورة.
  9. نعم من الممكن الدخول إلى حسابك و متابعة الدورات في آن واحد من اكثر من جهاز (pc or mobile) ولكن من الافضل ان لا تكثر من عدد الاجهزة
  10. نعم للأسف يجب أن تفعل المسار النسبي لأي مسار ملف ستسدعيه
  11. عندما نستخدم مسارا نسبيا مثل href="css/styles.css"، فإن المتصفح يبحث عن ملف styles.css في المسار الجذر للموقع. لكن إذا كان الموقع مستضافا في مجلد فرعي كما يحدث عند استخدام GitHub Pages، فإن المسار يجب أن يكون نسبيا للمكان الذي يوجد فيه ملف HTML. بمعني انه يجب استخدام المسار النسبي الذي يبدأ بالنقطة ./ لإخبار المتصفح بأن ملف styles.css موجود داخل مجلد css، والذي يوجد في نفس المجلد مع ملف HTML. <link rel="stylesheet" href="./css/styles.css"> النقطة ./ تشير إلى المجلد الحالي الذي يحتوي على ملف HTML، ومن ثم ننتقل إلى المجلد css للوصول إلى ملف styles.css. مواقع مجانية لاستضافة المواقع Netlify سهلة الاستخدام وتدعم استضافة المواقع الثابتة بشكل ممتاز. Vercel خدمة رائعة وسهلة الاستخدام تستضيف المواقع الثابتة ويدعم تطبيقات Next.js بشكل جيد.
  12. لنبدأ اولا بشرح المميزات (Features) هي عبارة عن قيم قد تكون مستمرة أو متصلة (Continuous) أو متقطعة (Discrete)، وتستخدم هذه المميزات لوصف شيء ما (Object). فمثلا مميزات الشخص هي طوله وزنه عمره لونه ألخ. ومميزات النص هي الكلمات التي يتكون منها هذا النص. ومميزات الصورة على سبيل المثال هي قيمة شدة سطوع كل بكسل في تلك الصورة. الأن بمعرفة ذلك، فأن عملية استخراج المميزات (Features Extraction) تتمثل بقدرة الخوارزمية على تحديد هذه المميزات التي تمثل الشكل الذي يتم فيه تخزين الشيء في الحاسوب. فعندما نعطيها الصورة فأنها تحللها إلى (Pixels) ولكل بكسل قيمة معينة، ونفس الشيء بالنسبة إلى النص فأنه يتحلل إلى كلمات ولكل كلمة قيمة معينة وهذه القيم تعكس بدورها معلومات تستفيد منها خوارزمية التعلم في عملية التعلم. في حالات كثيرة يكون عدد المميزات كبير جدا وخصوصا في حالة النصوص وغيرها. وبطبيعة الحال ليست كل هذه المميزات تتضمن معلومات قد تستفيد منها خوارزمية التعلم. فمثلا كلمات مثل (في، إذا، لا، لكن) لا تحمل معلومات قد تساعد خوارزمية التعلم لتصنيف نص ما في حال كان رياضي أو سياسي، فهذه الكلمات قد تتواجد في جميع النصوص بمختلف أصنافها. هنا يبرز دور عملية اختيار المميزات (Features Selection) والتي من خلالها نستخدم خوارزميات معينة لتحديد مدى أهمية كل مميز ومدى المعلومات التي ممكن أن يخبرنا به هذا المميز، وبناء على عتبة ما (Threshold) يتم اتخاذ القرار في ابقاءه أو الاستغناء عنه. والفائدة من هذه العملية قد تنعكس على كل من نتائج التوقع أو التصنيف وأداء الحاسب بشكل إيجابي. أهم الطرق التي يتم من خلالها اختيار المميزات (Features Selection)، هناك طريقتان رئيستان: أولا: طريقة التغليف (Wrapper Method): في هذه الطريقة يتم الاعتماد على النتائج التي نحصل عليها من نموذج تعلم (Learning Model) كمعيار في عملية اتخاذ القرار في أي مجموعة جزئية (Features subset) من المميزات يجب الإبقاء عليها. وفي هذه الحالة نحتاج إلى نموذج تعلم ما (مثلا SVM) وننفذ عملية التصنيف (في حال كانت العملية Classification) وذلك باختيار مجموعة جزئية من المجموعة الكلية للمميزات، ومن ثم نفحص النتائج. وتستمر هذه العملية بالتجريب مع أكثر من مجموعة جزئية حتى نحصل على أفضل نتيجة والتي يكون معها نسبة الخطأ أقل ما يمكن وبالتالي يتم اعتماد هذه المجموعة الجزئية من المميزات. إذا يمكن النظر إلى هذه العملية كعملية (Optimization) والهدف هو تقليل (Minimize) نسبة الخطأ للمصنف (Classifier). فبالتالي فأن هذه الطريقة تحتاج في البداية إلى نموذج تصنيف ما، ليتم تغليف داخله خوارزمية بحث (search-based optimization algorithm) تقوم بإيجاد جميع المجموعات الجزئية الممكنة وتختبر نتائجها حتى بالنهاية تصل إلى قرارها. ولك أن تتخيل إذا كان عدد المميزات في هذه المشكلة كان كبير جدا، كم من الاحتمالات الممكنة للمجموعات الجزئية التي ستتكون، وهذا بدوره سيكون مكلف جدا من ناحية المعالجة ويستغرق وقت طويل. وأضف إلى ذلك أن المجموعة الجزئية من المميزات، تم اختيارها بناء على خوارزمية التصنيف المستخدمة، ونحن نعرف أن كل خوارزمية لها مشاكلها ومحدداتها، فبالنتيجة المجموعة الجزئية الناتجة مع استخدام (SVM) مثلا، لن تكون نفسها الناتجة مع (Naïve Bayes). ومن (search-based optimization algorithm) المستخدمة في عملية اختيار المميزات: Genetic algorithm Hill Climbing Simulated Annealing Ant Colony Particle Swarm Optimization (PSO) ثانيا: طريقة الفلترة (Filter Method): في هذه الطريقة لا نحتاج إلى نموذج تعلم (Learning Model) لإيجاد المجموعة الجزئية من المميزات التي معها قد نحصل على أداء أفضل ونسبة خطأ أقل. بل هنا الاعتماد على البيانات نفسها وذلك من خلال تحليل خصائصها الذاتية باستخدام بعض الطرق الاحصائية. أي بمعنى يتم تحليل البيانات وإيجاد المجموعة الجزئية من المميزات قبل تزويدها لـخوارزمية التصنيف. وتشمل عملية تحليل البيانات حساب بعض الخصائص مثل الارتباط (Correlation) والاعتمادية (Dependence) والمسافة (Distance) بين هذه المميزات، ومن ثم اعتماد عتبة معينة (Threshold) لاختيار أفضل مجموعة جزئية من المميزات. وعلى عكس طريقة التغليف، فأن طريقة الفلترة تعتبر أسرع وأقل تكلفة من ناحية المعالجة وخصوصا مع البيانات كبيرة الحجم. ومن الطرق الإحصائية المستخدمة: Information Gain Correlation Chi-Square Gini-Index Relief وهذه الصوره قد توضح لك اكثر الفرق بينهم
  13. بالنسبة لشغل مطور الواجهات الخلفية للمواقع، صعب نحدد أفضل لغة بينهم لأن كل لغة لها ميزاتها وكلهم بيشتغلوا في نفس الجزء. الأحسن تختار اللغة اللي تميل ليها واللي تحس إنك مرتاح تكتب أكوادها وتفهمها أكتر. خليني أديك نبذة بسيطة عن كل لغة عشان تساعدك في الاختيار: JavaScript دي لغة برمجة تستخدم بشكل رئيسي في تطوير تطبيقات الويب. تعتبر متعددة الأغراض وتُستخدم كمان في تطوير تطبيقات سطح المكتب والموبايل والواجهات الأمامية. المكتبات وأطر العمل React.js، Angular، وVue.js اللي بتستخدم لبناء واجهات المستخدم الديناميكية. أما في الخوادم، بيتم استخدام Node.js كبيئة تشغيل لتنفيذ JavaScript على الخادم. Python دي لغة برمجة متعددة الاستخدامات مشهورة بسهولة قراءة الكود وتعلمه، وبيستخدموها كتير في الذكاء الصناعي وتعلم الآلة. المكتبات وأطر العمل Django، Flask، وPyramid. PHP دي لغة برمجة مصممة خصيصًا لتطوير مواقع الويب الديناميكية. من مميزاتها سهولة التعلم والاستخدام، وقوة في تطوير مواقع الويب، وتوافر مجموعة واسعة من المكتبات والإطارات. المكتبات وأطر العمل Laravel، اللي هو الأهم والأوسع استخداما. دلوقتي بعد ما اديتك نبذة عن كل لغة، ممكن
  14. الخطأ هنا بسيط جدا. المشكلة في استخدامك لـ print من غير أقواس، ودي كانت الطريقة في Python 2. بس أنت بتستخدم Python 3، اللي بيحتاج الأقواس بالشكل ده: print("saber") بعد ما تعدل الكود، احفظ الملف وشغله تاني، وهتلاقي إن المشكلة اتحلت باذن الله.
  15. يجب اولا تحديد الخلايا التي تحتوي على الأرقام التي تريد تنسيقها ثم انقر بزر الماوس الأيمن على الخلايا المحددة واختر "تنسيق الخلايا" (Format Cells) في النافذة التي تظهر، انتقل إلى علامة التبويب "الرقم" (Number) اختر "رقم" (Number) من القائمة الجانبية 5. تأكد من وجود علامة صح بجانب خيار "استخدام فاصل الألوف" (Use 1000 Separator (,)). 6. اختر عدد المنازل العشرية التي ترغب في عرضها (إذا لزم الأمر). 7. انقر على "موافق" (OK) لتطبيق التنسيق. بعد اتباع هذه الخطوات، ستلاحظ أن الأرقام سيتم تنسيقها تلقائيا بفواصل الألوف، بحيث يظهر الرقم 10000 على شكل 10,000(اذا اخترت عدد المنازل العشرية = 0 اذا تركتها كما هي = 2 ستصبح كما في الصوره ).
  16. ذلك نتيجة استخدام طريقة GET لإرسال البيانات أو عند استخدام إعادة التوجيه مع تضمين البيانات في الرابط. هذا هو السبب في ظهور الـ id في الرابط لحل هذه المشكله يمكنك استخدام طريقة أخرى لتوجيه المستخدم بعد إتمام عملية الإرسال. يمكن استخدام جلسات (Sessions) أو الحقول المخفية (Hidden Fields) بدلا من تمرير المعلومات عبر الرابط. الخطوه الاولي يجب تفعيل الجلسات في أعلى ملف PHP: <?php session_start(); ?> ثم تحديث الكود لإرسال البيانات عبر الجلسة بدلاً من الرابط: if (isset($_POST['submit'])) { // افترض أن هناك عملية لإدخال البيانات في قاعدة البيانات هنا $last_id = mysqli_insert_id($conn); $_SESSION['last_id'] = $last_id; header("Location: index.php"); exit(); } وبعد ذلك يجب عرض رسالة التأكيد في صفحة الاستقبال (index.php): <?php session_start(); if (isset($_SESSION['last_id'])) { echo "تم الإرسال رقم الكود المدخل هو " . $_SESSION['last_id']; unset($_SESSION['last_id']); // حذف قيمة الجلسة بعد العرض } ?> بهذه الطريقة، تم تخزين الـ id في الجلسة بدلا من تمريره عبر الرابط، وعرضه على الصفحة عند إعادة التوجيه. سيساعد ذلك في منع ظهور الـ id في شريط العنوان الخاص بالمتصفح.
  17. فالاول يجب فهم الService Container يمكن أن يكون Service Container معقد بعض الشيء، Service Container في Laravel هو أداة قوية لإدارة التبعية (Dependency Injection) وتحديد مكونات التطبيق. يُعتبر Service Container قلب Laravel حيث يساعد في ربط المكونات المختلفة معًا بشكل مرن وسهل. مفهوم التبعية (Dependency) عندما يعتمد كائن ما على كائن آخر لكي يعمل، يُقال أن لديه "تبعية". على سبيل المثال، لنفترض أن لدينا كائنًا من نوع RegisterController والذي يعتمد على كائن من نوع RegisterService. هنا، RegisterController يعتمد على RegisterService ليعمل بشكل صحيح. Service Container يعمل كصندوق أسود، يتم فيه تسجيل جميع الخدمات التي يحتاجها التطبيق، وعند الحاجة إلى أي خدمة، يتم استدعاؤها من خلال هذا الصندوق بطريقة بسيطة ومنظمة. كيفية استخدام Service Container: 1. تسجيل الخدمات (Binding): يمكن تسجيل الخدمات في Service Container باستخدام طرق مثل bind و singleton. يتم تسجيل أغلب الخدمات في ال Service Provider in register() function داخل ال service provider يمكننا الوصول إلى ال Service Container عن طريق هذه الخاصية $this->app الفرق بين bind و singleton: bind: يتم استخدام bind لتسجيل خدمة يتم إنشاؤها في كل مرة يتم فيها طلبها من الـ Service Container. بمعنى آخر، يتم إنشاء كائن جديد في كل مرة تستدعي فيها الخدمة. singleton: يتم استخدام singleton لتسجيل خدمة يتم إنشاؤها مرة واحدة فقط عند أول طلب، وتُعاد نفس النسخة في كل مرة يتم فيها طلبها بعد ذلك. هذا يضمن أن نفس الكائن يُستخدم في جميع أنحاء التطبيق. 2. استدعاء الخدمات (Resolving): يوجد طريقتين لإستدعاء الخدمات التي تم تسجيلها الاستدعاء التلقائي: لحسن الحظ، العديد من الكلاسات التي سيتم كتابتها عند بناء تطبيق Laravel تستقبل تلقائيًا تبعياتها عبر الـ Container، بما في ذلك: Controllers - Event Listeners - Middleware الاستدعاء اليدوي: يمكنك أيضا استدعاء الخدمات يدويا باستخدام طريقة make من الـ Service Container فوائد استخدام Service Container: إدارة التبعيات بفعالية: يساعد Service Container في إدارة التبعيات بين المكونات المختلفة في التطبيق بطريقة مركزية ومرنة. سهولة الاختبار: من خلال حقن التبعيات، يصبح من السهل اختبار المكونات بشكل منعزل باستخدام أدوات الاختبار (Mocking). تنظيم الكود: يساهم Service Container في تنظيم الكود بشكل أفضل من خلال تجميع التسجيلات في مكان واحد. فلنرجع لفهم الService Provider فهو أساس عملية التحميل في Laravel. فهو المسؤول عن ربط جميع الخدمات الرئيسية في التطبيق، بما في ذلك الخدمات التي يحتاجها التطبيق للعمل بشكل صحيح. تستخدم Service Providers لتهيئة تطبيق Laravel وإعداده. تقريبا كل خدمة في Laravel يتم تهيئتها عبر Service Providers، سواء كانت خدمة داخلية أو خدمة يتم استخدامها من حزم خارجية. كل Service Provider يسجل في الملف config/app.php داخل المصفوفة providers. لإنشاء Service Provider: يمكنك إنشاء Service Provider جديد باستخدام الأمر artisan التالي: php artisan make:provider AdminServiceProvider سينتج عن هذا إنشاء ملف جديد داخل مجلد app/Providers. بعد إنشاء Service Provider، يجب تسجيله داخل الملف config/app.php في المصفوفة providers. لإعداد Service Provider يتضمن كل Service Provider two function: register and boot. register: يتم استخدام هذه function لتسجيل الخدمات في الحاوية (Container). هنا يمكن ربط الكلاسات عن طريق dependency injection كما قمت بشرحه في البوست السابق. boot: يتم استدعاء هذه function بعد تنفيذ كل ال register() function لجميع ال service providers. يمكننا استخدامها لتنفيذ أي إجراءات تتطلب الخدمات المسجلة، مثل تسجيل routes or command. أهمية استخدام boot: في Service Provider يتم استدعاؤها بعد تسجيل جميع الخدمات، مما يعني أنه يصبح لدينا وصولا إلى جميع الخدمات الأخرى التي تم تسجيلها بواسطة داخل ال register function. هذا مفيد بشكل خاص عندما تحتاج إلى تسجيل View Composers أهمية Service Providers: تنظيم الكود: تساهم Service Providers في تنظيم الكود بشكل أفضل من خلال تجميع عمليات التهيئة في مكان واحد. تسهيل الاختبار: باستخدام Service Providers، يمكننا بسهولة إعداد بيئة الاختبار الخاصة بنا عن طريق تسجيل الخدمات والتهيئة اللازمة. مقدمو الخدمات (Service Providers) في Laravel
  18. في Laravel 11، تم تغيير بنية الملفات وتبسيط إدارة الـ middleware بحيث تم إزالة ملف Kernel.php، وقد تكون عملية إدارة الـ middleware مختلفة بعض الشيء. للعثور على الـ middleware الأساسية مثل auth وguest وتعديلها فهم لم ينشأوا بشكل تلقائي لذلك اذا كنت تريد التعديل عليهم يجب انشائهم يدويا php artisan make:middleware Authenticate php artisan make:middleware RedirectIfAuthenticated ثم يجب تسجيل الـ Middleware في ملف bootstrap/app.php لكي يتمكن Laravel من التعرف على الـ middleware الجديدة، يجب تسجيلها في ملف bootstrap/app.php. أضف التالي: ->withMiddleware(function (Middleware $middleware) { $middleware->alias([ 'auth' => \App\Http\Middleware\Authenticate::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, ]); }) ويمكنك التعديل علي الملفات التي تم إنشاؤه في مجلد app/Http/Middleware وقم بتعديلها. على سبيل المثال، لملف Authenticate.php: namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; class Authenticate { public function handle($request, Closure $next) { if (Auth::guest()) { return redirect('/login'); } return $next($request); } } بعد تسجيل الـ middleware، يمكنك استخدامها في المسارات الخاصة بك: use Illuminate\Support\Facades\Route; Route::middleware('auth')->group(function () { Route::get('/dashboard', function () { // محتوى الصفحة المحمية }); }); Route::middleware('guest')->group(function () { Route::get('/login', function () { // محتوى صفحة تسجيل الدخول }); });
  19. حسنا في هذه الحاله ارجو ارسال الفورم التي لديك في صفحه ال HTML وايضا ان تسخدم ال var_dump في ملف ال php لطباعة القيم المدخلة للتحقق من عدم وجود أي رموز غير متوقعة // طباعة القيم للتحقق منها var_dump($option1); var_dump($option2);
  20. لن يوثر علي نتيجه المشروع ولكن قد يؤدي ذلك إلى تعقيدات إذا لم يتم التعامل مع كل سكربت بشكل مستقل ومنظم وهذا يخالف أنماط تصميم البرمجيات (software design patterns) لتجنب أي تأثير سلبي على نتيجة المشروع، يجب اتباع بعض الممارسات الجيدة في كتابة الكود وإدارته. يجب استخدام أسماء متغيرات فريدة فلكل نموذج (form) وسكربت، استخدم أسماء متغيرات وأسماء حقول فريدة. هذا يمنع التداخل بين السكربتات المختلفة. والتحقق من القيم المدخلة يجب التحقق من القيم المدخلة في كل مرة وعدم استخدام نفس المتغيرات لمعالجة قيم مختلفة. وايضا إعادة استخدام الأكواد بحذر فإذا كان يجب عليك إعادة استخدام أجزاء من الكود، يمكنك وضع هذه الأجزاء في دوال (Functions) بحيث يمكن استدعاؤها بسهولة دون تداخل. إليك مثال على كيفية إعادة تنظيم الكود الخاص بك باستخدام دوال مستقلة لكل خيار: function uploadImage($fileInputName, $maxFileSize) { $targetDir = "img/"; $targetFile = $targetDir . basename($_FILES[$fileInputName]["name"]); $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION)); $uploadOk = 1; if ($_FILES[$fileInputName]["size"] > $maxFileSize) { echo "عذراً، حجم الملف كبير جداً."; $uploadOk = 0; } $check = getimagesize($_FILES[$fileInputName]["tmp_name"]); if ($check === false) { echo "الملف ليس صورة."; $uploadOk = 0; } if ($uploadOk == 1) { if (move_uploaded_file($_FILES[$fileInputName]["tmp_name"], $targetFile)) { echo "تم رفع الملف بنجاح."; } else { echo "حدث خطأ أثناء رفع الملف."; } } } if ($_SERVER["REQUEST_METHOD"] == "POST") { $option1 = $_POST["SHU1"]; $option2 = $_POST["SHU2"]; if ($option1 == "الصورة الاولى" && isset($_FILES["file1"])) { uploadImage("file1", 20000); } if ($option2 == "الصورة الثانية" && isset($_FILES["file2"])) { uploadImage("file2", 10000); } } وبالنسبة للنموذج (form) في HTML، تأكد من أن لديك أسماء حقول فريدة لكل خيار: <form method="post" enctype="multipart/form-data"> <select name="SHU1"> <option value="الصورة الاولى">الصورة الأولى</option> </select> <input type="file" name="file1" id="file1"> <select name="SHU2"> <option value="الصورة الثانية">الصورة الثانية</option> </select> <input type="file" name="file2" id="file2"> <input type="submit" value="رفع الملف"> </form> بهذه الطريقة، كل نموذج وسكربت يعمل بشكل مستقل ولن يكون هناك تداخل بين القيم أو المعالجة. إذا كانت هناك المزيد من السكربتات أو الخيارات، يمكنك اتباع نفس النهج لضمان عدم وجود تعارضات أو مشاكل.
  21. وعليكم السلام ورحمة الله وبركاته، المشكلة هنا قد تكون ناتجة عن عدم تنقية المدخلات (inputs) بشكل صحيح ففي حالة وجود أي رموز غير متوقعة مثل "$" من المهم التأكد من أن المدخلات لا تحتوي على أي رموز قد تؤثر على النتيجة. if ($_SERVER["REQUEST_METHOD"] == "POST") { // تنقية المدخلات من أي رموز غير متوقعة $option = htmlspecialchars($_POST["SHU"], ENT_QUOTES, 'UTF-8'); $targetDir = "img/"; $uploadOk = 1; if ($option == "الصورة الاولى" && isset($_FILES["file"])) { $targetFile = $targetDir . basename($_FILES["file"]["name"]); $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION)); if ($_FILES["file"]["size"] > 20000) { echo "عذراً، حجم الملف كبير جداً."; $uploadOk = 0; } $check = getimagesize($_FILES["file"]["tmp_name"]); if ($check === false) { echo "الملف ليس صورة."; $uploadOk = 0; } if ($uploadOk == 1) { if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetFile)) { echo "تم رفع الملف "; } } } elseif ($option == "الصورة الثانية" && isset($_FILES["file2"])) { $targetFile = $targetDir . basename($_FILES["file2"]["name"]); $imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION)); if ($_FILES["file2"]["size"] > 10000) { echo "عذراً، حجم الملف كبير جداً."; $uploadOk = 0; } $check = getimagesize($_FILES["file2"]["tmp_name"]); if ($check === false) { echo "الملف ليس صورة."; $uploadOk = 0; } if ($uploadOk == 1) { if (move_uploaded_file($_FILES["file2"]["tmp_name"], $targetFile)) { echo "تم رفع الملف "; } } } } في هذا الكود، استخدمنا دالة htmlspecialchars وهي تستخدم لتنقية المدخلات من أي رموز غير متوقعة مثل "$". هذا يساعد على تجنب أي مشاكل ناتجة عن وجود رموز غير مرغوب فيها في المدخلات. ويجب التأكد أيضا من أن جزء النموذج (form) في HTML لا يحتوي على أي أحرف خاصة غير متوقعة في value: <form method="post" enctype="multipart/form-data"> <select name="SHU"> <option value="الصورة الاولى">الصورة الأولى</option> <option value="الصورة الثانية">الصورة الثانية</option> </select> <input type="file" name="file" id="file"> <input type="file" name="file2" id="file2"> <input type="submit" value="رفع الملف"> </form>
  22. يجب أولا فهم الفرق بين المبرمج والذكاء الإصطناعي. المبرمج هو الشخص المسؤول عن كتابة البرامج والتطبيقات، وهو الذي يحدد الأوامر والتعليمات التي يتبعها الحاسوب لتنفيذ المهمة المطلوبة. بينما الذكاء الإصطناعي هو نظام حاسوبي يتعلم ويتطور من خلال تحليل البيانات والخوارزميات، ويمكنه اتخاذ القرارات بنفسه بناء على البيانات التي يتلقاها. وبالرغم من أن الذكاء الإصطناعي يمكنه القيام بمهام برمجية متقدمة، إلا أنه لا يمكنه تطوير نفسه بنفسه، بل يحتاج إلى المبرمج لكتابة الأوامر والتعليمات التي يجب على الحاسوب اتباعها لتنفيذ المهمة المطلوبة. بالإضافة إلى ذلك، فإن المبرمج يلعب دوراً مهماً في تصميم وتحديد أهداف النظام الذكي، وتحليل البيانات التي يتلقاها، وضبط الخوارزميات التي يستخدمها. وبالتالي، فإن الإجابة على سؤال هل يستطيع الذكاء الإصطناعي استبدال المبرمجين؟ تعتمد على الفهم الصحيح للدور الذي يلعبه كل منهما. ويجب التنبيه على أنه من الممكن استبدال أدوات الذكاء الإصطناعي فعلا عندما يتعلق الأمر بالمهام البسيطة أو المتوسطة لكنه يصعب الإعتماد عليها عندما يتعلق الأمر بالمهام المعقدة. لذلك فالشركات الآن قد تتوجه لاستبدال أدوات الذكاء الإصطناعي بالمبرمجين فى المهام البيسطة خصوصاً عندما يتعلق الأمر بتوفير بعض المال ومضاعفة الأرباح. فحتى الان، الذكاء الاصطناعي (AI) لا يمكنه استبدال المبرمجين بالكامل. الذكاء الاصطناعي يمكنه مساعدتهم وتسريع بعض المهام، لكنه لا يمكنه القيام بكل شيء. البرمجة تتطلب إبداعا وتفكيرا نقديا، وهذين الشيئين لا يمكن للذكاء الاصطناعي القيام بهما كما يفعل الإنسان. وبالنسبه للتخصصات التي استبدلها الذكاء الاصطناعي بالفعل نعم، هناك بعض المهام التي كان يقوم بها البشر وتمكن الذكاء الاصطناعي من القيام بها بكفاءة. على سبيل المثال: التعرف على الصور: كان يتطلب الأمر الكثير من العمل اليدوي لتصنيف الصور، والان يمكن للذكاء الاصطناعي القيام بذلك بشكل أسرع ودقيق. التنبؤ بالنص: مثل النص التلقائي في الهواتف، يمكن للذكاء الاصطناعي التنبؤ بما ستكتبه بعد ذلك. لكن بشكل عام، الذكاء الاصطناعي يساعد البشر أكثر مما يستبدلهم تماما.
  23. لحل هذه المشكلة، يجب أن تفهم الفرق بين حالات الرابط المختلفة في CSS. هناك أربع حالات رئيسية للرابط: 1. a:link - الحالة العادية للرابط الذي لم يتم زيارته بعد. 2. a:visited - الحالة للرابط الذي تم زيارته من قبل. 3. a:hover - الحالة عندما يمرر المستخدم المؤشر فوق الرابط. 4. a:active - الحالة عندما يتم النقر على الرابط. اللون يظهر بالبنفسجي لأن الرابط قد تم زيارته مسبقا، لذا يتم تطبيق أسلوب a:visited وليس a:link. إذا كنت ترغب في التأكد من أن الروابط غير المزارة فقط هي التي تظهر باللون الأحمر، تأكد من تنظيف تاريخ التصفح أو استخدم وضع التصفح المتخفي في المتصفح.
  24. يعتمد تحديد افضل استضافة على متطلبات المشروع حيث اغلب الاستضافات تكون مجانية بقيود مثل الزمن او المساحة PythonAnywhere هو خدمة استضافة سحابية تدعم بايثون بالكامل وتوفر بيئة تطويرية متكاملة ويمكن تشغيل السكربتات وويب التطبيقات. يدعم Django و Flask. ويوجد ايضا render يعطيك 1G من التخزين المجاني وذلك لمدة 90 يوم فقط وبعدها اما تسجل في حساب اخر او تدفع اشتراك ويوجد ايضا Repl.it هي منصة تطوير متكاملة تدعم العديد من لغات البرمجة بما في ذلك بايثون وتوفر بيئة تطويرية متكاملة عبر المتصفح ويمكنك تشغيل وتعديل الكود مباشرة. ويوجد مدفوع مثل Digital Ocean و aws وHostinger
  25. بنستخدم خوارزميات مختلفة مثل شجرة القرار (Decision Tree) أو الانحدار الخطي (Linear Regression) لحل مشاكل معينة. ولكن هذه الخوارزميات قد تكون غير فعالة في معالجة البيانات المعقدة مثل الصور أو النصوص الطويلة. أما في التعلم العميق، تعتمد النماذج بشكل كبير على الشبكات العصبية (Neural Networks) لأنها قادرة على التعلم من البيانات المعقدة والمتنوعة بفضل بنيتها العميقة المكونة من طبقات متعددة. هذا يسمح لها بالتعرف على الأنماط والميزات المخفية في البيانات بشكل أكثر فعالية مقارنة بالخوارزميات التقليدية.
×
×
  • أضف...