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

Ali Ibrahim12

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

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

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

إجابات الأسئلة

  1. إجابة Ali Ibrahim12 سؤال في الاتصال في اللارافل بأكثر من قاعدة بيانات كانت الإجابة المقبولة   
    قبل البدء بالتفاصيل التقنية، لنتكلم قليلا لماذا ومتى نحتاج إلى اتصالات قاعدة بيانات متعددة في تطبيق Laravel الخاص بنا ؟
    - تطبيق مبدأ فصل الاهتمام: فغالباً ما تنتمي البيانات المختلفة إلى مجالات أو خدمات مختلفة.
    - تحسين الأداء: من خلال توزيع بياناتك عبر قواعد بيانات متعددة، يمكنك تحسين أداء قاعدة البيانات. فعلى سبيل المثال، يقوم البعض باستخدام قاعدة بيانات مخصصة للعمليات الثقيلة للقراءة وأخرى للعمليات الثقيلة للكتابة.
    - عمليات تكامل الجهات الخارجية: في بعض الأحيان، قد تحتاج إلى الاتصال بقواعد بيانات خارجية أو قديمة لا تتوافق مع مخطط قاعدة البيانات الأساسية. تمكنك الاتصالات المتعددة من العمل مع مصادر البيانات هذه بكفاءة.
    - في تطبيقات التي تقدم خدمة بالاجار تسمى SAAS  وخاصة في حالة تريد فصل بيانات المستخدمين عن بعضهم البعض حيث تكون الواجهة واحدة ولكن بقواعد بيانات مخصصة لكل عميل حيث تسمى هذه الهيكلية بMulti-Tenancy

    والآن سأقوم بشرح الخطوات لتحقيق ذلك:
    1. يجب إعداد قواعد البيانات التي أريد التعامل معها: لإعداد اتصالات قاعدة بيانات متعددة نحتاج لتعريف كل اتصال منها في ملف config/database.php:
    // config/database.php 'connections' => [     'mysql' => [         'driver' => 'mysql',         'host' => env('DB_HOST', '127.0.0.1'),         'port' => env('DB_PORT', '3306'),         'database' => env('DB_DATABASE', 'default'),         'username' => env('DB_USERNAME', 'default'),         'password' => env('DB_PASSWORD', ''),         // ...     ],     'second_db' => [         'driver' => 'mysql',         'host' => env('SECOND_DB_HOST', '127.0.0.1'),         'port' => env('SECOND_DB_PORT', '3306'),         'database' => env('SECOND_DB_DATABASE', 'second'),         'username' => env('SECOND_DB_USERNAME', 'second'),         'password' => env('SECOND_DB_PASSWORD', ''),         // ...     ],     // يمكنك الإضافة بقدر ما تشائين من الاتصالات بقواعد البيانات هنا ], في هذا المثال، حددنا اتصالين بقاعدة البيانات: "mysql" (الاتصال الافتراضي) و"second_db". يمكنك إضافة المزيد من الاتصالات كما هو مطلوب، ولكل منها تكوينها الخاص.2. تعيين متغيرات البيئة: للحفاظ على أمان بيانات الوصول لقاعدة البيانات، يجب الالتزام باستخدم ملف .env لتخزينها. لذلك يجب تعيين متغيرات البيئة لكل اتصال قاعدة بيانات قمنا بانشائه كما يلي:
    DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=your_database DB_USERNAME=your_username DB_PASSWORD=your_password SECOND_DB_CONNECTION=mysql SECOND_DB_HOST=127.0.0.1 SECOND_DB_PORT=3306 SECOND_DB_DATABASE=second_database SECOND_DB_USERNAME=second_username SECOND_DB_PASSWORD=second_password
    وتأكد من تطابق أسماء متغيرات البيئة مع تلك المعرفة في config/database.php.
    3. نقوم بإنشاء النماذج (models):
    مثلاً هنا سأقوم بإنشاء نموذج لكل قاعدة بيانات:
    php artisan make:model User -m php artisan make:model Product -m
    يقوم هذا الأمر بإنشاء ملفات النموذج وملفات الترحيل (migrations) لكل نموذج.
    4. تحديد الاتصال في ملفات النموذج التي تم إنشاؤها:
    // app/Models/User.php protected $connection = 'mysql'; // app/Models/Product.php protected $connection = 'second_db'; 5. تشغيل عمليات الترحيل (migrate)
    الآن، يمكنك تشغيل عمليات الترحيل لكل اتصال على حدة:
    php artisan migrate php artisan migrate --database=second_db سيؤدي هذا إلى إنشاء الجداول اللازمة في قواعد البيانات الخاصة بكل منها.الآن أصبح كل نموذج يتعامل مع قاعدة بيانات مختلفة:
    فمثلاً للتأكد يمكنك الآن الاستعلام عن البيانات من قواعد بيانات متعددة باستخدام نماذج كل قاعدة بيانات. وفيما يلي مثال على كيفية استرداد المستخدمين والمنتجات من قاعدتي البيانات لدينا:
    use App\Models\User; use App\Models\Product; // Retrieve users from the 'mysql' database $users = User::all(); // Retrieve products from the 'second_db' database $products = Product::all();
    وهنا يتولى لارافل مهمة توجيه استعلاماتك إلى قاعدة البيانات الصحيحة بناء على خاصية اتصال النموذج التي قمنا بوضها في كل نموذج.
  2. إجابة Ali Ibrahim12 سؤال في إنشاء شات بوت كانت الإجابة المقبولة   
    من المهم  فهم الفرق بين "الصلة"(relevance) و"التشابه"(similarity).  أن التشابه يتعلق بالتشابه في مطابقة الكلمات ، الا ان الصلة تتعلق بترابط الأفكار. يمكنك تحديد المحتوى القريب لغويا باستخدام الاستعلام على قاعدة بيانات متجهة(vector database)، ولكن تحديد المحتوى ذي الصلة واسترداده يتطلب أدوات أكثر تطورا.
    حيث البنية العامة لنظام الاسترجاع من الشكل التالي حيث يوجد فيه قاعدة بيانات متجهة يتم الاستعلام (query)عليها بواسطة حساب التشابه بين الاستعلام والمتجهات داخل قاعدة البيانات :

     
    فان من الاستراتيجيات المتبعة هي تقسيم  الملفات الى اجزاء اصغر 
    يمكن لنظام RAG تحديد التشابه بسرعة ودقة أكبر في أجزاء نصية أصغر منه في المستندات الكبيرة.
    في حين أن الأجزاء الأكبر يمكن أن تلتقط المزيد من السياق ، إلا أنها تجعل نسبة التشابه اقل فعالية وتتطلب المزيد من الوقت وتكاليف الحوسبة للمعالجة.لكن القطع الأصغر   قد لا تلتقط السياق الضروري بالكامل وهذه هي مشكلتك يصعب تحديد الاجزاء ذات الصلة.
    في حال التقطيع كيف يمكنك التأكد من اختيار الجزء الصحيح؟ تعتمد فعالية استراتيجية التقطيع  إلى حد كبير على جودة وهيكل هذه القطع اي لا يوجد طريقة لتقييم مدى جودتها سوى عن طريق مراجعة يدوية.
    يمكن التغلب على هذه القيود عن طريق اتباع احد الاستراتيجيتان
    ادخال أجزاء المتداخلة : هي طريقة لتحقيق التوازن بين كل من هذه القيود. من خلال تداخل الأجزاء ، من المحتمل أن يسترد الاستعلام بيانات كافية ذات صلة عبر متجهات متعددة من أجل إنشاء استجابة سياقية بشكل صحيح.لكن أحد القيود هو أن هذه الاستراتيجية تفترض أن جميع المعلومات التي يجب عليك استردادها يمكن العثور عليها في مستند واحد. إذا تم تقسيم السياق المطلوب عبر مستندات مختلفة متعددة، فقد تفشل وسوف تفكر في الاستفادة من الحلول مثل التسلسلات الهرمية للمستندات وهي الاستراتيجية الثانية. التدرجات الهرمية للمستندات: يعد التسلسل الهرمي للمستندات طريقة فعالة لتنظيم بياناتك لتحسين استرجاع المعلومات وتاخذ الشكل التالي.

    تربط التدرجات الهرمية للمستندات الأجزاء بالعقد، وتنظم العقد في العلاقات بين الأصل والابن. وتحتوي كل عقدة على ملخص للمعلومات الواردة فيها، مما يسرع نظام RAG  ويعرفه بالأجزاء التي يجب استخراجها.
    مثال :
    لنفترض أن الشركة متعددة البلدان لديها 10 مكاتب للموارد البشرية وأن لكل مكتب سياسة الموارد البشرية الخاصة بكل بلد ، ولكنها تستخدم نفس النموذج لتوثيق هذه السياسات. ونتيجة لذلك، فإن وثيقة سياسة الموارد البشرية لكل مكتب لها نفس التنسيق تقريبا، ولكن كل قسم سيفصل السياسات الخاصة بكل بلد لقضاء العطلات الرسمية، والرعاية الصحية، وما إلى ذلك.
    في قاعدة بيانات المتجهات ، ستبدو كل فقرة "أيام العطل الرسمية" متشابهة جدا. في هذه الحالة ، يمكن للاستعلام المتجه استرداد الكثير من نفس البيانات غير المفيدة ، مما قد يؤدي إلى الضياع في الحالة العادية او في الاستراتيجية الاولى.لكن باستخدام التسلسل الهرمي للمستندات، يمكن لنظام RAG الإجابة بشكل أكثر موثوقية على سؤال حول العطلات الرسمية لمكتب دمشق من خلال البحث أولا عن المستندات ذات الصلة بمكتب دمشق.
     
     
    ملاحظة الاستراتيجية الثانية تتطلب خبرة اكثر في بنائها. وتتطلب  خبرة خاصة بالمجال أو مشكلة محددة للإنشاء لضمان أن تكون الملخصات ذات صلة كاملة بالمهمة المطروحة.
    يمكن انشاء الملخصات يدويا او بواسطة ادوات ونماذج قد تساعد في عملية التلخيص
  3. إجابة Ali Ibrahim12 سؤال في إنشاء بوت واتساب كانت الإجابة المقبولة   
    كيفية إنشاء روبوت محادثة على واتساب باستخدام واجهة API الخاصة بواتساب للأعمال:
    1) واتساب للأعمال API
    الخطوة المنطقية الأولى هي الوصول إلى واجهات برمجة تطبيقات WhatsApp للأعمال. هناك طريقتان للقيام بذلك:
    أ) بناء الروبوت بنفسك عن طريق طلب الوصول إلى واجهات برمجة تطبيقات الأعمال.
    ب) العمل مع الشريك الذي سيقوم بالرفع الثقيل من حيث تطوير الروبوت نيابة عنك. ولكن من الواضح أن هذا سيكلفك ذلك.
    حيث  سنركز على الأول ، حيث سنتطلع إلى إنشاء روبوت أعمال WhatsApp الخاص بنا.
    توجه إلى link ، املأ هذا النموذج

     
    عادة ما يستغرق WhatsApp ما بين 4 إلى 7 أسابيع من الوقت للموافقة على طلبك. يمكن اتخاذ الخطوات القليلة التالية خلال هذه الفترة للمساعدة في الحصول على واجهات برمجة التطبيقات.
     
    2) حساب فيسبوك للأعمال
    إنشاء حساب أعمال على مدير أعمال فيسبوكbusiness.facebook. ستحتاج إلى ملف تعريف Facebook لإنشاء حساب تجاري. هذه الخطوة مهمة نظرا لأن فريق Facebook يبحث عن معلومات حول مؤسستك على مدير أعمال Facebook وموقعك على الويب.
     
    3) بيئة Twilio Sandbox
    أثناء انتظار الموافقة ، من الأفضل صقل مهاراتك في بيئة رمل والتي لحسن الحظ يتم توفيرها بواسطة Twilio وفقا ل Twilio ، "يتيح لك إرسال واستقبال رسائل معتمدة مسبقا إلى الأرقام التي تنضم إلى Sandbox الخاص بك ، باستخدام رقم اختبار Twilio". 
    أ) يعطي Twilio رقم Twilio اختبارا لنا لاختبار رسائل القالب. يوفر رقم هاتف Twilio وجودا محاكيا على شبكة الهاتف.
    ب) تسمح لنا واجهة المستخدم بتكوين رسائل الرد على بعض الكلمات ك hi وغيرها.
    سيتعين عليك إنشاء نظام خلفي باستخدام Node JS أو Django (أو أي إطار عمل خلفي لهذه المسألة) لتقديم طلبات النشر إلى واجهات برمجة التطبيقات الخاصة ب Twilio. إذا كنت مهتما بتعلم مكتبة Twilio مع بايثون الرابط التالي سيكون بداية جيدة link،
     
    4) متطلبات البنية التحتية لتطبيق WhatsApp
     متطلبات البنية التحتية لتشغيل واجهة برمجة تطبيقات WhatsApp Business ، يعتمد ذلك على تحميل الرسائل ، يوصي فريق WhatsApp بما لا يقل عن 250 جيجابايت SSD مع ذاكرة وصول عشوائي (RAM) بسعة 16 جيجابايت وإعداد رباعي النواة. أيضا 
     
  4. إجابة Ali Ibrahim12 سؤال في توقف MySQL عن العمل في الXampp كانت الإجابة المقبولة   
    تاكد من امرين
    1. تغير المنفذ(port) الى منفذ جديد حيث قد يكون المنفذ الذي تستعله خدمة MySQL محجوز حاليا، جرب اغلاق البرنامج الذي يحجز المنفذ أو قم بتغيير منفذ MySQL. ولذلك قم بالتالي اضغط
    my.ini<----config :
     

    وبعدها غير قيمة المنفذ الى 3307 وبعدها قم بحفظ الملف بالضغط على (ctr+ sl ) 

    حاول اعادة تشغيل البرنامج واذا لم يعمل عليك تجريب الطريقة الثانية 
    اولا : اذهب الى موقع تخزين ال xamp :

     
    ثانيا  ادخل الى المجلد Mysql: 

     
    ثالثا قم بنسخ المجلد data في نفس المكان وذلك اذا حدث خطأ ما لا تضيع شيئ منها 

     
    رابعا: ادخل الة مجلد data 
    وقم بحذف المجلدات التالية :

     وبعدها حذف الملفات التالية باستثناء الملف idata1

     
    خامسا: قم بالذهاب للمجلد backup   وقم بنسخ المجلدات والملفات جميعها ما عدا الملف idata1

     
    وضعها في مجلد الdata السابق وعد الى  تشغيل السيرفر  مجددا 

  5. إجابة Ali Ibrahim12 سؤال في مخخطات في الداشبورد جانغو كانت الإجابة المقبولة   
    في حال كنت تسطتيع التعامل مع جافا سكربت يوجد الكثير من المكاتب والحلول المساعدة مثل canvasjs او Chart.js
    حيث تقدم هذه المواقع خدمات ومساعدات لانواع مخططات كثيرة ففي canvasjs :
    تستطيع التجول واختيار المخطط المناسب لك كالتالي :

     
    وبعد اختيارك للمخطط المطلوب يمكن تنزيله بالصيغة التي  تناسبك ان كان javaScript او react  او غيرها كالتالي

     
    ولديك خيار اخر اذا كنت تعرف مكتبة plotly في بايثون تقدم الكثير والكثير من انواع المخططات وتستخدم بشكل شائع في تحليل البيانات 
    حيث ساعطيك مثال لطريقة مكاملتها مع جانغو لانها تعمل معك بشكل منفصل ايضا عن طريق النوت بوك حتى :
    ففي التوت بوك يمكن اظهار مخطط ال Line Chart:
    import plotly.express as px df = px.data.gapminder().query("country=='Canada'") fig = px.line(df, x="year", y="lifeExp", title='Life expectancy in Canada') fig.show() عن طريق التابع show يتم عرضها بشكل مباشر  في نوت بوك 

    اما  لرسم مخطط Line Chart مع جانغو: 
    نحتاج اولا لانشاء مشروع جانغو ومن ثم داخل ملف الviews :
    نعرف نفس التابع line الموجود في المكتبة ونمرر له القيم المراد عرضها ولكن على محور الX تكون الزمن وعلى محور y تكون متوسط الاسعار لكل زمن :
    كالشكل التالي:
    from django.shortcuts import render import plotly.express as px from core.forms import DateForm from core.models import CO2 # Create your views here. def chart(request): start = request.GET.get('start') end = request.GET.get('end') co2 = CO2.objects.all() if start: co2 = co2.filter(date__gte=start) if end: co2 = co2.filter(date__lte=end) fig = px.line( x=[c.date for c in co2], y=[c.average for c in co2], title="Line Chart", labels={'x': 'Date', 'y': 'Average price'} ) fig.update_layout( title={ 'font_size': 24, 'xanchor': 'center', 'x': 0.5 }) chart = fig.to_html() context = {'chart': chart, 'form': DateForm()} return render(request, 'core/chart.html', context)  نلاحط اننا استخدمن التابع to_html وليس show وهنا سوف يتعامل معه على انه HTML ويمكن ارساله بشكل عادي الى صفحة الhtml وهمنا ارسلناهها الى الصفحة chart.html 
    استقبال المخطط في صفحة  chart.html كالتالي 
    {{ chart|safe }} داخل الصفحة:
     
    {% extends 'core/base.html' %} {% block content %} <form method="GET" action="{% url 'chart' %}"> {{ form.as_p }} <button>Submit</button> </form> {{ chart|safe }} {% endblock content %} ونحرص على وضع كلمة safe معها كي يعتبرها المتصفح امنة للظهور  ويمكن التعديل عن طريق ال CSS على شكل ومكان العرض.
     
    ويتم استدعاء التابع chart بالطريقة التالية داخل ملف ال URL:
    from django.urls import path from . import views urlpatterns = [ path('', views.chart, name='chart') ]  
    لتظهر النتيجة كالشكل التالي :

    ويوجد انواع عديدة من المخططات وتوفرها مكتبة  plotly :
    1. المخططات المبعثرة (Scatter Plots): هذه المخططات رائعة لإظهار العلاقة بين متغيرين.

    2. المخططات الدائرية (Pie Charts): تستخدم لإظهار نسبة أجزاء من أصل الكل.
     

    3. مخططات الصندوق (Box Plots): تقديم ملخص مرئي لمجموعة واحدة أو أكثر من البيانات وفي عملية تحليل البيانات يمكن من خلالها اكتشاف القيم المتطرفة.

    4. مخططات الكمان (Violin Plots): تشبه المخططات الصندوقية، ولكنها تظهر أيضاً الكثافة الاحتمالية.

    5. مخطط الخرائط الحرارية (Heatmaps): تظهر حجم الظاهرة كاللون في بعدين (x و y). مثال: الميداليات الأولمبية التي فازت بها الدول (كوريا الجنوبية، الصين، كندا)

    6. المخططات الفقاعية (Bubble Charts): مجموعة متنوعة من المخططات المبعثرة (Scatter Plots) بحجم الفقاعة الذي يمثل بُعداً إضافياً.

     
    7. مخطط خطي (Line Chart): تمثيل رسومي يعرض المعلومات كسلسلة من نقاط البيانات، تسمى "العلامات (markers)"، متصلة بواسطة مقاطع خط مستقيم. يُستخدم عادةً لإظهار التغيرات بمرور الوقت.

    8. المخططات المساحية (Area Charts): تشبه المخططات الخطية (Line Charts)، ولكن المنطقة الموجودة أسفل الخط تكون مليئة بالألوان.

    9. مخطط شريطي (Bar Chart): يستخدم أشرطة ذات ارتفاعات أو أطوال مختلفة لمقارنة الكميات عبر الفئات المختلفة. ويمكن توجيهها رأسياً أو أفقياً. وهذا مثال يوضح كمية المدخنين وغير المدخنين من كلا الجنسين ذكور وإناث.

    10. الخرائط الهيكلية (Treemaps): عرض البيانات الهرمية كمجموعة من المستطيلات المتداخلة.

    11. مخططات جانت (Gantt Charts): غالباً ما تستخدم لإدارة المشاريع لإظهار المهام بمرور الوقت.

     
     ويوجد انواع اخرى لكن قمت بذكر اهمها
  6. إجابة Ali Ibrahim12 سؤال في مسار تنزيل الحزم بالبايثون كانت الإجابة المقبولة   
    وعليكم السلام
    لازم تعرف ان مدير الحزم pip بثبت الحزم بمواقع مختلفة حسب النظام والبيئة. لكن بشكل افتراضي:
    - في نظام Linux: تتثبت في
    /usr/local/lib/pythonX.X/dist-packages - في نظام التشغيل Windows: مسار التثبيت العام الافتراضي هو:
    C:\Users\{username}\AppData\Local\Programs\Python\PythonXX\Lib\site-packages - على نظام التشغيل macOS: يقوم pip بتثبيت الحزم في المسار:
    /Library/Python/X.X/site-packages - في حال كنت عم تستخدم بيئة افتراضية (Virtual Environment): ال`pip` رح يثبتلك الحزم داخل مسار تلك البيئة، عادةً ضمن (مثلاً اسم البيئة env):
    env/lib/pythonX.X/site-packages
    وأريد أن أختتم بطريقة سهلة يمكنك اتباعها لمعرفة مكان تثبيت حزمة معينة:
    pip show <package_name> والذي سيعرض معلومات الحزمة بما في ذلك موقعها وستجد الحزم جميعها في نفس المكان.
    مثال ايجاد مكان تخزين Django انظر الى الموقع يظهر في الاسفل 

    ملاحظة أخيرة: يمكنك تغيير موقع التثبيت الافتراضي عن طريق إعداد ملفات pip.ini (على نظام Windows) أو pip.conf (على نظام Linux/Mac)، لكني أنصحك عند تثبيت بايثون بترك موقع التثبيت الافتراضي لتتجنب أي مشاكل محتملة.
  7. إجابة Ali Ibrahim12 سؤال في ما هي الـ Data Classes في بايثون كانت الإجابة المقبولة   
    فئات البيانات في بايثون (Data Classes) تم تقديمها اول مرة من الاصدار 3.7 تقدم طريقة أنظف وأكثر كفاءة لكتابة الClasses التي نحتاج:
    يوجد العديد من التوابع التي نكتبها بشكل يدوي والتي تقوم ببعض الوظائف الخاصة بالClass معين سوف نتعرف على بعضها ومثال لهذه التوابع التي تسمى ( "dunder" methods ) واهمها عند تعريف Class يجب تعريف الباني (constructor) الخاص به 
    مثال ليكن لدينا الClass الخاص بتعريف عن مستثمر حيث يتعرف عليه ب اسمه و عمره وثروته
     
    class Investor: def __init__(self,name,age,cach): self.name = name self.age = age self.age = age  
    نلاحظ ضروة استخدام الدالة __init__ لتمكني من تعريف المستثمر 
    i1 = Investor("ali",25,8000) i2 = Investor("Jasem,",20,100000)  
    في حال غياب الباني (constructor) لا يمكن تمرير القيم للكائن 
     
    واذا اردنا طباعة i1 يظهر نتيجة بشكل غير مفهوم كالاتي :
     

     
    ولحل هذه المشكلة يمكن الاستعانة بالدالة repr  نضيفه على Class ونحدد من خلاله القيمة التي نريد ان نطبعا حين طباعة الكائن من الClass :
    class Investor: def __init__(self,name,age,cach): self.name = name self.age = age self.age = age def __repr__(self) -> str: return self.name  
    نعيد طباعة i1 لتظهر قيمة الاسم الخاصة بهذا الكائن كالاتي :
     

     
    واذا اضفنا كائن اخر يشابه في بيانته الكائن الاول كالاتي
    i1 = Investor("ali",25,8000) i2 = Investor("Jasem,",20,100000) i3 = Investor("ali",25,8000)  
    واختبرنا اذا كان متشابهان 

      نلاحظ انه اعطى قيمة خطأ اي انهما غير متساويين علما لو اختبرنا عن تساوي نفس الكائن يعطي انهما مساويين اي يرجع True

     
     ويوجد دالة تساعد هذا Class في تحديد السمة التي نريد المقارنة عليها في حال اردنا تطبيق اختبار المساوات وهي الدالة eq 
    وتعرف بالشكل التالي في حال اردنا ان يقارن على الاسم فقط :
    class Investor: def __init__(self,name,age,cach): self.name = name self.age = age self.age = age def __repr__(self) -> str: return self.name def __eq__(self, Other) -> bool: return self.name == Other.name  
    في حال اعدنا الاختبار  تساوي الاولمع الثالث سوف يقول انهما متشابهان كالاتي 
     

     علما انه ولو غيرنا بالميزات الاخرى كالعمر والرصيد سوف يظل يراهم متشابهان وذلك بسبب تعريفك لدالة التساوي لا يؤثرفيها سوا الاسم 
    مثال:

     نلاحظ بقائها تعطي انهما متساويين حيث يمكن اضافة ميزة ميزة والتاكد من تساويهما ويعتبر هذا مجهد في حال كان هناك الكثير لذلك سوف نتعرف على فائدة الData Classes التي توفر علينا مجهود هذه العمليات كالتالي : 
    حيث نستدعي dataclass وبعدها نعرف بمفهوم decorator وهو مفهوم في برمجة كائنية التوجه تقوم بنوع من التغليف للوظائف وتعرف في بايثون بالشكل @dataclass يوضع فوق تابع اوكلاس 
    from dataclasses import dataclass @dataclass class Investor: name : str age : int cach : float  
    نلاحظ عدم تعريف تابع باني ولا تابع الاستعراض repr لكن امكننا تعريف كائن منه وعند طباعة الكائن يظهر بمظهر افضل ووفر علينا عناء كتابة التوابع المساعدة السابقة 

     
    وعند اختبار التساوي 

     
    اظهر قدرته على معرفة التساوي  وعند تغير قيمة يظهر عدم التساوي وهذا شيئ منطقي لانه يقارن على كل البيانات الخاصة بالكائن

     
    لذلك نلخص ان dataclass ساعدنا عللى توفير الوقت والجهد في الخوض في معالجة هذه الامور وجعل الكود افضل واكثر احترافية وقابلية للفهم.
     
    وهي مفيدة جدا عند التعامل مع الباينات من قواعد البيانات 
  8. إجابة Ali Ibrahim12 سؤال في الفرق بين القسمة ب / او // في بايثون كانت الإجابة المقبولة   
    الفرق الرئيسي بين "/" و "//" هو نوع القيمة المُرجَعَة. في حالة العملية "/"، تحصل على النتيجة عائمة (float)، في حين أن العملية "//" ترجع نتيجة صحيحة (integer) دون الجزء العشري.
    مثال:

    ويمكن الاسنغناء عن القسمة عن طريق "//" وقصر نتيجة الطريقة الاولى عبر دالة int  كالشكل التالي 

    نلاحظ ادى الى نفس النتيجة حيث يمكن اختيار الطريقة التي تناسبك انت حيث القصر عن طريق int امر شائع بكل لغات البرمجة اما "//" فهو امر خاص في بايثون 
    ويمكنك الاطلاع على باقي العمليات من خلال الرابط التالي
    https://wiki.hsoub.com/Python/numeric_operations
  9. إجابة Ali Ibrahim12 سؤال في رفع مشروع جانغو على استضافة كانت الإجابة المقبولة   
    يعتمد تحديد افضل استضافة على متطلبات المشروع حيث اغلب الاستضافات تكون مجانية بقيود مثل الزمن او المساحة لكن افضل العروض المجانية هو render:
    لنبدأ ب render:
    اولا يعطيك 1G   من التخزين المجاني وذلك لمدة 90 يوم فقط وبعدها اما تسجل في حساب اخر او تدفع اشتراك ولتثبيت اتبع الخطوات التالية 
    اعداد قاعدة البيانات من نوع PostgreSQL:
    أولا ، توجه إلى لوحة معلومات العرض الخاصة بك وقم بإنشاء قاعدة بيانات PostgreSQL. انقر فوق الزر + جديد ، وقم بالمرور فوق PostgreSQL ، وانقر فوقه.

    بعد ذلك، حدد إعدادات قاعدة البيانات الخاصة بك عن طريق إعطاء مثيل قاعدة البيانات اسما. يمكنك اختيار إما السماح ل Render بتعريف اسم لقاعدة بيانات ومستخدم أو تعريفه بنفسك.

    حدد الخطة المجانية وانقر على إنشاء قاعدة بيانات.
    ملاحظة: تنتهي صلاحية كل قاعدة بيانات مجانية تم إنشاؤها على Render بعد 90 يوما من الإنشاء. لذا فقط لاحظ هذا وقم بالترقية إذا كان مشروعا مهما. يمكنك رؤية الأسعار هنا

    بمجرد أن تظهر الحالة في قاعدة البيانات الخاصة بك متفعلة ، فهذا يعني أن قاعدة البيانات قد تم إنشاؤها بنجاح وجاهزة للاستخدام مثل الصورة التالية.

    بعد ذلك توجه إلى إعدادات قاعدة البيانات الخاصة بك على عرض ونسخ عنوان URL لقاعدة البيانات الخارجية.

    ثم في ملف الاعدادات المشروع جانغو قم باضافة  وضع الurl داخل ملف .env لأسباب أمنية.
    import dj-database-url import os DATABASES = { "default": dj_database_url.parse(os.environ.get("DATABASE_URL")) }  
    بعد ذلك، قم بترحيل الجداول إلى قاعدة البيانات الجديدة لضمان نجاح الاتصال بالشكل التالي 
    # To make migrations if this is your first time connecting to a database python manage.py makemigrations #To migrate tables set on your migrations folders python manage.py migrate  
    إذا كان الاتصال ناجحا وقمت بترحيل جميع الجداول الخاصة بك ، فيجب أن يبدو الخرج كما يلي:

     
    أنت الآن على بعد خطوة واحدة من نشر مشروع Django الخاص بك! 🎉
    كيفية إنشاء خدمة الاستضافة:
    هذه هي الخطوة الأخيرة لبدء مشروعك.
    توجه إلى لوحة معلومات العرض الخاصة بك. انقر فوق جديد + وحدد خدمة ويب

    قم بتوصيل GitHub الخاص بك إذا لم تكن قد قمت بذلك بالفعل ولذلك يسهل عليك عملية النشر. يجب أن يبدو هكذا :

     
    بعد ذلك ، حدد إعدادات الريبو الخاص بك. امنح تطبيقك اسما وتأكد من اتصالك بالفرع الصحيح.

    تاكد من تنزيل gunicorn وخادم ويب Python  يعمل كبوابة بين تطبيق الويب والإنترنت. إنه مصمم للنشر لأنه يدير طلبات الويب الواردة بشكل فعال.
    وجلب جميع المكاتب ومتطلبات المشروع عن طريق الامر الثاني :
    pip install gunicorn pip freeze > requirements.txt # To update your requirements.txt file  
    تأكد من إضافة خدمة الويب Render إلى ALLOWED_HOSTS في settings.py الخاص بك.
     
    وبعد ذلك حدد ملف المتطلبات والخادم واللغة 


     
    ارجع إلى لوحة معلومات العرض وانقر على خدمة الويب المنشورة لعرض الرابط المباشر الخاص بك.
     

    لقد قمت بنشر تطبيق Django الأول الخاص بك على منصة مجانية. استمتع بخادم الويب الخاص بك لمدة 90 يوما القادمة.
     
     
     
     
     
  10. إجابة Ali Ibrahim12 سؤال في مشكلة عند تفعيل البيئة الإفتراضية في python على windows 10 كانت الإجابة المقبولة   
    هذه مشكلة لعدم اعطاء صلاحيات قم بتنفيذ الامر التالي في ال(Windows PowerShell) لكن قم بالدخول (run as administrator) 
    كالصورة التالية
     
    ثم قم بتنفيذ الامر التالي 
     
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned وبعدها قم بالعودة الى الامر تفعيل البيئة وتنحل المشكلة 
    .\venv\Scripts\activate
     
  11. إجابة Ali Ibrahim12 سؤال في السلام عليكم , مشكلتي أن خلفية ال overlay لم تستجيب علماً كتابة الكود صحيحة. كانت الإجابة المقبولة   
    هنالك خطأ بسيط في ملف الcss لتنسيق الـoverlay حيث يجب إضافة to قبل الاتجاه كما يلي:
    header .overlay { background-image: linear-gradient(to top right, rgba(46,178,181,0.8), rgba(197,203,50, 0.8)); min-height: 100vh; } كما أنصح بتحديد الposition للoverlay لتحديد أين سيظهر في حال كنت تريد وضعه فوق الصورة مثلاً :
    header .overlay { position: absolute; top: 0; right: 0; bottom: 0; left: 0; background-image: linear-gradient(to top right, rgba(46,178,181,0.8), rgba(197,203,50, 0.8)); min-height: 100vh; } فتظهر بهذا الشكل اذا كان ذلك ما تريده:

×
×
  • أضف...