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

لوحة المتصدرين

  1. Ali Ahmed55

    Ali Ahmed55

    الأعضاء


    • نقاط

      6

    • المساهمات

      2040


  2. ياسر مسكين

    ياسر مسكين

    الأعضاء


    • نقاط

      4

    • المساهمات

      2627


  3. محمد_عاطف

    محمد_عاطف

    الأعضاء


    • نقاط

      4

    • المساهمات

      8456


  4. نجاة العبد الرحيم

    • نقاط

      3

    • المساهمات

      209


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 12/27/24 in أجوبة

  1. السلام عليكم هي مكتبه الseaborne فيه بيانات يعني فيه مجموع من البيانات ؟
    3 نقاط
  2. السلام عليكم لو سمحتوا انا من سوريا واخر شهرين مرينا بظروف وما كنت تابع دراسة برمجة وحاسة انوا ضاعت معلومات شو اعمل هل اقوم بالمتابعة ام اعيد جميع ما قمت بدرسته مسبقا؟
    3 نقاط
  3. what is XGboost? how it work? and how to use it
    2 نقاط
  4. السلام عليكم ورحمة الله وبركاته لما أدخل على موقعي تطلع هذه الرسالة URL Error: SSL: no alternative certificate subject name matches target host name '103-link166.quixot.site' المشكلة في التحقق من الشهادة بس كيف أحلها وللعلم الموقع بالوورد برس
    2 نقاط
  5. السلام عليكم لدي جملة استعلام تالية تعرض بيانات بدون تكرار لماذا في كريستال ريبورت تعرض أكثر من مرة بتكرار SELECT dbo.BUYBILL.BUYCODE, dbo.BUYBILL.BUYTYPE, dbo.BUYBILL.BUYDATE, dbo.BUYBILL.IMPORTERNAME, dbo.BUYBILL.NOTES, dbo.BUYBILL.TOTAL, dbo.BUY_DET.ITEMCODE, dbo.BUY_DET.ITEMNAME, dbo.BUY_DET.PRICE, dbo.BUY_DET.QTY, dbo.BUY_DET.TOTAL AS Expr1 FROM dbo.BUYBILL INNER JOIN dbo.BUY_DET ON dbo.BUYBILL.BUYCODE = dbo.BUY_DET.BUYCODE; رغم انه فعلت خيار Suppress If Duplicated وقم بوضع علامة بجانبه. لزالت تظهر مشكلة يتكرر سطر ثلاثة مرات لكنه فارغ فقط ما الحل سبب انه datagridview تجلب منتجات اخر فاتورة void createdatatable() { dt.Columns.Add("رقم الصنف"); dt.Columns.Add("اسم الصنف"); dt.Columns.Add("سعر الشراء"); dt.Columns.Add("الكمية "); dt.Columns.Add(" الاجمالي"); dataGridView1.DataSource = dt; } try { if (IMPORTERNAME.SelectedIndex < 0) { MessageBox.Show("يرجي اختيار اسم الزبون", "تنبيه"); IMPORTERNAME.Select(); return; } if (BUYTYPE.SelectedIndex < 0) { MessageBox.Show("يرجي اختيار نوع الفاتورة", "تنبيه"); BUYTYPE.Select(); return; } if (dataGridView1.Rows.Count == 0) { MessageBox.Show("لاتوجد أصناف لحفظها", "تنبيه"); return; } DataTable dt = new DataTable(); SqlDataAdapter adp = new SqlDataAdapter("select *from buybill where buycode='" + BUYCODE.Text + "'", Class1.con); adp.Fill(dt); if (dt.Rows.Count > 0) { int code = Class1.CODE_GENE("BUYBILL", "ID") + 1; BUYCODE.Text = code.ToString(); } else { DataRow dr = dt.NewRow(); dr["BUYCODE"] = BUYCODE.Text; dr["BUYTYPE"] = BUYTYPE.Text; dr["IMPORTERNAME"] = IMPORTERNAME.Text; dr["NOTES"] = NOTES.Text; dr["BUYDATE"] = BUYDATE.Value; dr["TOTAL"] = Convert.ToDecimal(total_.Text); dr["TOTAL_ARBIC"] = totalar.Text; dr["TOTALQTY"] = Convert.ToInt32( totalqty.Text); dt.Rows.Add(dr); SqlCommandBuilder save = new SqlCommandBuilder(adp); adp.Update(dt); adp = new SqlDataAdapter("SELECT *FROM BUY_DET", Class1.con); adp.Fill(dt); for(int i=0;i<dataGridView1.Rows.Count;i++) { DataRow dr_ = dt.NewRow(); dr_["BUYCODE"]= BUYCODE.Text; dr_["ITEMCODE"] = dataGridView1.Rows[i].Cells[0].Value; dr_["ITEMNAME"] = dataGridView1.Rows[i].Cells[1].Value; dr_["PRICE"]= dataGridView1.Rows[i].Cells[2].Value; dr_["TOTAL"] = total_.Text; dr_["QTY"] = dataGridView1.Rows[i].Cells[3].Value; dt.Rows.Add(dr_); SqlCommandBuilder cmd_ = new SqlCommandBuilder(adp); adp.Update(dt); string itemCode = dataGridView1.Rows[i].Cells[0].Value.ToString(); int qty = Convert.ToInt32(dataGridView1.Rows[i].Cells[3].Value); UpdateItemQuantity(itemCode, qty); } MessageBox.Show(" تم حفظ بيانات فاتورة بنجاح وتحديث كمية في المخزن ", "رسالة تأكيد", MessageBoxButtons.OK, MessageBoxIcon.Information); dataGridView1.DataSource = ""; button1_Click(null, null); } } catch(Exception ex) { MessageBox.Show(ex.Message); } كود حفظ وتعبئة داتا قريد فيو
    1 نقطة
  6. السلام عليكم هي اي دي C() في مكتبه الstatsmodels وامتي استخدمها وهل هي لها استخدمات تاني غير ان استخدمها مع الداله OLS ؟
    1 نقطة
  7. كنت عايز استفسر عن المعاد اللي ابعت فيه وحد يرد عليا عشان ببعت بعض الاسأله في الصباح الباكر بعد الفجر محدش بيرد اي هو المعاد
    1 نقطة
  8. السلام عليكم هذه المساله من leetcode لا حظت انه عند وضع الزيادة قبل اسم المتغير يعطي نتائج صحيحه علي عكس اذا قمت بالزيادة بشكل طبيعي هنا يعطي خطا ويظهر نواتج 5 5 5 اذا قمت بالاستدعاء الاتي /** * const counter = createCounter(5) * counter.increment(); // 6 * counter.reset(); // 5 * counter.decrement(); // 4 */ ما السبب var createCounter = function(init) { let present = init; return { increment:()=> present++, decrement:()=> present--, reset:()=> present = init, } };
    1 نقطة
  9. مكتبة Seaborn في Python هي مكتبة متقدمة لإنشاء الرسوم البيانية وتُستخدم بشكل أساسي لتحليل البيانات وتصوير العلاقات الإحصائية، ;id وهي تحتوي على مجموعة من مجموعات البيانات المدمجة التي يمكن استخدامها كعينات لتجربة الرسوم البيانية والبدء في تحليل البيانات وهذه البيانات مدمجة داخل المكتبة وتستخدم غالبا في الأمثلة التعليمية والتطبيقات التجريبية ولكن البيانات المدمجة في Seaborn صغيرة الحجم وتستخدم أساسا في التعلم وتجربة المكتبة لذا إذا كنت تعمل على مشاريع تحليل بيانات فعلية، ستحتاج عادة إلى استيراد بياناتك من مصادر خارجية كملفات CSV وقواعد بيانات يمكنك إيجاد المزيد من المعلومات من هنا:
    1 نقطة
  10. وعليكم السلام ورحمة الله وبركاته . نعم مكتبة Seaborn تحتوي على مجموعة من البيانات المدمجة التي يمكنك استخدامها لتحليل البيانات والرسومات البيانية. وإليك بعض المجموعات المشهورةفي Seaborn تشمل: tips: تحتوي على بيانات تخص الفواتير والإكراميات في المطاعم مع تفاصيل مثل قيمة الفاتورة، مقدار الإكرامية، الجنس، اليوم، والفئة الزمنية. iris: تحتوي على بيانات خاصة بأزهار الإيريس، مع معلومات عن أطوال الأوراق والأزهار لأنواع مختلفة من الزهور. titanic: تحتوي على بيانات تتعلق بركاب سفينة تيتانيك، مثل ما إذا كانوا قد نجاوا أو لا، العمر، الجنس، الفئة الاجتماعية، وغيرها. diamonds: تحتوي على بيانات تتعلق بالألماس، مثل الحجم، اللون، النقاء، السعر، وغيرها من الخصائص. وإليك رابط github لجميع البيانات المتاحة والملفات أيضا الخاصة بها : https://github.com/mwaskom/seaborn-data ويمكنك تحميل البيانات من خلال الدالة import seaborn as sns # تحميل مجموعة بيانات iris كمثال tips = sns.load_dataset('iris')
    1 نقطة
  11. الدالة C() في مكتبة statsmodels تستخدم لتصنيف المتغيرات (categorical variables) في النماذج الإحصائية ويتم استخدامها لتحويل المتغيرات النوعية (categorical variables) إلى متغيرات وهمية (dummy variables) تلقائيا، مما يسمح بإدراجها في نماذج الانحدار الخطي أو غيرها من النماذج الإحصائية وعند استخدام الدالة OLS لإجراء تحليل الانحدار، فإن C() تستخدم لتضمين المتغيرات النوعية. بدلا من إدخال المتغير النوعي كرقم (مثل 1، 2، 3) أين يتم تحويله إلى متغيرات وهمية بحيث يمكن للنموذج التعامل معه بشكل صحيح. و C() يقوم بتشفيره إلى متغيرات رقمية متعددة تمثل الفئات، مما يساعد النموذج على التعامل معها بشكل صحيح دون الحاجة لتحويلها يدويا وهذا باستخدام طرق مثل pandas.get_dummies(). ويتم استخدامه عادة عند التعامل مع المتغيرات النوعية في تحليل الانحدار أو في نماذج أكثر تعقيدا مثل النماذج المختلطة (Mixed Models) أو تحليل التباين (ANOVA) كما تتيح خيارات إضافية مثل تحديد ترتيب الفئات أو نوع الترميز المستخدم (مثل التأثيرات بدلا من الترميز الوهمي) إلى جانب OLS ويمكن استخدامها لإنشاء تفاعلات بين المتغيرات أو تخصيص تمثيل المتغيرات النوعية في أي نموذج إحصائي.
    1 نقطة
  12. نعم مكتبة Seaborn تحتوي على مجموعة مدمجة من البيانات يمكن استخدامها لاختبار الرسوم البيانية وتجربة المكتبة، للوصول إلى هذه البيانات، يمكنك استخدام الدالة seaborn.get_dataset_names() لمعرفة أسماء مجموعات البيانات المتوفرة، ومن ثم تحميل أي منها باستخدام الدالة seaborn.load_dataset() بهذا الشكل: import seaborn as sns # عرض أسماء مجموعات البيانات المتوفرة print(sns.get_dataset_names()) # تحميل مجموعة البيانات 'tips' data = sns.load_dataset('tips') # عرض أول 5 صفوف من البيانات print(data.head()) بالتوفيق إن شاء الله.
    1 نقطة
  13. وعليكم السلام ورحمة الله وبركاته. اعانكم الله ووفقكم ورزقكم الأمان . بخصوص الانقطاع مدة شهرين ليست بالمدة الكبيرة التي تلزم اعادة كل شئ من البداية إذا كنتي بالفعل قد درستي الاساسيات جيدا . ولكن إذا شعرتي بالنسيان يمكنكي مشاهدة الاساسيات مع تسريع الدرس حتي يتم استرجاع المعلومات ويكفي فقط التطبيق سريعا في المشروع العملي والنظر الى الاكواد التي قمتي بكتابتها . ويمكنكي قراءة الاجابات النالية لمزيد من النصائح :
    1 نقطة
  14. السلام عليكم هي اي الداله دي crosstab الموجود في مكتبه pandas واي هي استخدمتها ؟
    1 نقطة
  15. دالة crosstab هي أداة مفيدة جدا لتحليل البيانات وإنشاء جداول تقاطعية (جداول محورية) وتستخدم لحساب تكرار العلاقات بين متغيرين أو أكثر في البيانات والاستخدام الأساسي للدالة كالتالي: pd.crosstab(index, columns) وهذا مثال لنفترض التالي: import pandas as pd data = { 'النوع': ['ذكر', 'أنثى', 'ذكر', 'أنثى', 'ذكر'], 'المدينة': ['القاهرة', 'الإسكندرية', 'القاهرة', 'القاهرة', 'الإسكندرية'] } df = pd.DataFrame(data) result = pd.crosstab(df['النوع'], df['المدينة']) print(result) والناتج سيكون جدول يوضح كم عدد الذكور والإناث في كل مدينة بحيث الصفوف تمثل النوع والأعمدة تمثل المدينة أين يمكنك حساب النسب المئوية: pd.crosstab(df['النوع'], df['المدينة'], normalize='index') إضافة هوامش المجاميع: pd.crosstab(df['النوع'], df['المدينة'], margins=True) تطبيق دوال حسابية مختلفة: pd.crosstab(df['النوع'], df['المدينة'], values=df['العمر'], aggfunc='mean')
    1 نقطة
  16. ما هو الفرق بين الانحدار الخطي باستخدام متغير واحد والفرق بين الانحدار الخطي باستخدام أكثر من متغير ؟
    1 نقطة
  17. الانحدار الخطي هو تقنية إحصائية تستخدم لنمذجة العلاقة بين المتغيرات فهناك نوعان رئيسيان من الانحدار الخطي الأول الانحدار الخطي البسيط (باستخدام متغير واحد) والانحدار الخطي المتعدد (باستخدام أكثر من متغير) واختيار أي نوع من الانحدار يعتمد على طبيعة البيانات والعلاقة بين المتغيرات بالنسبة للنوع الأول المشكلة لنقل أننا نريد دراسة العلاقة بين عدد ساعات الدراسة (التي سنرمز لها بـ X) ودرجات الامتحان (التي سنرمز لها بـ Y) كالتالي: ساعات الدراسة (X) درجات الامتحان (Y) 1 50 2 60 3 70 4 80 5 90 يمكننا استخدام المعادلة التالية: Y=β0+β1X وبعد تحليل البيانات، لنفترض أن النتائج هي: Y=50+10X ولنفسر النتيجة فإن: β0=50 وهذا يعني أنه إذا لم يدرس الطالب (0 ساعات)، ستكون درجته 50. β1=10 هذا يعني أن كل ساعة دراسة إضافية تزيد من الدرجة بمقدار 10 درجات. وبالنسبة للاختيار المتعدد دعنا نضيف متغيرا آخر، وهو عدد الساعات التي يقضيها الطالب في النوم لنرمز له بـ Z ونريد دراسة تأثيرها أيضا على درجات الامتحان كالتالي: ساعات الدراسة (X) ساعات النوم (Z) درجات الامتحان (Y) 1 6 50 2 5 60 3 8 70 4 7 80 5 8 90 وهنا يمكننا استخدام المعادلة التالية: Y=β0+β1X+β2Z بعد تحليل البيانات، لنفترض أن النتائج هي: Y=40+8X+5Z أي أنه: β0=40: إذا لم يدرس الطالب (0 ساعات) ولم ينم، ستكون درجته 40. β1=8: كل ساعة دراسة إضافية تزيد من الدرجة بمقدار 8 درجات. β2=5: كل ساعة نوم إضافية تزيد من الدرجة بمقدار 5 درجات. بالنسبة لسؤالك الجديد في الانحدار الخطي المتعدد، يمثل: b1,b2,…,bn تأثيرات المتغيرات المستقلة المختلفة على المتغير التابع Y وكل 𝑏𝑖 (حيث 𝑖 هو رقم المتغير) يعكس مقدار تغير Y عند زيادة xi بوحدة واحدة، مع ثبات بقية المتغيرات رغم وجود عدة معاملات (ميول)، فإن النموذج يمثل علاقة واحدة بين المتغيرات المستقلة وY، ويستخدم لتحديد أفضل خط (أو سطح) ملائم يحقق أفضل تطابق بين القيم المتوقعة والملاحظة.
    1 نقطة
  18. y = b0 + b1 * x1 + b2 * x2 + ... + bn * xn في الانحدار الخطي المستقيم باستخدام متغير واحد y = b0 + b1 * x يكون لb0 هو الثابت أو ال Intercept ويكون b1 هو الميل أو slope في المعادلة الانحدار الخطي باستخدام أكثر من متغير لا أفهم ماذا يعني b1, b2 , bn هل هو يعني أن أكثر من ميل وهل ينفع أن يكون في المعادلة أكثر من ميل لأن هكذا سيكون أكثر من خط ونحن نحتاج أن نحسب the best fit line ؟
    1 نقطة
  19. الفرق بين الانحدار الخطي باستخدام متغير واحد والانحدار الخطي باستخدام أكثر من متغير يكمن في عدد المتغيرات المستقلة المستخدمة للتنبؤ بالمتغير التابع. في الانحدار الخطي البسيط، يتم استخدام متغير مستقل واحد فقط لتوقع المتغير التابع، ويكون النموذج بسيطًا لتحليل العلاقة بين متغيرين فقط والصيغة هي: y = b0 + b1 * x حيث x هو المتغير المستقل، وy هو المتغير التابع، وb0 هو التقاطع، وb1 هو الميل يناسب هذا النموذج العلاقات بين متغيرين فقط. أما في الانحدار الخطي المتعدد، فيشمل النموذج عدة متغيرات مستقلة، ويكون النموذج أكثر تعقيدا لتحليل البيانات متعددة الأبعاد والصيغة هي: y = b0 + b1 * x1 + b2 * x2 + ... + bn * xn حيث x1, x2, ..., xn هي المتغيرات المستقلة، وb1, b2, ..., bn هي المعاملات التي توضح تأثير كل متغير مستقل على المتغير التابع. يستخدم الانحدار الخطي البسيط للعلاقات البسيطة بين متغيرين، بينما يستخدم الانحدار المتعدد للعلاقات الأكثر تعقيدا التي تشمل عدة متغيرات.
    1 نقطة
  20. الانحدار الخطي باستخدام متغير واحد (الانحدار الخطي البسيط) يقوم بتحديد علاقة خطية بين متغير مستقل واحد (X) ومتغير تابع (Y). و يستخدم الانحدار الخطي البسيط لتحليل العلاقة بين متغيرين فقط وهذه هي المعادلة الخاصة به: Y = β0 + β1X حيث Y هو المتغير التابع و X هو المتغير المستقل و β0 هو معامل الانحدار و β1 همعدل التغيير في Y بالنسبة لتغيير X. أما بالنسبة إلى الانحدار الخطي باستخدام أكثر من متغير (الانحدار الخطي المتعدد) يقوم بتحديد علاقة خطية بين عدة متغيرات مستقلة (X1 X2 ..... Xn) ومتغير تابع (Y) و يستخدم هذا الانحدار الخطي المتعدد لتحليل العلاقة بين عدة متغيرات وهذه هي المعادلة الخاصة به: Y = β0 + β1X1 + β2X2 + … + βnXn حيث Y هو المتغير التابع و (X1 X2 ..... Xn) هي المتغيرات المستقلة و β0 هو معامل الانحدار و ( β1 β2 ... βn ) هي معدلات التغيير في Y بالنسبة لتغيير كل متغير مستقل.
    1 نقطة
  21. بالنسبة للإنحدار الخطي باستخدام متغير واحد يعتمد على علاقة بين متغير مستقل واحد ومتغير تابع، و في هذا النوع الهدف هو إيجاد معادلة خطية تمثل هذه العلاقة، حيث يكون شكل المعادلة هو y=mx+cy = mx + c، حيث mm هو الميل وcc هو التقاطع، و يستخدم هذا النموذج في الحالات التي يكون فيها المتغير المستقل كافياً للتنبؤ بالمتغير التابع. أما الانحدار الخطي باستخدام أكثر من متغير ، فيأخذ في الاعتبار أكثر من متغير مستقل للتنبؤ بالمتغير التابع، و تكون المعادلة الخطية في هذه الحالة على الشكل: y=b0+b1x1+b2x2+⋯+bnxn ، حيث يمثل كل xix_i متغير مستقل، وbib_i هي المعاملات المرتبطة بهذه المتغيرات، و يتميز هذا النموذج بقدرته على التعامل مع بيانات أكثر تعقيدا، حيث يمكنه تفسير التأثير المشترك لمجموعة من العوامل على المتغير التابع.
    1 نقطة
  22. وعليكم السلام ورحمة الله وبركاته. الدالة crosstab تقوم بإنشاء جدول تقاطع (Cross Tabulation Table) وهو جدول تكراري يساعد في تلخيص البيانات وتصنيفها بناء على عدة متغيرات. وتستقبل الدالة العديد من المعاملات : index: وهي القيم التي يتم إستخدامها كمحور للصفوف (rows). columns: القيم التي يتم إستخدامها كمحور للأعمدة (columns). normalize: إذا كانت True، يتم تطبيع القيم (عرض القيم كنسب مئوية). dropna: يتم حذف القيم الفارغة (NaN) إذا تم تمرير True لهذا المعامل. وتستخدم في العديد من الأمور مثل حساب التكرارات للقيم لديك و أيضا عمل تجميع (aggregate) للقيم لديك . ويمكنك قراءة التوثيق الرسمي لها لمزيد من التفاصيل : https://pandas.pydata.org/docs/reference/api/pandas.crosstab.html
    1 نقطة
  23. الدالة crosstab في مكتبة Pandas تستخدم لإنشاء جداول تقاطع، و تظهر العلاقة بين متغيرين أو أكثر بطريقة منظمة وسهلة الفهم، و تعمل على عد التكرارات لكل مزيج من القيم بين الأعمدة والصفوف، كما يمكنها تلخيص القيم باستخدام دوال إحصائية مثل المجموع أو المتوسط عبر معامل aggfunc، و تعتبر أداة قوية لتحليل البيانات واستخراج التوزيعات أو الأنماط، مع إمكانية إضافة مجاميع الصفوف والأعمدة، وتطبيع النتائج إلى نسب مئوية، و تستخدم بشكل شائع في استكشاف البيانات واستخراج إحصائيات تلخيصية لتقديم رؤى واضحة عن العلاقات بين المتغيرات.
    1 نقطة
  24. وعليكم السلام ورحمة الله وبركاته، دالة crosstab في pandas هي أداة قوية لتحليل البيانات تستخدم لإنشاء جداول تقاطعية تظهر العلاقة بين متغيرين أو أكثر في مجموعة البيانات بحيث تقوم الدالة بحساب التكرارات أو القيم المجمعة عند تقاطع المتغيرات ويمكن استخدامها مع خيارات متعددة مثل margins=True لإضافة المجاميع الكلية، وnormalize=True لعرض النسب المئوية بدلا من العدد على سبيل المثال يمكننا تحليل مبيعات المنتجات حسب المنطقة، أو تصنيف العملاء حسب الفئة العمرية والجنس والصيغة الأساسية للدالة هي: pd.crosstab(index, columns, values=None, aggfunc=None) حيث index وcolumns هما المتغيران المراد تحليل علاقتهما، وvalues هو عمود القيم المراد تجميعها وهو اختياري بينما aggfunc هي دالة التجميع المستخدمة مثل sum أو mean وهذه الدالة مفيدة بشكل خاص في التحليل الإحصائي وتحليل البيانات الاستكشافي.
    1 نقطة
  25. السلام عليكم كما نعلم ان في لارافل الاصدار الحديث 11 تم تغيير ترتيب الملفات و تم حذف الملف kernel.php الذي كان يتم فيه تسجيل المدل وير الذي يتم انشائه middleware سؤالي هو كيف يمكنني التعديل على المدل وير (auth and guest ) التي يتم انشائها بشكل تلقائي مع الحزمه breeze شكرا لكم
    1 نقطة
  26. الطبقات الوسيطة التي ذكرتها (auth و geust) لا يتم إنشاؤها مع الحزمة Breeze فهي لا علاقة لها بالحزمة بشكل خاص وإنما تأتي مع إطار العمل نفسه و Breeze يستعملها عند تعريف المسارات الخاصة بعملية المصادقة والتسجيل وغيرها، كما هو الحال طبعاً مع Jetstream و Fortify ... الطبقة الوسيطة guest عملها هو عدم السماح للمستخدم المصادق عليه بالوصول إلى مسارات الزوار أو بشكل أدق المسارات المطبق عليها هذه الطبقة وأذكر هنا مسار تسجيل الدخول و مسار تسجيل مستخدم جديد على سبيل المثال. (يعني لو مستخدم x سجل دخوله في التطبيق وحاول تعديل الرابط لزيارة صفحة تسجيل الدخول لن يتمكن من الوصول لها بل سيتم إعادة توجيهه إلى صفحة dashboard نفس الأمر بالنسبة لبقية المسارات المطبق عليها هذه الطبقة). الطبقة الوسيطة auth تعمل عكس guest فهي تحمي مسارات المستخدم من الوصول من طرف الزوار، يعني لو زائر قام بتوجيه الطلب مباشرة إلى مسار dashboard على سبيل المثال من دون تسجيل الدخول هذه الطبقة ستُعيد توجيهه إلى مسار تسجيل الدخول ولن تسمح له بهذا الشيء. في غالب الأحيان لا نحتاج التعديل على هذا السلوك و إنما إذا احتجنا إلى التعديل سيكون في الأغلب المسار الذي نريد توجيه المستخدم أو الزائر له، يعني لو الحالة هي أننا نريد توجيه المستخدم المصادق عليه إذا أراد الوصول إلى مسارات guest إلى مسار غير dashboard فيمكن ذلك ببساطة عبر التابع boot في الصنف AppServiceProvider بالشكل التالي: use Illuminate\Auth\Middleware\RedirectIfAuthenticated; // in boot method RedirectIfAuthenticated::redirectUsing(fn($request) => route('my-space')); و تُحدد المسار الذي تريد، وإن كان لديك منطق معقد لتحديد مسار التوجيه يُمكنك من خلال تغيير الدالة السهمية إلى دالة مجهولة عادية وتنفيذ المنطق ثم إرجاع المسار use Illuminate\Auth\Middleware\RedirectIfAuthenticated; // in boot method RedirectIfAuthenticated::redirectUsing(function($request) { // do what you want return route('my-space'); }); بهذا الشكل إذا أراد مستخدم مصادق عليه الوصول إلى login مثلاً سيتم توجيهه إلى مسار my-space وليس الإفتراضي (dashboard)، بطبيعة الحال يجب تعريف هذا المسار وإلا سيعطيك خطأ أن المسار غير معرف. وهكذا نفس الأمر بخصوص الطبقة auth. أيضاً يُمكن تحقيق ما تم ذكره أعلاه من خلال التعديل في الملف app.php الموجود في مجلد bootstrap من خلال التابع withMiddleware عبر إستعمال التوابع redirectTo و redirectUsersTo و redirectGuestsTo على حسب الحالة، في الأسفل بعض الأمثلة: ->withMiddleware(function (Middleware $middleware) { // $middleware->redirectTo('/', '/my-space'); // $middleware->redirectUsersTo('/my-space'); // $middleware->redirectGuestsTo('/'); // $middleware->redirectUsersTo(fn ($request) => route('my-space')); }) أما إن كان لابد من تعديل الصنف الإفتراضي وتخصيصه بالشكل الذي ترغب فعليك إنشاء صنف Middleware مثلاً: pa make:middleware RedirectIfAuthenticated ثم عمل override للصنف الإفتراضي وذلك من خلال تسجيلها بنفس الإسم: ->withMiddleware(function (Middleware $middleware) { $middleware->alias([ 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, ]); }) بعد ذلك تستطيع التعديل على الصنف الذي أنشأته بالشكل الذي تريد، كما يُمكنك عمل extends للصنف الإفتراضي وتخصيص الجزء الذي تريد فقط: <?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; class RedirectIfAuthenticated extends \Illuminate\Auth\Middleware\RedirectIfAuthenticated { protected function redirectTo(Request $request): ?string { return route('my-space'); } }
    1 نقطة
  27. في 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 () { // محتوى صفحة تسجيل الدخول }); });
    1 نقطة
  28. السلام عليكم اريد شرح كتابي تفصيلي مع الامثله لأستخدام المعامل الفارغ الامن Null Safe Operator في لغة php شكرا لكم .
    1 نقطة
  29. إذا كنت قد استخدمت معامل الدمج الفارغ (null coalescing operator) في الماضي، فربما لاحظت أيضًا عيوبه: لا يعمل الدمج الفارغ في استدعاءات التوابع. بدلاً من ذلك، تحتاج إلى اختبارات تحقق وسيطة، أو تعتمد على المعامل optional المتاح في بعض الأطر: $startDate = $subscription->getStartDate(); $dateAsString = $startDate ? $startDate->asDateTimeString() : null; يوفر المعامل (null safe) وظائف مشابهة للمعامل (null coalescing)، ولكنه يدعم أيضًا استدعاءات التوابع. بدلاً من كتابة هذا: <?php $country = null; if ($session !== null) { $user = $session->user; if ($user !== null) { $address = $user->getAddress(); if ($address !== null) { $country = $address->country; } } } الإصدار الثامن من PHP يسمح لك بكتابة: $country = $session?->user?->getAddress()?->country; فهو يتحقق إن كان أي من الكائنات في السلسلة قيمته null فإنه يُعيد null دون حدوث خطأ، أما إن كان هناك كائن فإنه يستدعي الخاصية أو التابع. يُمكن إستخدامه في العديد من الحالات التي تتطلب التحقق و عبارات if كثيرة و الحالات التي نكون فيها نجهل القيمة المعادة من الكائن أو التابع إن كانت null أم قيمة حقيقية.
    1 نقطة
  30. بداية من الإصدار PHP 8.0 ، تم إضافة المعامل الفارغ الآمن Null Safe Operator لتسهيل التعامل مع القيم الفارغة (null) دون حدوث أخطاء. المعامل الفارغ الآمن `?->` يستخدم للوصول إلى خاصية أو طريقة من خلال سلسلة من الكائنات، وإذا كان أي من الكائنات في السلسلة هو قيمة فارغة (null)، فإن المعامل الفارغ الآمن يعود بقيمة فارغة أيضًا بدلاً من حدوث خطأ. لنفترض أن لدينا الكود التالي كمثال: // تعريف الكائنات class User { public function getName() { return "John Doe"; } } class Address { public function getCity() { return "New York"; } } // إنشاء كائنات $user = new User(); $address = new Address(); إذا أردنا الحصول على اسم المستخدم ومدينته، ولكن قد يكون أحد الكائنات غير موجود (قيمة null)، فيمكننا استخدام المعامل الفارغ الآمن كما يلي: // الحصول على اسم المستخدم $name = $user?->getName(); // "John Doe" // الحصول على مدينة العنوان $city = $address?->getCity(); // "New York" // الحصول على اسم المدينة إذا كانت متاحة أو قيمة فارغة إذا كانت المدينة غير متاحة $cityName = $address?->getCity()?->getName(); // null في المثال الأول، يتم الوصول إلى طريقة `getName()` من خلال الكائن `$user`، ونحصل على قيمة الاسم بشكل صحيح. في المثال الثاني، يتم الوصول إلى طريقة `getCity()` من خلال الكائن `$address`، ونحصل على قيمة المدينة بشكل صحيح. في المثال الثالث، نقوم بالوصول إلى طريقة `getCity()` من خلال الكائن `$address`، ومن ثم نحاول الوصول إلى طريقة `getName()` من خلال القيمة المُعادة من `getCity()`، ولكنها تعود بقيمة فارغة (null)، لذلك يتم إرجاع قيمة فارغة (null) للمتغير `$cityName`. باستخدام المعامل الفارغ الآمن، يمكنك تبسيط التعامل مع القيم الفارغة وتجنب حدوث أخطاء غير مرغوب فيها عند الوصول إلى خصائص أو طرق في سلسلة من الكائنات.
    1 نقطة
  31. وعليكم السلام، في الأساس، المعامل الفارغ الآمن يُستخدم للتحقق من وجود القيم في الكائنات والمصفوفات بشكل آمن دون الحاجة للتحقق يدويًا ودون رمي استثناءات أو اظهار أخطاء في حالة عدم وجود القيم .. الأمر الذي يساعد على جعل الشفرة أكثر إتقانًا وقراءةً وصيانةً. تخيل السيناريو التالي: يوجد لدينا صنف User و Profile بحيث يمتلك الأول خاصية profile، في حين يمتلك الثاني خاصية باسم name class User { public $profile = null; public function __construct($profile = null){ if(!is_null($profile)){ $this->profile = $profile; } } } class Profile { public $name = null; public function __construct($name){ $this->name = $name; } } بحيث لما ننشئ مستخدما جديدا، نحن نتحكم فيما إن كان يمتلك بروفايلا أو لا. هذا البروفايل فيه بياناته الشخصية على سبيل الاسم name وغيرها. في السابق وبدون المعامل الفارغ، كنا نقوم بالمقاربة التالية لاستخراج الخاصية name من خلال user: $profile = new Profile('ahmed'); $user = new User($profile); $name = null; // تصريح قيمة افتراضية لمتغير باسم name if ($user !== null && $user->profile !== null && $user->profile->name !== null) { $name = $user->profile->name; // تخزين الاسم في متغير } echo $name; // إما قيمة الاسم إذا كان موجودًا أو null إذا لم يكن موجودًا. أما الآن فسيكفينا كتابة السياق التالي: $name = $user?->profile?->name; echo $name; بدون المعامل الفارغ سوف تحتاج القيام بالكثير من التحققات، لأنك لو حاولت قراءة name مباشرة من خلال: $name = $user->profile->name; سوف يظهر لك خطأ على نحو: Warning: Attempt to read property "name" on null in /home/user/scripts/code.php on line 23
    1 نقطة
×
×
  • أضف...