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

Mustafa Suleiman

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

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

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

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

    296

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

  1. مما أراه في الصورة أن هناك تحذير يظهر في قاعدة البيانات phpMyAdmin وهو عبارة عن رسالة خطأ تشير إلى أن هناك خطأ في الجدول الذي يسمى "global_priv" في قاعدة البيانات MySQL. ويقوم نظام phpMyAdmin بمحاولة إصلاح هذا الجدول ، لكنه يعتبر أن الفهرس الخاص به تالف ولا يمكن إصلاحه. لذلك، يمكنك محاولة تشغيل أمر REPAIR TABLE على الجدول المتضرر باستخدام أداة MySQL مثل MySQL Command Line Client أو phpMyAdmin نفسه. REPAIR TABLE global_priv; وإذا لم يعمل الأمر السابق ، يمكنك حذف الجدول المتضرر وإعادة إنشائه، ويرجى ملاحظة أنه قد يتم فقدان البيانات في حالة حذف الجدول ، لذلك يرجى إجراء نسخ احتياطي قبل القيام بأي إجراءات. وأيضًا تأكدي من أن جدول باسم user حيث أن رسالة الخطأ تشير إلى أنه تم إجراء استعلام SELECT على جدول يسمى "mysql.user" في قاعدة البيانات MySQL والذي يطلب فقط تحديد صف واحد من الجدول باستخدام عبارة "LIMIT 1" وعندما يتم تنفيذ الاستعلام، فإنه يواجه خطأ. قد يكون السبب هو أن الجدول "mysql.user" غير موجود في قاعدة البيانات MySQL أو أن الحساب الذي يستخدمه phpMyAdmin للوصول إلى قاعدة البيانات لا يمتلك الأذونات اللازمة لعرض محتويات الجدول.
  2. إذا كنت متفرغ فأنصحك بتخصيص 6 إلى 10 ساعات يوميًا للمذاكرة، أما إذا كنت غير متفرغ فيمكنك تخصيص 3 ساعات يوميًا للمذاكرة أو ساعتان حيث أن أقل من ذلك لا يعتبر وقت كافي. وكلما زدت في الوقت والإجتهاد كان أفضل لك، ولكن ذلك لا يعني أن تخصص 10 ساعات لمشاهدة الفيديوهات بل خليط ما بين المشاهدة ثم الكتابة وراء المدرب أو بمفردك ومحاولة التغيير في الكود الذي كتبه المدرب وخلق تحدي بسيط لك وأيضًا البحث عن حل للمشاكل التي تواجهك من خلال القراءة أو مشاهدة فيديو على اليوتيوب مثلاً ولكن حاول البحث والقراءة أولاً. فلا تعود نفسك على رؤية الحل مباشرًة فعند البحث ستجد معلومات كثيرة أنت بحاجة إليها في البداية، وأيضًا ستكتشف المصادر الخاصة بالمعلومات والأدوات. أي أن الوقت اللازم يتوقف عليك أنت، فالبعض قد ينهي الدورة بشكل سريع لكن هل حقق الاستفادة المرجوة فعلاً؟ وهناك نصيحة، في البداية عليك أن تسير ببطيء من أجل الإسراع لاحقًا لا العكس، حيث أن الأساسيات هي ما ستوفر لك التعلم بشكل أسرع مستقبلاً وتجنب التخبط والتشتت. كل شخص له طريقة مفضلة في المذاكرة واسترجاع المعلومات، مثلاً إذا كان الكتابة بالورقة والقلم مريح لك ويفيدك فقم بتسجيل المعلومات الهامة التي تريد استرجاعها فيما بعد. والبعض يفضل مشاهدة 4 فيديوهات مثلاً ثم التطبيق بمفرده بدون الكتابة وراء المدرب، ومحاولة البحث، ثم الرجوع للفيديو لتذكر أمرًا ما أو رؤية كيفية تنفيذ كود معين. ودائمًا وأبدًا أفضل طريقة هي من خلال كتابة الكود، فمهما قمت بالمشاهدة حتى لو ألف ساعة، ذلك لا يغني عن كتابة الكود بيديك وتمرين عقلك على حل المشكلات البرمجية والتفكير قبل كتابة الكود. إذا كان الفيديو بحجم صغير فقم بمشاهدة فيديو حتى 4 فيديوهات تبعًا لما يناسبك، ثم قم بالتطبيق بمفردك لمحاكاة ما قام به المدرب، ثم حاول إضافة ميزة أو خاصية جديدة أو القيام بشيء معقد قليلاً أي اخلق تحدي بسيط يجعلك تبحث أو تفكر قليلاً إذا أردت. ولا مشكلة في الرجوع للفيديو لتذكر أمرًا ما، لكن ذلك ملاذك الأخير بعد التفكير والبحث. عند الرجوع للدورة بعد فترة إنقطاع، أفضل طريقة للاسترجاع هي بإعادة القيام بتنفيذ مشروع قمت بتنفيذه من قبل في الدورة. حيث أن ذلك سيحفزك إلى مذاكرة الأمور التي نسيتها من خلال إعادة المشاهدة أو البحث. وتستطيع أيضًا إعادة المشاهدة ولكن بسرعة 2X ثم إعادة التطبيق على مشروع لتثبيت ما تم استرجاعه.
  3. 1- لكي تظهر رسم بياني من Plotly.js في output في VSCode، تستطيع استخدام مكتبة "plotly-nodejs" والتي تسمح بإنشاء رسوم بيانية من Plotly.js دون الحاجة إلى فتح المتصفح. ولتثبيت هذه المكتبة باستخدام npm، اكتب الأمر التالي: npm install plotly-nodejs ثم يمكنك استخدام الكود التالي كمثال لإنشاء رسم بياني من Plotly.js وطباعته في output في VSCode: const plotly = require('plotly-nodejs'); const data = [ { x: [1, 2, 3], y: [4, 5, 6], type: 'scatter' } ]; const layout = { title: 'My Plotly Chart' }; plotly.plot(data, layout).then((figure) => { console.log(figure); }).catch((err) => { console.error(err); }); 2- لا يمكن التحكم في جدول Console باستخدام أوامر Console مثل console.table لأنها تتحكم فقط في كيفية طباعة البيانات في Console. ومع ذلك، تستطيع استخدام مكتبات Node.js مثل "cli-table" لإنشاء جداول مع تحكم كامل في التنسيق والعرض. ولتثبيت هذه المكتبة باستخدام npm، اكتب الأمر التالي: npm install cli-table وتستطيع استخدام الكود التالي كمثال لإنشاء جدول وطباعته في output في VSCode: const Table = require('cli-table'); const table = new Table({ head: ['Name', 'Age', 'Gender'], style: { head: ['green'], border: ['white'] } }); table.push( ['John', 30, 'Male'], ['Jane', 25, 'Female'], ['Bob', 45, 'Male'] ); console.log(table.toString());
  4. السبب في أن تغيير الاتجاه إلى اليمين وتحديد النص إلى اليمين يعمل في هذه الحالة هو استخدام القاعدة العامة "*". حيث أن علامة"*" تطبق تنسيقًا على جميع عناصر الصفحة، بما في ذلك النصوص والصور وغيرها، مما يجعلها قاعدة CSS عامة وقوية. بإضافة !important في النهاية، تمنع تطبيق أي قيمة CSS أخرى للعناصر المحددة، مما يجعل هذا التنسيق الأكثر أولوية ويتم تطبيقه بشكل قاطع على جميع العناصر. على الرغم من أن استخدام القاعدة العامة "*" و !important يمكن أن يكون حلًا سريعًا لتغيير محاذاة الموقع، إلا أنه يجب الانتباه إلى الأثر الجانبي الذي قد يكون لهذه الطريقة على التصميم العام للموقع، حيث يتم تطبيق التنسيق على جميع العناصر الموجودة في الموقع، بما في ذلك العناصر التي لا تتطلب تغييرًا في الاتجاه أو تحديد النص. لذلك، من الأفضل استخدام المحددات المحددة بدقة لتطبيق التنسيق الذي تريده بشكل أفضل. وأيضًا من الأفضل أن تنتيه جيدًا للـ CSS Specificity أثناء كتابة التسيقات، وسأشرح لك الأمر: تعتبر CSS Specificity (التحديدية) هي طريقة لتحديد أيّ تعليمات CSS ستطبّق على عناصر الصفحة، عندما يتواجد أكثر من قاعدة تعريف CSS تستهدف نفس العنصر. بمعنى آخر، الـ Specificity تحدد الأولوية بين القواعد المختلفة عند تطبيقها على نفس العنصر. يتم تحديد Specificity بناءً على عدد المحددات والفئات والعناصر المستخدمة في تحديد العنصر المستهدف في القاعدة CSS. تبدأ Specificity من أصفر إلى أعلى، حيث تتمثل في العدد الذي يتم تحديده بناءً على الأنواع الثلاثة التالية: 1- الـ Inline Styles تعتبر الأولوية العالية جدًا، حيث يتم كتابة الأوامر CSS مباشرة في العنصر، وتطبق هذه الأوامر دون أي تأخير. 2- الـ ID Selectors يأتي بعدها محدد الـ ID، والذي يتم تحديده بواسطة "#" متبوعاً بإسم الـ ID. على سبيل المثال، "#header". 3- الـ Classes والـ Attributes والـ Elements Selectors تأتي هذه التحديدات في المرتبة الأخيرة من ناحية التحديدية. ويشمل ذلك تحديد الـ class والـ attribute والـ element. على سبيل المثال، ".main-header"، "[type="text"]"، "p"، وهكذا. يتم ترتيب الأولويات كما يلي: الأولوية العالية للـ Inline styles. إذا كان هناك ID، فإنها تأخذ الأولوية على التحديدات الأخرى. إذا كانت التحديدات متساوية في ID، يتم التحقق من التحديدات الموجودة في الـ classes/attributes/elements. في حالة وجود تحديدات متساوية في جميع المستويات، يتم تطبيق الأخير الذي تم تعريفه في الكود.
  5. عليك بالتأكد من كتابة عنوان رابط الموقع بشكل صحيح، فمثلاً لو قمت بكتابة التنسيق التالي لرابط أكاديمية حسوب ستجد أن الإتجاه تغير: https://academy.hsoub.com body { direction: ltr; }
  6. الخطأ يعني أن GD Library غير متاحة في مكان تثبيت PHP الخاص بك، وتحتاج إلى تثبيتها وتمكينها على الخادم الخاص بك لتتمكن من تحويل الصور وتغيير حجمها باستخدام مكتبة الوسائط Spatie. وتستطيع القيام بذلك عن طريق التحقق من تثبيت GD Library على الخادم الخاص بك وتمكينها في ملف php.ini الخاص بـ PHP. بعد تمكين GD Library يجب أن تعمل Spatie media library بشكل صحيح ويمكنك رفع الصور بنجاح. وعلى نظام ويندوز تستطيع تحميل وتثبيت ملف DLL الخاص بـ GD Library من على الموقع الرسمي لـ PHP. وعليك بالعثور على الإصدار الصحيح من GD Library الذي يتوافق مع إصدار PHP الذي تستخدمه، ثم تحميل الملف DLL ونسخه إلى مجلد ext في مكان تثبيت PHP الخاص بك. ثم تفعيلها في ملف php.ini عن طريق إضافة السطر التالي: extension=gd وهناك حزمة أخرى لتعامل مع الصور تستخدم على نطاق واسع في لغة PHP وتدعى "ImageMagick"، وتلك الحزمة تتيح لك التلاعب بالصور بطريقة متقدمة أكثر من GD Library وتدعم تنسيقات الصور الشائعة. وتستطيع تثبيت ImageMagick على الخادم الخاص بك بنفس الطريقة التي تم تثبيت GD Library بها. بمجرد تثبيت ImageMagick وتمكينه في ملف php.ini الخاص بـ PHP، يمكنك استخدامها مع Spatie media library أو أي حزمة أخرى لتعامل مع الصور في PHP. والجدير بالذكر أنه يمكن استخدام GD Library و ImageMagick معًا في نفس الوقت في بعض الحالات للحصول على أفضل نتائج التلاعب بالصور في PHP.
  7. يتم إضافة shadow تلقائيًا على الشرائح في swiper أو للدقة يتم إضافة linear-gradient من خلال خاصية background-image فكما ترى في الصورة هناك كلاس باسم: swiper-slide-shadow-left swiper-slide-shadow-right وهو المسؤول عن إضافة الظل الذي تراه، ولحل تلك المشكلة، يمكنك استخدام التنسيق التالي في ملف App.css لديك: .swiper-slide-shadow-left, .swiper-slide-shadow-right { background-image: none !important; }
  8. يجب أن تحدد ما الذي تريد فعله بالضبط من خلال تعلمك PHP و وورد بريس. هل تريد إنشاء مشروع خاص بك فقط، أو العمل بواسطة وورد بريس فقط؟ أي أنك ستتخصص في وورد بريس؟ ذلك ممكن بالتأكيد، لكن إذا أردت العمل بشكل إحترافي والحصول على وظيفة، فيجب تعلم إطار لارافيل فهو ما يعطي للغة PHP قيمتها في سوق العمل، فبدونه لكانت اللغة قل استخدامها بشكل كبير منذ سنوات. ويجب عليك استكشاف المهارات المطلوبة لوظيفة مطور PHP وتعلم تلك المهارات، ألقي نظرة على مواقع التوظيف وإنظر على أكثر من وظيفة وتعلم المهارات التي تم طلبها بكثرة، والتي بالطبع ستجد من ضمنها إطار لارافيل وأحيانًا تجد مطلوب إطار Vue.js للواجهة الأمامية. وبالطبع بعض الوظائف تطلب خبرة في وورد بريس، لذلك كما قلت لك الأمر يتوقف على ما تريده، ونصيحتي هي قم بالتعلم بالتدريج ولا تستعجل وطبق على أكثر من مشروع أو قم بإعادة بناء المشروع بمفرد بعد الإنتهاء منه، ولا تتسرع في الإنتقال للقسم التالي. وبالطبع هناك فرص عمل لمطور وورد بريس فقط سواء في سوق العمل أو على مواقع العمل الحر، لكن أنت تحصر نفسك في جزء صغير فقط والأفضل زيادة المهارات الخاصة بك وبالتالي ستحصل على فرص عمل أفضل
  9. هناك 3 طرق لحساب الدقة: 1- حساب نسبة الدقة باستخدام وظيفة ABS في إكسل يمكنك استخدام وظيفة ABS في إكسل لحساب نسبة الخطأ أولاً، ثم طرح الخطأ من 1 سيعطيك نسبة الدقة. أدخل الصيغة التالية في الخلية E5 كما هو موضح في الصورة التالية: =1-ABS(C5/D5-1) ثم، انقر على أيقونة % لتطبيق تنسيق الرقم النسبي. بعد ذلك، انقر نقرًا مزدوجًا على أيقونة Fill Handle أو اسحبها لتطبيق الصيغة على الخلايا أدناه. 2- حساب نسبة الدقة باستخدام وظيفة IF في إكسل يمكنك استبدال وظيفة ABS بوظيفة IF في إكسل للحصول على نفس النتيجة. أولاً، ضع الصيغة التالية في الخلية E5 كما هو موضح أدناه. =1-IF(C5>D5,(C5-D5)/D5,(D5-C5)/D5) ثم، ضع تنسيق الرقم النسبي في تلك الخلية عن طريق النقر على أيقونة % من علامة التبويب الرئيسية. بعد ذلك، ضع الصيغة على جميع الخلايا أدناه باستخدام أيقونة Fill Handle. 3- استخدام وظيفة MIN-MAX لحساب نسبة الدقة في إكسل بديلًا، يمكنك استخدام وظائف MAX و MIN في إكسل لذلك، تعيد وظيفة MAX القيمة القصوى داخل نطاق معين بينما تعيد وظيفة MIN القيمة الدنيا. أولاً، أدخل الصيغة التالية في الخلية =1-(MAX(C5:D5)-MIN(C5:D5))/D5 ثانيًا، حدد تنسيق الرقم النسبي باستخدام أيقونة % كما هو موضح في الصورة أدناه. أخيرًا، ضع الصيغة على جميع الخلايا أدناه باستخدام أيقونة Fill.
  10. سأشرح لك الأمر من خلال الخطوات التي عليك إتباعها لإنشاء قاعدة بيانات تحتوي على بيانات باللغة العربية والإنجليزية: 1- يتم تحديد الحقول التي سيحتويها الجدول بما في ذلك الحقول المشتركة بين اللغتين والحقول الخاصة بكل لغة. | اسم الكتاب | اسم الكاتب | السعر باللغة العربية | السعر باللغة الإنجليزية | 2- تحديد تنسيق الحقول لتتناسب مع النصوص المكتوبة باللغتين، مثلاً، تحديد تنسيق الحقل للنصوص بحيث يمكن دعم النصوص الطويلة في اللغة العربية. | اسم الكتاب | varchar(100) | | اسم الكاتب | varchar(50) | | السعر باللغة العربية | decimal(10,2) | | السعر باللغة الإنجليزية | decimal(10,2) | 3- تحديد ترميز البيانات الذي يسمح بتخزين النصوص باللغتين العربية والإنجليزية بدون أخطاء. يمكن استخدام UTF-8 كترميز يدعم النصوص باللغتين. 4- تخزين البيانات في الجدول بطريقة تمكن من الوصول إلى النصوص باللغتين على حد سواء، حيث تستطيع استخدام حقل مشترك للنصوص العامة وحقول مخصصة لكل لغة للنصوص الخاصة باللغة. وتستطيع تخزين نفس البيانات باللغة العربية والإنجليزية أو أي لغات أخرى أخرى في قواعد البيانات بحيث يكون لكل لغة حقل مخصص لها، ويتم ذلك عن طريق تحديد نوع الحقل ليتناسب مع نوع البيانات المخزنة فيه. مثلاً، جدول يحتوي على حقلين لكل بيان (اسم المستخدم والجنسية)، أحدهما مخصص للغة العربية والآخر مخصص للغة الإنجليزي، وتخزين الاسماء والجنسيات باللغة المناسبة في كل حقل من هذين الحقلين.
  11. أنا أكره النصائح المكتلجة أي العامة والتي لا تصلح للجميع بدون معرفة تفاصيلهم الشخصية، حيث أن بعض النصائح قد تضر والمقصود هو الإفادة! وسأحاول نصيحتك بدون أن أضرك، في البداية أن تسير مع القطيع أفضل لك من تسير عكس التيار، فالأمر بحاجة إلى مجهود عظيم أنت في غنى عنه ولا أعرفك شخصيًا هل ستتحمل ذلك أم لا. نصيحة غريبة صحيح؟ أتفهم ذلك، لكن من تجربة واقعية أن تقوم بفعل ما يفعله الجميع بشكل روتيني أفضل لك من أن تقوم بمحاولة تشكيل الواقع تبعًا لما تريده أنت. أي لا تقم بالتركيز على أي شيء آخر غير الدراسة في الوقت الحالي، وفي فترة الأجازة قم بتعلم البرمجة إن كنت صادقًا فعلاً في تعلمها. وبعد الإنتهاء من الثانوية العامة سيتحدد مصيرك الأكاديمي فإما بكلية جيدة ولها مستقبل أو كلية شهادة فقط، والشهادة هامة جدًا في عالمنا العربي لا تستهن بها. وأنصحك بالإجتهاد للحصول على مجموع يؤهلك لدخول كلية حاسبات ومعلومات، حيث ستقطع أشواطًا وتسهل على نفسك الأمر في تعلم البرمجة وستجد حافز كبير وأصدقاء لهم نفس الهدف أيضًا، وهو أمر عظيم. ودائمًا في حياتك ضع أولويات، فمثلاً الدراسة لها وقت محدد وتنتهي، أي أنك لو لم تجتهد لفشلت دراسيًا وفوت على نفسك فرص جيدة لمستقبلك. وتأني ولا تستعجل وقارن نفسك بنفسك فقط وليس بالآخرين، وأنت أدرى بظروفك، ولكن لا تتكاسل، ولا تشغل بالك بأمور كثيرة خاصة بالمستقبل فتفشل في حاضرك ومستقبلك، بل ركز على ما ستفعله خلال فترة سنة إلى سنتين. ولا تشغل بالك كثيرًا بالرزق، فقط إجتهد في المذاكرة وتطوير نفسك في فترات فراغك من الدراسة، وأيضًا اختر أصدقائك جيدًا، فصدقني أنت هو متوسط أقرب 5 أشخاص لك وشخصيتك ستتشكل بناءًا على ذلك وأفعالك وتفكيرك أيضًا، فاخترهم جيدًا.
  12. تستطيع استخدام حلقتي for بدلاً من ذلك، حيث تقوم الحلقة الداخلية بتخزين قيم h، v، a، والحلقة الخارجية بتخزين قيم phi. بعد ذلك، يمكن رسم الرسم البياني باستخدام المكتبة المناسبة، مثل Plotly طالما أنك تستخدم JavaScript. وقد تبدو بعض القيم مكررة لأنك تستخدم خطوة 0.5 في الحلقة الداخلية وبعض القيم تحتوي على مجموعة من الأرقام العشوائية الصغيرة التي يمكن أن تؤدي إلى تقريب القيمة بشكل غير دقيق. وبالنسبة لعرض القيم كجدول ورسم بياني، تستطيع استخدام المكتبة المذكورة أعلاه أو أي مكتبة أخرى، أو ببساطة إنشاء جدول HTML يعرض القيم بطريقة منظمة وسهلة القراءة، وإنشاء رسم بياني باستخدام المكتبة التي تفضلها.
  13. حاول تسجيل الدخول من خلال وضع التخفي أو incognito وجرب تشغيل الفيديوهات، فإن عملت بشكل طبيعي، فيجب حذف الملفات المؤقتة الخاصة بالمتصفح من خلال الضغط على CTRL + SHift + Delete وسيظهر لك الصفحة التالية قم بالضغط على Clear data أو مسح البيانات. والآن أرجو منك تحديث المتصفح إلى آخر إصدار، فمثلاً لو كنت تستخدم جوجل كروم فقم بالتوجه للرابط التالي : chrome://settings/help وستجد أمامك خانة التحديث. وأيضًا عليك بإعادة تشغيل الراوتر الخاص بك، ثم حاول تشغيل الفيديوهات إن استمرت المشكلة، قم بتجربة متصفح آخر، وإن استمرت المشكلة عليك بتجربة تغيير الـ DNS للشبكة الخاص بك للـ DNS الخاص بجوجل. وفي بعض الأحيان قد تكون المشكلة من الإضافات الخاصة بالمتصفح، لذلك بالتجربة من متصفح بدون إضافات. وإن استمرت المشكلة جرب استخدام VPN، وإن استمرت المشكلة عليك بالتحدث لمركز المساعدة الخاص بأكاديمية حسوب.
  14. أرجو منك شرح ما هو المطلوب بالضبط، حتى أتمكن من مساعدتك. وإذا فهمت سؤالك بشكل صحيح، فتستطيع استخدام مكتبة Volley لإرسال طلبات متعددة الأجزاء (Multipart Request) باللغة العربية عن طريق تعريب الرسائل والنصوص التي تستخدمها في الطلب. قم بإنشاء صنف جديد يرث من Request ويستخدم نوع الطلب MultipartEntityBuilder المستخدم في إرسال الطلبات متعددة الأجزاء. استخدم النص العربي المطلوب داخل مكونات الطلب مثل العنوان والنص الرئيسي وغيرها، وتأكد من استخدام ترميز النص الصحيح. يمكنك استخدام مثيلات الفئة ByteArrayBody لإضافة صور أو ملفات أخرى إلى الطلب، ويمكنك تعريب الأسماء أيضًا. مثال: public class ArabicMultipartRequest extends Request<String> { private MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create(); private Response.Listener<String> listener; private HashMap<String, String> params; public ArabicMultipartRequest(String url, HashMap<String, String> params, Response.Listener<String> listener, Response.ErrorListener errorListener) { super(Method.POST, url, errorListener); this.listener = listener; this.params = params; buildMultipartEntity(); } private void buildMultipartEntity() { for (Map.Entry<String, String> entry : params.entrySet()) { entityBuilder.addTextBody(entry.getKey(), entry.getValue(), ContentType.create("text/plain", Charset.forName("UTF-8"))); } entityBuilder.addPart("image", new ByteArrayBody(imageData, "image.png")); } @Override public String getBodyContentType() { return entityBuilder.build().getContentType().getValue(); } @Override public byte[] getBody() throws AuthFailureError { ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { entityBuilder.build().writeTo(bos); } catch (IOException e) { VolleyLog.e("IOException writing to ByteArrayOutputStream"); } return bos.toByteArray(); } @Override protected Response<String> parseNetworkResponse(NetworkResponse response) { String result = ""; try { result = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return Response.success(result, HttpHeaderParser.parseCacheHeaders(response)); } @Override protected void deliverResponse(String response) { listener.onResponse(response); } }
  15. المشكلة في الكود هي عدم استخدام دالة trim() لإزالة الفراغات الزائدة في نهاية السلسلة التي تم قراءتها باستخدام دالة read(). وتستطيعاستخدام دالة trim() بعد قراءة الحجم لإزالة الفراغات الزائدة وذلك عن طريق استخدام الكود التالي: size = size.trim(); وهذا يحذف أي فراغات زائدة في بداية أو نهاية السلسلة ويجعل الرسالة تظهر بشكل صحيح دون أي فراغات زائدة في النهاية. يمكنك إضافة هذا الكود بعد الحصول على قيمة الحجم وقبل طباعة النتيجة، كما هو موضح في الكود التالي: var size = read(); write("Enter your size: "); size = read().trim(); write("Your size = " + size);
  16. أنصحك باستخدام استضافة Railway.app فهي سهلة للغاية، ويمكنك رفع المشروع من خلال مستودع الـ GitHub وإضافة متغيرات البيئة وغيرها وسيعمل المشروع في ثوانٍ، وتستطيع إضافة قاعدة بيانات. وهناك قوالب جاهزة يمكنك الإختيار من بينها إذا أردت لإنشاء مشروع جديد للغة أو إطار العمل الذي تريده على الاستضافة. وهناك منفذ أوامر خاص بالإستضافة CLI يمكنك العمل من خلاله إذا أردت. ويمكنك قراءة المستندات الرسمية حيث بها شرح وافي، أو تستطيع البحث على اليوتيوب بالتالي deploy json server on railway أو How to deploy on railway وأيضًا هناك استضافة أخرى باسم render وهي جيدة أيضًا.
  17. تستطيع دعم اللغة العربية في VolleyMultipartRequest عن طريق تعيين مجموعة الأحرف المستخدمة في الإرسال على أن تكون بترميز UTF-8. والقيام بذلك عن طريق استخدام الدالة setCharacterEncoding في كائن VolleyMultipartRequest. يمكن إضافة السطر التالي في دالة VolleyMultipartRequest لتعيين مجموعة الأحرف على UTF-8: @Override public String getBodyContentType() { return "application/json; charset=utf-8"; } وبهذا سيتم إرسال البيانات بترميز UTF-8 الذي يدعم اللغة العربية.
  18. ستحتاج إلى دورة علوم الحاسب وستتعلم بها التالي: أساسيات الحاسوب وعلومه والتفكير المنطقي وما هي الخوارزميات وكيف تفيد في البرمجة تطبيقات عملية على أساسيات التفكير المنطقي باستخدام بيئة سكراتش Scratch التفاعلية أساسيات لغة البرمجة JavaScript وتطبيق المفاهيم التي تم شرحها باستخدامها، والتوسع في شرح التطبيقات العملية للغات البرمجة أساسيات أنظمة التشغيل المختلفة وكيفية تثبيت البرمجيات اللازمة للبرمجة عليها أساسيات سطر الأوامر في نظام لينكس، وشرح الأسس التي بني عليها النظام مع تطبيقها عمليًا أنظمة قواعد البيانات المختلفة، مع شرح تفصيلي للغة SQL للتعامل معها مبادئ أساسية في أنظمة قواعد البيانات NoSQL المفاهيم الأساسية التي تبنى فيها صفحات الويب مفاهيم أساسية في الشبكات والخوادم، وكيف يتم استقبال الطلبيات إلى الخادم والرد عليها مبادئ الحماية والأمان في الويب حيث أن الدورة مناسبة لمن: لمن لا يمتلك أي خبرة مسبقة في البرمجة ويريد الدخول في هذا المجال الشيق لمن يفكر بتغيير مساره المهني ويرغب بأن يصبح مبرمج ولا يعرف من أين يبدأ للمبرمجين الذين تعلموا احدى لغات البرمجة ذاتياً ويرغبوا بملئ الفراغات وتعلم الأسس لطلاب الجامعات الذين يواجهوا صعوبة ببعض المواد مثل أنظمة التشغيل وقواعد البيانات لمن حاول تعلم البرمجة بالسابق وشعر أنها صعبة ولم يتمكن من المواصلة وبعد ذلك تستطيع إختيار اللغة والمجال الذي تريده التخصص به، سواء كان دورة تطوير التطبيقات باستخدام لغة JavaScript أو دورة تطوير تطبيقات الويب باستخدام لغة PHP. وقد تم الإجابة على سؤال مشابه لسؤالك من قبل في النقاشات التالية، أرجو منك قرائتها وستحصل على فائدة بالتأكيد:
  19. تم الإجابة على أغلب أسئلتك بشكل وافي، لكن بخصوص التكلفة أنت بحاجة إلى معرفة التالي: في البداية قد تضطر إلى قبول تصميم صفحة هبوط مثلاً تتكلف 100 دولار بمبلغ 50 أو 25 دولار، وذلك من أجل الحصول على أول عميل لك على مواقع العمل الحر. حيث أن التكلفة الطبيعية لصفحة الهبوط تتراوح ما بين 50 إلى 100 دولار وقد تصل إلى 300 دولار، وذلك تبعًا لمدى التعقيد في التصميم وهل سيتم تنفيذ التصميم من قبلك، أم ستقوم باستلام التصميم جاهز وستعمل على أنت على تنفيذه. بعد ذلك، سيتعين عليك استكشاف متوسط الأسعار التي يطلبها المستقلين الآخرين، وهو عامل هام للمنافسة في ذلك السوق، فلن تستطيع رفع سعرك إلا إذا كان لديك سنوات خبرة ومعرض أعمال مميز. وببساطة تستطيع الإعتماد على تكلفة 50 دولار للصفحة وزيادة التكلفة تبعًا للوقت والتعقيد والمميزات المطلوبة، وحجم الخبرة التي يتطلبها المشروع، حيث أن للخبرة ثمن بالتأكيد، ولكن الكثير من الخبرة يعني أنك قادر على تنفيذ المشروع بشكل سريع وهنا يجب حساب تكلفة الخبرة والجودة بعيدًأ عن عامل الوقت. وأيضًا يجب احتساب القيمة التي تقدمها للعميل، فمثلاً لو كنت تقوم ببناء موقع لعميل يحقق لهم أرباح كبيرة على المدى الطويل، فبالطبع أنت بحاجة إلى حساب تكلفة أعلى للمشروع، أي عليك دائمًا وضع العائد الذي سيحصل عليه العميل جراء تنفيذك للمشروع فإن كان بسيطًا فليس من المنطقي وضع تكلفة مرتفعة للمشروع. وهناك عوامل أخرى مثل البلد الخاصة بالعميل وعملة تلك البلد وقيمتها مقابل الدولار، وأيضًا إذا كان الموقع خاص بشركة فستكون التكلفة أكبر مقارنًة إذا ما كان لعميل بمفرده ولمشروع شخصي وبميزانية منخفضة. وقد تم النقاش حول العمل الحر وحساب تكلفة المشروع في النقاشات التالية بشكل مفصل أكثر:
  20. في React، تستطيع استخدام روابط داخلية باستخدام react-router-dom أيضًا، حتى في صفحة ويب واحدة (وهي عبارة عن عناصر تحكم توجيه). وذلك باستخدام عناصر التحكم مثل <Link> و <NavLink> و <Route> في أي مكان داخل مكونات React الخاصة بك لإنشاء روابط داخلية. مثال لاستخدام عنصر التحكم <Link> لإنشاء رابط داخلي كما يلي: import { Link } from 'react-router-dom'; function MyComponent() { return ( <div> <h1>Welcome to my website!</h1> <p>Click <Link to="/about">here</Link> to learn more about me.</p> </div> ); } كما ترى من خلال <Link> تمكنا من إنشاء رابط داخلي يؤدي إلى صفحة "حول" (/about) في نفس التطبيق، وعند النقر على الرابط ، سيتم تحديث المحتوى المعروض في التطبيق دون إعادة تحميل الصفحة بالكامل. ويمكنك أيضا استخدام عنصر التحكم <Route> لتحديد المسارات المتناغمة مع الروابط الداخلية، والذي يستخدم لإظهار محتوى معين عند زيارة رابط معين. import { Route } from 'react-router-dom'; function MyComponent() { return ( <div> <h1>Welcome to my website!</h1> <p>Click <Link to="/about">here</Link> to learn more about me.</p> <Route path="/about"> <About /> </Route> </div> ); } حيث يتم عرض محتوى معين (component About) عند زيارة الرابط /about، وعند زيارة الرابط، سيتم تحديث المحتوى المعروض في التطبيق دون إعادة تحميل الصفحة بالكامل. وتستطيع استخدام هذه العناصر داخل مكونات أخرى لإنشاء روابط داخلية متعددة الطبقات ومعقدة حسب الحاجة.
  21. يتوفر في أكاديمية حسوب دورة خاصة بلغة البايثون، حيث ستتعلم فيها ما يلي: الأسس البرمجية السليمة عبر لغة Python التعامل مع مختلف صيغ الملفات مثل إكسل Excel وورد Word وخدمات المستندات السحابية استخراج البيانات من صفحات الويب Web Scraping وتحليلها أساسيات التعامل مع قواعد البيانات عبر بايثون، والتعامل مع البريد الإلكتروني لإرسال الرسائل أساسيات إطار العمل جانغو Django بناء تطبيق إدارة المهام باستخدام إطار العمل جانغو Django تطوير متجر إلكتروني متكامل باستخدام إطار العمل جانغو Django وربطه مع وسائل الدفع باي بال PayPal وسترايب Stripe أساسيات إطار العمل فلاسك Flask، وبناء مدونة بسيطة تطوير واجهة برمجية API اعتمادًا على نمط RESTful لمعالجة الصور وبإمكانك قراءة المقالات التالية للتعرف على الأساسيات، واكتساب نظرة شاملة حور التطوير بلغة بايثون: وقد تحتاج إلى قراءة النقاشات التالية:
  22. يمكنك ببساطة إضافة القيمة 7.5 إلى حلقة الـ for في برنامج MATLAB، من خلال إضافتها إلى المعادلة الخاصة بك، كما هو موضح في المثال التالي: for i=1:15 x = i + 7.5; % أو يمكنك استخدام القيمة 7.5 مباشرةً في المعادلة الخاصة بك % x = i * 7.5; fig = العمليات الرياضية الأخرى هنا end ويجب استخدام الرموز الرياضية الصحيحة في المعادلة الخاصة بك للحصول على نتائج صحيحة. وإذا لم يكن ذلك المقصود، أرجو منك مشاركة الكود بشكل نصي هنا من خلال علامة <> عند كتابة السؤال أو التعليق.
  23. يوجد خطأ في السطر السادس من البرنامج. حيث لا يمكن استخدام معاملات مثل "result1 = 0" في تعبير شرطي مثل "1 if x==Qustion1 else result1 = 0". ويجب استخدام فقط التعبير الشرطي دون المعاملات، ولذلك يمكن إصلاحه عن طريق استخدام التعبير الشرطي في السطر السادس بدون المعاملات كما يلي: result1 = 1 if x==Qustion1 else 0 result2 = 1 if y==Qustion2 else 0 result3 = 1 if z==Qustion3 else 0 وهناك عدة طرق لتحسين كتابة البرنامج الخاص بك، ومنها: 1- استخدام دالة لتقوم بطباعة السؤال واستقبال الإجابة، وذلك لتجنب تكرار الأكواد المتشابهة. def ask_question(question, answer): user_input = int(input(question)) return 1 if user_input == answer else 0 result1 = ask_question("What is 4 + 4? ", 8) result2 = ask_question("What is 2 * 3? ", 6) result3 = ask_question("What is 5 ** 3? ", 125) sum = result1 + result2 + result3 print(sum) 2- استخدام حلقة تكرارية مثل for لتكرار الأسئلة وجمع النتائج. questions = [("What is 4 + 4? ", 8), ("What is 2 * 3? ", 6), ("What is 5 ** 3? ", 125)] sum = 0 for question, answer in questions: user_input = int(input(question)) if user_input == answer: sum += 1 print(sum) 3- استخدام القوائم لتخزين الأسئلة والإجابات، وذلك لتسهيل تعديل وإضافة الأسئلة. questions = [ {"question": "What is 4 + 4? ", "answer": 8}, {"question": "What is 2 * 3? ", "answer": 6}, {"question": "What is 5 ** 3? ", "answer": 125}, ] sum = 0 for q in questions: user_input = int(input(q["question"])) if user_input == q["answer"]: sum += 1 print(sum)
  24. في البداية، قم بفتح ملف الـ XML الخاص بقالب بلوجر وأضف أكواد HTML و CSS الخاصة بتصميمك. كمثال: <b:if cond='data:blog.pageType == &quot;index&quot;'> <div class="featured-post"> <img src="IMAGE_URL" alt="Featured Post Image"> <h2><a href="POST_URL">عنوان المقال المميز</a></h2> <p>محتوى المقال المميز</p> </div> </b:if> <style> .featured-post { background-color: #f9f9f9; padding: 20px; border: 1px solid #ddd; } h2 a { color: #333; font-size: 24px; text-decoration: none; } p { color: #666; font-size: 16px; } </style> بعد ذلك، يمكنك إستدعاء تصميمك في أي مقالة بإستخدام الـ JavaScript. مثلاً، إذا أردت إستدعاء التصميم في أول مقالة على الصفحة الرئيسية، يمكنك إضافة هذا الكود في صفحة المقال: <div id="featured-post"></div> <script> const featuredPost = document.getElementById("featured-post"); const featuredPostHTML = '<b:if cond=\'data:blog.pageType == &quot;index&quot;\'>' + '<div class="featured-post">' + '<img src="IMAGE_URL" alt="Featured Post Image">' + '<h2><a href="POST_URL">عنوان المقال المميز</a></h2>' + '<p>محتوى المقال المميز</p>' + '</div>' + '</b:if>'; const featuredPostCSS = '.featured-post { background-color: #f9f9f9; padding: 20px; border: 1px solid #ddd; } h2 a { color: #333; font-size: 24px; text-decoration: none; } p { color: #666; font-size: 16px; }'; featuredPost.innerHTML = featuredPostHTML; const style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = featuredPostCSS; document.getElementsByTagName('head')[0].appendChild(style); </script> حيث يقوم هذا الكود بإستدعاء تصميم المقال المميز الذي تم إضافته في ملف الـ XML ويعرضه في صفحة المقال. ويمكنك تعديل هذا الكود ليتناسب مع تصميمك الخاص. كمثال، تغيير مسار الملفات ليتماشى مع مسار ملفات تصميمك، ويمكنك أيضا تغيير المعرف الخاص بالعنصر الذي يستخدم لإدخال التصميم في الصفحة. أيضا إضافة المزيد من الخصائص والأساليب إلى التصميم الخاص بك باستخدام CSS، كتغيير ألوان الخطوط والخلفيات، وتحديد المسافات بين العناصر. أما إذا أردت استدعاء ملفات HTML و CSS : فعليك باستخدام كود جافاسكريبت كالتالي: function loadCSS(url) { const link = document.createElement('link'); link.type = 'text/css'; link.rel = 'stylesheet'; link.href = url; document.getElementsByTagName('head')[0].appendChild(link); } function loadHTML(html) { const article = document.createElement('article'); article.innerHTML = html; document.getElementById('article-container').appendChild(article); } loadCSS('styles.css'); loadHTML('<div class="my-div"><h1>Hello World!</h1></div>'); حيث يقوم الكود بتحميل ملف CSS عن طريق إنشاء عنصر link وإضافته إلى رأس الصفحة، ثم يقوم بإنشاء عنصر article ويضيف الـ HTML الذي تم تمريره كنص داخله. ثم يضيف هذا العنصر إلى عنصر الـ article-container في صفحة المقال. ويمكنك تعديل الـ HTML والـ CSS وتمريرها كمتغيرات إلى الدالة loadHTML و loadCSS على التوالي. ولا تنسى تغيير article-container بمعرف العنصر الذي تريد عرض المقال فيه. وهناك طريقة أخرى وهي إضافة أكواد HTML و CSS مباشرًة: قم بتسجيل الدخول إلى حساب بلوجر الخاص بك. اختر مدونتك وانتقل إلى صفحة "تخطيط" القالب. اضغط على زر "تحرير HTML" الذي يوجد في الزاوية اليمنى العليا من الصفحة. ابحث عن العنصر الذي تريد إضافة إليه الأكواد HTML و CSS، و قد يكون هذا العنصر، مثلاً، الجزء الخاص بمحتوى المدونة أو القائمة الجانبية أو الهيدر أو الفوتر. انقر فوق موضع العنصر الذي تريد تعديله، ثم الصق الأكواد HTML و CSS الخاصة بك بالداخل. بمجرد الانتهاء من الإضافات، انقر على زر "حفظ" في الزاوية اليمنى العليا للصفحة. مثال: <div class="header"> <h1>عنوان المدونة</h1> <img src="رابط الشعار" alt="شعار المدونة"> </div> أضف الأكواد CSS الخاصة بك في قسم الستايلات style الموجود في نفس صفحة التحرير: <style> .header { background-color: #eee; padding: 20px; text-align: center; } h1 { color: #333; font-size: 36px; margin-bottom: 10px; } img { max-width: 100%; height: auto; } </style> بهذا، ستكون قد أضفت عنوانًا وشعارًا إلى الهيدر.
×
×
  • أضف...