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

Mustafa Suleiman

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

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

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

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

    365

كل منشورات العضو Mustafa Suleiman

  1. الكود سيكون كالتالي: class طالب: def __init__(self, اسم, عمر): self.اسم = اسم self.عمر = عمر def معلومات_الطالب(self): return f"الطالب {self.اسم}، عمره {self.عمر} سنة." حيث قمت بإنشاء فئة تسمى "طالب" والتي تحتوي على متغيرين (خصائص) هما "اسم" و "عمر". وتعريف دالة __init__ لتكوين الخصائص عند إنشاء كائن من الفئة، وإضافة دالة إضافية بإسم "معلومات_الطالب" لاسترجاع معلومات الطالب بشكل نصي. وسأشرح لك بالتفصيل: 1- تعريف الفئة: نبدأ بتعريف الفئة باستخدام الكلمة المحج reservمة "class"، تليها اسم الفئة المراد إنشاؤها والذي في هذه الحالة هو "طالب"، والسطور التالية سيتم وضع الخصائص والدوال داخلها. class طالب: 2- دالة __init__: الخطوة التالية هي تعريف دالة __init__، وهي دالة خاصة في Python تستخدم لتهيئة الكائن عند إنشائه، وتستقبل تلك الدالة معاملات لتهيئة الخصائص الأساسية للكائن، وفي الكود السابق قمت بتعريف معاملين هما "اسم" و "عمر". def __init__(self, اسم, عمر): self.اسم = اسم self.عمر = عمر self هو المعامل الذي يشير إلى الكائن نفسه الذي يتم إنشاؤه، وتستخدم self للوصول إلى الخصائص والدوال في الكائن، ويجب أن يكون الباراميتر self هو أول باراميتر في جميع الدوال داخل الفئة. اسم و عمر: هذان المعاملان يتم استخدامهما لتهيئة خصائص الكائن، تمثل "اسم" اسم الطالب، و "عمر" يمثل عمر الطالب. 3- دالة إضافية: بعد تعريف دالة __init__، يمكنك إضافة دوال إضافية في الفئة، وكما ترى قمت بإضافة دالة بإسم "معلومات_الطالب" لاسترجاع معلومات الطالب بشكل نصي. def معلومات_الطالب(self): return f"الطالب {self.اسم}، عمره {self.عمر} سنة." وتستطيع إنشاء كائنات من الفئة واستخدام الخصائص والدوال كما يلي: # إنشاء كائنين من الفئة "طالب" طالب1 = طالب("أحمد", 20) طالب2 = طالب("سارة", 22) # استخدام الدالة للحصول على معلومات الطلاب print(طالب1.معلومات_الطالب()) # الطالب أحمد، عمره 20 سنة. print(طالب2.معلومات_الطالب()) # الطالب سارة، عمره 22 سنة. تعريف الأصناف في بايثون
  2. أنصحك بقراءة صفحة الأسئلة الشائعة وستجد بها الكثير من الإجابات على الأسئلة لديك، ومنها سؤالك هنا حيث أنه بعد اتمامك لأي من الدورات وبعد اجتيازك الامتحان بنجاح ثم تطبيق إرشادات المختصين لتحسين سيرتك الذاتية وملفاتك الشخصية على مواقع العمل الحر، إن لم تحصل على وظيفة أو عمل حر خلال 6 أشهر من موعد اجتيازك للامتحان، يغطي قيمة الدورة التي دفعتها، سنعيد لك ما دفعت. بتلك البساطة.
  3. تستطيع فعل ما تريد، لكن الصحيح هو دراسة المسار البرمجي بالتدريج، بمعنى دورة علوم الحاسوب مخصصة لمن ليس لديه أي دراية بالبرمجة ويرغب بدراسة الأساسيات والتعرف على عالم البرمجة بمجالاته المختلفة وتعلم أساسيات لغة برمجة أولى مثل جافاسكريبت وبايثون وتنمية مهارة التفكير المنطقي. بعد ذلك تنتقل إلى التخصص في مجال البرمجة الذي تريده، وأنت اخترت مجال الواجهة الأمامية من خلال دورة تطوير واجهات المستخدم.
  4. هل المشروع عبارة عن ملف واحد فقط؟ أي الكود الحالي فقط؟ من الأفضل إرفاق مجلد المشروع بشكل مضغوط ورفعه هنا لتفقده
  5. تحتاج إلى تصحيح بعض الأخطاء في عناصر HTML مثل <p1> و <p> وإضافة الصنف price إلى العنصر الذي يحمل السعر. سنستخدم <span> بدلاً من <p1> ونضيف class="price" إلى السعر ليكون من النمط التالي: <span class="price">120 السعر</span> ويجب أن نجعل صندوق الشيك بوكس ظاهرًا بالإضافة إلى تحديد data-price للصنف الإضافي: <input type="checkbox" id="بطاطس" name="اضافات[]" value="بطاطس,10" data-price="10"> <label for="بطاطس">بطاطس (10 جنية)</label><br> ثم تصحيح النص المستخدم للشيك بوكس "مشروبات" وإضافة data-price له: <input type="checkbox" id="مشروبات" name="اضافات[]" value="مشروبات,10" data-price="10"> <label for="مشروبات">مشروبات (10 جنية)</label><br> في الجزء الخاص بحساب إجمالي السعر، سنحتاج إلى إضافة data-price لكل عنصر بطاطس ومشروبات: <input type="checkbox" id="بطاطس" name="اضافات[]" value="بطاطس,10" data-price="10"> <input type="checkbox" id="مشروبات" name="اضافات[]" value="مشروبات,10" data-price="10"> ثم عليك تحديث السعر عند تغيير الكمية في الوجبات باستخدام مسمى الصنف class="price" وإضافة id لعنصر العربة: <input type="number" value="1" class="quantity-input" onchange="calculateTotal()"> وتحديث دالة calculateTotal() في الجزء الخاص بـ JavaScript لحساب إجمالي السعر بناءً على الكمية والسعر: function calculateTotal() { var total = 0; var cards = document.getElementsByClassName("card"); for (var i = 0; i < cards.length; i++) { var quantity = parseInt(cards[i].querySelector(".quantity-input").value); var price = parseFloat(cards[i].querySelector(".price").textContent.replace("السعر: ", "")); total += (price * quantity); } document.getElementById("cart").textContent = "اجمالي السعر: " + total + " جنية"; } وتعديل دالة addToCart() لتقوم بحساب السعر بناءً على السعر الموجود في الكارت بدلاً من السعر الثابت: function addToCart(itemName) { var text = document.querySelector('h5').innerText; var quantity = parseInt(document.querySelector('.quantity-input').value); var extras = []; var extrascheckboxes = document.querySelectorAll('input[name="اضافات[]"]:checked'); var totalPrice = parseFloat(document.querySelector('.price').textContent.replace("السعر: ", "")); extrascheckboxes.forEach(function(checkbox) { extras.push(checkbox.value); totalPrice += parseFloat(checkbox.dataset.price); }); var item = { name: itemName, text: text, price: totalPrice, quantity: quantity, extras: extras }; cartItems.push(item); updateCart(); calculateTotal(); // حساب إجمالي السعر الجديد بعد الإضافة }
  6. صحيح ما ذكرته، فإن كنت ترغب في السماح بوجود نص قبل التاريخ، فعليك بإضافة (\D*?) لتمثيل أي عدد من الحروف غير الرقمية قبل التاريخ، مما يسمح للتاريخ أن يتبعه نص غير رقمي.
  7. يتم حظر الحسابات بشكل دائم إذا تم اكتشاف مخالفات للمبادئ الأساسية للمجتمع وشروط الخدمة على النحو التالي: 1- إذا لم تفي بالحد الأدنى من العمر أو المتطلبات الأخرى كما هو مبين في شروط الخدمة. 2- إذا قام الحساب بتقميص شخص آخر أو كيان بطريقة مضللة. 3- إذا كان لديك مخالفة خطيرة في حسابك: نشر أو تشجيع استغلال الشباب أو مواد الإساءة الجنسية للأطفال (CSAM). الترويج للعنف أو التهديد به. نشر أو الترويج لمحتوى يصور أعمال جنس غير مرغوب فيها مثل الاغتصاب أو التحرش. نشر محتوى يسهل الاتجار بالبشر. نشر محتوى يصور تعذيبًا في العالم الحقيقي. إنشاء حساب TikTok آخر أو استخدامه لتجنب القيود بصورة متعمدة أو الحظر الدائم الذي فُرض على حساب آخر. 4- إذا وصل حسابك إلى عتبة الإنذار لمخالفات متعددة داخل سياسة أو ميزة معينة. 5- مخالفات متعددة لسياسة الملكية الفكرية. كيف ستعلم إذا تم حظر حسابك على TikTok بشكل دائم؟ إذا تم حظر حسابك، ستتلقى إشعارًا على شكل بانر عند محاولتك تسجيل الدخول، يُبلغك فيه بالحظر، ويمكنك أيضًا التحقق من المخالفات في قسم حالة الحساب في صندوق الوارد من خلال إشعار البانر. كيفية الوصول إلى حساب TikTok الخاص بك بعد الحظر تستطيع تسجيل الدخول إلى الحساب لتقديم طلب استئناف وتنزيل بياناتك الشخصية، وتذكر، أنه سيتم حذف بياناتك الشخصية بعد فترة من الزمن وفقًا للقوانين المعمول بها وسياسة الاحتفاظ بالبيانات لدينا، وبعد الحذف، لن يكون حسابك متاحًا بعد الآن. كيفية الاستئناف إذا تمت إزالة محتواك أو تم حظر حسابك على TikTok؟ إن كنت تعتقد أن محتواك أو حسابك تمت إزالتهما بسبب خطأ، باستطاعتك الاستئناف على هذا القرار. إذا تمت الموافقة على استئنافك: سيتم استعادة محتواك أو حسابك (ما لم تكون قد حذفت الحساب أو المحتوى بالفعل). سيتم إزالة الإنذار من حسابك. ملاحظة: لا يقوم حذف محتواك بإزالة الإنذارات، وقد يتم لاحقًا فرض إنذارات بعد حذف المحتوى الذي ينتهك القواعد. والخطوات هي كالتالي من أجل محاولة إزالة الحظر من تيك توك: افتح الإشعار الذي تلقيته بخصوص الحظر. انقر على "الاستئناف" Appeal. اتبع التعليمات المقدمة. هل يمكنك إنشاء حساب TikTok جديد بعد الحظر؟ يمكنك إنشاء حسابات متعددة على TikTok. ومع ذلك، قد يتم بتقييد حسابك أو حظره بشكل دائم إذا قمت بأي محاولات لتجنب القيود أو الحظر الذي تم فرضه على حساب آخر تمتلكه، بما في ذلك: إنشاء حساب جديد بعد حظر حسابك بسبب مخالفة خطيرة. نشر محتوى ينتهك القواعد على حساب جديد أو قائم. نشر مخالفات المحتوى عبر حسابات متعددة. ينطبق ذلك طالما بقيت القيود سارية على حسابك الآخر.
  8. عليك بتقبل الأمور بواقعية وبدون تصورات غير حقيقية، دورة تطوير واجهات المستخدم هي بوابة الدخول لمجال تطوير الواجهات الأمامية Front-End بالتالي يتم بها شرح الأساسيات من خلال HTML, CSS, JS, jQuery, Bootstrap. لذلك أنت في مرحلة البداية والتي تؤهلك لإنشاء مواقع ثابتة Static وليست ديناميكية، أي مواقع محتواها لا يتغير يبقى كما هو. وستجد مشاريع لذلك على مستقل وخمسات أي على مواقع العمل الحر، لكن في الشركات المشاريع تتطلب الخبرة بإطار أو مكتبة للواجهة الأمامية مثل React أو Angular أو Vue.js. وستجد هنا توضيح لتلك النقطة: ولذلك أنت بحاجة إلى دورة تطوير التطبيقات باستخدام JavaScript ويتم بها شرح React وإطارات جافاسكريبت الأخرى. وإليك وصف وظيفة خاصة بمطور واجهة أمامية Job Requirements: Deep understanding of JavaScript fundamentals and common techniques. Good Understanding in all ES6/ES7 features. Strong experience in React and it's an ecosystem. Strong experience in the next technologies and libraries: Redux and its ecosystem such as redux-Saga, redux-thunk, redux sauce. JSS React-router Building tools and module-bundlers such as Webpack and Babel + ( Gulp or Grunt ) Linting: eslint and it's common libraries HTML5 / CSS3 and styling predecessors such as: SASS and LESS Experience with Github Familiarity with RESTful APIs.
  9. من المفترض أن يتم التحويل إلى الدولار عند الشراء من خلال البنك الخاص بالبطاقة، أي تحدث عملية تحويل للعملة من التركية إلى الدولار وقد يتم فرض رسوم تحويل عملة، ولكن بعض البطاقات لا تقبل الشراء بالدولار فعليك بالاستفسار عن ذلك من خلال خدمة عملاء البنك. أو يمكنك إضافة البطاقة وربطها بباي بال ثم الدفع من خلال باي بال، حيث يتكفل هو بالتحويل من الليرة التركية إلى الدولار وبالطبع هناك رسوم لذلك. وطرق الدفع المتاحة في أكاديمية حسوب هي باي بال والبطاقة الإئتمانية من نوع Credit أو Debit وليس البطاقة مسبقة الدفع Prepaid. وفي حال واجهت أية مشكلة في الإشتراك تستطيع التحدث لمركز المساعدة بخصوص عملية الدفع وسيتم مساعدتك.
  10. السؤال غير واضح، ما هو الرابط الذي تحاول الوصول إليه من خلال الهاتف، هل قمت بنسخ المشروع إلى هاتفك وتحاول تشغيله؟ في تلك الحالة من المفترض أن تقوم بتشغيل ملف HTML الرئيسي وسيتم تشغيل المشروع بشكل سليم في المتصفح طالما يوجد ملف التنسيق CSS أيضًا. أما في حال أنك تريد تشغيل المشروع عن طريق رابط، فعليك برفعه على استضافة مجانية مثل netlify من خلال إنشاء حساب ثم رفع مجلد المشروع وستحصل على رابط وإليك المزيد من المشرح: وتستطيع التعديل على اسم الرابط أيضًا من خلال الإعدادات وذلك الرابط بمثابة الدومين لموقعك تستطيع من خلاله تصفح الموقع من أي مكان.
  11. صحيح، يجب عليك تسجيل حساب على موقع Gravatar حتى تتمكن من استخدام ميزة رفع صور الرمز الشخصي، وبعد التسجيل، يمكنك تحديد صورة الرمز الشخصي الخاصة بك وإعداد إعداداتها، ثم استخدام عنوان URL الخاص بـ Gravatar الخاص بك في تطبيقاتك. وإليك الخطوات لتسجيل حساب على Gravatar وإعداد صورة الرمز الشخصي: انتقل إلى موقع Gravatar على الويب. انقر فوق الزر "إنشاء حساب". أدخل عنوان بريدك الإلكتروني وكلمة مرورك. انقر فوق الزر "إنشاء حساب". بعد إنشاء حسابك، يمكنك تحديد صورة الرمز الشخصي الخاصة بك عن طريق النقر فوق الزر "تعيين صورة الرمز الشخصي". يمكنك تحميل صورة من جهاز الكمبيوتر الخاص بك أو اختيار صورة من مجموعة Gravatar. بعد تحديد صورة الرمز الشخصي الخاصة بك، يمكنك إعداد إعداداتها عن طريق النقر فوق الزر "إعدادات الرمز الشخصي". يمكنك تحديد حجم الصورة ونوعها وإعدادات الخصوصية. بعد إعداد إعدادات الرمز الشخصي الخاص بك، يمكنك النقر فوق الزر "حفظ". بمجرد إعداد صورة الرمز الشخصي الخاصة بك، تستطيع استخدام عنوان URL الخاص بـ Gravatar في تطبيقاتك. مثلاً استخدام عنوان URL الخاص بـ Gravatar الخاص بك في النموذج التالي: <img src="https://gravatar.com/avatar/[your_email_address]?s=200&r=pg&d=mm" /> وسيعرض ذلك الكود صورة الرمز الشخصي الخاصة بك بحجم 200 بكسل وتنسيق صورة شخصي وخلفية بيضاء.
  12. حاول استخدام الخاصية alignment لضبط محاذاة الملصق على الزر، أي لتحاذيه على اليمين، استخدم الكود التالي: FloatingActionButton( child: Icon(Icons.add), label: Text('Add'), alignment: Alignment.centerRight, ) وسيؤدي ذلك إلى محاذاة الملصق على اليمين، مع مركزه أفقيًا فوق الزر، ويمكنك أيضًا استخدام الخاصية padding لضبط المسافة بين الزر والملصق. ولتعيين مسافة 10 بكسل بين الزر والملصق استخدم التالي: FloatingActionButton( child: Icon(Icons.add), label: Text('Add'), alignment: Alignment.centerRight, padding: EdgeInsets.all(10.0), ) ولاحظ أنه يمكنك تعديل مكان الـ FloatingActionButton من خلال خواص مختلفة وستجدها هنا في المستند الرسمي: https://api.flutter.dev/flutter/material/FloatingActionButtonLocation-class.html
  13. ما هو الخطأ الذي يظهر لك أرجو نسخ الخطأ ولصقه هنا. وحاول تجربة كتابة الكود على الشكل التالي: import openpyxl from pathlib import Path file_path = Path('E:/data analysis/data_project/xlx data/202201-divvy-tripdata.xlsx') with openpyxl.open(file_path) as workbook: print(workbook.sheetnames)
  14. معنى خطأ "javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake" أن Flutter SDK غير قادر على إنشاء اتصال آمن بالمضيف البعيد، ويمكن أن يكون ذلك بسبب عدد من الأسباب، بما في ذلك: قد يكون للمضيف البعيد شهادة ذاتية التوقيع لا يثق بها Flutter SDK. للمضيف البعيد شهادة قديمة أو غير صالحة. هناك مشكلة في اتصال الشبكة لديك. وحاول تجربة التالي: تحقق من التاريخ والوقت على جهاز الكمبيوتر، حيث يستخدم Flutter SDK ساعة النظام للتحقق من الشهادات، لذلك إذا لم يكن ساعتك صحيحة، فقد لا يتمكن من الوثوق بشهادة المضيف البعيد. تأكد من أنك متصل بالإنترنت فيحتاج Flutter SDK إلى تنزيل شهادة المضيف البعيد لإنشاء اتصال آمن. حاول استخدام اتصال شبكة مختلفة أو تشغيل VPN. حاول تعطيل التحقق من الشهادات في Flutter SDK، وللقيام بذلك، افتح ملف .flutter/config/gradle.properties وأضف السطر التالي: flutter.sdk.disableCertificateVerification=true سيسمح ذلك لـ Flutter SDK بالاتصال بأي مضيف، بغض النظر عما إذا كانت الشهادة موثوقة أم لا. وأيضًا قد يفيدك تشغيل أمر flutter doctor في منفذ الأوامر لتفقد الأخطاء في المشروع.
  15. يجب استيراد المكتبة قبل استخدامها باستخدام import openpyxl. تحتاج إلى تقديم مسار ملف Excel الصحيح مع امتداد الملف (.xlsx على الأغلب). تحتاج إلى استخدام وظيفة load_workbook بعد استيراد المكتبة لفتح الملف. والكود الصحيح هو: import openpyxl from pathlib import Path # مسار الملف file_path = Path('E:', 'data analysis', 'data_project', 'xlx data', '202201-divvy-tripdata.xlsx') # استدعاء الملف workbook = openpyxl.load_workbook(file_path) # بدء التعامل مع الملف قمت باستخدام وظيفة Path من مكتبة pathlib لإنشاء مسار صحيح، كما أنني أضفت .xlsx لامتداد الملف بناءً على افتراض أنه ملف Excel بصيغة xlsx. لاحظ أنه إذا كنت ترغب في الوصول إلى ورقة معينة داخل الملف، فيجب عليك استخدام workbook.active أو استخدام اسم الورقة بعد تحميل الملف باستخدام workbook['اسم الورقة'].
  16. حاول تجربة تثبيت نظام إفتراضي على الماك مثل الويندوز وتجربة ما تريد عليه مثل VMware Fusion 13 و VirtualBox 7. وبخصوص سؤالك عن تحويل الكود إلى ملف DMG على macOS، فالأمر بسيط إليك الخطوات: 1- قم بتثبيت حزمة py2app، وتلك الحزمة ستسمح لك بإنشاء حزم تطبيقات مستقلة من ملفات Python. pip install py2app 2- قم بإنشاء دليل جديد لمشروعك. mkdir my_project cd my_project 3- انسخ ملف Python الخاص بك إلى دليل المشروع. cp my_script.py . 4- عليك إنشاء ملف setup.py في دليل المشروع، وسيخبر ذلك الملف py2app كيفية إنشاء حزمة التطبيق الخاصة بك. from setuptools import setup setup( name='My App', version='1.0', app=[ 'my_script.py' ], data_files=[ 'icon.icns' ], ) 5- قم بتشغيل الأمر التالي لإنشاء حزمة التطبيق: py2app سيؤدي ذلك إلى إنشاء دليل جديد يسمى dist في دليل المشروع، يحتوي على حزمة التطبيق الخاصة بك، وهي ملف بلاحقة .app. 6- لإنشاء ملف DMG من حزمة التطبيق، عليك باستخدام أداة create-dmg، وتتوفر تلك الأداة من Homebrew. brew install create-dmg بمجرد تثبيت create-dmg، يمكنك إنشاء ملف DMG من حزمة التطبيق الخاصة بك باستخدام الأمر التالي: create-dmg -v -s 512M my_app.app my_app.dmg والنتيجة هي إنشاء ملف DMG يسمى my_app.dmg في الدليل الحالي، وسيحتوي ملف DMG على حزمة التطبيق، بالإضافة إلى رمز وصورة خلفية. وتستطيع البحث عن Convert python script to DMG file MacOS وستجد شروحات مفيدة لك.
  17. في البداية عليك بفهم الفرق بين الـ Native والـ Cross platform . حيث أن تطوير تطبيقات الـ Native يتضمن إنشاء تطبيقات تُصمم خصيصًا لنظام تشغيل معين، مثل Android أو iOS، وتُكتب تلك التطبيقات بلغات البرمجة التي تتوافق مع النظام الأساسي، مثل Java أو Kotlin لـ Android، و Swift أو Objective-C لـ iOS. وتطوير تطبيقات الـ Native باستخدام Kotlin له مزايا: تطبيقات الـ Native التي تم تطويرها باستخدام لغة مثل Kotlin تستفيد من أداء عالي جدًا، حيث يتم تنفيذ الشيفرة مباشرة على النظام الهدف. يمكنك تطوير واجهات مستخدم متجانسة مع تصميم مبني على مبادئ تصميم النظام الهدف (مثل Material Design في حالة Android)، مما يمنح تجربة مستخدم أفضل وأكثر تناغمًا مع النظام. بفضل التطوير الـ Native، يمكنك الوصول الكامل لجميع مميزات النظام الهدف بما في ذلك الكاميرا والمستشعرات والموقع وغيرها. تطوير تطبيقات Cross-Platform باستخدام React Native: تسمح بكتابة شيفرة واحدة تعمل على عدة منصات مثل Android وiOS، مما يقلل من الجهد والتكاليف. يمكن تطوير التطبيقات بشكل أسرع باستخدام React Native، حيث يمكن إعادة استخدام العديد من العناصر والعمليات. React Native لديها مجتمع نشط وواسع، وهذا يعني توفر العديد من المكتبات والأدوات المفيدة التي يمكن استخدامها لتسريع عملية التطوير. تطوير تطبيقات Cross-Platform باستخدام Flutter: يوفر Flutter واجهة مستخدم جميلة ومتجانسة عبر منصات مختلفة، مما يسمح بتقديم تجربة مستخدم موحدة وجذابة. بفضل محرك الرسوميات الخاص به (Skia)، يمكن لتطبيقات Flutter تحقيق أداء عالي مماثل لتطبيقات الـ Native. تجربة تطوير سريعة بفضل مجموعة من العناصر الجاهزة والأدوات التي تسهل عملية البناء وإعادة الاستخدام. وإطارات العمل الخاصة بتطبيقات الـ Cross platform تتطور باستمرار، وتصبح أكثر قدرة على الوصول إلى ميزات النظام الأساسي، بالإضافة إلى ذلك، هناك العديد من الأدوات والموارد المتاحة لمساعدتك في الوصول إلى الميزات التي تحتاجها في تطبيقات الـ Cross platform. وستجد المزيد من الشرح هنا: هل ابدأ مع جافا او كوتلن؟
  18. الأمر بسيط إذا كان لديك شيء أفضل لتفعله فافعله، أما الاستماع إلى هذا وذاك لن يفيد بشيء، سيكبر بك العمر لا محالة، فما الأفضل أن تتعلم مجال جديد ويصبح لديك مهارة مطلوبة في سوق العمل أم يكبر بك العمر فقط؟ عمرك مناسب للعمل على مواقع العمل الحر فقط حيث أن في الشركات من الصعب تعيين شخص في مجال جديد تجاوز الـ 30 إلا في ظروف معينة مثل إمتلاكه مهارة وسنوات خبرة عن طريق العمل الحر. لكن ذلك يظل في حدود ضيقة أي حتى الـ 35 عامًا. وما تحتاجه سواء عملت على مواقع العمل الحر أم مع الشركات هو إثبات قدرتك على تنفيذ المطلوب من خلال بيانات سابقة لمشاريع عملت عليها أو ما شابه، وستجد فرص للعمل عن بعد مع شركات في دول الخليج أو دول أجنبية في حال أثبت كفاءتك. لكن لا تستمع لي ولا لأي حد، قم بالبحث عن تلك الفرص وتأكد من تواجدها، ثم ابذل ما بوسعك للحصول عليها إن توافرت والأمر كله مسألة رزق.
  19. ما ستحصل عليه كقيمة هو قيمة نصية أي كالتالي "2" + "2" يساوي "22" أي يتم عمل concatenation دمج، وبالتالي لحل المشكلة عليك بتحويل القيمة إلى رقم أولاً سواء من خلال إضافة علامة + قبل القيمة أي كالتالي: Result1.value = +num1.value + +num2.value أو باستخدام دالة parseInt() أو parseFloat() لتحويل السلاسل (strings) إلى أرقام قبل القيام بالعملية الحسابية. وكمثال: Result1.value = parseInt(num1.value) + parseInt(num2.value) أو باستخدام الكلمة الأساسية Number لتحويل سلاسل الأرقام إلى أرقام في JavaScript، وإليك كيفية استخدامها لتنفيذ العملية المطلوبة: Result1.value = Number(num1.value) + Number(num2.value)
  20. أولاً عليك بتفقد فرص الحصول على وظيفة في كلا المجالين، والمجال الأول أنت بحاجة إلى الحصول على شهادة جامعية به من أجل الحصول على وظيفة، على عكس البرمجة التي لا تتطلب شهادة جامعية في أغلب الشركات، بل المطلوب هو إمتلاكك المهارات الكافية ومعرض أعمال يدل على ذلك به مشاريع حقيقية وخبرة 6 أشهر على الأقل بعد الإنتهاء من مسارك التعليمي Roadmap وتنفيذ مشاريع خلال تلك الفترة لإكتساب الخبرة. ولا مشكلة في أن تجمع بين التخصصين، بحيث تخصص أوقات فراغك لتعلم البرمجة، لكن يجب ألا تكون متباعدة، على الأقل 3 أيام أسبوعيًا وليس الإنقطاع شهر ثم العودة، بل عملية التعلم يجب أن تكون متصلة ومستمرة في البداية. الأمر كله بحاجة إلى إدارة وقت جيدة وتحديد أولوياتك، حيث يجب أن تضحي بأشياء للحصول على أشياء أخرى، وعليك بالصبر وتعلم إمتلاك مهارة النفس الطويل خاصًة في مجال البرمجة. وفي النهاية عليك بإختيار مجال واحد فقط والتركيز عليه فلا يمكن العمل في مجالين بالطبع، فمجال البرمجة بحاجة إلى طاقة ووقت.
  21. ما طبيعة الموقع ذو الصفحة الواحدة؟ هل تريد إنشاء صفحة Landing page من أجل منتج معين؟ إذا يوجد منصة باسم easy orders وسهلة الاستخدام ومجانية وغيرها من المنصات مثل you can. في حال أنك تريد إنشاء صفحة خاصة بتعريف لشركة أو صفحة شخصية، فتستطيع الإعتماد على وورد بريس واستخدام قالب مجاني أو مدفوع حسب رغبتك. وإذا كنت تمتلك المهارة البرمجية اللازمة، فتستطيع إنشاء تلك الصفحة من الصفر من خلال HTML, CSS, JS في حال كانت الصفحة بها محتوى ثابت، أو تستطيع الإعتماد على مكتبة أو إطار للواجهة الأمامية مثل React وVue.js وAngular في حال كان المحتوى متغير بناءًا على تفاعل المستخدم مع الواجهة. وبرأي منصة ووردبريس هي الخيار الأمثل لك، ويمكنك البحث عن free wordpress themes ثم ضع بجانبه نوع القالب مثل portfolio مثلاً وستجد قوالب مجانية.
  22. حاليًا لا يوجد شرح مخصص لإطار عمل Prisma في أكاديمية حسوب. وPrisma هو إطار عمل (framework) يستخدم للتفاعل مع قواعد البيانات باستخدام لغة الاستعلام SQL في تطبيقات Node.js، ويتيح لك Prisma تحديد نماذج البيانات والعلاقات بينها بشكل أكثر انسيابية، مما يجعل عمليات التفاعل مع قاعدة البيانات أكثر سهولة وأمانًا. وهو عبارة عن طبقة وسيطة (ORM)، وهي اختصار لـ "Object-Relational Mapping"، وهذا يعني أنها تساعد في تحويل البيانات المخزنة في قاعدة البيانات إلى كائنات JavaScript والعكس صحيح، مما يجعل عمليات القراءة والكتابة أكثر سهولة بدلاً من التعامل مباشرة مع لغة SQL. أي توفر Prisma أدوات لتوليد تعليمات SQL آمنة وفعالة ومحسنة، مما يساهم في تحسين أداء تطبيقك، كما توفر أيضًا ميزات مثل التحقق من صحة البيانات وإدارة العلاقات بين الجداول بشكل سهل. وإليك مثال على استخدام الإطار: const { PrismaClient } = require('@prisma/client'); const prisma = new PrismaClient(); async function main() { const newUser = await prisma.user.create({ data: { username: 'exampleUser', email: 'user@example.com', }, }); console.log('Created user:', newUser); } main() .catch((error) => { console.error('Error:', error); }) .finally(async () => { await prisma.$disconnect(); }); قمت بإنشاء كائن PrismaClient الذي يمثل الاتصال بقاعدة البيانات، ثم إنشاء مستخدم جديد باستخدام الدالة user.create المقدمة من Prisma. والمثال قد يختلف بناءًا على الإصدار الذي تستخدمه. وستجد هنا شرح من خلال المستند الرسمي لطريقة الاستخدام: https://www.prisma.io/docs وفي المحتوى الأجنبي ستجد شروحات كثيرة على اليوتيوب.
  23. التعبير [String] داخل المعكوفين يشير إلى أن الحقل "skills" سيحتوي على مصفوفة (Array) من النصوص (Strings). ووضعها داخل المربعين يُعلم النموذج أنه يجب أن يتوقع مصفوفة من النصوص كقيمة لهذا الحقل، وبالتالي، عند إدخال بيانات في هذا الحقل، يجب أن تكون القيمة نصوص تُقدم على شكل مصفوفة. skills: { type: [String], // يُتوقع أن تكون مصفوفة من النصوص (مهارات) required: true } إذا أدخلنا قيمة مثل ["Programming", "Design", "Communication"] في حقل "skills"، سيتم قبولها بسبب أنها تطابق نوع البيانات المتوقع.
  24. المشكلة بسبب أنه عند عمل Hover على عناصر قائمة التنقل، يتم تطبيق التنسيق التالي: header nav ul li a:hover { color: var(--main-color); border-bottom: 1px solid var(--main-color); } وبسبب إضافة border-bottom تحدث تلك المشكلة.
  25. صحيح عذرًا كتبت الأمر بشكل خاطيء، في عناصر HTML يوجد blocks element وinline elements. لكن عند تعلم CSS ستتمكن من تحويل أي عنصر إلى inline-block من خلال الخاصية display. والخاصية display في CSS تحدد كيفية عرض العنصر في صفحة الويب، وإحدى القيم الشائعة لهذه الخاصية هي inline-block، وتلك القيمة تجمع بين سلوكين مختلفين: العرض كعنصر مضمن inline (مثل نص) ولكن مع إمكانية تحديد ارتفاع وعرض مشابهة لعنصر block (مثل صورة). وعند استخدام display: inline-block، يكون للعنصر نفس سلوك العرض المضمن مع القدرة على تحديد ارتفاع وعرض، وذلك يعني أنه يمكنك وضع عناصر inline-block بجانب بعضها البعض داخل نص أو أي عنصر مضمن آخر، مع الاستفادة من إمكانية تحديد الأبعاد. وإليك مثال: <!DOCTYPE html> <html> <head> <style> .box { display: inline-block; width: 100px; height: 100px; background-color: lightblue; border: 1px solid blue; margin: 10px; } </style> </head> <body> <div class="box"></div> <div class="box"></div> <div class="box"></div> </body> </html>
×
×
  • أضف...