-
المساهمات
4894 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
11
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو عبدالباسط ابراهيم
-
دالة isnan ( وليس isNaN ) في لغة السي بلس بلس هي دالة تستخدم لفحص ما إذا كان القيمة الممررة إليها هي عدد أو لا. وتعيد الدالة قيمة منطقية (true أو false) تشير إلى ما إذا كانت القيمة عددًا أو لا. لتنفيذ دالة isNaN، يمكن استخدام الدالة std::isnan التي تأتي مع مكتبة cmath في لغة السي بلس بلس. ويمكن استخدام هذه الدالة للتحقق مما إذا كانت القيمة الممررة إليها هي عدد أو لا. وهنا مثال على استخدام دالة isNaN في لغة السي بلس بلس: #include <iostream> #include <cmath> int main() { double x = 5.0; double y = std::sqrt(-1.0); if (std::isnan(x)) { std::cout << "x is not a number" << std::endl; } else { std::cout << "x is a number" << std::endl; } if (std::isnan(y)) { std::cout << "y is not a number" << std::endl; } else { std::cout << "y is a number" << std::endl; } return 0; } هذا المثال يستخدم دالة std::isnan للتحقق مما إذا كانت قيمتي x و y هما عدد أم لا. تم تعيين x إلى 5.0 و y إلى جذر سالب واحد. تُطبع النتيجة لكل قيمة باستخدام std::cout. في هذا المثال، ستخرج النتيجة "x is a number" لأن x هو عدد. وستخرج النتيجة "y is not a number" لأن y ليست عددًا (جذر سالب واحد).
-
أولاً أود أن أهنئك على اجتياز دورة علوم الحاسوب وتعلمك الأساسيات في الجافاسكريبت. بشكل عام، الاختيار بين استمرار تعلم الجافاسكريبت والتركيز على الأساسيات أو التحول إلى لغة أخرى مثل بايثون أو ++C يعتمد على أهدافك واهتماماتك الشخصية وأيضاً الاحتياجات في دراستك. إذا كنت تود تطوير مهاراتك في مجال تطوير الواجهات الأمامية (Front-end Development) وإنشاء مواقع الويب، فقد يكون من المفيد أن تستمر في تعلم الجافاسكريبت وتتعلم المزيد عن تقنيات الواجهات الأمامية مثل HTML وCSS و React وAngular و Vue.js وغيرها. ويمكن أن تكون تلك الخبرات مفيدة في مسارك المهني المستقبلي إذا كنت تريد العمل في مجال تطوير الويب. أما إذا كنت ترغب في التركيز على تطوير البرمجيات والأنظمة، فقد يكون من المفيد التحول إلى لغة أخرى مثل بايثون أو ++C، حيث يمكن أن تستخدم تلك اللغات في تطوير البرمجيات وتنفيذ الخوارزميات والبرامج الحاسوبية المتقدمة. في النهاية، يجب عليك اختيار المسار الذي يناسب أهدافك وميولك الشخصية والتركيز على تعلم المهارات التي ستفيدك في مسارك المهني المستقبلي. ويمكنك دائماً توسيع مجالات اهتمامك في وقت لاحق في مسيرتك المهنية.
-
لا يمكن التنبؤ بشكل دقيق بأي عملة رقمية ستنجح وتكون جيدة للاستثمار فيها، ولكن هناك بعض العوامل التي يمكن النظر إليها لتحديد مدى جودة العملات الرقمية ومشروعيتها، وهي: الفريق المطور: يجب أن يكون الفريق المطور خبيرًا في التقنيات المستخدمة في العملة الرقمية ويجب أن يكون لديه خبرة كافية في تطوير البرمجيات والتعامل مع السوق. الرؤية والهدف: يجب أن يكون للعملة الرقمية هدف ورؤية واضحة وملموسة وتحل مشكلة أو تقدم حلًا جديدًا لمشكلة موجودة في السوق. التكنولوجيا: يجب أن تكون التقنية التي تستخدمها العملة الرقمية مبتكرة وفعالة وآمنة. الشراكات: يجب أن يكون للعملة الرقمية شراكات مع شركات كبيرة وموثوقة في السوق، وذلك لزيادة الثقة في العملة الرقمية وتحقيق التبادلات التجارية. الاعتمادية: يجب أن يكون للعملة الرقمية شبكة اعتمادية وموثوقة وقادرة على التعامل مع حجم البيانات الكبيرة والمعاملات السريعة. وهناك العديد من المصادر الموثوقة التي يمكن الاستفادة منها للحصول على معلومات حول العملات الرقمية، ومن بين هذه المصادر: CoinMarketCap: هو موقع يقدم معلومات حول العملات الرقمية وأسعارها وحجم التداول ومعلومات أخرى مهمة. Coindesk: هو موقع إخباري متخصص في أخبار العملات الرقمية وتحليلات السوق. CryptoSlate: هو موقع إخباري متخصص في أخبار العملات الرقمية وتقارير السوق ومعلومات أخرى مفيدة. Cryptonews: هو موقع إخباري متخصص في أخبار العملات الرقمية وتحليلات السوق ومعلومات أخرى مهمة. Coin Telegraph: هو موقع إخباري متخصص في أخبار العملات الرقمية وتحليلات السوق ومعلومات أخرى مهمة. بالإضافة إلى المصادر المذكورة أعلاه، يمكن الاستفادة من المنتديات والمجموعات الخاصة بالعملات الرقمية على مواقع التواصل الاجتماعي، حيث يمكن الحصول على آراء وتوصيات المستثمرين وخبراء السوق. ومع ذلك، يجب الانتباه إلى أنه يجب التحقق من مصداقية المصادر وتأكيد المعلومات المتاحة قبل اتخاذ أي قرارات استثمارية.
-
هناك العديد من المواقع التي توفر تمارين ومسابقات لتحسين مهارات البرمجة . فيما يلي بعض المواقع التي يمكنك استخدامها لتطوير مهاراتك: HackerRank LeetCode CodeWars Project Euler CheckiO CodingBat هذه المواقع توفر مختلف المستويات من التمارين، بدءًا من المستوى المبتدئ وحتى المستوى المتقدم، وتشمل مجموعة متنوعة من الموضوعات مثل العمليات الحسابية والسلاسل والقوائم والصفوف وأكثر من ذلك. هناك العديد من الطرق الأخرى التي يمكن استخدامها لتطوير مهارات البرمجة : حل مشاكل وأسئلة من المواقع الأخرى الانضمام إلى مجتمعات البرمجة على الإنترنت والمشاركة في منتديات النقاش والمسابقات. تطوير تطبيقات ومشاريع بسيطة بنفسك، مثل إنشاء صفحة ويب بسيطة أو تطبيق للأجهزة المحمولة.
- 6 اجابة
-
- 1
-
تعتمد كيفية وضع attribution عند استخدام محتوى مثل الخطوط والأيقونات والصور التي تستخدم license على نوع الترخيص الذي يتم تطبيقه على المحتوى. عادةً ما تتطلب التراخيص التي تتطلب attribution الإشارة إلى اسم المؤلف أو المبدع وعنوان العمل ورابط إلى موقع الويب الذي تم الحصول منه المحتوى. فيما يلي بعض الأمثلة على كيفية وضع attribution عند استخدام محتوى مختلف: بالنسبة للخطوط، يمكنك الإشارة إلى اسم الخط والمؤلف ورابط إلى موقع الويب الذي تم الحصول منه الخط. على سبيل المثال، يمكنك الإشارة إلى خط Roboto على النحو التالي: Font-family: Roboto, sans-serif; من المهم ملاحظة أنه من الممكن أن تتطلب بعض التراخيص وضع attribution بطريقة معينة. في هذه الحالات، من المهم اتباع تعليمات الترخيص بعناية. لا تحتاج إلى وضع attribution معين عند استخدام jQuery. jQuery هو مكتبة JavaScript مجانية ومفتوحة المصدر متاح تحت رخصة MIT. تسمح لك رخصة MIT باستخدام jQuery دون الحاجة إلى وضع attribution أو تغيير شروط الترخيص.
-
نعم، من الطبيعي أن يشعر الأشخاص بالنسيان أو الصعوبة في استرجاع المعلومات التي تم تعلمها بعد فترة من الزمن، خاصة إذا لم يتم استخدامها بشكل منتظم في العمل العملي أو التدريب. ومن أجل تجنب هذا الشعور، يمكن اتباع بعض الإجراءات البسيطة، مثل: الممارسة: يجب القيام بالممارسة الدائمة والتدريب المنتظم على المفاهيم والمهارات المكتسبة، وذلك من خلال حل التحديات البرمجية والمشاركة في مشاريع عملية. الاستراتيجيات الذهنية: يمكن استخدام بعض الاستراتيجيات الذهنية مثل التكرار والمراجعة المنتظمة للمعلومات، وذلك من خلال إعادة قراءة المفاهيم والمهارات والتطبيقات السابقة بشكل منتظم. إنشاء روابط: يمكن تعزيز استرجاع المعلومات عن طريق إنشاء روابط بين المفاهيم المختلفة وممارسة توضيح الصلة بين الأفكار المختلفة. الاستخدام العملي: يمكن تحسين الاسترجاع والاحتفاظ بالمعلومات عن طريق استخدامها في العمل العملي، حيث يساعد ذلك على ربط المفاهيم بسياقات حقيقية وزيادة الاستمرارية في تذكر المعلومات. ويفضل الإطلاع على الإجابات التالية
-
يمكنك تثبيت بايثون على ماك عبر (Homebrew) كالتالي: تأكد من تثبيت هوم برو على جهازك. يمكنك تثبيته عبر: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" بعد تثبيت هوم برو، استخدم الأمر التالي لتثبيت بايثون: `brew install python` هذا سيقوم بتحميل وتثبيت آخر إصدار من بايثون عبر هوم برو. يمكنك تحديث بايثون بإصدار جديد عبر: `brew upgrade python` للتحقق من إصدار بايثون المثبت استخدم: `python --version`
- 3 اجابة
-
- 1
-
أعتقد أنك تتحدث عن ال list و ال tuples في لغة البرمجة python و لتوضيح الفرق بين الصفوف والقوائم في Python، يمكننا الاستعانة بالأمثلة التالية: المرونة: تعريف الصفوف والقوائم: my_tuple = (1, 2, 3) my_list = [1, 2, 3] عند محاولة تغيير القيمة الثانية في my_tuple، ستحصل على خطأ TypeError حيث لا يمكن تعديل الصفوف بعد تعريفها: my_tuple[1] = 4 # TypeError: 'tuple' object does not support item assignment بينما يمكن تعديل العناصر في my_list بحرية الأداء: يمكن قياس الوقت المستغرق للوصول إلى عنصر محدد في الصف والقائمة باستخدام وظيفة timeit() المدمجة في Python: و ستظهر النتائج أن الوصول إلى العنصر الأول في الصف أسرع بشكل ملحوظ من الوصول إلى العنصر الأول في القائمة: الاستخدامات: تعريف الصفوف والقوائم يمكن استخدام الصفوف لتمثيل الأشياء التي لا يجب تعديلها مثل الأسماء الكاملة والأعمار: # تمثيل معلومات شخص باستخدام الصف person = ("John", "Doe", 25) ويمكن استخدام القوائم لتمثيل الأشياء التي يمكن تعديلها مثل الأرقام: # قائمة الأرقام numbers = [1, 2, 3, 4, 5] بشكل عام، يجب استخدام الصفوف في الحالات التي لا يجب تغيير البيانات، ويجب استخدام القوائم في الحالات التي يمكن تعديل البيانات.
-
كيف تحسب المدة الزمنية المفترض أن تقضيها لإنهاء الدورة بدون ذكر العوامل التالية هل ستقوم بدراسة الدورة فقط بدون التطبيق ؟ هل ستقوم بالتوسع والتعمق في المفاهيم والمواضيع المختلفة ؟ من خلال موسوعة حسوب والتوثيقات الرسمية للمكتبات واللغات ومن خلال قسم الأسئلة والأجوبة؟ هل تضمن أنك ستفهم الشرح بالكمل من أول مرة بدون أي عقبات؟ هل ستقوم ببناء تطبيقات مختلفة على الشرح الموجود في الدورة ؟ هل ستقوم بتخطي بعض الشرح ؟ هل ستقوم بالتعلم يومياً بدون إنقطاع وكم ساعة باليوم العديد من العوامل المختلفة ولا يمكن لأحد تحديد فترة زمنية لذلك يجب عليك التركيز على الإستفادة بأكبر قدر ممكن من الدورة بجميع الجوانب وتم شرح كيفية الإستفادة من الدورات في الإجابات التالية
-
من الطبيعي أن يستغرق الأمر وقتًا طويلاً للتعلم، خاصة في المراحل الأولى. كلما تدربت أكثر، كلما أصبح الأمر أسهل. استمر في المحاولة فيما يلي بعض النصائح التي قد تساعدك على تعلم جافا سكريبت بشكل أسرع: قسّم المشكلات الكبيرة إلى مشاكل أصغر وأكثر قابلية للإدارة. ابحث عن أمثلة على الكود على الإنترنت. اسأل الأصدقاء أو الزملاء أو أعضاء المنتديات للحصول على المساعدة. لا تيأس! تعلم البرمجة يتطلب وقتًا وجهدًا، لكن الأمر يستحق ذلك في النهاية. وأنصحك بشدة قراءة الإجابات التالية ستفيدك بلا شك
- 3 اجابة
-
- 1
-
بالنسبة للسؤال " هل يجب علي تعلم تصميم واجهات الاستخدام كمطور شامل Full stack developer؟ " بالطبع لا يجب عليك تعلم UI / UX حيث من المفترض أن يأتي إليك التصميم جاهزة للتكويد ولكن قد يجد مطورو مطور Full stack أنه من المفيد تعلم مبادئ تصميم UI / UX حيث يمكن أن تساعدهم على فهم تجربة المستخدم وإنشاء واجهات أكثر سهولة في الاستخدام. ومع ذلك ، فإن الأمر متروك في النهاية للمطور ليقرر ما إذا كان يريد متابعة هذه المهارة. وستجد هذه المهارة مفيدة بالنسبة لك بشكل كبير عند العمل ك freelancing حيث هناك بعض العملاء تحتاج لموقع ولا تهتم بتوفير تصميم معين للمطور بل تطلب كل شيئ من المطور من التصميم للبرمجة لذلك تعتبر هذه المهارة مفيدة بالنسبة لك
-
هل يمكنك توضيح طريقة التحميل وما المشكلة بالضبط التي تعوق عملية التثبيت بعد كتابة ال password ؟ هناك عدة أسباب لعدم تحميل Python 3 في Kali Linux. فيما يلي بعض النصائح التي قد تساعدك في حل المشكلة: تأكد من أن إصدار Python 3 مثبت بالفعل. يمكنك التحقق من ذلك عن طريق فتح موجه الأوامر وكتابة الأمر التالي: python3 --version إذا لم يتم عرض إصدار Python 3، فيمكنك تثبيته عن طريق فتح موجه الأوامر وكتابة الأمر التالي: sudo apt-get install python3 تأكد من أن متغير البيئة PATH يحتوي على موقع Python 3. يمكنك التحقق من ذلك عن طريق فتح ملف .bashrc في محرر النصوص وإضافة السطر التالي إلى أسفل الملف: export PATH=$PATH/usr/bin ثم، أغلق محرر النصوص وأعيد تشغيل جهاز الكمبيوتر الخاص بك. حاول إعادة تشغيل جهاز الكمبيوتر الخاص بك. في بعض الأحيان يمكن أن يساعد إعادة تشغيل جهاز الكمبيوتر الخاص بك في حل مشاكل تحميل Python 3.
-
الرمز الذي قدمته يبدو أنه يحاول ضغط ملف فيديو قبل تحميله إلى الخادم. ومع ذلك، هناك مشكلة في التعليمات البرمجية في فئة Compressvedio. لا تُرجع طريقة doInBackground() مسار ملف الفيديو المضغوط. هذا يعني أن طريقة onPostExecute() لن تتمكن من الحصول على ملف الفيديو المضغوط وتسجيل حجمه. لإصلاح هذه المشكلة، تحتاج إلى تعديل طريقة doInBackground() لإرجاع مسار ملف الفيديو المضغوط. يمكنك القيام بذلك عن طريق إضافة التعليمات البرمجية التالية إلى الطريقة: String vediopath = SiliCompressor.with(uploadved.this).compressVideo(uritoup, strings[2]); return vediopath; بمجرد إجراء هذه التغييرات، يجب أن يكون الرمز قادرًا على ضغط ملف الفيديو وتسجيل حجمه. إليك الكود الكامل لفئة Compressvedio: public class Compressvedio extends AsyncTask<String, String, String> { Dialog dialogo; @Override protected void onPreExecute() { super.onPreExecute(); dialogo = ProgressDialog.show(uploadved.this, "برجاء الانتظار", "جارى تجهيز الفيديو"); } @Override protected String doInBackground(String... strings) { String vediopath = null; // Get the video URI. Uri uritoup = Uri.parse(strings[1]); // Compress the video. try { vediopath = SiliCompressor.with(uploadved.this).compressVideo(uritoup, strings[2]); } catch (URISyntaxException e) { throw new RuntimeException(e); } return vediopath; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); dialogo.dismiss(); // Get the compressed video file. File filea = new File(s); // Get the file size in kilobytes. float size2 = filea.length() / 1024f; // Log the file size. Log.d("sizs", String.format("Size : %.2f kB", size2)); // Set the display name of the compressed video file. displayName = String.valueOf(Calendar.getInstance().getTimeInMillis() + ".mp4"); } }
-
إليك بعض النصائح لبدء العمل الحر في مجال المونتاج والتصميم: اجمع أعمالك في محفظة. هذا هو أهم شيء يجب فعله عند البدء في العمل الحر. سيساعدك وجود محفظة قوية في جذب العملاء وعرض مهاراتك. انشر أعمالك على مواقع التواصل الاجتماعي. هذا هو وسيلة رائعة للتواصل مع العملاء المحتملين وعرض أعمالك. قم بإنشاء موقع إلكتروني أو صفحة على الويب. هذا سيساعدك على إنشاء علامة تجارية لنفسك وعرض أعمالك بشكل احترافي. حدد أسعارك بشكل عادل. من المهم أن تحدد أسعارك بشكل عادل حتى تتمكن من جذب العملاء وتحقيق الربح. كن متواصلًا مع العملاء. من المهم أن تتواصل مع العملاء بشكل مستمر حتى تتمكن من فهم متطلباتهم وتسليم المشاريع في الوقت المحدد. كن مستعدًا للتعلم والتطور. مجال المونتاج والتصميم يتغير باستمرار، لذلك من المهم أن تكون مستعدًا للتعلم والتطور حتى تتمكن من مواكبة أحدث التقنيات. فيما يلي بعض النصائح الخاصة بالعمل في مستقل أو حسوب: اقرأ شروط الاستخدام والسياسة الخاصة بالمنصة جيدًا قبل البدء في العمل. قم بإنشاء ملف تعريف احترافي يتضمن معلوماتك ومهاراتك وخبراتك. انشر أعمالك على المنصة واجعلها مميزة وجذابة. قم بتقديم عروض أسعار تنافسية للعملاء. تواصل مع العملاء بشكل مستمر واحرص على تسليم المشاريع في الوقت المحدد.
-
رسالة الخطأ "لا يمكن تحميله لأن تشغيل البرامج النصية معطل على هذا النظام" تعني أن سياسة التنفيذ على نظامك مضبوطة على "مقيد". هذا يعني أن PowerShell لن يقوم بتشغيل البرامج النصية إلا إذا تم توقيعها رقميًا بواسطة ناشر موثوق به. هناك عدة طرق لإصلاح هذا الخطأ: قم بتشغيل PowerShell في وضع المسؤول. سيتجاوز هذا سياسة التنفيذ للجلسة الحالية. قم بتغيير سياسة التنفيذ. يمكنك القيام بذلك عن طريق تشغيل الأمر التالي في PowerShell: set-ExecutionPolicy RemoteSigned سيسمح هذا لـ PowerShell بتشغيل البرامج النصية التي تم توقيعها بواسطة ناشر موثوق به. قم بتغيير سياسة التنفيذ من خلال نهج المجموعة. هذه هي الحل الأكثر دائمًا، لكنها تتطلب أن يكون لديك امتيازات مسؤول. للقيام بذلك، افتح محرر نهج المجموعة المحلي وانتقل إلى المسار التالي: تكوين الكمبيوتر > القوالب الإدارية > مكونات Windows > Windows PowerShell > سياسة التنفيذ انقر نقرًا مزدوجًا على سياسة "السماح بالبرامج النصية غير الموقعة" وقم بتعيينها على "تمكين". قم بتغيير سياسة التنفيذ من خلال السجل. هذا هو الحل الأكثر صعوبة، لكنه يمنحك أكبر قدر من التحكم في سياسة التنفيذ. للقيام بذلك، افتح محرر السجل وانتقل إلى المفتاح التالي: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\ExecutionPolicy القيمة الافتراضية للمفتاح هي "مقيد". لتغيير سياسة التنفيذ، انقر نقرًا مزدوجًا على القيمة واضبطها على أحد القيم التالية: تجاوز: سيسمح هذا لـ PowerShell بتشغيل جميع البرامج النصية، بغض النظر عما إذا كانت موقعة أم لا. RemoteSigned: سيسمح هذا لـ PowerShell بتشغيل البرامج النصية التي تم توقيعها بواسطة ناشر موثوق به. غير مقيد: سيسمح هذا لـ PowerShell بتشغيل جميع البرامج النصية، حتى تلك التي لا يتم توقيعها. بمجرد تغيير سياسة التنفيذ، ستحتاج إلى إعادة تشغيل PowerShell حتى تصبح التغييرات سارية المفعول.
-
يمكن إنشاء زر يحتوي على قائمة من خلال استخدام مكونات Bootstrap. يمكن استخدام الفئة "dropdown-toggle" لتنشيط القائمة عند النقر على الزر، ويمكن استخدام الفئة "dropdown-menu" لتحديد عناصر القائمة. فيما يلي مثال على كيفية إنشاء زر يحتوي على قائمة باستخدام Bootstrap: <div class="dropdown"> <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <!-- يمكنك استخدام الثلاث نقاط الأفقية هنا --> <span class="sr-only">Toggle Dropdown</span> </button> <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> <a class="dropdown-item" href="#">زر 1</a> <a class="dropdown-item" href="#">زر 2</a> </div> </div> يمكن استخدام الأيقونات بدلاً من النقاط الأفقية باستخدام العنصر `<i>`، ويمكن تخصيص الأيقونات باستخدام فئات Bootstrap مثل "fas" و "fa-caret-down" و "fa-ellipsis-h"؛ على سبيل المثال: <div class="dropdown"> <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fas fa-ellipsis-h"></i> <span class="sr-only">Toggle Dropdown</span> </button> <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> <a class="dropdown-item" href="#">زر 1</a> <a class="dropdown-item" href="#">زر 2</a> </div> </div> يرجى ملاحظة أنه يجب تضمين مكتبة Bootstrap و FontAwesome في مشروعك لاستخدام هذه الأيقونات والفئات.
- 4 اجابة
-
- 1
-
يعتمد حجم الذاكرة العشوائية (RAM) المطلوبة للتعدين واستهلاك الهاش على نوع العملة الرقمية التي ترغب في التعدين لها، وعلى نوع البرنامج والخوارزمية المستخدمة للتعدين. على سبيل المثال، يتطلب تعدين بيتكوين (Bitcoin) استخدام معدات خاصة تسمى ASIC التي تحتاج إلى الكثير من الطاقة الكهربائية ولا تستخدم الكثير من الذاكرة العشوائية (RAM). أما تعدين عملات رقمية أخرى مثل Ethereum فهو يتطلب استخدام العديد من الوحدات المركزية (CPUs) أو وحدات المعالجة الرسومية (GPUs) ، والتي تحتاج إلى كميات كبيرة من الذاكرة العشوائية (RAM). بشكل عام، يمكنك حساب استهلاك الهاش للتعدين عن طريق اختبار الأداء الخاص بجهاز التعدين الخاص بك باستخدام برامج مثل NiceHash أو Minerstat أو Claymore. يمكنك أيضًا استخدام الحاسبة الخاصة بالتعدين لتقدير العائد المتوقع لجهاز التعدين الخاص بك واستهلاك الطاقة الكهربائية. ومن المهم أن تتأكد من أن تحسب تكلفة الطاقة الكهربائية لديك عند حساب الأرباح المتوقعة من التعدين. عموما، يمكن القول بأن كلما زادت سرعة الهاش وزاد حجم الذاكرة العشوائية (RAM) المستخدمة في جهاز التعدين، كلما زاد استهلاك الطاقة الكهربائية والتكلفة الإجمالية للتعدين.
-
الذكاء الاصطناعي وتعلم الآلة هما مجالان واسعان ومتطوران بشكل سريع، ويمكن لأي شخص أن يحترفهما من خلال العديد من المصادر الخارجية للتعلم. هناك العديد من الموارد والأدوات المتاحة عبر الإنترنت التي يمكن استخدامها لتحسين مهارات الذكاء الاصطناعي وتعلم الآلة أولاً من خلال الأكاديمية: يوجد الدورات التي تم ذكرها في التعليقات السابقة ولكن يجب معرفة أنه لا توجد دورات مختصة فقط بالذكاء الاصطناعي وتعلم الآلة وإنما يمكنك الإستفادة من هذه الدورات لتعلم الذكاء الاصطناعي وتعلم الآلة ثانياً دورات أخرى يوجد الكثير من المصادر سواء المجانية أو المدفوعة مثل Coursera: يوفر Coursera مجموعة واسعة من الدورات المجانية (بعد التقدم للدعم المالي)حول الذكاء الاصطناعي وتعلم الآلة، بما في ذلك دورات من جامعات مثل Stanford وPrinceton وUniversity of Toronto. edX: يوفر edX دورات مجانية على الإنترنت من مؤسسات مثل MIT وHarvard وBerkeley وغيرها حول تعلم الآلة والذكاء الاصطناعي. Udacity: يوفر Udacity دورات متخصصة بالذكاء الاصطناعي وتعلم الآلة، بما في ذلك دورات مدفوعة ومجانية. وبدلاً من التكرار يمكنك قراءة الإجابات التالية حيث تم ذكر أفضل الدورات لتعلم الذكاء الاصطناعي وتعلم الآلة
-
كل من useCallback وuseMemo هما هوكس Hook في React، ويستخدمان لتحسين أداء التطبيقات عن طريق تجنب إعادة الحسابات غير الضرورية. useCallback: useCallback يستخدم لتجنب إعادة إنشاء الدوال عند إعادة تقديم المكونات وتمرير الدوال كخاصية إلى المكونات الفرعية. يتم استخدامه لتحسين أداء التطبيق عن طريق تخزين الدوال المعرفة مسبقًا وإعادتها عند الطلب. يتلقى useCallback وسيطًا لكلمة دالة وقائمة من الاعتمادات التي يعتمد عليها الخطاب. عندما يتم تغيير أي من الاعتمادات التي يتم تمريرها إلى useCallback، فسيتم إعادة إنشاء الدالة. وإلا، يتم إرجاع الدالة المخزنة في الذاكرة. مثال: في المثال التالي، يتم استخدام useCallback لتجنب إعادة إنشاء الدالة عندما يتم إعادة إنشاء مكون الابن الذي يتلقى الدالة كخاصية. import React, { useCallback, useState } from 'react'; function ParentComponent() { const [count, setCount] = useState(0); const increment = useCallback(() => { setCount(count + 1); }, [count]); return ( <div> <p>Count: {count}</p> <ChildComponent increment={increment} /> </div> ); } function ChildComponent({ increment }) { return ( <div> <button onClick={increment}>Increment count</button> </div> ); } useMemo: useMemo يستخدم لتجنب إعادة حساب القيم المعقدة بشكل متكرر. يتلقى useMemo وسيطين: القيمة التي يتعين حسابها والقيمة التي يعتمد عليها. يتم إرجاع القيمة المخزنة في الذاكرة إذا لم تتغير القيمة المعتمدة. وإلا، يتم إعادة حساب القيمة. مثال: في المثال التالي، يتم استخدام useMemo لتجنب إعادة حساب القيمة المعقدة بشكل متكرر. import React, { useMemo, useState } from 'react'; function ComplexCalculation({ x, y }) { // Complex calculation that we want to avoid recomputing unnecessarily const result = useMemo(() => { // Some really expensive operation console.log('Calculating...'); return x * y; }, [x, y]); return <p>Result: {result}</p>; } function App() { const [x, setX] = useState(1); const [y, setY] = useState(1); return ( <div> <input type="number" value={x} onChange={(e) => setX(+e.target.value)} /> <input type="number" value={y} onChange={(e) => setY(+e.target.value)} /> <ComplexCalculation x={x} y={y} /> </div> ); } هناك مثال بسيط يوضح استخدام useEffect بدلاً من useCallback في حالة تمرير الدوال كخاصية إلى المكونات الفرعية وتتوقع أن تتغير معلمة الاعتماد عليها بشكل متكرر: import React, { useState, useEffect } from 'react'; function ChildComponent({ handleClick }) { // Child component that renders a button and calls the handleClick function when clicked return ( <div> <button onClick={handleClick}>Click me</button> </div> ); } function ParentComponent() { const [count, setCount] = useState(0); useEffect(() => { // Callback function that is created once and does not depend on any props or state const increment = () => { setCount(count + 1); }; // Pass the increment function as a prop to the child component // The child component will only be re-rendered when the count state changes return <ChildComponent handleClick={increment} />; }, [count]); return ( <div> <p>Count: {count}</p> </div> ); } في هذا المثال، يتم استخدام useEffect لتمرير الدالة كخاصية إلى المكون الابن ChildComponent. يتم إنشاء الدالة في useEffect وتمريرها كخاصية إلى ChildComponent. يتم إعادة تقديم ChildComponent فقط عندما يتغير العداد count، وليس عند كل تحديث لـ ParentComponent. هذا يتيح لنا تجنب إعادة إنشاء الدالة handleClick بشكل متكرر ويحسن من أداء التطبيق.
-
Hooks هي طريقة جديدة في React تسمح لنا بإضافة حالة (state) ودوال الدورة الحياة (lifecycle methods) وغيرها من الميزات داخل Function Components دون الحاجة إلى استخدام Class Components. على سبيل المثال، إذا كان لديك Function Component وتريد إضافة حالة داخله، يمكنك استخدام Hook useState. وإذا كنت تريد استخدام دورة حياة المكونات، فيمكنك استخدام Hook useEffect. وهناك العديد من الـ Hooks المختلفة المتاحة في React، وتساعدنا في إنشاء تطبيقات تفاعلية أسرع وأسهل. ومن الـ Hooks الأكثر استخدامًا في React: useState: يتيح لنا إنشاء حالة داخل Function Component وتغييرها عند الحاجة دون الحاجة إلى استخدام الـ Class Components. useEffect: يسمح لنا باستخدام الدورة الحياة للمكونات مثل componentDidMount و componentDidUpdate و componentWillUnmount داخل Function Components. useContext: يسمح لنا باستخدام Context داخل Function Components بشكل أسهل وأكثر فعالية. ولشرح كل من ال hooks منفرداً سيأخذ العديد من المقالات لذلك بدلاً من التكرار يمكنك الذهاب للتوثيق الرسمي للإطلاع على المزيد من المعلومات بشكل أكثر تفصيلاً موسوعة حسوب موقع react
-
forEach(), map(), filter() و reduce() هي وظائف مدمجة في JavaScript تستخدم للتعامل مع المصفوفات والقوائم. وهنا بعض الفروق بينهم: forEach(): تستخدم forEach() لتكرار كل عنصر في المصفوفة وتنفيذ وظيفة معينة عليه. على سبيل المثال، إذا كان لدينا مصفوفة تحتوي على أرقام، يمكن استخدام forEach() لطباعة كل عنصر في المصفوفة: const numbers = [1, 2, 3, 4, 5]; numbers.forEach(function(number) { console.log(number); }); map(): تستخدم map() لإنشاء مصفوفة جديدة باستخدام قيم المصفوفة الأصلية والتي تم تحديدها عن طريق تطبيق دالة على كل عنصر. على سبيل المثال، إذا كان لدينا مصفوفة تحتوي على أرقام، يمكن استخدام map() لإنشاء مصفوفة جديدة تحتوي على نسخة مضاعفة من كل عنصر: const numbers = [1, 2, 3, 4, 5]; const doubledNumbers = numbers.map(function(number) { return number * 2; }); console.log(doubledNumbers); // Output: [2, 4, 6, 8, 10] filter(): تستخدم filter() لإنشاء مصفوفة جديدة تحتوي على العناصر التي تم تحديدها باستخدام دالة معينة. على سبيل المثال، إذا كان لدينا مصفوفة تحتوي على أرقام، يمكن استخدام filter() لإنشاء مصفوفة جديدة تحتوي على الأرقام الزوجية فقط: const numbers = [1, 2, 3, 4, 5]; const evenNumbers = numbers.filter(function(number) { return number % 2 === 0; }); console.log(evenNumbers); // Output: [2, 4] reduce(): تستخدم reduce() لتجميع القيم في مصفوفة وإرجاع قيمة واحدة. على سبيل المثال، إذا كان لدينا مصفوفة تحتوي على أرقام، يمكن استخدام reduce() لجمع الأرقام في المصفوفة: const numbers = [1, 2, 3, 4, 5]; const sum = numbers.reduce(function(total, number) { return total + number; }, 0); console.log(sum); // Output: 15 أما بالنسبة للفرق بين هذه الدوال وبين الـ for loop والـ while loop، فالفرق يكمن في الطريقة التي يتم بها التعامل مع البيانات. فالـ for loop والـ while loop يستخدمان لتنفيذ عملية معينة على عناصر المصفوفة بشكل متسلسل، بينما الدوال السابقة تستخدم لتطبيق وظيفة على عناصر المصفوفة بشكل متوازي. ويمكن استخدام أي منهم حسب الحاجة وطبيعة المهمة التي تحتاج إلى تنفيذها في مشروعك. سأقدم لك مثالًا على الفرق بين استخدام الـ for loop و map() في جافاسكريبت: لنفترض أن لدينا مصفوفة تحتوي على أرقام، ونحتاج إلى إنشاء مصفوفة جديدة تحتوي على نفس الأرقام ولكن مضاعفة القيم. يمكننا القيام بذلك باستخدام for loop على النحو التالي: let numbers = [1, 2, 3, 4, 5]; let doubledNumbers = []; for (let i = 0; i < numbers.length; i++) { doubledNumbers.push(numbers[i] * 2); } console.log(doubledNumbers); // [2, 4, 6, 8, 10] ويمكن القيام بنفس العملية باستخدام دالة map() على النحو التالي: let numbers = [1, 2, 3, 4, 5]; let doubledNumbers = numbers.map(function(number) { return number * 2; }); console.log(doubledNumbers); // [2, 4, 6, 8, 10] كما ترى، تقوم الدالة map() بإنشاء مصفوفة جديدة تحتوي على النتائج التي تم إنشاؤها، في حين يتم استخدام for loop لتعديل المصفوفة الحالية. وبشكل عام، يمكن استخدام for loop و while loop و map() و filter() و reduce() في حالات مختلفة ويعتمد الاختيار على طبيعة المهمة التي تحتاج إلى القيام بها.
-
إذا كنت تريد العمل كمطور ويب أو تطبيقات الجوال، فمن المهم فهم كيفية كتابة وفهم طرق الاتصال بـ API والتعامل مع JSON و HTTP methods مثل GET و POST. فهم الأساسيات يمكن أن يساعدك في تطوير تطبيقات أفضل وأكثر فعالية وأمانًا ، ولكن إذا كنت ترغب في إنشاء API الخاصة بك أو تخصيص API موجودة (أي أمك مطور backend)، فسيكون من الضروري تعلم الكتابة والفهم العميق للأكواد والوظائف المختلفة المرتبطة بالـ API. على الجانب الآخر ، إذا كنت تستخدم API موجودة وتريد فقط استخدامها ، فمن الممكن الاكتفاء بفهم الأساسيات واستخدام وثائق الـ API التي توفرها الشركة أو الموقع. ومع ذلك ، ستحتاج إلى فهم كيفية استخدام المنصات والأدوات التي تتيح لك الاتصال بالـ API. بالمجمل ، يوصى بفهم الأساسيات والعمل على تحسين مهارات البرمجة الخاصة بك بحيث تتمكن من التعامل مع الـ API بشكل فعال. على الرغم من أن الأمر يمكن أن يبدو صعبًا في البداية، إلا أن التعلم التدريجي والتدريب سيجعل هذه المفاهيم أكثر وضوحًا. يمكنك تطبيق ما تعلمته من خلال إنشاء تطبيقات بسيطة واستخدام مختلف الأدوات والمكتبات المتاحة عبر الإنترنت لتسهيل العملية.
-
لست متأكداً بالضبط بما تقصد. من المحتمل أن عناصر الصفحة تتحرك عند تحريك عجلة الفأرة. ولتجنب ذلك، يمكنك تحديد العناصر التي تريد أن تثبت مكانها عند تصغير الصفحة أو تكبيرها. عليك استخدام CSS لتثبيت عنوان الصفحة أثناء التمرير. يمكنك استخدام خاصية `position: fixed` لتثبيت العنوان في مكان معين على الصفحة، و `z-index` لتحديد الترتيب الظاهري للعنصر المثبت. هذا هو مثال بسيط لكيفية تثبيت العنوان: /* تثبيت العنوان في الأعلى بوضع position: fixed */ .header { position: fixed; top: 0; left: 0; right: 0; background-color: #fff; z-index: 999; } /* إضافة بعض التباعد للعنوان */ .header h1 { margin: 20px; } يمكنك تعديل قيم `top` و `left` و `right` لتحديد موقع العنوان المثبت، وتعديل الألوان والأسلوب حسب التصميم الخاص بك.
- 6 اجابة
-
- 1
-
هذه بعض الأمثلة التي توضح الفروق بين `auth()->user()` و `Auth::user()` في Laravel: نطاق الوصول: يمكن استخدام `auth()->user()` في أي مكان في التطبيق، بما في ذلك الملفات العادية والـ controllers والـ views، وما إلى ذلك. هذا يعني أنه لا يتطلب استيراد أي فصيلة (Class) قبل استخدامها، وهو متاح في جميع أنحاء التطبيق. بالمقابل، يمكن استخدام `Auth::user()` فقط في المناطق التي تم استيراد فصيلة الـ Facade Class "Auth". ويمكن استيراد هذه الفصيلة في الملفات العادية والـ controllers والـ views، وما إلى ذلك. على سبيل المثال، يمكن استخدام `Auth::user()` في الـ controller بعد استيراد فصيلة "Auth" بالطريقة التالية: use Illuminate\Support\Facades\Auth; class HomeController extends Controller { public function index() { $user = Auth::user(); // Do something with $user } } الأداء: تشير بعض الدراسات إلى أن استخدام `Auth::user()` يمكن أن يكون أسرع بشكل طفيف من استخدام `auth()->user()`، وذلك بسبب الفرق في طريقة الاستدعاء. ومع ذلك، يمكن أن تختلف هذه النتائج باختلاف حجم التطبيق وطريقة التنفيذ. الاستخدامات المتعددة: يمكن استخدام `auth()->user()` لإجراء مهام مختلفة في Laravel، مثل إنشاء روابط محمية وتحديث بيانات المستخدم، بينما يتم استخدام `Auth::user()` بشكل أساسي لاسترجاع معلومات المستخدم الحالي. وفيما يلي بعض الأمثلة على استخدام كل منهما: `auth()->user()`: // إضافة رابط محمي إلى الـ view: @if (auth()->user()) <a href="/dashboard">Dashboard</a> @endif // تحديث بيانات المستخدم في الـ controller: public function update(Request $request) { $user = auth()->user(); $user->name = $request->input('name'); $user->email = $request->input('email'); $user->save(); return redirect('/dashboard'); } `Auth::user()`: // استرجاع معلومات المستخدم الحالي في الـ controller: use Illuminate\Support\Facades\Auth; public function index() { $user = Auth::user(); return view('home', compact('user')); }