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

Mustafa Suleiman

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

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

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

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

    296

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

  1. المشكلة في استخدام المتغير TouchDist كـ "object" بدلاً من استخدامه كـ "Vector2". يجب التأكد من أن المتغير TouchDist من نوع Vector2. وللتأكد من ذلك ، يمكنك التحقق من الكلاس FixedTouchField والتحقق من أن تحديث المتغير TouchDist يتم باستخدام Vector2 وليس object. وقد يكون هذا الخطأ قد ظهر بسبب تغيير نوع المتغير في وقت لاحق في الكود. TouchDist هو كائن من النوع object ولا يحتوي على خصائص x و y كما هو متوقع. فيجب تحويل TouchDist إلى النوع المناسب لهذه الخصائص. وفي هذه الحالة، على الأرجح أن FixedTouchField هو الكائن الذي يتم تمرير TouchDist إليه. لذلك، يجب التأكد من أن FixedTouchField يحتوي على خصائص x و y المطلوبة. ويمكنك تجربة تغيير السطر التالي: Yaxis += touchField.TouchDist.x * RotationSensitivity; Xaxis -= touchField.TouchDist.y * RotationSensitivity; إلى: Yaxis += touchField.TouchDist.normalized.x * RotationSensitivity; Xaxis -= touchField.TouchDist.normalized.y * RotationSensitivity; بتحويل TouchDist إلى نوع Vector2 باستخدام الخاصية normalized التي تعيد قيمة Vector2 مع محافظة الاتجاه الأصلي ولكن بقيمة طول تمثيلي يساوي 1.0. بعد ذلك، يمكن استخدام خصائص x و y بشكل صحيح.
  2. المشكلة تنتج عن عدم وجود الامتدادات اللازمة للتعامل مع XML binding في جهاز الكمبيوتر الخاص بك. حاولي تجربة الخطوات التالية لحل هذه المشكلة: تثبيت حزمة JDK المطلوبة: يجب أن تتأكدي من تثبيت JDK بنجاح على جهاز الكمبيوتر الخاص بك. قومي بزيارة الموقع الرسمي لـ JDK وتنزيل الإصدار المناسب لنظام التشغيل الخاص بك وتثبيته. تحديث مسار البيئة: تأكدي من تحديث مسار البيئة الخاص بك بمسار تثبيت JDK و Android SDK على النحو التالي: في نظام Windows: افتحي "محرر المتغيرات" من خلال الضغط على زر البدء والبحث عن "تحرير المتغيرات البيئية" ، وقم بتحديد "مسار المستخدم" ، وأضيفي المسار الخاص بتثبيت JDK و Android SDK إلى المتغير PATH. 3. تثبيت مكتبة JAXB المطلوبة: قد يتطلب الأمر تثبيت مكتبة JAXB اللازمة لتشغيل البرنامج. ويمكنك تنزيل مكتبة JAXB من موقع Oracle الرسمي وتثبيتها على جهاز الكمبيوتر الخاص بك. حيث قد المشكلة بعدم تثبيت حزمة javax.xml.bind.JAXBException المطلوبة من قبل مكتبة Android SDK التي يستخدمها Cordova. وإذا كنت تستخدمي JDK 9 أو إصدار أحدث، فقد تواجه مشكلة في تثبيت حزمة JAXB بسبب إزالة هذه الحزمة من JDK 9 وما بعده. في هذه الحالة ، يمكن استخدام إصدار JDK أقدم يتضمن حزمة JAXB أو يمكنك تثبيت حزمة JAXB بشكل منفصل. بعد تثبيت حزمة JAXB ، يجب أن يتمكن Cordova من تثبيت Android target بنجاح. وإذا واجهت أي مشاكل أخرى ، فيمكنك مراجعة مستندات Cordova الرسمية.
  3. يمكنك تعلم ما تشاء بعد تعلم بوت ستراب و tailwindcss، فهما الأساس في تطوير الويب حاليًا.
  4. الأمر مشتت فعلاً فهناك الكثير من المكتبات التي توفر لك مكونات جاهزة وتنسيقات CSS، والأمر يعتمد على إحتياجاتك. فإذا كنت تريد إنشاء تصاميم متشابهة وبسيطة فمكتبة Bootstrap والمكتبات المشابهة لها هي الخيار الأمثل لك. اما إذا كنت تريد حرية في تخصيص التنسيق واستخدام تنسيقات متفق عليها Standard في تصميمك ليبدوا أنك تم تنفيذه بشكل إحترافي، فعليك باستخدام tailwindCSS، وهي الأكثر إنتشارًًا حاليًا ويتم استخدامها بكثرة. ولكن يجب عليك تعلم Bootstrap أيضًا فنسبة كبيرة من المشاريع يتم استخدامها بها، ولذلك أنت بحاجة إلى أن تكون على علم بها، وكنصيحة تعلم tailwind أولاً ثم Bootstrap.
  5. في الدول العربية يجب التركيز وبشدة على الحصول على شهادة جامعية، فللأسف بدونها ستعاني، وإذا كنت تريد تعلم البرمجة فقم بالدراسة بجد وإجتهاد لدخول كلية علوم الحاسب. وهي ستساعدك بشكل كبير في التركيز على مجال البرمجة على الرغم من أن الكلية نفسها لن تقدم لك شيء، لكن ستساعدك على إحاطة نفسك بأشخاص مهتمين بالمجال وأيضًا ستركز أنت على دراسة البرمجة لكونها متعلقة بدراستك في الأساس. لذلك لا مشكلة في التوقف وتخصيص ساعتين أو حتى ساعة يوميًا لكتابة الكود أو تعلم شيء جديد، لكن لا تنقطع فستعود من نقطة الصفر. وبخصوص قيمة الشهادة، فهي لا قيمة لها، سوى في بعض الشركات التي تطلب دارسي علوم الحاسب، لكن الأغلبية تنظر إلى مهاراتك واللغات التي تبرع بها والقيمة التي ستضيفها للشركة لا الشهادة التي تمتلكها على الرغم من أنها قد تعطيك أفضلية بلا شك لكونك متخصص ولكن يجب أن تكون جيد في البرمجة لتحصل على تلك الأفضلية.
  6. شعور طبيعي في البداية ومع التكرار سيزول، ولكن يجب أن تقرأ عن كل خاصية تقوم باستخدامها وتجربتها بعد القراءة، فالغالبية يشاهد المدرب يقوم باستخدام خاصية بهذا الشكل ثم يقوم بتقليده لكنه لا يعلم كيف تعمل تلك الخاصية فعلا. والنتيجة هي أنه يقوم بعملية التصميم عن طريق التجربة والخطأ أكثر من مرة حتى ينجح في تنفيذ المطلوب، رغم أنه من الأسهل فهم طبيعة عمل خواص CSS وستجد أن الأمر منطقي، وهناك مصادر لذلك: https://wiki.hsoub.com/CSS https://academy.hsoub.com/programming/css/ https://developer.mozilla.org/en-US/docs/Web/CSS/Reference وستجد ما تحتاجه في موسوعة حسوب بالإضافة إلى الأكاديمية، وأيضًا مستندات MDN رائعة جدًا. الخطوة التي تلي ذلك هو التطبيق على أجزاء صغيرة مثل نموذج Form أو ما شابه لفهم طبيعة عمل الخواص بشكل أفضل، ثم محاولة بناء موقع كامل لاستخدام كل ما تعلمته وتثبيت المعلومات وتطوير مهاراتك. ولا تشغل بالك بعملية التصميم في تلك المرحلة، يكفي أن تعلم أساسيات التصميم فقط بل يجب عليك ذلك من البداية مثل المساحات والخطوط وخلافه، أما التصميم الكامل فقم بتقليد أي تصميم تراه وينال إعجابك.
  7. يجب العثور على عنصر HTML الذي يحتوي على المعلومات المطلوبة واستخراجها باستخدام BeautifulSoup. حيث يمكن القيام بذلك باستخدام الكلاس الخاص بعنصر HTML الذي يحتوي على المعلومات المطلوبة. وباستطاعتك استخدام ميثود find_all للبحث عن جميع العناصر التي تحتوي على الكلاس المحدد ثم الوصول لنص الراتب باستخدام text attribute. ويمكن تحديد الكلاس المحتوي على الراتب عن طريق فحص مصدر الصفحة والعثور على العنصر الذي يحتوي على الراتب، أو بإمكانك استخدام ميثود البحث المتقدم select للعثور على العنصر المحتوي على الراتب عن طريق تحديد مسار CSS المطلوب. في النهاية، يجب أن يكون لديك شيء ما مثل هذا الكود: for link in links: result = requests.get(link) src = result.content soup = BeautifulSoup(src,"html.parser") salary_element = soup.select_one("div.css-rcl8e5 > span.css-4xky9y") salary.append(salary_element.text if salary_element else None) والكود يستخدم select_one للبحث عن العنصر الذي يحتوي على الراتب باستخدام المسار CSS المحدد ثم يستخرج النص الموجود داخل العنصر. في حال عدم العثور على العنصر، سيتم إضافة None إلى قائمة الرواتب.
  8. قد يكون هذا نتيجة لتغيير مستوى سطوع الشاشة. حيث يمكن للعديد من الأجهزة المحمولة التي تعمل على البطارية تغيير مستوى سطوع الشاشة تلقائيًا عند فصل الشاحن، الأمر الذي يؤدي إلى اهتزاز الشاشة. لحل هذه المشكلة ، يمكنك تجربة تغيير إعدادات سطوع الشاشة لجعلها أقل حساسية. ويمكنك أيضًا محاولة توصيل الكمبيوتر المحمول بمقبس آخر أو استخدام كابل طاقة مختلف. إذا لم تنجح هذه الخطوات يمكنك تجربة الحلول التالية: الحل الأول: قم بالدخول إلى إعدادات النظام الخاصة بالعرض display عن طريق النقر على زر "إبدأ" ثم النقر على العنصر "الإعدادات". اختر "العرض" من الخيارات المتاحة في الإعدادات. في نافذة العرض، اختر "إعدادات الألوان عالية الجودة HDR لنظام Windows" من القائمة الجانبية. تحت "خيارات البطارية"، اختر "تحسين الجودة للصورة" بدلاً من "تحسين الطاقة" (Optimize for battery life) في قائمة الخيارات. يمكنك أيضًا تعطيل HDR تمامًا بالذهاب إلى إعدادات العرض ، وتحديد خيار "تعطيل HDR" تحت "إعدادات Windows HD Color". الحل الثاني: قم بالدخول إلى إعدادات الحاسوب الخاصة بك عن طريق النقر على زر "إبدأ" ثم النقر على العنصر "الإعدادات". اختر "نظام system" من الخيارات المتاحة في الإعدادات. في نافذة "نظام"، اختر "طاقة وسهر Power & Sleep" من القائمة الجانبية. تحت "الإعدادات المتقدمة للطاقة"، اضغط على الارتباط "إعدادات إضافية للطاقة". ستظهر لك قائمة بخيارات خطط الطاقة المتاحة. اختر الخيار المسمى "متوازن Balanced (موصى به)". انقر على الارتباط "تعديل إعدادات الخطة" بجوار خيار الطاقة المختار. ستظهر لك الخيارات المتاحة للتعديل على إعدادات السطوع. يمكنك ضبط مستوى السطوع على 75٪ أو أقل على البطارية. ثم احفظ الإعدادات. الحل الثالث: قم بالنقر بزر الماوس الأيمن في أي مكان فارغ على سطح المكتب واختر "Graphics Properties". في النافذة التي تظهر، انتقل إلى وضع "Advanced Mode" عن طريق النقر على الأيقونة الموجودة في الزاوية اليمنى العليا من النافذة. سيتم عرض علامة تبويب "Power"، انتقل إليها عن طريق النقر عليها. تحت "Power Source"، قم بتغيير القائمة المنسدلة إلى "On Battery". ستظهر لك خيارات "Display Power Saving Technology". قم بإلغاء تحديدها (Uncheck) عن طريق النقر عليها. انقر على زر "OK" لحفظ التغييرات وإغلاق النافذة.
  9. باستطاعك بناء متجر إلكتروني باستخدام إطار عمل Laravel عن طريق اتباع الخطوات التالية: 1- تثبيت Laravel على الخادم الخاص بك باستخدام Composer. 2- إنشاء قاعدة بيانات MySQL وتكوينها في ملف .env 3- إنشاء نموذج لكل منتج سيتم بيعه في المتجر الإلكتروني باستخدام Migrations. 4- إنشاء صفحات وعرض المنتجات في المتجر الإلكتروني باستخدام Controllers وViews. 5- تكوين نظام دفع آمن باستخدام أحد بوابات الدفع المتاحة مثل Stripe أو PayPal. 6- تكوين معالجات الدفع لتتمكن من معالجة الدفعات وتحويل الأموال إلى حساباتك. يمكنك استخدام Laravel Cashier لإدارة المعاملات المالية بسهولة. 7- تكوين رسائل البريد الإلكتروني لإرسال رسائل تأكيد الدفع والفواتير للعملاء. يمكنك استخدام Laravel Notifications لإرسال الرسائل البريدية. بالإضافة للخطوات السابقة هناك المكتبات المفيدة: Snipe-IT: هي منصة لإدارة الموارد الأصول والمخزونات، يمكن استخدامها لبناء نظام إدارة المخزون والمنتجات والمستخدمين في المتجر الإلكتروني. Voyager: هي لوحة تحكم مبنية على Laravel توفر واجهة مستخدم لإدارة المحتوى، يمكن استخدامها لبناء واجهة مستخدم لإدارة المنتجات والمستخدمين والطلبات في المتجر الإلكتروني. Laravel Nova: هي لوحة تحكم مبنية على Laravel تتيح إدارة الموارد المتعددة، يمكن استخدامها لإدارة المنتجات والمستخدمين والطلبات في المتجر الإلكتروني. Laravel Ecommerce: هي حزمة توفر ميزات المتجر الإلكتروني كاملة، والتي يمكن تخصيصها وتعديلها بسهولة لتناسب الاحتياجات الخاصة بك. وهناك العديد من المكتبات والحزم التي يمكن استخدامها لبناء متجر إلكتروني باستخدام لارافيل بشكل أسهل، مثلاً باستخدام الحزمة الإضافية Laravel Spark. والتي توفر حزمة Spark ميزات كاملة لإنشاء متاجر إلكترونية وتأتي مع العديد من المميزات مثل: نظام الفوترة دفع الفواتير دعم مدفوعات البطاقات الائتمانية والخدمات المالية الأخرى ميزة الإعلانات والتذكيرات الآلية نظام إدارة الطلبات والمخزون دعم الشحن وتتبع الشحنات دعم الإشعارات والبريد الإلكتروني يمكنك الحصول على Laravel Spark من موقعها الرسمي https://spark.laravel.com/ وهي تأتي بتكلفة مدفوعة. بعد تثبيت Laravel Spark، يمكنك إنشاء متجرك الإلكتروني بسهولة باستخدام أدوات التخصيص الخاصة بالحزمة. كما يمكنك تكوين قنوات الدفع المختلفة بسهولة باستخدام خيارات الدفع المدمجة في Laravel Spark. المقالات الخاصة بإطار عمل لارافيل في أكاديمية حسوب
  10. Node.js يعمل بشكل افتراضي في وضع CommonJS وليس ES Modules الذي يتضمن استخدام export وimport. وبالطبع لايزال بإمكانك استخدام export وimport في Node.js، ولكن يجب أن تقوم بتحديد نوع الموديول الذي تستخدمه في ملف package.json الخاص بمشروعك. أي يجب عليك تحديد "type": "module" في ملف package.json الخاص بمشروعك، ثم يمكنك استخدام export وimport. أيضًا، في حال استخدام CommonJS ، يجب استخدام module.exports بدلاً من export لتصدير الوحدات وrequire بدلاً من import لاستيرادها. على سبيل المثال: { "name": "myapp", "version": "1.0.0", "description": "My awesome app", "type": "module", "main": "index.js", "scripts": { "start": "node index.js" }, "author": "Your Name", "license": "MIT" } بعد تعيين "type": "module" في ملف package.json، يمكنك استخدام الـ import في ملف آخر لاستدعاء الدوال التي يتم تصديرها. على سبيل المثال، إذا كانت الدالة login تم تصديرها في ملف index.js، فيمكنك استيرادها في ملف آخر باستخدام الـ import على النحو التالي: import { login } from './index.js'; // استخدام الدالة المستوردة هنا يرجى ملاحظة أنه يجب تحديد مسار الملف الصحيح في الـ import، ويجب أن يتوافق اسم الملف المستورد مع اسم الملف الذي يتم تصديره في الملف الأصلي.
  11. تم ذكر معلومات قيمة بخصوص سؤالك، لكن لم يتم ذكر الطريقة الصحيحة لتعلم البرمجة حيث يجب القيام بالتالي: 1- إختيار مسار تعليمي واضح قبل البدء: بعد تحديد المجال الذي تريد التخصص به مثل تطوير التطبيقات أو تطوير مواقع الويب، يجب عليك إختيار مسار تعليمي Roadmap مخصص للمجال الذي إخترته من مصدر موثوق وقام طلاب آخرين من قبلك بدراسته. وإلتزم بذلك المسار التعليمي وستصل أسرع، فهناك مئات المصادر على الإنترنت وهي نعمة ونقمة في نفس الوقت، لذلك لا تشتت نفسك وإلتزم بالكورسات المذكورة في المسار أو الكورسات التي قمت بإختيارها بناءًا على تقييمات طلاب سابقين. ويجب أن تحتوي تلك الكورسات على تطبيقات عملية على مشاريع حقيقية بها تعقيد كافي لتعليمك كيف يتم بناء المشاريع وتوظيف ما تعلمته. فبناء النماذج الصغيرة في بداية مرحلة التعلم أمر لابد منه بلا خلاف، لكن فيما يتعلق بسوق العمل والواقع فأنت ستعمل على بناء مثل تلك المشاريع المعقدة والتي تتطلب وقت وجهد في تنفيذها. وفي النهاية ستحصل على مشروع يصلح لوضعه في معرض أعمالك عند التقدم للوظيفة أو في مواقع العمل الحر. 2- أنت بحاجة إلى 6 شهور أو سنة تبعًا لمستواك وجهدك تلك هي الحقيقة ولا تنخدع بالعبارات التسويقية بأنك ستصبح مبرمج خلال شهرين أو ثلاث، بل أقل فترة في رأي هي 6 شهور مع الإلتزام بمسار تعليمي. بعد تلك الفترة سيتوجب عليك العمل على مشاريع أخرى لتكتسب الخبرة والثقة اللازمة للتقدم للوظائف، ففترة الـ 6 شهور أو سنة هي فترة تعلم فقط، ولا تعتبر فترة خبرة. وخلال فترة تطبيقك على مشاريع قم بالتقديم على وظائف بمستوى Junior أو Entry level، وسيتم رفضك كثيرًا أو لن يتم الرد عليك، فلا تكن حساسًا أكثر من اللازم واستمر بالعمل، فالجميع مر بتلك المرحلة، الجميع كذلك. 3- التطبيق على المشاريع الكبيرة أكثر من مرة أثناء فترة التعلم وتطبيقك على المشاريع داخل الكورسات وبعد الإنتهاء من المشروع. يجب عليك القيام به مرة أخرى خلال فترة بحد أقصى أسبوع، فصدقًا ستجد نفسك قد نسيت الكثير من الأمور ففي البداية مرة واحدة لا تفكي، فتعلم البرمجة عملية تكرارية وتحتاج إلى التطبيق أكثر من مرة على الكود في البداية لتثبيت المعلومات والمفاهيم. لذلك لا تكتفي بالتطبيق مرة واحدة أو كتابة الكود مرة واحدة وراء المدرب في الكورس. 4- ابحث عن كل ما يدور في بالك جوجل هو صديقك كمبرمج، فلا تجعله عدوك، لكن لا تهرع بالبحث أولاً بل قم بالتفكير في حل للمشكلة وتجربته، بعد ذلك قم بالبحث عن حلول وأسباب تلك المشكلة، وقراءة المقالات ولا تتكاسل في تعلم الأشياء الجديدة التي ستجدها في طريقك بلا شك.
  12. مرحبًا @عبد الرحمن جهاد ما تشعر به أمر طبيعي للغاية، وهي نقطة فارقة فإما أن تستجمع عزيمتك وتتغلب على خوفك وقلقك وتجبر نفسك على الإعادة والتكرار، أو ستصبح مثل الغالبية الذين ظنوا أن مجال البرمجة سهل ويمكن تعلمه خلال شهر. والواقع ليس كذلك، ولولا المشقة لساد الناس كلهم، وما يعطي لمجال قيمته هو صعوبته في التعلم ومقدار الإجتهاد المطلوب فيه، لذلك ستجد مرتبات المبرمجين مرتفعة مقارنًة بباقي الوظائف، والأمر ليس من فراغ. فالمبرمجين المحترفين قليلون بسبب مقدار الجهد المطلوب للوصول لمستوى محترف، وذلك عن طريق تعلم الأساسيات والتركيز عليها بشدة، وبعد ذلك يمكنك تعلم التقنيات وإطارات العمل المختلفة. ونصيحتي إليك هي، أرجو ألا تنتقل من نقطة أو فيديو إلى آخر إلا بعد إعادة كتابة الكود أكثر من مرة حتى تفهمه وتصبح قادر على إنشاء أمثلة أخرى بنفس الكود أو التعديل عليه. وذلك الأمر يمكن أن يتم من خلال إعادة مشاهدة الفيديو وقراءة دروس ومقالات في موسوعة حسوب و أكاديمية حسوب، فهناك مقالات كثيرة جدًا تغطي لغة جافاسكريبت وبالأمثلة. فقط قم بالبحث عن اسم الدرس أو الدالة أو الجزء التي تقوم بدراسه في اللغة ثم ضع بجانبه كلمة حسوب وستجد ما تريده. صدقًا في بدايات تعلمي للبرمجة كنت أقضى أكثر من 10 ساعات يوميًا في التعلم وربما قضيت يوم كامل في فهم واستيعاب جزء من اللغة لكنه هام للغاية أو محاولة التدرب على ما تعلمته وحل المشاكل التي تواجهني بالبحث والقراءة والتجربة. والوقت هنا هو العامل الأهم، يجب أن تعطي نفسك الوقت الكافي لتشعر بالتحسن، فعند الذهاب لصالات الجيم لن تنمو لك العضلات مباشرًة بل يجب أن ترهق نفسك بشكل يومي أو متكرر على مدار الأسبوع وبعد فترة من الزمن تبعًا لمستواك ستصل بلا شك. فمن أدمن طرق الباب، يوشك أن يُفتح له. أيضًا نصيحة أخرى، لابد ويجب عليك أن تتعلم الإنجليزية جنبًا إلى جنب مع تعلم البرمجة، فصدقًا ستعاني من ذلك، فلغة البرمجة هي الإنجليزية، ولديك قناة زي أمريكان إنجليش يمكنك التعلم منها أو قناة طليق. ولا تتردد في السؤال عن أي شيء يخطر في بالك، وستجد من يساعدك هنا. بالتوفيق إن شاء الله.
  13. يمكنك استخدام jQuery لإزالة الكلاس الذي تم إضافته إلى الديف عن طريق استخدام دالة removeClass(). في الكود jQuery الذي قمت بإضافته، يمكنك استخدام محدد CSS لاستهداف الديف وإزالة الكلاس المحدد. على سبيل المثال، إذا كان للـ div الكلاس الأول "first-class" والكلاس الثاني "second-class"، يمكنك استخدام الكود التالي: $('div.first-class').removeClass('second-class'); هذا الكود يستهدف جميع الديفات التي لديها الكلاس الأول "first-class" ويزيل الكلاس الثاني "second-class". يمكنك استخدام محدد CSS آخر لاستهداف الديف الذي تريد تغييره. ويجب وضع هذا الكود داخل ملف JavaScript وتضمينه في صفحة HTML.
  14. من المرجح أن يظهر لك العديد من الأخطاء الناتجة عن عدم تمكن النظام من العثور على هذه الملفات. على سبيل المثال، إذا كنت تستخدم Python وفقدت مسار متغير البيئة "PYTHONPATH" الخاص بك، فلن تتمكن من استخدام المكتبات التي تعتمد عليها في تطبيقاتك. لحل هذه المشكلة، يمكنك إعادة تثبيت المسارات المفقودة من جديد وإضافتها إلى متغيرات البيئة path مرة أخرى. يمكنك القيام بذلك يدويًا إذا احتجت لذلك ففي الغالب يتم إضافة أغلب المتغيرات بشكل تلقائي عند التثبيت، بإضافة المسارات إلى متغيرات البيئة path من خلال خصائص النظام في Windows أو عن طريق إعدادات النظام في Linux و macOS. ولكن إذا أردت عمل نسخة إحتياطية، فيمكنك استخدام السكريبت التالي: ووظيفته هو عمل نسخ احتياطية للمسارات والمتغيرات في نظام Windows وإنشاء ملف reg لاستعادتها. يجب إنشاء ملف بإمتداد .bat ووضع السكريبت به، أي قم بإنشاء ملف باسم path-backup.bat ثم إضغط بزر الفأرة الأيمن وإختار edit ثم ضع السكريبت به وإحفظ وشغل السكريبت. @echo off set BACKUP_PATH=C:\backup set BACKUP_FILE=%BACKUP_PATH%\path_variables.reg :: create backup directory if it doesn't exist if not exist %BACKUP_PATH% mkdir %BACKUP_PATH% :: backup system path variables reg export "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" %BACKUP_FILE% /y :: backup user path variables reg export "HKCU\Environment" %BACKUP_FILE% /y echo Backup of path variables is created at %BACKUP_FILE% pause تم تعيين مسار النسخ الاحتياطي إلى مجلد C:\backup في المتغير BACKUP_PATH أي ستجد المجلد في قرص الـ C باسم backup، وتم تسمية الملف الاحتياطي path_variables.reg في المتغير BACKUP_FILE. ويتم نسخ متغيرات البيئة في نظام Windows في المفتاح HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment للنظام و HKCU\Environment للمستخدم. والأمر reg export للحصول على تفاصيل مفاتيح التسجيل وتصديرها إلى الملف المحدد. ولاستعادة المسارات والمتغيرات المحفوظة، يمكن فتح ملف reg وتشغيله بعد إعادة تحميل الويندوز أو عند الحاجة.
  15. الخطأ يشير إليك بالتوجه إلى الرابط التالي لتفعيل الفواتير، وستجد المشروع الخاص بك وسيتطلب منك تفعيل الفواتير لذلك المشروع: https://console.cloud.google.com/projectselector2/billing/enable?utm_source=Docs_BillingNudge&pli=1 والجدير بالذكر أن هناك نوعان من حسابات الفواتير متاحة على منصة Google، حساب فواتير Google Cloud وحساب فواتير Google Maps Platform. ويبدو أنك قمت باستخدام حساب فواتير Google Cloud وربما يمكنك تجربة استخدام حساب فواتير Google Maps Platform لتفعيل Places API والحصول على الملأ التلقائي للأماكن. وإذا كنت تواجه مشكلة في تغيير الحساب الخاص بالفواتير للمشروع الحالي، فيمكنك إنشاء مشروع جديد وتوصيله بحساب فواتير Google Maps Platform. https://developers.google.com/maps/get-started أيضًا باستطاعتك استخدام الرابط الذي تم توفيره لإنشاء حساب فواتير Google Maps Platform، كما يمكنك التبديل بين حسابات الفواتير عن طريق تعطيل الفواتير في المشروع الحالي ، ثم تغيير حساب الفواتير وتفعيل الفواتير مرة أخرى.
  16. هناك العديد من خيارات نظام إدارة المحتوى المتاحة لتطوير موقع جامعة باستخدام Laravel والأمر يتوقف على إحتياجاتك، وعلي أي حال هناك بعض الخيارات الجيد والتي تتضمن: 1- Laravel Nova: هي حزمة إضافية لـ Laravel توفر واجهة مستخدم مرنة وسهلة الاستخدام لإدارة المحتوى. يمكن للمستخدمين إضافة وتحرير المحتوى بسهولة وتخصيص الواجهة حسب احتياجات المشروع. 2- Backpack for Laravel: هي حزمة إضافية لـ Laravel توفر واجهة مستخدم مرنة وسهلة الاستخدام لإدارة المحتوى. توفر Backpack إدارة المحتوى بشكل أساسي، مع إمكانية تخصيص الواجهة والعمليات حسب احتياجات المشروع. 3- WordPress: هو نظام إدارة المحتوى الأكثر شيوعًا في العالم والذي يمكن تثبيته في Laravel باستخدام حزمة الإضافة WP-Laravel. يوفر WordPress واجهة مستخدم سهلة الاستخدام ويتيح للمستخدمين إنشاء وتحرير المحتوى بسهولة. 4- Joomla: هو نظام إدارة المحتوى آخر يمكن تثبيته في Laravel. يوفر Joomla واجهة مستخدم سهلة الاستخدام ويتيح للمستخدمين إنشاء وتحرير المحتوى بسهولة، مع إمكانية تخصيص الواجهة حسب احتياجات المشروع. 5- October CMS: هو نظام إدارة محتوى مفتوح المصدر يعتمد على لارافيل، ويتميز بتصميم جميل وواجهة مستخدم سهلة الاستخدام، ويدعم العديد من الإضافات المفيدة لتوسيع وظائفه. وبالنسبة لـ Dashboard الافتراضية في لارافيل، فهي توفر واجهة مستخدم لإدارة المشروع بشكل عام ولكنها لا توفر كل الوظائف التي يمكن أن تحتاجها في إدارة موقع جامعة، ولذلك يمكن استخدام الخيارات السابقة لتلبية المتطلبات المحددة لمشروعك. وبالطبع هناك برمجة خاصة لإنشاء نظام محتوى يلبي إحتياجاتك إذا لم تتوافر، لكن لا أظن أنك بحاجة إلى ذلك.
  17. لنفترض أنك تريد إنشاء صفحة ويب لنشر أخبار على موقعك باستخدام ASP.NET. يمكنك القيام بذلك باستخدام عدة خطوات: إنشاء قاعدة بيانات: يجب عليك إنشاء قاعدة بيانات لتخزين معلومات الأخبار. يمكن استخدام أي قاعدة بيانات تدعم .NET مثل SQL Server أو MySQL. إنشاء صفحة إضافة الأخبار: يمكنك إنشاء صفحة ويب تحتوي على نموذج لإضافة أخبار جديدة. يمكن استخدام عناصر تحكم ASP.NET مثل TextBox وDropDownList وFileUpload لجمع المعلومات المطلوبة. فيما يلي مثال بسيط لصفحة إضافة الأخبار: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddNews.aspx.cs" Inherits="AddNews" %> <!DOCTYPE html> <html> <head> <title>Add News</title> </head> <body> <form runat="server"> <div> <label for="title">Title:</label> <asp:TextBox ID="txtTitle" runat="server"></asp:TextBox> </div> <div> <label for="category">Category:</label> <asp:DropDownList ID="ddlCategory" runat="server"> <asp:ListItem Value="1">Sports</asp:ListItem> <asp:ListItem Value="2">Politics</asp:ListItem> <asp:ListItem Value="3">Entertainment</asp:ListItem> </asp:DropDownList> </div> <div> <label for="image">Image:</label> <asp:FileUpload ID="fuImage" runat="server" /> </div> <div> <label for="content">Content:</label> <asp:TextBox ID="txtContent" TextMode="MultiLine" Rows="10" runat="server"></asp:TextBox> </div> <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" /> </form> </body> </html> إنشاء صفحة عرض الأخبار: يجب عليك إنشاء صفحة لعرض الأخبار التي تم إضافتها. يمكنك استخدام عناصر تحكم ASP.NET مثل GridView لعرض الأخبار في جدول. فيما يلي مثال بسيط لصفحة عرض الأخبار: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ViewNews.aspx.cs" Inherits="ViewNews" %> <!DOCTYPE html> <html> <head> <title>View News</title> </head> <body> <form runat="server"> <asp:GridView ID="gvNews" runat="server" AutoGenerateColumns="False"> <Columns> <asp:BoundField DataField="Title" HeaderText="Title" /> <asp:BoundField DataField="Category" HeaderText="Category" /> <asp:BoundField DataField="Content" HeaderText="Content" /> </Columns> </asp:GridView> </form> </body> </html> البرمجة الخلفية: يجب عليك برمجة الصفحات الخلفية لإضافة وعرض الأخبار. فيما يلي مثال بسيط لكيفية إضافة وعرض الأخبار باستخدام ASP.NET وC#: // AddNews.aspx.cs protected void btnSubmit_Click(object sender, EventArgs e) { string title = txtTitle.Text; int category = int.Parse(ddlCategory.SelectedValue); string content = txtContent.Text; string image = ""; if (fuImage.HasFile) { string fileName = Path.GetFileName(fuImage.FileName); fuImage.SaveAs(Server.MapPath("~/images/" + fileName)); image = "~/images/" + fileName; } string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand("INSERT INTO News (Title, Category, Content, Image) VALUES (@Title, @Category, @Content, @Image)", connection); command.Parameters.AddWithValue("@Title", title); command.Parameters.AddWithValue("@Category", category); command.Parameters.AddWithValue("@Content", content); command.Parameters.AddWithValue("@Image", image); connection.Open(); command.ExecuteNonQuery(); } Response.Redirect("ViewNews.aspx"); } // ViewNews.aspx.cs protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter("SELECT ID, Title, Category, Content, Image FROM News", connection); DataTable table = new DataTable(); adapter.Fill(table); gvNews.DataSource = table; gvNews.DataBind(); } } } protected void gvNews_RowEditing(object sender, GridViewEditEventArgs e) { gvNews.EditIndex = e.NewEditIndex; BindGrid(); } protected void gvNews_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { gvNews.EditIndex = -1; BindGrid(); } protected void gvNews_RowUpdating(object sender, GridViewUpdateEventArgs e) { string ID = gvNews.DataKeys[e.RowIndex].Value.ToString(); string title = ((TextBox)gvNews.Rows[e.RowIndex].FindControl("txtTitle")).Text; int category = int.Parse(((DropDownList)gvNews.Rows[e.RowIndex].FindControl("ddlCategory")).SelectedValue); string content = ((TextBox)gvNews.Rows[e.RowIndex].FindControl("txtContent")).Text; string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand("UPDATE News SET Title = @Title, Category = @Category, Content = @Content WHERE ID = @ID", connection); command.Parameters.AddWithValue("@ID", ID); command.Parameters.AddWithValue("@Title", title); command.Parameters.AddWithValue("@Category", category); command.Parameters.AddWithValue("@Content", content); connection.Open(); command.ExecuteNonQuery(); } gvNews.EditIndex = -1; BindGrid(); } protected void gvNews_RowDeleting(object sender, GridViewDeleteEventArgs e) { string ID = gvNews.DataKeys[e.RowIndex].Value.ToString(); string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand("DELETE FROM News WHERE ID = @ID", connection); command.Parameters.AddWithValue("@ID", ID); connection.Open(); command.ExecuteNonQuery(); } BindGrid(); } private void BindGrid() { string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter("SELECT ID, Title, Category, Content, Image FROM News", connection); DataTable table = new DataTable(); adapter.Fill(table); gvNews.DataSource = table; gvNews.DataBind(); } } الكود السابق يقوم بعرض الأخبار المضافة في قاعدة البيانات باستخدام GridView. ويتم استخدام SqlDataAdapter لاستعلام قاعدة البيانات وتعبئة DataTable، ثم يتم تعيين هذا DataTable كمصدر بيانات لـ GridView. بعد ذلك يتم استخدام الحدث RowEditing للسماح للمستخدم بتحرير سجل الأخبار، ثم استخدام الحدث RowUpdating لتحديث السجل بعد التعديل.
  18. نرحب بك في أي وقت يا محمد وإذا كنت تريد إلغاء الإشتراك، فالسبيل الوحيد هو عن طريق التحدث إلى مركز المساعدة الخاص بأكاديمية حسوب، وسيتم الرد عليك لا تقلق. وإذا كنت تواجه أي مشكلة في الدورات أو تريد فهم شيئًا ما فلا تتردد في السؤال. تحياتي.
  19. مرحبًا @محمد بن حبيش يمكنك التواصل مع مركز المساعدة بخصوص طلبك، ثم الإنتظار وسيتم الرد عليك بلا شك، لذلك أرجو من الإنتظار. ولكن هل يوجد مشكلة تواجهك تريد لها حل؟ تحياتي.
  20. بالتأكيد، وربما يجب عليك تعلم لارافيل فهي تعطي أفضلية كبيرة، حيث ستجد الكثير من الوظائف التي تقبل مبرمج لارافيل بمستوى Junior وأيضًا كم كبير جدًا من الوظائف على مواقع العمل الحر. وبخصوص Node.js فهي سهلة التعلم فخلال شهر أو أقل تبعًا لقدرتك ومستواك، ستتمكن من تعلمها فعلى أي حال أنت قد تعلمت لغة JS بالفعل، وستتعلم بيئة العمل وقاعدة البيانات فقط.
  21. في البداية هناك تفاوتات كبيرة في المميزات والعيوب والاستخدامات المناسبة. Node.js Node.js هو إطار عمل مبني على محرك JavaScript V8، ويستخدم لبناء تطبيقات الويب الحديثة التي تعتمد على الوقت الحقيقي والإرسال المستمر للبيانات، وغالبًا ما يستخدم في تطبيقات الشبكات والدردشة والألعاب الحية وتطبيقات الميديا. وبالتالي تتميز Node.js بالسرعة والقدرة على التعامل مع حمولات عالية والتحكم في الإدخال/الإخراج. كما يوفر أيضًا مجموعة كبيرة من المكتبات والأدوات لتطوير التطبيقات بسهولة. Laravel Laravel هو إطار عمل PHP شائع ويستخدم لبناء تطبيقات الويب المتكاملة. ويتميز Laravel بسهولة الاستخدام والمرونة والتحكم الكبير في قواعد البيانات. كما يوفر أيضًا مجموعة كبيرة من المكتبات والأدوات لتطوير التطبيقات بسهولة، وتدعم Laravel البرمجة الكائنية ونظام توجيه متقدم ويتكامل بسلاسة مع مكتبات الجافاسكريبت. ولذلك عندما يتعلق الأمر بالأداء، فإن Node.js يتفوق على Laravel، حيث تعمل Node.js بشكل متزامن ويمكنها التعامل مع عدد كبير من الطلبات بسرعة عالية، بينما يعمل Laravel بشكل متزامن وقد يتأخر في التعامل مع حمولة عالية من الطلبات. ومع ذلك، فإن Laravel يتميز بتوفير العديد من الأدوات والمكتبات التي تسهل عملية التطوير، ويعتبر من أفضل إطارات العمل لبناء تطبيقات الويب المتكاملة. لكن الأمر ليس بتلك البساطة، فهناك الكثير من العوامل التي لم يتم ذكرها وستؤثر على إختيارك. فبالنسبة لمشروع كبير يحتوي على معاملات حساسة وكبيرة، فإنه يمكن استخدام كلا الإطارين، ولكن يجب اختيار الإطار الذي يتناسب مع احتياجات المشروع بشكل أفضل. على سبيل المثال، إذا كانت سرعة الاستجابة والقدرة على التعامل مع الطلبات الكبيرة هي الأولوية، فقد يكون Node.js الخيار الأفضل. ومع ذلك، إذا كانت المتطلبات تتطلب القدرة على العمل مع قواعد بيانات كبيرة ومعقدة وإمكانية الوصول إلى المعلومات بسهولة، فقد يكون Laravel الخيار الأفضل. ومع ذلك، يجب ملاحظة أن الأداء ليس العامل الوحيد الذي يجب النظر إليه، بل يجب أيضًا النظر إلى المرونة والملاءمة للاحتياجات المحددة للمشروع كما أشرت.
  22. إذا أردت نصيحتي فالأفضل عدم الإنتظار والبدء من الآن، ولن تجد مصدر مجاني أفضل من قناة ZAmerican English أو قناة طليق، وقناة طليق مخصصة لمن يريد تحدث الإنجليزية بطلاقة، أما إذا كنت تريد دراسة الإنجليزية بالتفصيل فقناة ZAmericanEnglish هي الأفضل. وبخصوص المنح الدراسية، فالأمر يعتمد على مكان تواجدك، فبعض البلدان بها منح مجانية وأخرى من الصعب العثور على منح بها، لذلك يجب معرفة البلد التي تقيم بها، وإذا كنت في منطقة الخليج فستجد الكثير من المنح. وفي البداية قبل البدء في التعلم يجب عمل إختبار لتحديد مستواك في اللغة، وهناك العديد من المواقع والتطبيقات، ومنها تطبيق British Council EnglishScore أو موقع اللغة الإنجليزية التابع لـ جامعة كامبريدج. بعد ذلك يجب وضع خطة بوقت محدد يتم الإلتزام بها بشكل يومي وستجد تحسن بلا شك، والأهم في تلك المرحلة هما الكتابة ثم التحدث طالما أنك بمستوى متوسط.
  23. بخصوص إنشاء مخطط أو رسم بياني في OriginPro، باستطاعتك اتباع الخطوات التالية: اختر النوع المناسب للمخطط أو الرسم البياني من القائمة الرئيسية لـ OriginPro. على سبيل المثال، يمكنك اختيار "Line + Symbol Plot" لإنشاء مخطط خطي بنقاط. اختر البيانات التي تريد عرضها في المخطط أو الرسم البياني. يمكنك استيراد بيانات من ملفات خارجية أو استخدام البيانات التي تم إدخالها بواسطة OriginPro. ثم اختر الخيارات المناسبة للمخطط أو الرسم البياني، مثل الألوان والخطوط والمحاور والتسميات وغيرها. ويمكنك إجراء التعديلات اللازمة للمخطط أو الرسم البياني، مثل تغيير الألوان أو الخطوط أو تحريك العناصر. قم بحفظ المخطط أو الرسم البياني عند الانتهاء من تعديله، باستخدام الأمر "File > Save" من القائمة الرئيسية. ويمكنك العثور على مزيد من المصادر والمعلومات حول OriginPro وكيفية استخدامها في الدليل الرسمي للمستخدم الذي يتضمنه البرنامج.
  24. بالطبع من الممكن أن تكون المشكلة هي بطء الاتصال بالإنترنت الخاص بك. فيجب التأكد من إتصال الإنترنت بعمل إعادة تشغيل للراوتر أو تجربة إتصال إنترنت آخر أو تشغيل VPN أو تغيير إعدادات الـ DNS الخاصة بإتصال الإنترنت إلى: 1.1.1.1 1.0.0.1 يمكنك أيضًا المحاولة باستخدام الأمر التالي بدلاً من استخدام npm init react-app: npx create-react-app my-app ,هذا الأمر يعمل على تثبيت مشروع React جديد دون الحاجة إلى استخدام npm init react-app. والأفضل استخدام Vite في تثبيت react فهو أسرع بمراحل من webpack الذي يتم تثبيته عند استخدام الأمر npx create-react-app my-app. ولاستخدام Vite لتثبيت React قم باستخدام الأمر التالي: # npm في حالة الإصدار 6 من npm create vite@latest my-react-app --template react # npm في حالة الإصدار 7 أو أعلى من npm create vite@latest my-react-app -- --template react مع استبدال my-react-app باسم المشروع الخاص بك.
  25. يمكنك استخدام طريقة مشابهة باستخدام Intent لعرض ملف PDF مباشرة من ذاكرة التخزين الخاصة بالتطبيق. فيما يلي مثال على ذلك: // إنشاء ملف PDF باستخدام PdfDocument PdfDocument pdfDocument = new PdfDocument(); // قم بإضافة صفحات PDF هنا // إنشاء Intent لعرض ملف PDF مباشرة من ذاكرة التخزين الخاصة بالتطبيق Intent intent = new Intent(Intent.ACTION_VIEW); // تحديد نوع الملف باستخدام MIME type intent.setType("application/pdf"); // استخدام ContentProvider للوصول إلى الملف المخزن في ذاكرة التخزين الداخلية للتطبيق Uri uri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", pdfFile); // تحديد الملف المراد فتحه intent.setData(uri); // تحديد عنوان النشاط intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // تمرير علامة التبويب لإظهار التطبيق المختار لفتح الملف intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // بدء النشاط لفتح الملف try { startActivity(intent); } catch (ActivityNotFoundException e) { // إذا لم يتم العثور على تطبيق PDF، قم بإنشاء كائن Intent جديد لفتح رابط تحميل التطبيق من متجر التطبيقات Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.adobe.reader")); startActivity(marketIntent); } تم استخدام FileProvider للوصول إلى الملف المخزن في ذاكرة التخزين الداخلية للتطبيق وتمرير علامة التبويب لإظهار التطبيق المختار لفتح الملف. ويرجى ملاحظة أن استخدام FileProvider يتطلب إنشاء ملف ملفات موفر وتعريفه في ملفات التهيئة الخاصة بالتطبيق. ولعمل ملف موفر، يجب تعريفه في ملف التهيئة الخاص بالتطبيق الخاص بك. يمكنك القيام بذلك عن طريق إنشاء ملف جديد بالاسم file_paths.xml ووضعه في المجلد res/xml في مشروع Android الخاص بك. يمكن استخدام الكود التالي كمثال لتعريف ملف موفر في file_paths.xml: // Get the file File file = new File(getFilesDir(), "my_file.txt"); // Get the FileProvider String authority = "com.example.package.fileprovider"; Uri uri = FileProvider.getUriForFile(this, authority, file); // Use the Uri to access the file كما ترى تم الحصول على Uri لملف باستخدام FileProvider. ويجب تغيير com.example.package.fileprovider إلى اسم الموفر الخاص بتطبيق Android الخاص بك. يمكن استخدام الـ Uri المسترد للوصول إلى الملف بطرق مختلفة، مثل استخدام Intent لفتح الملف أو استخدام ContentResolver لقراءة محتويات الملف. ولمزيد من المعلومات عن استخدام FileProvider في تطبيق Android الخاص بك، يمكنك الاطلاع على الوثائق الرسمية لـ Android Developer.
×
×
  • أضف...