-
المساهمات
4901 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
11
إجابات الأسئلة
-
إجابة عبدالباسط ابراهيم سؤال في دمج عمودين سوياً عن طريق العناصر المتشابهة في 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)
-
إجابة عبدالباسط ابراهيم سؤال في ما هي تطبيقات ال 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 أكثر سهولة عن غيرها ولكن ليست في مثل قوة التطبيقات الأخرى
لذلك يمكنك إختيار التيقنية التي تخدم أهدافك
-
إجابة عبدالباسط ابراهيم سؤال في كيف يمكننى ان احذف كل ال items فى axios كانت الإجابة المقبولة
إذا كان ال endpoint او ال url تم معالجته لحذف جميع ال items نعم يمكنك تنفيذ المطلوب من خلال الأمر التالي
axios.delete('https://url/resource/deleteAll') أو يمكنك استخدام postبدون مشكلة
axios.post('https://url/resource/deleteAll')
-
إجابة عبدالباسط ابراهيم سؤال في كيف انسق عرض ال 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 حيث يوفر لك العديد من المميزات التي تحتاجها
-
إجابة عبدالباسط ابراهيم سؤال في هل هذه المواصفات جيدة لعمل hackintosh ام لا ؟ كانت الإجابة المقبولة
اعتقد أن هذه المواصفات جيدة كفاية لتشغيل، نظام التشغيل hackintosh حيث يعتبر
المعالج جيد ولكنه جيل قديم نوعاً ما مساحة الرام كافية جداً ويفضل أن يكون المعالج الرسومي جيد حتى لا تواجه أي مشاكل
وتعتبر المواصفات المطلوبة لهذا النظام ليست بالكبيرة ولكن إذا كنت تعمل جيداً على نظام التشغيل windows فلن تواجه أي مشاكل في استخدام hackintosh
-
إجابة عبدالباسط ابراهيم سؤال في ما المشكلة عند تشغيل laragon كانت الإجابة المقبولة
هل نسخة ال php هى ال thread safe ؟ تأكد من ذلك
إذا كانت كذلك يمكنك تجربة الحل التالي
قم بفتح الملف C:/laragon/etc/apache2/mod_php.conf ثم استبدل ال الجزء التالي من الملف LoadModule php8_module ب
LoadModule php_module
-
إجابة عبدالباسط ابراهيم سؤال في ما الفرق بين 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) #الناتج #مجموع المصفوفة
-
إجابة عبدالباسط ابراهيم سؤال في هل من الممكن ان احصل على فرصه عمل في شركه وأنا بعمر 18 كانت الإجابة المقبولة
سأتكلم عن مجال البرمجة
أولاً العمر ليس مشكلة في الحصول على وظيفة وخصوصاً في مجال البرمجة ويمكنك أيضاً العمل بدون شهادة جامعية ولكن الأمر صعباً ويمكن أن يحدث ذلك عندما تكون متمكن من المهارات التي تقدمها وأجد أن الحصول على وظيفة ثابتة أمر صعب بدون شهادة جامعية وكما في التعليق السابق فالأمر يختلف من دولة إلى أخرى ومن وظيفة إلى أخرى فليس هناك شئ ثابت ما عليك سوى البحث عن متطلبات الوظيفة التي تريدها
أما بالنسبة للعمل الحر فالأمر بسيط حيث أن طلاما تستطيع تنفيذ المطلوب فليس هناك حاجة لمعرفة ما هو عمرك أو ما هو تعليمك الجامعي
قم بقراءة الإجابات على هذا السؤال وهذا السؤال لمعرفة المزيد
-
إجابة عبدالباسط ابراهيم سؤال في كيفية حذف محتوى مفسر بايثون؟ كانت الإجابة المقبولة
كما وضح محمد في التعليق السابق فإنه يمكنك تنفيذ ذلك من خلال os.system('cls') ولكن ذلك يعمل في windows فقط ولجعلها تعمل على العديد من المنصات قم بتنفيذ الدالة التالية حيث نضيف لها "clear" مع cls
import os def cls(): os.system('cls' if os.name=='nt' else 'clear') #الأن سيعمل الكود على العديد من المنصات cls() -
إجابة عبدالباسط ابراهيم سؤال في لماذا يتم وراثة الكائن 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
-
إجابة عبدالباسط ابراهيم سؤال في استدعاء ملفات .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
قم بمراجعة المستودع الخاص بالمكتبة للإطلاع على المزيد من المعلومات
-
إجابة عبدالباسط ابراهيم سؤال في مشكلة فى useState "وضع القيمة القديمة بدلا من الجديدة أو الحاجة الى الضغط على الزر مرتين حتى يعمل set للقيمة الجديدة" كانت الإجابة المقبولة
من الطبيعي أن يحدث ما تقوله حيث أنك قمت بتخزين قيمة wantNotification مبدئياً ب No لذلك عند الضغط على الزر أول مرة سيتم تخزين القيمة No في ال AsyncStorage ولكن عند الضغط المرة الثانية سيكون قد تم تغيير القيمة من خلال
setWantNotification('YES'); لذلك في المرة الثانية سيتم تخهزين القيمة Yesفي ال AsyncStorage لذلك جرب القيام بالتعديل التالي وسترى أنه يقوم بتخزين القيمة Yes من أول مرة
{ text: 'OK', onPress: async () => { await storeNotificationAsync("yes"); //لاحظ هذا التعديل await console.log(wantNotification); }, }, ستفهم طريقة تنفيذ الكود بعد التعديل و يمكنك بعد ذلك التعديل على البرنامج كما تريد
-
إجابة عبدالباسط ابراهيم سؤال في إنشاء أسهم تقييم الإجابة - 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>
-
إجابة عبدالباسط ابراهيم سؤال في 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 يمكنك أن تجد المزيد من المعلومات هنا
-
إجابة عبدالباسط ابراهيم سؤال في تحديث الشاشة السابقة عند goBack كانت الإجابة المقبولة
توجد عدة طرق لتنفيذ ذلك يمكننا استخدام ال hook التالي useIsFocused ثم استخدام هذه القيمة ك dependency ل sideEffect لتنفيذ دالة ما كالتالي
const componentB = (props) => { // يتأكد ما إذا كانت هذه الصفحة مفتوحة أم لا const isFocused = useIsFocused(); useEffect(() => { updateSomeFunction()//isFocused يتم تنفيذ هذه الدالة بناءاً على القيمة },[isFocused]); }
-
إجابة عبدالباسط ابراهيم سؤال في ما الفرق بين import module و from module import في بايثون؟ كانت الإجابة المقبولة
نعم ليس هناك فرق كبير في الأداء بين الطريقتين حيث أن ال module يتم إستدعائه في كلا الطريقتين لذلك يمكنك استخدام الطريقة التي تفضلها فمثلاً
الطريقة الأولى لا تحتاج لأكثر من Import لاستخدام عدة دوال بينما في الطريقة الثانية تحتاج لذلك في الطريقة الأولى عند استخدام دالة تحتاج للوصول لها كالتالي module.method مما قد تبدو ممله بينما في الطريقة الثانية لا تحتاج لذلك لذلك بالأخير فإنه يمكنك استخدام الطريقة التي تفضلها وتسهل العمل عليك
-
إجابة عبدالباسط ابراهيم سؤال في كيف أقوم بإستبدال أجزاء متعددة من النص دفعة واحدة في بايثون؟ كانت الإجابة المقبولة
هناك حل آخر أبسط قليلاً وهو كالتالي
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
-
إجابة عبدالباسط ابراهيم سؤال في معاني المصطلحات البرمجية باللغة الأنجليزية كانت الإجابة المقبولة
أعتقد أنك أبتعدت لفترة عن التطبيق في المهارات التي تعلمتها فالحل بالنسبة
في الدورات التي تريد تعلم المصطلحات منها قم بتطبيق مشروع وراء المدرب حتى يمكنك تذكر المصطلحات وتذكر ما تعلمته (المشروع الموجود في الدورة فقط وليس الشرح) ويمكنك أيضاً بدلاً من مشاهدة الفيديوهات قراءة المراجع الموجودة في موسوعة حسوب إذا كانت اللغة الإنجليزية جيدة إلى حد ما يمكنك قراءة ال documentation للغات التي تريد تذكرها وبعد قراءة ال documentation ستتطور لديك هذه المهارة أو اللغة بشكل كبير -
إجابة عبدالباسط ابراهيم سؤال في كيف يمكنني أن أقوم بإيقاف دالة إن إستغرقت أكثر 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() -
إجابة عبدالباسط ابراهيم سؤال في ما هو المتغير _ في بايثون؟ كانت الإجابة المقبولة
بالإضافة للإستخدام في التعليق السابق يوجد أيضاً عدة استخدامات منها
تنسيق الأرقام الكبيرة بشكل يسهل قرائته كالتالي num = 1_000_000 وهو نفس الرقم بدون الفاصلة
num = 1000000 ولكن لتسهيل قرائته
يقوم المترجم بحفظ آخر قيمة في المتغير " _ " كالتالي
>>> 10 10 >>> _ 10 >>> _ * 3 30 >>> _ * 20 600
تستخدم لتدل على أن الالخاصية أو الدالة private عندما تسبق اسم الدالة أو الخاصية ولكن هذا convention أو من التقاليد المتبعة بين المبرمجين وليس خاصية في اللغة
class _Base: # private class _hidden_factor = 2 # private variable
-
إجابة عبدالباسط ابراهيم سؤال في برنامج يستقبل نص ويُخرج جميع الأسعار التي تكون بالدولار - بايثون كانت الإجابة المقبولة
يمكنك استخدام ال regular expression التالي
'(\$[0-9]+(.[0-9]+)?)' وسيقوم باستخراج الأعداد التي تتبعها علامة ال $ ليصبح الكود
import re text = input() result = [x[0] for x in re.findall('(\$[0-9]+(\.[0-9]+)?)', text)]
-
إجابة عبدالباسط ابراهيم سؤال في محددات الوصول في 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 فقط من أي مكان في البرنامج
-
إجابة عبدالباسط ابراهيم سؤال في احاول ان اعمل 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 للبيانات للتأكد من الوصول للبيانات التي تريدها
-
إجابة عبدالباسط ابراهيم سؤال في مسحت فولدر git. بالخطأ .. كيف استعيده ؟؟ كانت الإجابة المقبولة
يمكنك بدلاً من عمل clone تنفيذ الأمر pull كالتالي
git init git remote add origin <repo_address> git pull origin main أو يمكنك عمل clone في مجلد آخر ثم نقل مجلد ال .git فقط للمجلد الأساسي لتجنب خسارة التغييرات التي لم تقم بعمل push لها
-
إجابة عبدالباسط ابراهيم سؤال في إزالة الخط السفلي للرابط التشعبي كانت الإجابة المقبولة
يمكنك عمل ذلك من خلال الخاصية 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; }