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

Wael Aljamal

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

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

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

  • عدد الأيام التي تصدر بها

    218

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

  1. إجابة Wael Aljamal سؤال في كولتن كانت الإجابة المقبولة   
    مرحبا يحيى، شكرا لذكري في هذا السؤال، أنا لم أتعامل من قبل مع هذه الجزئية، بالإضافة لذلك السؤال غير واضح..
    عنوان السؤال بحاجة لتغيير، وتوصيف المشكلة بشكل أكبر، كما يمكنك إرفاق الشيفرة البرمجية في السؤال مباشرة ضمن محرر الأكواد الذي يظهر في شريط تحكم التعليق..
    وذكر التوثيق الذي تحاول اتباعه وما الخطوة التي وصلها
    تابع: إرشادات طرح الأسئلة
  2. إجابة Wael Aljamal سؤال في قراءة رمز التحقق otp بشكل تلقائي كانت الإجابة المقبولة   
    يمكن استخدام الحزمة sms_autofill لقراءة رسائل SMS بشكل تلقائي
    واستخدامها بالشكل:
    await SmsAutoFill().listenForCode; طبعا يوجد widget خاصة  PinFieldAutoFill :
    PinFieldAutoFill( decoration: // التنسيق, currentCode: // كود التحقق الحالي onCodeSubmitted: //الكود المعاد إرساله onCodeChanged: //code callback عند codeLength: // طول الكود ), الرابط: pub.dev/packages/sms_autofill
    لن تحتاج لهذه الحزمة في IOS الوصول ل SMS لايحتاج صلاحيات بعض القيود لتحقيق عملية التحقق : developers.google.com/identity/sms-retriever/verify
    القيود: 
    طول الرسالة ليس أكثر من 140 bytes تحوي على كود فريد لمرة واحدة كمثال:  Your ExampleApp code is: 123ABC78  
    تقوم بإرفاق 11-character hash string للتعريف بتطبيقك مثل  FA+9qCX9VSu
    الرابط السابق يحوي جميع التفاصيل
    حزمة احتياطية:
     sms_otp_auto_verify sms_maintained otp_autofill
  3. إجابة Wael Aljamal سؤال في تأكيد رقم هاتف المستخدم في Firebase باستخدام otp - sms بدون إنشاء مستخدم جديد في تطبيق فلاتر Flutter كانت الإجابة المقبولة   
    إن حفظ رقم الهاتف في قاعدة البيانات يمنع تكراره لمستخدم آخر إن كان هذا الأمر يهمك.
    ضمن دالة verified Success قم بتغيير الشيفرة المسؤولة عن إعادة تسجيل الدخول التلقائي التي ستتم مجدداً عن طريق الرقم، أي فقط دع جزء حفظ الرقم في قاعدة البيانات، وللتحقق لاحقاً من تسجيل هذا المستخدم وأنه قد عمل تحقق لرقم الهاتف، حينها يتوجب عليك فقط التأكد هل هذا المستخدم لديه رقم هاتف أم لا (متحقق منه أم لا) إن كان لديه رقم هاتف فهوم قد عمل تحقق وإلا لا يتحقق من رقمه.
    أي بالمختصر لا تقم باستدعاء أي شيفرة مسؤولة عن تسجيل الدخول لأنها تؤدي لتشكيل id جديد وأنت لاتحتاجه
    أعتقد لديك بعد التحقق من رقم الهاتف، يتم تسجيل الخروج من الحساب الحالي، وتسجيل الدخول بحساب جديد للرقم المتحقق منه
    verificationCompleted: verifiedSuccess, verifiedSuccess هي الدالة التي تستدعيها عند اكتمال التحقق لأن الشيفرة التابعة لها تقوم بتسجيل الدخول و دالة تسجيل الدخول ستكون بهذا الشكل / الاسم 
    signInWithPhoneAuthCredential(credential); FirebaseAuth auth = FirebaseAuth.instance; await auth.verifyPhoneNumber( phoneNumber: '+44 7123 123 456', verificationCompleted: (PhoneAuthCredential credential) async { await auth.signInWithCredential(credential); // لانرديها }, ); توثيق: firebase.flutter.dev/docs/auth/phone
  4. إجابة Wael Aljamal سؤال في خطأ عند استخدام بوابة دفع سترايب curl_init has been disabled for security reasons كانت الإجابة المقبولة   
    عليك التأكد من تفعيل 
    extension=php_curl.dll في الاستضافة لديك،
    يمكنك وضع ملف PHP بسيط، كالتالي ليعرض معلومات المخدم، ضعه في public_html وافتحه من المتصفح ليعرض لك البيانات
    <?php // Show all information, defaults to INFO_ALL phpinfo(); ?> ثم تأكد من تفعيل الخاصية curl ،
    للتفعيل من لوحة التحكم:
    1. تسجيل الدخول WHM as the 'root' user. 2. في حقل البحث اكتب easy. 3. انقر على EasyApache (Apache Update). 4. اضغط على Start customising based on the profile. 5. اترك الافتراضي واضغط على Next Step. version of Apache 6. اترك الافتراضي واضغط على Next Step. version of PHP 7. اترك الافتراضي واضغط على Next Step. additional options within the "Short Options List" 8. انقر على Exhaustive Options List. 9. انقر على the curl options, ثم Save and build. يمكن تثبيت curl من خلال terminal:
    To install cURL on command line: CentOS Linux server: yum install curl Ubuntu/Debian Linux Server: apt-get install php5-curl # حسب إصدار PHP  
    إن بقيت المشكلة، يمكن تغيير APP_ENV:
    local, testing and production إلغاء APP_DEBUG أي false تغيير APP_ENV إلى testing أو production
  5. إجابة Wael Aljamal سؤال في هل دورة حسوب في PHP تمثل شهادة Full Stack Diploma PHP كانت الإجابة المقبولة   
    إن دورة تطوير تطبيقات الويب باستخدام لغة PHP تحوي جميع الخصائص التي ذكرتها، فهي تعلم التالي:
    أساسيات PHP  بعد الاشتراك يمكنك متابعة أساسيات HTML - CSS من دورات أخرى لأن المسارات الأولى ستكون متاحة لك مجاناً اتصال PHP مع قواعد البيانات وإدارتها تصميم واجهات الموقع وعرض معلومات الموقع فيها تعليم Laravel وهو إطار عمل PHP قوي ومشهور ثم العديد من التطبيقات على كل ماتم ذكره، أي تعلم كل من Front End و Back End ,وبالطبع يوجد حماية للمستخدمين باستخدام الأساليب المتاحة والمكتبات وعمليات المصادقة  وتشفير كلمات السر  وغيرهم..
    ملاحظة، لا يتم التركيز بشكل كبير في هذه الدورة على تصميم المواقع، ولكن جميع التصميمات جميلة و بسيطة ومناسبة لأي مشروع، وبالرغم من ذلك يتم استخدام Bootstrap وغيره من أدوات التصميم Front End ويتم شرح كل شيئ تحتاجه يمكنك طرح أي استفساروسيتابع معك المدربين   
  6. إجابة Wael Aljamal سؤال في PHP جمع عدة متغيرات عددية وإسناد تنسيق للناتج | مشكلة Notice: A non well formed numeric value encountered كانت الإجابة المقبولة   
    أعتقد أن المشكلة في السطر 
    $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); // هنا التحويل ?>  
  7. إجابة Wael Aljamal سؤال في حل مشكلة Flutter Unhandled Exception: FormatException: Unexpected character كانت الإجابة المقبولة   
    الخطأ 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 فارغة 
    أي ضمن جزء العرض، اجعل الواجهة تعرض "مستخدم غير معرف مثلا" أو أي شيئ يدل على عدم وجود هذا المستخدم
  8. إجابة Wael Aljamal سؤال في مشكلة في الوصول الى static files في webpack كانت الإجابة المقبولة   
    إن كنت تستخدم 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
  9. إجابة Wael Aljamal سؤال في كيفية تجهيز webpack ل production build كانت الإجابة المقبولة   
    يمكن تحديد نمط تشغيل 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
  10. إجابة Wael Aljamal سؤال في كيف أجعل روابط شريط التنقل Tabs في material-ui تعمل مع nextjs كانت الإجابة المقبولة   
    يمكن استخادم الخاصية 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} />  
  11. إجابة Wael Aljamal سؤال في كيف يتم تضمين متغيرات env في Webpack 5؟ كانت الإجابة المقبولة   
    لحل مشكلة 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  
  12. إجابة Wael Aljamal سؤال في مشكلة في تلوين خلفية عنصر div باستخدام CSS كانت الإجابة المقبولة   
    أيضا لم توضح المشكلة،...
    هل تقصد لون الخلفية؟
    .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; }  

  13. إجابة Wael Aljamal سؤال في عدم تطابق أسماء الفئات باستخدام Material-UI و NextJS كانت الإجابة المقبولة   
    إن عدم عمل 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()], }; };  
  14. إجابة Wael Aljamal سؤال في كيفية إستعراض الملفات بداخل أرشيف zip في نظام لينكس كانت الإجابة المقبولة   
    بالإضافة ل 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  
  15. إجابة Wael Aljamal سؤال في إضافة التواريخ الناقصة بداخل dataframe في pandas كانت الإجابة المقبولة   
    يمكن استخدام حل أسرع وهو الدالة asfreq حيث أنها لاتتطلب إعادة إنشاء index على عكس reindex:
    dates = pd.Index([pd.Timestamp('2022-07-01'), pd.Timestamp('2022-07-04'), pd.Timestamp('2022-07-06')]) s = pd.Series([1, 2, 3], dates) print(s.asfreq('D')) 2022-07-01 1.0 2022-07-02 NaN 2022-07-03 NaN 2022-07-04 2.0 2022-07-05 NaN 2022-07-06 3.0 Freq: D, dtype: float64 كما أن reindex تفشل في حال وجود قيم مكررة duplicate values.
    كما يمكن استخدام timestamps بتطبيق الدالة DatetimeIndex:
    df = pd.DataFrame({ 'timestamps': pd.to_datetime( ['2016-11-15 1:00','2016-11-16 2:00','2016-11-16 3:00','2016-11-18 4:00']), 'values':['a','b','c','d']}) df.index = pd.DatetimeIndex(df['timestamps']).floor('D') df yields timestamps values 2016-11-15 "2016-11-15 01:00:00" a 2016-11-16 "2016-11-16 02:00:00" b 2016-11-16 "2016-11-16 03:00:00" c 2016-11-18 "2016-11-18 04:00:00" d وحل آخر باستخدام resample التي تحل مشكلة duplicate values:
    df.resample('D').mean()  
  16. إجابة Wael Aljamal سؤال في ما هو char في جافا و كيف استخدم مصفوفة محارف كانت الإجابة المقبولة   
    char هو عبارة نمط بيانات أولي primitive data type يستعمل لتخزين المحارف (أي محرف في لوحة المفاتيح أو غيرهم) كما يمكن تعريف مصفوفة من المحارف أيضا عن طريقه..
    مثال لتعريف محرف وحيد و مصفوفوة محارف:
    char ch = 'a'; // محرف وحيد char[] charArray ={ 'a', 'b', 'c', 'd', 'e' }; // مصفوفة محارف يمكننا تعريف مصفوفة من المحارف بحيث يكون كل عنصر منها يسمح بتخزين محرف وحيد..
    char[] CharArray = new char[5]; CharArray[0] = 'w'; CharArray[1] = 'a'; CharArray[2] = 'e'; CharArray[3] = 'l'; لاحظ كيفية استخدام دليل العنصر للوصول للمكان المناسب لتخزين الحروف.
    لطباعة الحرف a من المصفوفة السابقة نصل له عن طريق الدليل 1:
    System.out.println(CharArray[1]); // 'a' وللمرور على المصفوفة و طباعة قيمها بإحدى الطريقتين:
    for (char c : CharArray) { System.out.println(c); } for (int i=0; i< CharArray.length; i++) { System.out.println(CharArray[i]); } للتحويل بين قيمة رقمية و محرفية يمكن استخدام القصر casting التي هي وضع نمط البيانات بين قويسين (char)
    int a=1; char c=(char)(a+'0'); // '1' int a=65; char c=(char)a; // 'A' ويمكن استخدام دوال الصنف Charecter لعمل التحويل:
    int REDIX=10; // النظام العشري int a=1; char c=Character.forDigit(a,REDIX); System.out.println(c); // '1' كما يمكن استخدام الدالة toChars
    Character.toChars(48) // '0' Character.toChars(49) // '1' Character.toChars(65) // 'A' Character.toChars(66) // 'B' Character.toChars(127) // 'a' Character.toChars(128) // 'b' قيمة كل محرف ثابتو حسب نظام جدول ASCII يمكنك الاطلاع عليه، وبعمل عمليات الجمع و الطرح يمكن التحويل بين الأرقام و المحارف
     
  17. إجابة Wael Aljamal سؤال في خطأ في اندرويد ستوديو حيث أن التطبيق لا يعمل invalid date string: Unparseable date: "ba`i`gafbgbdGMT+00:00" كانت الإجابة المقبولة   
    المشكلة بسبب لغة الحاسوب وطريقة تنسيق التاريخ و الوقت فيه،
    أرجو التوجه للزاوية اليسرى في الأسفل وظبط تنسيق التاريخ للغة الانكليزية مع ضبط المنطقة الزمنية..
    ثم أعد تشغيل أندرويد استديو
    ضبط لغة الحاسوب للانكليزية يمكن أن يحل المشكلة، تأكد من إعادة التشغيل.
  18. إجابة Wael Aljamal سؤال في ﻻ يمكنني إستخدام sudo cd كانت الإجابة المقبولة   
    بالإضافة لحل شرف الدين، إن كنت تريد استعراض محتوى الملف و تعديله، يمكن فتحه باستخدام محرر nano
    sudo nano /boot/efi كما يمكن كتابة كل من التلي ثم تنفيذ ماتريد:
    sudo su sudo -s بعدهم:
    cd directory..  
  19. إجابة Wael Aljamal سؤال في تحديث npm في نظام windows كانت الإجابة المقبولة   
    أفضل طريقة كالتالي:
    تشغيل PowerShell مع صلاحيات الأدمن Administrator ثم تنفيذ الأوامر التالية:
    Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force npm install -g npm-windows-upgrade npm-windows-upgrade وإن أردت تحديد إصدار معين يمكن تنفيذ التالي:
    npm-windows-upgrade -p -v latest لمعلومات أكثر من الرابط: npm-windows-upgrade
    كما يمكنك تحميل حزمة تبيت node الجديدة التي لها لاحقة msi من الموقع الرسمي وتنصيبها، فهي تعمل على استبدال النسخ القديمة. كما يمكنك التوجه لمسار تثبيت node ومن ثم تنفيذ التثبيت بشكل عادي:
    cd C:\Program Files (x86)\nodejs npm install npm وإن كنت تستخدم الأداة Chocolatey يمكن تحديث كل من node + npm بسهولة كالتالي:
    choco update nodejs choco update npm  
  20. إجابة Wael Aljamal سؤال في تحويل الكود إلى تطبيق هاتف نقال كانت الإجابة المقبولة   
    عليك بناء المشروع، ستلاحظ وجود قائمة build في شريط العنوان، تسمح لك بعمل نسخة APK أو ABB لرفعها على المتجر،
    على كل حال يلزم توقيع التطبيق app signing لعمل مفتاح خاص به.
    أولا لتوقيع التطبيق سيتم عمل مفتاح فيه بيانات يمكنك تعبئتها: لتوقيع التطبيق  app-signing
    ثم يمكنك التوجه لتوثيق أندرويد استديو من الرابط: بناء التطبيق ثم حسب الجدول توجه إلى Build Bundle(s) / APK(s) > Build Bundle(s) تحوي خطوات بناء النسخة للرفع.
  21. إجابة Wael Aljamal سؤال في عكس reverse عناصر القائمة في بايثون كانت الإجابة المقبولة   
    يمكن عكس قائمة عن طريق slice كالتالي:
    myList = myList[::-1] print(myList) إن لم ترد حفظ الناتج، يمكن استخدام الدالة reversed التي تعيد iterator يمكن المرور عليها بحلقة:
    for i in reversed(myList): print(i) وإذا كنت تريد حفظه للدالة reversed يمكن تحويل الناتج لقائمة:
    list(reversed(myList)) كما يمكن استخدام numpy والدالة flip:
    import numpy as np array = [0, 10, 20, 40] list(np.flip(array)) [40, 20, 10, 0] كما يمكن استخدام تابع الترتيب وعمل ترتيب تنازلي.. بتمرير المعامل reverse=True
    myList.sort(reverse=True)  
  22. إجابة Wael Aljamal سؤال في مشكلة تسجيل دخول باستخدام حساب جوجل flutter بعد رفع التطبيق على متجر google paly كانت الإجابة المقبولة   
    انتقلت ل Play App Signing page (Release > Setup > App integrity).
  23. إجابة Wael Aljamal سؤال في واجهتنئ هده المشكلة في Failed to resolve: androidx.navigation:navigation-ui:2.4.0-rc01 <a href="open.dependency.in.project.structure"> كانت الإجابة المقبولة   
    حاولي تحديث أندرويد استديو، وكل لواحقه مثل gradle plugin.
    لملف gradle.properties تأكدي منهم
    android.enableJetifier=true android.useAndroidX=true وتوافق:
    compileSdkVersion 28 /// هذه defaultConfig { ...... minSdkVersion 21 targetSdkVersion 28 // هذه ...... } كما تعديل إصدار المكتبات التالية أو تعديل اسمها لتصبح لوجود بديل أحدث:
    ** android/build.gradle and changed * com.android.tools.build:gradle to version 3.3.0 * com.google.gms:google-services to version 4.2.0 **opened android/app/build.gradle and *changed compileSdkVersion to 28 * replaced android.support.test.runner.AndroidJUnitRunner to androidx.test.runner.AndroidJUnitRunner * replaced com.android.support.test:runner to androidx.test:runner:1.1.0 * replaced com.android.support.test.espresso:espresso-core to androidx.test.espresso:espresso-core:3.1.0 للأسف هكذا مشاكل يوجد العديد من الخطوات التي من الممكن لها حلا المشكلة وهذا يتطلب منك نسخ رسالة الخطأ وتجريب كل الحلول، 
  24. إجابة Wael Aljamal سؤال في [PHP MYSQL jQuery] تغيير محتوى select box option عند اختيار option من قائمة اخرى كانت الإجابة المقبولة   
    var id = $(this).(val); أعتقد أن الخطأ هنا، 
    التصحيح:
    var id = $(this).val();  
    إن لم تعمل أجزاء HTML المحدثة، عليك تعديل الاستعلام ليعيد بيانات، ثم تبنى جزء select بشكل ديناميكي بجافاسكربت:
    PHP ستعيد مصفوفة أي فقط بيانات..
    $result = mysqli_query($con,$sql); while( $row = mysqli_fetch_array($result) ){ $user_id = $row['id']; $user_name = $row['name']; $users_arr[] = array("id" => $user_id, "name" => $user_name); } في استقبال النتيجة، نبني العناصر فا جافاسكربت:
    $.post({ url: 'getUsers_ids.php', data: {depart:deptid}, dataType: 'json', success:function(response){ var len = response.length; $("#sel_user").empty(); for( var i = 0; i<len; i++){ var id = response[i]['id']; var name = response[i]['name']; $("#sel_user").append("<option value='"+id+"'>"+name+"</option>"); } } });  
  25. إجابة Wael Aljamal سؤال في مشكلة في قراءة مسار ضمن شيفرة بايثون “Unicode Error ”unicodeescape" codec can't decode bytes كانت الإجابة المقبولة   
    المشكلة في رمز المسار \ بين الكلمات، حيث أن بايثون تعتبره رمز تحكم escape letter يمكنك استبدال كل \ ب  / 
    open ( "C:/Users/Wael/Desktop/file.py" ) أو وضع حرف r قبل النص المعبر عن المسار:
    open ( r"C:\Users\Wael\Desktop\file.py" ) أو وضع محرفين \\ خلف بعضهما:
    "C:\\Users\Wael\\Desktop\\file.py"  
×
×
  • أضف...