لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 06/03/23 في كل الموقع
-
السلام عليكم هل لغة python مطلوب في سوق العمل في تطور الويب ؟ كامطور back-end بلغة python ايهما افضل Django ام Flask ؟2 نقاط
-
2 نقاط
-
هل يمكن جعل العميل يتصفح الموقع دون هوست او دوميين2 نقاط
-
جعل الموقع علي شكل صوره لوضعها علي البروفيل GIF, JPEG, JPG, PNG2 نقاط
-
سنتعرف في هذا المقال على مفهوم واجهة برمجية التطبيقات Application Programming Interface، هذا المصطلح السهل المعقد حيث سنحاول فهمه وكيفية بناء مواقع الويب والتطبيقات الحديثة في يومنا هذا بالاعتماد على الواجهات البرمجية ونجيب على سؤال مهم وهو كيف ترتبط الواجهة الأمامية مع الواجهة الخلفية لتطبيق الويب أو الموقع الإلكتروني. هذا المقال هو جزء من سلسلة مقالات حول الواجهة البرمجية API وكيفية الاستفادة منها في بناء تطبيق ويب: مدخل إلى الواجهات البرمجية API الاتصال بواجهة زد البرمجية وفهم عملية الاستيثاق والتصريح أمثلة عملية لاستخدام واجهة برمجة متاجر زد zid API تطوير تطبيق عملي يزيد من احتفاظ العملاء عبر واجهة زد البرمجية مفهوم الواجهة البرمجية للتطبيقات API قبل أن ندخل في أية تفاصيل تقنية عن موضوعنا اليوم، سأحكي لك يومًا في حياة علي. علي هو مبرمج تطبيقات ويب يعمل في إحدى الشركات التقنية العربية، علي يحب تجربة المأكوﻻت المختلفة، بحيث يجرب في كل يوم أكلة جديدة في المطاعم المحيطة وإن سمع بافتتاح مطعم جديد بالقرب من مكان عمله، فإنه ﻻ يتوانى في زيارته وتذوق مختلف اﻷطباق التي يقدمها. ذهب علي ﻷحد المطاعم التي فتحت أبوابها مؤخرا، واختار مكانا هادئًا ونادى النادل يسأله عن اﻷطباق التي يقدمونها من أجل أن يأخذ طلبيته إلى الطباخ لتحضير ما طلبه علي. دوَّن النادل ما يريد علي تناوله من مأكوﻻت وذهب بها إلى الطباخ من أجل تحضيرها، بعد مدة وجيزة، عاد النادل إلى علي وهو يحمل كل ما طلبه وقدمها متمنيا أنه يعجبه اﻷكل، تذوق علي المأكوﻻت وأبدى إعجابه اﻷولي بها، وبدأ في اﻷكل إلى أن أنهى كل ما في الصحون، دفع الحساب، وخرج من المطعم شاكرا النادل على حسن اﻷستقبال. هل تتساءل اﻵن، ما علاقة هذه القصة بالواجهات البرمجية؟ وهل تساءلت يومًا عن طريقة عمل تطبيقات الهواتف الذكية، وكيف تتصل بخوادم الشركات المطورة لها، هل استطعت الوصول إلى إجابات كافية عن ذلك؟ سأبين لك ما العلاقة بين المثال السابق والواجهات البرمجية وكيف أن الواجهات البرمجية ماهي إﻻ تطبيق لمثالنا باختلاف بسيط وهو مكان التطبيق فقط، فمثالنا هو من الواقع الذي نعيشه يوميًا ونراه دائمًا حتى تعودنا عليه حتى أصبحنا ﻻ ندركه، أما الواجهات البرمجية، فقد أصبحت جزءًا ﻻ يتجزأ من حياة مبرمج المواقع وتطبيقات الويب المهنية. كنت قد نوهتك ﻷن تسأل نفسك عن طريقة ربط تطبيقات الهواتف الذكية مع خوادم الشركات. هنالك طريقتين لربط تطبيقات الهواتف الذكية مع خوادم الشركات المطورة، الطريقة اﻷقدم تسمى SOAP وهي اختصار لجملة Simple Object Access Protocol، أما الطريقة اﻷحدث فهي الواجهة البرمجيةللتطبيقات API وهي اختصار لجملة Application Programming Interface، وهي التي سأركز عليها، ولكن باختصار، API هي طريقة لتواصل البرمجيات في ما بينها باستخدام صيغة JavaScript Object Notation والتي تعرف اختصارا بـ JSON. لن أدخل في التفاصيل التاريخية وسأبقى مركزا على الجانب التقني فقط، لهذا أتوقع منك أن تحاول البحث عن تاريخ ابتكار وتطوير تقنية API والتقنية المكملة لها REST والتي هي اختصار لجملة REpresentational State Transfer. مصطلحات وجب معرفتها سنسرد بعض المصطلحات باللغة الإنجليزية والعربية الضروري على كل مطور ويب أن يعرفها: Backend: الواجهة الخلفية، هي المسؤولة عن العمليات المنطقية للنظام، تتعامل مع الملفات أيضا ومع قواعد البيانات. Frontend: الواجهات الأمامية، كل ما يراه المستخدم ويتعامل معه بشكل مباشر، ويتم ربطها مع النظم الخلفية بما يعرف بالواجهة البرمجية للتطبيقات API. API: الواجهة البرمجية للتطبيقات، هي حلقة الوصل ما بين النظم أو الواجهة الخلفية والواجهات الأمامية. Request: الطلب الذي يرسله العميل (قد تكون الواجهة الأمامية) إلى الخادم Server الموجود في الواجهة الخلفية. Header: ترويسة الطلب Request المرسل والذي يحوي بعض البيانات الوصفية التي تصف الطلبية وحالها وأية معلومات إضافية مطلوبة. Body: جسم أو متن الطلب المرسل والذي يحوي غالبًا على البيانات المتبادلة في الطلبية. Response: استجابة أو رد الخادم وهي المعلومات الراجعة من الخادم إلى العميل مقدم الطلب ردًا على طلبه. تحوي المعلومات الراجعة من الخادم إلى العميل على ترويسة Header وأيضا على متن Body. Endpoint: نقطة الوصول، وهي نقطة اتصال الواجهات الأمامية مع موقع محدد في الواجهة الخلفية أي نقطة محددة تتصل عبرها الواجهة الأمامية مع الواجهة الخلفية لغرض محدَّد. HTTP Client Software: عميل خادم HTTP وهو برنامج يساعد على تسريع التعامل مع الواجهات البرمجية بتوفير آلية واضحة في عملية إرسال واستقبال الطلبيات والردود. هل تعرفت على أي من المصطلحات التي ذكرناها قبل قليل؟ لا بأس إن لم تفعل، فسنشرحها لك حتى تكون لديك معرفة مبدئية بموضوع الواجهات البرمجية. لماذا نستخدم الواجهات البرمجية للتطبيقات APIs وما هي فائدتها؟ تُعَد الواجهات البرمجية للتطبيقات طبقة الحماية الأولى First Security Layer للبرمجية الموجودة على خادم الويب، بسبب أنها تفصل ما بين النظم الخلفية والعمليات الجارية على قواعد البيانات عن الواجهات الأمامية سواءً كانت صفحات ويب عادية أو تطبيقات هواتف ذكية. أي أن أي تطبيق ويب أو موقع اليوم يتألف من واجهة خلفية وواجهة أمامية وواجهة برمجية تعد وصلة وصل بينهما. أما الواجهة الخلفية، فتحوي على كامل العمليات والإجراءات والخدمات التي يوفرها التطبيق أو الموقع مثل معالجة صورة أو بيانات أو حتى تقديم خدمة الطقس. أما الواجهة الأمامية فهي الواجهة التي يراها المستخدم والمسؤولة عن عرض البيانات القادمة من الواجهة الخلفية للمستخدم بصورة مناسبة ومتناسقة مع إرسال البيانات من المستخدم إلى الخادم بالشكل الذي يطلبها، فالبيانات المتبادلة تلك تكون بشكلها الخام (تستعمل غالبًا صيغة JSON أو حتى صيغة XML)، أما الواجهة البرمجية للتطبيقات API فهي صلة الوصل كما ذكرنا ووظيفتها استلام البيانات من الواجهة الأمامية وتسلميها للواجهة الخلفية وإرسال البيانات من الواجهة الخلفية إلى الأمامية بطريقة وأسلوب موحد أي هي التي تؤمن عملية التفاهم بين الواجهة الأمامية والخلفية لتأمين التخاطب فيما بينهما. كيف تعمل الواجهات البرمجية للتطبيقات API سأحاول قدر اﻹمكان تبسيط آلية عمل الواجهات البرمجية بمثال عملي من حياتنا اليومية، وليكن مثلا منصة فيسبوك. كما تعلم أنه بإمكانك الدخول إلى حسابك في فيسبوك من أي جهاز تريد، سواءً من هاتفك الذكي أو من جهازك اللوحي أو من جهاز الحاسوب بل بإمكانك الدخول منها مجتمعة وفي نفس الوقت، وهنا يجب أن تطرح سؤاﻻ مهمًا، كيف تتم مزامنة حسابك في كل تلك اﻷجهزة؟ هنا تأتي أهمية الواجهة البرمجية، بحيث أن كل تلك اﻷجهزة متصلة بنظام خلفي واحد وكلها تتصل بالواجهة البرمجية التي تكون حلقة الوصل ما بين كل اﻷجهزة المتصلة و النظام الخلفي. سنأخذ مثاﻻ من حياتنا اليومية وهو موقع فيسبوك، سنقوم بالدخول إلى حسابنا باستخدام الأجهزة التي بحوزتنا، إن لم تكن لديك أجهزة غير جهاز الحاسوب، افتح أكثر من متصفح، ليس نفس المتصفح، مثلا متصفح كروم Google Chrome ومتصفح فايرفوكس Mozilla Firefox، في هذه الحالة يمكنك فتح حسابك 4 مرات باستخدام التصفح الخفي، في متصفح كروم يسمى Incognito Mode أما في متصفح فايرفوكس فيسمى Private Mode. هل قمت بذلك؟ كيف تستطيع إرسال رسائل إلى أصدقائك من أي متصفح وتشاهدها في نفس الوقت من بقية المتصفحات؟ قم بالدخول إلى حسابك على فيسبوك من هاتفك الذكي، من التطبيق الرسمي أو من المتصفح، هل تستطيع أن ترى الرسائل التي قمت بإرسالها على هاتفك أيضا، كيف يحدث ذلك؟ كيف تستطيع الدخول إلى حسابك من أماكن مختلفة في نفس الوقت؟ سأشرح العملية بأكملها بشكل بسيط وبالمقارنة مع مثالنا في بداية المقال وبدون الدخول في التفاصيل الدقيقة في الوقت الحالي. عند دخول علي مطور الويب إلى المطعم، كان عليه أن يختار طاولة محددة برقم حتى يعلم النادل موقعه وأنه يريد تناول الطعام وبالتالي يستطيع تقديم مختلف الخدمات التي يعرضها المطعم. هنا الطاولة وتفاصيلها (من رقم وحجم وغيرهما) تعتبر المكان المتفق عليه من أجل اﻹستفادة من خدمات المطعم، ويمكن القول أنها نقطة الوصول إلى خدمات المطعم Endpoint. في حالة موقع فيسبوك، وعند قيامك فتح التطبيق مثلا، سيتصل تطبيقك بخادم الشركة، في نقطة متفق عليها ومحددة مسبقًا في التطبيق وفيها فقط يستطيع الخادم أن يقدم خدماته للتطبيق. جاء النادل إلى عليٍ والذي يسمى العميل client ليأخذ الطلبات منه، ودون أية ملاحظات أو أي خدمات أخرى، وبعدها ذهب إلى المطبخ ليخبر الطباخ بالطلبات من أجل تحضيرها. هنا نسمي العملية: إرسال طلب Send Request من العميل علي إلى الطباخ في المطعم مقدمة الخدمة. في حالة موقع فيسبوك، أقرب عملية لذلك المثال عملية تسجيل الدخول حيث تُدخل اسم المستخدم الخاص بك مع كلمة المرور، تأخذ الواجهة الأمامية منك هذه المعلومات وترسلها للواجهة الخلفية لموقع فيسبوك لتتحقق منها ومن الطلب الخاص بك، طلب تسجيل الدخول. يستلم الطباخ الطلبية ويتأكد من أنها طلبية صالحة ويمكنك تحضيرها (أي ليست طلبية شراء ملابس مثلًا) ثم يبدأ بتحضيرها وعندما ينتهي منها، يعطيها للنادل الذي يرتبها بدوره في صينية ويأخذها إلى علي ليضعها على طاولته حتى يتسنى له البدء في تذوقها. هذه العملية تسمى: اﻹستجابة Send Response أي استجاب الطباخ لطلبية علي وقدم له ما يريد. وفي حالة موقع فيسبوك، إن كانت المعلومات المقدمة صالحة، سيقوم خادم فيسبوك بالسماح لك بالدخول واستعراض مختلف الصفحات واﻷجزاء الخاصة به والاستفادة من خدمته التي يقدمها. هل اتضحت الصورة العامة اﻵن؟ ببساطة، الواجهة البرمجية تنفذ عمل النادل في المطعم، حيث أن النادل يقوم بأخذ طلبات الزبائن إلى الطباخ وفريقه لتحضيرها وبعد ذلك، يقوم بأخذ تلك استجابة الطباخ لتلك الطلبات إلى أصحابها، أي أن الواجهة البرمجية تأخذ الطلبات من المستخدمين (الواجهة الأمامية) إلى النظام الخلفي لتقوم بعمل محدد ومن ثم تعيد النتائج المتحصل عليها إلى طالبيها أي تعيدها للواجهة الأمامية مرةً أخرى. خاتمة تعرفنا على ماهية الواجهة البرمجية للتطبيقات وأهم المصطلحات فيها وكيف يستفيد منها المطورون في بناء تطبيقات الويب الحديثة واستثمارها في التواصل ما بين الواجهة الأمامية والخلفية لتطبيقات الويب والمواقع الحالية، فالتعامل مع الواجهة البرمجية للتطبيقات ضروري لأي مبرمج متخصص في تطوير الويب، وعليه أن يعي مفهوم الواجهة البرمجة تمامًا إذ أصبح هذا المفهوم هو المفهوم الحديث في التواصل ما بين الواجهة البرمجية الخلفية والأمامية للمواقع وتطبيقات الويب، أضف إلى ذلك أن الكثير من الخدمات والمواقع أصبحت تتيح واجهتها البرمجية (مثل الواجهة البرمجية للمطورين من فيسبوك وتويتر وغيرهما) للاستفادة منها أو حتى هنالك واجهة برمجية مخصصة فقط لتقديم خدمات محددة (مثل واجهة برمجية للحصول على معلومات الطقس) وتقدمها للمطورين للاستفادة من تلك الخدمات في مختلف المشاريع. اقرأ أيضًا المقال التالي: الاتصال بواجهة زد البرمجية وفهم عملية الاستيثاق والتصريح كيفية إنشاء متجر إلكتروني متكامل باستعمال منصة زد الواجهة البرمجية Fetch API في جافاسكريبت1 نقطة
-
السلام عليكم ما المهارت التي احتاجه لعمل في شركه عالمي مثل ابل - جوجل -فيسبوك ؟ هل تعلم لغة swift يوهل لعمل في شركه ابل ؟ هل تعلم مجال الويب يوهل لعمل ؟1 نقطة
-
شباب لو تكرمتم عندي مشكلةما هو سبب الخطأ التالي : FAILURE: Build failed with an exception. * Where: Script 'C:\Flutter-development\flutter\packages\flutter_tools\gradle\flutter.gradle' line: ??? * What went wrong: A problem occurred evaluating root project 'android'. > A problem occurred configuring project ':app'. > Could not create task ':app:packLibsflutterBuildDebug'. > No signature of method: org.gradle.api.tasks.bundling.Jar.destinationDir() is applicable for argument types: (File) values: [C:\Flutter-development\flutter-apps\first_app\build\app\intermediates\flutter\debug] * Try: > Run with --debug option to get more log output. > Run with --scan to get full insights.1 نقطة
-
السلام عليكم كيف التزام في المجال الاانا اختارته وما اشتيت نفسيه ؟1 نقطة
-
السلام عليكم هل برمجه Robotics تتطلب بيئاء برمجه علي الحاسوب الشخصي ام تحتاجه لبيئات السحابية مثلا Google Colab ؟ وما هي البيئاء المناسب علي الحاسوب الشخصي ؟1 نقطة
-
أولاً يجب فهم الفرق بين الخاصيتين حيث أن هناك اختلاف كبير بين خاصية margin و خاصية border-collapse عند تصميم جداول بلغة HTML. خاصية margin تضع هامش حول كامل الجدول. وهذا يعني أن الجدول ككل سينتقل إلى الداخل أو الخارج بمقدار القيمة المحددة لـmargin. في حين أن خاصية border-collapse تجعل الحدود الداخلية للخلايا تندمج في حد واحد. وهذا يزيل الفراغات الزائدة بين الخلايا. فعند تحديد margin=0 للجدول، فهذا لن يؤثر على الفراغات بين الخلايا الفرعية td و th. فهذه الفراغات تتحكم بها خاصية الحدود border. لكن عند تحديد border-collapse للجدول، سيتم دمج الحدود الداخلية للخلايا، مما يزيل الفراغات الزائدة بينها. لذا فخاصية margin تؤثر على الجدول ككل، بينما خاصية border-collapse تؤثر على الفراغات بين الخلايا الفرعية.1 نقطة
-
السلام عليكم ما هو API ؟ كمطور موبيل هل استطيع عمل API ؟ وهل احتاج API في مجال تعلم الاله ؟1 نقطة
-
بالإضافة للتعليق السابق من مقالات وبعض النصائح يفضل الإطلاع على النصائح التالية ربما تساعد في التركيز على مسار واحد تحديد الأهداف: يجب تحديد الأهداف التي تريد تحقيقها في المشروع البرمجي، وتحديد الخطوات اللازمة لتحقيق هذه الأهداف. يمكن استخدام قائمة المهام أو جدول المهام لتحديد الخطوات اللازمة ووضع جدول زمني لتنفيذها. الالتزام بمنهجية العمل: يجب اتباع منهجية عمل محددة والالتزام بها، مثل Agile أو Scrum أو Waterfall. هذا يساعد على تنظيم العمل وتحديد المهام الأساسية وتحديد المسؤوليات بشكل واضح. التركيز على المهمة الحالية: يجب تركيز الجهود على المهمة الحالية وإتمامها بشكل صحيح قبل الانتقال إلى المهمة التالية. يمكن استخدام تقنية Pomodoro لتحديد فترات زمنية محددة للعمل المتركز على المهمة الحالية دون التشتت. الحفاظ على التواصل: يجب الحفاظ على التواصل المستمر مع الفريق والعمل بشكل منتظم على مشاركة المعلومات والتحديثات حول تقدم المشروع والتحديات التي قد تواجهها. التطوير المستمر: يجب العمل على تحسين المهارات البرمجية والتعلم المستمر للتقنيات الجديدة والأدوات لتحسين جودة العمل وزيادة الإنتاجية. الإدارة الجيدة للوقت: يجب تخصيص وقت كافٍ للعمل على المشروع وتحقيق الأهداف المحددة، وتجنب التأجيل والتسويف.1 نقطة
-
يمكن تطوير برامج الروبوتات باستخدام بيئات البرمجة التي تعمل على الحاسوب الشخصي أو باستخدام بيئات السحابة مثل Google Colab، وذلك يعتمد على حجم المشروع ومتطلباته البرمجية. إذا كنت تعمل على مشروع صغير أو بسيط، فإن استخدام بيئة البرمجة على الحاسوب الشخصي يكون كافياً، ويمكنك استخدام أحد البرامج المتاحة مثل MATLAB Robotics System Toolbox أو Robot Operating System (ROS) أو Gazebo أو PyRobot. أما إذا كان لديك مشروع أكبر أو أكثر تعقيداً وتحتاج إلى موارد أكبر، فإن استخدام بيئة السحابة مثل Google Colab يمكن أن يكون خياراً جيداً، حيث يمكنك الوصول إلى موارد الحوسبة السحابية عالية الأداء والتخزين والتحليل والعرض والمشاركة عبر الإنترنت. ومن الجدير بالذكر أن استخدام بيئات السحابة يمكن أن يوفر لك تكاليف الشراء والصيانة والترقية للأجهزة اللازمة لتشغيل برامج الروبوتات، وكذلك يمكن أن يساعدك في توفير الوقت والجهد المطلوبين لإعداد البيئة البرمجية على الحاسوب الشخصي. يمكنك استخدام أحد البيئات التالية: Robot Operating System (ROS): هذه البيئة البرمجية الشهيرة والمفتوحة المصدر تعمل على نظامي التشغيل Linux وMacOS، وتوفر مكتبات وأدوات تساعد على تطوير برامج الروبوتات بسهولة. MATLAB Robotics System Toolbox: هذه الأداة توفر واجهة برمجة التطبيقات (API) لتطوير برامج الروبوتات باستخدام MATLAB، مع مجموعة من الأدوات الإضافية للمحاكاة والتصميم. Gazebo: هذه الأداة المفتوحة المصدر تستخدم للمحاكاة والاختبار للروبوتات، وتوفر واجهة برمجة للتفاعل مع الروبوتات المحاكاة، مما يجعلها مثالية للتطوير والاختبار. PyRobot: هذه الأداة القائمة على Python تساعد في تطوير برامج الروبوتات باستخدام واجهة برمجة التطبيقات (API) بسيطة، وتتضمن مجموعة من الأدوات الإضافية للمحاكاة والتصميم.1 نقطة
-
الطريقة الأولى هي عن طريق الدخول على جهازك عن طريق برامج مثل Anydesk أو TeamViewer وتجربة الموقع على جهازك. والطريقة الثانية هي بإرسالة فيديو تعرض من خلال الموقع ومميزاته للعميل. والطريقة الثالثة هي برفع الموقع على استضافة لكن قم بعمل build للمشروع ورفعه، أي أنك لن تقوم برفع الكود المصدري. والطريقة الرابعة هي بإنشاء استضافة محلية للموقع على جهازك، وإرسال الرابط للعميل، كما لو أنك قمت برفعه على استضافة، وأمثلة لتلك الخدمات هي: Ngrok Localtunnel Serveo Teleconsole Pagekite1 نقطة
-
برمجة الروبوتات تتطلب برمجة على الحاسوب الشخصي وليس بالضرورة استخدام بيئات سحابية مثل Google Colab، وبإمكانك استخدام الحاسوب الشخصي لتطوير وتجربة برامج الروبوتات وتحميلها مباشرة إلى الروبوت. ولكن بعض الأشخاص يفضلون استخدام بيئات سحابية مثل Google Colab لبرمجة الروبوتات بسبب بعض المزايا التي توفرها هذه البيئات. مثلاً، يمكن تشغيل البرامج على خوادم السحابة بدلاً من تشغيلها على الحاسوب الشخصي، وذلك قد يكون مفيدًا في حالة الروبوتات التي تحتاج إلى موارد كبيرة أو للتجربة والتطوير السريع دون الحاجة إلى تثبيت البرامج محليًا. أي ببساطة، إذا كان حاسوبك بمواصفات جيدة فلن تحتاج إلى Google Colab. وإليك مزيد من التفاصيل عن مجال برمجة الروبوتات Robotics :1 نقطة
-
تلك المشكلة حلها لديك أنت، ولا أحد قادر على حلها لك، فقط سيقدم لك النصائح، ومن لا يريد مساعدة نفسه فلا أحد يستطيع مساعدته، وبإمكانك مساعدة نفسك بتقليل المشتتات من حولك وصاحب الملل، نعم الملل هو من سيدفعك للمذاكرة والقيام بشيء مفيد بدلاً من التركيز على الملهيات والمشتتات التي تبقي عقلك مشغولاً ويتلذذ بجرعات الدوبامين اللحظية وقصيرة الأجل. وطالما اخترت مجالك على أساس سليم، كما شرحت لك من قبل وسأترك لك النقاش هنا: بعد ذلك عليك بإختيار مسار تعليمي مكون من الكورسات اللازمة للحصول على المهارات المطلوبة في ذلك المجال، أي يجب أن تختار الكورسات وتلتزم بها من البداية وبالطبع تستطيع تغييرها إن كانت سيئة لكن فيما يتعلق بالكورسات المجانية فالأمر محدود وليس لديك الكثير من الخيارات. وبخصوص الإلتزام فقد تحدثت عن ذلك من قبل في النقاشات التالية: الإلتزام في تعلم البرمجة وتجنب المشتتات1 نقطة
-
مسؤولية إنشاء الـ API هي خاصة بمطور الواجهة الخلفية، لكنك تستطيع تعلم ذلك، وذلك ما قصدته بكونك تستطيع، أو بإمكانك استخدام تقنيات توفر لك إنشاء API بدون الحاجة إلى إنشاء سيرفر وتعرف باسم Serverless مثل Netlify Functions وAWS Lambda. وNetlify Functions هي خدمة من Netlify تسمح لك بتشغيل شفراتك كـ API endpoints بشكل بسيط، وهي جزء من خدمات الـ serverless functions، وطريقة لنشر الكود الخادم كـ API endpoints، حيث يتم تشغيلها تلقائيًا عند حدوث حدث محدد، وتقوم بمعالجة الشفرات التي تعمل على الجانب الخادم وتتوقف بعد الإنتهاء من المهمة. وأغلب مطوري تطبيقات يستخدمون Firebase كواجهة خلفية للتطبيق وتتيح لهم إرسال واستقبال الطلبات أي إنشاء API وأيضًا قاعدة بيانات، بكل سهولة، وفقط عليك بتعلم كيفية الإتصال وإنشاء حساب وقاعدة بيانات واستخدام الدوال الخاصة بها في الكود لديك. وأيضًا هناك منصات مشابهة وهم Appwrite وSupabase، وإليك نبذة مختصرة: Firebase مجموعة شاملة من الأدوات التي توفر بنية تحتية قوية لتطوير تطبيقات الهاتف المحمول والويب، وتتضمن Firebase خدمات مختلفة مثل قاعدة بيانات الوثائق (Firestore) وتخزين الملفات والمصادقة وإرسال الإشعارات والتحليلات وغيرها الكثير، وتستطيع استخدام API Firebase لإجراء عمليات القراءة والكتابة والمزيد بدون الحاجة إلى كتابة الكود الخاص بالخلفية. Appwrite منصة خلفية مفتوحة المصدر تساعدك في بناء خدمات الويب السحابية (Backend-as-a-Service) بسهولة، وتوفر Appwrite مجموعة من الخدمات المختلفة مثل قاعدة بيانات الوثائق والتخزين والمصادقة والتحليلات، وبإمكانك استخدام API Appwrite لإنشاء وتعديل واستعلام البيانات دون الحاجة لمعرفة متقدمة بالواجهة الخلفية. Supabase منصة لإنشاء واجهة برمجة تطبيقات قاعدة البيانات (API) مبنية على PostgreSQL، وتوفر Supabase تجربة مشابهة لقاعدة بيانات PostgreSQL التقليدية مع إضافة طبقة من الواجهة البرمجية التي تجعل من السهل إنشاء وتعديل البيانات. وبالطبع تستطيع استخدام API Supabase لإجراء العديد من العمليات القياسية مثل الاستعلامات والإدخال والتحديث والحذف دون الحاجة لمعرفة متقدمة بالواجهة الخلفية. في المجمل، كل هذه المنصات تسعى إلى تبسيط تطوير التطبيقات وتقديم واجهات سهلة الاستخدام للمطورين الذين ليسوا متخصصين في الواجهة الخلفية، ولكن ستحتاج إلى بعض المعرفة الأساسية بمفاهيم الواجهة الخلفية والاستعلامات والتحكم في البيانات لتتمكن من استخدام هذه الأدوات بكفاءة. ولعلك تتسائل ما الفرق بين Serverless ومنصات مثل Firebase؟ ببساطة منصة مثل Firebase توفر تطوير تطبيقات شاملة تقدمها Google، وتتضمن Firebase مجموعة واسعة من الخدمات المستندة إلى السحابة مثل قاعدة بيانات الوثائق (Firestore)، وخدمة التخزين، والمصادقة، وإرسال الإشعارات، والتحليلات، والاستضافة، وغيرها الكثير. ويتم تطوير Firebase بشكل خاص لتسهيل تطوير التطبيقات النقالة وتوفير البنية التحتية اللازمة للتطبيقات الحديثة. من ناحية أخرى، يعتبر Serverless نمطًا لتطوير التطبيقات، ولا يرتبط بمنصة محددة، وتستخدم خدمات Serverless مثل AWS Lambda أو Azure Functions أو Google Cloud Functions لتنفيذ شفرة التطبيق فقط عندما يتم استدعاؤها، دون الحاجة لتكوين وإدارة خادم خاص، أي يتيح لك استخدام Serverless توفير الوقت والجهد في إدارة البنية التحتية وتكوين الخوادم. وFirebase تستخدم تحت الغطاء خدمات Serverless لتنفيذ بعض وظائفها، وكمثال فهي تستخدم Firebase Cloud Functions (وهي خدمة Serverless) لتشغيل الكود المستضاف في Firebase. أي يمكن اعتبار الخدمات السابقة (Supabase وAppwrite وFirebase) جزءًا من النمط Serverless في بعض الجوانب.1 نقطة
-
بالطبع تستطيع إنشاء API، وقد تم الحديث بشكل مفصل في النقاش التالي: ما هو الـ API1 نقطة
-
خاصية margin: 0 تستخدم لتحديد هوامش (margins) لعناصر HTML، وتعمل على تحديد المسافة بين العناصر والعناصر الأخرى في الصفحة. ولكن في حالة جداول HTML، خاصية margin: 0 لا تعمل بنفس الطريقة التي تعمل بها في عناصر HTML الأخرى. بل نستخدم خاصية border-collapse في جدول HTML، والتي تعمل على دمج حدود (borders) الخلايا المجاورة معًا، مما يؤدي إلى إزالة التباعد (spacing) الافتراضي بين الخلايا، ويعمل ذلك على تجنب ظهور التباعد الزائد ويمنح الجدول مظهرًا مرتب ومتجانس. في حين، خاصية margin: 0 لا تعمل على تجاهل التباعد بين الخلايا في جدول HTML، وحين وضعها على حقول الجدول td فلن تجد لها تأثير، وعند وضعها على الجدول نفسه table ستجد أنه يبتعد عند العناصر الأخرى بمقدار الـ margin الذي قمت بوضعه وإليك مثال: <style> table { border-collapse: collapse; margin: 10px } table td { border: 1px solid black; } </style> <table> <tr> <td>خلية 1</td> <td>خلية 2</td> <td>خلية 3</td> </tr> <tr> <td>خلية 4</td> <td>خلية 5</td> <td>خلية 6</td> </tr> </table>1 نقطة
-
السبب هو أنك بحاجة إلى إنشاء موقع لكل شيء تقريبًا، فحتى تطبيقات الهاتف لها موقع رسمي على الإنترنت والإنترنت أساسه مواقع الويب، وأتت تطبيقات الهاتف لتسهيل مهمة استخدام الموقع عن طريق تحويله إلى هاتف أو إنشاء الموقع في هيئة تطبيق وبالطبع بتصميم مختلف لتسهيل عملية الاستخدام إلى أقصى حد ممكن. وأيضًا تطبيقات الهاتف في بعض الأحيان لا تستوعب الميزات التي قد يتحملها موقع، وأيضًا على الموقع تستطيع تصفح كم هائل من البيانات في وقت أقل وبشكل أفضل من تطبيقات الهاتف. وفيما يتعلق بالبرمجة، فدائمًا ما أنصح بتعلم مجال الويب أولاً إذا كنت لم تحدد مجالك بعد، لكونه يفتح لك الكثير من الخيارات سواء مطور واجهة أمامية أو خلفية وتتعلم منه الكثير من المهارات التي ستحتاجها عند تعلم أي مجال آخر بالتالي أنت الرابح في النهاية، وأيضًا أسهل نسبيًا من المجالات الأخرى مما يسهل عليك مهمة كسر الحاجز بينك وبين مجال البرمجة.1 نقطة
-
لنفس السبب الذي جعلك تنشر سؤالك على موقع الأكاديمية الذي يعتبر موقع ويب، و هو سهولة التعامل مع الويب و استعماله من قبل كل البشر، مما يجعل الشركات كلها ملزمة بإنشاء موقع لها لعرض خدماتها و حتى تقديم الخدمات عبر الويب و إلا ستصبح من الماضي. الويب سهل الوصول لكل الأمور كما أنه لا يحتاج تجهيزات ممتازة لتصفحه، فأي جهاز محمول مهما كانت مواصفاته يستطيع فتح أي موقع. هذا كله أدى إلى طلب عالي على الويب أكثر من أي أمر آخر مما أدى إلى زيادة الوظائف و بالتالي زيادة المبرمجين الذي يعملون في هذا المجال. كما أنه أسهل من غيره كبداية، حيث لا يتطلب الكثير من المعلومات النظرية المسبقة كغيره من المجالات.1 نقطة
-
لتطوير نفسك في مجال تعلم الآلة، يمكنك القيام بالأمور التالية: 1. تعلم الرياضيات اللازمة لتعلم الآلة مثل الاحتمالات والإحصاء والجبر الخطي. 2. تعلم تقنيات التعلم الآلي والشبكات العصبية. 3. تعلم لغات البرمجة المستخدمة في تعلم الآلة مثل R وغيرها. 4. تطبيق ما تعلمته في مشاريع تطبيقية حقيقية. بالنسبة لسؤالك عن مدى صعوبة مجال تعلم الآلة، فهو مجال يتطلب دراسة وتعلم موضوعات رياضية متقدمة وتقنيات حديثة، لكنه يمكن التعلم فيه بشكل تدريجي والاستفادة من الموارد المتاحة عبر الإنترنت والكتب والدورات التدريبية. وبالنسبة لسؤالك عن إبداع المجال، فهو مجال يمكن فيه تصميم وتطوير حلول إبداعية للمشاكل الحقيقية، ويمكن استخدام تقنيات تعلم الآلة في مجالات مختلفة مثل الطب والتمويل والتسويق والصناعة وغيرها. وبالنسبة لسؤالك عن تصميم الخوارزميات بنفسك، في مجال تعلم الآلة، يمكن تصميم خوارزميات جديدة أو تحسين الخوارزميات الموجودة بناءً على الحاجة والمشكلة التي يتم حلها. يمكن تصميم الخوارزميات بنفسك من خلال دراسة المفاهيم الأساسية لتعلم الآلة والتحليل الرياضي وتجارب التعلم العملية. بالإضافة إلى ذلك، يمكن الاستفادة من الأبحاث والدوريات العلمية لتحسين الخوارزميات وتصميم حلول أفضل.1 نقطة