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

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

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

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

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

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

    11

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

  1. إجابة عبدالباسط ابراهيم سؤال في دمج عمودين سوياً عن طريق العناصر المتشابهة في pandas كانت الإجابة المقبولة   
    يوجد عدة طرق لتنفيذ المطلوب كما شرح أحمد في التعليق السابق ولكن في بعض الأحيان تحتاج لمكتبة لتسهيل الأمر وإضافة بعض المميزات ويمكنك استخدام المكتبة fuzzymatcher لتنفيذ المطلوب
    قم بتثبيتها كالتالي
    pip install fuzzymatcher لاحظ المثال التالي
    from fuzzymatcher import link_table, fuzzy_left_join left_on = ["fname", "mname", "lname", "dob"] right_on = ["name", "middlename", "surname", "date"] fuzzymatcher.link_table(df_left, df_right, left_on, right_on)  
  2. إجابة عبدالباسط ابراهيم سؤال في ما هي تطبيقات ال PWA ؟ كانت الإجابة المقبولة   
    تعتبر تقنية ال PWA ما هي إلا موقع تم أعداده مسبقاً للعمل ك PWA والفرق بين الموقع العادي وال PWA هو زيادة مميزات التطبيقات على الموقع مثل إمكانية العمل بدون إنترنت أو التنبيهات وإمكانية تثبيته كل هذه الخصائص يتم إضافتها للموقع من خلال تقنية ال PWA بواسطة service workers وweb app manifests يمكنك البحث عنهما للمزيد من المعلومات
    لذلك تعتمد تطبيقات ال PWA على المتصفح واللغات المستخدمة في الويب وهو ليس إطار عمل مثلاً 
    بينما في  react native and flutter يتم التعامل مع ال native api 
    ويمكنك رفع تطبيق ال PWA على أي متجر ولكن ليس apple store على ما أعتقد ويعمل كأي تطبيق تم بناءه من خلال react native and flutter ولكن مع بعض الإختلافات البسيطة
    تعتبر تطبيقات ال PWA أكثر سهولة عن غيرها ولكن ليست في مثل قوة التطبيقات الأخرى 
    لذلك يمكنك إختيار التيقنية التي تخدم أهدافك
  3. إجابة عبدالباسط ابراهيم سؤال في كيف يمكننى ان احذف كل ال items فى axios كانت الإجابة المقبولة   
    إذا كان ال endpoint او ال url تم معالجته لحذف جميع ال items نعم يمكنك تنفيذ المطلوب من خلال الأمر التالي
    axios.delete('https://url/resource/deleteAll') أو يمكنك استخدام postبدون مشكلة
    axios.post('https://url/resource/deleteAll')  
  4. إجابة عبدالباسط ابراهيم سؤال في كيف انسق عرض ال list بستخدام الcss كانت الإجابة المقبولة   
    يحدث ذلك بسبب أن ال ul عنصر block لذلك يأخذ المساحة كاملة فلا تنفع معه الخاصية 
     text-align: center لذلك الحل سيكون كالتالي
    سيكون لدينا ul 
    <ul> <li>some text</li> <li>some text</li> <li>some text</li> <li>some text</li> </ul> استخدام ال position  ul{ position: absolute; top: 50%; left: 50%; transform : translate(-50%, -50%) }  
    استخدام ال flexbox وأنا أفضل هذا الحل
    ul{ display: flex; align-items: center; justify-content: center; height: 100vh; flex-direction: column; }  
    عناصر ال li ستكون أسفل بعضها لذلك يمكنك التغيير في التنسيق حسب ما تريد 
    قم بقراءة هذه المقالة عن ال flexbox حيث يوفر لك العديد من المميزات التي تحتاجها
  5. إجابة عبدالباسط ابراهيم سؤال في هل هذه المواصفات جيدة لعمل hackintosh ام لا ؟ كانت الإجابة المقبولة   
    اعتقد أن هذه المواصفات جيدة كفاية لتشغيل، نظام التشغيل hackintosh حيث يعتبر 
    المعالج جيد ولكنه جيل قديم نوعاً ما  مساحة الرام كافية جداً  ويفضل أن يكون المعالج الرسومي جيد حتى لا تواجه أي مشاكل
    وتعتبر المواصفات المطلوبة لهذا النظام ليست بالكبيرة ولكن إذا كنت تعمل جيداً على نظام التشغيل windows فلن تواجه أي مشاكل في استخدام hackintosh 
  6. إجابة عبدالباسط ابراهيم سؤال في ما المشكلة عند تشغيل laragon كانت الإجابة المقبولة   
    هل نسخة ال php هى ال thread safe ؟ تأكد من ذلك
    إذا كانت كذلك يمكنك تجربة الحل التالي 
    قم بفتح الملف C:/laragon/etc/apache2/mod_php.conf  ثم استبدل ال الجزء التالي من الملف  LoadModule php8_module ب
    LoadModule php_module  
     
  7. إجابة عبدالباسط ابراهيم سؤال في ما الفرق بين NaN و None في مكتبة numpy؟ كانت الإجابة المقبولة   
    كما في التعليق السابق فإنه القيمة NaN تعامل كقيمة رقمية فلذلك يمكنك إجراء العملية الحسابية في وجودها بينما لا يمكنك في حالة وجود القيمة none 
    لذلك يمكنك استخدام none في حالة تريد تعريف قيمة فارغة والكشف عنها بدالة ما لإجراء وظيفة معينة
    بينما نستخدم NaN عندما نريد إجراء العمليات الحسابية في وجودها ويمكننا تفادي هذه القيمة باستخدام دالة من numpy تسمى nan_to_num أو sumnan مثلاً عند إرجاع مجموع مصفوفة يوجد بها قيمة NaN كالتالي
    import numpy as np   in_arr = np.array([[2, 2, 2], [2, 2, np.nan]]) out_sum = np.nansum(in_arr) print ("مجموع المصفوفة: ", out_sum) #الناتج #مجموع المصفوفة
  8. إجابة عبدالباسط ابراهيم سؤال في هل من الممكن ان احصل على فرصه عمل في شركه وأنا بعمر 18 كانت الإجابة المقبولة   
    سأتكلم عن مجال البرمجة 
    أولاً العمر ليس مشكلة في الحصول على وظيفة وخصوصاً في مجال البرمجة ويمكنك أيضاً العمل بدون شهادة جامعية ولكن الأمر صعباً ويمكن أن يحدث ذلك عندما تكون متمكن من المهارات التي تقدمها وأجد أن الحصول على وظيفة ثابتة أمر صعب بدون شهادة جامعية وكما في التعليق السابق فالأمر يختلف من دولة إلى أخرى ومن وظيفة إلى أخرى فليس هناك شئ ثابت ما عليك سوى البحث عن متطلبات الوظيفة التي تريدها
    أما بالنسبة للعمل الحر فالأمر بسيط حيث أن طلاما تستطيع تنفيذ المطلوب فليس هناك حاجة لمعرفة ما هو عمرك أو ما هو تعليمك الجامعي
    قم بقراءة الإجابات على هذا السؤال وهذا السؤال لمعرفة المزيد
     
     
  9. إجابة عبدالباسط ابراهيم سؤال في كيفية حذف محتوى مفسر بايثون؟ كانت الإجابة المقبولة   
    كما وضح محمد في التعليق السابق فإنه يمكنك تنفيذ ذلك من خلال os.system('cls') ولكن ذلك يعمل في windows فقط ولجعلها تعمل على العديد من المنصات قم بتنفيذ الدالة التالية حيث نضيف لها "clear" مع cls 
    import os def cls(): os.system('cls' if os.name=='nt' else 'clear') #الأن سيعمل الكود على العديد من المنصات cls()
  10. إجابة عبدالباسط ابراهيم سؤال في لماذا يتم وراثة الكائن object في أصناف بايثون كانت الإجابة المقبولة   
    نعم هناك فرق في استخدام الكود كما في الطريقة السابقة حيث أن 
    ال "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  
  11. إجابة عبدالباسط ابراهيم سؤال في استدعاء ملفات .md كثيرة في ملف واحد؟ كانت الإجابة المقبولة   
    يتوجد العديد من الطرق والمكتبات التي تستطيع تنفيذ ما تريده من خلالها ومن هذه الإضافات markdown-include حيث يمكنك إنشاء العديد من الملفات ثم إستدعائها في ملف واحد كالتالي
    تثبيت الإضافة npm install -g markdown-include  
    إنشاء ملف markdown.json لإضافة الإعدادات مثل الملف النهائي والملفات المطلوبة
    ثم من خلال الأمر التالي يمكنك استدعاء الملفات 
    #include "markdown-file.md"  
    أخيراً يمكنك تنفيذ المطلوب من خلال ال command line من الأمر التالي
    node_modules/bin/cli.js path/to/markdown.json   
    قم بمراجعة المستودع الخاص بالمكتبة للإطلاع على المزيد من المعلومات
  12. إجابة عبدالباسط ابراهيم سؤال في مشكلة فى useState "وضع القيمة القديمة بدلا من الجديدة أو الحاجة الى الضغط على الزر مرتين حتى يعمل set للقيمة الجديدة"  كانت الإجابة المقبولة   
    من الطبيعي أن يحدث ما تقوله حيث أنك قمت بتخزين قيمة wantNotification مبدئياً ب No لذلك عند الضغط على الزر أول مرة سيتم تخزين القيمة No في ال AsyncStorage ولكن عند الضغط المرة الثانية سيكون قد تم تغيير القيمة من خلال 
    setWantNotification('YES'); لذلك في المرة الثانية سيتم تخهزين القيمة Yesفي ال AsyncStorage لذلك جرب القيام بالتعديل التالي وسترى أنه يقوم بتخزين القيمة Yes من أول مرة
    { text: 'OK', onPress: async () => { await storeNotificationAsync("yes"); //لاحظ هذا التعديل await console.log(wantNotification); }, }, ستفهم طريقة تنفيذ الكود بعد التعديل و يمكنك بعد ذلك التعديل على البرنامج كما تريد 
  13. إجابة عبدالباسط ابراهيم سؤال في إنشاء أسهم تقييم الإجابة - CSS كانت الإجابة المقبولة   
    ماذا تقصد؟
    إذا كنت تقصد عمل ذلك من خلال 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>  
  14. إجابة عبدالباسط ابراهيم سؤال في param ديناميكي للرابط في next js كانت الإجابة المقبولة   
    يمكنك تنفيذ ذلك في next من خلال الملفات بسهولة من خلال ال dynamic route حيث سيكون شكل الملفات كالتالي " pages/post/[id].js " ثم يمكنك عرض ال post كالتالي
    import { useRouter } from 'next/router' const Post = () => { const router = useRouter() const { pid } = router.query return <p>Post: {pid}</p> } export default Post يمكنك أن تجد المزيد من المعلومات هنا
  15. إجابة عبدالباسط ابراهيم سؤال في تحديث الشاشة السابقة عند goBack كانت الإجابة المقبولة   
    توجد عدة طرق لتنفيذ ذلك يمكننا استخدام ال hook التالي useIsFocused  ثم استخدام هذه القيمة ك dependency ل sideEffect لتنفيذ دالة ما كالتالي
    const componentB = (props) => { // يتأكد ما إذا كانت هذه الصفحة مفتوحة أم لا const isFocused = useIsFocused(); useEffect(() => { updateSomeFunction()//isFocused يتم تنفيذ هذه الدالة بناءاً على القيمة },[isFocused]); }  
  16. إجابة عبدالباسط ابراهيم سؤال في ما الفرق بين import module و from module import في بايثون؟ كانت الإجابة المقبولة   
    نعم ليس هناك فرق كبير في الأداء بين الطريقتين حيث أن ال module يتم إستدعائه في كلا الطريقتين لذلك يمكنك استخدام الطريقة التي تفضلها فمثلاً
    الطريقة الأولى لا تحتاج لأكثر من Import لاستخدام عدة دوال بينما في الطريقة الثانية تحتاج لذلك  في الطريقة الأولى عند استخدام دالة تحتاج للوصول لها كالتالي module.method مما قد تبدو ممله بينما في الطريقة الثانية لا تحتاج لذلك لذلك بالأخير فإنه يمكنك استخدام الطريقة التي تفضلها وتسهل العمل عليك
     
     
  17. إجابة عبدالباسط ابراهيم سؤال في كيف أقوم بإستبدال أجزاء متعددة من النص دفعة واحدة في بايثون؟ كانت الإجابة المقبولة   
    هناك حل آخر أبسط قليلاً وهو كالتالي
    s = "The quick brown fox jumps over the lazy dog" for r in (("brown", "red"), ("lazy", "quick")): s = s.replace(*r) #الناتج: The quick red fox jumps over the quick dog  
  18. إجابة عبدالباسط ابراهيم سؤال في معاني المصطلحات البرمجية باللغة الأنجليزية كانت الإجابة المقبولة   
    أعتقد أنك أبتعدت لفترة عن التطبيق في المهارات التي تعلمتها فالحل بالنسبة 
    في الدورات التي تريد تعلم المصطلحات منها قم بتطبيق مشروع  وراء المدرب حتى يمكنك تذكر المصطلحات وتذكر ما تعلمته (المشروع الموجود في الدورة فقط وليس الشرح) ويمكنك أيضاً بدلاً من مشاهدة الفيديوهات قراءة المراجع الموجودة في موسوعة حسوب إذا كانت اللغة الإنجليزية جيدة إلى حد ما يمكنك قراءة ال documentation للغات التي تريد تذكرها وبعد قراءة ال documentation ستتطور لديك هذه المهارة أو اللغة بشكل كبير 
  19. إجابة عبدالباسط ابراهيم سؤال في كيف يمكنني أن أقوم بإيقاف دالة إن إستغرقت أكثر 10 ثوان في بايثون؟ كانت الإجابة المقبولة   
    يمكنك أيضاً استخدام ال multiprocessing.Process لعمل المطلوب كالتالي
    import multiprocessing import time # bar def bar(): for i in range(100): print "Tick" time.sleep(1) if __name__ == '__main__': # process نقوم بتنفيذ الدالة ك p = multiprocessing.Process(target=bar) p.start() # الإنتظار ل 10 ثواني p.join(10) # مازالت تعمل process التحقق إذا كانت ال if p.is_alive(): print "running... let's kill it..." # إيقاف الدالة p.terminate() #أيضاً kill يمكن إيقاف الدالةعن طريق # p.kill() p.join()
  20. إجابة عبدالباسط ابراهيم سؤال في ما هو المتغير _ في بايثون؟ كانت الإجابة المقبولة   
    بالإضافة للإستخدام في التعليق السابق يوجد أيضاً عدة استخدامات منها
    تنسيق الأرقام الكبيرة بشكل يسهل قرائته كالتالي num = 1_000_000 وهو نفس الرقم بدون الفاصلة
    num = 1000000 ولكن لتسهيل قرائته
    يقوم المترجم بحفظ آخر قيمة في المتغير " _ " كالتالي
    >>> 10 10 >>> _ 10 >>> _ * 3 30 >>> _ * 20 600  
    تستخدم لتدل على أن الالخاصية أو الدالة private عندما تسبق اسم الدالة أو الخاصية ولكن هذا convention أو من التقاليد المتبعة بين المبرمجين وليس خاصية في اللغة 
    class _Base: # private class _hidden_factor = 2 # private variable  
     
  21. إجابة عبدالباسط ابراهيم سؤال في برنامج يستقبل نص ويُخرج جميع الأسعار التي تكون بالدولار - بايثون كانت الإجابة المقبولة   
    يمكنك استخدام ال regular expression التالي
    '(\$[0-9]+(.[0-9]+)?)' وسيقوم باستخراج الأعداد التي تتبعها علامة ال $ ليصبح الكود 
    import re text = input() result = [x[0] for x in re.findall('(\$[0-9]+(\.[0-9]+)?)', text)]  
  22. إجابة عبدالباسط ابراهيم سؤال في محددات الوصول في Java كانت الإجابة المقبولة   
    تقوم محددات الوصول بتحديد إمكانية الوصول للدوال أو خصائص الكائن والفرق بين المحددات كالتالي
    private يمكن الوصول لخصائص الكائن من داخل الكائن نفسه فقط كمثال class A{ private int data=40; private void msg(){System.out.println("Hello java");} } public class Simple{ public static void main(String args[]){ A obj=new A(); System.out.println(obj.data);//يتم توليد خطأ obj.msg();//يتم توليد خطأ } }  
    Protected يمكن الوصول لخصائص الكائن سواء داخل ال package أو خارجها ولكن من خلال الكائنات التي ترث الكائن الأب
    Public يمكن الوصول لخصائص الكائن سواء داخل ال package أو خارجها من أي مكان في البرنامج
    Default وهي القيمة الإفتراضية في حالة لم تضع محدد وصول يمكن الوصول لخصائص الكائن داخل ال package فقط من أي مكان في البرنامج
  23. إجابة عبدالباسط ابراهيم سؤال في احاول ان اعمل fetch ل api بسيط جدا باستخادم fetch وليس axios كانت الإجابة المقبولة   
    قم بتجربة تمرير ال data كالتالي asyncData.movies حتى تحصل على المصفوفة لذلك سيكون التعديل كالتالي
    <FlatList data={asyncData.movies}// لاحظ هذا التعديل // data={data} keyExtractor={item => item.id.toString()} renderItem={({item}) => ( <Text> {item.title}, {item.price} </Text> )} /> دائماً قم ب console.log للبيانات للتأكد من الوصول للبيانات التي تريدها
  24. إجابة عبدالباسط ابراهيم سؤال في مسحت فولدر git. بالخطأ .. كيف استعيده ؟؟ كانت الإجابة المقبولة   
    يمكنك بدلاً من عمل clone تنفيذ الأمر pull كالتالي
    git init git remote add origin <repo_address> git pull origin main أو يمكنك عمل clone في مجلد آخر ثم نقل مجلد ال .git فقط للمجلد الأساسي لتجنب خسارة التغييرات التي لم تقم بعمل push لها
  25. إجابة عبدالباسط ابراهيم سؤال في إزالة الخط السفلي للرابط التشعبي كانت الإجابة المقبولة   
    يمكنك عمل ذلك من خلال الخاصية text-decoration  حيث أن هذه الخاصية هي المسئولة عن هذا الخط الذي يكون تحت الكلمة  ويمكنك إلغاء هذه الخاصية  كالتالي
    a:hover { text-decoration: none; } يمكنك التحكم في ظهورها بتغيير ال hover للحدث الذي تريده مثلlink أو visited أو active
    a:link { text-decoration: none; } a:visited { text-decoration: none; } a:active { text-decoration: underline; }  
×
×
  • أضف...