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

Hassan Hedr

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

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

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

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

    38

كل منشورات العضو Hassan Hedr

  1. كمطور واجهات أمامية لن يؤثر ذلك على عملك كثيرًا، خاصة إذا كنت تطور مشروعًا تم تنفيذ تصميمه من قبل مصمم مختص أو هناك ألوان محددة مسبقة لدى العميل لديك، حيث أنك ستعتمد قيم الألوان التي موجودة مسبقًا أو المرسلة لك من قبل المصمم. لكن عندما تحتاج بنفسك لتصميم الواجهات واختيار الألوان نعم ستجد فرقًا بين ما طورته على شاشة الحاسب وما سيشاهده الآخرين على الأجهزة الأخرى. يمكنك حل ذلك عبر اختيار وتثبيت الألوان التي ستستخدمها ضمن المشروع من البداية وانتقائها عبر شاشة بألوان أوضح (مثال شاشات الهاتف الذكي التي تعمل بتقنية OLED)، ثم تتابع تطوير مشروعك باستخدام القيم العددية Hex لتلك الألوان.
  2. تأكدي أن انواع حقول المعرّفات في الجدولين تماثل نفس النوع في جدول الربط، قد يكون المعرف من النوع INT UNSIGNED يجب أن يكون في جدول الربط من نفس النوع كالتالي orr int UNSIGNED NOT NULL, per int UNSIGNED NOT NULL,
  3. جدول الربط يجب أن يذكر معرّفي الجدولين الذي سيتم ربطهما بفرض أن معرف الجدول persons هو الحقل PersonID، و معرف الجدول orders هو الحقل OrderID، فجدول الربط يجب أن يحوي على حقلين كل منهما يشير إلى معرف في أحد الجدولين المراد ربطهما، في حالتك هما orr و per يصبح تعريف الربط للحقول تلك على الشكل التالي: CONSTRAINT cons_clinets FOREIGN KEY (orr) REFERENCES orders (OrderID) on DELETE CASCADED on UPDATE CASCADE, CONSTRAINT cons_shop FOREIGN KEY (per) REFERENCES persons (PersonID) on DELETE CASCADED on UPDATE CASCADE حاولي إضافة الكلمة KEY بعد كلمة FOREIGN، وتأكدي من أسماء حقول المعرفات في كلا الجدولين واستبدليهما باسم الحقل الصحيح
  4. إذا كنت تستخدم ضمن مشروعك مكتبة react-native-splash-screen حاول استبدالها بالمكتبة البديلة لها react-native-bootsplash، فالأولى تسبب مثل تلك المشاكل أحيانًا npm i react-native-bootsplash
  5. حاول حذف السطر التالي من ملف podfile: pod 'RNCheckNotificationPermission', :path => '../node_modules/react-native-check-notification-permission' ومحاولة إجراء الربط بشكل آلي عبر تنفيذ الأمر التالي في المجلد الجذر للمشروع: react-native link react-native-check-notification-permission
  6. لا يمكن توقع المستقبل، لكن قد ينتهي عصر بناء التطبيقات على شكل تطبيقين واحد بطرف العميل كواجهة أمامية والآخر كتطبيق واجهة خلفية لتخديم البيانات بشكل منفصل، هنا لن تحتاج لمطور متخصص فقط بتطوير الواجهات الأمامية لكن سيضاف للمطلوب إلمام المطور - ولو بعض الشيء - بتقنيات برمجة الأنظمة على الخادم.
  7. إن كان اعتمادك وخبرتك منحصرة فقط ضمن مكتبات للواجهات الأمامية كرياكت React و فيو Vue، فتوقع مع مرور الزمن انخفاض الطلب على مهارتك لانها مربوطة بمنتج ودومًا يأتي منتجات أفضل تستحوذ على أغلب طلب سوق العمل، لكن أنت كمطور واجهات أمامية يجب عليك التركيز على أساسيات هذا المجال، من تقنيات HTML و CSS و JavaScript فهي الأرضية التي يتم فوقها بناء كل التقنيات الجديدة، ثم فوقها ركز على تعلم التقنيات المطلوبة في السوق في كل فترة يجب ان يكون لديك مرونة في التعلم لان هذا المجال يتطور باستمرار هل حقاً انتهى عصر مطورين الواجهات الأمامية ؟ يمكن أن يكون انخفض الطلب على مطور بهذا التخصص فقط، لكن مهاراتك تستطيع توظيفها في الكثير من المجالات الأخرى، وأن تضيف إليها خبرات إضافية لتزيد من فرصك.
  8. قد تكون المشكلة ضمن خادم الاستضافة نفسه، أحيانًا بسبب أخطاء على الخادم يتم إشغال المساحة المتبقية بشكل كامل مما يمنع عمل تطبيقك بشكل صحيح، إذا كان لديك إمكانية الدخول لواجهة تحكم CPanel على الخادم تأكد من المساحة المتوفرة واذا لاحظت مشاكل تواصل مع الدعم الفني فهم من يستطيع حل المشكلة لك في هذه الحال
  9. نعم يوجد ضمن دورة علوم الحاسوب مسار مخصص للخوارزميات وبنى المعطيات Data Structures، وفيه سيتم شرح ودراسة بنى المعطيات التالية: المصفوفات Arrays القوائم المترابطة Linked Lists المكادس Stacks الأرتال Queues الأشجار الثنائية Binary trees أشجار البحث الثنائية Binary search tree جدول التقطيع Hash table
  10. الاستعلام SQL عبارة عن نص ليس إلا، عندما نريد بناء نص الاستعلام ضمن لغات البرمجة مثل جافاسكريبت نعامله معاملة النص فيها هنا تم استخدام علامة الجمع لتركيب النص من فقرتين، يبدو أن المدرب استخدم ذلك فقط لتقليل طول السطر بدلًا من كتابة الاستعلام ضمن نص واحد على سطر طويل 'select * from table' // يساوي 'select * ' + 'from table' يمكنك طرح استفساراتك ضمن التعليقات تحت الدرس في الدورات في حال وجود استفسار وسيقوم المدربون بالرد على استفسارك هناك
  11. بناء القوالب بأبسط شكل يبدأ من بناء صفحات ويب وتنسيقها، وترتيبها بحسب ما يتطلبه إطار العمل المراد تركيب القالب ضمنه، مما يعني أن أساسيات بناء القوالب هي أولا أساسيات بناء صفحات الويب يجب أن تتعلم وتتقن التالي : HTML لبناء صفحات الويب CSS لتنسيق مظهر صفحات الويب JavaScript (اختياري) لإضافة التفاعليه ضمن الصفحة يمكنك قراءة سلسلة مقالات HTML/CSS 101 والبدء بأول مقال: بعدها وبحسب إطار العمل الذي تود العمل عليه يجب تعلم اللغة المبني عليها لتتمكن من ربط محتوى الموقع ضمن القالب: PHP في حال كنت تريد تطوير قالب ووردبريس Ruby في حال أردت تطوير قالب شوبيفاي يمكنك قراءة سلسلة مقالات مقدمة إلى تطوير قوالب ووردبرس والبدء بالمقال الأول منها:
  12. يرجى إرفاق الشيفرة البرمجية الخاصة بهذا القسم على شكل نص وتنسيقه بالشكل المناسب ضمن السؤال القسم التالي يجب أن يكون بطرف الخادم وليس بطرف صفحة HTML var express = require('express') var app = express() app.use(express.json()) app.post('/api', function (req, res) { // البيانات التي ارسلتها الصفحة const values = req.body // نعالج البيانات ... }) حاولي التعلم أكثر عن NodeJS وعن ExpressJS خصوصًا وكيفية استخدامهما، المقال التالي سيفيدك، إضافة إلى المقال السابق الخاص بكيفية تنفيذ طلبات AJAX من صفحة الويب ومفهومها
  13. ضمن صفحة HTML نرفق الشيفرة التالية، أولا تتم عملية استخراج البيانات على المتصفح كالتالي // استعلام عن العناصر const elements = document.querySelectorAll('div') // استخراج القيم النصية من العناصر const values = Array.from(elements).map(e => e.innerText) لنفرض أن الخادم لديك يتلقى طلبات على المسار التالي http://www.example.com/api نقوم بإرسال مصفوفة البيانات للخادم على ذلك المسار بواسطة طلب AJAX كالتالي fetch('http://www.example.com/api', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(values), }) على طرف الخادم يمكن استقبال البيانات المرسلة كالتالي: var express = require('express') var app = express() app.use(express.json()) app.post('/api', function (req, res) { // البيانات التي ارسلتها الصفحة const values = req.body // نعالج البيانات ... })
  14. NodeJS يعمل على الخادم فقط، أي أنه يُحضّر صفحة HTML لإرسالها لمتصفح العميل، في حال أردت التعامل مع العقد في شجرة DOM يتم ذلك بطرف العميل على المتصفح عن طريق Javascript، مثلًا بتنفيذ استعلام جلب عناصر div كالتالي document.querySelectorAll('div') بعد معالجة العناصر المرجعة من الاستعلام السابق واستخراج القيم المطلوبة منها، اذا اردنا ارسالها إلى الخادم ومعالجتها ضمن NodeJS نقوم بإرسال طلب HTTP من طرف العميل عن طريق AJAX باستخدام التابع fetch مثلًا يمكنك القراءة أكثر عن الموضوع بالمقال التالي
  15. هناك عدة أخطاء لديك، انت لا تقوم بإزالة العدد من المصفوفة بل تقوم بتجاهله والكتابة فوقه مما يؤدي إلى تكرار العنصر الأخير من المصفوفة عند أول ذكر للعدد المراد حذفه تطبق عملية الحذف (ولو كانت بشكل خاطئ) ثم تتوقف عن معالجة بقية العناصر السبب ظاهريا لان باقي الأعداد غير مكررة أساسًا، مما يعطي انطباع ان الرقم تم حذفه في حال كنت تريد تطبيق الحذف دون تغيير طول المصفوفة كما هو الحال لديك يمكنك ذلك كالتالي، إزالة الكلمة break حتى يتم معالجة جميع عناصر المصفوفة تبديل العنصر المساوي للعنصر المرغوب بحذفه ب null عند الطباعة تتجاهل العناصر التي قيمتها null يصبح الحل كالتالي int[] arr1 = {5,122,1,44,1,6,4,1,33,1,89,1,225,162,1,1,1,75,11,1,1,1}; int remove = 1; for(int i = 0; i < arr1.length ; i++) { if(remove == arr1[i]) { arr1[i] = null; // تعيين قيمة بديلة عن العنصر المحذوف } } for(int i = 0; i<arr1.length-1; i++) { if(arr1[i] === null) continue; // تجاهل طباعة العناصر المحذوفة (المستبدلة) System.out.print(arr1[i] + " "); }
  16. حاول تأكد من المنطقة المسجل فيها حسابك على Zoho، هناك عدة اسماء نطاقات تابعة لخدمة البريد اللإلكتروني لها، حاول تبديل النطاق العلوي بدلًا من com. ووضع النطاق المتاح لمنطقة حسابك كقيمة ل MAIL_HOST في الملف env. مثلا حساب تابع لمنطقة الاتحاد الأوروبي smtp.zoho.eu حساب في الهند smtp.zoho.in
  17. يمكنك إنشاء مجلد جديد ضمن القالب لديك وليكن languages، وضمنه قم بوضع كافة ملفات الترجمة mo. وضمن ملف functions.php قم بوضع الشيفرة التالية لتحميل تلك الملفات بشكل صحيح مع استبدال my_theme باسم القالب الخاص بك: add_action('after_setup_theme', 'lang_theme_setup'); function lang_theme_setup(){ load_theme_textdomain('my_theme', get_template_directory() . '/languages'); }
  18. إذا كان هدفك الوظيفة في شركة ما فأنت محكوم بشروط طلبها للموظفين مهما كان بيرقراطيًا، الشهادة بالنسبة للشركات اثبات جيد على معرفتك، لكن في مجال البرمجة التطبيقي لا حاجة للتعليم الأكاديمي بل يكفي التعلم الذاتي ليبدأ الفرد، وهنا الشركات تحتاج قرارات إدارية لاستثناء بعض المسميات الوظيفية كوظيفة المطور من شرط الشهادة. ركز على فرصك، يمكنك التركيز على التعلم وتطوير نفسك وخبراتك، وبناء معرض أعمال قوي، مما يمكنك من الاستقلال بذاتك والبدء بالعمل الحر مبدأيًا الذي قد يوازي أحيانا مردوده مردود المادي الوظيفة، ويوفر لك خبرات قوية و تبني علاقات جيدة مع زبائنك.
  19. في حال واجهتك مشكلة برمجية يمكنك إرفاق الشيفرة المتعلقة بالمشكلة التي تواجهها والاستفسار عن مشكلتك وسيقوم الزوار بمساعدتك، أما في حال أردت المساعدة بتطوير وإكمال المشروع يمكنك البحث عن مستقل لمساعدتك بمقابل مادي، يمكنك وضع مشروعك وشرح المطلوب على موقع مستقل وسيتم تقديم العروض من المستقلين ويمكنك اختاير المستقل المناسب بعد الاتفاق معه.
  20. يمكنك البدء مباشرة بدورة تطوير واجهات المستخدم وستكون قادرًا في نهايتها على تطوير الواجهات الأمامية للمشاريع، حيث هذا المجال لا يعتمد كثيرًا على المعرفة ببنية البيانات والخوارزميات، حين يواجهك مفهوم جديد ستقوم بالتعلم عن ما تحتاجه فقط، هذا يدعى التعلم من الأعلى إلى الأسفل. طريقة أخرى تكون بالتعلم من الأسفل للأعلى، أي البدء بدورة علوم الحاسب أولًا حيث ستعلمك الكثير من المفاهيم الأساسية مثل بنية البيانات التي ستتعامل معها سواء في تطوير الواجهات الأمامية أو أي مجال آخر، بهذه الحال ستكون خبرتك أعلى وستكون قادر على التوسع بشكل أكبر مستقبلًا في أي مجال تختاره.
  21. يمكنك الاستعانة بالمكتبة laravel-rate-limited-job-middleware لتطبيق ذلك، نفذ الأمر التالي لتنصيب المكتبة: composer require spatie/laravel-rate-limited-job-middleware ضمن صنف الوظيفة Job التي تريد تحديد سقف التنفيذ لها أضف التابع middleware وخصصه لتحديد عدد الوظائف والمدة الزمنية المسموح بها: use Spatie\RateLimitedMiddleware\RateLimited; ... public function middleware() { $rateLimitedMiddleware = (new RateLimited()) ->allow(10) // عدد الوظائف المسموح بها ->everySeconds(60); // المدة الزمني return [$rateLimitedMiddleware]; }
  22. لا علاقة للغة المستخدمة لتطوير تطبيقات الجوال بالاتصال بالانترنت ، الأمر يعتمد على ما تبنيه ضمن التطبيق، فمثلا عند بنائك لتطبيق بسيط لا يحتاج لجلب أي بيانات عبر الانترنت سيعمل هذا التطبيق دون الحاجة للاتصال بالانترنت، مثال على ذلك تطبيق آلة حاسبة. أما عند بنائك تطبيق من ضرورة عمله أن يجلب معلومات عبر الانترنت فهذا يضطر مستخدم التطبيق لفتح الاتصال بالانترنت للسماح لالتطبيق بأداء عمله، مثال على ذلك تطبيق مربوط مع متجر الكتروني.
  23. دورة تطوير التطبيقات باستخدام تقنيات الويب تركز على تطوير تطبيقات الجوال فقط باستخدام Cordova، تعلمك أولًا أساسيات تلك المنصة ثم تتدرب على بناء خمس تطبيقات عملية بواسطتها تطوير التطبيقات باستخدام لغة JavaScript تدربك على بناء التطبيقات بشكل عام، كلمة تطبيق هنا تعني تطبيقات الويب وتطبيقات الجوال معًا، ستبدأ الدورة معك من الصفر في تعلم أساسيات جافاسكريبت ثم منصات مثل NodeJS ومكتبات مثل React لتطوير واجهات تطبيقات الويب، و React Native لتطوير تطبيقات الجوال في حال كنت مهتمًا بتطوير تطبيقات الجوال فقط الدورة الأولى تركز على ذلك فقط دون الدخول في مجالات أخرى، أما الدورة الثانية ستدربك على بناء تطبيقات الجوال والويب معًا
  24. بسبب ما يدعى بمشكلة الألماسة، بفرض أن الصنفين B و C يرثان من A، وكل من B و C قاما بتحميل override تابع موروث من A، حين يقوم الصنف D بالوراثة من كلا الصنفين السابقين أي من نسختي التابع سيرث هل التي في C أم في B لذلك في جافا الحل كان بمنع الوراثة المتعددة، بينما هناك لغات أخرى تتضمن حلًا لتلك المشكلة مثل ++C و LISP.
  25. يجب على الواجهة البرمجية التي تتصل بها أن توفر دعمًا للردود بصيغة JSON حتى تتمكن ضمن تطبيقك من تفسير الرد ومعالجته، إذا كانت لا تدعم ذلك فلا يمكنك التعامل معها ضمن تطبيقك، واذا كانت الواجهة ملكك يجب عليك مراعاة الطلبات التي تمتلك الترويسة التالية Accept: application/json وبدلا من ارسال الرد بصيغة HTML ترسل ردًا بصيغة JSON
×
×
  • أضف...