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

محمد أبو عواد

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

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

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

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

    95

كل منشورات العضو محمد أبو عواد

  1. يمكنك فعل ذلك من خلال استخدام itertools كالتالي from itertools import chain dataframe['features'] = dataframe.apply(lambda x: ''.join([*chain.from_iterable((v, f' <{i}> ') for i, v in enumerate(x))][:-1]), axis=1) print(dataframe) سوف يكون الناتج كالتالي col_1 col_2 col_3 features 0 a name_a job_a a <0> name_a <1> job_a 1 b name_b job_b b <0> name_b <1> job_b 2 c name_c job_c c <0> name_c <1> job_c 3 d name_d job_d d <0> name_d <1> job_d
  2. بالنسبة dataframe، يمكنك استخدام أي طريقة من الطرق التالية len(df.index) df.shape[0] df[df.columns[0]].count() يمكن استخدام len() في Python للحصول على عدد العناصر في القائمة. لذلك ، للحصول على عدد صفوف DataFrame ، ما عليك سوى استخدام len (df). بدلا من ذلك ، يمكنك الوصول إلى جميع الصفوف وجميع الأعمدة باستخدام df.index و df.columns على التوالي ، سيعطيك len (df.columns) عدد الأعمدة. أو يمكنك استخدام df.shape الذي يرجع عدد الصفوف والأعمدة معا كمجموعة. إذا كنت تريد الوصول إلى عدد الصفوف ، فاستخدم df.shape [0] فقط. لعدد الأعمدة استخدم فقط: df.shape [1]
  3. يمكنك استخدام itertools.chain حيث يعتبر أسرع من تكرار كل قائمة وإلحاق العناصر واحدة تلو الأخرى . كما أنها تستهلك ذاكرة أقل من تحويل كل مجموعة استعلام إلى قائمة قبل التسلسل. from itertools import chain result_list = list(chain(page_list, post_list)) من الممكن الآن فرز القائمة الناتجة على سبيل المثال حسب التاريخ باستخدام الدالة Sorted , تقبل الدالة Sorted () generator وترجع قائمة كالتالي result_list = sorted( chain(page_list, post_list), key=lambda instance: instance.date_created) إذا كنت تستخدم Python 2.4 أو إصدارًا أحدث ، فيمكنك استخدام Attrgetter بدلاً من lambda ولكن لا يوجد فرق كبير بينهما from operator import attrgetter result_list = sorted( chain(page_list, article_list, post_list), key=attrgetter('date_created'))
  4. يمكنك استخدام كائنات Q لهذا الشيء, يمكن نفيها باستخدام عامل التشغيل ~ ودمجها تمام from django.db.models import Q object_list = QuerySet.filter(x=True, ~Q(y=10)) أو هناك طريقة أخرى وهي استخدام filter بدلا من exclude كالتالي results = Model.objects.exclude(x=True).filter(y=10)
  5. لا يمكن تطبيق او استخدام not لاختبار ما إذا كان x تساوي None في NumPy ، لأن معظم مصفوفات NumPy ليس لها قيمة حقيقة ، ولذلك لا يمكن تطبيقها عليها. إذا كنت ترغب في اختبار ما إذا كان الكائن None ، فإن الطريقة الأكثر عمومية وموثوقية هي استخدام is كالتالي: >>> import numpy as np >>> def check(x): ... if x is None: print(True) is لا تعتمد على الأشياء التي لها قيمة حقيقية ، لذلك فهي تعمل مع مصفوفات NumPy.
  6. يمكنك إنشاء view بنوع مختلف ثم نسخه كالتالي import numpy as np x = np.arange(10, dtype='int32') y = x.view('float32') y[:] = x print(y) سوف تحصل على الآتي array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.], dtype=float32) لإظهار أن التحويل كان في مكانه ، لاحظ أن النسخ من x إلى y تم تغيير x: print(x) سوف يكون الناتج كالآتي array([0, 1065353216, 1073741824, 1077936128, 1082130432, 1084227584, 1086324736, 1088421888, 1090519040, 1091567616]) اذا تم التحويل في نفس المكان
  7. اذا كنت تفهم وظيفة الدالة for فيمكنك فهم وظيفة foreach لأنهما متقاربتان من بعضهما البعض ولديهما نفس الهدف, وهو القيام بحلقة تكرار على مصفوفة , لنحاول شرحها باستخدام كود, لاحظ الكود التالي const myArray = ['a', 'b', 'c']; myArray.forEach(element => console.log(element)); لدينا مصفوفة وتحتوي على ثلاثة عناصر كما تلاحظ, أريد ان أطبع هذه العناصر الثلاثة, يمكننا فعل ذلك عن طريق عمل حلقة تكرار على المصفوفة هذه, يمكننا استخدام for او foreach , استخدمت في هذا الكود foreach, فكرة عملها بسيطة جدا, تقوم الدالة باستقبال عنصر واحد في كل حلقة, هذا العنصر بالتأكيد ينتمي للمصفوفة التي اجريت عليها حلقة التكرار, في البداية تستقبل العنصر الاول, ثم الثاني , وهكذا الى أن تصل للعنصر الأخير, يتم استقبال العنصر وتخزينه في المتغير element, وبالطبع يمكنك تسميته كما تريد فمثلا سوف أسميه data myArray.forEach(data => console.log(data)); بعد تخزين العنصر في المتغير data نستطيع أن نجري عليه العمليات التي نريد, في المثال قمت بطباعته فقط
  8. يمكنك تجربة هذا الكود // pages/api/webhooks/github.js const { exec } = require("child_process"); const crypto = require("crypto"); // Handle GitHub Webhooks export default function handler(req, res) { try { console.log("Incoming Request"); if (req.method !== 'POST') { res.send(404); return; } let sig = "sha256=" + crypto .createHmac("sha256", process.env.WEBHOOKS_SECRET) .update(JSON.stringify(req.body)) .digest("hex"); if ( req.headers["x-hub-signature-256"] === sig && req.body?.ref === "refs/heads/main" && process.env.REPO_PATH ) { exec( "cd " + process.env.REPO_PATH + " && git pull && npm install && npm run build && pm2 restart app" ); console.log("GitHub Webhook ran successfully"); res.end(); return; } console.log("GitHub Webhook failed"); res.end(); return; } catch (e) { console.log(e); } }; أو يمكنك ذلك من خلال إنشاء تطبيق آخر على نفس الخادم , يمكنك استخدام Express , ثم استخدم نقطة نهاية لذلك مثل github webhook ومن هناك تستطيع تشغيل البرنامج النصي للنشر.
  9. في هذه الحالة تريد ان تضع عناصر <Tab /> بداخل العنصر <Link /> كالتالي <Tabs> <Link href="/timer" passHref> <Tab label="Timer" /> </Link> <Link href="/" passHref> <Tab label="Home" /> </Link> </Tabs>
  10. تحتاج إلى تثبيت حزم npm المطلوبة, يمكنك فعل ذلك باستخدم npm كالتالي npm i -D babel-eslint eslint-config-airbnb eslint eslint-plugin-jsx-a11y eslint-plugin-import eslint-plugin-react eslint-plugin-react-hooks أو باستخدام Yarn كالتالي yarn add -D babel-eslint eslint-config-airbnb eslint eslint-plugin-jsx-a11y eslint-plugin-import eslint-plugin-react eslint-plugin-react-hooks الأوامر التي بالاعلى تقوم بتثبيت الحزم كتلة واحدة, يمكنك أيضا تثبيت الحزم بشكل فردي
  11. يجب أن يكون لديك صفحة محددة في مجلد الصفحات إذا كنت لا تريد أن يقوم Next.js بإعادة التوجيه إلى 404, أنشئ ملف باسم dynamic.js في مجلد الصفحات ثم يمكنك استخدام الكود كالتالي import React from 'react' import { useRouter } from 'next/router' const Dynamic = () => { const router = useRouter(); const { dynamic } = router.query; return ( <div> My dynamic page slug: {dynamic} </div> ) } export default Dynamic ويمكنك الارتباط بها على النحو التالي <Link href="/[dynamic]" as="/dynamic-page-slug"> <a>Link to my Dynamic Page</a> </Link>
  12. عادة ما تكون getInitialProps دالة غير متزامنة وهي جيدة للعمليات غير المتزامنة على الخادم ثم تقوم بتمرير البيانات إلى الصفحة على شكل Props. يمكن تشغيله على الخادم والمتصفح إذا كنت تستخدم Link على سبيل المثال. بشكل عام يمكنك استخدام getInitialProps لجلب البيانات عندما يعمل المكون الخاص بك كصفحة ، وتريد تقديم البيانات Props, إذا كنت تستخدم Next.js 9.3 أو أحدث ، يوصى باستخدام getStaticProps أو getServerSideProps بدلا من getInitialProps.
  13. يحتوي مشروع Next.js على مجلد public, قم بوضع الملفات مثل favicon.png و robots.txt بداخله , هذا كل ما تحتاجه, وأيضا يمكنك وضع فيها ملفات مثل الصور وملفات css والخطوط وغيرها فيكون شكل بنية المشروع كالآتي /public /static /images /css /fonts robots.txt manifest.json
  14. يحصل هذا الخطأ لأنك تستخدم العملية الخاطئة, يجب أن تسخدم الدوت " . " لهذه العملية بينما عملية * تقوم بفعل أمر آخر, إذا كانت X و y من النوع numpy.matrix ، فيمكن استخدام علامة النجمة كضرب مصفوفة ولكن حاول الابتعاد عن numpy.matrix لأنها تعقد الامور بدل من تبسيطها, حاول تنفيذ الامر كالتالي x.y
  15. يبدو أنك نسيت ان تكتبت مسار الملف ProjectController بشكل كامل, يجب ان يكون مسار الملف على هذا الشكل App\Http\Controllers\ProjectController; فيكون شكل المسار كالآتي Route::نوع الطلب('عنوان المسار', [App\Http\Controllers\ProjectController::class,'اسم الدالة']); أو يمكنك استدعاء الملف في أعلى ملف web.php كالآتي use App\Http\Controllers\ProjectController; ثم عند كتابة المسار يمكنك كتابته كالآتي Route::نوع الطلب('عنوان المسار', [ProjectController::class,'اسم الدالة']); ^^^^^^^^^^^^^^^^^^^^^^^^^ اذا كان نوع المسار resource يمكنك كتابته كالتالي Route::resource('اسم المسار', projectController::class);
  16. يمكنك استخدام equals بدلا من == كالتالي public static void main(String []args){ String string1 = new String("hello"); String string2 = new String("hello"); System.out.println(string1.equals(string2)); } لنفترض لدينا المتغيرين string1 , string2 , سوف نقارن المتغير الأول مع المتغير الثاني باستخدام equals, اذا كان النصين متشابهين تماما حتى في شكل الحروف صغيرة أو كبيرة فسوف تقوم بارجاع true , ما دون ذلك سوف ترجع false, في المثال المرفق في الأعلى سوف تكون النتيجة true, ولكن ماذا لو غيرنا الحرف الاول من كلمة hello في المتغير الأول كالتالي public static void main(String []args){ String string1 = new String("Hello"); String string2 = new String("hello"); System.out.println(string1.equals(string2)); } لاحظ يوجد اختلاف في شكل الحروف واذا استخدمنا equals سوف تقوم بارجاع false أي أنهما ليس متساويين, اذا أردتي اهمال حالة الاحرف يمكنك استخدام equalsIgnoreCase كالتالي public static void main(String []args){ String string1 = new String("Hello"); String string2 = new String("hello"); System.out.println(string1.equalsIgnoreCase(string2)); } } سوف تهمل حالة الأحرف وترجع true
  17. سوف يتم خلال المسار تعلم كيفية التعامل مع github وهو موقع يسمح لنا بإنشاء مستودعات وحفظ مشاريعنا فيها, انه سهل لا تقلق, من خلال هذه المستودعات سوف يتم النظر ومراجعة المشاريع التي قمت بها, اما بالنسبة للمعلومات لن تحتاج الى حفظها حيث انك مع الممارسة الكثيرة سوف تفهمها جديا وسوف تجد نفسك حفظتها أيضا دون اي مجهود اضافي لحفظها, فقط تحتاج الى المزيد من الممارسة وكتابة الاكواد وفهمها جيدا, أما بالنسبة للمشاعر التي تشعر بها أثناء التعلم لا تقلق منها , نم الطبيعي ان تشعر أنك خائف وأنك لم تفهم الكود بعد, لأنه علم جديد بالنسبة لك ولم تمارسه او تطبقه كثيرا بعد, ولكن بعد مرور فترة من الزمن وممارسته جيدا سوف تجد نفسك انك فهمت الكود وتردي التطوير عليه , لأنك في البداية أرجو منك ان تتمتع بقليل من الصبر وأن تجتهد في فهم الاكواد
  18. لنفترض لدينا المصفوفة التالية int arr[] = {1,2,3,4}; بداية لنطبع قيمة المتغير الأول والثالث System.out.print( arr[0] ); => 1 System.out.println( arr[2] ); => 3 لاستبدال العنصر الاول بالثالث نحتاج الى تعريف متغير نقوم بتخزين قيمة المتغير الاول فيه كالتالي int temp=arr[0]; ثم نقوم بتعديل قيمة العنصر الأول ونجعله يساوي قيمة العنصر الثالث كالتالي arr[0]=arr[2]; ثم نقوم بتعديل قيمة العنصر الثالث ونجعله يساوي قيمة المتغير temp الذي عرفناه وخزنا فيه قيمة العنصر الأول كالتالي arr[2]=temp; الآن لنحاول طباعة العنصرين الاول والثالث بعد الاستبدال System.out.print( arr[0] ); => 3 System.out.print( arr[2] ); => 1 شكل الكود كاملا كالتالي public static void main(String []args){ int arr[] = {1,2,3,4}; System.out.print( arr[0] ); System.out.println( arr[2] ); int temp=arr[0]; arr[0]=arr[2]; arr[2]=temp; System.out.print( arr[0] ); System.out.print( arr[2] ); }
  19. أفترض أنك أردت العمودين 1 و 3, لتحديد عدة أعمدة مرة واحدة ، استخدم X = data[:, [1, 3]] أما لتحديد واحد في كل مرة استخدم x, y = data[:, 1], data[:, 3] يمكنك فعل ذلك أيضا باستخدام الأسماء كالتالي data[:, ['Column Name1','Column Name2']] يمكنك الحصول على الأسماء من خلال data.dtype.names
  20. اذا كنت تخطط لايجاد وظيفة أو عمل حر فقط من خلال دورة علوم الحاسوب فيؤسفني اخبارك بأن فرص حدوث ذلك قليلة جدا, لأن محتويات دورة علوم الحاسوب ما هي الا أساسيات لفهم الحاسوب وكيفية التعامل معه وفهم انظمة التشغيل وطريقة عملها وتوضيح الفروقات بينها وأسياسيات لتمهد لك الطريق لدخول عالم البرمجة والذي ترتكز عليه الوظيفة او العمل الحر, اذا أردت بالفعل الحصول على فرص العمل الحر أو وظيفة فانك تحتاج الى تعلم دورات مثل دورة تطوير واجهات مستخدم, أو دورة تطوير التطبيقات باستخدام لغة جافاسكربت وغيرها من الدورات الموجودة
  21. لنفترض لدينا الجدول users وأردتي اضافة حقل اسمه type مثلا وتريدين ايضا اضافته بعد حقل ما فيمكنك استخدام التابع after وبداخل التابع after تحددين اسم الحقل الذي تريدين اضافة الحقل الجديد بعده, فمثلا سوف أضيف الحقل الجديد الذي اسمه type بعد الحقل الذي اسمه remember_token, فيكون شكل الكود كالتالي $table->string('type')->after('remember_token'); اذا كنتي تريدين اضافته اول حقل فيمكنك من خلال استخدام التابع first كالتالي $table->string('type')->first();
  22. يمكنك فعل ذلك عن طريق تمرير مصفوفة من المعاملات للمسار, فمثلا على سبيل المثال لو أردت استخدام العنصر a, فيمكنك فعل ذلك كالتالي <a href="{{route('register',['username'=>'mohammed','age'=>'30']) }}">register</a> أو يمكنك فعل ذلك باستخدام form كالتالي <form action="{{route('register')}}" method="GET"> <input type="text" name="username"> </form> عند عمل submit لهذا الفورم سوف يتم ارسال المتغيرات عن طريق url كما في المثال الذي أرفقته
  23. لفعل ذلك تحتاج تثبيت بعض الوحدات مثل console-stamp و log-timestamp, يمكنك تثبيت الوحدة console-stamp من خلال الأمر التالي npm install console-stamp --save ثم تحتاج لإضافة السطر التالي في أعلى الملف app.js require('console-stamp')(console, '[HH:MM:ss.l]'); سوف يظهر تنسيق الوقت بتنسيق UTC ولكن تستطيع تغييره كالتالي express.logger.format('mydate', function() { var df = require('console-stamp/node_modules/dateformat'); return df(new Date(), 'HH:MM:ss.l'); }); app.use(express.logger('[:mydate] :method :url :status :res[content-length] - :remote-addr - :response-time ms')); بعد ذلك سوف يظهر الوقت بجانب كل عملية طباعة, بالنسبة للوحدة log-timestamp تستطيع تثبيتها من خلال الامر التالي npm install log-timestamp ويمكنك استخدامها بشكل مباشر
×
×
  • أضف...