-
المساهمات
5649 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
11
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو عبدالباسط ابراهيم
-
ليس هناك وجه مقارنة بين getStaticPaths و getStaticProps حيث getStaticProps تقوم بجلب البيانات getStaticPaths تقوم بإنشاء paths بناء على هذه البيانات من ال getStaticProps في السطر التالي نقوم يإنشاء ال paths من خلال البيانات حيث من خلال ال post.id التي تصلنا يمكننا إنشاء ال paths const paths = posts.map((post) => ({ params: { id: post.id }, }))
-
يمكنك استخدام الإضافة next-seoحيث توفر لك مميزات كثيرة فيمكنك إضافة meta لصفحة معينة أو إضافة meta إفتراضية لجميع الصفحات أو الموقع كالتالي إنشاء custom App يسمى app.js_ ثم يمكنك استدعاء DefaultSeo من next-seo ثم إضافة الإعدادات التي تريدها import App, { Container } from 'next/app'; import { DefaultSeo } from 'next-seo'; // import your default seo configuration import SEO from '../next-seo.config'; export default class MyApp extends App { render() { const { Component, pageProps } = this.props; return ( <Container> <DefaultSeo // Component يجب أن تكون في البداية قبل ال openGraph={{ type: 'website', locale: 'en_IE', url: 'https://www.url.ie/', site_name: 'SiteName', }} twitter={{ handle: '@handle', site: '@site', cardType: 'summary_large_image', }} /> <Component {...pageProps} /> </Container> ); } }
-
نعم يعتبر استخدامهما متماثل ولكن هناك اختلاف في الحالات اليت يجب استخدام أياً من هما حيث تعتبر في كثير من الحالات التي ستستخدم فيها ال getStaticProps مثل البيانات المطلوبة لجعل الصفحة متاحة في وقت البناء جاهزة في حالة أنك تقوم بجلب البيانات من headless CMS. في حالة أنك تهتم كثيراً بال SEO والحالة التي يمكنك استخدام getServerSideProps فيها هي في حالة أنه يتم جلب البيانات عند كل request من المستخدم لبناء الصفحة
-
كما وضح وائل في التعليق السابق أنه يمكنك تنفيذ ما تريده من خلال طريقتين سواء ال referencing أو ال subdocument يفضل استخدام الطريقة الثانية لأنها تقوم بإدراج ال authorSchema مباشرة في ال bookSchema فالميزة هنا أنها تحفظ البيانات كاملة في مكان واحد فيساعد على زيادة الأداء وتقليل زمن ال query لأنها لن تبحث في عدة أماكن لذلك يكون من الأفضل استخدام الطريقة الثانية في حالة أن البينات في ال subdocument ليست كبيرة في حالة أن البيانات لا يحدث لها تغيير كثيراً وأيضاً هناك استخدامات تجعل من ال referencing أفضل
- 3 اجابة
-
- 1
-
-
توجد دالة في لغة بايثون تقوم بالفكرة التي تريد تنفيذها وهي wrap من textwrap ويمكنك استخدامها كالتالي from textwrap import wrap #لاتنسى استدعائها أولاً s = '1234567890' wrap(s, 2) # نمرر أولاً النص ثم نمرر العرض أو عدد الحروف التي تريدها #الناتج # ['12', '34', '56', '78', '90']
- 5 اجابة
-
- 1
-
-
من الطبيعي والإفتراضي أن تأخذ العناصر مكانها في الموقع على حسب وجودها في الكود أو شيفرة html فمثلًا العنصر الموجود في الكود أولاً يكون موجود في الموقع أولاً ولكن عند إضافة الخاصية position تقوم هذه الخاصية بتغيير مكان العنصر الإفتراضي والطبيعي والفرق بين ال relative و ال absolute Relative تمكننا من تحريك العنصر من مكانه الطبيعي أي يبقى العنصر في مكانه في حالة عدم تحديد خصائص left right top or bottom أما بالنسبة ل absolute تمكننا من تحريك العنصر ولكن ليس من كانه الطبيعي، بل، من أقرب عنصر له خاصية position relative أو إن لم تكن موجودة يكون من ال body ويتم توضيح الشرح من خلال الصورة التالية يمكنك قراءة المزيد من المعلومات من هنا
-
يمكنك تنفيذ ذلك في 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 يمكنك أن تجد المزيد من المعلومات هنا
-
ربما يحدث ذلك لعدة أسباب وبما أنك متأكد أنه لم يتم تخطي الحد الأقصى (مع أن ذلك لا يقوم بإخفاء البيانات ) وأنك لم تحذف البيانات حاول تجربة فتح ال database من خلال لوحة التحكم من متصفح آخر حيث ربما تمنع بعض الإضافات من ظهور البيانات مثل ad blocker فتأكد أنك لا تستخدم ad blocker في المتصفح
-
توجد عدة طرق لتنفيذ ذلك يمكننا استخدام ال hook التالي useIsFocused ثم استخدام هذه القيمة ك dependency ل sideEffect لتنفيذ دالة ما كالتالي const componentB = (props) => { // يتأكد ما إذا كانت هذه الصفحة مفتوحة أم لا const isFocused = useIsFocused(); useEffect(() => { updateSomeFunction()//isFocused يتم تنفيذ هذه الدالة بناءاً على القيمة },[isFocused]); }
- 2 اجابة
-
- 2
-
-
ربنا إنشاء المجلد data/db لن يحل المشكلة لذلك سنحاول تنفيذ الامر التالي ك administrator من خلال ال cmd cd C:\Program Files\MongoDB\Server\4.0\bin mongod --dbpath="C:\Program Files\MongoDB\Server\4.0\data"
- 2 اجابة
-
- 1
-
-
نعم ليس هناك فرق كبير في الأداء بين الطريقتين حيث أن ال module يتم إستدعائه في كلا الطريقتين لذلك يمكنك استخدام الطريقة التي تفضلها فمثلاً الطريقة الأولى لا تحتاج لأكثر من Import لاستخدام عدة دوال بينما في الطريقة الثانية تحتاج لذلك في الطريقة الأولى عند استخدام دالة تحتاج للوصول لها كالتالي module.method مما قد تبدو ممله بينما في الطريقة الثانية لا تحتاج لذلك لذلك بالأخير فإنه يمكنك استخدام الطريقة التي تفضلها وتسهل العمل عليك
-
يمكنك تنفيذ المطلوب من خلال ال cookies كالتالي <?php if (!isset($_COOKIE['firsttime'])) //إذا كان المستخدم يزور الموقع لأول مرة { setcookie("firsttime", "no", /*cookie قم بتحديد فترة إنتهاء ال */); header('Location: first-time.php'); exit(); } else { header('Location: index.php'); exit(); } ?>
- 2 اجابة
-
- 2
-
-
نعم يوجد إختصار لل if في البايثون ولكن ليس مثل javascript وهو كما في المثال التالي a,b=5,7 x = a > b and "True" or "False" #or يتم إرجاع ما بعد ال false وإذا كان and يتم إرجاع ما بعد ال true في حالة
- 4 اجابة
-
- 1
-
-
يمكنك تحقيق ذلك أيضاً من خلال التالي s = set(list2) #set ل list2 نحول أولاً ال list3 = [x for x in list1 if x not in s] #temp3 نقومب إرجاع الإختلافات بينهما في ال
-
يمكنك معرفة اللغة التي يستخدمها المستخدم من خلال javascript كما في التعليقات السابقة أو في حالة أنه تريد استخدام لغات ال backend مثل php يمكنك معرفة اللغة من خلال الدالة التالية $_SERVER['HTTP_ACCEPT_LANGUAGE'] ويمكنك الحصول على أول حرفين من الناتج مثل en ليدل على اللغة الإنجليزية يمكنك استخدام الدالة substr كالتالي echo substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
-
يمكنك تغيير حجم ال textarea من خلال خاصية rows و cols كالتالي textarea.rows = rows;//القيمة التي تريدها أو يدخلها المستخدم textarea.cols = cols;//القيمة التي تريدها أو يدخلها المستخدم يمكنك الإعتماد على هذه الخاصية لتغيير الحجم فقم بتعديل البرنامج الخاص بك ليعمل بالشكل المطلوب
-
هناك حل آخر أبسط قليلاً وهو كالتالي 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
- 2 اجابة
-
- 1
-
-
يمكنك عمل ذلك من خلال استخدام yield كالتالي def read_in_chunks(file_object, chunk_size=1024): while True: data = file_object.read(chunk_size)#يمكننا تحديد الحجم المطلوب قرائته chunk_size باستخدام المعامل if not data: break yield data with open('really_big_file.dat') as f: for piece in read_in_chunks(f): process_data(piece) تقوم yield بإكمال العمل بدلاً من البداية من الصفر فلن تقوم بقراءة الملف من البداية بل تكمل من حيث توقفت
- 2 اجابة
-
- 1
-
-
أعتقد أنك أبتعدت لفترة عن التطبيق في المهارات التي تعلمتها فالحل بالنسبة في الدورات التي تريد تعلم المصطلحات منها قم بتطبيق مشروع وراء المدرب حتى يمكنك تذكر المصطلحات وتذكر ما تعلمته (المشروع الموجود في الدورة فقط وليس الشرح) ويمكنك أيضاً بدلاً من مشاهدة الفيديوهات قراءة المراجع الموجودة في موسوعة حسوب إذا كانت اللغة الإنجليزية جيدة إلى حد ما يمكنك قراءة ال documentation للغات التي تريد تذكرها وبعد قراءة ال documentation ستتطور لديك هذه المهارة أو اللغة بشكل كبير
-
في ميزانية ال 5000 جنيه مصري لا يمكن تجميع جهاز بكارت شاشة منفصل وذلك في حالة أن القطع جديدة ولكن البديل عن ذلك يمكن تجميع جهاز ب APU وهو معالج بكارت شاشة مدمج ويعتبر في نفس هذه الفئة (Ryzen 3 3200g أفضل إختيار متوفر) ولكن الأداء جيد جداً لهذه الفئة (يفضل إضافة قطعتين من الرام بدلاً من واحدة لأداء أفضل) ويمكنك تجميع باقي القطع بناء على هذا ال APU وستكون في حدود ال 5000 بالنسبة لأداء هذه التجميعة فيمكنها تشغيل معظم البرامج والألعاب الموجودة بدون مشكلة ولن تواجه مشكلة سواء في التصميم أو البرمجة
- 4 اجابة
-
- 1
-
-
إذا كنت تقصد ال tooltip كما وضح وائل في التعليق السابق فبالطبع يمكنك عمل ذلك من خلال الخاصية title ولكن لن تتمكن من تعديل التنسيق حيث يبقى لل title نفس الشكل ولن تستطيع التعديل عليه حيث يبدو من الصورة أنك تحتاج شكل معين يأخذ بعض التنسيقات وهناك العديد من الطرق عن طريق ال javascript عن طريق ال css فقط بدون الحاجة لل javascript أو يمكنك البحث عن الأشياء الجاهزة فقط أبحث عن ال tooltip تطبيق ذلك عن طريق ال css سيكون كالتالي <div data-tooltip="hello"> <!-- لم نستخدم ال title --> something here </div> ال css [data-tooltip]:before { position : absolute; content : attr(data-tooltip); opacity : 0; /* يمكنك تنسيقه كما تريد عن طريق إضافة التنسيقات هنا */ } [data-tooltip]:hover:before { /*title الجزء المسؤل عن ظهور ال */ opacity : 1; }
- 2 اجابة
-
- 2
-
-
يمكننا إنشاء كائن بلغة python عن طريق التالي قم بقراءة الشرح المرفق class Person: #لإنشائه ويمكنك ملاحظة أنن ا نجعل أول حرف كبير class نستخدم كلمة def __init__(self, first_name, last_name): #self تعود على الكلاس self.first_name = first_name#من خصائص الكائن first_name هنا تصبح الخاصية self.last_name = last_name #من خصائص الكائن first_name هنا تصبح الخاصية def full_name(self):#من دوال الكائن first_name هنا تصبح الخاصية return f'{self.first_name} {self.last_name}' def name(self):#من دوال الكائن first_name هنا تصبح الخاصية return f'{self.last_name}, {self.first_name}'