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

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

  1. سمير عبود

    سمير عبود

    الأعضاء


    • نقاط

      10

    • المساهمات

      3552


  2. مسعود زاهي

    مسعود زاهي

    الأعضاء


    • نقاط

      3

    • المساهمات

      646


  3. Mohssen A Mohssen

    Mohssen A Mohssen

    الأعضاء


    • نقاط

      2

    • المساهمات

      317


  4. Mo-Ali

    Mo-Ali

    الأعضاء


    • نقاط

      1

    • المساهمات

      3


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

المحتوى الأعلى تقييمًا في 02/07/22 في كل الموقع

  1. ما الذي يجعلني أستخدم الكود التالي بدلًا من إنشاء نموذج form بإستخدام الصنف ModelForm وإستدعاء التابع is_valid للتحقق من النموذج form و model معًا: save(commit=False) متى يجب أن أستعمل save(commit=False) من الأساس؟ هل هناك مواقف حيث قد يكون هذا الكود مفيدًا؟
    1 نقطة
  2. قمت بعمل بعض الأخطاء في قاعدة البيانات والآن أريد إزالة كافة الجداول من قاعدة بيانات حاولت إستخدام الأوامر التالية: python3 manage.py sqlflush blog لكن يبدو أن هذا الأمر لم يعد يعمل، حيث أن كل ما يقوم به هو طباعة جملة SQL لحذف الجداول ولكن لا يتم حذفهم بالفعل من قاعدة البيانات، هل هناك طريقة للقيام بهذا الأمر باستخدام manager.py أو بإستخدام الأمر django-admin؟
    1 نقطة
  3. python3 manage.py sqlflush blog الأمر الذي استعملته هنا يقوم فقط بطباعة مجموعة أوامر بصيغة SQL، هذه الأوامر تعمل على حذف البيانات فقط ولا تحذف الجداول الخاصة بالتطبيق blog. إذا أردت حذف بيانات التطبيق blog فقط قُم بدمْج الأمر السابق مع الأمر dbshell: pyhon3 manage.py sqlflush blog | python3 manage.py dbshell الأمر dbshell وظيفته فتح ال shell الخاص بقاعدة البيانات. أما إذا أردت حذف كل بيانات التطبيقات استعمل الأمر python3 manage.py flush # أو django-admin flush أما إذا أردت حذف الجداول مع البيانات قم بتنفيذ الشفرة التالية في django shell python3 manage.py shell #نقوم بفتح django shell #نقوم بتنفيذ أوامر الحذف داخل قاعدة البيانات >>> from django.db import connection >>> cursor = connection.cursor() >>> cursor.execute('show tables;') >>> parts = ('DROP TABLE IF EXISTS %s;' % table for (table,) in cursor.fetchall()) >>> sql = 'SET FOREIGN_KEY_CHECKS = 0;\n' + '\n'.join(parts) + 'SET FOREIGN_KEY_CHECKS = 1;\n' >>> connection.cursor().execute(sql)
    1 نقطة
  4. يمكنك محاولة تضمين الحل في أي لغة برمجة تفضلين وحين مواجهتك لمشكلة معينة أو استفسار يمكنك إرفاق الشيفرة المتعلقة بالسؤال وتوضيح استفسارك وسيتمكن الزوار من مساعدتك. من غير الممكن تقديم حل للواجبات.
    1 نقطة
  5. لتعطيل expire_on_commit في SQL-Alchemy نقوم بإضافة المتغير session_options عند إنشاء كائن قاعدة البيانات فهو يسمح بتمرير الإعدادات إلى كل عناصر Session التي سوف تٌنشأ db = SQLAlchemy(app, session_options={"expire_on_commit": False})
    1 نقطة
  6. DoesNotExist و ObjectDoesNotExist هما عبارة عن أخطاء (exceptions) في جانغو تحدث عندما نريد جلب كائن من قاعدة البيانات لكن هذا الكائن غير متوفر إما لأنه حُذف أو لأن المُعرف الذي استخدمناه كان خاطئاً. في فرق بسيط بينهما وهو أن ObjectDoesNotExist عامة و DoesNotExist خاصة. لفهم هذا نقوم بالمثال التالي: from django.contrib.auth.models import User from django.core.exceptions import ObjectDoesNotExist from myproject.apps.teams.models import Team try: user = User.objects.get(pk=1337) team = Team.objects.get(pk=23) except ObjectDoesNotExist: logging.error("المستخدم أو الفريق لا يوجد") في المثال السابق قُمنا بجلب كائن من النموذج User باستخدام المعرف 1337، و كائن من النموذج Team باستخدام المعرف 23. لو صودف أن أحد الكائنين غير متوفر سيحدث الخطأ ObjectDoesNotExist. لو أردنا أن نَفْصِل بين الخطأين مثلاً: عندما لا نجد المستخدم نسجل "المستخدم لا يوجد" وعندما لا نجد الفريق نكتب " الفريق لا يوجد" هنا لا نستطيع فعل ذلك باستخدام ObjectDoesNotExist فنستعمل DoesNotExist. from django.contrib.auth.models import User from myproject.apps.teams.models import Team try: user = User.objects.get(pk=1337) team = Team.objects.get(pk=23) except User.DoesNotExist: logging.error("المستخدم غير موجود") except Team.DoesNotExist: logging.error("الفريق غير موجود")
    1 نقطة
  7. يجب تواجد الحقل user_id قبل إعتماده كمفتاح أجنبي، لذلك يظهر لديك خطأ أن الحقل user_id غير موجود. ويجب عند إضافة المفتاح الأجنبي أن يكون الحقلين من نفس النوع حيث أن id في جدول users عبارة عن unsignedBigInteger لذلك يجب أن يكون أيضاً الحقل user_id نوعه unsignedBigInteger $table->unsignedBigInteger('user_id'); $table->foreign('user_id')->references('id')->on('users'); نُعرف الحقل ثم نٌعينه كمفتاح ثانوي. في النُسخ الحديثة بالإمكان إختصار السطرين أعلاه إلى سطر واحد: $table->foreignId('user_id')->constrained(); أو: $table->foreignId('user_id')->constrained('users'); بحيث نُمرر إسم الجدول للتابع constrained إذا لم نتبع الأعراف في التسميات. بالإمكان إستخدام التوابع cascadeOnUpdate أو cascadeOnDelete و غيرها: $table->foreignId('user_id') ->constrained() ->cascadeOnDelete();
    1 نقطة
  8. في ملف المسارات user.js لديك: let usercontroller = require("../controller/usercontroller") router.get("/user",usercontroller) التابع get يقبل callback function كوسيط ثاني و انت تُمرر له كائن. يجب تغيير ذلك إلى: let usercontroller = require("../controller/usercontroller") router.get("/user",usercontroller.view) أيضا ملف conn.js لا يُمكنه الوصول إلى متغيرات البيئة يجب نقل التالي للأعلى في ملف app.js: const express = require('express') require('dotenv').config() // هذا السطر موجود في الأسفل يجب نقله قبل عملية الإتصال let con = require("./conn") بداخل الملف conn.js هناك إستعمال لمتغير غير مُعرف هو conn: conn.query("SELECT * FROM customers", function (err, result) { if (err) throw err; console.log(result); }); // الصواب con.query("SELECT * FROM customers", function (err, result) { if (err) throw err; console.log(result); }); الأفضل دائما نشر صورة لرسالة الخطأ الذي يظهر لك أو نسخ رسالة الخطأ كاملة ووضعها ضمن السؤال، حتى نستطيع المساعدة بشكل أفضل.
    1 نقطة
  9. الفكرة تُشبه لما يلي: <?php $account = AccountModel::where('store_id', $store_id)->first(); if ($account === null) { $newCode = 1; } else { $newCode = $account->account_code + 1; }
    1 نقطة
  10. إذا لاحظت أنه حتى تُحدد العُنصر الحاوي للزر لتلك المنشورات التي تحتوي على صور فقط هناك شيء إضافي و هو صنف has-post-thumbnail الذي يتواجد في وسم article الذي يحتوي على صورة و لا يتواجد في غيره، من خلاله يُمكنك تحديد العناصر المطلوبة التي تريد أن يكون تنسيقها مختلف: article.has-post-thumbnail .page-box .box-content .readmore-btn{ } لاحظ لا يوجد فراغ بين article و has-post-thumbnail. في المحدد لاننا نريد العُنصر article و في نفس الوقت يملك الصنف has-post-thumbnail
    1 نقطة
  11. يُمكنك من خلال التابع eloquent تكوين الإستعلام الذي تُريد و تمريره له <?php public function dataTable($query) { $query = User::query()->where(function ($q) { if (request()->has('level')) { return $q->where('level', request('level')); } }); return datatables() ->eloquent($query) ... } أو يُمكنك القيام بذلك في الميثود query من صنف Datatable لأنه تم توفيرها لإنشاء و التحكم في الإستعلام كما تشاء: <?php public function query() { return User::query()->where(function ($q) { if (request()->has('level')) { return $q->where('level', request('level')); } }); }
    1 نقطة
  12. سبب المُشكلة أن الدالة update يجب أن تٌمرر لها 3 معاملات هي request و guest و id حيث أنها تلقت معاملين فقط و هما request و guest أي أن المُعامل الذي لم يتم تمريره هو id عند التنفيذ. أي أنه عند وضعك لمسار الدالة الموافق لها يجب تمرير كل من المُعاملين id و guest حيث أن المعامل request يتم حقنه من طرف لارافل تلقائياً. هذا ما يعنيه الخطأ أي أنك إن واجهت نفس الخطأ مرة ثانية يجب أن تُفكر بهذا المنطق. الآن سأسألك سؤال لماذا أضفت المُعامل id للدالة update و أنت بالفعل تملك بيانات الزائر مُسبقاً في المُعامل guest ؟ في نظري لست بحاجة لتمرير المُعامل id و لست بحاجة لوضعه كمعامل للدالة update كما لست بحاجة لجلب بيانات الزائر (guest) عن طريق: $guest= Guest::find($id); لارافل تقوم بذلك تلقائياً عن طريق ما يُسمى بربط النموذج بالمسار (Route model binding) بالتالي كل ما تحتاج له هو مسح المُعامل id من الدالة update و مسح السطر السابق.
    1 نقطة
  13. هل بإمكانك تنفيذ الأمر: php --version إذا لم تحصلي على إصدار الphp المثبت فتحتاجين إلى إضافة مسار php إلى متغيرات البيئة إبحثي عن edit the system environment variables من خلال شريط البحث ثم من خلال system variables حددي متغيري path و أضيفي مسار جديد الذي سيكون مسار الملف التنفيذي ل php سيكون بهذا الشكل: C:\xampp\php
    1 نقطة
  14. مفهوم Redis: Redis هو عبارة عن مخزن مفتوح المصدر يُستعمل لتخزين البيانات على شكل أزواج من مفتاح-قيمة Key-Value في الذاكرة الرئيسية In-Memory، حيث Key-Value storage عبارة عن نظام تخزين يتم فيه تخزين البيانات على شكل أزواج من المفاتيح والقيم ، تخزّن هذه الأزواج في الذاكرة الرئيسية RAM وهذا ما نقصده بـ In-Memory وبهذا يمكننا القول أن تقنية Redis تخزن البيانات في الذاكرة الرئيسية على شكل أزواج من المفاتيح والقيم. يكون المفتاح في هذه التقنية عبارة عن سلسلة نصية String، أما القيمة فيمكن أن تكون سلسلة محارف String أو قائمة List أو مزيج منهما. يُمكن استخدام Redis إمّا كخادوم قاعدة بيانات لوحده أو مرتبطًا مع قاعدة بيانات أخرى مثل MySQL. خطوات تثبيت Redis على أوبنتو: إعداد بيئة ومتطلبات Redis نقوم في البداية بتحديث جميع حزم apt-get: sudo apt-get update بعد ذلك نقوم بتحميل مُترجم (compiler) باستخدام الحزمة build-essential، والّتي من شأنها المساعدة في تنصيب Redis من المصدر: sudo apt-get install build-essential سنقوم بعدها بتحميل الأداة tcl الّتي يَعتمد عليها Redis: sudo apt-get install tcl8.5 تنصيب Redis: بعد أنّ تمّ تنصيب المُتطلّبات الأساسيّة، فمن المُمكن الآن الشروع وتنصيب redis، ويُمكن تحديد الإصدار المطلوب أو تحميل الإصدار الأخير والذي سيحمل دائمًا الاسم redis-stable: wget http://download.redis.io/redis-stable.tar.gz يجب بعد ذلك فك ضغط الملفّ والانتقال إليه: tar xvzf redis-stable.tar.gz cd redis-stable ثم المتابعة بتنفيذ الامر: make make ولتنصيب Redis على كامل النّظام، فيُمكن إما نسخ ملفاته من المصدر: sudo cp src/redis-server /usr/local/bin/ sudo cp src/redis-cli /usr/local/bin/ أو تنفيذ الأمر التّالي: sudo make install بعد انتهاء عمليّة التنصيب، من المُستحسن تشغيل Redis كحارس (daemon) في خلفيّة النّظام، ولعمل ذلك يأتي Redis بملفّ برمجي (سكريبت) لهذه المُهمّة. يجب الانتقال إلى المسار utils للوصول إلى هذا الملفّ: cd utils ومن ثم تشغيل الملفّ الخاص بتوزيعات Ubuntu/Debian: sudo ./install_server.sh سيَعرض السكريبت بعض الأسئلة لإتمام عمليّة التهيئة، ولكن يُمكن الاعتماد على الإعداد الافتراضي والاكتفاء بالضغط على Enter، وبعد انتهاء عملية التهيئة سيكون خادم Redis يعمل في الخلفيّة (background). يُمكن تنفيذ الأمر التّالي للوصول إلى قاعدة البيانات Redis: redis-cli يُمكن اختبار Redis كالتّالي: λ redis-cli 127.0.0.1:6379> ping PONG 127.0.0.1:6379> set name hsoub OK 127.0.0.1:6379> get name "hsoub" 127.0.0.1:6379> بإمكانك المتابعة مع المقال التالي: الذي يشرح كيفية التثبيت بشكل مفصل و الإطلاع على بقية أوامر Redis.
    1 نقطة
  15. Nginx عبارة عن مشروع مفتوح المصدر، له استخدامات مُختلفة قد يكون أهمها هو استخدامه كخادوم ويب. تنصيب NGINX بعد الدخول إلى السيرفر نفذ الأمريين التاليين لتثبيت وتشغيل برنامج Nginx على السيرفر: sudo apt-get update sudo apt-get install -y nginx بعد التثبيت يمكنك زيادة السيرفر من المتصفح عبر وضع عنوان السيرفر (Ip Address) في شريط العنوان في المتصفح، وسوف تظهر لك الصفحة الافتراضية لـNginx. تابع هذا الدرس لمعرفة كيفية التثبيت و ضبط خادم Nginx على توزيعة اوبنتو بالإضافة إلى مثال بسيط لتخديم صفحات html : و أيضا هناك عدة مقالات تم نشرها على الأكاديمية تشرح عن Nginx و كيفية التعامل معه بإمكانك الوصول لها من خلال: مقالات Nginx
    1 نقطة
  16. خطوات رفع قاعدة بيانات من نوع PostgreSQL إلى الإستضافة كالتالي: تصدير قاعدة البيانات: يمكنك تصدير قاعدة بيانات PostgreSQL إلى ملف باستخدام برنامج سطر الأوامر pg_dump ، أو يمكنك استخدام phpPgAdmin: الطريقة الأولى: إستخدام برنامج pg_dump: لتصدير قاعدة بيانات PostgreSQL باستخدام برنامج pg_dump ، اتبع الخطوات التالية: قم بالوصول إلى سطر الأوامر على الحاسوب حيث يتم تخزين قاعدة البيانات. على سبيل المثال ، إذا كانت قاعدة البيانات موجودة على حساب استضافة ويب آخر أو مع مزود استضافة ويب آخر ، فقم بتسجيل الدخول إلى الحساب باستخدام SSH. إذا كان لديك وصول مادي إلى الكمبيوتر ، فيمكنك فتح DOS أو نافذة طرفية للوصول إلى سطر الأوامر. اكتب الأمر التالي ، ثم اضغط على Enter. استبدل username باسم المستخدم الخاص بك ، واستبدل dbname باسم قاعدة البيانات التي تريد تصديرها: pg_dump -U username dbname > dbexport.pgsql سيُطلب منك كلمة المرور قم بإدخالها ثم إضغط Enter و بعد ذلك سيتم تصدير قاعدة البيانات إلى الملف dbexport.pgsql الطريقة الثانية: إستخدام phpPgAdmin بعد فتح البرنامج قم بالضغط على إسم قاعدة البيانات التي تريد تصديرها. من القائمة العُلوية إضغط على export تحت Format إضغط على Structure and data. من الخيارات إضغط على قائمة الإختيار و حدد SQL إضغط على تحميل ثم حدد مسار الحفظ ثم إضغط على زر save. إنشاء قاعدة بيانات PostgreSQL على إستضافتك و إسناد مستخدم لها. سجل دخولك إلى حسابك على الإستضافة من قسم Databases إضغط على PostgreSQL Databases من قسم إنشاء قاعدة بيانات ادخل الإسم الذي تريده في حقل الإسم إضغط على زر الإنشاء بعد ذلك إضغط على زر go back تحت قسم Add User to Database من قائمة المستخدمين حدد المستخدم الذي تريد ربطه بقاعدة البيانات التي أنشأتها. من قائمة قواعد البيانات حدد قاعدة البيانات التي أنشأتها. إضغط على زر submit إستيراد قاعدة البيانات يُمكنك إستيراد قاعدة البيانات إلى إستضافتك بإستخدام احدى الطريقتين إما عن طريق إستخدام سطر الأوامر بإستخدام الأمر psql أو إستخدام برنامج phpPgAdmin بعد تسجيل الدخول إلى حسابك على الإستضافة عن طريق بروتوكول SSH يُمكنك تنفيذ الأمر: psql -U username dbname < dbexport.pgsql حيث نقوم بتعويض username بإسم المستخدم و dbname بإسم قاعدة البيانات التي نريد الإستيراد فيها و dbexport.pgsql بإسم الملف الموجود الذي صدرناه سابقاً. الطريقة الثانية هي عن طريق إستخدام برنامج phpPgAdmin المثبت على الإستضافة بعد تسجيل الدخول إلى حسابك إفتح البرنامج، حدد قاعدة البيانات التي تريد الإستيراد فيها ثم من القائمة العلوية حدد SQL ثم choose file إضغط عليه لتحديد الملف من حاسوبك في الأخير إضغط على execute بعدها سيتم إستيراد البيانات.
    1 نقطة
×
×
  • أضف...