-
المساهمات
14490 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
384
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
حاول تجربة تثبيت نظام إفتراضي على الماك مثل الويندوز وتجربة ما تريد عليه مثل 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 وستجد شروحات مفيدة لك.
-
في البداية عليك بفهم الفرق بين الـ 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. وستجد المزيد من الشرح هنا: هل ابدأ مع جافا او كوتلن؟
-
الأمر بسيط إذا كان لديك شيء أفضل لتفعله فافعله، أما الاستماع إلى هذا وذاك لن يفيد بشيء، سيكبر بك العمر لا محالة، فما الأفضل أن تتعلم مجال جديد ويصبح لديك مهارة مطلوبة في سوق العمل أم يكبر بك العمر فقط؟ عمرك مناسب للعمل على مواقع العمل الحر فقط حيث أن في الشركات من الصعب تعيين شخص في مجال جديد تجاوز الـ 30 إلا في ظروف معينة مثل إمتلاكه مهارة وسنوات خبرة عن طريق العمل الحر. لكن ذلك يظل في حدود ضيقة أي حتى الـ 35 عامًا. وما تحتاجه سواء عملت على مواقع العمل الحر أم مع الشركات هو إثبات قدرتك على تنفيذ المطلوب من خلال بيانات سابقة لمشاريع عملت عليها أو ما شابه، وستجد فرص للعمل عن بعد مع شركات في دول الخليج أو دول أجنبية في حال أثبت كفاءتك. لكن لا تستمع لي ولا لأي حد، قم بالبحث عن تلك الفرص وتأكد من تواجدها، ثم ابذل ما بوسعك للحصول عليها إن توافرت والأمر كله مسألة رزق.
- 3 اجابة
-
- 1
-
-
ما ستحصل عليه كقيمة هو قيمة نصية أي كالتالي "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)
- 3 اجابة
-
- 1
-
-
أولاً عليك بتفقد فرص الحصول على وظيفة في كلا المجالين، والمجال الأول أنت بحاجة إلى الحصول على شهادة جامعية به من أجل الحصول على وظيفة، على عكس البرمجة التي لا تتطلب شهادة جامعية في أغلب الشركات، بل المطلوب هو إمتلاكك المهارات الكافية ومعرض أعمال يدل على ذلك به مشاريع حقيقية وخبرة 6 أشهر على الأقل بعد الإنتهاء من مسارك التعليمي Roadmap وتنفيذ مشاريع خلال تلك الفترة لإكتساب الخبرة. ولا مشكلة في أن تجمع بين التخصصين، بحيث تخصص أوقات فراغك لتعلم البرمجة، لكن يجب ألا تكون متباعدة، على الأقل 3 أيام أسبوعيًا وليس الإنقطاع شهر ثم العودة، بل عملية التعلم يجب أن تكون متصلة ومستمرة في البداية. الأمر كله بحاجة إلى إدارة وقت جيدة وتحديد أولوياتك، حيث يجب أن تضحي بأشياء للحصول على أشياء أخرى، وعليك بالصبر وتعلم إمتلاك مهارة النفس الطويل خاصًة في مجال البرمجة. وفي النهاية عليك بإختيار مجال واحد فقط والتركيز عليه فلا يمكن العمل في مجالين بالطبع، فمجال البرمجة بحاجة إلى طاقة ووقت.
-
ما طبيعة الموقع ذو الصفحة الواحدة؟ هل تريد إنشاء صفحة Landing page من أجل منتج معين؟ إذا يوجد منصة باسم easy orders وسهلة الاستخدام ومجانية وغيرها من المنصات مثل you can. في حال أنك تريد إنشاء صفحة خاصة بتعريف لشركة أو صفحة شخصية، فتستطيع الإعتماد على وورد بريس واستخدام قالب مجاني أو مدفوع حسب رغبتك. وإذا كنت تمتلك المهارة البرمجية اللازمة، فتستطيع إنشاء تلك الصفحة من الصفر من خلال HTML, CSS, JS في حال كانت الصفحة بها محتوى ثابت، أو تستطيع الإعتماد على مكتبة أو إطار للواجهة الأمامية مثل React وVue.js وAngular في حال كان المحتوى متغير بناءًا على تفاعل المستخدم مع الواجهة. وبرأي منصة ووردبريس هي الخيار الأمثل لك، ويمكنك البحث عن free wordpress themes ثم ضع بجانبه نوع القالب مثل portfolio مثلاً وستجد قوالب مجانية.
-
حاليًا لا يوجد شرح مخصص لإطار عمل 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 وفي المحتوى الأجنبي ستجد شروحات كثيرة على اليوتيوب.
-
التعبير [String] داخل المعكوفين يشير إلى أن الحقل "skills" سيحتوي على مصفوفة (Array) من النصوص (Strings). ووضعها داخل المربعين يُعلم النموذج أنه يجب أن يتوقع مصفوفة من النصوص كقيمة لهذا الحقل، وبالتالي، عند إدخال بيانات في هذا الحقل، يجب أن تكون القيمة نصوص تُقدم على شكل مصفوفة. skills: { type: [String], // يُتوقع أن تكون مصفوفة من النصوص (مهارات) required: true } إذا أدخلنا قيمة مثل ["Programming", "Design", "Communication"] في حقل "skills"، سيتم قبولها بسبب أنها تطابق نوع البيانات المتوقع.
- 3 اجابة
-
- 1
-
-
المشكلة بسبب أنه عند عمل Hover على عناصر قائمة التنقل، يتم تطبيق التنسيق التالي: header nav ul li a:hover { color: var(--main-color); border-bottom: 1px solid var(--main-color); } وبسبب إضافة border-bottom تحدث تلك المشكلة.
-
صحيح عذرًا كتبت الأمر بشكل خاطيء، في عناصر 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>
- 4 اجابة
-
- 1
-
-
"Nest.js" و"Express" هما إطاري عمل (frameworks) لتطوير تطبيقات ويب باستخدام بيئة عمل Node.js. وعلى الرغم من أنهما يستندان إلى نفس تقنية الخلفية (Node.js) ويستخدمان لتطوير تطبيقات ويب، إلا أن لديهما اختلافات واختيارات تصميم مختلفة، وإليك بعض الفروق الرئيسية بينهما: الفلسفة والهيكل التنظيمي Express إطار عمل خفيف الوزن ومرن جدًا، ويقدم حلاً بسيطًا لبناء تطبيقات ويب بمساعدة مجموعة من المكتبات المتخصصة. Nest.js تم تصميمه لتوفير هيكل تنظيمي قوي ومنظم لتطبيقات Node.js، ويشجع على استخدام مفهوم الـ "Modules" و"Dependency Injection" لتسهيل إدارة واختبار التطبيقات الكبيرة والمعقدة. من حيث نمط التطوير Express يتيح لك حرية كبيرة في تنظيم التطبيق وكتابة الكود كما تراه مناسبًا. Nest.js يفرض تنظيمًا محددًا وهيكلاً معينًا على التطبيقات من خلال استخدام مفاهيم ونماذج محددة. الأداء Express بما أنه خفيف الوزن ولا يفرض الكثير من التجهيزات الإضافية، فهو أسرع من حيث الأداء في بعض الحالات. أما Nest.js بسبب هيكله التنظيمي والاعتماد على مكتبات إضافية، فهو أبطأ قليلاً في بعض الحالات. لكن دائمًا هناك تنازلات من أجل الحصول على أمرًا ما أي trade-off. دعم الأمان والتحقق Nest.js يتيح نمطًا صارمًا لمعالجة الأمان والتحقق من الهوية من خلال استخدام Middlewares وحماية الطرق (Guards). Express يقدم مكتبات وسائط (middlewares) للتحقق والأمان، ولكن Nest.js يقدم هيكلًا أكثر تنظيمًا وقوة في هذا الصدد. أيضًا Express لديه مجتمع ضخم ومستندات متاحة بشكل واسع، وهو أحد أقدم الإطارات وأكثرها شهرة. و Nest.js مع تزايد شعبيته، يزداد توفر المستندات والموارد، ولكنه لا يزال أحدث مقارنةً بـ Express.
-
عليك أن تقوم بتعديله ليقبل فقط هذه الصيغة ويستبعد الصيغة الأخرى (dd/mm/yyyy) عن طريق تعديل بعض أجزاء التعبير: ^(0?[1-9]|1[0-2])/([0-2]?[0-9]|3[0-1])/((19|20)\d{2})$ (0?[1-9]|1[0-2]) يسمح للشهر بأن يكون مكونًا من رقم واحد مع الصفر الاختياري مثل 01 أو رقمين بدون صفر مثل 12. ([0-2]?[0-9]|3[0-1]) يعبر عن اليوم ويسمح لليوم بأن يكون مكونًا من رقم واحد أو اثنين مع الصفر الاختياري مثل 01 أو أي رقم يتراوح بين 00 و 29، بالإضافة إلى الرقم 30 و 31 إذا كان الشهر يسمح بذلك. ((19|20)\d{2}) يعبر عن السنة وهو لا يحتاج إلى تعديل. وإليك مثال على كود جافاسكريبت لاستخدام التعبير النمطي المعدل للتحقق من تاريخ بتنسيق "mm/dd/yyyy": function validateDate(inputDate) { const regex = /^(0?[1-9]|1[0-2])\/([0-2]?[0-9]|3[0-1])\/((19|20)\d{2})$/; return regex.test(inputDate); } const date1 = "08/11/2023"; // تاريخ صالح بالتنسيق المطلوب const date2 = "11/08/2023"; // تاريخ غير صالح بالتنسيق المطلوب const date3 = "2023/08/11"; // تاريخ غير صالح بأي تنسيق console.log(validateDate(date1)); // سيطبع true console.log(validateDate(date2)); // سيطبع false console.log(validateDate(date3)); // سيطبع false
- 4 اجابة
-
- 1
-
-
تقييم جيد أحسنت، ولكن إذا أردت نصيحتي فلا تنتقل من HTML إلى CSS إلا بعد التفرقة بين عناصر الـ Block وinline وأيضًا القدرة على إنشاء نموذج form بالعناصر الخاصة به بشكل جيد بدون CSS أي تنسيقه من خلال عناصر HTML فقط. وذلك تحدي جيد لك وستتعلم الكثير من تلك التجربة، وتستطيع البحث عما تريد معرفته سواء على يوتيوب أو جوجل، ولكن عليك بالتفكير أولاً قبل البحث. ثم بعد تعلم CSS أنصحك بقراءة التالي :
- 4 اجابة
-
- 1
-
-
في حال أردت قراءة المصدر وهي المستندات الإنجليزية، فعليك بالبحث عما تريد معرفته من خلال كتابته ثم كتابة اسم اللغة أو الإطار بجانبه وليكن مثلاً دالة forEach في جافاسكريبت نبحث عنها كالتالي: foreach javascript وسيظهر لك نتائج في جوجل ومنها موقع Mozilla Developer أو MDN، وذلك الموقع هو الأفضل في حالة أردت معرفة اي شيء يتعلق بـ HTML, CSS, JS لكنه باللغة الإنجليزية. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference وللبحث عن النتائج العربية نبحث عن: forEach javascript شرح وستجد أنه من ضمن النتائج يوجد موسوعة حسوب وستجد بها شرح لمختلف اللغات والإطارات. وإليك مرجع للغة جافاسكريبت بها: https://wiki.hsoub.com/JavaScript ونفس الأمر طبقه node.js، وإذا أردت مشاهدة شرح بالفيديو، فعليك بالبحث بنفس الطريقة في يوتيوب من أجل النتائج الإنجليزية والنتائج العربية كما شرحت. والمستند الرسمي لـ node.js هو : https://nodejs.org/en/docs أما في موسوعة حسوب فهو التالي: https://wiki.hsoub.com/Node.js
-
الأمر بسيط ولا حاجة للإنزعاج والقلق، في حال أنك تتعلمين لغة جديدة مثل الإنجليزية هل بمشاهدة الدروس ستتمكنين من إتقان أو قراءة أو إتقان اللغة من أول مرة؟ بالطبع لا، الأمر بحاجة إلى التكرار في البداية والمراجعة كل فترة من خلال الممارسة وليس المشاهدة فقط، لذلك الطريقة الصحيحة للدراسة هي مشاهدة الدروس ثم محاولة فهم ما يتم شرحه والاستيعاب، وفي حال أردتي المزيد من التوضيح عليك بالبحث عما تريدينه على يوتيوب أو جوجل ولا تكتفي بشرح أي دورة في أي مكان عليك دائمًا بالبحث والقراءة والمشاهدة لتعلم المزيد وتوضيح الأمر لك. ثم تستطيعي السؤال أسفل الدرس ليتم مساعدتك وإرشادك، وبعد فهم الدرس واستيعابه عليك بالتطبيق مع المدرب في حال كان الفيديو طويل، وإن كان صغير تستطيعي الفهم ثم التطبيق في النهاية بمفردك لتثبيت المعلومات، وفي حال قمتي بالتطبيق مع المدرب، فعليك بالتطبيق بمفردك مرة أخرى حيث ستجدي أنك تخطأين في بعض الأشياء وستتعلمين الكثير من أخطائك، ثم مقارنة ما قمتي به بحل المدرب. وبحل التمارين بشكل يومي سيتحسن مستواكي شيئًا فشيئًا أو تنفيذ مشاريع بسيطة، ولا تنزعجي أبدًا من الصعوبة في البداية فتلك هي طبيعة مجال البرمجة.
-
بعض الخطوات التي يمكنك اتباعها لإعداد توقعات الأرباح وتقييم الشركة: جمع البيانات المالية. تحليل البيانات المالية. إجراء التوقعات المالية. تقييم الشركة. وستحتاج إلى جمع البيانات المالية للشركة التي تريد تحليلها، من خلال التقارير المالية للشركة، مثل الميزانية العمومية والحساب الختامي والبيان النقدي. بعد جمع البيانات المالية، ستحتاج إلى تحليلها، ويمكن القيام بذلك باستخدام مجموعة متنوعة من الأدوات والتقنيات، مثل النسب المالية والتحليل المقارن. ثم يمكنك البدء في إجراء التوقعات المالية. يمكن القيام بذلك باستخدام مجموعة متنوعة من الأساليب، مثل التحليل التقديري والتحليل التنبؤي. بعد إجراء التوقعات المالية، تأتي خطوة تقييم الشركة باستخدام مجموعة متنوعة من المعايير، مثل القيمة العادلة ومعدل العائد على الاستثمار. وإليك بعض النصائح التي قد تساعدك في مشروع تخرجك بالتحليل المالي: استخدم الأدوات والتقنيات المناسبة لتحليل البيانات المالية. قارن الشركة التي تريد تحليلها بشركات أخرى في نفس القطاع. خذ في الاعتبار العوامل الخارجية التي قد تؤثر على أداء الشركة. أعد النظر في توقعاتك المالية بشكل دوري.
-
الأمر غير ممكن بسبب إعتمادك على نفس الدومين، والحل المتاح هو تحويل الزائر ومنها الإعتماد على ملف .htaccess وذلك لتوجيه الزيارات من الدول الأجنبية إلى موقع الويب الإنجليزي وأضف السطر التالي إلى ملف .htaccess: RewriteCond %{HTTP_ACCEPT_LANGUAGE} ^en-US$ [NC] RewriteRule ^.*$ https://www.yourenglishwebsite.com/ [R=301,L] مع استبدال https://www.yourenglishwebsite.com باسم الدومين الذي تريد التوجيه إليه. وإذا كانت لغة الزائر هي en-US (الإنجليزية الأمريكية)، فإنه سيقوم بإعادة توجيه الزائر إلى موقع ويب باللغة الإنجليزية. لكن في حال كان المستخدم عربي ويستخدم لغة إنجليزية للمتصفح فستحدث مشكلة بسبب عملية التحويل. لذلك من الأفضل الإعتماد على خاصية IP geolocation من Cloudflare: تأكد من تسجيل الدخول إلى حسابك على Cloudflare. انتقل إلى قسم "Workers" في لوحة التحكم. انقر على "Create a Worker" أو ما يماثل ذلك. قم بكتابة الكود البرمجي الذي يقوم بالتحقق من موقع الزائر باستخدام خدمة IP Geolocation ويُعيد التوجيه وفقًا لذلك. فيما يلي مثال تقريبي: addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) async function handleRequest(request) { const response = await fetch('https://api.cloudflare.com/client/v4/zones/YOUR_ZONE_ID/requests', { headers: { 'X-Auth-Key': 'YOUR_API_KEY', 'X-Auth-Email': 'YOUR_EMAIL' } }) const data = await response.json() const countryCode = data.countryCode // استخراج البلد من البيانات المسترجعة if (countryCode === 'US') { // إعادة توجيه إلى الموقع الإنجليزي return Response.redirect('https://www.yourenglishwebsite.com', 301) } else { // إعادة توجيه إلى الموقع العربي أو أي موقع آخر return Response.redirect('https://www.yourarabicwebsite.com', 301) } } وعليك بتغيير "YOUR_ZONE_ID" و "YOUR_API_KEY" و "YOUR_EMAIL" إلى قيمك الفعلية. الكود أعلاه يعتمد على توفر خدمة IP Geolocation من Cloudflare. إذا كنت تستخدم خدمة خارجية للتحقق من موقع الـ IP، يمكنك تكييف الكود وفقًا لذلك. بعد كتابة الكود، انقر على "Save and Deploy" لنشر العامل وتفعيله. وتستطيع البحث عن How To Setup Geo Redirection In Cloudflare. وهناك إضافة لووردبريس تقوم بذلك IP2Location Redirection.
-
كل فترة يتم إضافة دورات جديدة للأكاديمية أو تحديث الدورات الموجودة بالفعل في حال دعت الحاجة إلى ذلك، وإطار ASP.NET المعتمد على لغة C# مطلوب في سوق العمل بالفعل بجانب لغة PHP وإطار لارافيل وذلك في الدول العربية، أضف على ذلك ستجد أنه يتم طلب إطار Angular الخاصة بالواجهة الأمامية بجانب إطار ASP.NET. لكن هناك أولوية للدورات، وفي الوقت الحالي تستطيع الإعتماد على الدورات المتاحة على يوتيوب أو على مواقع أخرى، لكن عليك بتعلم C# أولاً. وASP.NET يولد صفحات HTML ، لذا فإن معرفة HTML و CSS أمر مهم أيضًا. بالإضافة إلى أن ASP.NET يمكنه تخزين البيانات في قاعدة بيانات ، لذا فإن معرفة قاعدة بيانات مثل SQL Server أمر مهم كذلك. وحاليًا أحدث إصدار من ASP.NET هو ASP.NET Core وهو إطار عمل خفيف الوزن وقابل للنقل، ويوصى بتعلم ASP.NET Core بدلاً من ASP.NET القديم.
- 3 اجابة
-
- 1
-
-
عليك بإضافة Popper قبل استيراد ملف جافاسكريبت لمكتبة bootstrap أي كالتالي: <script src="https://fastly.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js" integrity="sha384-I7E8VVD/ismYTF4hNIPjVp/Zjvgyol6VFvRkX/vR+Vc4jQkC+hVqc2pM8ODewa9r" crossorigin="anonymous" ></script> <script src="bootstrap/bootstrap.min.js"></script> حيث أن الكود يتم قرائته من الأعلى للأسفل وإذا قمت بإضافته بعد مكتبة bootstrap لن يتم العثور على Popper. وتستطيع استخدام ملف bootstrap.bundle.js بدلاً من bootstrap.min.js حيث أن نسخة bundle مضمنة بداخلها Popper وبالتالي لن تحتاج إلى تضمين مكتبة Popper. وأيضًا في حال أنك من مصر تجنب استيراد المكتبات من موقع jsdelivr أو تستطيع استبدال cdn التي في أول الرابط بكلمة fastly. ومن الأفضل استخدام موقع https://cdnjs.com/
-
في حال أنك من مصر تجنب استخدام jsdelivr أو قم باستبدال cdn في أول الرابط بـ fastly وسيعمل. ومن الأفضل أن تعتمد على موقع cdnjs ورابط المكتبة هو التالي: <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.1/css/bootstrap.min.css" integrity="sha512-Z/def5z5u2aR89OuzYcxmDJ0Bnd5V1cKqBEbvLOiUNWdg9PQeXVvXLI90SE4QOHGlfLqUnDNVAYyZi8UwUTmWQ==" crossorigin="anonymous" referrerpolicy="no-referrer" /> أو تستطيع تحميل المكتبة واستيراد الملف نفسه من خلال الرابط التالي: https://getbootstrap.com/docs/5.3/getting-started/download/ ستجد زر باسم Download وبعد التحميل وفك الضغط ستجد ملفات CSS وJS وما تحتاجه هو ملف bootstrap.min.css. أو تحميل المكتبة من خلال npm.
-
عليك باستخدام عبارة if للتحقق مما إذا كان الإدخال يساوي الحرف "o"، وإذا كان الأمر كذلك، يمكنك طباعة رسالة إلى المستخدم ومطالبته بإدخال رقم مختلف. مثل إضافة الكود التالي إلى الدالة if_is_equl(): if inp == 'o': print('لا يمكنك إدخال o. يرجى إدخال x أو 1 إلى 9.') inp = int(input('أدخل رقمًا: ')) سيتحقق الكود مما إذا كان الإدخال يساوي الحرف "o". إذا كان الأمر كذلك، فسيطبع رسالة إلى المستخدم ويطلب منه إدخال رقم مختلف. ثم سيُطلب من المستخدم إدخال رقم جديد. يمكنك أيضًا إضافة ذلك الكود إلى حلقة while في الوظيفة الرئيسية: while True: inp = int(input("أدخل رقمًا: ")) if inp > 9: print("الرقم أكبر من الحد الأقصى وهو 1 إلى 9. أعد المحاولة .....") elif inp == 'o': print('لا يمكنك إدخال o. يرجى إدخال x أو 1 إلى 9.') continue else: break وسيمنع ذلك المستخدم من إدخال الحرف "o" بدلاً من الحرف "x".
-
لا يوجد إجابة واحدة على سؤالك، فالأمر بحاجة إلى توضيح ما الذي تريد التسويق له وما الغرض وما هي الفئة التي تستهدفها؟ حيث أن كل منصة تواصل إجتماعي حاليًا تجذب فئة معينة ومختلفة تمامًا عن أي منصة أخرى، لذلك عليك بتحديد ما الذي تريده لتحديد نوعية الأشخاص المهتمين بما تريده والتسويق لنفسك على المنصة الصحيحة. فمثلاً ستجد البعض يهتم بالتسويق لنفسه على موقع مثل LinkedIn، بينما شخص آخر من الأفضل له التسويق على منصة مثل فيسبوك وشخص آخر الأفضل له تويتر، وذلك يعتمد على البلد التي تعيش بها وبلد الأشخاص المهتمين بأعمالك أو من تبحث عنهم أنت. قسم مقالات التسويق الذاتي في أكاديمية حسوب
-
من الأفضل أن تستخدم إضافة Live server: https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer وبعد تثبيتها ستجد زر باسم Go Live اضغط عليه وسيظهر لك الموقع وسيتم تطبيق أي تغييرات تجريها بدون الحاجة إلى إعادة تحديث الصفحة، وفي حال ظهر لك ملفات المشروع عليك باختيار ملف HTML الرئيسي ومن الأفضل تسميته index.html ليتم التعرف عليه مباشرًة.
-
أنت تقصد addEventListener، صحيح؟ في حال أردت تنفيذ أمر معين عند حدوث حدث محدد، عليك إما تمرير دالة callback لكي يتم استدعائها عند وقوع الحدث، أو كتابة دالة يتم استدعائها عند وقوع الحدث وليس كتابة الكود بشكل مباشر، أي نكتب دالة كالتالي بدلاً من callback: function randomNumberGenerator() { return Math.random(); } document.addEventListener("mousemove", function(e) { document.getElementById("demo").innerHTML = randomNumberGenerator(); });
- 4 اجابة
-
- 1
-
-
هناك خلط في الفهم بين كيفية استخدام وتسجيل الحدث (event listener) وكيفية تعيين دالة كولباك (callback function). عند استخدام addEventListener مثلما هو موضح في المثال الأول: document.addEventListener("mousemove", myFunction); هذا يعني أننا نقوم بتعيين دالة myFunction كدالة استجابة لحدث "mousemove" ،وتلك الدالة ستُستدعى في كل مرة يتم فيها تحريك الماوس على الشاشة، وسيتم تنفيذ الكود الموجود في داخل الدالة في كل مرة. أما الشيء الذي قمت بتجربته: document.addEventListener("mousemove", document.getElementById("demo").innerHTML = Math.random()); هناك خطأ في الاستخدام، لأنك تقوم بتعيين نتيجة تقييم تعبير document.getElementById("demo").innerHTML = Math.random() كدالة استجابة للحدث "mousemove"، وذلك ليس هو الهدف المطلوب. بالنسبة للجزء الثاني من السؤال، عند استخدام setTimeout، يجب تمرير دالة كولباك كمعامل أول والوقت الذي يجب أن تنتظره كمعامل ثاني. لذلك، يجب استخدامه بهذه الطريقة: const myTimeout = setTimeout(function() { document.getElementById("demo").innerHTML = "Happy day!"; }, 5000); وذلك سيؤدي إلى تغيير نص العنصر برقم عشوائي بعد مرور 5 ثواني من تنفيذ السكريبت.
- 4 اجابة
-
- 1
-