-
المساهمات
1773 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
1
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Khaled Osama3
-
لا توجد اجابه حاسمه فمن وجهة نظري، هناك بعض العوامل التي يجب أخذها في الاعتبار عند اختيار بين مجالي الويب أو AI: مجال الذكاء الاصطناعي من المتوقع أن يكون له تأثير كبير على مختلف القطاعات في السنوات القادمة. فرص العمل حالياً توجد فرص عمل أكثر في مجال الويب، ولكن مع الوقت ستزداد فرص العمل في مجال AI. المهارات مجال AI يتطلب مهارات رياضياتية وبرمجية أعمق مقارنة بالويب. فيتطلب وقت اكثر للتمكن منه وتصبح قادر ع مواكبه سوق العمل. إذا كان لديك الوقت والرغبة في تعلم مهارات جديدة، فيمكنك البدء بالويب ثم توسيع مهاراتك لاحقاً في مجال AI. ومن الافضل ان تأخذ في كل مجال قشوره حتي تتأكد انك ميال لاي مجال منهم وتبدأ فيه باذن الله.
-
بالنسبة للسؤال الأول: - مهندس ذكاء اصطناعي (AI Engineer) - باحث في الذكاء الاصطناعي (AI Researcher) - محلل بيانات (Data Analyst) - مصمم نماذج ذكاء اصطناعي (AI Model Designer) - مهندس تعلم آلي (Machine Learning Engineer) - مطور أنظمة ذكاء اصطناعي (AI System Developer) أما بالنسبة للسؤال الثاني: نعم ممكن توظف كـ Full Stack Developer مع العمل في مجال الذكاء الاصطناعي. ولكن إلادماج سيكون صعباً لأن المجالان مختلفان. يفضل أن تركز على تطوير مهاراتك في المجال الذي اخترته بشكل جيد لتكون فعّالًا فيه. نصيحتي لك أن تركز على مجال واحد في البداية حتى تتمكن من إتقانه. إن تفرقك بين أكثر من مجال من شأنه أن يبعثر جهودك ويمنعك من الوصول للمستوى المتقدم. اختار إما مجال الذكاء الاصطناعي أو تطوير الويب، حسب ما تشعر أنه يميلك أكثر باهتمامك ومواهبك. ثم ركز عليه تماما حتى تصبح خبيرا فيه. بعد ذلك بعد سنة أو سنتين من التركيز على مجالك الأول، يمكنك توسيع آفاقك لتشمل المجال الثاني تدريجيا، لكن لا تجعل ذلك على حساب الأول.
-
يبدو انه توجد بعض الالتباس بين المسميات وال port الذي تعمل به فانت مخزن في قاعده البيانات الصوره ب port 1469 ويبدو انك تعمل ع port 5173 فلهذا السبب لا يجد هذه الصوره لاختلاف ال port ويبدو انك مخزن في قاعده البيانات الصوره في فولدر images يجب ان تتأكد من الاسم لانك تحاول انا تجلب الصوره وتنادي عليها من فولدر اسمه image وللتأكد من مسار الصوره يمكنك نقل مسار الصوره كاملا ووضعه في new tab واذا ظهرت الصوره اذا ف المسار صحيح واذا لم تظهر يجب ان ترجع وتفحص الملفات
- 6 اجابة
-
- 1
-
-
تستخدم وظيفة lambda لتعريف دوال غير مسماة (anonymous functions) بشكل مختصر. يمكن استخدام هذه الدوال لتعريف الدوال التي تمثل معادلات رياضية بشكل مرن لحساب التفاضل والتكامل. توفر مكتبات بايثون القياسية مثل sympy و scipy أدوات لحساب التفاضل والتكامل تستخدم وظيفة lambda داخليا. فمثلا يمكن استخدام integrate() مع دالة معرفة بواسطة lambda لحساب التكامل العددي أو التحليلي لدالة. وكذلك differentiate() لحساب التفاضل الجزئي أو الكلي لدالة. بايثون مناسبة للمحاكاة العددية وحل المعادلات التفاضلية بسبب قوتها الحسابية. يمكن تطبيق نتائج حسابات التفاضل والتكامل في مجالات أخرى مثل الرياضيات، الفيزياء، الهندسة والذكاء الاصطناعي. تدعم بايثون الرسم البياني والتحليل العددي مما يجعلها ملائمة لتطبيقات حسابات التفاضل والتكامل. فباختصار، توفر لغة بايثون أدوات تستخدم دوال lambda لتعريف معادلات قابلة للتمديد والتطبيق على حسابات التفاضل والتكامل بكفاءة. اليك بعض الامثله على استخدام وظيفة lambda مع حسابات التفاضل والتكامل في بايثون: # تعريف دالة بواسطة lambda وحساب مشتقها from sympy import * x = Symbol('x') f = lambda x: x**2 derivative(f(x), x) # حساب التكامل العددي لدالة مع تغيير الحدود from scipy import integrate func = lambda x: x**2 integrate.quad(func, 0, 1) # حساب التكامل التحليلي لدالة لوغاريتمية from sympy import * x = Symbol('x') f = lambda x: log(x) integrate(f(x), x) # حساب مشتق مقدار دالة معينة لقيمة لها from sympy import * x = Symbol('x') f = lambda x: x**2 f(1).diff(x) # حساب متوسط دالة على فترة باستخدام integrate from scipy import integrate func = lambda x: x integrate.quad(func, 0, 1)/2
- 1 جواب
-
- 1
-
-
ممكن توضح الرساله الخطأ اللي بتظهرلك لما تعمل run ممكن تكون مشكله كومبيلر
-
لا يوجد إجابة مطلقة على أفضلية قراءة الكتب أم مشاهدة الكورسات في مجال علوم الحاسب. كلاهما له مميزاته وعيوبه: - القراءة: تساعدك على الاستيعاب العميق للمواضيع وتعمق المعرفة. كما أنك تستطيع العودة للمعلومات والاستفادة منها مرات عديدة. لكن قد تجد القراءة مملة لبعض الأشخاص، كما أنها لا تتيح لك فرصة طرح الأسئلة. - الكورسات: تساعدك على اكتساب المهارات العملية وتطبيق ما تتعلمه. كما أن الشرح يكون مصحوباً بأمثلة. ولكنها قد لا تعطيك نفس مستوى الاستيعاب مثل القراءة. إذن، أفضل شيء هو مزج كلاهما: قراءة الكتب لاكتساب معرفة أعمق، ثم مشاهدة الكورسات لتطوير المهارات العملية. اختر ما يناسبك ولا تقتصر على إحداهما فقط.
- 3 اجابة
-
- 1
-
-
الأعداد الثنائية هي طريقة لتمثيل الأعداد تستخدم الرقمين 0 و1 فقط، بدلاً من استخدام الأرقام من 0 إلى 9 كما هو الحال في النظام العشري المعتاد. تشير الرقمين 0 و1 في النظام الثنائي إلى حالتين مختلفتين (مثل الشغال وغير الشغال في الدوائر الإلكترونية)، بينما تشير الأرقام في النظام العشري إلى قيم مطلقة. يعود أصل استخدام الأعداد الثنائية إلى علم الرياضيات، إذ كانت تستخدم من أجل التعامل مع المنطق الرياضي في عمليات الجمع والطرح. ومع تطور علوم الحاسوب وظهور الحواسيب الإلكترونية، أصبح من الضروري استخدام نظام تمثيل المعلومات يتناسب مع طبيعة عمل الدوائر الرقمية التي تستخدم فقط الحالتين "0" و"1". لذلك تم اعتماد الأعداد الثنائية لتمثيل البيانات داخل الحاسب، حيث يتم تخزين المعلومات كتسلسلات من الأرقام 0 و1، بدلاً من استخدام التمثيل العشري التقليدي. كما أن معظم لغات البرمجة مثل لغة الآلة (Assembly) ولغة C تستند إلى هذا النظام للتعامل مع البيانات على مستوى التعليمات الدقيقة للمعالج. تمثيل البيانات باستخدام الأعداد الثنائية له مزايا عدة، أهمها ملائمته لطبيعة عمل الدوائر الإلكترونية الرقمية التي تعتمد على الحالتين "0" و"1" فقط في تخزين ومعالجة المعلومات. كما أنه يتيح تخزين البيانات بكفاءة أعلى مقارنة بالأنظمة الأخرى في النظام الثنائي، يتم تمثيل الأعداد على شكل سلسلة من الأرقام "0" و"1"، حيث يحدد موقع كل رقم قيمته. فالرقم الأيمن له أدنى قيمة وهي 2^0 = 1، أما الرقم التالي فله قيمة 2^1 = 2، والثالث قيمة 2^2 = 4، وهكذا دواليك. على سبيل المثال، لو أردنا تمثيل العدد 13 بالنظام الثنائي لكانت شكله: 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0 = 8 + 0 + 2 + 1 = 11 أي أن العدد 13 العشري يساوي 11 ثنائياً. ولحساب قيمة أي عدد ثنائي، نقوم بضرب كل رقم في القاعدة 2 حسب مرتبته ثم جمع الناتج. أما الأعداد السالبة فيتم تمثيلها بنظام التكملة 2. بمعنى أننا نقوم بتحويل كل رقم 1 إلى 0 والعكس ثم إضافة 1 إلى الناتج. مثلا العدد -5 سيكون: 1's complement = 0111 2's complement = 1000 وهكذا لباقي الأعداد السالبة. للأعداد الثنائية العديد من التطبيقات الهامة في مجال الحوسبة، حيث تمثل أساس عمل الحاسوب وتخزين البيانات فيه. فجميع البيانات من صور ونصوص وأرقام تخزن داخل الذاكرة على هيئة سلاسل من الرقمين 0 و1. كما يتم تنفيذ جميع العمليات الحسابية مثل الجمع والطرح والضرب والقسمة على مستوى الأعداد الثنائية داخل وحدة المعالجة المركزية CPU. حيث تتضمن وحدة الحساب والمنطق ALU دوائر إلكترونية تنفذ هذه العمليات باستخدام التمثيل الثنائي للبيانات. كما أن لغات البرمجة الرئيسية مثل C وجافا وبايثون تعتمد أيضا على التمثيل الثنائي للبيانات داخل الحاسب. حيث تقوم بترجمة التعليمات البرمجية إلى لغة الآلة بناءً على هذا التمثيل قبل تنفيذها. ومن التطبيقات الأخرى للأعداد الثنائية في مجال الإلكترونيات والاتصالات، حيث يتم استخدامها لتمثيل الإشارات الكهربائية والبيانات المرسلة عبر الأسلاك والأقمار الصناعية. ونعم ستجد في كورسات الاكاديميه شرح للbinary numbers وال bit operators
-
توجد اكثر من علاقه يمكن ان توجد بين الكلاسات. الوراثة (Inheritance): يمكن لكلاس أن يورث خصائص وسلوكيات من كلاس آخر (الكلاس الأساس). class Animal { public void eat() { System.out.println("Eating..."); } } class Dog extends Animal { public void bark() { System.out.println("Bark!"); } } Dog dog = new Dog(); dog.eat(); // inherited from Animal dog.bark(); التركيب (Composition): عندما يحتوي كلاس على عضو من آخر. مثل كلاس سيارة يحتوي على كلاس محرك. class Engine { public void start() {...} } class Car { private Engine engine; public void drive() { engine.start(); // use engine } } الاتحاد (Aggregation): نفس معنى التركيب ولكن العلاقة أضعف. مثل سيارة ومالكها. class Car {...} class Person { private Car car; public void buyCar(Car c) { car = c; } } الارتباط (Association): عندما تتعامل كائنات مع بعضها البعض دون تعديل بنيتها الداخلية. مثل طالب ومعلم. class Student { private Teacher teacher; public void learn() { teacher.teach(); } } class Teacher { public void teach() {...} }
- 2 اجابة
-
- 1
-
-
هناك طرق محتملة للرجوع للتوثيق: قراءة الملفات التوثيقية المرفقة مع المكتبة/اللغة (مثل ملف readme أو docs). البحث في موقع المكتبة/اللغة أو مواقع توثيقها على الإنترنت. البحث في مصادر خارجية للتوثيق مثل موقع cppreference لسي++. تجربة استخدام escape characters أخرى لمعرفة سلوكها. اختبار مختلف الخيارات ضمن المكتبة/اللغة بهدف التعرف على سلوكها. ولكن اخي نصيحه تابع الدروس ولا تجعل هذه النقطه توقفك او تعطلك او يمكنك تحميل كوبيلر اخر.
- 4 اجابة
-
- 1
-
-
الفئة row تقوم بتعيين الشكل الشبكي (grid) للعناصر المتضمنة في ال div الأب. بحيث يتم: - تقسيم الفضاء المتاح على 12 عمودا. - يتم تعيين col-xs-* على الأبناء لتحديد عدد الأعمدة التي سيشغلها كل عنصر. في div أب مع row div ابن col-6 يأخذ 6 أعمدة div آخر col-6 يأخذ الستة المتبقية هذا يحقق تجميع العناصر بطريقة متساوية داخل ال row. بدون row ستقع العناصر تحت بعضها البعض. فنحن هنا قسمنا ال div الكبير ل 12 عمودا ثم قسمنا تحت اتنين div ابناء كل واحد يأخذ 6 عمودا ثم كل div ابن يقسم تحته اتنين (واحد label وواحد input ) ال label يأخذ 2 عمود و ال input يأخذ 10 اعمده
-
حسنا اخي انا اشتغلت ع الكود الخاص بك وكانوا موجودين داخل div به كلاس row يمكنك وضعهم داخل div مثل الكود التالي: <div class="row"> <div class="col-6 row"> <label for="fname" class="col-sm-2 col-form-label">اسم الموظف :</label> <div class="col-sm-10"> <input type="text" id="fname" name="fname" class="form-control"><br><br> </div> </div> <div class="col-6 row"> <label for="fname" class="col-sm-2 col-form-label">اسم الاب:</label> <div class="col-sm-10"> <input type="text" id="fname" name="fname" class="form-control"><br><br> </div> </div> </div>
-
حسنا اخي هذا هو الكود بعد التعديل <div class="col-6 row"> <label for="fname" class="col-sm-2 col-form-label">اسم الموظف :</label> <div class="col-sm-10"> <input type="text" id="fname" name="fname" class="form-control"><br><br> </div> </div> <div class="col-6 row"> <label for="fname" class="col-sm-2 col-form-label">اسم الاب:</label> <div class="col-sm-10"> <input type="text" id="fname" name="fname" class="form-control"><br><br> </div> </div> ملاحظه: لا يجب ان يكون عنصرين في نفس الصفحه لهما نفس قيمه ال id
-
حسنا في هذه الحاله يجب ان تجعل ال div الاعلي يأخذ كلاس col-6 فقط وفي هذه الحاله الصفحه ستأخذ اتنين inputs في نفس الصف: <div class="col-6 row">
-
المشكلة هنا في طريقة تفسير escape characters \r و \b في مخرج cout. طريقة عمل escape characters تختلف باختلاف البرنامج أو اللغة. في سي++ escape character: - \r يعيد توضع المؤشر إلى بداية السطر. - \b يعيد حذف الحرف الأخير. لكن cout لا يدعمهما بالشكل المتوقع. فاذا جربت اكثر من برنامج او كومبيلر (يمكنك تجربه online complier) ستجد البعض يتعامل مع escape characters والبعض الاخر لا يتعامل معه. فالاختلاف من الممكن ان يكون في الاعتماد على نظام التشغيل المستخدم في بعض الحالات. ولكن لا تتوقف هنا فيمكنك الرجوع لتوثيق اللغة/المكتبة لمعرفة طريقة عملها, او تجنب استخدام escape واستعمال حلول برمجية محلية بدلا منها.
- 4 اجابة
-
- 1
-
-
سأوضح الفرق بين localStorage و sessionStorage و cookies: localStorage: يستخدم لتخزين البيانات بشكل دائم حتى بعد إغلاق المتصفح. مفيد جداً لتخزين البيانات الشخصية للمستخدم مثل الإعدادات. يفضل استخدامه عندما تحتاج إلى الاحتفاظ بالبيانات لفترة طويلة، وترغب في الوصول إليها حتى بعد إعادة فتح المتصفح. لا يفضل استخدامه عندما لا ينصح بتخزين كميات كبيرة من البيانات غير الضرورية حيث تبقى مخزنة بشكل دائم, وتجنب تخزين معلومات حساسة مثل البيانات المالية أو الصحية بسبب عدم أمانها. - مثال: حفظ إعدادات التفضيلات في تطبيق. - عندما يقوم المستخدم بتغيير خلفية التطبيق أو اللغة المفضلة، يمكن حفظ هذه التفضيلات باستخدام `localStorage` لكي يظلوا سارين حتى بعد إعادة فتح المتصفح. sessionStorage: يخزن البيانات فقط أثناء فترة عمل الجلسة (tab) في المتصفح. يستخدم عادة لحفظ حالة التطبيق أثناء تصفح المستخدم للصفحات. يفضل استخدامه عندما تحتاج إلى تخزين بيانات تكون ذات فائدة فقط خلال جلسة التصفح الحالية، ولا تحتاج إليها بعد إغلاق المتصفح. لا يفضل استخدامه عند تخزين به معلومات لابد من بقائها بعد انتهاء الجلسة مثل تفضيلات المستخدم. - مثال: تخزين استبيان أثناء جلسة التصفح الحالية. - عندما يقوم بملء استبيان، يمكن استخدام `sessionStorage` لتخزين الإجابات خلال جلسة التصفح الحالية عند رجوعه لها ولم يغلق المتصفح سيجد اجاباته ويكمل عليها. cookies: تخزن بيانات على جهاز المستخدم وترسل مع كل طلب. يمكن استخدامها لتتبع أنشطة المستخدم أو تسجيل الدخول. له تاريخ انتهاء فيمكن تحديد تاريخ انتهاء لـ `cookies`، حيث يُمكن أن تبقى البيانات حتى هذا التاريخ أو حتى يتم حذفها يدوياً. متى يفضل استخدامه عندما تحتاج إلى تخزين البيانات على الجهاز العميل مع تحديد مدة صلاحيتها, او عند الحاجة إلى مشاركة البيانات بين المتصفح والخادم في كل طلب. - مثال: حفظ معرف الجلسة لتحقيق تسجيل الدخول الآمن. - عند تسجيل الدخول، يُمكن حفظ معرف الجلسة في `cookies` مع تحديد فترة صلاحيته لضمان بقاء المستخدم مسجلًا حتى بعد إعادة فتح المتصفح. و تذكر المستخدم وتسجيله تلقائيا عند زيارته للموقع مرة أخرى.
-
يمكنك وضع كل input في هذا السياق حتي تكون نفس حجم وتحت بعض <div class="col-12 row"> <label for="fname" class="col-sm-2 col-form-label"> الرقم الوطني:</label> <div class="col-sm-10"> <input type="text" id="fname" name="fname" class="form-control"><br><br> </div> </div> فهنا جعلنا كل input مع ال label سياخذون صف كامل (حسب col-12) وكل input ('col-sm-10') له نفس الحجم وكذلك الlabel ('col-sm-2') واستخدمنا كلاسات اخري في البوستراب لتحسين الشكل وتنسيقه (col-form-label و form-control)
-
في صفحة الاجازات، يمكنك عرض قائمة تحتوي أسماء الموظفين لاختيار أحدهم. عند عمل صفحة إضافة/تعديل إجازة، قم بإضافة خيار لإختيار اسم الموظف من قائمة تحتوي على أسماء الموظفين. عند الحفظ، قم بإختيار رقم الموظف المقابل للاسم المختار وحفظه في حقل employee_id. <select name="employee_id"> // for loop <option value="1">أحمد</option> <option value="2">علي</option> </select> هذا سيمكنك من تخصيص بيانات الإجازة لكل موظف على حدى.
-
نعم تعلم الداتا ستركتشر مهم جدا أثناء تعلم البرمجة بشكل عام. الداتا ستركتشر أو هياكل البيانات هي الطريقة التي نخزن وننظم المعلومات في البرنامج. تعتبر أحد المفاهيم الأساسية في البرمجة. بعض أهم أنواع الداتا ستركتشر التي سيكون من المفيد أن تتعرف عليها: - القوائم (Arrays) - القواميس (Objects) - الصفوف (Linked Lists) - الأشجار (Trees) - الطوابير (Queues) - المكامل (Stacks) فهم هذه الأنواع بشكل جيد سيساعدك كثيرا في اختيار أفضل تمثيل لبيانات تطبيقك والعمل عليها بشكل فعال. كما أن تعلم الداتا ستركتشر ضروري لفهم الخوارزميات والبرمجة الحسابية بشكل أعمق. إذا كنت تعلم هياكل البيانات، يمكنك تحسين قدراتك في تصميم الخوارزميات وتحليل الأداء، مما يساعد في بناء تطبيقات أفضل وأكثر فعالية. يمكنك البدء بفهم الهياكل الأساسية مثل القوائم، الطوابير، الأشجار، والجرافات، ثم توسيع فهمك لتشمل الهياكل المتقدمة وتطبيقاتها العملية. بالإضافة إلى ذلك، يمكن أن يكون تعلم هياكل البيانات مفيدًا عند التعامل مع بعض الإطارات (Frameworks) ومكتبات Node.js التي قد تستخدم هياكل البيانات في واجهة برمجة التطبيقات (API) الخاصة بها. في الخلاصة، تعلم الداتا ستركتشر مهم جدا للمبرمجين ولن يضرك بالتأكيد. أنصحك بتخصيص بعض الوقت له.
- 5 اجابة
-
- 1
-
-
نعم، يجب ان توجد علاقة بين جدول الموظفين و جدول الاجازات. كمثال يمكنك تصميم الجداول: جدول الموظفين: مفتاح رئيسي: id بيانات الموظف (الاسم، الوظيفة، تاريخ الميلاد، الرقم الوطني، الخ) وجدول الاجازات: مفتاح رئيسي: id employee_id - مفتاح أجنبي يربط بجدول الموظفين نوع الاجازة (اجازة سنوية، مرضية، ولادة، خاصة) تاريخ بداية الاجازة تاريخ نهاية الاجازة عدد أيام الاجازة هذا سيسمح لك بتتبع اجازات كل موظف عبر employee_id.
-
من الممكن الخطأ في الكود في استخدام المتغير `i` في التعبير lambda. يمكنك تجربه تعديل جزء الكود ليبدو كما يلي: Table['3أكبر_قيمة'] = Table.apply(lambda row: col1_values[row.name] if col2_values[row.name]==0 else col2_values[row.name] if 0 < col2_values[row.name] <= 50 else None, axis=1) تم استبدال `i` بـ `row.name` لضمان استخدام الفهرس الصحيح للصفوف. يرجى تجربة هذا التعديل والتحقق مما إذا كان يحل المشكلة.
- 19 اجابة
-
- 1
-
-
لا داعي لإنشاء متغيرات A و B، بما أننا سنقوم بدمج selected_column_1 و selected_column_2 مباشرة, يفضل إعادة تعيين الفهرس مرة واحدة بعد الدمج لتجنب أي مشاكل. selected_column_1 = df.iloc[8::2, [0,1,2,cl3,cl4,cl5,cl6]] selected_column_2 = df.iloc[9::2, [2,cl3,cl4,cl5,cl6]] self.Table = pd.concat([selected_column_1, selected_column_2], axis=1, ignore_index=True) self.Table.reset_index(drop=True, inplace=True)
- 5 اجابة
-
- 1
-
-
يبدو انك تضع في الكود فهل يواجهك نفس الخطأ المسبق ام خطأ اخر ؟
- 5 اجابة
-
- 1
-
-
وعليكم السلام الخطأ هنا يقول أن إطارات البيانات التي تم توحيدها (a1, a2, a3) لديها مؤشرات مكررة. فيجب تعيين الفهرس مجددًا بشكل فريد لكل إطار بيانات قبل الدمج: a1 = a1.reset_index(drop=True) a2 = a2.reset_index(drop=True) a3 = a3.reset_index(drop=True) self.Table = pd.concat([a1, a2, a3], axis=0) يجب استخدام `ignore_index=True` أثناء عملية الدمج: باستخدام ignore_index=True سيقوم pandas بإعادة تعيين الأرقام بشكل متلاحق دون تكرار، حتى لو كانت مكررة في الأصل. فهذا سيؤدي لدمج البيانات بشكل صحيح دون أخطاء. self.Table = pd.concat([a1, a2, a3], axis=0, ignore_index=True) تأكد من أن المؤشرات فريدة لكل إطار بيانات قبل الدمج لتجنب هذه المشكلة.
- 5 اجابة
-
- 1
-
-
الفرق بين الطريقتين هو: الطريقة الأولى تستخدم طريقة GET لإرسال الطلب. الطريقة الثانية تستخدم طريقة POST لإرسال الطلب. الطريقة الأولى أبسط وأسهل للتطبيقات غير الحساسة, الطريقة الثانية أكثر أمانًا لأنها تمنع الحذف عن طريق الخطأ عبر GET. كما تدعم CSRF protection. أما بالنسبة لـ @method فهو تابع لارافل يُستخدم لتغيير طريقة الطلب عند استخدام POST، فمثلاً للحذف لابد من إرسال DELETE request. يُستخدم في البرمجة على الويب عدة أنواع من طرق HTTP (HTTP methods) لتحديد نوع العملية التي يجب أن يقوم بها الخادم على الموارد. فهؤلاء أهم طرق بروتوكول HTTP: - GET: يستخدم لجلب (استرجاع) معلومات من الخادم. مثل قراءة محتوى صفحة. - POST: يستخدم لإرسال معلومات جديدة إلى الخادم لإنشاء مورد جديد. مثل إنشاء تسجيل جديد في قاعدة البيانات. - PUT: يستخدم لتحديث معلومات مورد معين بالكامل. مثل تعديل بيانات تسجيل كاملة. - PATCH: كPUT ولكن يسمح بتعديل جزء من المورد فقط. - DELETE: يستخدم لحذف مورد معين. مثل حذف تسجيل من قاعدة البيانات. فبشكل عام الطريقة الثانية أفضل لأنها أكثر أمانًا وهي الطريقة المتبعة عمومًا في لارافل.