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

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

  1. منتصر احمد

    منتصر احمد

    الأعضاء


    • نقاط

      2

    • المساهمات

      760


  2. Sam Ahw

    Sam Ahw

    الأعضاء


    • نقاط

      2

    • المساهمات

      1388


  3. عمر قره محمد

    عمر قره محمد

    الأعضاء


    • نقاط

      2

    • المساهمات

      4096


  4. محمد لارافيل

    محمد لارافيل

    الأعضاء


    • نقاط

      2

    • المساهمات

      115


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

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

  1. السلام عليكم. كيف يتم تنفيذ زر تلقائيًا عند الوصول إلى عدد معين من الأحرف التي تم إدخالها ، مثل أرقام pin؟ لغة البرمجة: بايثون. المكتبة: wx(wxpython).
    1 نقطة
  2. index.js import icon_marker from './images/icon_marker.svg' new google.maps.Marker({position, icon: icon_marker}) const test = document.createElement('img').src = icon_marker webpack.config.js module: { rules: [{ test: /\.svg/, type: 'asset' }] } لقد جربت كتابة 'asset/resource', 'asset/inline', 'asset/source' وقبل هذه الأنواع ، أنواع كثيرة من المحملات. لقد وجدت ملفات صور تم إنشاؤها في مجلد dist ولكن لم يتم تطبيق أي منها. الرجاء مساعدتي
    1 نقطة
  3. لدي حزمة لمشاهدة جميع ملفاتي باستخدام watch : true في webpack.config.js. أقوم بتشغيل الأمر npm run build من خلال هذا الكود في package.json: "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack" }, الآن عندما أستخدم npm run build ، يتم تجميعه فقط في كل مرة أحفظ فيها package.json. كيف يمكنني تغييره بحيث يتم تجميعه في كل مرة أحفظ فيها ملفا في جميع مجلداتي؟ package.json { "name": "testproj", "version": "1.0.0", "description": "", "main": "code.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack" }, "author": "Figma", "license": "MIT", "devDependencies": { "@figma/plugin-typings": "*", "@types/node": "^16.7.1", "css-loader": "^6.2.0", "html-webpack-inline-source-plugin": "0.0.10", "html-webpack-plugin": "^5.3.2", "style-loader": "^3.2.1", "ts-loader": "^9.2.5", "typescript": "^4.3.5", "url-loader": "^4.1.1", "webpack": "^5.51.1", "webpack-cli": "^4.8.0" }, "dependencies": { "@types/react": "^17.0.19", "@types/react-dom": "^17.0.9", "figma-plugin-ds": "^1.0.1", "react": "^17.0.2", "react-dev-utils": "^11.0.4", "react-dom": "^17.0.2" } } webpack.config.js const InlineChunkHtmlPlugin = require('react-dev-utils/InlineChunkHtmlPlugin'); const HtmlWebpackPlugin = require('html-webpack-plugin') const path = require('path') const webpack = require('webpack') module.exports = (env, argv) => ({ watch: true, watchOptions: { ignored: /node_modules/, }, mode: argv.mode === 'production' ? 'production' : 'development', devtool: argv.mode === 'production' ? false : 'inline-source-map', entry: { ui: './src/ui.tsx', code: './src/code.ts', }, module: { rules: [ { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/ }, { test: /\.css$/, use: ["style-loader", "css-loader"], }, { test: /\.svg/, type: 'asset/inline' } ] }, resolve: { extensions: ['.tsx', '.ts', '.jsx', '.js'] }, output: { filename: '[name].js', path: path.resolve(__dirname, 'dist'), }, plugins: [ new webpack.DefinePlugin({ 'global': {} }), new HtmlWebpackPlugin({ inject: "body", template: './src/ui.html', filename: 'ui.html', chunks: ['ui'] }), new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/ui/]), ], }) أرجو المساعدة وشكرا مقدما.
    1 نقطة
  4. لايوجد خطأ واضح من الصور، تأكد من المستندات الموجودة في قاعدة البيانات إن كانت تحوي القيمة complated على الأرجح إن لم تقم بشكل يدوي بإدخال القيم لن تكون موجودة ضمن المستندات. يمكنك إجبار النموذج على وضع قيمة complated بشكل افتراضي تساوي false لأي بيانات جديدة يتم إدخالها كالتالي: complated: { type: Boolean, default: false, required: true } وعندها سيتم إضافة حقل complated لأي مستند تقوم بإضافته. وحاول طباعة بعض القيم ضمن المسار delete للتأكد إن كان لديك أي أخطاء أخرى في مشروعك.
    1 نقطة
  5. تأكد من أن القيمة الموجودة ضمن نموذج Task لديك هي complated وليس completed وإلا يجب عليك تصحيح الخطأ الإملائي في شرط الحذف. من الممكن وجود أخطاء في مكان آخر ولكن لايمكننا مساعدتك إن لم تشارك بقية أجزاء الشيفرات البرمجية في مشروعك
    1 نقطة
  6. كنت قد انهيت اول مسار وهو HTML,CSS,....,...في الماضي ولاكن وجدت اني لا استطيع التطبيق وحدي فحاولت ان اتدرب علي بعض النمازج فهل اكمل؟
    1 نقطة
  7. السلام عليكم. انا بقالي اكثر من سنه استخدم javascriipt ولا مره استخدمت ال class واريد ان انقل من ال functional programming الي ال object orianted programming مع العلم اني تعلمت ال classes وال objects والمفاهيم العامه مثل الوراثه وغيرها
    1 نقطة
  8. استخدام ال functional programming أو استخدام ال object orianted programming يعتمد على المشروع الذي تعمل به ويمكنك استخدامهما معاً في نفس المشروع أو البرنامج بدون أي مشكلة وبما أنك قد تعلمت المفاهيم الأساسية الخاصة بالبرمجة كائنية التوجه يحتاج فقط إلى مشروع تتمكن فيه من تطبيق هذه المفاهيم وليس شرطاً أن يكون موقع كبير إنما أي موقع بسيط تستطيع استخدام ال OOP مثل بناء to-do list ويمكنك تطبيق ال OOP في هذا التطبيق بكل سهولة حاول بناء برنامج يقوم بحساب ال budget الخاص بالمستخدم يمكنك إعادة بناء أو تحويل الكود الموجود في التطبيقات السابقة الخاصة بك إلى ال OOP ويعتبر ال javascript من أكثر اللغات التي تتبنى اسلوب ال functional programming وليست لغة جيدة في استخدام ال object orianted programming
    1 نقطة
  9. وعليكم السلام في حال شعرت أنك أتقنت functional programming بشكل كامل وتريد أن تنتقل إلى تقنيات ومعلومات جديدة لا بأس بذلك ويمكنك البدء في دراستها وتعلمها ، كما أن الإستمرارية في التعلم وتطوير نفسك هذا أمر إيجابي سوف يضيف إلى السيرة ذاتية الخاصة بك ، أيضاً طالما لديك خبرة ومعلومات في classes و objects هذا سوف يساعدك على التعلم بشكل أسهل وأسرع ، أيضاً حافظ على أن لا تشتت نفسك في كثير من المجالات البرمجية . يمكنك الإطلاع على المقالات الخاصة في لغة JavaScript على الأكاديمية وبحيث تعتبر مفيدة لك خلال مرحلة التعلم والدراسة .
    1 نقطة
  10. اريد افكار مشاريع احترافية ب react , node js للportfolio الخاص بي
    1 نقطة
  11. يوجد عدّة أفكار لمواقع يمكن بنائها باستخدام react , node js منها موقع لمراجعة المنتجات موقع مخصص لوصفات الأطعمة موقع لحجز الفنادق موقع لحجز تذاكر الطيران موقع أخبار عن الرياضة موقع عن تطوير الذات موقع يقدم كورسات ودورات وهناك الكثير من الأفكار التي يمكنك تطبيقها وللإطلاع أكثر على نماذج أعمال قم بالإطلاع على المقال التالي كما يمكنك الإطلاع على المقالة التالية في مدونة خمسات حول 30 فكرة لبناء مواقع إلكترونية من هنا
    1 نقطة
  12. هذه مجموعة من افكار المشاريع باستخدام الـ MERN stack والتي تعني (react - express - mongo dB - Node) : موقع ويب أسئلة وأجوبة موقع ويب يمثل متجر إلكتروني موقع ويب عن السياحة والسفر موقع ويب عن الأخبار موقع ويب عن الموضة والأزياء موقع ويب مختص بالطب و الصحة موقع ويب متخصص في وساطة الخدمات مثل (خمسات ومستقل وغيرها) موقع ويب عن الكورسات مدونة موقع تعريفي لشركة مع مدونة موقع افلام ومسلسلات موقع تواصل اجتماعي موقع بيع خدمات الكترونية sass موقع خدمات مصرفية وما ارشحه بشكل كبير لك هو انشاء موقع ويب يمثل متجر إلكتروني وذلك لأنه قد تتمكن من بيعه بسهولة في المستقبل.
    1 نقطة
  13. السلام عليكم احتاج الخط بكامل انواعه عربي انجليزي Somar Bold medium Regular Light والنمط هذا اذا ممكن مرفقه الصوره
    1 نقطة
  14. نعم يمكنك الاكمال، ولاسيما أن المسارات التالية تستخدم اغلب المعلومات التي تعلمتها في المسار الذي انهيته. ومن الصور التي ارفقتها جبدة انه لديك خبرة جيدة في html و css . وحتى تستفيد بشكل افضل من الدورة اطلع على النقاشات التالية : وكذلك :
    1 نقطة
  15. أعتذر على كثرة أسئلتي هل دورة علوم الحاسوب لمدة ستة أشهر من بداية تسجيلي ؟ أم المجال مفتوح ؟ جزاكم الله خيرًا
    1 نقطة
  16. أولاً fetch دالة جاهزة في ال javascript بينما axios مكتبة تحتاج لإستدعائها بالطبع ليس خطأ والفرق بينهما بسيط ويمكن لكلاهما القيام بنفس الشئ والفرق بينهما fetch لا تدعم IE 11 بينما axios تدعمه عند عمل request يجب أن تقوم بتنفيذ الدالة json() function لل response بينما لا نقوم بذلك في axios يجب عليك تحويل ال object ل json في ال fetch بينما لا نقوم بذلك في ال axios أعتقد أنه لا يمكنك العمل مع ال service worker لل PWA باستخدام axios فقط fetch لذلك يمكنك استخدام كلاهما بدون مشاكل ولكن في التطبيقات الكبيرة ربما تسهل ال axios العمل عن ال fetch
    1 نقطة
  17. يوجد بعض الاختلافات بين ال fetch و الاكسيوس ساوضح بعضها كالتاللي : fetch لا يوجد تحويل مباشر الي صيغة json بما معناه النتيجة الراجعه لن تكوم على شكل json و عليك اولا استقبال القيمة و من ثم تحويلها فيما يخص axios فانه يستقبل القيمة و يحولها فورا اكسيوس يدعم تحديثات البراوزر اكثر من الفيتش حيث ان fetch تدعم فقط Chrome 42+, Firefox 39+, Edge 14+, and Safari 10.1 fetch تستخدم قيمة الbody اكسيوس يستخدم قيمة data ,و كما قلنا بالاعلى اكسيوس يحتوي على قيمة اوبجت اما الفيتش فسوف تحتاج الى استخدام json.stringified او json.pars لتحويل المعلومات الي الصيغة المرادة يسمح Axios بإلغاء الطلب وانتهاء مهلة الطلب اما الفيتش فلا يسمح بذلك fetch بلد ان لذلك لست بحاجة الى تنصيبها للاستخدامها اما ال axios فإنك بحاجة الى تنصيب الملف ليس من الخطأ استخدام fetch و لكن من الافضل استخدام مكتبة لها دعم اكبر في المتصفحات كما انها اكثر سهولة و مرونة
    1 نقطة
  18. يُوفّر لنا إطار العمل Flask طريقة بسيطة لتنبيه المُستخدم إلى التّغييرات الطّارئة في التّطبيق كتسجيل الدّخول، إضافة مقال، حذف مقال وتسجيل الخروج، ويُمكن ذلك عبر الدّالة flash التّي تُمكّننا من عرض رسالة للمُستخدم تُفيد بأنّ التّغيير قد حدث بنجاح، فمثلا إذا قام بإضافة مقال جديد فسيستقبل رسالة كالتّالي: “أُضيف المقال بنجاح!” وهذه الرّسالة خاطفة (flash) ما يعني بأنّها ستختفي فور إعادة تحميل الصّفحة. على سبيل المثال سنقوم بتنبيه المُستخدم إلى أنّ المقال قد أضيف بنجاح بعد إضافته لمقال جديد وبعد التّأكد من أنّ المقال الجديد قد أضيف إلى قاعدة البيانات، وسيكون التّنبيه كالتّالي: ملاحظة: التّنسيق متواجد في ملفّ style.css الذي يُمكنك الحصول عليه من هذا الرّابط يُمكننا أن نقوم بالأمر بالاستعانة بالدّالة flash بعد استيرادها من إطار العمل Flask وبالتّالي يُصبح سطر الاستيراد كالتّالي: from flask import Flask, render_template, redirect, url_for, request, session, flash بعدها يُمكننا استعمال الدّالة ببساطة باستدعاء الدّالة وتمرير الرّسالة كسلسلة نصيّة كما يلي : flash('الرّسالة التّي ترغب بعرضها') تأكّد فقط من أنّ السّطر متواجد في آخر الدّالة المسؤولة عن المُوجّه، مُباشرة قبل تقديم قالب HTML أو إعادة التّوجيه. سنُطبّق هذه الطّريقة لنُضيف رسالة لكل العمليّات التّالية: إضافة مقال جديد بنجاح حذف مقال بنجاح التّنبيه إلى أنّ العمليّة تتطلّب تسجيل الدّخول تسجيل الدّخول بنجاح تسجيل الخروج بنجاح وبعدها سنقوم بعرض الرّسالة في أعلى صفحة index.html. إضافة مقال جديد بنجاح من أجل إضافة الرّسالة التي تُنبّه المُستخدم بأنّ المقال قد أضيف بنجاح سنُضيف سطرا واحدا إلى دالّة الموجّه create: flash(u'أضيف المقال بنجاح!') سنُضيفه مُباشرة قبل السّطر المسؤول عن إعادة التّوجيه إلى الصّفحة الرّئيسيّة وبالتّالي تُصبح الدّالة create كالآتي: def create(): if request.method == 'POST': title = request.form['title'] content = request.form['content'] manage_db.create(title, content) flash(u'أضيف المقال بنجاح!') return redirect(url_for('home')) مُلاحظة: تأكّد من استيراد الدّالة flash قبل أن تحفظ الملفّ. حذف مقال بنجاح بنفس الطّريقة نُضيف رسالة للتّنبيه إلى أنّ عمليّة حذف مقال قد تمّت بنجاح، ومنه تُصبح الدّالة delete كالتّالي: def delete(post_id): manage_db.delete(post_id) flash(u'حُذف المقال بنجاح!') return redirect(url_for('home')) التّنبيه إلى أنّ العمليّة تتطلّب تسجيل الدّخول في السّابق كنّا نتأكّد من أنّ المُستخدم قد سجّل دخوله، فإن سجّل دخوله فمن المسموح له أن يقوم بالعمليّات الحسّاسة كحذف مقال أو إضافة آخر، أمّا إن لم يُسجّل دخوله فأي مُحاولة لإجراء عمليّة حسّاسة تُرجع الزّائر إلى الصّفحة الرّئيسيّة دون أي تنبيه أو رسالة تشرح ما حدث. لتحسين تجربة الاستخدام، سنُضيف رسالة تخبر الزّائر بأنّ إجراء هذه العمليّة يتطلب تسجيل دخول، وسنقوم بذلك على مُستوى المُزخرف login_required لكي يُصبح كالآتي: def login_required(function): @wraps(function) def wrapper(*args, **kwargs): if 'logged_in' in session: return function(*args, **kwargs) else: flash(u'سجّل دخولك أولا لإجراء هذه العمليّة') return redirect(url_for('home')) return wrapper تسجيل الدّخول بنجاح عندما يقوم الزّائر بتسجيل دخوله سنقوم بتوجيهه إلى الصّفحة الرّئيسيّة وعرض رسالة تُفيد بأنّ تسجيل الدّخول قد تمّ بنجاح. وبالتّالي سيتطلّب الأمر تعديل الدّالة login لتُصبح كما يلي: def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] if username == "admin" and password == "password": session['logged_in'] = True flash(u'سُجّل دخولك بنجاح') else: return redirect(url_for('home')) return redirect(url_for('home')) تسجيل الخروج بنجاح بنفس الطّريقة نقوم بإضافة سطر الرّسالة مُباشرة بعد حذف الجلسة لتنبيه المُستخدم إلى أنّ تسجيل الخروج قد تمّ بنجاح. def logout(): session.pop('logged_in', None) flash(u'سُجّل خروجك بنجاح!') return redirect(url_for('home')) عرض الرّسائل في صفحة HTML بعد أن أضفنا رسالة لكلّ عمليّة، بقيت خطوة عرضها على المتصفّح، ويُمكن ذلك عبر الدّوران على قيم الدّالة get_flashed_messages وعرض كل عنصر على حدى، وذلك باستخدام حلقة for كما عهدنا: {% for message in get_flashed_messages() %} <div class="flash"> {{ message }} </div> {% endfor %} أضف الشّيفرة السّابقة إلى الملفّ index.html مُباشرة بعد وسم body واحفظ الملف. يُمكنك الآن تجربة التّطبيق وإجراء العمليّات السّابقة وستُلاحظ بأنّ رسالة تظهر حسب العمليّة التي أجريتها. نقل بيانات تسجيل الدّخول إلى إعدادات التّطبيق حاليا نستعمل السّطر التّالي للتحقق من أنّ بيانات تسجيل الدّخول صحيحة: if username == "admin" and password == "password" هذه الجملة الشّرطيّة مُتواجدة في عمق ملفّ app.py ما يجعل تغيير بيانات تسجيل الدّخول أمرا صعبا، وسيكون من الجيّد لو أنّ البيانات تواجدت في أعلى الملف كإعدادات يسهل تغييرها. سنقوم بإضافة السّطرين التّاليين مُباشرة بعد تعريف المُتغيّر app ليُصبح هذا الجزء من الشّيفرة كالآتي: app = Flask(__name__) app.config['SECRET_KEY'] = "Secret" app.config['USERNAME'] = "admin" app.config['PASSWORD'] = "password" وبعدها سنقوم بتغيير الجملة الشّرطيّة لتُصبح كالتّالي: if username == app.config['USERNAME'] and password == app.config['PASSWORD']: بعد هذه العمليّة، أصبح من السّهل تغيير بيانات تسجيل الدّخول دون الاضطرار إلى البحث عن الجملة الشّرطيّة. تخزين الإعدادات في ملفّ مُستقل كلّما أضفنا إعدادا جديدا كلّما كانت إدارة الإعدادات أكثر تعقيدا، لتبسيط الإعدادات يُمكننا أن ننقلها إلى ملفّ مُستقل. افتح ملفّا باسم config.py في مُجلّد المشروع وأضف الإعدادات كالتّالي: SECRET_KEY = 'Secret!!!' USERNAME = 'admin' PASSWORD = 'password' احفظ الملف وأغلقه، سنحتاج الآن إلى ربط ملفّ الإعدادات مع ملفّ app.py، ويُمكن القيام بذلك عبر إستبدال الأسطر التّالية بسطر واحد: app.config['SECRET_KEY'] = "Secret" app.config['USERNAME'] = "admin" app.config['PASSWORD'] = "password" ضع السّطر التّالي عوضا عنها: app.config.from_object('config') أصبح الآن بإمكاننا تعديل الإعدادات عبر تغيير البيانات داخل الملفّ config.py بطريقة بسيطة ودون التّعامل مع شيفرة التّطبيق الأساسيّة. إضافة تاريخ لنهاية صلاحية الجلسة افتراضيّا، يقوم Flask بتسجيل الجلسة طوال مدّة فتح المتصفّح، ما يعني بأنّ تسجيل الدّخول سيكون صالحا لمدّة وجيزة فقط ويجب علينا تغيير هذا الإعداد لكي يبقى المُستخدم مُسجّلا لمدّة أطول، ويُمكنك بعد فهم الطّريقة إضافة خيار “تذكّرني” إلى التّطبيق. يُمكن أن نقوم بإضافة تاريخ لنهاية صلاحية الجلسة عبر تمكين خيار التّحكم بهذه الميزة وذلك بإضافة السّطر التّالي مباشرة بعد تسجيل الجلسة (أي بعد السّطر session['logged_in'] = True): session.permanent = True بعد ذلك سنتمكّن من تحديد مدّة زمنيّة كتاريخ لنهاية الصّلاحيّة، مثلا بعد نصف ساعة أو ساعتين. يجب أولا أن نستورد دالّة timedelta من حزمة datetime لنتمكّن من توقيت مدّة الجلسة، أضف السّطر التّالي إلى بداية الملفّ. from datetime import timedelta سنتمكّن الآن من تعيين مُدّة زمنيّة محدّدة لتدمير الجلسة، مثلا لو أردنا حذف الجلسة بعد نصف ساعة يُمكن أن نضيف السّطر التّالي مُباشرة بعد السّطر session.permanent = True: app.permanent_session_lifetime = timedelta(minutes=30) ما يعني بأنّ دالّة الموجّه login ستصبح كالتّالي: def login(): session['logged_in'] = True session.permanent = True # Make session last for only 30 min app.permanent_session_lifetime = timedelta(minutes=30) if request.method == 'POST': username = request.form['username'] password = request.form['password'] if username == "admin" and password == "password": session['logged_in'] = True flash(u'سُجّل دخولك بنجاح') else: return redirect(url_for('home')) return redirect(url_for('home')) ويكفي تغيير مُعامل الدّالة timedelta لتغيير مُدّة صلاحيّة الجلسة ويمكن كذلك التحكم في وحدة الزّمن. والتّالي بعض الأمثلة على مُختلف وحدات الزّمن: timedelta(days=0) # الأيام timedelta(seconds=0) # الثواني timedelta(minutes=0) # الدّقائق timedelta(hours=0) # السّاعات timedelta(weeks=0) # الأسابيع
    1 نقطة
×
×
  • أضف...