-
المساهمات
6975 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
218
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Wael Aljamal
-
أعتقد أن المشكلة في السطر $sum_all_rubber += number_format($total,2); حيث أن number_format تعيد سلسلة نصية string وليس رقم، وعندما يصبح المجموع كبير تضيع للسلسة النصية محرف , مثلا 1,999.90 والذي لايجمع مع باقي الأعداد، لذلك حاول تحويل الناتج النهائي لسلسلة نصية وإبقاء المتحول sum_all_rubber رقماً للنهاية <?php $sum_all_rubber = 0; foreach ($rubbers AS $rubber){ $total = (($rubber['countPiece'] * $rubber['colorNumber_input']) * $rubber['price']); /** @noinspection PhpWrongStringConcatenationInspection */ $sum_all_rubber += $total; } $sum_all_rubber = number_format($sum_all_rubber,2); // هنا التحويل ?>
-
في حالتك، تريدين دفع سعر الدورة بالعملة المحلية لمصر الجنيه، وإن شراء الدورة حاليا يعتبر من بلد أجنبي حيث أن ترخيص شركة حسوب في بريطانيا، لذلك وفي جميع هذه الحالات (الدفع بعملة مختلفة لمنتج في دولة أجنية) يتوقع خصم قيمة عمولة حتى 3%-6% كقيمة إضافية لسعر المنتج، هذه القيمة هي متوسط ضريبة خدمات الدفع الالكترونية، كما أن تحديد سعر التصريف يكون خاص بهذه الشركات ويمكن ألا يطابق سعر التصريف المحلي في الدولة (يمكن أن يكون أقل) بالمختصر لديكِ حوالة دولية بالإضافة لتصريف بين العملات لذلك يوجد ضريبة يتوقع أن يكون المبلغ المطوب بحدود 2600 جنيه الدعم الفني سيقدم إجابة دقيقة: مركز مساعدة حسوب الدفع عن طريق فودافون كاش:
- 2 اجابة
-
- 1
-
الخطأ Unhandled Exception: FormatException: Unexpected character يشير أن البيانات المستقبلة ليست بالتنسيق المطلوب إن حصولك على response.statusCode == 200 لايعني وجود بيانات، إنما إكمال الاتصال بشكل صحيح.لاحظ أنه عند جلب بيانات المستخدم يكون تنسيقها JSON وعند الفشل تكون نص عادي.. هذا الاختلاف يجب التعامل معه بشكل جيدة json.decode ضمن شيفرة Flutter يتعامل مع ناتج الرد والذي يعمل بشكل صحيح إن أرسل البيانات بشكل json_encode ولاحظ في شيفرتك، إن لم يتم جلب بيانات المستخدم، سوف ترسل ردين للهاتف في else وآخر عبارة echo if ($result) { while($row[] = $result->fetch_assoc()) { $item = $row; $json = json_encode($item, JSON_NUMERIC_CHECK); } } else { echo "No Data Found."; // لايوجد مستخدم } echo $json; /// سوف تعمل على كل حال لاختصار المشكلة، سوف نعيد رد وحيد للتطبيق: $data = array(); $result = $con->query($sql); while($row = $result->fetch_assoc()) { $data[] = $row; } echo json_encode($data); سيصبح تحويل البيانات كهذا: <?php $json = []; $result = $stmt->get_result(); if ($result) { while ($row = $result->fetch_assoc()) { $json[] = $row; } } echo json_encode($json, JSON_NUMERIC_CHECK); $con->close(); json_encod ستعمل مرة واحدة مهما كانت القيمة المخزنة في json$ حتى لو فارغة ستعيد كائن فارغ له تنسيق json وهذا لن يسبب خطأ الآن اكمل معالجة الموضوع في Flutter حيث أن القائمة flowersJsonData ستكون فارغة.. مما يرد flowers فارغة أي ضمن جزء العرض، اجعل الواجهة تعرض "مستخدم غير معرف مثلا" أو أي شيئ يدل على عدم وجود هذا المستخدم
- 2 اجابة
-
- 1
-
يمكن تعريف دالة مناسبة مثل toCharArray و toString public static char[] toCharArray (int number){ char[] arr = new char[(int) (Math.log10(number) + 1)]; // تعريف مصفوفة بعدد منازل العدد // log10 يعطي عدد المنازل لأنه يعيد عد مرات القسمة على 10 for (int i = arr.length - 1; i >= 0; i--) { // المرور على العدد arr[i] = (char) ('0' + (number % 10)); // وجلب المنازل منه بالترتيب عن طريق باق القسمة number /= 10; } return arr; } ************* Integer أو باستعمال الصف المساعد public static char[] toCharArray (int number){ return char[] test = Integer.toString(number).toCharArray(); } بالنسبة ل toString يمكن أن نستدعي toCharArray ونحول ناتجها ل String من خلال: public static char[] toString (int number){ return Arrays.toString(toCharArray(number)) } هذه الدالة تعيد true إن كان العدد أولي (يقبل القسمة على 1 و على نفسه فقط) كحل بسيط يمكن عمل حلقة واختبار قابلية القسمة على الأعداد من 2 حتى num / 2 نصف العدد Public boolean isprime( int num ){ // int num = this.value; // قم بتمرير القيمة كما تريد for (int i = 2; i <= num / 2; ++i) { if (num % i == 0) { return false; // غير أولي لأنه قبل القسمة على عدد ما } } return true; // أولي لأنه لم يقبل القسمة على أي عدد } أرجو توضيح آخر جزء من السؤال؟
-
إن كنت تستخدم dev server ^v4.0.0 فلقد حصل تغييرات، أي أن الخاصية contentBase تغير اسمها وأصبحت static devServer: { // ... static: __dirname + "/public/", // ... }, وإضافة public path مناسبة publicPath : '/public' وخاصية filename: filename: "bundle.js", وحاول تبديل إصدار react-scripts version 3.4.1 to 3.4.0 تابع سجل تغيرات dev-server
-
يمكن تحديد نمط تشغيل webpack بين production و development من خلال الخاصية mode في كائن الإعدادات: Mode: development // webpack.development.config.js module.exports = { mode: 'development', }; Mode: production // webpack.production.config.js module.exports = { mode: 'production', }; ويمكن تمرير نمط التشغيل مباشرة ضمن CLI أو مع script: webpack --mode=development webpack --mode=production ويمكن الاعتماد على الحزمة webpack-merge التي تمكننا من إنشاء عدة ملفات إعدادات كل منها لبيئة معينة وبإعدادات نختارها.. ثم يمكن دمجها بملف واحد common التثبيت: npm install --save-dev webpack-merge ملفات الإعدادات: |- webpack.common.js |- webpack.dev.js |- webpack.prod.js webpack.common.js const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { entry: { app: './src/index.js', }, plugins: [ new HtmlWebpackPlugin({ title: 'Production', }), ], output: { filename: '[name].bundle.js', path: path.resolve(__dirname, 'dist'), clean: true, }, }; webpack.dev.js const { merge } = require('webpack-merge'); const common = require('./webpack.common.js'); module.exports = merge(common, { mode: 'development', devtool: 'inline-source-map', devServer: { static: './dist', }, }); webpack.prod.js const { merge } = require('webpack-merge'); const common = require('./webpack.common.js'); module.exports = merge(common, { mode: 'production', }); ثم كل ملف مخصص لبيئة ما، يضمن الملف المشترك ويضف إعدادة الببيئة المخصصة ولعمل script: NPM Scripts package.json "scripts": { "start": "webpack serve --open --config webpack.dev.js", "build": "webpack --config webpack.prod.js" }, التوثيق: webpack.js/production
-
يمكن استخادم الخاصية containerElement للعنصر Tab أي سيتم إحاطة Tab بعنصر Link ويمكن تطبيقها كالتالي <Tabs onChange={this.changeTab} value={value}> <Tab label="timer" containerElement={<Link to="/timer" />} /> <Tab label="Home" containerElement={<Link to="/Home" />} /> </Tabs> كما يمكن إضافة Link كخاصية component : <Tab label='Home' to='/Home' component={Link} />
- 3 اجابة
-
- 1
-
وكطريقة مختصرة: كي لايتم تعريف ال Schema مرتين في المشروع حيث أن Next تحاول بناء نسخة عند كل render طبق نفس الفكرة لكل module تحاول بناءه المثال التالي لموديل user module.exports = mongoose.models.Users || mongoose.model('Users', UsersSchema); وبشكل عام، يوجد عدة احتمالات للخطأ استدعاء هذا الملف في مكانين مختلفين، مايؤدي لظهور خطأ أن هذا module معرف مسبقا. ربما تقوم بتعريف نفس Schema في مكان آخر لنفس Collection استعاء نفس النوذج بمكانين مختلفين بنفس المسار للدالة require require('./models/User') // file1 require('./models/User') // file2 لتجنب حدوثها، يمكننا إعادة المستخدم المعرف مسبقاً إن وُجد بدل إنشاءه: طبق هذه الفكرة على نماذجك.. let User; try { User = mongoose.model("User"); // موجود } catch { User = mongoose.model("User", userSchema); // نقوم بإنشاءه } إن كنت تستخدم serverless يمكنك تنفيذ أمر التشغيل كالتالي: serverless offline --skipCacheInvalidation
-
هذا الأسلوب يدعى Slideshow Gallery مثل معرض صور فيه صورة رئيسية، تصميم هذا الجزء مثل السؤال السابق، ولكن مع تبديل أزرار التحكم برواط فيها صور، ومع الضغط على الصورة يتم تبديل رابط الصورة الرئيسية <!DOCTYPE html> <html> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> body { font-family: Arial; margin: 0; } * { box-sizing: border-box; } img { vertical-align: middle; } /* Position the image container (needed to position the left and right arrows) */ .container { position: relative; } /* Hide the images by default */ .mySlides { display: none; } /* Add a pointer when hovering over the thumbnail images */ .cursor { cursor: pointer; } /* Next & previous buttons */ .prev, .next { cursor: pointer; position: absolute; top: 40%; width: auto; padding: 16px; margin-top: -50px; color: white; font-weight: bold; font-size: 20px; border-radius: 0 3px 3px 0; user-select: none; -webkit-user-select: none; } /* Position the "next button" to the right */ .next { right: 0; border-radius: 3px 0 0 3px; } /* On hover, add a black background color with a little bit see-through */ .prev:hover, .next:hover { background-color: rgba(0, 0, 0, 0.8); } /* Number text (1/3 etc) */ .numbertext { color: #f2f2f2; font-size: 12px; padding: 8px 12px; position: absolute; top: 0; } /* Container for image text */ .caption-container { text-align: center; background-color: #222; padding: 2px 16px; color: white; } .row:after { content: ""; display: table; clear: both; } /* Six columns side by side */ .column { float: left; width: 16.66%; } /* Add a transparency effect for thumnbail images */ .demo { opacity: 0.6; } .active, .demo:hover { opacity: 1; } </style> <body> <h2 style="text-align:center">Slideshow Gallery</h2> <div class="container"> <div class="mySlides"> <div class="numbertext">1 / 6</div> <img src="img_woods_wide.jpg" style="width:100%"> </div> <div class="mySlides"> <div class="numbertext">2 / 6</div> <img src="img_5terre_wide.jpg" style="width:100%"> </div> <div class="mySlides"> <div class="numbertext">3 / 6</div> <img src="img_mountains_wide.jpg" style="width:100%"> </div> <div class="mySlides"> <div class="numbertext">4 / 6</div> <img src="img_lights_wide.jpg" style="width:100%"> </div> <div class="mySlides"> <div class="numbertext">5 / 6</div> <img src="img_nature_wide.jpg" style="width:100%"> </div> <div class="mySlides"> <div class="numbertext">6 / 6</div> <img src="img_snow_wide.jpg" style="width:100%"> </div> <a class="prev" onclick="plusSlides(-1)">❮</a> <a class="next" onclick="plusSlides(1)">❯</a> <div class="caption-container"> <p id="caption"></p> </div> <div class="row"> <div class="column"> <img class="demo cursor" src="img_woods.jpg" style="width:100%" onclick="currentSlide(1)" alt="The Woods"> </div> <div class="column"> <img class="demo cursor" src="img_5terre.jpg" style="width:100%" onclick="currentSlide(2)" alt="Cinque Terre"> </div> <div class="column"> <img class="demo cursor" src="img_mountains.jpg" style="width:100%" onclick="currentSlide(3)" alt="Mountains and fjords"> </div> <div class="column"> <img class="demo cursor" src="img_lights.jpg" style="width:100%" onclick="currentSlide(4)" alt="Northern Lights"> </div> <div class="column"> <img class="demo cursor" src="img_nature.jpg" style="width:100%" onclick="currentSlide(5)" alt="Nature and sunrise"> </div> <div class="column"> <img class="demo cursor" src="img_snow.jpg" style="width:100%" onclick="currentSlide(6)" alt="Snowy Mountains"> </div> </div> </div> <script> var slideIndex = 1; showSlides(slideIndex); function plusSlides(n) { showSlides(slideIndex += n); } function currentSlide(n) { showSlides(slideIndex = n); } function showSlides(n) { var i; var slides = document.getElementsByClassName("mySlides"); var dots = document.getElementsByClassName("demo"); var captionText = document.getElementById("caption"); if (n > slides.length) {slideIndex = 1} if (n < 1) {slideIndex = slides.length} for (i = 0; i < slides.length; i++) { slides[i].style.display = "none"; } for (i = 0; i < dots.length; i++) { dots[i].className = dots[i].className.replace(" active", ""); } slides[slideIndex-1].style.display = "block"; dots[slideIndex-1].className += " active"; captionText.innerHTML = dots[slideIndex-1].alt; } </script> </body> </html>
-
تدعى هذه التقنية Slideshow / Carousel يمكن تطبيقها بعدة طرق، ويمكن استخدام Bootstrap مثلا، أو تطبيق مايشبه الشيفرة التالية حيث يوجد أزرار في الأسفل تتحكم برقم الصورة التي سيتم عرضها <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> /* تنسيقات عامة */ * {box-sizing: border-box} body {font-family: Verdana, sans-serif; margin:0} .mySlides {display: none} img {vertical-align: middle;} /* حاوية عرض الصور */ .slideshow-container { max-width: 1000px; position: relative; margin: auto; } /* أزرار التحكم*/ .prev, .next { cursor: pointer; position: absolute; top: 50%; width: auto; padding: 16px; margin-top: -22px; color: white; font-weight: bold; font-size: 18px; transition: 0.6s ease; border-radius: 0 3px 3px 0; user-select: none; } /* موقع أزرار التحكم الجانبية */ .next { right: 0; border-radius: 3px 0 0 3px; } /* إضافة تأثيرات لونية على الأزرار */ .prev:hover, .next:hover { background-color: rgba(0,0,0,0.8); } /* تنسيق النص */ .text { color: #f2f2f2; font-size: 15px; padding: 8px 12px; position: absolute; bottom: 8px; width: 100%; text-align: center; } /* Number text (1/3 etc) */ .numbertext { color: #f2f2f2; font-size: 12px; padding: 8px 12px; position: absolute; top: 0; } /* The dots/bullets/indicators */ .dot { cursor: pointer; height: 15px; width: 15px; margin: 0 2px; background-color: #bbb; border-radius: 50%; display: inline-block; transition: background-color 0.6s ease; } .active, .dot:hover { background-color: #717171; } /* تأثير التحرك */ .fade { -webkit-animation-name: fade; -webkit-animation-duration: 1.5s; animation-name: fade; animation-duration: 1.5s; } @-webkit-keyframes fade { from {opacity: .4} to {opacity: 1} } @keyframes fade { from {opacity: .4} to {opacity: 1} } /* تنسيق للشاشات الصغيرة */ @media only screen and (max-width: 300px) { .prev, .next,.text {font-size: 11px} } </style> </head> <body> <div class="slideshow-container"> <div class="mySlides fade"> <div class="numbertext">1 / 3</div> <img src="img_nature_wide.jpg" style="width:100%"> <div class="text">Caption Text</div> </div> <div class="mySlides fade"> <div class="numbertext">2 / 3</div> <img src="img_snow_wide.jpg" style="width:100%"> <div class="text">Caption Two</div> </div> <div class="mySlides fade"> <div class="numbertext">3 / 3</div> <img src="img_mountains_wide.jpg" style="width:100%"> <div class="text">Caption Three</div> </div> <a class="prev" onclick="plusSlides(-1)">❮</a> <a class="next" onclick="plusSlides(1)">❯</a> </div> <br> <div style="text-align:center"> <span class="dot" onclick="currentSlide(1)"></span> <span class="dot" onclick="currentSlide(2)"></span> <span class="dot" onclick="currentSlide(3)"></span> </div> <script> // شيفرات التحكم بتبديل الصور var slideIndex = 1; showSlides(slideIndex); function plusSlides(n) { showSlides(slideIndex += n); } function currentSlide(n) { showSlides(slideIndex = n); } function showSlides(n) { var i; var slides = document.getElementsByClassName("mySlides"); // الوصول لمعرض الصور var dots = document.getElementsByClassName("dot"); if (n > slides.length) {slideIndex = 1} // ضمان تحديد أول صورة كالأولى if (n < 1) {slideIndex = slides.length} for (i = 0; i < slides.length; i++) { slides[i].style.display = "none"; } for (i = 0; i < dots.length; i++) { dots[i].className = dots[i].className.replace(" active", ""); } slides[slideIndex-1].style.display = "block"; dots[slideIndex-1].className += " active"; // إضائة الزر الفعال } </script> </body> </html> يمكنك ذكر أي جزء للتوضيح إن لم تفهمه
-
يمكن استخدام Default Values كخاصية للعنصر input وهي مسؤولة عن عملية التهيئة الأولى وتتجنب حدوث خطأ <input defaultValue="Bob" value={form.name} name="name" onChange={(e)=>setForm({...form,name:e.target.value})} /> وإن أردت وضع قيمة افتراضية ضمن value يمكن استخدام المعامل ؟؟ nullish coalescing بدل or || value={name ?? ''} checked={bool ?? false}
- 2 اجابة
-
- 1
-
الترميز العلمي نستخدمه عندما نريد تمثيل أعداد بيرة جداً أو صغيرة جداً بطريقة مختصرة، أي نكتب نفس العدد والذي له نفس القيمة لكن بشكل مختلف ومختصر.. كما نعلم الخانة الأكثر أهملية للعدد هي الخانة اليسرى التي لها أكبر منزلة مثل X في العدد التالي: xyz 123 1 = 100 2 = 20 3 = 3 وعندا يحوي العدد الكثير من الخانات، ما يهمنا هو الحفاظ على أكثر قيمة تقريبية له أي الخانة الأكبر فنحتفظ بها ونعوض عن باقي الخانات ب 10 قوة عددهم 2^10 .. حيث يتم إهمالهم في حال عدم القدرة على الاحتفاظ بهم خاصة إن كان لدينا عدد مثل 1230000000001 = 123 * 10 ^ 10 حيث أهملت 1 الآحاد لأنها لاتؤثر على دقة الناتج بشكل كبير .. أمثلة للترميز: Decimal notation Scientific notation 2 2×100 300 3×102 4321.768 4.321768×103 −53000 −5.3×104 6720000000 6.72×109 0.2 2×10−1 987 9.87×102 0.00000000751 7.51×10−9 يمكن إيجاد هذا التمثيل في الآلة الحاسبة على شكل EXP وفي الحاسوب يتمم ترميز : x10^y => xEy y ضرب عشرة مرفوع للقوة x result = x * pow (10, y) يمكن أن تكون x موجب أو سالبة أو رقم عشري و نفس الأمر ل y 1.6E-35 -5E10 .. وتقبل لغات البرمجة هذا الترميز مثلا في ++C يمكن أن نكتب: double c = 1.0e-10; c = 1.0 * pow ( 10, -10)
-
لايوجد للاسف طريقة آمنة ومباشرة لسحب الأرباح في سوريا،.. إن كان لك أحد أقربائك في بلدان الجوار، يمكن تحويل الأرباح إلى حسابه في باي بال مثلا، ثم يقوم هو بسحبهم و إرسالهم إليك، وحل آخر عن طريق شركات الصرافة والحوالات وكل أحد سيأخذ نسبة من المبلغ كعمولة
-
لحل مشكلة process is not defined يمكن أن نضيف plugin التالية: plugins: [ new webpack.ProvidePlugin({ process: 'process/browser', }), ] ونقوم بتثبيتها كالتالي: npm install process كما يمكن استعمال الplugin التالية webpack.DefinePlugin بدل من webpack.EnvironmentPlugin : webpack.config.js module.exports = { plugins: [ new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), 'process.env.MY_ENV': JSON.stringify(process.env.MY_ENV), ... and so on ... }) ], } وتأكد من تضمين حزمة dotenv const dotenv = require('dotenv').config({ path: __dirname + '/.env' }) في أول ملف webpack.config.js لتثبيتها: npm i dotenv
- 1 جواب
-
- 1
-
أيضا لم توضح المشكلة،... هل تقصد لون الخلفية؟ .header { background-color: tomato; } هذه لن تعمل لأن العنصر div لايحوي عناصر، أي أبعاده (0 0) لذلك اكتب أي نص وسوف يظهر لونه: <div class="header"> xxxxxx هنا نص افتراضي <div class="container"> <div class="logo"> . . . . أو اعطه أبعاد مناسبة ليظهر العنصر: .header { width: 200px; height: 300px; background-color: tomato; }
-
إن عدم عمل material ui مع next js له حلين، إما تضمين خطأ في صفحة document_ أو استخدام reactStrictMode أولا: نضيف document.js_ في مجلد pages إن لم يكن موجود أو نعدل سطر تضمين material import { ServerStyleSheets } from '@material-ui/core/styles'; ^^^^^^^^^^^^^^^^^^^^^^^ ثانياً: في ملف إعادادت next نزيل reactStrictMode الملف : next.config.js module.exports = { // reactStrictMode: true, حذف أو تعليق } مثال ل document.js_ إن لم يكن موجود: import React from 'react'; import Document, { Html, Head, Main, NextScript } from 'next/document'; import { ServerStyleSheets } from '@material-ui/core/styles'; import theme from '../src/theme'; export default class MyDocument extends Document { render() { return ( <Html lang="en"> <Head> {/* PWA primary color */} <meta name="theme-color" content={theme.palette.primary.main} /> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap" /> </Head> <body> <Main /> <NextScript /> </body> </Html> ); } } // `getInitialProps` belongs to `_document` (instead of `_app`), // it's compatible with server-side generation (SSG). MyDocument.getInitialProps = async (ctx) => { // Resolution order // // On the server: // 1. app.getInitialProps // 2. page.getInitialProps // 3. document.getInitialProps // 4. app.render // 5. page.render // 6. document.render // // On the server with error: // 1. document.getInitialProps // 2. app.render // 3. page.render // 4. document.render // // On the client // 1. app.getInitialProps // 2. page.getInitialProps // 3. app.render // 4. page.render // Render app and page and get the context of the page with collected side effects. const sheets = new ServerStyleSheets(); const originalRenderPage = ctx.renderPage; ctx.renderPage = () => originalRenderPage({ enhanceApp: (App) => (props) => sheets.collect(<App {...props} />), }); const initialProps = await Document.getInitialProps(ctx); return { ...initialProps, // Styles fragment is rendered after the app and page rendering finish. styles: [...React.Children.toArray(initialProps.styles), sheets.getStyleElement()], }; };
- 1 جواب
-
- 1
-
أرجو توضيح المشكلة بصورة أكبر من فضلك، وحدد أي خاصية لا تعمل @Mahmoud Nawwar أرجو في المرة القادمة كتابة سؤال واضح مع إرفاق الشيفرة البرمجية التي تعتقد أنها تسبب الخطأ
- 4 اجابة
-
- 1
-
يمكن حل المشكلة من ملف إعادادت Django الذي هو settings.py في سطر تعريف سواقة قواعد البيانات: DATABASES = { 'default': { 'NAME': 'my_db_name', 'ENGINE': 'mysql.connector.django', # 'django.db.backends.mysql' 'USER': '<user>', 'PASSWORD': '<pass>', 'HOST': 'localhost', 'PORT': 3306, 'OPTIONS': { 'autocommit': True, }, } } أي التبديل بين mysql.connector.django و django.db.backends.mysql. إن كنت تريد mysql.connector.django يمكن تثبيتها: pip install mysql-connector-python إن لم يعمل، نقوم بتثبيت مخصص ل python 3 sudo apt-get install python3-mysqldb
-
لا بأس إن كانت تصميماتك ليست جيدة، فإن مجال البرمجية يتماشى مع مجال التصميم ويوجد تعاون بين المبرمجين و المصممين، لاحظ الحالة، التطبيقات العادية لاتحتاج لتصميمات قوية، وتكون ميزانيتها متوسطةـ أما بالنسبة للشركات الكبرى فعلى الأغلب تقوم بتوظيف مصمم مستقل للعمل على الواجهات، ثم يتواصل مع مبرمج ليكتب الأكواد المناسبة لها... وأثناء تعلمك لبرمجة التطبيقات سيمر عليم العديد من التصاميم المميزة، يمكنك الاستفادة من أفكارهم و طريقة برمجتهم.. سوف تتحسن مع الوقت، ابحث عن التغذية البصرية و شاهد تصاميم غيرك وحاول تقليدهم للتدريب
-
بالإضافة ل unzip يوجد مجموعة أوامر تعمل بنفس الطريقة zcat - zless - zmore - vim $ zless test.zip $ zmore test.zip $ zcat test.zip $ vim test.zip إذا مان نوع الملف bz2 يمكن استخدام: $ bzcat test.txt.bz2 $ bzmore test.txt.bz2 $ vim test.txt.bz2 كما يوجد zipinfo $ zipinfo test.zip Archive: test.zip Zip file size: 499 bytes, number of entries: 2 -rw-r--r-- 3.0 unx 94 tx defN 20-Jan-04 21:56 f1.txt -rw-r--r-- 3.0 unx 96 tx defN 20-Jan-04 21:57 f2.txt 2 files, 190 bytes uncompressed, 177 bytes compressed: 6.8% تعرض معلومات أكثر تفصيلا عن وحتوى الملف أما لمعلومات أقل يمكن: $ zip -sf test.zip Archive contains: f1.txt f2.txt Total 2 entries (190 bytes) أوامر أخرى: 7z tar
-
يوجد مشكلة في استخدام مكتبة material ui مع nextjs ويمكن حلها بالتخلي عن react strict mode في ملف next.config.js module.exports = { // reactStrictMode: true, قم بازالته };