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

عبدالباسط ابراهيم

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

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

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

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

    11

كل منشورات العضو عبدالباسط ابراهيم

  1. يمكنك أن تستخدم لغة البرمجة python في العديد من الوظائف حيث تعتبر لغة برمجة general-purpose ما عليك سوى تحديد المجال الذي تريد العمل فيه مثل من أكثر المجالات المطلوبة ل python هو تطوير تطبيقات الويب أو ال backend من خلال العديد من الإطارات مثل Django أو Flask والعديد من الإطارات الأخرى برامج ال CLI برمجة تطبيقات سطح المكتب من خلال العديد من المكتبات تعتبر أيضاً برمجة الألعاب بلغة python مطلوبة ويمكنك بناء ألعاب قوية من خلال المكتبات Arcade أو PyGame يمكنك استخدامها في ال Web Scraping أيضاً توجد العديد من المجالات الأخرى مثل تعليم الآلة والذكاء الإصطناعي ولكن مجال ال web يعتبر منتشر أكثر وسهل نسبياً
  2. بالطبع يمكنك استخدام '{:,}'.format(n) كما في التعليقات السابقة ولكن هناك صيغة أخرى لدالة format وهي كالتالي value = 1000000 print (format (value, ',d')) # كالتالي f ب d استبدل ال float إذا كان الرقم value = 1000000.30 print (format (value, ',2f')) #2f رقمين فقط بعد العلامة يمكنك القراءة أكثر عن الدالة format من موسوعة حسوب
  3. أولاً تعتبر ال php لغة server-side للتعامل مع قواعد البيانات أما javascript في لغة client-side تعمل في المتصفح للتعامل مع واجهات المستخدم لذلك أما إذا كنت تقصدين تطوير التطبيقات من جهة ال server-side فيجب المقارنة بين php و nodejs حيث أن ال nodejs هي البيئة التي تجعل من javascript تعمل في ال server-side وبالنسبة لسهولة التعلم فليس هناك فرق كبير بين ال php وال javascript فتعتبر اللغتين من اللغات سهلة التعلم وبالنسبة لسهولة تطوير التطبيقات فالأسهل php حيث يوجد دعم كبير وتوفر العديد من المكتبات لجميع المشاكل التي تواجهها كما أن ال php لغة server-side في الأساس وبالأخير يفضل أختيار اللغة التي تخدم أهدافك والتي تفضلها وبالنسبة لسهولة التعلم فليس هناك فرق كبير
  4. يمكنك استخدام ال $bsonSize ويعتبر aggregation operator بداية من Mongo 4.4 سيقوم الكود التالي بإرجاع الحجم لكل مستند db.collection.aggregate([ { $group: { _id: null, max: { $max: { $bsonSize: "$$ROOT" } } }} ]) ال max سيحمل الحجم لكل مستند يمكنك قراءة المزيد من المعلومات عن ال $bsonSize من هنا
  5. نعم هناك فرق في استخدام الكود كما في الطريقة السابقة حيث أن ال "classic" style classes كالتالي class ClassicSpam: pass ال "new" style classes كالتالي class MyClass(object): pass الطريقة الثانية تم إضافتها في الإصدار 2.2 وتتميز بدعمها ل يمكنك استخدام ال property لإدارة الخصائص ال slots لتحديد الخصائص المطلوبة الدالة __new__ لتحديد كيفية إنشاء الكائنات من الاصناف الدالة super() يمكنك القراءة عن هذه الإضافات بتعمق أما في الإصدار الثالث فإنه سواء استخدمت الطريقة السابقة أم لا فإنه يتم استخدام ال"new" style classes مما يعني أن الكود التالي class MyClass(object): pass مكافئ تماماً ل class MyClass(): pass
  6. يمكنك قراءة التعليمات والخطوات التي من المفترض أنك قد تخطيتها وقمت بتنفيذ المطلوب ثم بعد ذلك يمكنك التواصل مع الإدارة لإجراء الإمتحان ولكن أولاً قم بقراءة التعليمات في هذا الرابط
  7. كما وضح محمد في التعليق السابق فإنه يمكنك تخزين الملف على صيغة HDF سواء باستخدام ال h5py أو ال pytables من خلال h5py يمكنك حفظ البيانات في ملف كالتالي import numpy as np import h5py data_to_write = np.random.random(size=(100,20)) # إنشاء مصفوفة #إنشاء ملف with h5py.File('name-of-file.h5', 'w') as hf: hf.create_dataset("name-of-dataset", data=data_to_write) #قراءة ملف with h5py.File('name-of-file.h5', 'r') as hf: data = hf['name-of-dataset'][:] أو من خلال numpy يمكنك استخدام savez_compressed لحفظ البيانات الضخمة في ملف مضغوط وهو يكون على صيغة npz من خلال الدالة numpy.savez_compressed(file, *args, **kwds)
  8. يمكنك أيضاً استخدام hstack وسيكون كالتالي أولاً توليد قيم عشوائية import numpy as np a = np.array([ [1, 2,], [3, 4] ]) x = np.random.rand(a.shape[0], 1) ثانياً إضافة هذه القيم من خلال ال hstack b = np.hstack((a, x))
  9. يتوجد العديد من الطرق والمكتبات التي تستطيع تنفيذ ما تريده من خلالها ومن هذه الإضافات markdown-include حيث يمكنك إنشاء العديد من الملفات ثم إستدعائها في ملف واحد كالتالي تثبيت الإضافة npm install -g markdown-include إنشاء ملف markdown.json لإضافة الإعدادات مثل الملف النهائي والملفات المطلوبة ثم من خلال الأمر التالي يمكنك استدعاء الملفات #include "markdown-file.md" أخيراً يمكنك تنفيذ المطلوب من خلال ال command line من الأمر التالي node_modules/bin/cli.js path/to/markdown.json قم بمراجعة المستودع الخاص بالمكتبة للإطلاع على المزيد من المعلومات
  10. من الطبيعي أن يحدث ما تقوله حيث أنك قمت بتخزين قيمة wantNotification مبدئياً ب No لذلك عند الضغط على الزر أول مرة سيتم تخزين القيمة No في ال AsyncStorage ولكن عند الضغط المرة الثانية سيكون قد تم تغيير القيمة من خلال setWantNotification('YES'); لذلك في المرة الثانية سيتم تخهزين القيمة Yesفي ال AsyncStorage لذلك جرب القيام بالتعديل التالي وسترى أنه يقوم بتخزين القيمة Yes من أول مرة { text: 'OK', onPress: async () => { await storeNotificationAsync("yes"); //لاحظ هذا التعديل await console.log(wantNotification); }, }, ستفهم طريقة تنفيذ الكود بعد التعديل و يمكنك بعد ذلك التعديل على البرنامج كما تريد
  11. لا أعتقد انه يوجد كلاس جاهز لذلك يمكنك توسيط العنصر بالعديد من الطرق وتختلف حسب الكود الذي تستخدمه حيث يمكنك استخدام ال flexbox .flex-container { display: flex; align-items: center; justify-content: center; flex-direction: column; }
  12. ماذا تقصد؟ إذا كنت تقصد عمل ذلك من خلال css أو التصميم فقط فيمكنك تنفيذ ذلك من خلال ال border يمكنك تصميم الأسهم كالتالي <div id="triangle-up"></div> ثم إضافة التنسيقات #triangle-up { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 100px solid red; } والكود السابق يجعل السهم لأعلى ولعمل السهم لأسفل يمكنك استخدام #triangle-down { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-top: 100px solid red; /* bottom بدلاً من top لاحظ */ } وبالنسبة للعداد أو الرقم الوجود بين الأسهم فيمكنك استخدام الجافاسكربت لتنفيذ ذلك كالتالي <h1 class="counter-display">(..)</h1> <button class="counter-minus">-</button> <button class="counter-plus">+</button> <script> let counterDisplayElem = document.querySelector('.counter-display'); let counterMinusElem = document.querySelector('.counter-minus'); let counterPlusElem = document.querySelector('.counter-plus'); let count = 0; updateDisplay(); counterPlusElem.addEventListener("click",()=>{ count++; updateDisplay(); }) ; counterMinusElem.addEventListener("click",()=>{ count--; updateDisplay(); }); function updateDisplay(){ counterDisplayElem.innerHTML = count; }; </script>
  13. من خلال منصات العمل الحر مثل مستقل فبالتأكيد يمكنك العمل بدون مشاكل ولا يشكل العمر عائق في العمل حيث في منصات العمل الحر تنفيذ لعمل على أكمل وجه هو الأولوية أما بالنسبة للشركات فمن الصعب أن تجد وظيفة في هذا العمر ولكن ربما توجد بعض الشركات التي تقبل العمل في هذا العمر وأنا أجد أن محاولة العمل في هذا العمر خطوة جيدة لتكتسب الخبرة مبكراً وما يجب عليك عمله هو التعلم بشكل جيد وكثرة التطبيق
  14. كما شرح عبدالمجيد فإنه يمكنك إضافة المسار الذي تريده من خلال ال sys.path ويمكنك إضافة المسار بداخله ولكن إذا أردت أن يكون البرنامج أن يجد المسار الأب تلقائياً يمكنك استخدام ال os.path.abspath() التي تقوم بإرجاع المسار الأب import os, sys sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) import helpers
  15. كما وضح عبدالمجيد في التعليق السابق فإنه يفضل استخدام ال constructor أو ال componentDidMount بدلاً من استخدام componentWillMount لأن استخدام componentWillMount ربما يظهر بعض المشاكل في تطبيقك حيث ان هذه الدالة تنفذ قبل ال mounting مما يجعل تنفيذ عملية ال render مرة أخرى نتيجة تغيير ال state في هذه الدالة مثلاً غير ممكنة أو سيتم عمل render ولكن سيكون ستكون قبل تحديث المتصفح مما يجعل المستخدم لا يرى التحديثات المعتمدة على ال state لذلك يمكنك استخدام ال constructor عند إنشاء ال state أو عمل binding للدوال ال componentDidMount عند تنفيذ طلب http أو تنفيذ بعض الأكواد التي تعتمد على ال DOM
  16. يمكنك استخدام insert و toArray لتنفيذ المطلوب كالتالي db.subset.insert(db.full_set.find({date:"20120105"}).toArray()) ولكن إذا كان لديك عدد كبير من المستندات يفضل استخدام ال aggregation كما في التعليق السابق حيث تعتبر أسرu من الحل المعتمد على find و insert بشكل كبير
  17. بالإضافة أيضاً إلى إختلاف طريقة عملهما كما تم الشرح في التعليق السابق ولكن عند العمل ب updateOne يمكنك الوصول واستخدام ال update operators مما تجعلك قادر على تنفيذ العديد من التحديثات المتزامنة ويتم تسجيل جميع التحديثات معاً فمثلاً عند القيام بزيادة قيمة حقل في نفس المستند معاً يتم تسجيل الزيادتين بينما إذا استخدمنا ال replaceOne سيتم تسجيل زيادة واحدة
  18. بالإضافة للحلول في التعليق السابق يمكنك أيضاً إضافة السطر التالي في الملف /etc/mongod.conf smallfiles = true ثم قم بعمل restart وسوف تعمل معك sudo service mongod restart
  19. بالإضافة لسرعة تنفيذ العمليات المختلفة والكفاءة العالية في التخزين ل numby عن القوائم في python فإن ال numby توفر عليك بعض الأعمال التي ربما تحتاج لمزيد من العمل لتنفيذها من خلال قوائم python مثل الجمع على طول المحور المطلوب numpy.sum(arr, axis, dtype, out) تحويل البيانات من الملفات إلى مصفوفة مباشرة x = numpy.fromfile(file=open("data"), dtype=float).reshape((100, 100, 100)) وهناك أيضاً العديد من المكتبات التي تعمل مع أو تعتمد على ال numby مثل مكتبات ال visualization
  20. تعتبر ال "use strict" من الإضافات القوية للغة حيث تمنع المطورين من الوقوع في الأخطاء وتعمل أيضاً بكشف الأخطاء ال silent التي لا يمكن إكتشافها فتقوم بمنع الأخطاء التالية تمنع تكرار ال keys في الكائنات var zombie = { eyeLeft : 0, eyeRight: 1, } تمنع تعريف المتغير بدون var وما إلى ذلك Y = 5; تمنع تكرار ال arguments function run(fromWhom, fromWhom){} أيضاً يقوم الوضع strict بتحسين الأداء الخاص بالبرنامج أو الكود مثلاً عن طريق عمل throw لل silent errors أيضاً يقوم بإصلاح بعض الأخطاء التي تمنع محرك v8 من عمل optimization
  21. يجب أن تعرف أولاً أن res.send تتكون من res.write res.setHeaders res.end وتقوم send تحدد content type تلقائياً على حسب البيانات المرسلة بينما end لن تقوم بتحديد content type وأيضاً send تقوم بتحديد ال ETag وهو معرف لل http response ويساعد في ال cache وحفظ ال bandwidth هناك بعض الإستخدامات التي يفضل استخدام write ,end معاً بدلاً من send في حالة أن مثلاً البيانات المرسلة كبيرة أو عند محاولة تكرار عملية send فلن تنجح بينما ستنجح من خلال write ,end معاً
  22. بالإضافة للحلول السابقة فإذا كنت تريد تمرير عدة متغيرات يمكنك وضع هذه المتغيرات في ملف آخر منفصل ويكون خاص بالمتغيرات مثلاً ثم إستدعائه قبل الملف الرئيسي ننشأ ملف مثلاً var.js يحتوي على المتغيرات التي نريدها في الملف الرئيسي ثم نقوم بتنفيذ ال scripts كالتالي $ mongo variables.js main.js
  23. يمكنك عمل ذلك من خلال العديد من الطرق ولكل طريقة أولوية فمثلاً استخدام ال prefix يكون لها الأولوية الأعلى ولكن ربما تريد وضع إعدادت من خلال متغيرات البيئة كالتالي NPM_CONFIG_PREFIX=your/path أو من خلال ملف npmrc من خلال هذا المسار path/to/npm/itself/npmrc ويمكنك الـاكد من الإعدادات لديك من خلال الأمر npm config list
  24. كما تم الشرح في التعليقات السابقة فإنه المعاملان or و and لا يقوما بإرجاع القيمة ل true أو false إنما يتم إرجاع القيمة من ال expression التي يجب تنفيذها كما تم الشرح بالأعلى وذلك يكون مفيداً في حالات مثل إرجاع قيمة إفتراضية ولكن في حالة أنك تريد تنفيذ المطلوب من برنامجك يمكنك استخدام ()bool كالتالي return bool(len(args) and max(args)-min(args))
  25. توجد عدة طرق غير ال str ولكن في حالة أنك تستخدم Python 3.6 أو أعلى يمكنك استخدام ال f-strings كالتالي age= 18 print(f'I have {age} years old') ويعتبر ال f-strings من الإضافات القوية حيث يمكنك تنفيذ أي كود بداخل الأقواس كالتالي age= 18 print(f'I have {age + 5} years old') يمكنك أيضاً استدعاء دالة من داخل الأقواس def add(x, y): return x + y print(f'Sum(10,20) = {add(10, 20)}')
×
×
  • أضف...