لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 02/02/22 في كل الموقع
-
دلوقتي لما تكون شغال علي موقع في اكتر من طريقة بتوصلك لنفس الهدف يعني علي سبيل المثال ممكن عنصرين قريبين من بعض وانت عايز تجيبهم جنب بعض ممكن تعملها بل float وممكن تعملها بل postion وممكن تظبتها بردو عن طريق padding و margin بطرقا ما يعني بس هل دي ممكن تكون مشكلة ؟ ولا اختار براحتي مع العلم في الي حيعملك مشاكل قدام بس انت مش حتاخد بالك منها دلوقتي2 نقاط
-
يمكن أن تكون أدوات تطوير الويب من طرف العميل غير مفهومة بالنسبة لكثير من المطورين، لذلك سنوضّح من خلال سلسلة من المقالات الغرض من بعض أدوات تطوير الويب الأكثر شيوعًا من طرف العميل، وسنشرح أيضًا الأدوات التي يمكنك ربطها مع بعضها بعضًا، وكيفية تثبيتها باستخدام مدير الحزم، والتحكم فيها باستخدام سطر الأوامر، وسنقّدّم مثالًا كاملًا عن سلسلة أدوات يوضح كيفية زيادة الإنتاجية، ولكن في البداية وقبل محاولة استخدام هذه الأدوات يجب أن تتعلم أساسيات لغات HTML وCSS وجافاسكربت JavaScript. وفّرنا من خلال موسوعة حسوب مرجعًا لكل من لغات HTML وCSS وJavaScript يمكنك البدء منه. سنوضح في هذه السلسلة من المقالات المواضيع التالية لفهم أدوات تطوير الويب من طرف العميل: نظرة عامة على أدوات تطوير الويب من طرف العميل: نقدّم في هذا المقال نظرة عامة على أدوات الويب الحديثة، وأنواع الأدوات المتاحة وأين ستصادفها في دورة حياة تطوير تطبيقات الويب، وكيفية العثور على المساعدة باستخدام هذه الأدوات. دورة مكثفة لفهم سطر الأوامر: سيُطلب منك بلا شك تشغيل بعض الأوامر في الطرفية Terminal أو في سطر الأوامر خلال عملية التطوير، حيث يقدم هذا المقال مقدمة إلى الطرفية والأوامر الأساسية التي ستحتاج إلى إدخالها، وكيفية ربط الأوامر مع بعضها بعضًا، وكيفية إضافة أدوات واجهة سطر الأوامر Command Line Interface -أو CLI اختصارًا. أساسيات إدارة الحزم: سنلقي نظرة على مدراء الحزم بشيء من التفصيل لفهم كيفية استخدامها في مشاريعك لتثبيت اعتماديات Dependencies أدوات المشروع وتحديثها وغير ذلك. سلسلة أدوات كاملة: سنعمل في المقالين الأخيرين من السلسلة على ترسيخ معرفتك بالأدوات من خلال إرشادك خلال عملية بناء نموذج لسلسلة أدوات عن طريق إعداد بيئة تطوير ووضع أدوات التحويل في مكانها لنشر تطبيقك فعليًا على Netlify. كما سنقدم دراسة حالة مع إعداد بيئة التطوير الخاصة بنا وإعداد أدوات تحويل شيفرتنا. نشر التطبيق: سنأخذ في المقال الأخير من هذه السلسلة مثالًا عن سلسلة الأدوات التي أنشأناها في المقال السابق ونضيفها لنتمكن من نشر التطبيق، إذ سنرفع الشيفرة البرمجية للمشروع على موقع مشاركة الشيفرات جيت هب GitHub، وننشرها باستخدام نيتليفاي Netlify، وسنوضّح كيفية إضافة اختبار بسيط لهذه العملية. لنبدأ بمقالنا الأول من هذه السلسلة من خلال إلقاء نظرة سريعة على أدوات تطوير الويب من طرف العميل. المتطلبات الأساسية: الإلمام بمفاهيم لغات HTML و CSS وجافاسكربت الأساسية. الهدف: فهم أنواع الأدوات من طرف العميل وكيفية العثور عليها والحصول على المساعدة بشأنها. استخدام الأدوات الحديثة أصبحت كتابة برمجيات الويب أكثر تعقيدًا بمرور الوقت، وبالرغم من ذلك لا يزال كتابة برمجيات الويب يدويًا بلغة HTML و CSS وجافاسكربت أمرًا ممكنًا إلا أنه يوجد الآن مجموعة كبيرة من الأدوات التي يمكن للمطورين استخدامها لتسريع عملية إنشاء موقع ويب أو تطبيق. توجد بعض الأدوات المستقرة التي أصبحت أسماء مألوفة وشائعة في مجتمع تطوير الويب، بالإضافة إلى الأدوات الجديدة التي نراها تصدر كل يوم لحل مشكلات معينة، فيمكن أن تكتب برنامجًا للمساعدة في عملية التطوير الخاصة بك ولحل مشكلة معينة لا يمكن أن تحلها الأدوات الحالية. يمكنك استخدام عدد هائل من الأدوات وتضمينها في مشروع واحد، كما يمكنك استخدام أداة واحدة مثل Webpack وإعداد ملف تكوينها من مئات الأسطر، وغالبًا ما ينظر المبرمجين المبتدئين لهذه الشيفرة وكأنها تعويذات تؤدي المهمة بطريقة سحرية ولن يفهمها إلا المهندسون الخبراء. إلا أنه في الواقع غالبية الخبراء يواجهون مشاكلًا في استخدام الأدوات من وقت لآخر، إذ يمكن إضاعة ساعات في محاولة تشغيل مسار أدوات قبل لمس سطر واحد من شيفرة التطبيق. لذلك لا داعي للقلق، فأنت لست وحدك. سنزودك من خلال هذا المقال بنقطة بداية مفيدة لفهم أساسيات استخدام أدوات الويب، إذ يُفضَّل أن تبدأ على نطاق صغير، ثم تشق طريقك تدريجيًا إلى الاستخدامات أكثر تقدمًا. نظام أدوات المطورين الحديث يعدّ النظام البيئي Ecosystem الحديث لأدوات المطورين في يومنا الحالي ضخم نسبيًا، لذا يجب من الأفضل تكوين فكرة عامة عن المشاكل الرئيسية التي تحلها هذه الأدوات. إذا انتقلت إلى محرك البحث المفضل لديك وبحثت عن "أدوات مطور الواجهة الأمامية"، فستصل لمجموعة كبيرة من النتائج تتراوح من محرّرات النصوص والمتصفحات وحتى نوع الأقلام التي يمكنك استخدامها لتدوين الملاحظات. وبالرغم من أن اختيارك لمحرّر الشيفرة هو بالتأكيد جزء من خيارات الأدوات، ولكن في هذه السلسلة من المقالات سنتجاوز ذلك من خلال التركيز على أدوات المطور التي تساعدك على إنتاج شيفرة ويب ذات كفاءة عالية. يمكنك تصنيف الأدوات من طرف العميل ضمن الفئات الثلاث التالية: شبكة الأمان Safety Net: أدوات مفيدة أثناء تطوير شيفرتك. التحويل Transformation: الأدوات التي تحول الشيفرة بطريقة ما مثل تحويل لغة وسيطة إلى لغة جافاسكربت التي يمكن أن يفهمها المتصفح. أدوات ما بعد التطوير Post-development: الأدوات المفيدة بعد كتابة شيفرتك مثل أدوات الاختبار والنشر. لنلقِ نظرة على كل واحدة من هذه الفئات بمزيد من التفصيل. شبكة الأمان هي الأدوات التي تحسّن شيفرتك البرمجية التي تكتبها، ويجب أن تكون هذه الأدوات خاصةً ببيئة التطوير الخاصة بك، بالرغم من ذلك من غير المألوف أن يكون لدى الشركات سياسة أو إعدادات جاهزة للتثبيت لكي تضمن أن يستخدم جميع مطوري هذه الشركات العمليات نفسها. تتضمن هذه الأدوات أيّ شيء يسهّل عملية التطوير فيما يتعلق بإنشاء شيفرة مستقرة وموثوقة. كما يجب أن تساعدك أدوات شبكة الأمان في منع حدوث الأخطاء أو تصحيحها تلقائيًا دون الحاجة إلى إنشاء شيفرة من نقطة الصفر في كل مرة. سنوضّح فيما يلي بعض أنواع أدوات شبكة الأمان الشائعة التي يستخدمها المطورون. منقحات الصياغة Linters منقحات الصياغة هي أدوات تتحقق من شيفرتك وتخبرك بوجود أخطاء وبأنواعها وسطور الشيفرة التي توجد فيها. يمكن ضبط منقحات الصياغة للإبلاغ عن الأخطاء، وللإبلاغ عن أيّ انتهاكات لدليل النمط المحدَّد الذي يستخدمه فريقك مثل الشيفرة التي تستخدم عددًا خاطئًا من المسافات البادئة، أو استخدام صياغة قالب Template Literals بدلًا من صياغة سلسلة نصية عادية String Literals. يعدّ Eslint منقّح أخطاء معياري خاص بلغة جافاسكربت ويمكن ضبط هذه الأداة لاكتشاف أخطاء الصياغة المحتملة وتشجيعك لاستخدام أفضل الممارسات ضمن شيفرتك البرمجية. شاركت بعض الشركات والمشاريع إعدادات Eslint الخاصة بها، ويمكنك العثور على أدوات اكتشاف أخطاء للغات أخرى مثل Csslint. كما يمكنك استخدام Webhint وهو منقح أخطاء مفتوح المصدر يمكن ضبطه للويب، ويعرض أفضل الممارسات لاستخدامها بما في ذلك أساليب الوصول والأداء والتوافق مع المتصفحات باستخدام بيانات توافق متصفح MDN والأمان واختبار تطبيقات الويب ذات الصفحة الواحدة PWA وغير ذلك. كما يتوفر كأداة سطر أوامر Node.js وكامتداد VS Code. التحكم بالشيفرة البرمجية يُعرَف أيضًا باسم أنظمة التحكم بالإصدارات Version Control Systems أو VCS اختصارًا، ويُعَد التحكم بالشيفرة البرمجية ضروريًا لدعم العمل الفردي أو ضمن فريق. يتضمن نظام VCS إصدارًا محليًا من الشيفرة التي تجري تغييرات عليها، ثم ترفع التغييرات إلى إصدار رئيسي من الشيفرة داخل مستودع بعيد مُخزَّن على خادم في مكان ما. هناك عادةً طريقة للتحكم في التعديلات التي تُطبَّق على النسخة الرئيسية من الشيفرة وتنسيقها ومتى تطبَّق، وبالتالي لا يكتب فريق المطورين فوق عمل بعضهم بعضًا. يعد نظام جيت هاب Git من أشهر نظم التحكم بالشيفرة البرمجية الذي يستخدمه معظم المطورين حاليًا، إذ يمكن الوصول إليه عبر سطر الأوامر أو عبر واجهات سهلة الاستخدام. كما يمكنك رفع نسخة من المشروع إلى الخادم الخاص بك باستخدام شيفرتك في مستودع جيت، أو يمكنك استخدام موقع ويب مستضاف للتحكم بالشيفرة المصدرية مثل جيت هب GitHub أو جيت لاب GitLab أو بيت باكيت BitBucket، ولكن سنستخدم GitHub في مثالنا. مُنسِّقات الشيفرة Code Formatters ترتبط مُنسِّقات الشيفرة إلى حد ما بمنقّحات الصياغة، باستثناء أنه بدلًا من الإشارة إلى الأخطاء في شيفرتك، فإنها عادةً ما تميل إلى التأكد من تنسيق شيفرتك الصحيح وفقًا لقواعد النمط الخاصة بك، وتعمل تلقائيًا على إصلاح الأخطاء التي تعثر عليها. أحد الأمثلة الشائعة لمنسقات الشيفرة البرمجية هو Prettier، والذي سنستخدمه لاحقًا في مثالنا. الحزم Bundlers أو Packagers هي الأدوات التي تجعل شيفرتك جاهزةً لعملية الإنتاج عن طريق تقنية هز الشجرة Tree-Shaking مثلًا للتأكّد من إدراج أجزاء مكتبات الشيفرة التي تستخدمها فعليًا فقط في شيفرة الإنتاج النهائي، أو التصغير Minifying لإزالة كل مسافة فارغة في شيفرة الإنتاج، مما يصغّرها قدر الإمكان قبل رفعها إلى الخادم. تعد أداة Parcel من الأدوات الذكية التي يمكنها تطبيق المهام المذكورة السابقة، كما أنها تساعد أيضًا في حزم الملفات أو الملحقات assets مثل HTML وCSS وملفات الصور ضمن حزم ملائمة يمكنك نشرها لاحقًا، وتضيف اعتماديات تلقائيًا كلما حاولت استخدامها. كما يمكن لهذه الأداة التعامل مع بعض مهام تحويل الشيفرة نيابة عنك. يذكر أن أداة ويب باك Webpack هي أشهر أداة حزم تطبّق مهامًا مماثلة. التحويل Transformation تتيح هذه المرحلة من دورة حياة تطبيق الويب كتابة شيفرة برمجية إما في شيفرة مستقبلية مثل تحويل الشيفرة البرمجية لأحدث ميزات لغة CSS أو جافاسكربت التي يمكن ألّا تدعمها بعض المتصفحات حتى الآن، أو إنشاء شيفرة برمجية مكافئة لشيفرة برمجية مكتوبة بلغة معينة مثل لغة TypeScript، لتتوافق الشيفرة التي أنشأتها الأداة المطلوبة مع المتصفح لاستخدامها في عملية الإنتاج. يُنظَر إلى تطوير الويب على أنه مؤلَّف من ثلاث لغات هي HTML وCSS وجافاسكربت، وهناك أدوات تحويل لجميع هذه اللغات. يقدّم التحويل فائدتين رئيسيتين هما: القدرة على كتابة شيفرة برمجية باستخدام أحدث ميزات اللغة وتحويلها إلى شيفرة تعمل على جميع الأجهزة، فيمكن أن ترغب مثلًا في كتابة شيفرة بلغة جافاسكربت باستخدام ميزات لغة جديدة متطورة، ولكن لا يزال لديك شيفرة الإنتاج النهائي التي تعمل على المتصفحات القديمة التي لا تدعم هذه الميزات. تشمل الأمثلة التالية: Babel: مصرّف جافاسكربت JavaScript الذي يسمح للمطورين بكتابة شيفرة باستخدام أحدث إصدارات جافاسكربت، والتي يأخذها Babel ويحوّلها إلى إصدار جافاسكربت قديم يمكن لمزيد من المتصفحات فهمه. كما يمكن للمطورين كتابة ونشر إضافات Babel. PostCSS: تطبّق هذه الأداة الشيء نفسه الذي يطبّقه Babel، ولكن مع ميزات CSS المتطورة. إذا لم تكن هناك طريقة مكافئة لتطبيق شيء ما باستخدام ميزات CSS القديمة، فسيثبّت PostCSS تعويض نقص دعم المتصفحات Polyfill بلغة جافاسكربت لمحاكاة تأثير CSS الذي تريده. خيار كتابة الشيفرة بلغة مختلفة تمامًا وتحويلها إلى لغة متوافقة مع الويب مثل: Sass / SCSS: يتيح لك هذا الامتداد من لغة CSS استخدام المتغيرات والقواعد المتداخلة والمزج والدوال والعديد من الميزات الأخرى، إذ يُعَد بعضها متاحًا في لغة CSS الأصلية مثل المتغيرات، وبعضها ليس كذلك. TypeScript: هي مجموعة شاملة من لغة جافاسكربت التي تقدم مجموعة من الميزات الإضافية. يحوّل مصرّف TypeScript شيفرة TypeScript إلى جافاسكربت عند البناء بهدف الإنتاج. توفّر أطر العمل مثل React وEmber وVue الكثير من الوظائف مجانًا وتسمح لك باستخدامها عبر صيغة مخصَّصة مبنية على لغة جافاسكربت الصرفة Vanilla JavaScript. تعمل شيفرة جافاسكربت الخاصة بإطار العمل في الخلفية لتفسير هذه البنية المخصَّصة وتقديمها بوصفها تطبيق ويب نهائي. أدوات ما بعد التطوير Post Development تضمن أدوات ما بعد التطوير أن يصل برنامجك إلى الويب ويستمر في عمله، إذ تتضمن مرحلة ما بعد التطوير عمليات النشر وأطر عمل الاختبار وأدوات التدقيق وغير ذلك. تُعَد هذه المرحلة بأنها المرحلة التي تحتاج أقل قدر من التفاعل النشط بحيث تُشغَّل تلقائيًا بمجرد تهيئتها، وتخبرك بحدوث خطأ ما. أدوات الاختبار Testing Tools تأخذ هذه الأدوات شكل أداة تختبر تلقائيًا شيفرت البرمجية للتأكد من صحتها قبل المضي قدمًا مثل رفع تعديلات إلى مستودع جيب هب GitHub Repo. يمكن أن يشمل ذلك الكشف عن الأخطاء Linting، ويشمل إجراءات أكثر تعقيدًا مثل اختبارات الوحدة إذ تشغّل جزءًا من شيفرتك، مع التأكد من أنها تتصرف كما ينبغي. تشمل أطر عمل اختبارات الكتابة Jest وMocha وJasmine. تتضمن أنظمة التشغيل والاختبارات الآلية Travis CI وJenkins وCircle CI وغيرها. أدوات النشر Deployment Tools تسمح أنظمة النشر بنشر موقع الويب الخاص بك، وهي متاحة لكل من المواقع الثابتة والديناميكية، وتميل للعمل جنبًا إلى جنب مع أنظمة الاختبار، إذ ستنتظرك سلسلة الأدوات إلى أن ترفع التغييرات إلى المستودع البعيد، وتجري بعض الاختبارات لمعرفة ما إذا كانت التغييرات مناسبة، وإذا نجحت الاختبارات، فستنشر تطبيقك تلقائيًا على موقع إنتاج. تعد Netlify واحدة من أكثر أدوات النشر شيوعًا في الوقت الحالي، ولكن هناك أدوات أخرى مثل Vercel وGithub Pages. أدوات ما بعد التطوير الأخرى هناك عدد من أنواع الأدوات الأخرى المتاحة للاستخدام في مرحلة ما بعد التطوير، بما في ذلك Code Climate لجمع مقاييس جودة الشيفرة، وامتداد متصفح Webhint لإجراء تحليل وقت التشغيل للتوافق مع المتصفحات وعمليات التحقق الأخرى، وGithub bots لتوفير المزيد من ميزات GitHub القوية، وUpdown لتوفير مراقبة وقت تشغيل التطبيق وغير ذلك الكثير. أنواع الأدوات تُطبَّق أنواع الأدوات المختلفة في دورة حياة التطوير وفق ترتيب معين، ولكن كن مطمئنًا أنك لست مضطرًا إلى أن يكون لديك كل هذه الأدوات لإصدار موقع ويب، فلن لا تحتاج لأيٍّ منها. لكن سيؤدي تضمين بعض هذه الأدوات في عملياتك إلى تحسين تجربة التطوير، ويُحتمَل أن يؤدي إلى تحسين جودة شيفرتك الإجمالية. يستغرق استقرار أدوات المطور الجديدة بعض الوقت حسب تعقيدها. تشتهر إحدى أشهر الأدوات وهي Webpack بكونها معقدة للغاية للتعامل معها، ولكن كان هناك ضغط كبير لتبسيط الاستخدام في أحدث إصدار رئيسي، لذا قُلٍّل الإعداد المطلوب إلى الحد الأدنى. ليس هناك حل سحري يضمن النجاح باستخدام الأدوات، ولكن ستجد تدفقات عمل تناسبك أو تناسب فريقك ومشاريعك مع زيادة خبرتك، ويجب أن تكون سلسلة الأدوات شيئًا يمكنك نسيانه وأن تركّز على العمل فقط، بمجرد تسوية جميع مكامن الخلل في العملية. كيفية اختيار أداة معينة والحصول عليها تميل معظم الأدوات إلى كتابتها وإصدارها بصورة منفصلة، لذلك لا تتوفر أبدًا في المكان أو التنسيق نفسه، على الرغم من وجود مساعدة شبه مؤكدة، فيمكن أن يكون العثور على مساعدة في استخدام أداة أو حتى اختيار الأداة التي تريد استخدامها أمرًا صعبًا. المعرفة حول أفضل الأدوات لاستخدامها هي معرفة مجتمعية إلى حد ما، مما يعني أنه إن لم تكن بالفعل في مجتمع الويب، فستكون معرفة الأدوات التي تريدها بالضبط أمرًا صعبًا، وهذا هو أحد الأسباب التي دفعتنا إلى كتابة هذه السلسلة من المقالات، ونأمل أن نقدم تلك الخطوة الأولى التي يصعب إيجادها بطريقة أخرى. ستحتاج على الأرجح إلى مجموعة الأشياء التالية: نجح المدرسون أو الموجهون أو الزملاء الطلاب ذوو الخبرة أو الزملاء الذين لديهم بعض الخبرة في حل هذه المشكلات من قبل، ويمكنهم تقديم المشورة. مكان محدد مفيد للبحث، إذ تكون عمليات البحث العامة على الويب عن أدوات مطور الواجهة الأمامية عديمة الفائدة إلا إن عرفتَ اسم الأداة التي تبحث عنها. إذا استخدمتَ مدير الحزم NPM لإدارة اعتمادياتك على سبيل المثال، فيُفضَّل الانتقال إلى صفحة npm الرئيسية والبحث عن نوع الأداة التي تبحث عنها. حاول مثلًا البحث عن "التاريخ date" إن أردتَ أداة تنسيق التاريخ، أو "المُنسِّق formatter" إذا كنت تبحث عن مُنسق شيفرة عام. انتبه إلى درجات الشعبية والجودة والصيانة، وآخر تحديث للحزمة. انقر على صفحات الأداة لمعرفة عدد تنزيلات الحزمة الشهرية، واحتوائها على توثيق جيد يمكنك استخدامه للتأكد من أنها تطبّق ما تريده، وبالتالي تُعَد مكتبة date-fns أداة تنسيق تاريخ جيدة لاستخدامها. إذا أردت البحث عن إضافة Plugin لدمج وظائف الأدوات في محرّر الشيفرة، فألقِ نظرة على صفحة الإضافات / الامتدادات لمحرر الشيفرة، وراجع حزم Atom وامتدادات VSCode على سبيل المثال. ألقِ نظرة على الامتدادات المميزة في الصفحة الأولى، وحاول مرة أخرى البحث عن نوع الامتداد الذي تريده (أو اسم الأداة مثل البحث عن "eslint" في صفحة امتدادات VSCode). إذا حصلتَ على نتائج، فألقِ نظرة على معلومات عدد النجوم أو التنزيلات التي يحتويها الامتداد، إذ يُعَد ذلك مؤشرًا على جودته. المنتديات المتعلقة بالتنمية لطرح أسئلة حول الأدوات التي يجب استخدامها مثل قسم الأسئلة والأجوبة البرمجية في أكاديمية حسوب. إذا اخترت أداة لاستخدامها، فيجب أن يكون طريقة فهم الأداة هو الصفحة الرئيسية لمشروع الأداة والذي يكون غالبًا موقع ويب كامل أو يكون مستندًا تمهيديًا واحدًا في مستودع الشيفرة. يمكن أن ترغب في العثور على بعض البرامج التعليمية المخصصة لبدء استخدام أنواع معينة من الأدوات، لذا تعد المقالات البرمجية ومقالات DevOps في أكاديمية حسوب أماكن الانطلاق الرائعة للبحث. يُحتمَل أن تمر عبر العديد من الأدوات المختلفة أثناء البحث عن الأدوات المناسبة لك، وأن تجربها لمعرفة ما إذا كانت منطقية ومدعومة جيدًا وتطبّق ما تريده منها. يُعَد كل ذلك مناسبًا للتعلم، وسيصبح الطريق أسلس كلما اكتسبت مزيدًا من الخبرة. الخلاصة قدّمنا من خلال هذا المقال مقدمة بسيطة عن أدوات الويب من طرف العميل، وسنقدّم في المقال القادم دورة مكثفة عن سطر الأوامر، إذ تُستدعَى كثير من الأدوات منه، وسنلقي نظرة على ما يمكن أن يفعله سطر الأوامر ثم نحاول تثبيت الأداة الأولى ونستخدمها. هذا المقال جزء من سلسلة مقالات بعنوان تعلم تطوير الويب والتي تشرح كامل عملية تطوير الويب من واجهات أمامية وخلفية بالكامل. ترجمة -وبتصرُّف- للمقالين Understanding client-side web development tools وClient-side tooling overview. اقرأ أيضًا مدخل إلى أدوات التطوير في متصفح الويب DevTools كيف تستخدم أدوات المطوِّر في المتصفحات الحديثة الفرق بين مصمم الويب ومطور الويب وكيفية معرفة الأنسب بينهما الأدوات المستخدمة في بناء مواقع ويب1 نقطة
-
قد لا يدعم برنامج VS Code بعض الهاشات التي تم توليدها من قِبل بعض المواقع، يمكنك أن تستخدم موقع zinoui لتوليد هاش صحيح، لكن عليك أن تضيف .css إلى نهاية الرابط لكي يعمل الموقع بشكل سليم: https://fonts.googleapis.com/css2?family=El+Messiri&display=swap.css // ^^^^^ وسيتم توليد كودج سليم بالشكل التالي: <link href="https://fonts.googleapis.com/css2?family=El+Messiri&display=swap.css" rel="stylesheet" integrity="sha384-d5m239bU1uZmu/M/j2JqVS8ZbQYLFSfp3cefs1vrIB8UaXE1DTSFwhtAioI18Nck" crossorigin="anonymous">1 نقطة
-
عندما قمت بإضافة crossorigin attribute ظهرت الرسالة التالية: Resource was requested without the 'integrity' attribute. في الواقع لما بحثت عن integrity attribute (الخاصة بخطوط غوغل) وقمت بالدخول إلى الرابط: https://www.srihash.org/ ثم أدخلت رابط خطوط غوغل لم أصل إلى نتيجة ربما لأن الموضوع معقد أكثر مما تصورت. على كل شكرا جزيلا أخي الكريم على كل الإيضاحات.1 نقطة
-
في الحقيقة، لا مشكلة بإستعمال أي سياق مادام يؤدي الغرض ويعطي التنسيق أو التموضع المطلوب، ولكن الذي يتحكم ويؤول خاصية عن أخرى هو بالدرجة الأولى تجاوب كل خاصية مع مختلف حالات الاستعمال التي يمكن لها أن تحدث. على سبيل المثال: ان كنا نريد مثلا أن يظهر زر التسجيل في القائمة البريدية في منتصف الترويسة الأساسية للموقع، سيمكننا أن نعطي هذا الزر وضعية ثابتة position:fixed ونقوم بضبط المسافة من اليمين واليسار إلى حد أن تتموضع في المنتصف تماما. لحد ما تفي هاته الفكرة بالغرض، ولكن بعض حالات الاستعمال الأخرى قد تسقط هذا المنطق وتفضل طريقة أخرى عن هاته الطريقة. مثل: ان قام المستخدم بالانزلاق الى الاسفل لتفحص باقي العناصر فإن العنوان سيبقى ثابتا في منتصف الصفحة بشكل مزعج يغطي باقي الأقسام. ولو حدث وقلنا أن موقعنا ككل يمتلك قسما واحدا. فإن مشكلة أخرى ستظهر في حالة تصفح العميل للموقع عن طريق الهاتف أو التابلت مثلا، فالنسب من اليمين واليسار في شاشة الكمبيوتر 24" ليست هي نفسها في شاشة الهاتف أو التابلت، ولذلك فإن تموضع العنصر سيتغير في كل من الشاشات. هاته المشاكل تجعل من الأفضل استعمال هامش تلقائي على المحور x بدل الوضعية الثابتة. فإن حدث وقام المستخدم بتصفح الموقع من الهاتف فسيحافظ الموقع على شكله هنا أيضا، لأن الهامش التلقائي من اليمين واليسار لن يتغير من الهاتف الى الكمبيوتر. كما أن العنصر لن يبقى في المنتصف في حالة انزلاق المستخدم لتصفح أقسام اخرى. هاته الاحتمالات والاعتبارات التي يجب أن يأخذها المصمم أثناء عمله لتصميم موقع هي ما يعتبر جزءا هاما من ادارة أولويات التصميم، وهي ما يسقط خاصية على أخرى. وعموما، لا يكتسب ذلك إلا بالاختبار والتجريب والتكرار والخبرة. والتفاعل مع العناصر بشتى الاحتمالات. واستخراج مختلف حالات الاستعمال سيجعلنا نقرر بالضبط أي خاصية نستخدمها وأي خاصية لا، مثل: ما الذي يحدث عندما يضغط المستخدم الزر؟ ما الذي يحدث عندما ينزلق المستخدم الى القسم التالي؟ ماذا سيحدث ان حاول مستخدمنا سحب العنصر؟ ماذا سيحدث ان قام المستخدم بإعادة تحجيم نافذة الموقع؟ الى أي حد تلائم هاته الخاصية التصميم الحالي؟ إلى أي مدى تتجاوب هاته الخاصية أو الخواص مع مختلف الشاشات ولا تتطلبنا أن نخصص كل مجموعة من الخواص لكل شاشة بمفردها؟ هل تعتبر هاته الخواص هي أقل وأنظف شيفرة تحقق الغرض؟ وما الى ذلك من احتمالات واعتبارات..1 نقطة
-
الأمر بسيط وليس بذلك التعقيد الذي يظهر عليه، فالتواصل بين الخادم والعميل يتم عن طريق آلية سهلة وبسيطة. لنقل أن التطبيق ككل يتكون من قسمين أساسين: قسم يراه المتصفح ويقرأه ويظهره للعميل الذي يتصفح هذا الموقع. قسم لا يراه المتصفح، ولا يصل إليه مباشرة وتتم فيه أغلب العمليات الحساسة التي من غير الآمن أن يراها من هو المتصفح. القسم الأول يدعى بقسم العميل، في حين أن القسم الثاني يدعى بقسم الخادم. والتواصل بينهما يتم غالبا بالشكل الآتي: عندما نستعرض موقعا ما، فإن تطبيقنا يسمح بتسليم الجزء المسموح إظهاره للمتصفح. يستقبل جزء "العميل" مجموع الشيفرات والملفات المسموح عرضها، ويترجمها المتصفح إلى هياكل HTML و تنسيقات CSS و تفاعلات جافاسكربت مع الموقع. وبناءا على حدث ما (وليكن ضغطة زر) يقوم العميل بالتواصل مع الجزء الخفي للتطبيق، ويكون ذلك عن طريق طلبيات الـ HTTP أين يتم ارسال أو طلب بيانات واستقبال رد. عندما يستقبل العميل هذا الرد يقوم بالتصرف بناءا عليه. لنقم بفهم هذا التكامل جيدا عن طريق مثال شائع عن عمليات تسجيل الدخول: يقوم الطالب "أحمد" بالتصفح عن طريق المتصفح الى رابط تسجيل الدخول في أحد المنصات التي يسجل بها https://app.co/login . يستقبل الجزء الخفي من هذا التطبيق طلب أحمد، ويقوم بإرسال الملف الموافق لصفحة تسجيل الدخول في الرد. يستقبل المتصفح هذا الملف، ويقوم بترجمة HTML و CSS و جافاسكربت ليظهر الموقع بشكله وتنسيقاته وتفاعليته المطلوبة. يقوم "أحمد" بعد أن يعرض له المتصفح تفاصيل الموقع بملئ حقل البريد الالكتروني ببريده الذي سجل به، وحقل كلمة المرور بكلمة المرور الخاصة به. عندما يظغط "أحمد" زر "تسجيل الدخول" يقوم العميل بالتحسس الى هذا الحدث ومعرفة أن أحمد يريد ان نتحقق من بياناته ونسجل دخوله. وبالتالي يقوم بإرسال طلبية HTTP إلى الخادم مرفقة ببريده الالكتروني وكلمة مروره. لأن من غير الآمن أن نتحقق من صدق كلمة المرور ومطابقتها البريد الالكتروني في الجزء الذي يظهر لأحمد، وإلا فإنه سيمكنه تزييف دخوله ومعرفة كلمة المرور الحقيقية لأننا نقارن التي يرسلها مع الحقيقية. يستقبل الخادم هذا الطلب ويقوم بمعالجة هاته البيانات ويتحقق منها، فإن كانت مطابقة قام بإرسال رد بالنجاح، وإلا فإنه سيرسل ردا بالفشل لأحمد. يستقبل أحمد هذا الرد من الخادم، ويقوم بالتصرف بناءا على هذا الرد، فإن كانت بياناته صحيحة طبقا للخادم فسيتم توجيهه مثلا إلى لوحة تحكمه، وإلا فإنه سيتم إظهار رسالة الخطأ الموافقة لذلك. مبدئيا، هاته هي الخطوط العريضة في التواصل بين الخادم والعميل عن طريق طلبيات الـ HTTP. إذ يمكن تكييف أي مثال وفق طريقة الاستماع إلى حدث يعطي إشارة بإرسال الطلب وإستقبال الرد والتصرف بناءا عليه.1 نقطة
-
هذا ليس خطأ error بل تحذير warning من برنامج VS Code لكي تقوم بإضافة الخاصية crossorigin إلى العنصر link بالشكل التالي: <link rel="stylesheet" href="..." crossorigin="anonymous"> وقد تم شرح هذه الخاصية وكيفية إستخدامها في هذه المقالة (قسم سياسة تعدد المصادر Crossorigin policy): يمكنك تجاهل مصل هذه التحذيرات وسيعمل الموقع بدون مشكلة، ولكن البحث عن معناها وكيفية إصلاحها سوف يزيد من معلوماتك.1 نقطة
-
أحاول إنشاء نموذج form لتعديل بيانات المستخدم (Profile Page). لذلك أحتاج إلى تضمين بعض الحقول من نموذج المستخدم ونموذج Profile. حاليا أنا أستخدم نموذجين بالشكل التالي: class ProfileForm(ModelForm): class Meta: model = UserProfile fields = ("bio", "phone", "email", "username") class UserEditForm(ModelForm): class Meta: model = User fields = ("name", "age") هل هناك طريقة لدمج نموذجين في نموذج واحد أم أحتاج إلى إنشاء نموذج جديد بالكامل؟1 نقطة
-
كيفيه ارسال حواله من اكونت paypal الي اخر عن طريق RESTAPI?1 نقطة
-
يمكن إرسال تفاصيل التحويل إلى الواجهة البرمجية الخاصة ببايبال عبر طلب POST إلى المسار التالي: /v1/payments/payouts الترويسات الواجب إرسالها هي نوع المحتوى Content-Type لوصف نوع المحتوى المرسل، وتروسية التوثيق Authorization كالتالي (مع تبديل المفتاح بالمفتاح الخاص بحسابك): Content-Type: application/json Authorization: Bearer <المفتاح الخاص بحسابك> جسم الطلب هو غرض JSON يتضمن مفتاحين رئيسيين : sender_batch_header: وفيه معلومات عن الحوالة الحالية من معرّف خاص تضع فيه أي قيمة تريد، وعنوان ومحتوى البريد الالكتروني المرسل للحساب الوجهة عند استلامه للحوالة "sender_batch_header": { "sender_batch_id": "1234", "email_subject": "تم إرسال أرباحك", "email_message": "المبلغ المرسل هو أرباحك خلال المدة الماضية، شكرًا لك" } items: وهي مصفوفة تضم أكثر من حوالة وتفاصيل عم الوجهة يمكنك إرسالها معًا، تتضمن التفاصيل التالية: recipient_type: وهو نوع حساب الوجهة إما لديك عنوان بريده أو رقم هاتفه أو معرّف بايبال الخاص به تكون إحدى القيم التالية (EMAIL - PHONE - PAYPAL_ID) receiver: وهو عنوان الحساب الوجهة قيمته بحسب نوع العنوان في الحقل السابق amount: يتضمن العملة والقيمة المرسلة: value: القيمة currency: العملة "items": [ { "recipient_type": "EMAIL", "receiver": "receiver@example.com", "amount": { "value": "9.87", "currency": "USD" }, } ] بحسب لغة البرمجة أو إطار العمل المستخدم تقوم ببناء الطلب على الشكل السابق وإرساله1 نقطة
-
لدي بعض مهام التي يتعين القيام بها عندما يزور أحد المستخدمين أحد المسارات route في فلاسك Flask، لكنني لا أريد إبقاء العميل في انتظار الصفحة لكي يكتمل تحميلها، أي أريد إرسال رد Response للعميل والقيام بتنفيذ دالة ما بعد إرسال الرد للعميل. هل هناك طريقة في فلاسك Flask لإرسال الرد إلى العميل ثم متابعة إجراء بعض العمليات؟1 نقطة
-
نعم هناك طريقة: قُم بالفصل بين المهام التي يتعين على الخادم القيام بها وبين إرسال الرد للعميل. إستخدم مكتبة بايثون threading لإنشاء Thread ليقوم بتنفيذ الدالة بعد إرسال الرد للعميل على الشكل الآتي: from flask import Flask, request import time import threading#قم باستدعاء مكتبة بايثون app = Flask(__name__) @app.route('/your-route', methods=['POST']) def start_task(): def long_running_task(**kwargs): # أنشئ الدالة """ مهمة طويلة المدى """ ... # قم بتنفيذ الدالة داخل # Thread thread = threading.Thread(target=long_running_task) thread.start() return {"message": "Accepted"}, 202 # هنا تقوم بإرجاع الرد للعميل if __name__ == "__main__": app.run(host="0.0.0.0", port=5000, debug=True)1 نقطة
-
السلام عليكم .. اقوم بعمل تسجيل الدخول لدى موقعي و لا اعلم ماذا يجب ان استخدم تحديدا في عملية تسجيل الدخول API token, Passport, JWT Authentication,bcrypt اعلم ان جميعها هو لغرض الامان لكن سبب سؤالي هو اي وسيلة استخدم ؟ لانني رايت مواقع تستخدم passport و bcrypt فما هو الافضل ؟ شكرا .1 نقطة
-
الأساس في العملية هو قسمان: إنشاء معرّف للمستخدم: وهي العملية الأسهل حيث تقوم بعد أن تتأكد من صحة بيانات الدخول من إنشاء قيمة تحوي داخلها دليل على هوية المستخدم، قد تضع فيها المعرف الخاص بالمستخدم، أو رقم الجلسة بعد إنشاءها للمستخدم، أو صلاحيات المستخدم، هذه القيمة ستعتبر تصريح دخول في المرات القادمة يجب على كل طلب أن يبرزها بدل إعادة إبراز بيانات تسجيل الدخول حماية المعرّف: يمكن لأي مستخدم أن يقوم بكتابة قيمة مشابهة لطريقة توليدك للمعرفات وإرسالها ضمن طلباته وسيستطيع انتحال شخصية أي مستخدم والحصول على أي صلاحيات، لذا يجب علينا التأكد من تأمين تلك القيمة إما بتشفيرها أو بإضافة توقيع عليها يمكننا التحقق منه للتأكد بأننا من أصدر تلك القيمة حصرًا التقنيات والمكتبات التي ذكرتها تتقاطع في عملها ولا يمكن المقارنة بينها: bcrypt: عملية لتشفير البيانات، يمكن أن تفيدك في تشفير كلمة سر المستخدم قبل تخزينها في قاعدة البيانات، وذلك كنوع من الحماية من تسريب كلمات السر. JWT Authentication: هي طريقة لتوليد Token آمنة ووضع البيانات داخلها والتوقيع عليها للتأكد من مصدرها لاحقًا API token: هو مفهوم عام ويعني إصدار Token مخصصة للاستخدام مع الواجهة البرمجية لموقعك، قد تكون تستخدم طريقة JWT أو غيرها Passport: هي مكتبة تساعدك في عملية التوثيق وإصدار ال Token للمستخدمين، لكن يمكنك إعدادها لاستخدام التقنيات التي تفضلها مثل JWT أو غيرها الأمر يعتمد على مشروعك ومتطلباته وخبرتك البرمجية في التعامل مع المفاهيم السابقة وسهولة تضمين المكتبة أو الطريقة ضمن مشروعك يمكنك الاطلاع على المقالات التالية المتعلقة بالموضوع:1 نقطة
-
حاولي حل المشكلة بنفسك، وعندما تواجهين مشكلة ضمن شيفرة ما أو لديك استفسار يرجى إرفاق الشيفرة وتوضيح استفسارك عنها لنتمكن من مساعدتك، أحد الحلول يكون بتحديد نوع الملف عن طريق الللاحقة له: $filename = ... // اسم الملف المرفوع $ext = end((explode(".", $name))); // اللاحقة هي القسم الأخير بعد النقطة ... // نضع الملف في مساره المحدد بحسب اللاحقة حاولي انجاز المطلوب على خطوات ليصبح المشروع اسهل: رفع الملفات بنجاح وضع الملفات المرفوعة بمجلد معين معرفة نوع الملف المرفوع فرز الملفات بحسب نوعها ونقلها لمسارها الخاص1 نقطة
-
استعمل form.errors التي ستعطيك مُلخصاً لجميع الأخطاء: for field, err in form.errors.items(): print(err )1 نقطة
-
يُمكنك تعطيل خاصية الautoescape للحصول على النتيجة التي ترغب بها: {% autoescape false %} {{ 'username|name|email' | replace("|", ":<br/>") }} {% endautoescape %} لكن هذه الطريقة لا يُنصح بها لأنك تقوم بعطيل الحماية ضد حَقْن ال HTML أو ما يُعرف بالإنجليزية HTML Injection. في طريقة أخرى وهي إنشاء مُرشح خاص يقوم بهذا العمل: # myapp/util/filters.py from .. import app from markupsafe import Markup @app.template_filter() def custom_split(text): """ الفصل بين العناصر بأسطر""" return Markup("<br>".join(text.split("|"))) القالب يُصبحْ: {{ 'username|name|email'|custom_split }}1 نقطة
-
يمكن ألّا تنفق شيئًا عند نشر موقع الويب الخاص بك أو يمكن أن تتخطى الميزانية المحددة، ولهذا يمكن أن تتساءل كم سيُكلفك بناء موقع ويب كامل؟ وكيف ستجني ما أنفقته؟ سنستعرض في هذا المقال عملية تطوير موقع ويب بأكمله وحساب التكلفة المادية المتوقعة لكل خطوة، فيمكن ألّا يكون دخولك عالم الويب رخيصًا كما تعتقد. قبل الشروع في قراءة هذا المقال عليك أن تطلع على الفرق بين صفحة الويب وخادم الويب وغيرها من المصطلحات، كما عليك أن تكون على دراية بمفهوم أسماء النطاقات. البرمجيات سنتعرف في الفقرات القادمة على بعض البرمجيات الأساسية التي تحتاجها لتطوير موقع ويب والتكلفة المادية لها. محررات النصوص من المرجح أنك تملك محرر نصوص مثل المفكرة Notepad في ويندوز أو جي-إدت Gedit في لينوكس أو محرر النصوص TextEdit في ماك أو إس. لكن استخدام محرر نصوص يلوّن الشيفرات ويتحقق من صحتها قواعديًا ويساعدك في تنظيمها سيريحك ويسهِّل تطوير المواقع. يمكنك الحصول على الكثير من محررات النصوص مجانًا مثل: Atom. Brackets. Bluefish. TextWrangler. Eclipse. Netbeans. Visual Studio Code. كما يمكنك اختبار Sublime Text المدة التي تشاء لكنه سيظهر لك رسائل تشجعك على شراءه بينما يكلفك PhpStorm ما بين 20 إلى 200 دولار وفقًا للخطة التي تحتاجها. يحصل المطورون الأفراد أو مطوري المشاريع مفتوحة المصدر على Visual Studio Express مجانًا. وعادة ما تحصل على فترة تجريب مجانية للمحررات المدفوعة. ننصحك كبداية أن تجرب عدة محررات لتقرر ما يناسبك منها. كما ننصحك باستخدام محرر بسيط إن كنت ستكتب ملفات HTML وCSS وجافاسكربت بسيطة. لا يعكس ثمن المحرر جودته بالضرورة، عليك أن تجرب هذا المحرر وتقرر بنفسك إن كان يلبي احتياجاتك. يعدّ محررًا Sublime Text رخيص الثمن لكنه يأتي مع الكثير من الإضافات المجانية التي توسّع قدراته كثيرًا. محررات الصور من المرجح أن يزوّدك نظام التشغيل الذي تستخدمه بمحرر أو مستعرض صور بسيط مثل Paint في ويندوز وبرنامج Eye of Gnome في أوبونتو وبرنامج Preview في ماك. وبالطبع فهي برمجيات محدودة نسبيًا وسرعان ما تحتاج إلى محررات صور أكثر قوة لإضافة الطبقات والتأثيرات والمجموعات. يمكن أن تكون هذه المحررات مجانية مثل GIMP أو بتكلفة معقولة أقل من 100 دولار مثل PaintShop Pro أو بتكلفة عالية نسبيًا مثل أدوبي فوتوشوب Adobe Photoshop. اختر أيًا من تلك المحررات فهي تقدم وظائف متشابهة. وبالرغم من أنّ بعضها يشمل الكثير من الميزات، لكنك لن تستخدمها كلها. اطلع على الأدوات التي يستخدمها المطورون الآخرون إن كنت ستتبادل المشاريع معهم في مرحلة ما. إذ يمكن لجميع المحررات تصدير المشاريع المنجزة على شكل ملفات بتنسيقات معيارية لكنها تخزّن المشاريع التي لا تزال تحت التطوير بتنسيقات خاصة. تتمتع معظم الصور على الإنترنت بحقوق نشر، لذا عليك التحقق من رخصة استخدام الصورة قبل استخدامها. تزوّدك بعض المواقع مثل Pixabay بصور تحمل الرخصة CC0 لذا يمكنك استخدامها وتعديلها ونشرها بشكلها المعدّل لأغراض تجارية. محررات الوسائط إن أردت إضافة مقاطع فيديو أو مقاطع صوتية إلى موقعك، يمكنك تضمين خدمات ويب موجودة مثل يوتيوب YouTube أو ديلي موشن Dailymotion أو فيميو Vimeo أو تضمين مقاطع فيديو خاصة بك (تحقق من تكلفة عرض الحزمة التي سترد لاحقًا في المقال). يمكنك استخدام برامج مجانية للعمل مع المقاطع الصوتية (مثل Audacity وWavosaur) أو مدفوعة بتكاليف يمكن أن تصل لمئات من الدولارات (مثل Sony Sound Forge وAdobe Audition). وكذلك الأمر مع محررات الفيديو إذ يمكنك استخدام المحررات مجانية مثل PiTiVi وOpenShot لنظام التشغيل لينوكس وبرنامج iMovie لنظام التشغيل ماك أو إس أو يمكنك استخدام محررات معتدلة التكلفة أقل من 100 دولار مثل Adobe Premiere Elements أو بتكلفة تصل إلى مئات الدولارات (مثل Adobe Premiere Pro وAvid Media Composer وFinal Cut Pro. وغالبًا ما يغطي محرر الفيديو الذي يأتي مع كاميرتك الرقمية كل احتياجاتك. أدوات نشر المواقع ستحتاج إلى وسيلة لرفع ملفات موقعك من القرص الصلب على حاسوبك إلى خادم الويب، لذلك تساعد بعض أدوات النشر مثل S)FTP client) أو RSync أو Git/GitHub في إنجاز الأمر. يحتوي كل نظام تشغيل على برنامج عميل S)FTP) كجزء من مدير الملفات مثل Windows Explorer في ويندوز وNautilus وهو مدير ملفات شائع في أنظمة التشغيل لينوكس وMac Finder في ماك أو إس. يختار المطورون عادة برامج S)FTP) مخصصة لاستعراض المجلدات الموجودة على الحاسوب أو الخادم بشكل متجاور وتخزين كلمات مرور الخادم. هناك العديد من الخيارات الموثوقة والمجانية إن أردت أن تثبّت برنامج عميل S)FTP) مثل FileZilla لكل المنصات وWinSCP لنظام التشغيل ويندوز وCyberduck لكل من ويندوز وماك وغيرها الكثير. إنّ بروتوكول FTP غير آمن بطبيعته لذلك تأكد من استخدام SFTP وهي النسخة الآمنة المشفّرة من FTP التي تتعامل معها معظم مزودات الخدمة هذه الأيام افتراضيًا. يمكنك بالطبع استخدام تقنيات آمنة أخرى مثل Rsync مع SSH. المتصفحات إما أن يكون لديك بالفعل متصفح أو يمكنك تحميل أي متصفح مجاني مثل فايرفوكس أو كروم. الولوج إلى ويب سنتعرف الآن على التجهيزات والخدمات الأساسية التي تحتاجها لدخول ويب. حاسوب ومودم يتطلب بناء ونشر موقع ويب إلى حاسوب بتكلفة تختلف بشدة وفقًا لميزانيك ومكان إقامتك. فإن أردت نشر موقع بسيط ستحتاج إلى حاسوب بسيط قادر على تشغيل محرر ومتصفح ويب وبالتالي ستكون تكلفته قليلة عند هذا المستوى. لكن إن أردت إنتاج تصاميم أكثر تعقيدًا لموقعك تضم صورًا مؤثرة أو أن تنتج مقاطع فيديو أو مقاطع صوتية فستحتاج إلى حاسوب أفضل. تحتاج أيضًا إلى رفع الملفات إلى خادم بعيد لذلك لا بدّ من وجود مودم Modem. يمكن لمزود خدمة الإنترنت ISP أن يمنحك اتصالًا بالإنترنت مقابل بضعة دولارات شهريًا ولكن يختلف الميزانية وفقًا لمكان إقامتك. الولوج إلى مزود خدمة انترنت تأكد من أنك تستخدم حزمة اتصال (أو حيز نطاق تراسلي) bandwidth كافي: يمكن أن يكون الولوج إلى مزود الخدمة عبر حزمة اتصال منخفضة ملائمًا لدعم موقع ويب بسيط يضم صورًا بأحجام معقولة ونصوصًا وبعض ملفات التنسيق CSS وبعض ملفات جافاسكريبت، وسيكلفك ذلك بضع عشرات من الدولارات شهريًا بما في ذلك أجرة المودم. ستحتاج في المقابل إلى حزمة اتصال عريضة مثل DSL أو خدمة الكابل أو الولوج عبر الألياف الضوئية (فايبر) إن أردت موقعًا أكبر يضم مئات الملفات، أو إن أردت تزويد متابعيك بملفات فيديو أو صوت بأحجام عالية. يمكن ألا يكلفك الأمر أكثر من كلفة الحزمة المنخفضة ويمكن أن تصل التكاليف إلى مئات الدولارات شهريًا لأغراض أكثر احترافية. استضافة موقع ويب نناقش في الفقرات القادمة ما تحتاجه من خدمات لرفع موقع على ويب وتكلفة هذه الخدمات. مفهوم عرض حزمة الاستهلاك تتعلق الكلفة التي تتقاضاها مزودات الخدمة لاستضافة موقعك بعرض الحزمة التي يستهلكها الموقع. يعتمد الأمر على عدد الأشخاص الذين يزورون موقعك وعدد روبوتات ويب التي تدخل إلى موقعك لتوثيقه خلال فترة زمنية معينة، بالإضافة إلى المساحة التخزينية التي تستهلكها ملفاتك. لهذا السبب يخزن الأشخاص مقاطع الفيديو الخاصة بهم ضمن خوادم تقدم خدمات مخصصة لهذا الأمر مثل يوتيوب وديلي موشن وفيميو. يمكن أن يقدم لك مزود الخدمة عرضًا يسمح بدخول عدة آلاف من المستخدمين يوميًا وبمقدار تبادل بيانات (عرض حزمة استهلاك) معقول، ولكن يجدر بك الانتباه إلى أن ما ذكرناه سيُفسَّر بصورة مختلفة من مزود خدمة استضافة إلى آخر. وكقاعدة أساسية توقع أن تكلفك استضافة موثوقة لاستخدام شخصي ما بين 10 إلى 50 دولار شهريًا. أسماء النطاقات لا بد من شراء اسم نطاق خاص بك من خلال مزود خاص (شركة مُسجِّلة Registart أو مسجِّل)، ويمكن أن يكون مزود خدمة الاستضافة هو أيضًا مُسجّلًا (أي الشركة تقدم خدمة حجز النطاقات والاستضافة). سيكلّفك تسجيل اسم نطاق عادةً ما بين 5-15 دولار سنويًا، وتختلف هذه الكلفة للأسباب التالية: التزامات محلية: اختيارك لأسماء نطاقات عليا تحمل اسم دولة (مثل uk.) أكثر تكلفة وتختلف من دولة لأخرى. الخدمات المرتبطة باسم النطاق: تزودك بعض الشركات المسجِّلة بخدمات مثل الحماية من الإزعاجات عن طريق حجب عنوانك البريدي وعنوان بريدك الإلكتروني خلف عناوينهم الخاصة. فلن يستسطع أحد الوصول إلى عنوانك البريد إلى عن طريق الشركة المسجلّة بينما تحجب بريدك الإلكتروني وفق آلية التقنيع التي يعتمدها المُسجِّل. استضافة موقعك بنفسك أو باستخدام خدمات الاستضافة المدفوعة بإمكانك نشر موقعك بنفسك خطوة خطوة كأن تجهز قاعدة بيانات (عند الحاجة) ونظام إدارة المحتوى CMS مثل (ووردبريس Wordpress أو دوت كلير Dotclear أو spip وغيرها) وترفع قوالب المحتويات الجاهزة أو قوالبك الخاصة. كما يمكنك استخدام بيئة التشغيل الخاصة بمزود الاستضافة مقابل 10-50 دولار شهريًا، أو أن تشترك مباشرة بمزود استضافة مخصص له نظام إدارة محتوى جاهز مثل ووردبريس Wordpress أو تمبلر Tumblr أو بلوغر Blogger). لن يكلف هذا الأخير أي شيء حرفيًا، لكنك لن تكون قادرًا على التحكم الكامل بالقوالب وغيرها من الخيارات. الاستضافة المجانية مقابل الاستضافة المدفوعة يمكن أن يخطر في ببالك أنه لم عليك أن تدفع مقابل خدمة استضافة بالرغم من وجود العديد من عروض الاستضافة المجانية؟ إليك بعض المميزات للاسضافات المدفوعة: لديك حرية أكبر عندما تدفع. سيكون موقعك ملكك، وبإمكانك نقله بسلاسة من مزود خدمة إلى آخر. يمكن أن يضيف مزودي الخدمة المجانية إعلانات إلى محتوى موقعك دون أن تتحكم بذلك. يمزج البعض بين المقاربتين السابقتين، إذ يستضيفون مثلًا المدونة الرئيسية على مزود استضافة مدفوعة وباسم نطاق مستقل وخاص بالكامل، بينما يرفعون المحتوى الأقل أهمية إلى مزود استضافة مجانية. تصميم مواقع ويب والاستضافة الاحترافية عن طريق شركات خاصة إن أردت موقع ويب احترافي فيمكن أن ترغب بتوكيل المهمة لوكالة خاصة وبالتالي ستتغير التكلفة بناء على عوامل عدة مثل: هل الموقع بسيط مكون من عدة صفحات نصية؟ أم أنه أكثر تعقيدًا ويتكون من ألف صفحة مثلًا؟ هل تريد تحديث محتواه بانتظام؟ أو سيكون موقع ويب ساكن. هل ينبغي ربط الموقع بمنظومة المعلومات الخاصة بشركتك لجمع محتوى معين (مثل البيانات الداخلية)؟ هل تريد بعض الميزات الجديدة البرّاقة التي تمثل الموضة الحالية؟ حاليًا يطلب العملاء مواقع من صفحة واحدة ذات مظهر مركب. هل ترغب أن تتولى الوكالة أمر مشاكل المستخدمين أو حل مشاكل تتعلق بتجربة المستخدم UX؟ كأن تضع لك استراتيجية لتشجيع المستخدمين أو تصميم تجربة لاختيار حل من بين عدة خيارات. فيما يتعلق بالاستضافة ستتغير التكلفة بحسب عدة عوامل منها: هل تريد خوادم احتياطية في حال توقف الخادم الأساسي عن العمل؟ هل تكفي وثوقية أداء 95% أم أنك تحتاج إلى 99% وخدمة مستمرة على مدار الساعة؟ هل تريد خادمًا مخصصًا Dedicated Server عال المواصفات فائق التجاوب أم يكفيك خادم مشترك أبطأ؟ اعتمادًا على إجاباتك على كل سؤال سيكلفك الموقع من بضع آلاف وحتى مئات آلاف الدولارات. اطلعنا في هذا المقال على التكلفة المادية لبناء موقع ويب في كل خطوة من خطوات بنائه حتى نشره، وحان الوقت لتبدأ تصميم مواقع ويب وإعداد بيئة العمل المناسبة لك. ترجمة -وبتصرف- للمقال How much does it cost to do something on the Web. اقرأ أيضًا مفهوم الروابط التشعبية في مواقع الويب ما هو عنوان URL في الويب؟ ما هي الأدوات المستخدمة في بناء مواقع ويب؟ ما هي أدوات مطوري الويب المدمجة في المتصفحات؟1 نقطة
-
لإضافة خاصية تسجيل المعلومات لكل الزيارات التي يقوم بها المستخدمون قم بإضافة الشفرة الآتية إلى ملف الإعدادات settings.py: LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': 'path to the forlder temp/app.log',# ضع هنا المسار الكامل لملف التسجيل }, }, 'loggers': { 'django': { 'handlers': ['file'], 'level': 'DEBUG', 'propagate': True, }, }, } بعدها في ملف ال views.py الخاص بك أضف الشفرة التالية: import logging# قم بإستيراد المكتبة الخاص بالتسجيل logger = logging.getLogger(__name__) # قم بجلب المٌسجل def profile(request): ... # بعدها سجل ما تريد من المعلومات # التسجيلات سوف تٌحفظ في الملف الذي عينته في الإعدادات logger.debug('User visited /profile/me') logger.debug('User is %s' % (request.user.get_full_name())) logger.debug('User age is %s' % (request.user.profile.age)) 14:22:10 Jan 31 2022 Username is Mohssen 14:22:10 Jan 31 2022 User age is 231 نقطة
-
تثير الأشياء الجديدة إعجابنا بطريقة أو بأخرى، وفي الحقيقة، يبدو أن دماغنا ينجذب تجاه الحداثة والجِدَّة، وتبيّن كذلك أن تلك الأشياء الجديدة قادرة على تحسين ذاكرتنا وقدرتنا على التعلّم. لنفترض أنك انتقلت إلى بلد جديد، فأصبحت محاطًا بمناظر وأصوات وتجارب جديدة. جميع تلك الأشياء تُعَد حملًا زائدًا من الجِدَّة وفق ما يراه دماغنا، لكن بعد قضاء أسبوع في هذا البلد الجديد، ستندهش من مدى اعتيادك على البيت والشارع الجديدين، وبعد أن تسير في الطريق المؤدي إلى موقف الحافلات 3 أو 4 مرات، ستملّ سريعًا من هذا المشهد. سيختفي بريق تلك الأشياء الحديثة على الفور حالما يصبح محيطنا مألوفًا، بينما ستصيبنا إثارة كبيرة عندما نكتشف تجربةً جديدةً بالكامل، أو نشاهد منظرًا لم نعهده مسبقًا، فقد تبيّن أن دماغنا يعمل بهذه الطريقة ويصوّر لنا هذا الإحساس، مما يدفعنا إلى الإعجاب بالأشياء الجديدة والسعي وراءها. كيف نبحث عما هو جديد من المؤكد أن أي شيء جديد أو مختلف أو غير عادي سيلفت انتباهنا، ربما هاتفٌ جديد أو بيئة عمل جديدة أو صديق جديد، وليس الأشياء فقط، بل النشاطات كذلك، مثل تغيير لون الشعر أو ارتداء ملابس جديدة أو زيارة مكان جديد؛ وفي الحقيقة، قد ننجذب إلى أشياء جديدة لاشعوريًا أو بدون قصد، وهذا الكلام منطقي، إذ لن نتقدّم في حياتنا إن كانت الأشياء الاعتيادية والمألوفة تجذبنا باستمرار. والمثير للاهتمام هنا، هو وجود رابط معقدٍ بين الأشياء الحديثة والتعلّم، مما يعني إمكانية استخدام تلك المعرفة لصالحنا بهدف تعلّم أشياء جديدة وتحسين ذاكرتنا. كيف يتعامل دماغنا مع الأشياء الجديدة هناك منطقة في الدماغ المتوسط تُدعى المنطقة السقيفية البطنية أو المادة السوداء substantia nigra/ventral segmental area، وتُعَد هذه المنطقة مركز الجِدَّة في دماغنا، وهي التي تستجيب للمنبهات أو المحفزات الجديدة. لتلك المنطقة روابط وثيقة مع مناطق أخرى في الدماغ، هي الحُصين (قرن آمون) واللوزة الدماغية، وتؤدي الأخيرتان دورًا كبيرًا في الذاكرة والتعليم، حيث يوازن الحصين بين المحفِّزات والذكريات الموجودة سابقًا، بينما تستجيب اللوزة الدماغية للمحفِّزات العاطفية، وتعزز الذاكرة طويلة الأمد المرتبطة بتلك الذكريات. في السابق، اعتُقد أن دماغنا يصوّر الأشياء الجديدة على أنها مكافأة بحد ذاتها، لكن تبيّن أن تلك الأشياء الجديدة مرتبطة بالتحفيز، وهذا ما ينطبق على الدوبامين كذلك. أجرى الباحثان بونزيك ودوزيل اختبارًا على مجموعة من الأفراد في تجربةً غير تقليدية، وذلك باستخدام التصوير بالرنين المغناطيسي الوظيفي لمراقبة كيفية تفاعل الدماغ مع الأشياء الجديدة، حيث عرض الباحثان على الأفراد صورًا مختلفةً تُظهِر أوجه أشخاصٍ أو مشاهد من داخل وخارج المنزل، لكنهما أضافا إلى تلك المجموعة صورًا جديدةً عرَضيّةً تظهر بين الحين والآخر. لاحظ الباحثان نشاط المنطقة السقيفية البطنية/المادة السوداء عند رؤية صور جديدة، صورًا لم يسبق للمشاركين في الاختبار رؤيتها، وتبيّن أن الصور التي تختلف قليلًا عن الصور المألوفة لا تؤثر بالشكل ذاته، إلى جانب الصور ذات السياق العاطفي السلبي جدًا، مثل صور حوادث السيارات أو صور وجوه غاضبة. تبدو مسارات الدوبامين، الذي ينشط بعد التعرض إلى أشياء جديدة، مشابهةً لهذه الصورة (المسارات معلّمة بالأزرق): صُمم القسم الثاني من التجربة لمعرفة ما إذا كانت الصور الجديدة نسبيًا كفيلةً بتنشيط المنطقة السقيفية البطنية/المادة السوداء، أم أن نشاط الأخيرة ناتج عن الصور الجديدة كليًا، حيث اختبر الباحثان تأثير الصور الجديدة نسبيًا على الأفراد الخاضعين للتجربة (الجِدَّة النسبية)، ووازنا تأثير الصور الجديدة كليًا مع تأثير الصور السابقة (الجِدَّة المطلقة). تبيّن أن المنطقة السقيفية البطنية/المادة السوداء تنشط عندما يُعرض على الأفراد محفزات جديدة كليًا فقط أي صور لم يسبق لهم رؤيتها في السابق، كما تفاعلت مناطق أخرى من الدماغ مرتبطة بهذه العملية، عندما عُرضت الصور على الأفراد، لكن تضاءلت تلك التفاعلات نسبيًا تزامنًا مع الاستمرار بعرض الصور على الأفراد، فأصبحت تلك الصور مألوفةً أكثر. يشرح الدكتور دروزيل الموضوع كالتالي: الأمر مشابه لما يحصل في دماغنا عندما نكرر المعلومات عبر بطاقات العرض السريع مثلًا أو إعادة قراءة المعلومات، فالأمور الجديدة هي التي تبرز فقط وسط مجموعة من الأغراض أو الصور المألوفة بشدة. كيف تحفزنا الأشياء الجديدة لربما سمعت عن الدوبامين وتأثيراته على الدماغ في السابق، وغالبًا ما يُعَد الدوبامين مكافأةً كيميائيةً أو جزءًا من مركز المكافأة في الدماغ، لكن تظهر الأبحاث الأخيرة أن الدوبامين، مثل الأشياء الجديدة كذلك، فهو أكثر ارتباطًا بـسعينا نحو المكافأة بدلًا من كونه مكافأةً بحد ذاته. تشير الدراسات المتعلقة بتفاعل الدماغ مع الأشياء الجديدة لدى الحيوانات إلى ارتفاع مستويات الدوبامين عند رؤية أشياء جديدة، حيث يتفاعل الدماغ مع تلك الجِدَّة عبر إطلاق وتحرير الدوبامين، وهو مما يدفعنا نحو استكشاف تلك المكافآت الجديدة والبحث عنها؛ ففي ألعاب الفيديو مثلًا، تحفّزك المراحل الجديدة أو العوالم الجديدة على اللعب مدةً أطول بهدف الحصول على المكافأة، وتتمثل هذه المكافأة بالحصول على إنجاز جديد أو كسب المزيد من النقاط. يمنحك كل محفز جديد دفعةً لا بأس بها من الإثارة والتحفيز كي تكتشف المزيد، والسبب هو أن تلك المحفزات تدفعك إلى توقع الحصول على مكافأة، وإليك مخططًا يظهر النشاط في منطقة الدماغ إثر تعرضه للمحفزات الجديدة: تحدث الدكتور دوزيل عن الطريقة التي تحفزنا بها الأشياء الجديدة قائلًا: ما علاقة الفكرة السابقة بالتعليم مع أن الفكرة السابقة مثيرة للاهتمام، لكنها لن تكون مفيدةً إلا إذا استقينا منها بعض المعلومات وطبّقناها على حياتنا العملية، فللأسف، الدراسات البشرية حول هذا الموضوع، مثل الدراسة المذكورة سابقًا، فهي قليلة ونادرة الحدوث، وقد أُجريت دراسات أكثر على الحيوانات، لكن لا تزال الأبحاث في مراحلها الأولى. لا يعني ذلك أن الدراسة السابقة لن تفيدنا بشيء، وإليكم الفائدة التي نستخلصها من المعلومات السابقة بهدف تحسين سبل تعلّمنا وتذكر المعلومات. أوضحنا سابقًا أن الحصين مرتبط بالمنطقة السقيفية البطينية/المادة السوداء إلى حد كبير، وتظهر الدراسات التي أُجريت على الحيوانات زيادة اللدونة العصبية في الحصين (واللدونة العصبية هي القدرة على خلق روابط بين العصبونات) تحت تأثير الجِدَّة، وذلك تزامنًا مع استكشاف بيئة جديدة أو محفز جديد، إلى ما بعد مرور ما يتراوح من 15 إلى 30 دقيقةً على التعرّض إلى المحفز الجديد. لا يقتصر تأثير الأشياء الجديدة على زيادة اللدونة العصبية، وبالتالي إمكانية تعلّم حقائق وأفكار جديدة، بل يتجاوز هذا التأثير ليعمل على تعزيز ذاكرة الحيوانات التي أُجريت عليها التجربة. بناءً على هذه المعلومة، يمكننا تعزيز أداء الطلاب، سواءً خلال فترات الدراسة أو الامتحانات، بالإضافة إلى مساعدة الطلاب الذين يعانون من فقدان الذاكرة. يشير الدكتور دوزيل إلى الفوائد الطبية التي من الممكن استغلالها وفق ما جاء في ذلك البحث: كيف تتعلم المزيد وتحسن ذاكرتك إذا أردت تطبيق تلك النتائج على حياتك، فبإمكانك تحسين قدرتك على التعلّم وترسيخ الأفكار والمبادئ الجديدة عبر استغلال مفهوم الجِدَّة في عملية التعليم، وإليك بعض النصائح في هذا الشأن: 1. أضف أمرا جديدا إلى المعلومات التي تريد حفظها أضف عددًا قليلًا من المعلومات الجديدة في كلّ مرة تراجع خلالها المعلومات أو الحقائق التي تعلمتها سابقًا، حيث سيدفع هذا دماغك إلى ملاحظة المعلومات المألوفة قليلًا والتعرّف عليها بسهولة أكبر، بينما تجذب المعلومات الجديدة انتباه دماغك وتزيح تلك القديمة جانبًا. 2. غير محيطك يوفر المكان المحيط بنا كميةً ضخمةً من التحفيز الجديد للدماغ، لذا حاول التخلّص من محيطك الاعتيادي أثناء دراسة أو تعلّم مادةً ما عبر مراجعتها في ظروف وأماكن جديدة، وبإمكانك مثلًا تغيير درجة حرارة الغرفة أو شدة الإضاءة، وتلك أمور صغيرة لكن تأثيرها كبير. 3. استمر بالتعلم بعد اكتشاف الجديد بإمكانك استغلال اللدونة العصبية في دماغك بحكمة عبر تخصيص جزءٍ من الوقت للتعلّم والتفكّر بعد التعرض لمحفز جديد، فلو قابلت شخصًا جديدًا، والتقيتما لاحتساء فنجان من القهوة أو زيارة مكان جديد، فسيكون دماغك أكثر انفتاحًا تجاه خلق روابط جديدة خلال تلك الفترة أو بعدها مباشرةً، لذا بإمكانك استغلال هذا الأمر لصالحك. في النهاية، لا بد للمستقل أن يبحث عن مكافأة نفسه بأمور جديدة باستمرار مهما كانت ليشعر بالسعادة ويحسّن من نفسيته ومزاجه، وسيؤدي هذا حتمًا لزيادة إنتاجيته وتجاوزه للانتكاسات المختلفة التي سيمر بها خلال مسيرته المهنية. ترجمة -وبتصرف- لمقالة Why Getting New Things Makes Us Feel So Good: Novelty and the Brain لصاحبتها Belle Beth Cooper. اقرأ أيضًا كيف أبقي على حماسي مشتعلا كعامل مستقل؟ دليلك الكامل لتكون في أفضل حال: أنشئ نمط حياتك اليومي بتحسين ذهنك، وجسدك وروحك 5 أشياء يمكنك فِعلها حتى تحافظ على حماسَك للعمل كيفية التخلص من عقدة نقص الإنتاجية1 نقطة