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

كل الأنشطة

تحدث تلقائيًا

  1. الساعة الماضية
  2. قم بإنشاء نسخة احتياطية من بياناتك (تصديرها) قبل القيام بالتغييرات وذلك في حال استخدام MySql بطريقة بسيطة بالذهاب الى phpmyadmin واختبار قاعدة البيانات المطلوبة وثم القيام بصدير ينتج ملف ذو لاحقة sql توجد فيه نسخة احطياتية لبياناتك ويوجد طرق اخرى لكن هذه اسهل واحدة . وعندما تريد استردادها قم بimport الى قاعدة بيانات فارغة واختيار الملف الذي قمت بتصديره مسبقا. يمكن اضافة الحقل الجديد دون مشاكل عبر طريقتين نعطي مثال اضافة phone_number الى نموذج ال User وداخل تابع up قم باضافة الحق الجديد عن طريق : اضافة الحقل في ملف الترحيل لكن يجب وضع له قيمة افتراضية مما يعطي كل البيانات القديمة هذه القيمة الافتراضية: قم باجراء التعليمة التي تقوم بانشاء ملفmigration جديد يوجد في المسار database/migrations php artisan make:migration add_phone_number_users_table ثم وضع قيمة افتراضية داخل الجدول الاتي ولتكن 55555 public function up() { Schema::table('users', function (Blueprint $table) { $table->integer('phone_number')->default(55555); }); } ينتج اضافة حقل جديد لكل البيانات القديمة مع قيمة 55555 لكل المستخدمين . او بوضع الحقل اسمح بان يكون null عبر public function up() { Schema::table('users', function (Blueprint $table) { $table->integer('phone_number')->nullable(); }); } ينتج اضافة حقل جديد لكل البيانات القديمة تأخذ قيمة null لكل المستخدمين . بعدها تنفيذ امر تهجير البيانات php artisan migrate وهذا تكون اضفت حقل جديد دون التاثير على البيانات
  3. اليوم
  4. لدي تطبيق مطاعم واريد عندما يفتح التطبيق يظهر اقسام اخرى حسب الحاجة مثلا ماركت .... تقنيا ومنطق برمجة كيف افعل ذلك ؟ وكيف ابحث عن مصادر بالانجليزي تشرح هذا الموضوع ؟ وشكرا لكم
  5. إن كان المشروع قيد الإطلاق، يٌفضل أخذ نُسخ إحتياطية لقاعدة البيانات بشكل دوري، حتى يتم الرجوع لها عند الحاجة أو في حالة حدوث مشكلة ما. يمكنك الإستفادةمن هذه المساهمة لتحقيق ذلك: أيضاً إن كان المشروع قيد الإطلاق يُفضل العمل على نُسخة تجريبية بعيداً عن النُسخة الأساسية للمشروع، وعدم إيداع التعديلات الجديدة إلا عند التأكد من عملها بشكل سليم. لإضافة حقل جديد في جدول به بيانات يُمكنك إضافة الحقل بشكل يدوي من خلال البرنامج التفاعلي لإدارة قواعد البيانات الذي يتم إستخدامه أو عبر سطر الأوامر، أو يمكنك ذلك من خلال إضافة ملف تهجير جديد يقوم بهذه العملية ثم تنفيذ عملية التهجير و الشرح موجود في هذه المساهمة:
  6. البارحة
  7. كيف حالكم ؟ حابة استفسر عن موضوع في حال انا عندي مشروع شغال وانطلب تعديل مني وهالتعديل يلزمه حقل اضافي كيف اضيف هذا الحقل بوجود بيانات دون ان افقد البيانات الموجودة في الداتابيز ؟ وماهي افضل الطرق والممارسات المتبعة لذلك؟
  8. شكراً جزيلاً لك شكراً لحضرتك على جهدك وشرحك شكراً على توضيح الدوافع لهذا الأمر والشرح الرائع
  9. المشكلة لديك في تعريفك لمسار ملفات الـ Static، حيث قمت بتوفر مسارين في السطر 30 و 41 وهما: app.use(express.static(path.join(__dirname, "images"))) app.use(express.static(path.join(__dirname, "public"))); لذا المسار الثاني لن يتم تطبيقه وسيتم تطبيق المسار الأول، لذا عليك إبقاء واحد فقط وهو الثاني الخاص بمجلد Public حيث به نضع الملفات الثابتة لذا عليك وضع مجلد images به. الآن تستطيع الوصول مباشرًة للصور من مجلد public حيث يتم البحث عن الملفات الثابتة مباشرًة به لأننا حددنا ذلك، لذا العنوان يجب أن يكون نسبي بالنسبة له، لذا نكتب images كالتالي: https://api.wesamelnagah.com/images/1715322534151.jpg
  10. يمكنك حذف سطر رقم 30 من ملف app.js وهذا هو السطر . app.use(express.static(path.join(__dirname, "images"))) والآن فى سطر رقم 41 ستجد أنك قمت بتعريف الملفات الثابتة وقد قمت بتوفير مسار public لذلك . ولذلك فان خادم node سيقوم بقراءة الملفات الثابتة بداخل هذا المسار دون الحاجة لكتابته فى العنوان . لذلك العنوان الجديد هو https://api.wesamelnagah.com/images/1715322534151.jpg وذلك بعد حذف api و public من المسار
  11. يظهر هذا الخطا عند طلب الصور من المشروع upstream image response failed for https://api.wesamelnagah.com/api/public/images/1715322534151.jpg app.js
  12. بطء المواقع تتحكم فيها العديد من العوامل، لذلك يجب أولًا استخدام إحدى أدوات التحليل التي تقوم بتحليل الموقع واستخراج المشاكل التي به. من أهم هذه الأدوات الرسمية والتي تشرف عليها شركة جوجل https://pagespeed.web.dev/ من خلال هذه الصفحة تستطيع إدخال رابط موقعك وتطلب تحليله لكل من الهاتف المحمول Mobile أو اللاب توب Desktop ومن خلال تحليل موقعك عل هذه الأداة يتضح أن الموقع يعمل بشكل مقبول بالنسبة لللاب توب والأجهزة الكبيرة، أما بالنسبة للهاتف المحمول فتوجد عدة ملاحظات يجب معالجتها. بالتأكيد الموضوع يحتاج خبرة وسيحتاج منك بعض البحث عن كل نقطة أو الاستعانة بأحد المبرمجين الخبرة. ولكن أعطيك بعض الإرشادات بخصوص الملاحظات التي ظهرت: من ضمن الملاحظات أن الصور يمكن تحسين حجمها حتى تظهر بشكل أسرع وتوفر على المستخدم الذي يتصفح موقعك عن طريق باقة الإنترنت وليس الواي فاي. أرفقت لك صورة توضح الحجم الحالي والحجم المقترح لتحسين الأداء وبهذا الأسلوب تستطيع المرور على كل نقطة والبحث عن كيفية إصلاحها.
  13. عليك معرفة ما تريد تعديله لكي تتمكن البحث عنه في برنامج Hex editor، مثل تعديل ID الرسيفر أو الـ Master password. لكن إذا أردت تخصيصه بشكل أكبر، إذن عليك دراسة الـ Binary فالأصفار والأحاد التي ستجدها عند فتح محرر Hex editor هي عبارة عن تلك اللغة وهي لغة الآلة. أما على الجهة اليسرى من المحرر ستجد ASCII في حال وجد ذلك في بيانات الـ Binary، لتمثيل النصوص والأحرف والأرقام والرموز المختلفة. عامًة ابحث على اليوتيوب عن تعديل "سوفت وير للرسيفر" وستجد شروحات توضح الأمر لكنها ليست معمقة.
  14. Series عبارة عن نوع بيانات خاص في pandas مخصص لتمثيل البيانات ذات المحاور (مثل السلاسل الزمنية) لكن القواميس نوع بيانات عام في Python لتمثيل مجموعات البيانات ذات المفاتيح والقيم. وتُنظم البيانات في Series بمحورين هما المحور الرئيسي (index) والقيم بينما في القواميس باستخدام المفاتيح والقيم فقط. يوجد في Series مجموعة واسعة من الوظائف المخصصة لتحليل البيانات ومعالجتها، مثل التصفية والفرز والتجميع، وتم تصميمها للتعامل مع مجموعات البيانات الكبيرة بكفاءة عالية، باستخدام خوارزميات محسّنة لتحليل البيانات. في حين تفتقر القواميس إلى مثل تلك الوظائف المخصصة، وتتطلب استخدام مكتبات خارجية أو كتابة أكواد مخصصة للتعامل مع البيانات بشكل متقدم، وهي أقل كفاءة عند التعامل مع مجموعات البيانات الكبيرة، خاصةً عند إجراء عمليات تحليلية معقدة.
  15. دالة Series في مكتبة Pandas تشبه القاموس في بايثون لكنها تحتوي على بعض المميزات الخاصة بها، وتتميز بأنها تتيح فهرسة كل عنصر بفهرس يمكن أن يكون رقميا أو نصيا، وجميع العناصر فيها تكون من نفس النوع. يمكن إجراء العمليات الرياضية والإحصائية بسهولة كما تتكامل بشكل ممتاز مع مكتبات تحليل البيانات الأخرى مثل Numpy. Pandas عامة و Series خاصة مصممة للتعامل مع مجموعات بيانات كبيرة وعمليات تحليل معقدة بشكل فعال. الفروقات بين Series والقاموس تكمن في أن Series تتيح إجراء العمليات الرياضية والإحصائية بسهولة ويمكن فهرستها بأي نوع من القيم، في حين أن القاموس يمكن أن يحتوي على أنواع بيانات مختلفة ولكنه لا يدعم العمليات الرياضية بشكل مباشر.فلإنشاء Series من قائمة بيانات: import pandas as pd data = [1, 2, 3, 4, 5] s = pd.Series(data) print(s) كما يمكنك إجراء عملية جمع على جميع العناصر هكذا: print(s + 10) يمكن الوصول إلى عنصر معين: print(s[2]) يمكنك التوسع في الموضوع من هنا:
  16. السلام عليكم ان دارست عن ال Series بس برد يعني مش فاهم اي هي مميزاتها ؟ وكمان هل هي عبار عن قاموس ؟ وهل ممكن اطبق علها عملي من خلال بيانات كبير شوي وكده؟
  17. شكرااا جد جدا لحضرتك جزاك الله كل خير باذن الله
  18. يمكنك التحقق من توثيق المكتبة أو محاولة استخدام الكود مباشرة ومعرفة ما إذا كان يظهر خطأ. import pandas as pd print(pd.__version__) أو من خلال زيارة الموقع الرسمي للتوثيق `pandas` [pandas documentation](https://pandas.pydata.org/pandas-docs/stable/) والبحث عن توثيق `pd.Index` ومراجعة العمليات المدعومة عليه.لكن يوجد بديل آخر، بحيث يمكنك استخدام دالة `union` كطريقة مؤكدة: import pandas as pd arr0 = pd.Index([0, 1, 2, 3, 4]) arr1 = pd.Index([0, 1, 2]) print(arr0.union(arr1)) فدالة `union` تعتبر الخيار الأكثر أمانا للعمل مع إصدارات مختلفة من `pandas`.
  19. بشكل بسيط MySQL تعتمد على جداول وعلاقات، بالتالي مناسبة لتمثيل البيانات المنظمة بوضوح، لكنها تواجه تحديات في التوسع مع تزايد عدد المستخدمين و حجم البيانات، أي تواجه تحديات في الأداء عند التعامل مع كميات كبيرة جدًا من البيانات أو عند الحاجة إلى التوسع الأفقي. وغير مناسبة لتخزين البيانات الغير منظمة أي التي تتغير، بمعنى أنها تتطلب هيكل بيانات صارم، وذلك عائقًا في حال الحاجة إلى تغيير بنية البيانات بشكل متكرر. بمعنى أنها ستكون خيارًا جيدًا في حال كان تطبيقك صغيرًا أو متوسط الحجم، مع تخزين بيانات منظمة مثل: معلومات عن الصالات: الموقع، السعة، السعر، الميزات. معلومات عن العملاء: الاسم، البريد الإلكتروني، رقم الهاتف. بيانات الحجوزات: تاريخ الحجز، وقت الحجز، نوع المناسبة. بينما MongoDB (NoSQL) مصممة للتوسع الأفقي و التعامل مع كميات هائلة من البيانات، وتتيح لكِ تخزين مجموعة متنوعة من البيانات، بما في ذلك البيانات الغير منظمة مثل الصور والفيديوهات، وتتميز بالسرعة العالية في معالجة البيانات، خاصةً مع الاستعلامات التي تتطلب قراءة بيانات متعددة. حيث تُخزن البيانات في MongoDB على شكل مستندات JSON، وهي مرنة و يمكن أن تحتوي على مجموعة متنوعة من البيانات، بما في ذلك النصوص، الأرقام، المصفوفات، و حتى المستندات المضمنة. وللعلم MongoDB مجانية لكن ستحتاجين إلى استضافة VPS لتثبيتها، أما إذا أردتي خدمة سحابية فيوجد MongoDB Atlas. و MongoDB ستكون خيارًا أفضل في حال تتوقعين نموًا سريعًا لتطبيقك وتحتاجين إلى تخزين بيانات غير منظمة. إذًا في مشروعك MySQL هي الخيار الأنسب.
  20. تمام بس برد بيظهر خطاء فا ممكن يكون ده كمان مش مدعوم دلوقتي فا ازي اعارف ان ده مدعوم او مش مدعوم
  21. العفو، بالنسبة للعامل `|` يمكن استخدامه لعمل اتحاد بين كائنات `pd.Index` في مكتبة `pandas`. ففي حالة ما إذا كانت تواجهنا مشاكل مع استخدام العامل `&` للتقاطع، يمكن استخدام `|` للاتحاد بهذه الطريقة: import pandas as pd arr0 = pd.Index([0,1,2,3,4]) arr1 = pd.Index([0,1,2]) print(arr0 | arr1) فهذه الطريقة ستعطينا اتحاد المؤشرين، مما يعني دمج جميع العناصر مع إزالة التكرارات كما أن كلتا الطريقتين ستعطيك نفس النتيجة، وهي اتحاد العناصر في المؤشرين.
  22. وكمان ازي استخدم دي | شكرااا لحضرتك جدا بس في العامل ده (|) ازي استخدم
  23. صحيح، التقاطع (`&`) بين كائنات `pd.Index` كان مدعوما في إصدارات أقدم من مكتبة `pandas`. ومع التحديثات الجديدة، قد تكون هذه العملية لم تعد مدعومة بنفس الطريقة. ولضمان التوافق مع الإصدارات الأحدث من المكتبة، يفضل استخدام الدوال المخصصة مثل `intersection`.
  24. تمام بس هي كانت بتدعم اصل في فيديو علي الينيوب مستخدمها عادي يتيوب
  25. إرسال رسائل البريد الإلكتروني عبر Gmail في Django اتبع الخطوات التالية : 1. التحقق على خطوتين أول شيء نحتاجه هو إعداد التحقق من عامل 2. انتقل إلى https://myaccount.google.com/security واسمح له بالتسجيل بحسابك . 2. إنشاء تطبيق كخطوة ثانية ، نحتاج إلى إنشاء تطبيق. انتقل إلى https://myaccount.google.com/apppasswords سيعطيك كلمة مرور ، والتي سنستخدمها في Django. بعد إنشاء تطبيق ، ستتلقى كلمة مرور. احفظه ، حيث ستحتاج إليه لاحقا. 3. إعدادات جانغو: لتجنب تخزين بيانات الاعتماد مباشرة سنستخدم ملفا(.env) حيث للتعامل معه نستخدم الامر التالي pip install decouple ثم نقوم بانشاء ملف باسم .env بعدها نضع داخله EMAIL_HOST_USER=your_account@gmail.com EMAIL_HOST_PASSWORD="doep naxs afue tlzv" DEFAULT_FROM_EMAIL=Your app <your_account@gmail.com> وبعدها انتقل إلى الملف(settings.py) وأضف إعدادات خادم البريد الإلكتروني. from decouple import config EMAIL_HOST = "smtp.gmail.com" EMAIL_HOST_USER = config("EMAIL_USER") EMAIL_HOST_PASSWORD = config("EMAIL_PASSWORD") EMAIL_PORT = 587 EMAIL_USE_TLS = True DEFAULT_FROM_EMAIL = config("DEFAULT_EMAIL") بالنسبة لمستخدمي Windows ، فأنت جاهز لكن قد يواجه مستخدمو Mac خطأ أثناء الاختبار. في هذه الحالة ، ستحتاج إلى تثبيت حزمة تسمى .certifi للتاكد من المستخدم عبر التعليمة التالية pip install --upgrade certifi ثم قم بتشغيل هذا الأمر من الجهاز. قم بتحديث المسار إذا كنت تستخدم إصدارا مختلفا من Python. /Applications/Python\ 3.12/Install\ Certificates.command والان الارسال عبر الدالة send_mail كالطريقة التالية from django.core.mail import send_mail from django.shortcuts import render def index(request): subject = ( "Ali ibrahim" ) message = "This email is from Django." send_mail( subject=subject, message=message, from_email=None, recipient_list=["alicodeacm@gmail.com",'mohamad123@gmail.com'] ) return render(request, "index.html") والنتيجة النهائية
  26. الخطأ الذي يظهر عند تشغيل هذا الكود يرجع إلى أن عملية التقاطع (`&`) غير مدعومة مباشرة بين كائنات `pd.Index` في مكتبة `pandas`. لاستخدام عملية التقاطع بين مجموعتين من المؤشرات، يجب استخدام الدالة `intersection` بدلا من ذلك. إليك الكود المعدل: import pandas as pd arr0 = pd.Index([0,1,2,3,4]) arr1 = pd.Index([0,1,2]) print(arr0.intersection(arr1)) فهذا الكود سيعطيك التقاطع الصحيح بين المؤشرين `arr0` و `arr1`.
  27. أول خطوة هي من خلال إعدادات البريد الإلكتروني في ملف `settings.py` في مشروع جانغو الذي تعمل عليه فنقوم بإضافة إعدادات البريد الإلكتروني إلى الملف مع ضبط إعدادات SMTP الخاصة بـ Gmail. عادة يكون الملف هكذا: EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_USE_TLS = True EMAIL_HOST_USER = 'your_email@gmail.com' # عنوان بريدك الإلكتروني EMAIL_HOST_PASSWORD = 'your_email_password' # كلمة مرور بريدك الإلكتروني بعدها يجب أن تقوم بتمكين الوصول الأقل أمانا لحساب Gmailمن خلال الذهاب إلى [رابط إعدادات الأمان لحسابك في Google](https://myaccount.google.com/security) والتأكد من تمكين الوصول الأقل أمانا. قم تقوم بإنشاء وظيفة في ملف views.py لإرسال البريد الإلكتروني وهذا هو الملف: from django.core.mail import send_mail from django.http import HttpResponse def send_test_email(request): subject = 'Test Email' message = 'This is a test email sent from Django.' email_from = 'your_email@gmail.com' recipient_list = ['recipient_email@example.com'] # البريد الإلكتروني للمستلم send_mail(subject, message, email_from, recipient_list) return HttpResponse('Email sent successfully') ثم أضف مسارا إلى ملف `urls.py` لاستدعاء دالة إرسال البريد الإلكتروني. from django.urls import path from .views import send_test_email urlpatterns = [ path('send-email/', send_test_email, name='send_email'), ]
  1. عرض المزيد
×
×
  • أضف...