محمد طاهر الموسوي

المساهمون
  • المساهمات

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

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

  • Days Won

    15

السُّمعة بالموقع

97 Excellent

المعلومات الشخصية

  • النبذة الشخصية كيميائي ومصمم ومترجم عراقيّ، أهوى الخطّ العربي، وأعشق كذلك البرمجة وأحاول دائمًا تطوير مهاراتي فيها.

10 متابعين

آخر الزُوّار

2,838 زيارة للملف الشّخصي
  1. قد يكون تقديم الاستشارات وسيلة ممتازة لتمويل شركتك الناشئة أو للحصول على بعض الأرباح، فالأمر سهل للغاية، وكلّ ما عليك فعله هو تحديد الأجور المطلوبة والبدء بالعمل. ولكن بعد فترة وجيزة ستلاحظ أنّ هناك الكثير من ساعات العمل التي يمكن أن تدرّ عليك المزيد من الأموال، ولربما تدفعك هذه الملاحظة إلى توسيع العمل، فتوظّف شخصًا ما مقابل 30 دولارا للساعة، وتعدّل الأجر الذي تطلبه إلى 60$. أرباح سهلة، أليس كذلك؟. في الواقع، لا تجري الأمور بهذه البساطة، وسأبيّن لك فيما يلي ما سيحدث على أرض الواقع، وسأقدّم إليك بعض النصائح لتجنب ذلك. مضاعفة الأجور لا يعني شيئًا لنفترض أنّك وظّفت شخصا براتب 60,000$ في السنة. عدد ساعات العمل في السنة الواحدة هو 2,000 ساعة (50 أسبوعًا × 40 ساعة في الأسبوع)، ويبقى أسبوعان للإجازات، وبهذا يكون أجر الساعة: الأجر الاسمي: 30$ للساعة إن أعدنا الحسبة باعتبار أيام العمل، فهناك 250 يوم عمل في 50 أسبوعًا. العطل الرسمية في الولايات المتحدّة هي 10 أيام، وهذا يعني أنّ عدد أيام العمل يصبح 240 يومًا. والآن إن أعدنا حساب كلفة الساعات نحصل على: 20 يوم عمل في الشهر، 31$ للساعة. تختلف القوانين والضرائب المفروضة على التوظيف في الولايات المتحدة الأمريكية بين ولاية أخرى، ولكن القاعدة العامة هي دفع 15% في الضرائب التي تشمل الرعاية الصحية والضمان الاجتماعي. سيؤدي هذا إلى تغيير الراتب السنوي لموظّفك من 60,000، ولكنّك ستستثقل دفع المال في الأيام التي لا يوجد فيها عمل. هل تقديم الاستشارات بهذا السوء؟ تقديم الاستشارات من الأعمال المدرّة للأرباح وهي كذلك طريقة ذكية لتمويل الشركة الناشئة ذاتيًا. لا يتطلّب تحقيق النجاح في هذا المجال سوى تجاوز هذه العقبات. فعلى سبيل المثال، أنت تعلم جيّدًا أنّ من الضروري أن تحاسب موظّفيك مقابل 40 ساعة كاملة من العمل، لذا عوّد نفسك على متابعة ساعات العمل كل أسبوع لتتأكد من عدم وجود تأخير من قبل أحد الموظفين، كذلك لا تنسَ تقديم بعض الحوافز للموظفين وشاركهم الأرباح عندما يبذلون جهودًا إضافية في العمل. تقديم الاستشارات عمل صعب، ولا تجني معظم شركات تقديم الاستشارات الكثير من الأرباح، ومن النادر جدًّا أن تجد شركة تلتزم بإطلاق منتج ناجح كانت قد طوّرته في فترات انقطاع العمل. لذا إن كنت ترغب في تحقيق النجاح، يجب عليك أن تكون جادًّا وملتزمًا وأن لا تستسلم على الإطلاق، وستتمكن من ذلك بكل تأكيد. وإن حدث ذلك، فستكون قد نجحت في تحقيق التمويل الذاتي لشركتك الناشئة، وحصلت على عمل يضمن لك مصاريف المعيشة، وأبعدت عن شركتك الناشئة الكثير من المشاكل الناجمة عن الاعتماد على المنتج حصرًا، إضافة إلى تأسيس فريق عملٍ متميّز. هل لديك أي خبرة في هذا المجال، شاركنا نصائحك وخبراتك في التعليقات. ترجمة - وبتصرّف - للمقال The unfortunate math behind consulting companies لصاحبه Jason Cohen. حقوق الصورة البارزة محفوظة لـ Freepik
  2. تتمتع جميع أنظمة التشغيل المعروفة بخاصية تعدد المستخدمين، ويقدّم نظام Microsoft Windows 10 مجموعة من الخيارات التي تساعد على تخصيص تجربة استخدام النظام لكل مستخدم، فيمكن مثلًا إنشاء حسابات خاصة لكل فرد من أفراد العائلة ليتمتع كل واحد منهم بتجربته الخاصة في استخدام النظام، إذ يمكن لكل فرد أن يختار إعدادات سطح المكتب الخاصة به كخلفية الشاشة وشاشة التوقف وغير ذلك. ولكن قبل الحديث عن إدارة المستخدمين في نظام ويندوز يجب علينا التعرّف على أنواع الحسابات التي يقدّمها هذا النظام وخصائص كلّ منها. أنواع الحسابات في نظام ويندوز يقدّم نظام ويندوز نوعين أساسين من الحسابات هما: حساب المستخدم العادي Standard User Account، حساب المستخدم المدير Adminstrator User Account. 1. حساب المستخدم العادي هذا الحساب هو الحساب المبدئي في نظام ويندوز، ويمكّن هذا الحساب المستخدمين من أداء المهام اليومية وذلك من خلال السماح بتشغيل البرامج وإنشاء الملفات والمستندات وتعديل بعض الإعدادات البسيطة في النظام، وعادة ما تكون هذه التعديلات مقتصرة على حساب المستخدم، ولا تأثير لها على الحسابات الأخرى، إضافة إلى عدم إمكانية إجراء تعديلات على مستوى النظام كتثبيت برامج جديدة مثلًا. في ما يلي بعض الصلاحيات الممنوحة لحساب المستخدم العادي: تغيير الإعدادات الشخصية للمستخدم، مثل خلفية سطح المكتب، كلمة المرور، أصوات النظام، وشاشة التوقف. التعامل مع الوسائط المحمولة مثل ذاكرة الفلاش وأقراص CD و DVD والبلوتوث. الاتصال بالشبكات السلكية واللاسلكية. استخدام سطح المكتب البعيد Remote Desktop (في حال توفّره) للاتصال بحواسيب بعيدة. 2. حساب المستخدم المدير يقدّم هذا النوع من الحسابات - كما هو واضح من اسمه - صلاحيات أوسع بكثير من النوع السابق، إذ يمكن لصاحب هذا الحساب أن يجري تعديلات كبيرة على مستوى النظام وأن يثبت برامج جديدة، إضافة إلى القدرة على إنشاء وتعديل حسابات المستخدمين الآخرين وتحديد الصلاحيات الممنوحة لكل مستخدم. إليك جزءًا من الصلاحيات الممنوحة لهذا الحساب: تثبيت برامج جديدة على جهاز الحاسوب. إضافة أجهزة جديدة وتثبيت تعريفاتها Drivers في الجهاز. ضبط عملية التحديث التلقائي للنظام. الوصول إلى ملفات النظام وإجراء التعديلات عليها. ضبط وتهيئة الجدار الناري Firewall لنظام ويندوز. إجراء عملية النسخ الاحتياطي للنظام واستعادة النسخ الاحتياطية السابقة. إنشاء وتعديل وحذف حسابات المستخدمين والتحكم في الصلاحيات الممنوحة لكل حساب. إنشاء الحسابات في نظام ويندوز بعد أن تعرفنا على أنواع الحسابات التي يوفّرها نظام ويندوز، سنشرع بالحديث عن كيفية إنشاء هذه الحسابات وكيفية إدارتها. الحساب الأول عند تثبيت نظام ويندوز سيطلب منك النظام إدخال اسم وكلمة مرور. سيستخدم النظام هذه المعلومات لإنشاء أول حساب لك في نظام ويندوز من نوع حسابات المدير. إن كنت أنت الشخص الوحيد الذي يستخدم جهاز الحاسوب، فعلى الأرجح أنّك لن تجد حاجة إلى إنشاء حسابات أخرى، ولكن يمكنك من خلال هذا الحساب إنشاء حسابات جديدة، وبعد إنشائها يمكنك إجراء التعديلات ومنح الصلاحيات التي تريدها لكل حساب، كذلك يمكنك حذف الحسابات الموجودة حسب الحاجة. إنشاء حساب جديد في ويندوز لتنشئ حسابًا جديدًا في ويندوز توجّه إلى الإعدادات Settings من قائمة ابدأ Start. انقر على أيقونة الحسابات Accounts. انقر على العائلة وأشخاص آخرون Family and other users في القائمة الجانبية. انقر على أيقونة إضافة شخص آخر إلى الحاسوب Add someone else to this PC. في النافذة المنبثقة انقر على ليست لديّ معلومات تسجيل الدخول الخاصّة بهذا الشخص I’dont have this person’s sign-in information. انقر على إضافة مستخدم بدون حساب مايكروسوفت، Add a user without a Microsoft account. ادخل المعلومات المطلوبة (الاسم، كلمة المرور، وعبارة تساعد تذكر كلمة المرور)، ثم اضغط على زرّ التالي Next، وبهذا يُنشَأ حساب جديد في نظام ويندوز 10. يطلق نظام ويندوز 10 على الحساب الجديد اسم حساب محلّي Local account والمقصود أنّ هذا الحساب غير مرتبط بحساب Microsoft (سنتحدث عن حسابات Microsoft بعد قليل). يفتقر الحساب المحلي إلى بعض الميزات، إذ ليس بالإمكان مزامنة الملفات عبر الأجهزة التي تعمل بنظام ويندوز 10، كذلك لا يمكن إضافة الحسابات العائلية إلى النظام (سنتطرق إلى هذه التفاصيل في مقال منفصل)، ولن تستفيد من كورتانا Cortana المساعد الرقمي الخاصّ بويندوز، ولن تكون قادرًا على تحديد موقع جهازك في حال فقدانه. تحويل الحساب الجديد إلى حساب المدير تكون جميع الحسابات الجديدة التي تنشئها في ويندوز 10 من النوع العاديّ، وهذا يعني أنّ المستخدم الجديد سيكون محدود الصلاحيات، ولن يكون قادرًا على القيام بالكثير من الأمور إلا بإدخال كلمة المرور الخاصّة بالمستخدم المدير. ولكي تمنح صلاحيات المدير إلى المستخدم الجديد يجب عليك تحويل حسابه إلى حساب مدير، وذلك باتباع الخطوات التالية. توجّه إلى الإعدادات Settings من قائمة ابدأ Start ثم توجّه إلى الحسابات Accounts. بعد ذلك انقر على أيقونة العائلة وأشخاص آخرون Family and other users في القائمة الجانبية. عند النقر على الحساب الذي ترغب في تحويله إلى مدير تظهر أيقونتان اختر منهما تغيير نوع الحساب Change account type. اختر المدير Administrator من القائمة المنسدلة واضغط على موافق OK. حذف الحسابات يمكنك حذف الحسابات التي أنشأتها مسبقًا من خلال النقر على الحساب المراد حذفه ثم النقر على زرّ حذف Remove. تغيير الصورة الشخصية يتيح نظام ويندوز تغيير الصورة الشخصية المرتبطة بالحساب، وذلك إما بالتقاط صورة بواسطة كاميرا الجهاز أو اختيار صورة مخزّنة في الحاسوب. ولتغيير الصورة الشخصية توجّه إلى الإعدادات ثم الحسابات وانقر على زرّ معلوماتك Your info. انقر على زرّ الكاميرا Camera لتشغيل كاميرا الجهاز والتقاط الصورة الشخصية، أو انقر على ابحث عن صورة Browse for one لاختيار صورة مخزّنة في الجهاز. تغيير كلمة المرور الخاصة بحساب معين لتغيير كلمة المرور الخاصة بحساب معين يجب تسجيل الدخول إلى ذلك الحساب. توجه إلى الإعدادات Settings ثم انقر على زرّ الحسابات Accounts، وانقر على زرّ خيارات تسجيل الدخول Sign-in options. يقدّم نظام ويندوز 10 أساليب مختلفة لتأمين حسابك، فإلى جانب كلمة المرور التقليدية، يمكن تأمين الحساب بواسطة خدمة Windows Hello حيث يمكنك تسجيل الدخول بعد أن يتعرّف النظام على وجهك من خلال كاميرا الجهاز. كذلك يمكن استخدام رمز PIN للولوج إلى النظام، أو استخدام كلمة المرور الصورية Picture password، حيث تخصّص صورة تظهر عند رغبتك في الولوج إلى النظام، ومن خلال رسم أشكال وخطوط محدّدة على تلك الصورة، يكون بمقدورك تسجيل الدخول، وهذه الطريقة مفيدة في الأجهزة التي تدعم خاصية اللمس. لتغيير كلمة المرور انقر على زرّ تغيير Change في قسم كلمة المرور Password. اكتب كلمة المرور الحالية في النافذة المنبثقة. ثم اكتب كلمة المرور الجديدة. حسابات Microsoft إن كنت تستخدم إحدى خدمات Microsoft، مثل Outlook.com، Hotmail، Skype، OneDrive وغيرها فأنت تمتلك بالفعل حساب Microsoft. ويمكن الاستفادة من هذا الحساب في الوصول إلى تطبيقاتك في متجر ويندوز Windows Store ومزامنة إعداداتك على جميع أجهزتك التي تعمل بنظام ويندوز 10. إن كنت لا تملك حساب Microsoft فيمكنك التوجّه إلى العنوان www.hotmail.com وإنشاء حساب جديد. بعد ذلك توجّه إلى الإعدادات ثم الحسابات ثم انقر على زرّ معلوماتك Your info في القائمة الجانبية. بعد ذلك انقر على تسجيل الدخول بواسطة حساب مايكروسوفت Sign in with a Microsoft account insted، لتظهر النافذة التالية. أدخل المعلومات المطلوبة في هذه النافذة ثم اضغط تسجيل الدخول Sign in. قد يطلب منك النظام إدخال كلمة المرور التي تستخدمها حاليًا؛ لذا أدخلها واضغط على زرّ التالي Next. بعد تسجيل الدخول بواسطة حساب Microsoft، يمكنك اختيار الإعدادات التي ترغب في مزامنتها عبر الأجهزة التي تستخدمها والتي تعمل بنظام ويندوز 10، وذلك بالتوجّه إلى الإعدادات ثم الحسابات ثم النقر على زرّ زامن إعداداتك Sync your settings. يمكنك الآن تحديد الإعدادات التي ترغب في مزامنتها مثل سمة النظام Theme، وإعدادات المتصفح وكلمات المرور واللغة وغيرها.
  3. بناء المواقع الإلكترونية أمر ممتع ومحبط في نفس الوقت، وعادة ما يكون سبب الإحباط هو السعي لتوحيد مظهر وأداء الموقع الإلكتروني في جميع المتصفحات، ولا شكّ أن مصمّمي الواجهات الأمامية قد مرّوا بحالة الإحباط هذه بشكل أو بآخر. ولكن الحقيقة تقول بأنه ما من ضرورة تدعو إلى توحيد مظهر وأداء الموقع الإلكتروني على جميع المتصفحات، فطريقة عمل الموقع في كل متصفّح عائدة إلى المبرمج وإلى طبيعة الموقع الإلكتروني. فإن كان الموقع يستقبل أقلّ من نصف نسبة الزوّار من خلال Internet Explorer 8 فقد يكون من المعقول حينئذٍ صرف النظر عن هذا المتصفح، أما لو كان نصف الزوّار يستخدمون هذا المتصفح وكانت هذه الزيارات تدرّ أموالًا كثيرة، فسيكون دعم هذا المتصفح حينئذٍ أمرًا إلزاميًا. من هنا يجب تحديد ما هو مقبول بالنسبة لموقع إلكتروني معين والعمل بموجب ذلك. يوجد عدد من الممارسات الجيدة التي تتيح للموقع الإلكتروني أن يعمل على نحو جيّد في جميع المتصفحات. ينصح عادة بتوفير الدعم التراجعي Fallback support عند استخدام خصائص CSS 3 وذلك لدعم المتصفحات القديمة، وهناك تقنيات أخرى مثل الـ Shivs و Polyfills وهي عبارة عن ملحقات JavasScript صغيرة تضيف الدعم لعدد من المزايا المطلوبة التي لا تدعمها المتصفحات القديمة مبدئيًّا. HTML Shiv أحد أشهر الملحقات التي تقدّم الدعم التراجعي هو HTML5 Shivs، وقد أنشأ Remy Sharp هذا الملحق لإتاحة استخدام عناصر HTML 5 في Internet Explorer 8 وما قبله، ولا يكتفي هذا الملحق بتوفير الدعم لعناصر HTML5 فقط، بل يتجاوز ذلك إلى إمكانية تنسيقها بواسطة CSS. يجب تنزيل آخر إصدار من هذا الملحق من Google حيث يحتفظ Remy بآخر الإصدارات، ثم ضيافتها على الخادوم الخاص بك. وللحصول على أفضل أداء يفضّل الإشارة إلى ملف JavaScript الخاص بالإضافة في بداية الصفحة ضمن الوسم <head>، مباشرة بعد الإشارة إلى ملفات CSS. كذلك يجب وضع شفرة جلب الإضافة ضمن تعليق مشروط لتضمن تنزيل الملفات في الإصدار الثامن من Internet Explorer وما دونه. <!--[if lt IE 9]> <script src="html5shiv.js"></script> <![endif]--> وبعد إنشاء عناصر HTML5 الجديدة في مستوى Block باستخدام HTML5 Shiv يجب تحديد وتحديث تلك العناصر بواسطة التصريح display:block. article, aside, details, figcaption, figure, footer, header, hgroup, nav, section, summary { display: block; } لا يعرّف الإصداران الثامن والتاسع من Internet Explorer أنماط بعض عناصر HTML5 بطريقة صحيحة في مستوى Inline-block، لذا تجب إضافة التصريح display: inline-block إلى هذه العناصر. بهذا يمكنك استخدام أي عنصر من عناصر HTML5 في جميع إصدارات Internet Explorer. audio, canvas, video { display: inline-block; } ما الفرق بين Shiv و Shim قد تسمع أو تقرأ في بعض المواقع عن HTML5 Shim، وقد تتساءل إن كان هناك فرق بينها وبين HTML5 Shiv. في الواقع لا يوجد أي فارق يذكر بين هذين المصطلحين، وكلاهما يستخدمان للتعبير عن المعنى ذاته. الكشف عن المزايا المتاحة في المتصفح تؤدي HTML5 Shiv عملًا جيّدًا مع التعليقات المشروطة في تعريف المتصفح بخصائص HTML5 وعناصرها الجديدة، ولكن باستخدام هذه الطريقة فإنك تحدّد مسبقًا المتصفح الذي لا يدعم هذه الخصائص. هناك طريقة أخرى لتوفير الدعم لعناصر وخصائص معينة في HTML5 و CSS3 بغض النظر عن المتصفح المستخدم. توفّر مكتبة Modernizr وسيلة للكشف عن ميزات المتصفح من خلال كتابة شفرات CSS و JavaScript مشروطة بالاستناد إلى دعم المتصفح لخاصّية معينة أم لا. فعلى سبيل المثال، إن كان أحد المتصفحات يدعم خاصّية الأركان الدائرية فستقوم Moderinzr بإضافة الصنف borderradius إلى عنصر html. أما إن كان المتصفح لا يدعم هذه الخاصّية، تقوم مكتبة Modernizr بإضافة الصنف no-borderradius إلى عنصر html. تنزيل مكتبة Modernizr لتشغيل مكتبة Modernizr في موقعك توجّه إلى صفحة التنزيل الخاصة بالمكتبة حيث يمكنك اختيار الخصائص التي ترغب في الكشف عنها. بعد تنزيل المكتبة ارفعها إلى الخادوم الخاص بك ثم أشر إلى الملف ضمن الوسم head في صفحة HTML مباشرة بعد آخر إشارة لملفات الأنماط. من الجدير بالذكر أنّه يمكن تخصيص Modernizr لتتضمن HTML5 Shiv، وبهذا لا حاجة للإشارة إليها في بداية Modernizr. <script src="modernizr.js"></script> التطبيق الشرطي لأنماط CSS بمجرد أن تبدأ مكتبة Modernizr بالعمل يصبح بالإمكان تطبيق أنماط CSS بالاعتماد على وجود أو عدم وجود خصائص معينة في المتصفح الذي يعرض الموقع الإلكتروني. تستطيع Modernizr الكشف عن معظم الخصائص والقيم التي تقدّمها CSS3 ويمكنك التعرّف عليها من خلال توثيقات المكتبة على شبكة الإنترنت. يجدر الانتباه إلى أنّه قد يكون من غير الضروري الكشف عن الخصائص المتعلقة ببعض الأنماط، فعلى سبيل المثال عندم استخدام قيمة لون بصيغة RGBa يمكن تقديم دعم تراجعي لهذه القيمة من خلال توفير قيمة اللون بصيغة hexadecimal دون الحاجة إلى اللجوء لتقنية الكشف عن الخصائص. عندما تقرّر استخدام تقنية الكشف عن الخصائص من الضروري أن تحافظ على تنظيم الشفرات وأن تراعي مسألة الأداء. تجنّب قدر الإمكان تكرار الشفرة لأكثر من مرة أو إنشاء طلبات HTTP إضافية. button { border: 0; color: #fff; cursor: pointer; font-size: 14px; font-weight: 600; margin: 0; outline: 0; } /* With CSS Gradient Styles */ .cssgradients button { border: 1px solid #0080c2; background: linear-gradient(#00a2f5, #0087cc); border-radius: 6px; padding: 15px 30px; } .cssgradients button:hover { background: linear-gradient(#1ab1ff, #009beb); } .cssgradients button:active { box-shadow: inset 0 1px 10px rgba(255, 255, 255, .5); } /* Without CSS Gradient Styles */ .no-cssgradients button { background: transparent url("button.png") 0 0 no-repeat; padding: 16px 31px; } .no-cssgradients button:hover { background-position: 0 -49px; } .no-cssgradients button:active { background-position: 0 -98px; } في المثال السابق تمكن ملاحظة أن الزرّ يرث أنماطًا مبدئية، ولكن الأنماط المخصّصة تطبّق بالاستناد إلى دعم المتصفح لخاصية الخلفية المتدرّجة في CSS3، إضافة إلى خاصيتيْ الأركان الدائرية والظلال. إن كان المتصفح يدعم هذه الخصائص، فسيحصل الزرّ على خلفية متدرجة وعلى ظلّ وحواف دائرية، أما في حال عدم دعم المتصفح لهذه الخصائص فيحصل الزرّ على صورة خلفية تتضمن جميع هذه التأثيرات. بهذه الطريقة لا توجد شفرات زائدة ولا يُرسَل طلب HTTP إلا عند الحاجة. عند العمل مع تقنية الكشف عن خصائص CSS3 يكون من الصعب تخمين مظهر عنصر معين في المتصفحات التي لا تدعم الخصائص الجديدة، ولحسن الحظ هناك أداة تدعى deCSS3 تعمل على تعطيل جميع خصائص CSS3 في الصفحة ما يسمح لك بالتعرف على مظهر موقعك الإلكتروني عندما لا تُستخدَم CSS3، إضافة إلى اختبار الأنماط المشروطة المستخدمة في الموقع. لتحصل على فكرة سريعة عن الخصائص والميزات التي يدعمها متصفّح معين،زر الموقع haz.io باستخدام ذلك المتصفح. التنزيل الشرطي للملفات إضافة إلى التنزيل الشرطي للأنماط، تقدّم مكتبة Modernizr وسيلة لاستخدام تقنية الكشف عن الخصائص في JavaScript، حيث يصبح بالإمكان تنزيل ملفات الـ Polyfills وغيرها من الملفات بالاستناد إلى وجود خاصية معينة والاستعانة بمكتبة jQuery وتابع getScript الخاص بهذه المكتبة. يمكن استخدام مكتبة Modernizr في العبارات الشرطية وذلك لتشغيل شفرات متنوعة اعتمادًا على تحقق الشرط أو عدمه. في المثال التالي تتحقّق Modernizr من دعم المتصفح لخاصية التخزين المحلي Local storage. إن كانت هذه الخاصّية متوفرة في المتصفح، يُنزَّل الملف storage.js باستخدام jQuery وتابع getScript، أما إن كانت هذه الخاصّية غير مدعومة في المتصفح فيُستعان بـ jQuery لتنزيل ملف storage-polyfills.js وبواسطة التابع ذاته. $(document).ready(function() { if (Modernizr.localstorage) { // التخزين المحلّي متوفّر jQuery.getScript('storage.js'); } else { // التخزين المحلّي غير متوفّر jQuery.getScript('storage-polyfill.js'); } }); التنزيل الشرطي بالاستناد إلى استعلام الوسيط Media Query استعلامات الوسائط Media queries من الأمور المهمّة التي يمكن لـ Modernizer الكشف عن وجودها ، حيث يمكن تنزيل الملفات فقط في حال تحقق الشروط الخاصة باستعلام الوسائط. تجنّب تنزيل الملفات غير الضرورية من الأمور المفيدة جدًّا في تحسين أداء الصفحة. $(document).ready(function() { if (Modernizr.mq('screen and (min-width: 640px)')) { jQuery.getScript('tabs.js'); } }); تتحقق Modernizer في المثال الموضح أعلاه ممّا إذا كان عرض الشاشة أكبر من 640 بكسلًا، أي شاشات حواسيب سطح المكتب بصورة رئيسية، ثم تُنزِّل ملف tabs.js بالاعتماد على تحقق الشرط. من الضروري الانتباه إلى أن التحقق من هذا الشرط يتم مرة واحدة فقط وذلك عند تنزيل الصفحة، وهذا يعني أنّه لن يُتحقَّق من هذا الشرط عندما يغيّر المستخدم حجم الصفحة، وإن تطلب الأمر إعادة التحقق من جديد، فيجب استخدام شفرة JavaScript إضافية للقيام بذلك. التشغيل الشرطي للشفرات يمكن التحقق من جميع الخصائص التي تقدّمها HTML5 و CSS3 باستخدام Modernizr ومن خلال JavaScript. فعلى سبيل المثال، يستحسن تعطيل عمل التلميحات Tooltips في أجهزة الهاتف المحمول نظرًا لعدم توفّر التحليق Hover في هذه الأجهزة، والاستعاضة عن ذلك بعرض التلميحات على هيئة نصوص صرفة. يمكن تغليف الشفرة المسؤولة عن استدعاء التلميحات بعبارة شرطية تمنع تنزيل الشفرة عند استعراض الموقع في الشاشات الصغيرة. $(document).ready(function() { if (Modernizr.mq('screen and (max-width: 400px)')) { $('.size').text('small'); } }); يوضح المثال السابق على نحو مبسط طريقة تنفيذ شفرة JavaScript بالاستناد إلى شرط وضعته Modernizr. إن كان عرض الشاشة عند تنزيل الصفحة أكبر من 800 بكسل فلن يحدث شيء. ولكن إن كان عرض الشاشة أصغر من هذا الرقم تُبْدَل ‘large’ بكلمة ‘small’. HTML5 و CSS3 Polyfills تتوفّر في الوقت الحاضر polyfills لمختلف مزايا HTML5 وCSS3 تقريبًا، وقد وفّر الفريق المسؤول عن تطوير Modernizr قائمة مفصّلة بالـ polyfills المتوفّرة، والتي يمكن استخدامها حسب الحاجة. كذلك وضع نفس الفريق قائمة بجميع ميزات HTML5 و CSS3 الجديدة إضافة إلى تعليمات استخدام هذه الميزات بصورة صحيحة. يجب الانتباه إلى أنّه لا تحتاج جميع هذه الميزات إلى الـ Polyfills، إذ يمكن الاستفادة من بعضها مباشرة أو من خلال الدعم التراجعي. اختبار الموقع في متصفحات مختلفة ربّما تكون عملية اختبار الموقع الإلكتروني سواء من ناحية التصميم أو التطوير في المتصفحات أمرًا متعبًا للغاية، وبصورة عامة فإنّ المتصفحات الحديثة مثل Chrome، Firefox و Safari تعمل جيّدًا، إلا أن غالبية المشاكل تظهر في متصفح Internet Explorer، إضافة إلى أن اختبار إصدارات مختلفة من هذا المتصفح قد يكون أمرًا صعبًا. هناك العديد من الخدمات التي تساعد على اختبار الموقع الإلكتروني في المتصفحات المختلفة، بعضها تفاعلي وبعضها لا. تساعد القدرة على التفاعل مع المتصفح بدلًا من رؤية لقطة شاشة للموقع كثيرًا على تنقيح الشفرة البرمجية. ومن أفضل الطرق لاستخدام إصدارات مختلفة من متصفح Internet Explorer هي استخدام الآلات الافتراضية Virtual Machines، بحيث تتضمن كل آلة إصدارًا مختلفًا من هذا المتصفح. يظهر في الصورة أعلاه برنامج VirtualBox يعمل على نظام Mac OS X مع المتصفح Internet Explorer من الإصدار السادس إلى التاسع. تقدّم Microsoft مجموعة من الحواسيب الافتراضية Virtual PCs التي يمكن استخدامها في عملية الاختبار، ولكن يمكن لعملية الإعداد أن تكون مرهقة وصعبة. لحسن الحظ قام Greg Thornton ببناء أداة تُؤَتْمِت عملية تنصيب الآلات الافتراضية. تستغرق عملية التنصيب بعض الوقت وذلك لتنزيل جميع الآلات الافتراضية المتوفرة، وستحتاج كذلك إلى مساحة كبيرة على القرص الصلب، ولكن يمكن تثبيت الآلات الافتراضية التي تحتاج إليها فقط، وبالنظر إلى وتيرة استخدامك لهذه الآلات الافتراضية، قد يكون من الأفضل تنصيبها على قرص صلب خارجي. يحتوي الإصدار الثامن من Internet Explorer على أدوات تطوير مضمّنة في المتصفح، ولكن الإصدارات السابقة تفتقر إلى هذه الميزة. ولكن تتوفّر أداة Firebug التي تقدّم أدوات تطوير مفيدة جدًّا داخل المتصفّح. يظهر في الصورة أعلاه الإصدار السابع من Internet Explorer يعمل في آلة افتراضية مع استخدام أداة Firebug Lite لتنقيح الشفرة البرمجية. ترجمة - وبتصرّف - للمقال Feature Support & Polyfills لصاحبه Shay Howe.
  4. يشبه أداء المواقع كثيرًا قاعدة 80/20، حيث إن إجراء تحسينات بنسبة 20% ستزيد سرعة الموقع الإلكتروني بنسبة 80%. فاتّخاذ خطوات بسيطة مثل تنظيم شفرة CSS يأتي بثمار طيّبة. يشرح هذا المقال خطوات بسيطة يمكن أن يؤدّي تطبيقها - إلى جانب تنظيم شفرة CSS - إلى تحسّن ملحوظ في أداء الموقع. تصغير الملفات وضغطها تعدّ إزالة الشفرة المتكررة وغير الضرروية من أبسط الطرق وأفضلها في تقليل حجم ملف CSS، ولكن هناك بعض الطرق الأخرى. تتمثّل إحدى هذه الطرق في تصغير minify وضغط ملفات HTML و CSS و JavaScript. كذلك يمكن ضغط الصور وإزالة التعليقات و مواصفات الألوان Color Profiles غير الضرورية. آلية gzip للضغط آلية gzip هي إحدى أشيع وسائل ضغط الملفات، إذ تأخذ هذه الآلية الملفات الشائعة مثل HTML ،CSS، Javascript وما شابهها وتبدأ بتحديد السلاسل النصية المتشابهة وضغطها. وكلما تم التعرّف على المزيد من السلاسل النصية كان حجم الملفات المضغوطة أصغر، وهذا يعني إرسال ملفات أصغر حجمًا من الخادوم إلى المتصفح. ليست تهيئة gzip بالأمر الصعب، وقد أبلى فريق HTML5 Boilerplate بلاءً حسنًا في هذا المجال. ولضغط الملفات بآلية gzip ستحتاج إلى إضافة ملف .htaccess إلى المجلد الرئيسي في خادوم الويب ثم تدرج في هذا الملف أنواع الملفات التي ترغب في ضغطها. لا تنسَ إضافة النقطة إلى بداية اسم الملف، لأنّ هذا الملف هو من الملفات المخفية. يمكنك أن تجد في إعدادات خادوم Apache في HTML5 Boilerplate أنواع الملفات التي يُنصح بضغطها، ولا بأس بالتذكير مرة أخرى أنّ شفرة ضغط هذه الملفات يجب أن تكون في ملف .htaccess في المجلد الرئيسي لخادوم الويب. وجدير بالذكر أن هذا الملف لا يعمل إلا مع خواديم Apache والتي تتطلب تفعيل الوحدات التالية. mod_setenvif.c mod_headers.c mod_deflate.c mod_filter.c mod_expires.c mod_rewrite.c لا تقلق إن وجدت صعوبة في هذا الأمر، فهناك بعض الخواديم التي تهيّئ لك هذه الأمور نيابة عنك، فبطبيعة الحال، ضغط الملفات وتصغير حجمها يكون دائمًا في مصلحة خادوم الويب. قياس نسبة الضغط تقدّم أداة الفحص Inspector في متصفح Google Chrome عددًا كبيرًا من المعلومات حول أداء الصفحة، ويمكن الوصول إليها من خلال التبويب Network. إضافة إلى ذلك، هناك عدد من المواقع الإلكترونية التي تساعد على معرفة ما إذا كانت خاصية الضغط gzip مفعّلة أم لا. في تبويب Network يتم التعرّف على جميع الملفات المحمّلة بواسطة المتصفح وعرض أحجام تلك الملفات والمدة التي استغرقتها عملية التحميل. لاحظ كيف أن ضغط الملفات قد قلّل من حجمها بنسبة 60% تقريبًا. يمكن التعرّف على أنواع وسائل الضغط التي يدعمها المتصفح من خلال اختيار أحد الملفات. في الصورة أعلاه نلاحظ أنّ المتصفح يدعم gzip، deflate و sdch كما هو مبيّن في ترويسة الطلب المرسل من المتصفح. أما ترويسة Header الإجابة الواردة من الخادوم فتبيّن أن الملف مضغوط بواسطة gzip. ضغط الصور قد يكون تقليل حجم الملفات النصّية مفيدًا، ولكن يمكن الحصول على نتائج أفضل من خلال ضغط ملفات الصور. يمكن لحجم ملفات الصور المستخدمة في الموقع الإلكتروني أن يصبح كبيرًا جدًّا، وضغط الصور يمكن أن يساعد على إبقاء حجم الملفات الكلي تحت السيطرة. يتجنّب الكثيرون مسألة ضغط الصور وذلك خوفًا من أن يتسبب الضغط في تقليل جودة الصورة، ولكن هذا غير صحيح في أغلب الأحيان، إذ يمكن ضغط الصورة دون المساس بجودتها، وذلك من خلال التخلص من مواصفات الألوان والتعليقات غير الضرورية. تتوفّر العديد من الأدوات التي تساعد على ضغط الصور، من أفضلها ImageOptim لنظام Mac و PNGGauntlet لنظام Window، و Trimage لنظام لينكس. تقوم هذه الخدمات بضغط صيغ الصور الأكثر شيوعًا مثل JPG و PNG. نموذج لضغط الصور غير مضغوطة، 455kb مضغوطة، 401kb باستخدام ImageOptim فإنّ حجم الصورة أعلاه قد انخفض بمقدار 14% دون المساس بدقّة الصورة أو جودتها. من الجدير بالذكر هنا أن اختيار أبعاد الصورة في HTML باستخدام خاصيتي height و width يساعد على تصيير الصورة بسرعة أكبر وذلك بتحديد الحجم المناسب للصورة. ولكن يجب الانتباه إلى أن هاتين الخاصيتين تستخدمان في تحديد أبعاد الصورة الحقيقية لا لتصغير حجمها، فمن الممارسات السيئة في هذا الصدد استخدام صورة ذات حجم كبير ثم تصغيرها باستخدام خاصية height و width، والنتيجة تحميل بيانات فائضة عن الحاجة. <img src="ocean.jpg" height="440" width="660" alt="Oceanview"> تقليل طلبات HTTP يشكّل عدد طلبات HTTP - بعد حجم الملفات - العائق الأكبر في طريق تحقيق الأداء الأفضل. ففي كل مرة يُرسل فيها الطلب إلى الخادوم يزداد وقت تحميل الصفحة، وفي بعض الأحيان تتطلب معالجة الطلب من قبل الخادوم الانتهاء من معالجة الطلب السابق، وقد تؤدّي كثرة الطلبات إلى حدوث مشاكل في الخادوم. دمج الملفات المتشابهة إحدى الطرق المتّبعة في تقليل طلبات HTTP - وربّما أسهلها - تتمثّل في دمج الملفات المتشابهة، بمعنى دمج جميع ملفات CSS في ملف واحد وجميع ملفات JavaScript في ملف واحد كذلك. يؤدي دمج هذه الملفات ثم ضغطها إلى إنشاء طلب HTTP واحد صغير نسبيًا. <!-- سيء --> <link href="css/reset.css" rel="stylesheet"> <link href="css/base.css" rel="stylesheet"> <link href="css/site.css" rel="stylesheet"> <!-- جيد --> <link href="css/styles.css" rel="stylesheet"> يجب تحميل ملفات CSS في بداية صفحة الوِب ضمن الوسم head، أما ملفات JavaScript فيجب تحميلها في نهاية الصفحة ضمن الوسم body. والسبب هو أنّه يمكن استكمال تحميل ملفات CSS أثناء تحميل بقية أجزاء الصفحة، في حين أنّه لا يمكن تصيير ملفات JavaScript متعددة في نفس الوقت، لذا فإن هذه الملفات تمنع تحميل بقية عناصر الصفحة. يجب الانتباه هنا إلى ملفات JavaScript تُحمّل لا تزامنيًا Asynchronously بعد اكتمال تصيير الصفحة، وكذلك يجب الانتباه إلى أن JavaScript قد تكون مطلوبة في تصيير عناصر الصفحة كما هو الحال عند اسخدام HTML5 shiv. شرائح الصور Image Sprites المقصود بشرائح الصور في CSS هو استخدام صورة خلفية واحدة في مجموعة من العناصر، والهدف هنا هو تقليل عدد طلبات HTTP الناشئة من استخدام مجموعة من الصور. ولإنشاء شريحة اختر مجموعة من صور الخلفية الأكثر استخدامًا ورتّبها إلى جانب بعضها البعض في صورة واحدة، ثم باستخدام CSS أضف الشريحة كصورة خلفية إلى عنصر معين، ثم استخدم خاصّية background-position لعرض الصورة المطلوبة. بهذه الطريقة، يتم تمرير الصورة خلف العنصر ليقوم الأخير بعرض الجزء الملائم من الصورة. فعلى سبيل المثال إن كانت أبعاد العنصر هي 16 بكسل طولًا و 16 بكسل عرضًا فهذا يعني أنّ هذا العنصر سيعرض 16 بكسل طولًا و 16 بكسل عرضًا من الصورة، أما باقي أجزاء الصورة تكون مخفية. هذا مثال عن شريحة تضم صورًا لأيقونات قائمة محرر النصوص، وقد أحيطت كل صورة بخطوط إرشادية لتوضيح أماكن تغيّر موقع الخلفية. يمكن إنشاء قائمة باستخدام شريحة الصور السابقة وذلك بجعلها خلفية للعنصر span، ثم يمكن تغيير موضع الشريحة بواسطة الأصناف، وبذلك يمكن عرض الأيقونة المناسبة في كل مرة. HTML <ul> <li><a href="#"><span class="bold">Bold Text</span></a></li> <li><a href="#"><span class="italic">Italicize Text</span></a></li> <li><a href="#"><span class="underline">Underline Text</span></a></li> <li><a href="#"><span class="size">Size Text</span></a></li> <li><a href="#"><span class="bullet">Bullet Text</span></a></li> <li><a href="#"><span class="number">Number Text</span></a></li> <li><a href="#"><span class="quote">Quote Text</span></a></li> <li><a href="#"><span class="left">Left Align Text</span></a></li> <li><a href="#"><span class="center">Center Align Text</span></a></li> <li><a href="#"><span class="right">Right Align Text</span></a></li> </ul> CSS ul { margin: 0; padding: 0; } li { float: left; list-style: none; margin: 2px; } li a { background: linear-gradient(#fff, #eee); border: 1px solid #ccc; border-radius: 3px; display: block; padding: 3px; } li a:hover { border-color: #999; } li span { background: url("sprite.png") 0 0 no-repeat; color: transparent; display: block; font: 0/0 a; height: 16px; width: 16px; } .italic { background-position: -16px 0; } .underline { background-position: -32px 0; } .size { background-position: -48px 0; } .bullet { background-position: -64px 0; } .number { background-position: -80px 0; } .quote { background-position: -96px 0; } .left { background-position: -112px 0; } .center { background-position: -128px 0; } .right { background-position: -144px 0; } (تجربة حيّة) معرّف الموارد الموحّد URI الخاص ببيانات الصورة إضافة إلى استخدام شرائح الصور، يمكن الاستفادة من البيانات المُرمَّزة Encoded للصورة وتضمينها مباشرة في HTML و CSS وذلك من خلال معرّف الموارد الموحّد الخاص بالبيانات Data URI، وبهذا لن يُرسَل أي طلب HTTP إلى الخادوم. هذه الطريقة مفيدة للصور الصغيرة والتي لا تكون عرضة للتغيير، وعندما يكون بالإمكان نقل ملفات HTML و CSS إلى ذاكرة التخبئة Cach. ولكن لا يخلو الأمر من مشاكل، إذ يصعب أحيانا تبديل هذه المعرّفات ومتابعتها وقد تحتاج إلى توليد المعرّف مرة أخرى، إضافة إلى أنّها لا تعمل مع المتصفحات القديمة وخصوصًا Internet Explorer 7 وما قبله. إن كان بالإمكان تقليل عدد طلبات HTTP باستخدام هذه الطريقة، وإن كان بالإمكان تخزين ملفات HTML و CSS في ذاكرة التخبئة فإن الفوائد التي ستجينها باستخدام هذه الطريقة تفوق المشاكل المترتبة عنها. هناك عدد من الأدوات التي تساعد في توليد معرّف البيانات مثل هذا المحوّل وأداة Patternify. ومع ذلك تأكّد دائمًا من أنّ حجم البيانات في معرّف البيانات الخاصّ بالصورة أقل حجمًا من ملفّ الصورة الأصلية. HTML <img height="100" width="660" alt="Rigged Pattern" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAO6m73+X/bdxogujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQAyIyYy0nBAGgAAAABJRU5ErkJggg=="> CSS div { background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAO6m73+X/bdxogujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQAyIyYy0nBAGgAAAABJRU5ErkJggg==") repeat; } (تجربة حيّة) خزّن الملفات الشائعة في ذاكرة التخبئة هناك طريقة أخرى لتقليل عدد طلبات HTTP المرسلة إلى الخادوم ولعرض الصفحات في وقت أقصر، وتتمثّل هذه الطريقة في إضافة الملفات الشائعة إلى ذاكرة التخبئة. فعند تحميل الصفحة للمرة الأولى يمكن تخزين ملفات معيّنة في ذاكرة التخبئة، وبهذا لن يحتاج المتصفح إلى طلب الملفات ذاتها - لمدة معيّنة - في كل زيارة لتلك الصفحة. تحديد مدّة بقاء هذه الملفات في ذاكرة التخبئة عائد إليك. وكما هو الحال مع ضغط الملفات، فإنّ تعيين مدّة بقاء الملفات في ذاكرة التخبئة يكون من خلال ملف .htaccess. ومرة أخرى فقد أعدّ فريق HTML5 Boilerplate ملفًّا خاصًّا لتعيين تاريخ انتهاء صلاحية الملفات في ذاكرة التخبئة وذلك في إعدادات خادوم Apache الخاصّ بهم. عادة ما تخزّن الصور ومقاطع الفيديو والخطوط وملفات الوسائط المعروفة لمدة شهر في ذاكرة التخبئة، أمّا ملفات CSS و JavaScript فتخزّن في الغالب لمدة عام كامل. وفي حال كانت ملفات CSS أو غيرها من الملفات عرضة للتغير في فترات متقاربة، يمكن تغيير اسم الملف - ومن الأفضل أن يكون الترقيم متسلسلًا - ليُحمَّل الملف من خلال المتصفح. كذلك يمكن تغيير مدة بقاء هذه الملفات في ذاكرة التخبئة إلى قيمة أقل. ExpiresByType text/css "access plus 1 year" ExpiresByType application/javascript "access plus 1 year" إن كانت ملفات CSS و JavaScript تتغيّر في كل أسبوع ولا يُتحكَّم في إصداراتها باستخدام ملفات منفصلة فمن الأفضل تغيير قيمة "access plus 1 year" إلى "access plus 1 week". ويمكن مراجعة صفحة صيغة mod_expires للتعرّف على القيم المتاحة. ترجمة - وبتصرّف - للمقال Performance & Organization لصاحبه Shay Howe. حقوق الصورة البارزة محفوظة لـ Freepik
  5. ماركداون هي صيغة نصّية صرفة Plain text format لكتابة المستندات بالاعتماد على صيغة تستخدم لتحديد هيئة النصّ وتنسيقه في الرسائل الإلكترونية والمدوّنات. طوّرت ماركداون على يد John Gruber سنة 2004، والذي كان أول شخص يكتب محوّلًا لماركداون إلى HTML بلغة Perl لينتشر حول العالم بعد فترة وجيزة. أدّى الانتشار الواسع الذي شهدته ماركدوان في السنوات التي تبعت إنشاء المحوّل الأول إلى تطوير العديد من المحوّلات وبلغات برمجية مختلفة. إضافة إلى ذلك توسّعت الصيغة الأصلية وأضيفت معايير جديدة لتنسيق الحواشي السفلية Footnotes والجداول والعناصر الأخرى المعروفة في المستندات، وظهرت كذلك أدوات تحويل تسمح بتحويل النصّ المكتوب بماركداون إلى تنسيقات أخرى غير HTML. أما اليوم فيعتمد الملايين من مستخدمي المواقع المشهورة مثل Reddit،StackOverflow و GitHub صيغة ماركداون للتواصل فيما بينهم، كما تدعم منصات التدوين الشهيرة مثل Wordpress و Drupal وغيرها هذه الصيغة في كتابة التدوينات. لم يعد استخدام هذه الصيغة مقتصرًا على الشبكة العنكبوتية وحسب، بل تجاوز ذلك إلى اعتمادها من قبل مؤلّفي الكتب وكتّاب المقالات ولإنشاء العروض التقديمية، ولكتابة الروايات والمحاضرات وغيرها. إنّ ما يميز صيغة ماركداون عن بقية الصياغات الترميزية المبسّطة والتي قد تكون أسهل في قواعدها من ماركداون، هو أن الأخيرة تمتاز بمقروئيتها العالية، فكما يصرّح Gruber: ومع أنّ الصيغة الأصلية لماركداون قد تأثّرت بصفة كبيرة بالكثير من مرشّحات تحويل النص إلى HTML مثل Setext و Textile و reStructuredText وغيرها إلّا أن مصدر الإلهام الرئيسي لـ Gruber كان هيئة النصوص الصرفة في الرسائل الإلكترونية. معايير صيغة ماركدوان في الواقع لم يعلن Gruber عن معايير قياسية واضحة للكتابة بصيغة ماركداون، ويرى البعض أنّ مبتكر هذه الصيغة قد تجاهلها ولم يعد يحاسب منتهكي حقوق الملكية، الأمر الذي تسبّب في ظهور صيغ وأشكال مختلفة من ماركداون. في العام 2012 تطوّع Jeff Atwood إلى جانب مجموعة من الأشخاص لوضع معايير قياسية للكتابة بصيغة ماركداون والتضمينات الأخرى لهذه الصيغة في اللغات البرمجية المختلفة، ولكن في العام 2014 اعترض Gruber على استخدام اسم Markdown لهذا المشروع، فتم تبديله إلى CommonMark. أصدر موقع CommonMark.org إصدارات مختلفة لمعايير ماركداون القياسية، ومن المؤمّل أن يعلن الموقع عن النسخة النهائية ذات الإصدار 1.0 من معايير ماركداون القياسية هذا العام. كذلك أعلنت GitHub عن نسختها الرسمية المعدّلة من ماركداون والتي تعتمد فيها على CommonMark باستثناء الجداول والروابط التلقائية Autolinks وقوائم المهام Task lists وخط الشطب Strikethrough، والتي أضافتها GitHub إلى المعايير القياسية. كتابة مستندات ماركداون تحمل مستندات ماركداون اللاحقتين .md و .markdown، ويمكن استخدام محررات النصوص المعروفة لإنشاء هذه الملفات وكتابتها. تتوفّر في الوقت الحاضر الكثير من المحرّرات الخاصة بهذه الصيغة، والتي تقدّم الكثير من الميزات المفيدة، مثل تلوين الرموز، وعرض المستند منسّقًا كما سيظهر على متصفح الإنترنت، وإنشاء ملف منسّق بصيغة PDF وغير ذلك الكثير. محرّرات ماركداون متوفّرة على جميع أنظمة التشغيل المعروفة، وهناك محرّرات مدفوعة، وأخرى مجّانية بعضها مفتوح المصدر وبعضها لا، وبعض المحرّرات يعمل على المتصفّح ويمكن استخدامه دون الحاجة إلى الاتصال بالإنترنت، ويكفي البحث في Google عن عبارة Markdown Editor لتجد أمامك مئات الخيارات المختلفة والمتنوّعة. الفقرات وفواصل الأسطر تعرّف الفقرة في ماركداون بأنّها مجموعة من الأسطر المتتابعة والمفصولة بسطر فارغ أو أكثر، والمقصود بالسطر الفارغ في ماركداون هو كل سطر يبدو للناظر فارغًا، وهذا يعني أنّ الأسطر التي تحتوي على عدد من المسافات الفارغة أو علامات الجدولة Tabs تعدّ أسطرًا فارغة. تحاط الفقرات بعد تحويلها إلى HTMl بالوسم <p></p>، أما في حال كنت ترغب في فصل فقرتين بواسطة الوسم <br/> فيمكنك إضافة مسافتين فارغتين في نهاية الفقرة وسيقوم مترجم ماركداون بالمطلوب. مثال: حسوب مجموعة من شركات الإنترنت تخدم المستخدمين العرب حول العالم. تدير حسوب أكبر منصتي عمل حر عربيتيْن وأكبر شبكة إعلانية في منطقة الشرق الأوسط وشمال أفريقيا، بالإضافة لمنتجات وشركات أخرى. توفّر حسوب حلولاً ومنتجات تساعد الشباب العرب على العمل والتطوّر وتتألّف من فريق عمل شاب وشغوف من مختلف الدول العربية. يترجم إلى: <p>حسوب مجموعة من شركات الإنترنت تخدم المستخدمين العرب حول العالم.</p> <p>تدير حسوب أكبر منصتي عمل حر عربيتيْن وأكبر شبكة إعلانية في منطقة الشرق الأوسط وشمال أفريقيا، بالإضافة لمنتجات وشركات أخرى.<br/> توفّر حسوب حلولاً ومنتجات تساعد الشباب العرب على العمل والتطوّر وتتألّف من فريق عمل شاب وشغوف من مختلف الدول العربية.</p> العناوين توفّر ماركداون صيغتين لتحديد العناوين ضمن النصوص: الصيغة الأولى هي نمط Setext، وتُحدَّد العناوين فيه من خلال وضع علامات المساواة (=) للعناوين من المستوى الأول، وعلامة الطرح (-) للمستوى الثاني، وليس هناك عدد محدد للعلامات تحت النص. هذا عنوان من المستوى الأول ======================== هذا عنوان من المستوى الثاني ------------------------- الصيغة الثانية هي نمط Atx، وتتيح تحديد العناوين حتى المستوى السادس، وذلك بوضع علامة (#) قبل نص العنوان، ويحدد عدد العلامات مستوى العنوان ضمن المتن. # هذا عنوان من المستوى الأول ### هذا عنوان من المستوى الثالث ###### هذا عنوان من المستوى السادس يترجم النص السابق إلى: <h1>هذا عنوان من المستوى الأول</h1> <h3>هذا عنوان من المستوى الثالث</h3> <h6>هذا عنوان من المستوى السادس</h6> الاقتباسات Blockqoutes تستخدم ماركداون الرمز (>) المستوحى من الرسائل الإلكترونية لتنسيق النصوص المقتبسة. بعد تحويل ملف ماركداون إلى HTML تحاط النصوص المسبوقة بهذا الرمز بوسمي <blockqoute>...</blockqoute>. > توفّر حسوب حلولاً ومنتجات تساعد الشباب العرب على العمل والتطوّر وتتألّف من فريق عمل شاب وشغوف من مختلف الدول العربية. يترجم إلى: <blockquote> <p>توفّر حسوب حلولاً ومنتجات تساعد الشباب العرب على العمل والتطوّر وتتألّف من فريق عمل شاب وشغوف من مختلف الدول العربية.</p> </blockquote> إذا كان الاقتباس مكوّنًا من عدة فقرات فيجب استخدام رمز الاقتباس في بداية كل فقرة، كذلك يمكن استخدام صياغات ماركداون المختلفة داخل النصوص المقتبسة ومن ضمنها النصوص المقتبسة ذاتها، وكما هو موضح في المثال التالي: > توفّر حسوب حلولاً ومنتجات تساعد الشباب العرب على العمل والتطوّر وتتألّف من فريق عمل شاب وشغوف من مختلف الدول العربية. > # عنوان من المستوى الأول > حسوب مجموعة من شركات الانترنت تخدم المستخدمين العرب حول العالم. تدير حسوب أكبر منصتي عمل حر عربية وأكبر شبكة إعلانية في منطقة الشرق الأوسط وشمال أفريقيا، بالإضافة لمنتجات وشركات أخرى. > > هذا اقتباس ضمن الاقتباس الأول القوائم تدعم ماركداون القوائم النقطية والرقمية، ويمكن استخدام النجمة (*) وعلامة الجمع (+) وعلامة الطرح (-) للتعبير عن القوائم النقطية: * أحمر * أخضر * أصفر - برتقال - تفاح - ليمون + إلكترون + بروتون + نيوترون تترجم القائمة النقطية إلى: <ul> <li>برتقال</li> <li>تفاح</li> <li>ليمون</li> </ul> أما القوائم الرقمية فتكتب بالصيغة التالية: تتألّف الذرات من الجسيمات التالية: 1. الإلكترونات 2. البروتونات 3. النيوترونات وتترجم إلى: <ol> <li>الإلكترونات</li> <li>البروتونات</li> <li>النيوترونات</li> </ol> من الجدير بالذكر أن محوّل ماركداون لا يعتمد على الأرقام المستخدمة في القائمة الرقمية عند التحويل إلى صيغة HTML، فلو كانت القائمة مكتوبة بالصيغة التالية: 1. برتقال 1. تفاح 1. ليمون أو بالصيغة التالية: 3. برتقال 9. تفاح 2. ليمون فإن النتيجة النهائية تكون واحدة. وفي حال تضمنت القائمة فقرات متعددة، يجب إزاحة السطر الأول من الفقرة إما بأربع مسافات فارغة أو بعلامة جدولة واحدة. * حسوب مجموعة من شركات الإنترنت تخدم المستخدمين العرب حول العالم. تدير حسوب أكبر منصتي عمل حر عربية وأكبر شبكة إعلانية في منطقة الشرق الأوسط وشمال أفريقيا، بالإضافة لمنتجات وشركات أخرى. * توفّر حسوب حلولاً ومنتجات تساعد الشباب العرب على العمل والتطوّر وتتألّف من فريق عمل شاب وشغوف من مختلف الدول العربية. يجدر الانتباه إلى أنّه يمكن الحصول على قائمة رقمية عن طريق الخطأ إذا ورد في المتن رقم متبوع بنقطة (مثلًا: انطلقت أكاديمية حسوب سنة 2015. وتضم الآن أكثر…) ولتجنب حدوث ذلك ضع خطًّا مائلًا عكسيًا بين الرقم والنقطة (انطلقت أكاديمية حسوب سنة 2015/. وتضم الآن أكثر…). الخطوط الأفقية الخطوط الأفقية في HTML تنتج من استخدام الوسم <hr/>، وفي ماركداون يمكن إدراج خط أفقي باستخدام النجمة (*) أو علامة الطرح (-)، أو الشَّرطَة السفلية (_)، بشرط إدراج ثلاثة رموز أكثر في سطر منفرد. في المثال التالي جميع الرموز ستعطي خطًّا أفقيًا بعد تحويل الملف إلى HTML. * * * *** ***** - - - --------------------------------------- التأكيد على الكلمات تستخدم ماركداون رمزيْ النجمة (*) والشرطة السفلية (_) للتأكيد على الكلمات. تؤدي إحاطة الكلمات المراد تأكيدها بنجمتيْن أو شرطتيْن إلى عرضها مائلة بعد تحويلها إلى HTML وذلك بإحاطتها بوسم <em>. أما إحاطة الكلمات بأربع نجمات أو شرطات فسيؤدي إلى عرضها بخط عريض Bold وذلك بإحاطتها بوسم <strong>. أما إحاطة الكلمات بست نجمات أو شرطات فسيؤدي إلى إحاطتها بالوسمين معًا. *حسوب* مجموعة من شركات الانترنت تخدم المستخدمين العرب حول العالم. _حسوب_ مجموعة من شركات الانترنت تخدم المستخدمين العرب حول العالم. **حسوب** مجموعة من شركات الانترنت تخدم المستخدمين العرب حول العالم. __حسوب__ مجموعة من شركات الانترنت تخدم المستخدمين العرب حول العالم. _*حسوب*_ مجموعة من شركات الانترنت تخدم المستخدمين العرب حول العالم. ***حسوب*** مجموعة من شركات الانترنت تخدم المستخدمين العرب حول العالم. ___حسوب___ مجموعة من شركات الانترنت تخدم المستخدمين العرب حول العالم. النتيجة بعد التحويل إلى HTML: <p><em>حسوب</em> مجموعة من شركات الانترنت تخدم المستخدمين العرب حول العالم.</p> <p><strong>حسوب</strong> مجموعة من شركات الانترنت تخدم المستخدمين العرب حول العالم.</p> <p><strong><em>حسوب</em></strong> مجموعة من شركات الانترنت تخدم المستخدمين العرب حول العالم.</p> الروابط Links توفّر ماركداون أسلوبيْن لكتابة الروابط، التضمين Inline والإشارة Reference، وفي كلا النمطين يوضع نص الرابط بين قوسين معقوفين []. في حالة الرابط الضمني، يُضاف عنوان الرابط بين قوسين () بعد القوسيْن المعقوفين بالصورة التالية: هذا [مثال على رابط](http://www.example.com) ضمني في ماركداون. والنتيجة: هذا <a href="http://www.example.com">مثال على رابط</a> ضمني في ماركداون. أما أسلوب الإشارة فيكون بالصيغة التالية: هذا [مثال على رابط][id] بأسلوب الإشارة في ماركداون. يمكن الآن تعريف عنوان الرابط في أي مكان ضمن المستند، وبالصيغة التالية: [id]: http://www.example.com يمكن استخدام الحروف والأرقام والرموز في تحديد معرّف الرابط، وعند إجراء عملية التحويل إلى HTML يربط المحوّل بين المعرّف وبين نص الرابط ثم يحذف الإشارات من المستند. يمكن كذلك استخدام نص الرابط كمعرّف للرابط، وذلك بكتابة نص الرابط بالطريقة التالية: [Google][] ثم تعريف معرّف الرابط: [Google]: http://google.com الصور يمكن إضافة الصور إلى المستند باستخدام ماركداون وبنفس الأسلوب المتبع في إضافة الروابط (التضمين والإشارة)، مع فارق وحيد، وهو إضافة علامة التعجب (!) قبل القوسين المعقوفين: ![[جبال الألب](images/alps.jpg) ![جبال الألب][id] [id]: images/alps.jpg تجدر الإشارة إلى أنّ ماركداون لا تقدّم صيغة لتحديد طول وعرض الصورة؛ لذا إن كنت بحاجة إلى القيام بذلك يمكنك استخدام وسم <img> الاعتيادي ضمن مستند ماركداون. النصوص البرمجية إن كنت بحاجة إلى إضافة بعض النصوص البرمجية إلى المستند الخاصّ بك، فإن ماركداون تقدّم أسلوبين لتنسيق هذه النصوص، ضمن السطر أو على هيئة كتلة نصية مستقلة. يمكن الاستفادة من الأسلوب الأول عندما ترغب في سرد النصوص البرمجية القصيرة داخل المتن: تستخدم الدالة `alert()` لعرض الرسائل التنبيهية. يحيط مترجم ماركداون الشيفرة البرمجية بوسم <code> كما يلي: <p>تستخدم الدالة <code>alert()</code> لعرض الرسائل التنبيهية.</p> أما إن كنت ترغب في عرض كتلة برمجية كبيرة الحجم فيمكنك اتباع الأسلوب الثاني، وذلك بإضافة أربع مسافات فارغة أو علامة جدولة في بداية كل سطر من أسطر الشيفرة البرمجية. هذه فقرة عادية. هذه فقرة تتضمن كتلة نصية برمجية ومن الواضح أن الكتلة البرمجية تمتد إلى عدة أسطر والنتيجة: <p>هذه فقرة عادية.</p> <pre><code>هذه فقرة تتضمن كتلة نصية برمجية ومن الواضح أن الكتلة البرمجية تمتد إلى عدة أسطر </code></pre> بقي أن نشير إلى أنّه يمكن استخدام كافّة وسوم HTML في مستند ماركداون، بشرط أن يسبق الوسمَ سطرٌ فارغ. على سبيل المثال لإضافة جدول إلى مستند ماركداون يمكن استخدام وسم <table> كما يلي: هذه فقرة عادية. <table> <tr> <td>هذا النص في جدول</td> </tr> </table> فقرة عادية أرى. المصادر: موقع مبتكر صيغة ماركداون CommonMark Wikipedia
  6. إن قدرتك على كتابة شفرة HTML وCSS مع فهم عميق لما تكتبه يعني امتلاكك لمهارة كبيرة ومتميّزة، وعند ازدياد حجم شفرات الموقع الإلكتروني وكذلك عدد زوّاره، تظهر الحاجة إلى مجموعة جديدة من المهارات المهمّة والضرورية لتوفير الوقت أثناء التطوير ولتحسين تجربة المستخدم؛ لذا فإن معرفة أساسيات تحسين أداء الموقع الإلكتروني وتنظيمه قد يساعد كثيرًا في هذا الصدد. تؤثّر طريقة تنظيم الشفرة البرمجية وأسلوب بنائها كثيرًا على سرعة التطوير، إضافة إلى سرعة تصيير Rendering الصفحة على متصفح الإنترنت، وقد يشغل هذا الأمران اهتمام المطورين والمستخدمين على حد سواء. تمكن زيادة سرعة الإنتاج وتوفير تجربة أفضل للمستخدمين من خلال قضاء الوقت الكافي في التخطيط للحصول على بنية صحيحة للشفرة الأساسية، وتحديد آلية عمل المكونات المختلفة مع بعضها. إستراتيجية وبنية الشفرة الأساسية تتمثّل أول خطوة في طريق تحسين أداء الموقع الإلكتروني وتنظيمه في تحديد إستراتيجة وبنية جيدة للشفرة الأساسية، وذلك من خلال ترتيب مجلدات المشروع بصورة جيدة، وتحديد أنماط التصميم Design patterns، وإيجاد السبل اللازمة لإعادة استخدام الشفرة الشائعة. بنية الأنماط Styles إن طريقة تنظيم الأنماط أمر عائد إلى الرغبة الشخصية وطبيعة الموقع الإلكتروني المراد إنشاؤه، ولكن - عمومًا - هناك بعض الممارسات الجيدة التي ينصح باتباعها، وإحدى هذه الممارسات هي فصل الأنماط بناء على الغرض من استخدامها، وهذا يعني إنشاء مجلدات للأنماط الأساسية الشائعة، ولمكونات واجهة الاستخدام، ووحدات منطق العمل Business logic modules. # Base – normalize.css – layout.css – typography.css # Components – alerts.css – buttons.css – forms.css – list.css – nav.css – tables.css # Modules – aside.css – footer.css – header.css تتضمن بنية الملفات الموضّحة أعلاه ثلاثة مجلدات تضمّ مجموعات فريدة من الأنماط، والهدف هنا هو أن تبدأ بالنظر إلى المواقع الإلكترونية على أنّها أنظمة وليست صفحات منفردة، ويجب أن تعكس بنية الشفرة البرمجية هذا المبدأ. لاحظ عدم وجود أي أنماط خاصّة بالصفحات في بنية الملفات هذه. يتضمن المجلد base الأنماط الشائعة والمتغيّراات المستخدمة في أرجاء الموقع الإلكتروني كالأنماط المتعلقة بمخطط الصفحات وتنسيق النصوص على سبيل المثال. أما المجلد components (المكوّنات) فيتضمن الأنماط الخاصة بعناصر واجهة الاستخدام والتي يمكن تقسيمها إلى مكونات مختلفة مثل التنبيهات والأيقونات. أخيرًا، يتضمن المجلد modules (الوحدات) الأنماط الخاصة بأقسام الصفحة المختلفة، والتي تُحدَّد حسب طبيعة المشروع واحتياجاته. لا ترتبط أنماط المكونات بأي شكل من الأشكال بمنطق العمل الجوهري للموقع الإلكتروني وإنما تعتمد على الواجهة بصورة تامة، أما الأنماط الخاصة بمنطق العمل فتكون موجودة في الوحدات ، ومن الشائع استخدام عددٍ من المكونات الخاصة بواجهة الاستخدام ضمن هذه الوحدات. فعلى سبيل المثال يمكن أن يحتوي العمود الجانبي في الصفحة على أنماط القوائم والأيقونات المعرّفة ضمن أنماط المكونات في حين تكون بعض الأنماط الأخرى متوارثة من نمط الوحدة. يساعد فصل الأنماط بهذه الطريقة على تكوين أنماط مسبقة متقنة الصنع والقدرة على استخدام الأنماط في أماكن متعددة من الموقع الإلكتروني وإعادة استخدامها حسب الحاجة. إن ترتيب الأنماط بهذه الأسلوب ليس أمر مستحدثًا، وقد ورد ذكره سابقًا في عدد من منهجيات CSS مثل CSS كائنية التوجه Object Oriented CSS أو OOCSS اختصارًا، وبنية CSS القابلة للتجميع والتوسع Scalable and Modular Architecture for CSS أو SMACSS اختصارًا. لكل واحدة من هذه المنهجيات آراؤها الخاصة حول بنية الملفات وكذلك حول طريقة استخدام الأنماط. CSS كائنية التوجه Nicole Sullivan واحدة من روّاد منهجية CSS كائنية التوجه وذلك في عملها المتمثّل في كتابة الأنماط الخاصة بالمواقع الإلكترونية الكبيرة. تضع هذه المنهجية مبدأين أساسيين يساعدان على بناء مواقع إلكترونية قابلة للتوسع تعتمد على بنية قوية ومتماسكة وبمقدار معقول من الشفرة البرمجية. وهذا المبدآن هما: فصل البنية عن القشرة، فصل المحتوى عن الحاوي. المقصود بفصل البنية عن القشرة هو تجريد مخطط العنصر من السمة العامة للموقع الإلكتروني. بمعنى أنّه يجب أن تكون بنية الوحدة شفافة، وتسمح بتوارث الأنماط الأخرى وعرضها دون أي تضارب. ويتطلب هذا بنية رصينة للمخطّطات والشبكات إلى جانب وحدات متقنة الصنع. أما فصل المحتوى عن الحاوي فيعني عدم اعتماد العناصر الأبناء على العنصر الأب، فعلى سبيل المثال يجب أن يظهر العنوان بنفس المظهر بغض النظر عن العنصر الأب الذي يحتويه. ولتحقيق هذا، يجب أن ترث العناصر أنماطًا مبدئية، ثم تُوسَّع هذه الأنماط حسب الحاجة. HTML <div class="alert alert-error"> <p class="msg">...</p> </div> CSS .alert {...} .alert-error {...} .msg {...} تشجّع CSS كائنية التوجه على بناء مكتبة للمكونات، والتحلّي بالمرونة، والاستفادة من الشبكة. تشكّل هذه القواعد أرضية جيدة يمكن أن تساعد في تجنّب الحاجة إلى إنشاء أنماط إضافية عند إضافة صفحات أو خصائص جديدة للموقع الإلكتروني. بنية CSS القابلة للتجميع والتوسع المنهجية الثانية في تنظيم شفرة CSS هي المنهجية التي طوّرها Jonathan Snook تحت اسم بنية CSS القابلة للتجميع والتوسع. تدعو هذه المنهجية إلى تقسيم الأنماط إلى خمسة فئات رئيسية، هي: الأساس Base، المخطط Layout، الوحدة Module، الحالة State، السمة Theme. تضمّ فئة الأساس الأنماط الأساسية للعناصر التي تغطي الأمور العامة والمبدئية، ثم تأتي بعدها فئة المخطط لتحديد الأحجام المختلفة للعناصر إلى جانب أنماط الشبكة مانحة إياها المخطط الرئيسي. أما أنماط الوحدة فهي أنماط مخصصة بصورة أكبر وهي موجّهة إلى أجزاء محددة من الصفحة، كروابط التنقّل في الموقع (navigation) أو الأنماط المميزة الأخرى، ثم تأتي بعدها أنماط الحالة التي تستخدم لزيادة أو تعديل أنماط أخرى في حال تضمنت الوحدة المعنية حالات مختلفة، كلسان تبويب مفعّل مثلًا. وأخيرًا، يمكن إضافة فئة السمة والتي تتضمن أنماط تستند إلى المظهر الخارجي للوحدات المختلفة. HTML <div class="alert is-error"> <p>...</p> </div> CSS .alert {...} .alert.is-error {...} .alert p {...} .alert.is-error p {...} في المثال السابق يكون الصنف alert ضمن فئة الوحدة في حين أن الصنف is-error يكون ضمن فئة الحالة. بعد ذلك تُتوارث الأصناف من هذه الفئات حسب الحاجة. أي منهجية ستختار؟ اختيار المنهجية التي ستستخدمها في عملك أمر عائد إليك تمامًا، وقد تشعر بأنّ منهجية معينة تناسب مشروعًا معينًا والعكس صحيح. بصورة عامة، لا بأس باستخدام مزيج من المنهجيتين والاستفادة من مبادئهما حسب ما تقتضيه الحاجة. تحسين الأداء بواسطة المحدّدات Selectors عدم الاهتمام بالمحدّدات من الأمور التي يُبتلى بها الكثير من المطوّرين، حيث ينصبّ جلّ الاهتمام في الغالب على الخصائص والقيم التابعة لها، فما دامت الأنماط مطبّقة على العنصر الصحيح فإن كل شيء يبدو على ما يرام. ولكن هذا افتراض خاطئ تمامًا، فلطريقة تحديد العناصر في CSS أثرٌ كبير على الأداء، بما في ذلك سرعة عرض الصفحات ومدى فعالية الأنماط في البنية العامة للموقع. اجعل المحدّدات قصيرة قدر الإمكان هناك الكثير من الفوائد الناجمة عن تقصير محدّدات CSS قدر الإمكان، إذ بتقصيرها تقل التخصّصية، ما يسمح بتوارث وتناقل أفضل للأنماط، وزيادة في كفاءتها. أما المحدّدات الطويلة فتقلّل الأداء لأنها تجبر المتصفح على تصيير كل نوع من أنواع المحددات على حدة من اليمين إلى اليسار، كما تشكّل عائقًا أمام المحدّدات الأخرى لتكون أكثر تخصّصًا. /* سيء */ header nav ul li a {...} /* جيد */ .primary-link {...} /* سيء */ button strong span {...} button strong span .callout {...} /* جيد */ button span {...} button .callout {...} المحدّد الأول في الشفرة السابقة مخصّص جدًّا، ويمكن تحديده وتصييره بسرعة أكبر باستخدام الصنف. إضافة إلى ذلك، فإن استخدام الصنف في هذه الحالة يقلل بقدر ملحوظ من الحاجة إلى تحديد العنصر الأب، الأمر الذي يسمح بتغيير موقع العنصر فيما بعد دون إفساد الأنماط الأخرى. أما المثال الثاني فيتضمن محدّدات أقصر من المثال الأول ولكن يمكن تحسينها من خلال توفير المستوى ذاته من التخصصية لكل محدد. لا تبالغ في استخدام محددات مخصّصة جدًّا وبهذا ستواجه مشاكل أقلّ بكثير في حال حدوث تغير في ترتيب عناصر الصفحة. إن التقليل من عدد المحدّدات وإعطائها جميعًا القوة ذاتها سيمكّنها من العمل مع بعضها البعض بصورة أفضل. إن الهدف الأساسي من تقصير المحدّدات هو تقليل التخصصية وكتابة شفرة أوضح وأكثر ترتيبًا. استخدم الأصناف Classes دائمًا الأصناف رائعة جدًّا، إذ يصيّرها المتصفح بسرعة كما أنّها تتيح إعادة استخدام الأنماط إلى جانب استخدامها الواسع في بناء المواقع الإلكترونية. ولكن عند استخدام الأصناف يجب الانتباه إلى ممارسات مجرَّبة ستساعد على تحقيق أقصى فائدة ممكنة منها. تُصيَّر المحدّدات من اليمين إلى اليسار؛ لذا فمن الضروري أن تعتني جيّدًا بـ المحدّد الرئيسي Key selector وهو المحدد الأخير ضمن قائمة المحدّدات من الجهة اليمنى، وهو محدّد مهمّ للغاية؛ لأنّه يحدّد العنصر الأول الذي سيعثر عليه المتصفح أثناء بحثه ضمن الصفحة، وسيؤدي عدم الاعتناء بالمحدد الرئيسي إلى دخول المتصفح في فوضى عارمة. لا تتردّد في استخدام صنف فريد من أجل تحقيق الفائدة بالنسبة لأداء الصفحة، كذلك لا تُضِف أي عنصر قبل محدّدات الأصناف، فذلك سيمنعك من تطبيق هذه الأنماط على عناصر أخرى، وسيزيد من مقدار الخصوصية التي يتمتع بها ذلك المحدد. /* سيء */ #container header nav {...} /* جيد */ .primary-nav {...} /* سيء */ article.feat-post {...} /* جيد */ .feat-post {...} يجدر بك كذلك الابتعاد عن استخدام محدّدات المعرّفات ID selectors قدر الإمكان؛ ذلك لأنّها محدّدات مخصّصة جدًّا ولا تسمح بإعادة استخدامها في أي مكان آخر، ويسعني القول إنّ استخدام المعرّف لا يختلف كثيرًا عن استخدام !important. الشفرة القابلة لإعادة الاستخدام إن أحجام الملفات الكبيرة وعمليات التصيير غير الضرورية التي يقوم بها المتصفح هي من أكبر العوائق التي تقف في وجه الأداء الجيد. وإعادة استخدام الأنماط قدر الإمكان من أسرع الطرق في تقليل حجم ملفات CSS، إذ يجب دمج أنماط الواجهة Interface patterns والأنماط المكررة ليكون بالإمكان مشاركة الشفرة ذاتها على عدد من العناصر. فعلى سبيل المثال لو كانت هناك وحدتان تتشاركان في عدد من الخصائص (كلون الخلفية، والأركان الدائرية، والظل) فلا حاجة على الإطلاق للتصريح عن النمط ذاته مرتين، بل يمكن دمج هذه الخصائص في صنف واحد، وبهذا تكتب الأنماط مرة واحدة ويكون بالإمكان مشاركتها في أماكن مختلفة. ولكن يجب الانتباه إلى أنّ إعادة استخدام الشفرة لا يكون على حساب الدلالية Semantics. يمكن في هذه الحالة استخدام زوج من المحددات وفصلهما بفاصلة، وبهذا يمكن للأنماط أن تكون متوارثة بين المحدّدين في الوقت ذاته. هناك طريقة أخرى غالبًا ما نراها في منهجيتيْ OOCSS و SMACSS اللتين تحدّثنا عنهما سابقًا، وتتلخّص هذه الطريقة في تعريف الأنماط في صنف واحد، ثم تطبيق أصناف متعددة على العنصر ذاته. /* سيء */ .news { background: #eee; border-radius: 5px; box-shadow: inset 0 1px 2px rgba(0, 0, 0, .25); } .social { background: #eee; border-radius: 5px; box-shadow: inset 0 1px 2px rgba(0, 0, 0, .25); } /* جيد */ .news, .social { background: #eee; border-radius: 5px; box-shadow: inset 0 1px 2px rgba(0, 0, 0, .25); } /* الأفضل */ .modal { background: #eee; border-radius: 5px; box-shadow: inset 0 1px 2px rgba(0, 0, 0, .25); } ليس هناك فارق كبير بين الطريقتين ما دامت الشفرة مشتركة وقابلة لإعادة الاستخدام، وما دام الحجم النهائي للملف صغيرًا. الخطوة المواليّة لتنظيم شفرة CSS هي معرفة أساسيّات تحسين أداء الموقع. ترجمة - وبتصرّف - للمقال Performance & Organization لصاحبه Shay Howe. حقوق الصورة البارزة محفوظة لـ Freepik
  7. كانت القدرة على التحكم بتأثيرات الانتقال Transitions والحركة Animations من إحدى الميزات التي أتت بها CSS3، وقد كان مطورو الواجهات الأمامية بحاجة كبيرة إلى مثل هذه الميزة لتصميم هذه التأثيرات باستخدام HTML و CSS فقط دون الحاجة إلى استخدام Javascript أو Flash، وقد تحققت رغبتهم أخيرًا وبعد سنوات عديدة. تتيح تأثيرات الانتقال في CSS3 تغيير مظهر أو سلوك العنصر عندما تتغير حالته، كأن يُمرَّر مؤشر الفأرة فوق العنصر hover، أو عند التركيز focus أو التنشيط active أو استهداف العنصر. أما تأثيرات الحركة في CSS3 فتتيح تغيير هيئة وسلوك العنصر من خلال مفاتيح keyframes متعددة، وهذا يعني أن تأثيرات الانتقال تقدّم تغيّرًا من حالة إلى أخرى، في حين أن تأثيرات الحركة تقدّم نقاطًا متعددة من الانتقالات من خلال مفاتيح مختلفة. تأثيرات الانتقال مثلما ذكرنا سابقًا، فإنّه ولكي يحدث تأثير الانتقال يجب أن يحدث تغير في حالة العنصر، كذلك يجب تعريف أنماط مختلفة لكل حالة من هذه الحالات. وأسهل طريقة لتحديد الأنماط لمختلف الحالات هي استخدام أشباه الأصناف التالية: :hover، :focus، :active ،:target. هناك أربعة خصائص مرتبطة بتأثيرات الانتقال وهي: transition-property، transition-duration، transition-timing-function، و transition-delay. ليست جميع هذه الخصائص مطلوبة لإنتاج تأثيرات الحركة، ولكن الخصائص الثلاثة الأولى هي الأكثر استخدامًا. في المثال التالي سيتغير لون خلفية background الصندوق خلال ثانية واحدة وبطريقة تدريجية خطّية linear. .box { background: #2db34a; transition-property: background; transition-duration: 1s; transition-timing-function: linear; } .box:hover { background: #ff7b29; } سوابق المتصفحات Vendor Prefixes لا تتضمن الشفرة السابقة كما هو الحال مع جميع الشفرات البرمجية في هذا المقال على سوابق المتصفحات، وهذا الأمر مقصود والهدف منه هو الحفاظ على الشفرة بسيطة وصغيرة الحجم وقابلة للفهم. ولتحصل على أفضل دعم في جميع المتصفحات عليك باستخدام سوابق المتصفحات. ولغرض التوضيح فقط، فإن الشفرة السابقة ستكون هكذا: .box { background: #2db34a; -webkit-transition-property: background; -moz-transition-property: background; -o-transition-property: background; transition-property: background; -webkit-transition-duration: 1s; -moz-transition-duration: 1s; -o-transition-duration: 1s; transition-duration: 1s; -webkit-transition-timing-function: linear; -moz-transition-timing-function: linear; -o-transition-timing-function: linear; transition-timing-function: linear; } .box:hover { background: #ff7b29; } خاصية الانتقال تحدّد خاصية transition-property بدقّة الخصائص التي سيتم تغييرها بالتزامن مع الخصائص الانتقالية الأخرى. تتغيّر جميع الخصائص - مبدئيًّا - ضمن الحالات المختلفة للعنصر، ولكن يمكن تحديد الخصائص المراد تغييرها ضمن قيمة transition-property وستتأثّر تلك الخصائص فقط بتأثيرات الانتقال. في المثال السابق قمنا بتعريف الخاصية background قيمةً لـ transition-property، وهذا يعني أنّها ستكون الخاصية الوحيدة التي ستخضع للتغيّر خلال ثانية واحدة وبطريقة تدريجية خطّية linear. بمعنى أنّه في حال وجود عدد من الخصائص لعنصر معيّن عند تغيّر حالته، ولكنّها غير معرّفة كقيمة لـ transition-property فإنّها لن تتلقى تأثيرات الانتقال كتلك المعرّفة في الخصائص transition-duration أو transition-timing-function. إن كنت بحاجة إلى تغيير عدد من الخصائص في الوقت نفسه، فيمكنك أن تفصلها بفواصل، كذلك يمكنك استخدام القيمة all لتطبيق تأثيرات الانتقال على جميع خصائص العنصر. .box { background: #2db34a; border-radius: 6px transition-property: background, border-radius; transition-duration: 1s; transition-timing-function: linear; } .box:hover { background: #ff7b29; border-radius: 50%; } الخصائص التي تسمح بتطبيق تأثيرات الانتقال عليها من الضروري الانتباه إلى أنّه لا تتقبّل جميع الخصائص تطبيق تأثيرات الانتقال عليها، بل فقط تلك العناصر التي تمتلك نقاطًا وسطية قابلة للتعريف. فخصائص مثل الألوان، حجم الخط وما شابهها يمكن تطبيق تأثيرات الانتقال عليها نظرًا لكونها تملك قيمًا معرّفة بين بعضها البعض. في حين أن خاصية display على سبيل المثال لا يمكنها تقبّل تأثيرات الانتقال لأنّها لا تملك أيّة قيم وسطية. القائمة التالية تبيّن مجموعة من الخصائص الشائعة التي يمكن تطبيق تأثيرات الانتقال عليها: background-color background-position border-color border-width border-spacing bottom clip color crop font-size font-weight height left letter-spacing line-height margin max-height max-width min-height min-width opacity outline-color outline-offset outline-width padding right text-indent text-shadow top vertical-align visibility width word-spacing z-index مدة تأثير الانتقال يمكن تعيين المدة التي يستغرقها تأثير الانتقال من خلال خاصية transition-duration، ويمكن استخدام وحدات توقيت عامة وهي الثانية (s) والمللي ثانية (ms)، ويمكن استخدام الأعداد العشرية في تعيين هذه القيمة، فمثلًا يمكن استخدام الصيغة التالية: .2s. عند تطبيق تأثير الانتقال على خصائص متعددة يمكن تعيين مدد متعددة أيضًا لكل خاصية، وكما هو الحال عند تعيين قيمة خاصية transition-property يمكن استخدام الفاصلة لتعيين قيم متعددة لخاصية مدة الانتقال. ولكن من الواجب الانتباه إلى أنّه عند تعيين مدد متعددة يجب مراعاة الترتيب المتّبع في تعيين الخصائص التي ستتلقّى تأثير الانتقال بواسطة خاصية transition-property، بمعنى أنّ القيمة الأولى في هذا الخاصية ستأخذ القيمة الأولى في خاصية transition-duration وهكذا دواليك. وإن طُبِّق تأثير الانتقال على خصائص متعددة مع تعيين قيمة واحدة لمدّة التأثير، فإن تلك القيمة ستطبّق على جميع الخصائص. .box { background: #2db34a; border-radius: 6px; transition-property: background, border-radius; transition-duration: .2s, 1s; transition-timing-function: linear; } .box:hover { background: #ff7b29; border-radius: 50%; } توقيت تأثير الانتقال تُستخدَم خاصّية transition-timing-function لتعيين سرعة تأثير الانتقال، ويمكن لهذا التأثير أن يمتلك سرعات مختلفة ضمن مدة زمنية واحدة وذلك بعد تعيين المدة من خلال خاصية transition-duration. وهناك قيم مفتاحية شائعة تُستخدَم مع هذه الخاصية مثل linear، ease-in، ease-out و ease-in-out. عند استخدام قيمة linear فإن الحركة تكون بسرعة ثابتة من حالة إلى أخرى، أما عند استخدام القيمة ease-in فإن الحركة تبدأ ببطء وتتسارع تدريجيًا مع مرور الوقت، وعند استخدام القيمة ease-out فإن الحركة تبدأ بسرعة وتتباطئ تدريجيًا مع مرور الوقت. أما عند استخدام القيمة ease-in-out فإن الحركة تبدأ بطيئة ثم تتسارع في الوسط لتعود إلى التباطؤ قبل الوصول إلى نهاية المدة المحددة للتأثير. تمتلك كل دالة توقيت منحنى بيزيه مكعبي Cubic-Bezier curve يمكن تعيين قيمه بدقّة بواسطة القيمة cubic-bezier(x1, y1, x2, y2) إضافة إلى قيم أخرى هي step-start و step-stop إلى جانب قيمة فريدة تحدّد من خلال steps(number_of_steps, direction). عند تطبيق تأثر الانتقال على خصائص متعددة، يمكن تعريف دوال توقيت متعددة أيضًا، وكما هو الحال مع قيم خصائص الانتقال الأخرى، يمكنك فصل القيم المتعددة بفواصل. .box { background: #2db34a; border-radius: 6px; transition-property: background, border-radius; transition-duration: .2s, 1s; transition-timing-function: linear, ease-in; } .box:hover { background: #ff7b29; border-radius: 50%; } تأخير تأثير الانتقال إضافة إلى التصريح عن كل من خاصية التأثير والمدة الزمنية ودوال التوقيت، يمكن كذلك تعيين فترة تأخير تأثير الانتقال من خلال خاصّية transition-delay، حيث تُعيَّن قيمة زمنية - بالثانية أو بالمللي ثانية - تحدد الفترة الزمنية التي تسبق انطلاق التأثير. وكما هو الحال مع جميع خصائص تأثيرات الانتقال، يمكن تأخير عدد من التأثيرات من خلال إضافة قيم متعددة مفصولة بفواصل. .box { background: #2db34a; border-radius: 6px transition-property: background, border-radius; transition-duration: .2s, 1s; transition-timing-function: linear, ease-in; transition-delay: 0s, 1s; } .box:hover { background: #ff7b29; border-radius: 50%; } الصيغة المختصرة لتأثيرات الانتقال قد يصبح التصريح عن خصائص الانتقال واحدة تلو الأخرى أمرًا مجهدًا، خصوصًا مع استخدام سوابق المتصفحات، ولحسن الحظّ يمكن اختصار العملية من خلال استخدام الخاصية transition والتي تدعم جميع الخصائص والقيم السابقة. فباستخدام قيمة transition لوحدها، يمكنك تعريف كل خصائص تأثيرات الانتقال وبالترتيب التالي: transition-property, transition-duration, transition-timing-function, وأخيرًا transition-delay. ولا حاجة لاستخدام الفواصل عند تعريف قيم هذه الخصائص إلا إذا كنت تعرّف تأثيرات انتقال متعددة. ولتعريف تأثيرات انتقال متعددة في سطر واحد، يمكنك تعيين قيم كل مجموعة من التأثيرات على حدة وفصل أي مجموعة تأثيرات إضافية باستخدام الفواصل. .box { background: #2db34a; border-radius: 6px; transition: background .2s linear, border-radius 1s ease-in 1s; } .box:hover { color: #ff7b29; border-radius: 50%; } تطبيق تأثيرات الانتقال على أيقونة HTML <button>Awesome Button</button> CSS button { border: 0; background: #0087cc; border-radius: 4px; box-shadow: 0 5px 0 #006599; color: #fff; cursor: pointer; font: inherit; margin: 0; outline: 0; padding: 12px 20px; transition: all .1s linear; } button:active { box-shadow: 0 2px 0 #006599; transform: translateY(3px); } (تجربة حية) بطاقة متقلّبة HTML <div class="card-container"> <div class="card"> <div class="side">...</div> <div class="side back">...</div> </div> </div> CSS .card-container { height: 150px; perspective: 600; position: relative; width: 150px; } .card { height: 100%; position: absolute; transform-style: preserve-3d; transition: all 1s ease-in-out; width: 100%; } .card:hover { transform: rotateY(180deg); } .card .side { backface-visibility: hidden; height: 100%; position: absolute; width: 100%; } .card .back { transform: rotateY(180deg); } (تجربة حية) تأثيرات الحركة تؤدي تأثيرات الانتقال عملًا متميّزًا من خلال إضفاء التأثيرات البصرية عند الانتقال من حالة إلى أخرى، وهي مناسبة جدًّا لمثل هذه الحالات التي يحدث فيها تغيّر الحالة لمرة واحدة فقط. ولكن عندما تكون بحاجة إلى التحكم في الأمور على نحو أدقّ فستضطر إلى إضافة المزيد من الحالات إلى تأثيرات الانتقال، وهنا يأتي دور تأثيرات الحركة. مفاتيح تأثيرات الحركة يمكن استخدام قاعدة @keyframes لتعيين النقاط التي يجب أن يحدث فيها تأثير الانتقال. تتضمن هذه القاعدة اسم تأثير الحركة، والنقاط التي تحدث فيها الحركة، والخصائص التي نرغب في تحريكها. @keyframes slide { 0% { left: 0; top: 0; } 50% { left: 244px; top: 100px; } 100% { left: 488px; top: 0; } } إضافة سوابق المتصفحات إلى قاعدة keyframe تجب إضافة سوابق المتصفحات إلى قاعدة @keyframes كما هو الحال مع خصائص تأثيرات الانتقال والحركة، وكما يلي: @-moz-keyframes @-o-keyframes @-webkit-keyframes يحمل تأثير الحركة في المثال السابق اسم slide، وقد أفصحنا عنه مباشرة بعد قاعدة @keyframes. تُعيَّن نقاط حدوث الحركة باستخدام النسبة المئوية، ابتداءً من 0% وانتهاءً بـ 100% ونقطة وسطية عند 50%. كما يمكن استخدام الكلمات المفتاحية from و to بدلًا من 0% و 100%، كما يمكن تعيين أي عدد من النقاط ضمن هذا المدى. يُصرَّح عن خصائص العنصر التي نرغب في تحريكها داخل كل نقطة، وفي المثال السابق كانت الخصائص المطلوبة هي left و top. من الضروري الانتباه إلى أنّه يمكن تحريك خاصّيّة واحدة فقط كما هو الحال مع تأثيرات الانتقال. فعلى سبيل المثال إن كنت ترغب في تحريك عنصر من الأعلى إلى الأسفل، فإن التحريك من top:0; إلى bottom: 0; لن يجدي نفعًا، لأن الحركة يمكن تطبيقها على خاصية واحدة فقط، وليس من خاصّية إلى أخرى؛ لذا من أجل تحريك العنصر من الأعلى إلى الأسفل يجب التحريك من top: 0; إلى top: 100%;. (تجربة حية). اسم تأثير الحركة بعد تعيين مفاتيح الحركة الخاصّة بتأثير الحركة، يجب إسنادها إلى أحد العناصر في الصفحة. وللقيام بذلك نستخدم خاصّية animation-name مع الاسم الذي عيّناه لقاعدة @keyframes، وتستخدم هذه الخاصّية مع العنصر الذي نرغب في تطبيق تأثيرات الحركة عليه. .stage:hover .ball { animation-name: slide; } لا يكفي استخدام خاصّية animation-name لوحدها، بل يجب تعيين قيمة لخاصية animation-duration ليعرف المتصفح المدة اللازمة لانتهاء التأثير. مدة تأثير الحركة، دالة التوقيت، وتأخير الحركة بعد أن تُعيّن قيمة خاصّية animation-name ستسلك تأثيرات الحركة نفس سلوك تأثيرات الانتقال، إذ يمكن تعيين مدّة التأثير وتعريف دالة التوقيت وتأخير التأثير حسب الرغبة. وليبدأ تأثير الحركة بالعمل فإنه بحاجة إلى تعيين مدّة التأثير من خلال خاصية animation-duration، وكما هو الحال مع تأثيرات الانتقال، يمكن لقيمة هذه الخاصّية أن تكون بالثانية أو بالمللي ثانية. .stage:hover .ball { animation-name: slide; animation-duration: 2s; } يمكن تعريف دالّة التوقيت وتأخير تأثّر الحركة باستخدام الخاصّيتين animation-timing-function و animation-delay على التوالي، ولا يوجد أي فرق في القيم التي تستقبلها هاتان الخاصيتان أو طريقة عملها بين تأثيرات الانتقال وتأثيرات الحركة. .stage:hover .ball { animation-name: slide; animation-duration: 2s; animation-timing-function: ease-in-out; animation-delay: .5s; } في المثال التالي سترتدّ الكرة (العنصر<figure> مع النمط ball) أثناء تحرّكها إلى جهة اليسار، ويمكن مشاهدة الحركة من خلال تمرير مؤشر الفأرة فوق العنصر <div> ذي النمط stage. HTML <div class="stage"> <figure class="ball"></figure> </div> CSS 0% { left: 0; top: 0; } 50% { left: 244px; top: 100px; } 100% { left: 488px; top: 0; } } .stage { height: 150px; position: relative; } .ball { height: 50px; position: absolute; width: 50px; } .stage:hover .ball { animation-name: slide; animation-duration: 2s; animation-timing-function: ease-in-out; animation-delay: .5s; } (تجربة حية) تخصيص تأثيرات الحركة تتيح تأثيرات الحركة المزيد من التخصيص لسلوك العنصر، فيمكن تعيين عدد مرات تكرار الحركة والاتجاه الذي ستنتهي فيه الحركة. تكرار تأثير الحركة لا يتكرر تأثير الحركة بصورة افتراضية بل يتوقف بعد إتمام الدورة الأولى، ولجعل التأثير يتكرّر مرات متعددة يمكن استخدام خاصّية animation-iteration-count، وتتضمن قيم هذه الخاصية إمّا أعداد صحيحة أو كلمة infinite المفتاحية. في الحالة الأولى سيتكرر تأثير الحركة بحسب العدد المحدّد، أما في الحالة الثانية فإن تأثير الحركة سيتكرّر إلى ما لا نهاية. .stage:hover .ball { animation-name: slide; animation-duration: 2s; animation-timing-function: ease-in-out; animation-delay: .5s; animation-iteration-count: infinite; } (تجربة حية) اتجاه تأثير الحركة وإلى جانب القدرة على تعيين عدد مرات تكرار تأثير الحركة، يمكن كذلك تعيين اتجاه انتهاء التأثير باستخدام الخاصية animation-direction، وتأخذ هذه الخاصية القيم: normal، reverse، alternate و alternate-reverse. استخدام القيمة normal يعني أن الحركة ستسير بشكل طبيعي من البداية إلى النهاية، أما القيمة reverse فتعني أن الحركة ستسير بعكس الطريقة المصرّح عنها في قاعدة @keyframes، أي ستبدأ الحركة من 100% وتنتهي بـ 0%. عند استخدام القيمة alternate فإن الحركة ستسير جيئة وذهابًا، أي ستبدأ الحركة من 0% لتتّجه إلى 100% ثم تعود من هذه القيمة إلى 0% مرة أخرى. يمكن تحديد عدد مرّات تكرار الحركة بالاتجاه الأمامي والخلفي وذلك باستخدام الخاصّية animation-iteration-count، حيث يبدأ العدّ من الرقم 1 فتبدأ الحركة من القيمة 0% وصولًا إلا 100% وتكتمل الدورة الأولى، بعد ذلك نعود من القيمة 100% إلى 0% فتضاف دورة أخرى إلى العدّاد، وبهذا نحصل على دورتين بالمجمل. تعمل القيمة alternate كذلك على قلب دوال التوقيت عند بدء الحركة بشكل عكسي، فإن كان تأثير الحركة يستخدم القيمة ease-in عند التحرك من 0% إلى 100% فإنّه سيستخدم القيمة ease-out عند الانتقال من 100% إلى 0%. أخيرًا، تدمج القيمة alternate-reverse القيمتين alternate و reverse، وتكون الحركة بالاتجاه الخلفي ثم بالاتجاه الأمامي، أي تبدأ الحركة من 100% باتجاه 0% لتعود مرّة أخرى إلى 100%. .stage:hover .ball { animation-name: slide; animation-duration: 2s; animation-timing-function: ease-in-out; animation-delay: .5s; animation-iteration-count: infinite; animation-direction: alternate; } (تجربة حية) حالة تأثير الحركة تسمح خاصّية animation-play-state بتشغيل تأثير الحركة أو إيقافه مؤقتًا باستخدام خيارين هما running و paused على التوالي. عند إعادة تشغيل تأثير الحركة المتوقف مؤقتًا فإنّ التأثير يعود إلى الحركة من النقطة التي توقّف عندها وليس من نقطة البداية. في المثال التالي تم تعيين قيمة paused للخاصّية animation-play-state وذلك عند النقر على العنصر ذي النمط stage. لاحظ كيف أن الحركة ستبقى متوقّفة بصورة مؤقتة إلى حين إفلات زر الفأرة. .stage:hover .ball { animation-name: slide; animation-duration: 2s; animation-timing-function: ease-in-out; animation-delay: .5s; animation-iteration-count: infinite; animation-direction: alternate; } .stage:active .ball { animation-play-state: paused; } (تجربة حية) نمط التعبئة الخاصّ بتأثير الحركة تعرّف الخاصّية animation-fill-mode النمط الذي سيطبّق على العنصر قبل أو بعد أو قبل وبعد عمل تأثير الحركة، ولهذه الخاصّية أربع قيم هي: none, forwards, backwards, و both. عند استخدام القيمة none لن يتم تطبيق أي نمط على العنصر قبل أو بعد تطبيق تأثير الحركة. القيمة forwards ستحافظ على الأنماط المعرّفة في المفتاح الحركي الأخير، ولكن يجب الانتباه إلى أن هذه الأنماط قد تتأثّر بقيم الخاصّيتين animation-direction و animation-iteration-count فتتغيّر نقطة انتهاء تأثير الحركة. القيمة backwards ستطبّق الأنماط الموجودة في المفتاح الحركي الأول بمجرد أن يتم تعريفها، وقبل انطلاق تأثير الحركة، وهذا يتضمن تطبيق تلك الأنماط خلال مدة التأخير المحدّدة لتأثير الحركة. إلى جانب ذلك، فإنّ القيمة backwards قد تتأثّر بقيمة الخاصّية animation-direction. وأخيرًا، فإنّ القيمة both تجمع في عملها بين عمل القيمتين السابقتين. .stage:hover .ball { animation-name: slide; animation-duration: 2s; animation-timing-function: ease-in-out; animation-delay: .5s; animation-fill-mode: forwards; } .stage:active .ball { animation-play-state: paused; } (تجربة حية) صيغة مختصرة لتأثيرات الحركة كما هو الحال مع تأثيرات الانتقال، هناك صيغة مختصرة لتعريف تأثيرات الحركة، ويتم ذلك من خلال استخدام الخاصية animation بدلًا من تعريف القيم واحدة تلو الأخرى. وتأخذ القيم التابعة لهذه الخاصية الترتيب التالي: animation-name, animation-duration, animation-timing-function, animation-delay, animation-iteration-count, animation-direction, animation-fill-mode, وأخيرًا animation-play-state. .stage:hover .ball { animation: slide 2s ease-in-out .5s infinite alternate; } .stage:active .ball { animation-play-state: paused; } (تجربة حية) ترجمة - وبتصرّف - للمقال Transitions & Animations لصاحبه Shay Howe.
  8. في إحدى الأجزاء الفقيرة من جزيرة باهاما الكبرى وبعيدًا عن الشاطئ والمناطق السياحية، هناك مساحات شاسعة من الأراضي البائسة والتي تضم منازل شبه مدمَّرة وأكوامًا من الحديد وأحجار البناء. هذا ما ظننته للوهلة الأولى، ولكن الواقع كان مختلفًا تمامًا. يحصل كل مواطن باهاماني بعد ولادته مباشرة على قطعة من الأرض، وبدءًا من تلك اللحظة وحتى يدخل عامه الثامن عشر، يقدّم الأهل والأقارب في كل عيد ميلاد بدلًا من الهدايا وما شابهها، مواد البناء بدءًا بالإسمنت وأحجار البناء مرورًا بحديد التسليح والخشب وانتهاءً بطلاء الجدران. تُجْمع هذه المواد في مكان آمن وجاف إلى أن يصبح الفرد قادرًا على رصف أحجار البناء الواحدة فوق الأخرى، فيذهب إلى ذلك المكان في كل عيد ميلاد ليبني جزءًا يسيرًا من منزله المستقبلي. وعندما يصل الفرد إلى سنّ الثامنة عشرة يكون مستعدًا للانتقال من بيت والديْه إلى البيت البسيط الذي بناه بيديه. إنّه واحد من التقاليد المدهشة والملهمة والجميلة(*)، ولكنني أظنّ أنّني أرى أمرًا محزنًا ومثيرًا للشفقة، قبل أن أعرف حقيقة ما كنت أنظر إليه. أحيانا، هذا هو ما يحصل بالضبط عندما ينظر الأشخاص المقرّبون منك بنفس الطريقة إلى شركتك الناشئة وهي تتطوّر وتتقدّم، فهم لا يفهمون ما يجري بالفعل؛ ولهذا السبب فإنّهم ينظرون إلى شركتك الناشئة على أنّها ركام من الأشياء غير المهمّة، بدلًا من النظر إليها على أنّها أساس لشيء عظيم في المستقبل. فهم يرون أن فريقًا مكوّنًا من شخصين (أنت أحدهما) يعملان في غرفة المعيشة ما هو إلا علامة على فشل المشروع أو انهياره بدلًا من كونه إحدى المراحل الطبيعية التي تمرّ بها أي شركة في العالم. لا بأس في أغلب الأحيان أن لا يتفهّم الآخرون طبيعة عملك، فلو كان هؤلاء الأشخاص هم أصدقاء تربطك بهم علاقة سطحية ولا تلتقي بهم إلا في الحفلات، فيمكن حينئذٍ أن تتجنب الحديث معهم حول العمل. ولكن المشكلة هي أن يكون هؤلاء الأشخاص هم عائلتك أو أصدقاؤك المقرّبون، والذين ترغب في أن يدركوا ما تقوم به بدلًا من إظهار التعاطف، فذلك لن يجدي نفعًا وقد تشعر فيما بعد بأنّك تثير شفقتهم وتستجدي عاطفتهم. ستجد نفسك وحيدًا عندما تبدأ العمل على شركتك الخاصة فلا أحد يتفهّم ما تقوم به؛ لذا فمن الضرورة بمكان وجود أشخاصٍ يتفهّمون طبيعة عملك، وهنا تظهر إحدى أكبر فوائد الانخراط في إحدى مجموعات الشركات الناشئة المحلية في بداية مشوارك. ليس بالضرورة أن تكوّن شبكة واسعة من العلاقات، بل المهمّ أن تعثر على أصدقاء يمكنك الوثوق بهم، على أن يكونوا قادرين على رؤية الإنجازات وليس النواقص فقط. قد تجد صعوبة في أن تشرح للآخرين (والديك، زوجك/زوجتك، أصدقاءك المقربين) طبيعة عملك، ولحسن حظّي فإنّ والدي وزوجتي قد أنشأ كل منهما عددًا من الشركات من قبل، وقد تمكّنت من جذب أحد أصدقائي إلى عالم الشركات الناشئة إلى جانبي؛ لذا لم أواجه صعوبة تذكر في هذا الصدد، ولكنّي رأيت الكثير من مؤسسي الشركات الذي واجهوا الكثير من الصعوبات ولم يلقوا آذانًا صاغية لدى أقاربهم وأصدقائهم. إنْ أبدى شخص اهتمامه بالأمر فيمكنك أن تشرح له القصة الحقيقية، كما فعل معي من أخبرني بحقيقة المنازل الباهامية. وإن كانوا يرغبون بالقراءة عن الموضوع فيمكنك أن ترسل إليهم كتاب Jessica Livingstone والذي يحمل عنوان Founder’s at Work. تبيّن Jessica في هذا الكتاب - بأسلوب رائع - أن جميع المنازل الجميلة قد بدأت بكومة من أحجار البناء والإسمنت، وهي إحدى مراحل عملية بناء المنزل وليست مشكلة على الإطلاق، ولكنّنا غالبًا ما نكون غير قادرين على رؤية عملية البناء. (*) أدركت مؤخّرًا بأنّ هذا التقليد قد بدأ بالزوال بسبب المخاطر الحقيقية التي تواجهها هذه المنازل غير النظامية - التي بناها أشخاص غير متخصّصين في البناء - نظرًا لوقوعها في منطقة الأعاصير. آخر زيارة لي لتلك المنطقة كانت سنة 2000، وآمل أنّهم قد وجدوا طريقة للمحافظة على هذا التقليد دون التفريط في السلامة والأمان. ترجمة - وبتصرّف - للمقال Half-built houses and doing something people don’t get لصاحبه Rob Fitzpatrick. حقوق الصورة البارزة محفوظة لـ Freepik
  9. من السهل على المرء أن يتذكّر الأمور الجيّدة في شركته الناشئة، ولكن إليك فيما يلي ثلاث قصص في شركتنا الناشئة حيث لم تجرِ الأمور على ما يرام. الاعتماد بالكامل على شخص واحد خلال أول سنتين من عمر موقع Justin.tv (الذي أصبح twitch.tv)، كان لدينا شخص واحد فقط - يدعى Emmett - يعرف كيف تعمل خواديم التطبيق، وكذلك الأمر بالنسبة لخواديم المحادثة وهو Bill، وKyle بالنسبة لنظام الفيديو. وبما أنّنا نتعامل طوال الوقت، فقد كان هذا الوضع مقبولًا نوعًا ما، فقد كانت لدينا مشاكل أكبر من هذه، إذ لم يكن لدينا عائدات وكان منتجنا غير مستقرّ على الإطلاق. بما أنّنا كنّا مدراء شباب وسيئين للغاية، فقد اعتمدنا سياسة “الإجازات المفتوحة” والتي تُرجمت إلى إعراضنا عن أخذ الإجازات، ومع ذلك، فقد اختار المؤسس الشريك Kyle أن يأخذ إجازة في عطلة نهاية الأسبوع ليسافر فيها إلى Tahoe. كانت مغادرة الأشخاص في عطلات نهاية الأسبوع أمرًا مرعبًا بالنسبة لنا، لأنّ تدفّق الزوّار يصل إلى ذروته في هذه الأوقات (وبما أنّنا كنا نقدّم خدمة البثّ المباشر، فقد كانت نسبة تدفّق الزوّار في وقت الذروة أكثر بـ 35 مرة من الأوقات الاعتيادية). واستعدادًا لذلك، ضبط Kyle نظام الفيديو، ووعدنا بأنّه سيكون على تواصل معنا في حال حدوث أيّ طارئ. في يوم الجمعة الذي تركنا فيها Kyle أصيب نظام الفيديو بخلل أوقفه عن العمل، ولأنّ موقعنا كان يقدّم بثًّا مباشرًا حينها، وبسبب أنّ السند الخلفي Backend لموقعنا كان غير مستقرّ أبدًا، فقد كنا نمرّ بحالة نفسية هستيرية بسبب القلق والارتياب. في كل مرّة كنا نمرّ فيها بمثل هذه المواقف كنّا نتدّخل ونصلح الخلل ونعيد الأمور إلى نصابها، وخلال السنتين والنصف الأولى من عمر شركتنا كنا نمرّ بدورات من النمو والركود، فتنمو شركتنا في شهر ثم تعود إلى المشاكل في الشهر اللاحق، وغالبًا ما كانت المشاكل تحدث لأنّنا نتجاوز الحدّ المسموح به للكتابة على الأقراص، أو حد حزمة البيانات، أو المعالجة أو الذاكرة أو أنّنا ننسى تعبئة واصفات الملف File descriptors (وقد كانت هناك لوحة خلف مكتب Emmett مكتوب عليها “هل تأكدت من عدم تجاوز حدود واصفات الملفات؟“). على كل حال، بقي نظام عرض الفيديو في حالة عدم الاستجابة، لذا التجأنا إلى الأداة الوحيدة في جعبتنا، وهي الاتصال بـ Kyle. ولكن ما من ردّ. حاولنا الاتصال به مرارًا وتكرارًا ولكن دون جدوى. كان مؤشر التحميل في مشغّل الفيديو يدور ويدور دون توقف وكانت الشاشة سوداء. حاول Emmett الولوج إلى نظام الفيديو بحثًا عن الخلل، ولكنّه لم يفلح في الوصول إلى أيّة نتيجة. كان الوقت يمرّ وقلقنا يزداد على نحو متسارع، و Kyle لا يجيب على اتصالاتنا، وحينها خطرت على بال Michale فكرة: نحن نملك عنوان النزل الذي يقضي فيه Kyle عطلته، يمكننا إذًا أن نطلب من أحد الأشخاص أن يذهب إليه ويطلب منه الإجابة على الهاتف. لم تكن خدمات مثل Uber أو Instacart أو Postmates موجودة في ذلك الوقت، لذا لجأنا إلى خدمة توصيل البيتزا. اتّصل Michael بمطعم للبيتزا في Tahoe وأجرى المحادثة التالية مع أحدها: “مرحبًا” “أهلًا، هل يمكنك إرسال سائق إلى (عنوان Kyle) ليوصل إليه رسالة؟” “ما هو نوع البيتزا الذي تريده؟” “نحن لا نرغب بالبيتزا، هل يمكنك فقط إرسال أحد ما إلى ذلك العنوان؟” “هل تريد طلب البيتزا؟” “حسنًا، سندفع ثمن البيتزا، ولكن هل يمكنك إرسال شخص ما إلى ذلك العنوان فورًا؟” “ما نوع البيتزا التي تريدها؟” “لا أعلم، بيتزا بالجبن من الحجم الكبير”. “حسنًا سيتطلب إعدادها 15 إلى 20 دقيقة”. “لا تنتظر البيتزا، سندفع لك ثمنها ولكن أرسل أحد الأشخاص الآن”. “هل أنت متأكد من أنك لا تريد البيتزا؟” “نعم.” “حسنًا سيكون ثمنها 22.90$، هل هذا جيّد؟” “نعم!!”. “حسنًا، ما هي الرسالة التي تريد إرسالها؟” “لقد توقّف الموقع الإلكتروني عن العمل”. بعد 15 دقيقة طرق أحد الأشخاص الباب على Kyle، ففتح Kyle الباب مترنّحًا لأنّه كان نائمًا، فقرأ عليه موظف التوصيل عبارة “لقد توقف الموقع الإلكتروني عن العمل” والتي كانت مكتوبة على الجهة الخلفية من وصل الاستلام. احتاج Kyle إلى 45 ثانية للولوج إلى الواجهة الخلفية للموقع وتشغيل شِفرة إعادة تشغيل خادوم الفيديو ليعود الموقع إلى العمل من جديد. بعد أن عادت الأمور إلى مجاريها، تلقّينا اتصالًا من Kyle: “لماذا لم ترسلوا البيتزا يا شباب؟ أنا جائع جدًّا”. بعد فترة من الزمن أصبح نظام الفيديو غير المستقر والذي طوّره Kyle رابع أكبر مستهلك لحزم البيانات في أمريكا الشمالية. عدم الاستعداد الجيّد والتذرّع بالكذب أوّل سلسلة إذاعية كبيرة فعلًا قمنا بإذاعتها كانت مع فرقة Jonas Brothers، في الفترة التي برز فيها نجمهم على الساحة الفنية. وقد سمع أحد أعضاء فريق الإدارة في تسجيلات Hollywood عن موقع Justin.tv وفكّر بأنّ البث المباشر لمقاطع الفيديو طريقة جيّدة للترويج للفرقة على شبكة الإنترنت. تواصل هذا الشخص معنا ووافقوا على أداء بعض المقاطع الترويجية على الموقع تزامنًا مع موعد إطلاق ألبومهم الجديد. لم نكن ندرك حينها بأنّنا غير مستعدّين على الإطلاق لطوفان من تدفّق الزوار ألا وهو الفتيات المراهقات. تعرّض البث الأوّل إلى بعض المشاكل والتأخير، ولكن التجربة بمجملها كانت جيّدة، وقد بدا لنا أنّ الجمهور قد تقبّل الأمر، ووافقت الفرقة على الاستمرار. أما العرض الثاني فقد أُعِدَّ ليكون أكبر بكثير من العرض السابق، فقد روّج فريق Jonas Brothers لهذا العرض على نطاق واسع وقد كان موعد العرض قريبًا جدًّا من موعد إطلاق الألبوم. وقد حاولنا أن نستفيد من أخطائنا والمشاكل التي واجهتنا في العرض الأول لتحسين نظام الفيديو في موقعنا. في مجال الحوسبة هناك مصطلح يدعى بـ “مشكلة الجمهور الكبير جدًّا Thundering herd” حيث تنتظر العديد من العمليات الحدث ذاته، وعند وقوعه تبدأ هذه العمليات بالعمل سويّة، ولكن الخادوم يتعامل مع عملية واحدة فقط، وتتوقّف بقية العمليات عن العمل مجدّدًا، إلا لطلب الوصول إلى المصادر. تستهلك هذه الحالة دورات المعالج وتؤدي في نهاية المطاف إلى توقف النظام عن العمل بشكل كامل. كانت هذه هي المرة الأولى التي نسمع فيها بهذه المشكلة، وقد توقف الموقع الإلكتروني عن العمل لمدة 30 دقيقة قبل موعد بث المقطع الثاني، والسبب أن الكثير من المعجبين قد دخل إلى الموقع الإلكتروني وبدأوا بالقيام بالعديد من الأشياء: تسجيل حسابات جديدة في الموقع، تسجيل الدخول، إضافة صفحة قناة Jonas Brothers إلى المفضَّلة. كل هذه العمليات الديناميكية، إضافة إلى التحديث المستمر للصفحة للتأكد من أنّ البثّ يعمل جيّدًا (أو ما نراه مكافئًا لعملية “إدخال الخدمة في وضع السبات، ثم إيقاظها مجدّدًا”) ولّد ضغطًا هائلًا على خواديم التطبيق، ما تسبّب في توقف الموقع الإلكتروني عن العمل، وفي الوقت ذاته توقّف نظام الفيديو عن العمل أيضًا، بسبب وجود عدد كبير جدًّا من الطلبات المتزامنة، ولم نكن قادرين على توفير ما يكفي من الخواديم للردّ على تلك الطلبات. حاول Emmett و Kyle تحويل الصفحة إلى ذاكرة التخبئة Cache، وإيقاف الخصائص الديناميكية في الموقع الإلكتروني، وإطلاق التعديلات الإنتاجية إلى مشغّل الفيديو وذلك للتحكم فيه يدويًّا عندما يتلقّى نظام الفيديو الطلبات. ومن جهة أخرى كنت أنا وMichale على اتصال مع إدارة Jonas Brothers لنشرح لهم ما يجري (أو لنقل كنا نحاول ذلك). في بداية الأمر، وقبل حلول موعد البثّ المباشر المتفق عليه، أخبرْنا فريقَ الإدارة بأنّنا أوقفنا الموقع عن العمل لغرض الصيانة ولنتأكد من أنّ كلّ الأمور تجري على خير ما يرام (أنا لا أحاول الافتخار بالكذب هنا، ولكن لم أكن أعرف ماذا أقول لهم). ولكن بعد أن تجاوزنا الوقت المحدّد للبثّ المباشر، نفدت من عندنا الأعذار وبدأنا نخبر كل من يتّصل بنا من فريق الإدارة (في الواقع اتصل بنا عدد من الأشخاص الغاضبين كل بضع دقائق) أن عليه التحدث إلى الشخص الذي لم يجب على الهاتف في تلك اللحظة للحصول على آخر المستجدات (كنا أنا و Michael نقف في الغرفة نفسها ونتصبب عرقًا من شدة القلق والتوتر). في تلك اللحظة التي كنا فيها أنا و Michael في قمّة الرعب، دخل علينا مدير مكتبنا Arram (والذي أسّس فيما بعد ZeroCater) وقال عبارة لم أنسها من ذلك اليوم: “أيها الموظفون لا تزجوا بأنفسكم في مشاكل أخلاقية“. أتمنّى لو أنني أدركت حقيقة هذه الكلمات في تلك اللحظة وتمالكتُ نفسي وقدّمتُ مثالًا يحتذى به في الهدوء والثبات في المواقف الصعبة. ولكن بدلًا من ذلك، صرخت في وجهه قائلًا: “ما الذي تتحدّث عنه يا رجل؟” لأشعر بعدها بالأسى والندم على فعلتي هذه، فقد كنت قاب قوسين أو أدنى من تحقيق النجاح لشركتي الناشئة ولكنّي أرى بأمّ عيني كيف أنّ عملائي يبتعدون عنّي رويدًا رويدًا. تمكّن Kyle و Emmett من إعادة الموقع إلى العمل بعد فترة - أحسست أنها عقد من الزمان - وبدأ البث المباشر متأخرًا بـ 25 دقيقة أو أكثر. وكانت النتيجة أن فقدت Hollywood Records ثقتها فينا وأكملت بقية العروض الترويجية مع Ustream، ولكنّنا تمكّنا من تحقيق التوسّع لشركتنا الناشئة. فكرة سيّئة للغاية يدرك مؤسّسو المواقع الاجتماعية على شبكة الإنترنت وجود قاعدة ثابتة من الزوّار المنحرفين والذين يبحثون عن البذاءة في كل مكان، وكان هذا الأمر يتجلّى في Justin.tv بأن يتوجّه رجل إلى غرف الدردشة التي تتضمن امرأة تجلس أمام الكاميرا ليتفوّه بعدد من الكلمات النابية. وقد طوّرنا في موقعنا الإلكتروني أدوات للتحكم تتيح للناشرين حظر مثل هؤلاء الأشخاص عن المحادثة، ولكن، كما يفعل الإرهابيون، لم ينفكّ هؤلاء الأشخاص يجدون الطريقة تلو الأخرى: إنشاء حسابات جديدة، استخدام عناوين IP جديدة، وإيجاد طرق مختلفة للوصول إلى الموقع على الرغم من الجهود الحثيثة التي كنا نبذلها لمنعهم. ولم يقتصر هذا السلوك على المحادثات وحسب، ففي الواقع، يمكنني القول بأنّ أيّ حقل نصي يمكن أن يملأه المستخدم في موقعنا الإلكتروني قد أُدخلت فيه عبارات إباحيّة مختلفة. ولم يختلف الأمر كثيرًا بالنسبة لمحرّك البحث الخاص بموقعنا الإلكتروني، فقد كانت العبارت الإباحية تتصدر قائمة الكلمات الأكثر بحثًا على موقعنا. في أحد الأيام خطرت على بالي فكرة كنت أظنّ بأنّها فكرة ممتازة. كانت أدوات التحكم في موقعنا فعّالة جدًّا في حذف جميع الكلمات والمحتوى الإباحي من موقعنا الإلكتروني، ومع ذلك لم يتوقف الناس عن البحث عن هذه الكلمات. لذا فكّرت أنه لماذا لا نعيد توجيه أي شخص يبحث عن مثل هذه العبارات إلى أحد المواقع الإباحية، وبهذا نضرب عصفورين بحجر واحد، إذ يحصل المستخدم على المحتوى الذي يريده، ونبعده كذلك عن موقعنا الإلكتروني. بعد فترة خطرت لي فكرة أخرى بعد أن تبيّن لي أنّ المواقع الإباحية تحصل على عائدات جيدة من المستخدمين، إذ أن لهذه المواقع رسومًا مرتفعة للتسويق بالعمولة. فلماذا لا نضيف كود التسويق بالعمولة إلى نظام إعادة التوجيه لدينا لنرى إن كان بإمكاننا الحصول على بعض المال من هذه المواقع؟ كان بناء إعادة توجيه عملية البحث أمرًا سهلًا، وقد اعتمدناه ونسينا أمره لفترة طويلة، ولكن بعد عام تقريبًا تلقّينا رسالة إلكترونية من Jason Kincaid من TechCrunch يطلب فيها منا الحديث عن كيفية الحصول على الأموال من خلال إعادة توجيه المستخدمين إلى المواقع الإباحية. لم نعرف أنا و Michael (مؤسسو المشروع التجاري في ذلك الوقت) ماذا نجيب، فقد كنا نظنّ أنّنا لم نرتكب خطأً أخلاقياً ولكنّنا أدركنا أنّ عبارة “الحصول على الأموال من المواقع الإباحية” كانت سيئة للغاية. راسلنا Jason طالبين منه أن يمهلنا بضع ساعات لنردّ على رسالته، وفي تلك الأثناء أزلنا نظام إعادة التوجيه من الموقع الإلكتروني. ولكن Jason نشر الموضوع بعد 30 دقيقة في TechCrunch، وقبل أن نتمكّن حتى من التفكير في أي شيء نقوله. ما تعلّمته من هذه التجارب هو أنّه إن قمت بشيء تعتقد بأنّ الجمهور سيتفاعل معه على نحو سيء، فلا يمكنك التغاضي عنه أو تجاهله أو الاختباء منه، بل عليك معالجته فورًا وأن تتحمّل جميع العواقب. ترجمة - بتصرّف - للمقال Three stories لصاحبه Justin Kan. حقوق الصورة البارزة محفوظة لـ Freepik
  10. ما عليك إلا أن تخبر الآخرين بأنّك ستطلق مشروعك التجاري، لتتلقّى كمًّا هائلًا من التعليقات المثبّطة: في الواقع، هذه الأمور الشائعة ليست إلا هراءً. فعلى سبيل المثال، لنناقش نسبة الفشل (95%) المزعومة. تشير تقارير وزارة العمل الأمريكية إلى أن نسبة المشاريع التجارية التي تنتهي خلال 4 سنوات هي 24% فقط، و17% منها يكون سبب الإنهاء فيها هو الفشل أو الإفلاس، أما الغالبية العظمى منها فهي مشاريع تجارية انتهت إما بسبب بيع المشروع أو تقاعد صاحبه. لا شكّ في أن البدء بمشروع تجاري لا يخلو من المخاطرة، ولكن هذه الادعاءات تعني أنّ من يقوم بذلك شخص جاهل وطمّاع وأناني ومجنون إلى درجة أنّه يلقي بنفسه إلى الفشل. إن كنت تفكّر في البدء بمشروع تجاريّ جديد الآن، فعليك أن تدرّك المخاطر التي ستواجهك، وأعني بها المخاطر الحقيقية. والحقيقة -كالعادة- تقع بين هذه الادعاءات غير المستندة إلى أدلّة وبين مدوّنات الشركات الناشئة التي لا تظهر لقرّائها غير الطريق المفروش بالزهور. بدايةً يجب علينا تحديد معنى “المشروع التجاري”. أظهر إحصاء أجري سنة 2006 في الولايات المتحدة الأمريكية(1) أن نصف المشاريع التجارية في البلاد هي مصدر دخل ثانوي لأصحابها، وليست مصدر الدخل الرئيسي. كما أظهر الإحصاء أنّ ثلثي المشاريع التجارية قد بدأت من المنزل، وأن 21% فقط منها توظّف شخصًا آخر غير صاحب المشروع. وبعبارة أخرى، فإنّ معظم “المشاريع التجارية” هي مشاريع جانبية قد يطمح أصحابها أو لا يطمحون لتطويرها إلى شيء آخر. المشكلة ليست كون كل هذه المشاريع مشاريع جانبية، ولكن المشكلة هي أنّه لا علاقة لبيانات “المشاريع الجانبية” بالحديث عن اتخاذ الخطوة الأهمّ في حياتك “ترك وظيفتك”. أليست المشاريع الجانبية عرضة للفشل - بطبيعة الحال - أكثر من المشاريع التي تضع فيها كل طاقتك ووقتك وجهدك؟ نعم، هذا يعتمد على تعريفك لـ”الفشل”. فقد وجدت دراسة أسترالية(2) أن 64% من المشاريع التجارية يفشل خلال عشر سنوات إن كان تعريف “فشل المشروع التجاري” هو “عدم الاستمرار في امتلاك المشروع”. ولكن “الفشل” قد يعني أي شيء، مثل إهمال المشروع من قبل مؤسّسه - وهي الحالة الأكثر شيوعًا - خصوصًا عندما يكون مشروعًا بيتيًا ولا يُعدّ مصدر الدخل الرئيسي. ورد في الدراسة ذاتها، أنه لو كان تعريف “فشل المشروع التجاري” هو “الإفلاس” فإن نسبة المشاريع التجارية الفاشلة خلال عشر سنوات تنخفض إلى 5.3% فقط. بمعنى آخر، حتى عندما يبدو للعيان أن المشروع التجاري متوقفٌ عن العمل، فإن الإفلاس ليس أمرًا حتميًا. وماذا بشأن ساعات العمل الطويلة التي تسمع عنها؟ في الواقع، هذا صحيح، فكل من أعرفه من ذوي المهن الحرة (وأنا منهم) يعمل أكثر من الموظفين (باستثناء بعض المهن ذات الطبيعة الصارمة مثل الخدمات الطبية والقانونية والمحاسبية). إليك بعض الأرقام الموثوقة: يشير تقرير الحكومة الكندية إلى أن أصحاب المهن الحرة يعملون 5 ساعات أكثر من الموظفين في كل أسبوع. ولكن الحقيقة هنا هي أن 33% من أصحاب المهن الحرة يعملون أكثر من 50 ساعة مقارنة بـ 5% فقط من الموظفين. وماذا عن الحصول على الأموال؟ تشير دراسات الاتحاد الوطني للأعمال المستقلة NFIB إلى أن ثلث المشاريع التجارية يحقق أرباحًا، والثلث الآخر في حالة توازن بين النفقات والعائدات (نقطة تعادل break-even)، أما الثلث الأخير فيخسر الأموال. ممّا سبق يمكن أن نثبت بعض الحقائق: “فقدان المال” أمر سيء للغاية وأسوأ حتى من البقاء دون عمل، وتساوي النفقات والعائدات ليس أفضل بكثير. وهذا يعني أن البدء بمشروع تجاري ينطوي على مخاطرة حقيقية، ولأزيدك من الشعر بيتًا فإنّك لن تجني الأموال في أول 6 إلى 24 شهرًا، وهذا يعني أنّك بحاجة إلى امتلاك ما يكفي من الأموال لتتمكن من الصمود لفترة لا بأس بها، وأنّ عليك وضع قيود مالية على نفسك، لتترك المشروع متى ما تجاوزتها. ولكن، تذكّر أن نصف تلك المشاريع التجارية هي مشاريع جانبية، ومشاريع الهواة شائعة كثيرًا، ولا شيء يربط بين كون مشروع كصناعة عقود الخرز في الغرفة الخلفية لأحد الأشخاص يخسر الأموال وبين تفكيرك في تقديم خدمات استشارية. على كل حال، فإن السؤال الحقيقي هو: “ما هو مقدار المال الذي أتوقع الحصول عليه أو فقدانه من المشروع التجاري الذي سأبدأ به مقارنة بمشروعي الأفضل القادم؟” بالنسبة لمعظم الأشخاص فإن “الأفضل القادم” يعني العمل، ففي استبيان أجرته Gallup سنة 2006 حين تعرضت المشاريع الصغيرة للإغلاق بسبب ارتفاع أسعار الوقود، أعلن 80% تقريبًا من أصحاب المشاريع أنّهم يجنون أموالًا أكثر في الساعة، مقارنة بعملهم في شركات أخرى وفي نفس المجال. وهذه تعتبر أرباحًا وليست عائدات، حتى مع الساعات الإضافية التي تحتاجها المشاريع الصغيرة. إضافة إلى ذلك، فإن نصف أصحاب المشاريع هؤلاء يجنون أموالًا أكثر من خلال المشروع التجاري مقارنة بالعمل الاعتيادي، و76% منه قال بأنّ حالته المادية أفضل عموما. شمل الإحصاء الأمريكي أيضًا “مشاعر” روّاد الأعمال(4): في كل سنة ضمن الفترة الممتدة من عام 1990 و2004، كانت الشركات التي تضم ما لا يزيد عن 4 موظفين والشركات التي تضم أكثر من 500 موظف هي من يصرف أعلى الرواتب. لذا إن كنت لا تمانع في العمل لدى شركة كبيرة مترقبًا الوقت الذي سيتم تنحيتك فيه عن عملك، فمع راتب شهري سيكون هذا هو الرهان الأفضل، أما إن كنت لا ترى هذا جيدًا، فالشركات الصغيرة هي الخيار الأنسب. ولكن بقي لدينا موضوع الظروف الاقتصادية. لا أدري لماذا يعتقد الجميع أن إطلاق مشروع تجاري في ظروف اقتصادية صعبة يبدو أمرًا سيئًا؟ هل السبب هو الاعتقاد بأنّ لا أحد سينفق المال؟ هذا ليس مهمًّا على الإطلاق، إذ لن يكون لديك الكثير من العملاء في أول 6 إلى 12 شهرًا، والعملاء الذين تحصل عليهم في هذه الفترة هم أولئك المتلهّفون إلى منتجك بشدّة، وبما أنّهم متلهّفون للمنتج فلن تؤثّر الظروف الاقتصادية عليهم بتاتًا. في الواقع، من الأفضل أن تكون الحالة الاقتصادية سيّئة، إذ تمرّ جميع الشركات بظروف صعبة، وسيكون بميسورك الحصول على أثاث وإيجار وخدمات رخيصة مثل التصميم الفني وتصميم مواقع الإنترنت، فالأشخاص الجيدون عاطلون عن العمل، والأفضل من ذلك أنّك ستحصل على المساعدة التي تحتاج إليها وبنصف ثمنها أو ستعثر على مؤسس شريك قد فقد وظيفته مؤخّرًا. في Smart Bear مثلًا، وظّفنا مستشارًا في التصميم مقابل ثلث مرتّبه الاعتيادي. تخفّض شركات الإعلان أسعارها حتى دون أن أطلب ذلك منها. الإيجارات الفرعية منتشرة في كل مكان فالشركات تحاول تعويض إيجارها الممتد لسبع سنوات وقد سرّح بعضها نصف فريق العمل فيها، وهذا يعني أنّه الوقت المثالي للحصول على فريق العمل وبرواتب منخفضة. في نهاية المطاف، فإن المسألة مرتبطة بشعورك بالرضا والسعادة، وليس فقط بتحقيق النجاح المادي. ففي العمل العادي، تميل “السعادة” و”الأموال” إلى الارتباط بعلاقة عكسية، فمن الصعب أن تحصل عليهما معًا. يمكن تلخيص هذه الفكرة بشكل جيد من خلال تقييم Juhan Sonin لحياته الشخصية. يمكنك أن تكسر النمطية من خلال إدراة مشروعك التجاري بنفسك، فتجني الأموال وتقوم بما تحبّ القيام به، ولكن المشاريع التجارية الصغيرة مجهد وصعبة ومخيفة، فهل يستحق الأمر ذلك؟ سأجيبك من خلال الرسم البياني التالي من الاستبيان الذي أجرته Gallup (3): إن كانت صاحب مشروع تجاري صغير، فلا بأس أن تشجّع القرّاء ولو ببضع كلمات، فلكلمات التشجيع أثر كبير عندما يشعر المرء بالغلبة. المصادر: 1. استطلاع رأي لأصحاب المشاريع الصغيرة سنة 2006 البيانات. 2. John Watson و Jim E. Everett في مجلة إدارة المشاريع الصغيرة Journal of Small Business Management, أكتوبر سنة 1996. 3. خدمة Gallup الأخبارية، اقتراع Smart Business Index سنة 2006 عثرت عليه من خلال مدونة Corporateprenuer. 4. الملخص الإحصائي الأمريكي سنة 2008 الجدول 0737. البيانات بواسطة infochimps.org. ترجمة - بتصرّف - للمقال Starting a business isn’t as crazy and risky as they say لصاحبه Jason Cohen. حقوق الصورة البارزة محفوظة لـ Freepik
  11. يمكن لعالَم المبيعات أن يكون مربكًا وصعبًا، خصوصًا إن كنت تخطو خطواتك الأولى في مسيرتك المهنية. ويمكن للعمل في هذا المجال أن يكون مربحًا، ولكن تقع على عاتقك مسؤولية كبيرة لتحقيق الأهداف والأرقام المرجوة منك، وهذا يعني الكثير من الضغط والجهد، خصوصًا إن كنت تشعر بأنّك لا تجيد جميع المهارات المطلوبة في مجال المبيعات. فهل هناك خطّة تساعدك على زيادة خبرتك في هذا المجال؟ هناك خطّة بالتأكيد بحسب Kelly Roach، وهي مشجّعة سابقة في دوري كرة القدم الأمريكية NFL والتي تحوّلت فيما بعد إلى محترفة في مجال مبيعات المشاريع التجارية، وفيما يلي سنستعرض نصائح Kelly لتصبح مندوب مبيعات ناجحًا. 1. اعتمد المبادئ الصحيحة إن إدراكك بأنّ المبيعات حاضرة في كل شيء نقوم به هو أهم خطوة في طريقك لتكون مندوب مبيعات ناجحًا، فالمبيعات ليست في المنتجات والخِدْمات التي نشتريها وحسب، بل هي حاضرة في مجتمعاتنا وعلاقاتنا، إذ يمكنك أن تدعو الفنان المفضّل لديك بأنه مندوب مبيعات ذو أسلوب رائع أو أنه تاجر مشاعر إن صح التعبير، ذلك لأنك ترغب في شراء أغانيه أو رسوماته لتعيش نوعًا معينًا من المشاعر. ولكن الفارق بين الفنان وبين أغلب مندوبي المبيعات هو أن الأوّل يتّصف بالعبقرية والشغف تجاه ما يقوم به، ويفترض بمندوب المبيعات المتميّز أن يتّصف بهذه الصفات كذلك. لا يمكن لبائع زيت الأفاعي مثلًا أن يحقق أي نجاح يذكر في وقتنا الحالي لأنّ الناس أصبحوا يمتلكون نوعًا من المناعة تجاه الإعلانات ولن يقعوا في الأفخاخ التي كان آباؤنا وأجدادنا يقعون فيها. لهذا إن كنت تفكّر في أن تكون مندوب مبيعات ناجحًا، فعليك أن تربط مسيرتك المهنية بمنتج تؤمن بأنّه سيجلب الفائدة والنفع للناس، وكلما زاد شغفك تجاه المنتج التي تبيعه، زادت مبيعاتك بقدر ملحوظ. 2. كن دقيقًا بشأن الفوائد إن ما تبيعه في الواقع ليس هو المنتج أو الخِدْمة، بل أنت تبيع النتائج التي يمكن أن تقدمها للناس، فإن كنت تعتقد بأن منتجك يقدّم قيمة مرتفعة لعملائك، فستجد سهولة بالغة في أن تبين لهم وبدقّة كيف أن منتجك سيقدّم لهم القيمة التي يبحثون عنها. هناك أمر آخر لا يقلّ أهمّية عن هذا، وهو التفكير النقدي. مهما كان عرضك التقديمي جيّدًا فإنه لن يكون قادرًا على تغطية جميع السيناريوهات المحتملة، لذا عليك أن تتعرّف على حاجات عملائك وأن تعدّل عرضك التقديمي حسب ذلك. استمع إلى عملائك، وكن مبدعًا، وفكّر خارج الصندوق، قد يكون الأمر صعبًا ولن يخلو من التحدّي ولكنّه سيكون فعّالًا للغاية. 3. تحلَّ بالانضباط في أغلب الأحيان، يتجوّل مندبو المبيعات لمقابلة عملائهم دون أن يكون مديرهم في العمل رقيبًا عليهم طوال اليوم، ولكن بما أنهم مطالبون بتحقيق أهدافهم، فمن المستحيل تحقيق النجاح دون أن يتحلّى مندوب المبيعات بالانضباط والالتزام. صحيح أنّه يمكن لجدول أعمالك أن يكون مرنًا وأن عليك التكيّف مع المستجدّات، ولكن يجدر بك أن تطور في نفسك روح الانضباط. فحتى لو كان لديك الكثير من العمل والكثير من الأهداف التي يجب عليك تحقيقها، يجب عليك أن تكون قادرًا على التركيز على مهامك حتى مع وجود المشتّتات. 4. احتفل بأخطائك يستحيل أن تخلو الحياة والمسيرة المهينة من الأخطاء؛ لذا من الجيد أن تتحلّى بالصبر والقوة لئلّا تقع فريسة الأخطاء التي ترتكبها، بل عليك أن تزداد عزيمة وقوّة وتقف على قدميك من جديد. لو فكّرت في الأمر قليلًا فسترى أنّك في حال لم ترتكب الأخطاء فهذا يعني أنّك لا تجرب خططًا وأساليب جديدة مع العملاء، وبفضل الإخفاق فإنّك تكتسب خبرة إضافية وتتعلّم أمورًا جديدة، وبالتالي ستصبح خبيرًا في مجال عملك. 5. تحلَّ بروح المنافسة يتحلّى مندوبو المبيعات الناجحون بروح المنافسة، إذ يفرضون على أنفسهم معايير صارمة للغاية ويجتهدون ليكونوا الأفضل في شركاتهم، أو بين خبراء المبيعات. ويمكنك أن تبرُز بين أقرانك ومنافسيك من خلال زيادة نشاطك. صحيح أن الكثير من روّاد الأعمال يرغبون في أن تجري الأمور بسلاسلة ودون ارتكاب الأخطاء، ولكن الواقع يقول إنّك لو كنت ترغب في التغلّب على منافسيك فعليك أن تكون مبادرًا وأن لا تخاف الوقوع في الأخطاء. تلعب وتيرة الشراء الدور الأكبر في توجيه المبيعات وتقديم النتائج، إذ يميل الناس إلى الشراء من واحد من آخر ثلاثة أشخاص تعاملوا معهم، وأهمّ شيء في كونك تتحلّى بروح المنافسة هو أن لا تنزعج من الوقوع في الأخطاء. كيف تصبح مندوب مبيعات ناجحًا يواجه مندوب المبيعات صعوبات كثيرة، ويعتمد ذلك على الشركة التي يعمل معها، والمنتج الذي يبيعه، والخبرة والمهارات الذاتية. ومن الجيد أن يركّز مندوب المبيعات على عمله وأن يتحلّى بشخصية جذابّة وانضباط عالٍ منذ البداية، مع أنّ هذه الصفات يمكن اكتسابها مع الوقت. على سبيل المثال، تقول Kelly Roach (وهي مدرّبة ومتحدّثة ناجحة) بأنّها إنسانة انطوائية، فهي هادئة جدًّا وتحب الاستماع إلى الآخرين، ولكنّها في الوقت نفسه مندوبة مبيعاتٍ ناجحة جدًّا، لأنّها تسعى جاهدة لأن تصبح الإنسانة التي تطمح إليها. لذا، ما يميز العمل في مجال المبيعات هو أنّك لست مضطرًّا لأن تمتاز بالصفات المطلوبة لهذا العمل منذ نعومة أظفارك، فما دمت تحبّ عملك ولا تتوقف عن تعلّم أشياء جديدة وتسعى إلى تطوير نفسك، فالنجاح حليفك لا محالة. ترجمة - وبتصرّف - للمقال 5 Tips from Kelly Roach on How to Be a Successful Salesperson لصاحبته Justyna Polaczyk. حقوق الصورة البارزة محفوظة لـ Freepik
  12. يمكن القول بأن المقاييس الزائفة هي بمثابة عباءة الاختفاء المثالية. يطرح عليك مديرك في العمل السؤال التالي: “كيف تجري الأمور؟” فتجيبه: “كل شيء جيّد، فموقعنا الإلكتروني حظي بآلاف الزيارات في الشهر الفائت”. فيستفسر المدير قائلًا: “وهل يعجبهم ما يرونه في الموقع؟” فتردّ عليه قائلًا: “بالتأكيد يعجبهم، فكل واحد منهم يقضي قرابة 3 دقائق في الموقع الإلكتروني و56% منهم يعود إليه مرة أخرى في وقت لاحق”. أنت هنا تستخدم عباءة الإخفاء لتغطي على كونك لا تملك أدنى فكرة عمّا تتحدث عنه، فقد دفعت مديرك إلى الشعور بالراحة تجاه الأرقام، ولكنّك أخفيت احتمالية عدم وجود أية خطة لاتخاذ أية إجراءات إضافية. لنتعلم معًا كيفية تجنّب هذه الحالة، وأن تقول لا لجميع المقاييس الزائفة وعديمة الفائدة، ولكن قبل ذلك يجب علينا أن نتعرف أولًا على المقاييس الزائفة. تعريف المقاييس الزائفة باختصار، هي تلك المقاييس التي قد تبدو جيدة، ولكنّها لا تساعد بالضرورة على اتخاذ قرارات صحيحة بخصوص المشروع التجاري. إليك بعض الأمثلة: عدد الزيارات في موقعك الإلكتروني، معدل مدّة الزيارة، معدل الارتداد، عدد المشتركين أو عدد مرات التحميل. هناك طريقة جيّدة لتعرف ما إذا كان مقياس معيّن زائفًا أم لا، وذلك من خلال اختبار المستثمر. ألق نظرة على المقياس ثم اسأل نفسك: إن أخبرت مستثمرًا حول نتائج هذا المقياس، هل سيكون بمقدوره تقدير ما إذا كان المشروع يستحق أن يضع أمواله فيه أم لا؟ على سبيل المثال، إن أخبرت المستثمر بأن لعبتك الإلكترونية على الإنترنت قد نُزِّلت 10 آلاف مرة، فإنه لن يستطيع إخبارك ما إذا كان الاستثمار في هذه اللعبة مجديًا أم لا. ولكن إن أخبرت المستثمر بعدد المستخدمين النشطين لديك، وبمقدار تفاعلهم ومقدار الأرباح التي تجنيها، فسيكون حينها قادرًا على اتخاذ القرار المناسب. المقاييس الزائفة والمقاييس المؤثّرة الفارق الرئيسي بين المقاييس الزائفة والمقاييس المؤثرة هو أن النوع الأول يبدو جيدًا على الورق وقد يُشعر الإنسانَ العادي بالرضا تجاهها، أما النوع الثاني فسيعمل على إقناعك باتخاذ خطوات وقرارات مؤثّرة. ولكن ما معنى هذا؟ مثلًا، إن كان هدفك هو زيادة إيراداتك فعليك التركيز على إحدى الاستراتيجيات التالية: زيادة عدد العملاء. زيادة حجم معدل التعاملات التجارية. زيادة وتيرة التعاملات التجارية لكل عميل. رفع الأسعار. لنتخيل الآن أنك تتابع أحد المقاييس الزائفة وليكن مثلًا عدد مشاهدات الصفحة. لقد لاحظت أن عدد المشاهدات قد ارتفع بمقدار 30 ألف مشاهدة منذ بداية السنة وأن قاعدة العملاء لديك قد توسعت قليلًا. هل تقدّم لك هذه المعلومات أدنى فكرة حول ما يجب عليك القيام به؟ بالتأكيد لا. بدلًا من ذلك عليك التركيز على هذه المقاييس المؤثرة والمعبّرة: عدد العملاء المهتمّين leads (شهريًا/فصليًا/سنويًا). مجموع العائدات (شهريًا، فصليًا، سنويًا). معدل التحويل. صافي الأرباح. قيمة الطلب. قيمة دورة حياة العميل. عدد التعاملات التجارية. ما يميز هذه المقاييس عن المقاييس الزائفة هو أنّه في كل مرة تلاحظ فيها انخفاض قيمة هذه المقاييس، ستدرك أنّ عليك التصرف بسرعة لتجنب الوقوع في الإفلاس. تحليلات Google، المتهم المذنب بالرغم من أن تحليلات Google هي أداة ممتازة لجمع المعلومات، غالبًا ما يتم استخدامها بصورة غير صحيحة، إذ ينظر مستخدمو هذه الأداة إلى التقارير التي يحصلون عليها وهي متخمة بالكثير والكثير من المعلومات، فيختارون أفضل المقاييس من بينها ويعتمدون عليها بالكامل. ولكن هذا الأسلوب يساهم في تكوين رؤية غير واقعية تمامًا حول المشروع التجاري وتجعل من المستحيل إيجاد أي طريقة لتطويره وتحسينه. إن كنت لا ترغب في الوقوع في فخ المقاييس الزائفة، فإليك بعض المرشحات Filters التي يجب عليك استخدامها في تحليلات Google لموقعك الإلكتروني: استبعد عنوان IP الداخلي (لن تصدق مقدار تدفق الزوار القادم من عنوان IP الخاص بك). تعقُّب التجارة الإلكترونية (لتعرف من أين يأتي عملاؤك الأكثر قيمة). الأهداف (مثل التحويلات). البحث في الموقع (بفضل هذا المرشح ستعرف الأمور التي يبحث عنها عملاؤك في موقعك الإلكتروني). الحملات (تتيح لك قياس العائد على الاستثمار لحملاتك التسويقية). ولكن الحقيقة هي أن لكل هدف تسعى إليه يجب عليك مراقبك مقاييس الاختلاف. فعلى سبيل المثال، سأطلعك على الأهداف الثلاثة الأكثر أهمية بالنسبة إلى شركتنا: إرضاء عملائنا ومساعدتهم على تحقيق أهدافهم باستخدام الأدوات التي نقدمها إليهم. مشاركة خبرتنا وتجربتنا ليتمكن عملائنا من تحقيق الربح وليصبحوا خبراء بدورهم. الحصول على مدخول جيد يتيح لنا القيام بما نحب. هذا يعني أن علينا التركيز على جميع المقاييس المرتبطة بالعملاء مثل: مقياس رضا العملاء، (مثل: الرضا عن المحادثة، الرضا عن معالجة التذاكر، معدلات خدمة العملاء). التسويق بالمحتوى، (مثل: التفاعل، تدفق الزوار، مساهمة العملاء المهتمين leads، معدل النقرات CTR). أهمّ إحصاءات العائدات. لا تسمح للمقاييس الزائفة بأن تخدعك صحيح أن متابعة المقاييس أمر ضرروي لنمو المشروع التجاري وازدهاره، ولكن بعضها قد يتسبب في القضاء على مشروعك التجاري نهائيًا، إذ قد تقع في فخ الاعتقاد بأن مشروعك التجاري يبلي بلاءً حسنًا في حين أن عليك التركيز على تطوير خططك المستقبلية. لهذا في كل مرة تتابع فيها مقياسًا معيّنًا، فإن أفضل وسيلة للتحقق من كونه مفيدًا لمشروعك التجاري أم لا هي طرح الأسئلة التالية: هل سيساعدني على تحقيق المزيد من العائدات؟ هل سيساعدني في الحصول على المزيد من العملاء؟ هل يفسر هذا المقياس سبب زيارة العملاء لموقعي الإلكتروني؟ وبهذا، ستتعرّف على المقاييس المفيدة لمشروعك التجاري، ولن تسمح للأرقام بأن تخدعك مرة أخرى. ترجمة - وبتصرّف - للمقال How Vanity Metrics Gamble with Your Business لصاحبته Justyna Polaczyk. حقوق الصورة البارزة محفوظة لـ Freepik
  13. كاتب هذا المقال هو مصمّم ورائد أعمال تمكّن مؤخّرًا من بيع آلاف النسخ من كتابه الإلكتروني الذي يبيّن من خلاله كيفية تصميم واجهة المستخدم خطوة بخطوة. عمل مع الكثير من الشركات الناشئة وهو كذلك مؤسس Folyo، وهي خدمة تساعد الشركات على إيجاد أفضل وأبرع المصممين المستقلّين. يوضح Sacha في هذا المقال كيف أن التسعير المناسب لكتابه الإلكتروني كان من أهم أسباب النجاح الكبير الذي حقّقه. لامني والدي منذ مدّة على شراء خبزٍ أسمر رخيص الثمن، وصادف حينئذٍ وجود خبز دنماركي مستورد في خزانة المؤن بمنزلنا، فتحدّيت والدي في أن يجري اختبار تذوق لكلا النوعين وهو معصوب العينين، فكانت النتيجة كما توقعت تمامًا، إذ لم يتمكن والدي من التمييز بين نوعي الخبز، على الرغم من أن سعر أحدهما كان ضعف سعر الآخر. يعتقد أغلب الناس أن تفاوت الأسعار هو النتيجة الطبيعية لقيمة السلعة، ويحرص المسوّقون في كل مكان على ترسيخ هذا المعتقد وضمان ديمومته بين الناس، ولكن يدرك علماء النفس بأن للأسعار تأثيرًا أكبر من ذلك، إذ يمكن للتسعير الصحيح أن يساهم بقدر كبير في القيمة الملموسة للمنتج، بل قد يتجاوز الأمر إلى تحديد قيمته بالكامل (هل سمعت بقصة الماس من قبل؟). لطالما كنت منبهرًا بالقوة التي يتمتع بها التسعير، وكثيرًا ما أسمع عن قصص النجاح المرتبطة بالتسعير مثل صائغة تضاعفت مبيعاتها بعد أن رفعت الأسعار ثلاثة أضعاف. وعندما كتبت مؤخرًا كتابي الذي أبيّن فيه للناس كيفية تصميم واجهات المستخدم أدركت مدى أهمية اختيار السعر المناسب في تسويق الكتاب. ولكن لماذا أبيع الكتاب أصلًا؟ ألا تكفي السمعة والشهرة الواسعة ومشتركو الـ RSS؟ إلى جانب الإجابة البديهية والمعروفة عن هذا السؤال (الحصول على الأموال) فإني أعتقد بأن شبكة الإنترنت قد أصبحت متخمة بالأمور المجانية، فأنا شخصيًا أحمّل العشرات والعشرات من الخطوط والأيقونات والكتب ومقاطع الفيديو المجّانية كل أسبوع دون الاستفادة منها بسبب ضيق الوقت. لهذا، توخّيت من تسعير كتابي الإلكتروني أمرين اثنين: أولًا: كنت أخبر الناس بأن محتوى هذا الكتاب أفضل من المحتوى المتوفّر مجّانًا. ثانيًا: زيادة احتمالية قراءة الكتاب بعد تحميله، وذلك لأنّ المستخدم قد دفع مقدارًا لا بأس به من المال لشراءه (وبهذا أكون قد استفدت من مغالطة التكلفة الغارقة Sunk cost). كانت الخطوة الأولى إجراء بعض الأبحاث السوقية الأساسية لمعرفة مدى رغبة الناس في دفع المال، وقد طرحت السؤال على Twitter، وحصلت على إجابات تتراوح فيها الأسعار بين 5 و 10 دولارات. إضافة إلى ذلك، قمت بالاطلاع على بعض الأسئلة الموجودة في Quora، وطرحت هذا السؤال أيضًا: (أيهما أفضل أن تبدأ بسعر منخفض ثم ترفعه تدريجيًا، أم تبدأ بسعر مرتفع ثم تخّفضه تدريجيًا). (ملخص الإجابات: يعتمد الأمر على عدة عوامل). لاحظت كذلك أنّه بسبب متجر التطبيقات الخاص بشركة Apple، فإن الناس قد تعودوا على دفع مبالغ قليلة جدًّا (أقلّ من ثمن فنجان القهوة)، ولكنّي أدركت أيضًا أنّ أي شيء يفوق ثمنه الـ 10 دولارات سيؤدي إلى إطلاق عدد من الميكانيكيات النفسية المختلفة (سأتحدّث عن إثبات هذه النظرية ودحضها بعد قليل). ولما كان هدفي هو الوصول إلى أعلى عدد ممكن من المبيعات وذلك للحصول على جمهور من القراء والتمهيد لمزيد من الكتب مستقبلًا، فقد قرّرت الاستقرار في التسعير ضمن مدى 1 إلى 10 دولارات. بعد أن اتخذت قراري تقريبًا بشأن السعر، كانت الخطوة التالية هي التركيز على تقسيم السوق market segmentation. ولتبسيط الأمور، فإنّ تقسيم السوق يعني أن تطلب من كل شخص أن يدفع السعر الذي يرغب هو في دفعه، وهذا ما يحدث بالضبط عندما تساوم على بضاعة ما في أحد متاجر بكين أو أحد أسواق القدس، إذ يعرض عليك البائع في بداية الأمر سعرًا مرتفعًا للغاية، ولكن لا تتمّ عملية البيع إلا عندما تنجح في إقناع البائع بأن يبيعك البضاعة مقابل أعلى سعر يمكنك دفعه (وبالتالي زيادة أرباحه). وبما أنّ معرفة المقدار الذي يرغب الطرف المقابل في دفعه أكثر صعوبة على شبكة الإنترنت، فعليك ببساطة أن تقدّم نقاط تسعير مختلفة ثم تتيح للناس أن يختاروا بأنفسهم ما يلائم احتياجاتهم. أنا لا أعني هنا بأن تقدم البضاعة ذاتها بسعرين مختلفين، لذا تظهر الحاجة إلى إضافة مزايا إضافية؛ وفي حالتي، قرّرت أن النسخة الممتازة من كتابي الإلكتروني ستتضمن ملفات الفوتوشوب الأصلية. أما آخر أسلوب اتبعته في التسعير كان التسعير الابتدائي المنخفض، وأدى ذلك إلى أمرين: أولًا، ازدياد عدد الأشخاص الذين اشتروا المنتج في المراحل المبكرة، الأمر الذي ساهم في جعل حدث إطلاق الكتاب أكبر وأوسع، ثانيًا: سيساعد على الوصول إلى الكتلة الحرجة (كلما زاد عدد الأشخاص الذين أقدموا على شراء الكتاب، ازداد عدد الأشخاص الذين سيشترون الكتاب في المستقبل، وهو المفهوم المعروف بالدليل الاجتماعي Social proof. إضافة إلى أنّ هذا الأسلوب يعدّ بمثابة مكافأة للمتبنّين الأوائل أعني بهم أولئك الذين جازفوا بأموالهم وأقدموا على شراء الكتاب ليعرفوا ما إذا كان يستحق القراءة أم لا، وهم أولئك الأشخاص الذين يتابعون من كثب، والذين يهتمّون بك كثيرا. هؤلاء الأشخاص مميّزون بالفعل، ويجب أن تعاملهم بتميّز أيضًا. فلنراجع إذن ضوابط التسعير الخاصة بنا: يجب أن تكون هناك نقطتان للتسعير. يجب أن تكون الأسعار مرتفعة بما يكفي لتقديم حسومات أولية. يجب أن يكون السعر ضمن المدى 1 إلى 10 دولارات. والآن مع وجود هذه الضوابط يصبح الأمر واضحًا جدًّا، ولن تجد نفسك أمام الكثير من الخيارات، وتبعًا لذلك فقد وضعت الأسعار التالية لكتابي الإلكتروني: النسخة الاعتيادية: بسعر 5.99 دولار يمكن تخفيضها إلى 2.99$. النسخة الممتازة: بسعر 12.99 دولار يمكن تخفيضها إلى $5.99. يمكنك أن تلاحظ بأنّ سعر النسخة الممتازة هو ضعف سعر النسخة الاعتيادية، وأنّ نسبة التخفيض هي 50% الأمر الذي يجعل الحسابات سهلة. لا بدّ أنك تتساءل الآن عن مدى نجاح هذه الخطة؟ في الواقع كان النجاح مذهلًا. أرسلت صفحة الهبوط الخاصة بالكتاب الإلكتروني إلى موقع Hacker News وسرعان ما حصلت على تقييمات مرتفعة، وجمعت ما يزيد عن 300 صوت، حتى أنّها وصلت إلى المرتبة الثانية في الصفحة الرئيسية لمدّة من الزمن. وكانت نتيجة هذا التدفق الهائل للزوّار على الموقع (22,000 زائر في يوم واحد) الحصول على مبيعات رائعة: ففي أول 48 ساعة، بعت الكتاب 1,476 مرة، وبمجموع عائدات يقدّر بـ 6,663$. وهكذا، يبدو أن خطة التسعير التي اتبعتها كانت مثمرة للغاية، ولكن ما هو السبب الحقيقي وراء هذا النجاح؟ لو اطلعنا على بعض التعليقات في موقع Hacker News فسنتعرف على السبب: أريد أن أقول فقط بأن 2.99 دولار كانت نقطة تسعير ممتازة جدًّا كحافز للشراء، ومع زيادة ملفات PSD فلا مجال للتردد مع 5.99. بالنسبة لي كان نموذج التسعير مثاليًا لمثل هذه الأشياء. فلا مشكلة لدي على الإطلاق في دفع هذا المبلغ. أما بالنسبة لدفع 5.99 مقابل الحصول على ميزات إضافية، فأنا بالفعل سأدفع 2.99 وليس الفارق كبيرًا بين السعرين، ولا يشكل عائقًا أمام الحصول على الميزات الإضافية. لقد أحببت طريقة ترتيب الأمور هنا، ونموذج التسعير كان مثاليًا للغاية. يمكنك أن تأخذ أموالي. يمكننا أن نلاحظ أن هناك عاملين يلعبان دورًا مهمًا في الموضوع: أولًا: نقطة التسعير الأولى والمنخفضة 2.99$ كانت منخفضة بما يكفي لتوليد حافز بالشراء لدى الناس دون أن تطلق ميكانيكيات مقاومة الإنفاق لديهم. ثانيًا: نقطة التسعير الثانية كانت مقاربة بما يكفي للنقطة الأولى الأمر الذي ولّد لدى الناس الشعور بأنّهم قادرون على الحصول على نسخة أفضل من الكتاب الإلكتروني، ما داموا سيشترون الكتاب في جميع الأحوال. وقد كانت الإحصائيات مطابقة للتوقعات: فعلى عكس ما كنت أتوقع، كانت مبيعات النسخة الممتازة هي الأعلى (758 نسخة ممتازة مقابل 718 نسخة اعتيادية). في عالم التسويق، يطلق على هذا الأسلوب اسم (إرساء الأسعار price anchoring)، إذ غالبًا ما يُقْدِم المسوّقون على وضع أسعار مرتفعة للخيارات الممتازة لتبدو الخيارات العادية جذّابة أكثر إذا ما قورنت بها (على سبيل المثال: خطط التسعير التي تتضمن خطة الشركات بسعر 1000 دولار شهريًا، مقابل 10 دولار شهريًا لخطة المستهلكين الاعتيادية). ولكن في حالتنا هذه، حدث العكس تمامًا، فقد ساهم تقارب نقطتي التسعير في أن تبدو النقطة العليا كحسم في السعر. إذًا يمكننا أن نخرج بنظرية التسعير التالية: إن كان السعران متباعدين للغاية، فإن السعر المنخفض سيكون جذّابًا أكثر، ولكن إن كان السعران متقاربين جدًّا، فإن السعر الأعلى سيكون الخيار الأفضل. إنه لمن الصعب بكل تأكيد أن أخبرك عن الدور الحقيقي الذي لعبه التسعير في نجاح الكتاب، ومن المؤكّد كذلك أنّه كان بإمكاني الحصول على المزيد من الأموال لو كان سعر الكتاب 0.99 أو حتى 49.99 دولار. ولكن على كل حال، فإني راضٍ جدًّا عن المبيعات التي حقّقتها وعن التغذية الراجعة التي حصلت عليها، وسأقاوم الرغبة الملحة في طرح السؤال (ماذا لو؟)، إذ يمكنني الإجابة عن هذا السؤال بتأليف كتاب آخر. أتمنى أن تتريّث قليلًا وتلقي نظرة فاحصة على الأسعار المعروضة أمامك عندما ترغب في الاشتراك بخطة شهرية لبرنامج معين أو عندما تتسوق من محل البقالة، فمن يدري، قد تكتشف الأسباب الخفية وراء هذه الأرقام. ترجمة - وبتصرّف - للمقال How Perfect Pricing got me 1500 Sales in 2 Days لصاحبه Jason Cohen. حقوق الصورة البارزة محفوظة لـ Freepik
  14. من المؤكّد بأنّ توضيح التفاصيل التقنية المعقّدة للعملاء الذي لا يمتلكون خلفية تقنية يعدّ أمرًا صعبًا، ومن المحتمل أن يصاب كلا الطرفين بخيبة الأمل نتيجة سوء فهم لتعليق واحد فقط؛ لهذا فإن من الضروري أن تجري الأمور على النحو الصحيح في كل الأوقات. تضمُّ شركتنا عددًا من المطوّرين من جهة وتتعامل مع العملاء من جهة أخرى، وبوصفي مديرة لفريق دعم العملاء، فمكاني بالضبط هو بين هاتين الفئتين، وعادة ما أشبه الأمر بأنّني أبدو كواجهة برمجية API تتوسط المطورين والعملاء. ولكن لا يعرف معظم الناس معنى الواجهة البرمجية. صحيح أنّني أمتلك خلفية تقنية ممتازة، ولكن كيف أوضح هذا الأمر لشخص لا يمتلك أي خلفية تقنية على الإطلاق؟ كيف يفترض بك أن تتعامل مع مثل هؤلاء الأشخاص؟ هنالك فارق كبير بين أن تكون ملمًّا بشيءٍ ما وأن تكون قادرًا على توضيحه لشخص آخر. وبما أنّي أؤدي وظيفة توضيح الأمور بصورة يومية خلال السنوات القليلة الماضية، فقد وضعت أربع نصائح مهمّة تساعدك على التحدّث عن المواضيع التقنية مع الأشخاص الذين لا يمتلكون الخبرة اللازمة. لا تضع أي افتراضات مسبّقة يمكن للافتراضات المسبّقة أن تؤدي بك إلى أمور لا تحمد عقباها، فعندما تتحدّث إلى عملائك يجب أن لا تفترض بأنّهم يعرفون كل شيء وأنّ عبقريتهم توازي عبقرية آينشتاين، وبالمقابل، يجب أن لا تفترض أنّهم لا يفقهون شيئًا على الإطلاق. عندما تتلقى طلبًا من أحد العملاء فإنّك لا تملك أي معلومات عن ذلك العميل، وهنا يمكنك الاستفادة من برنامج يقدّم إليك عددًا من المعلومات الخاصة بالعميل إضافة إلى الطلب. فمثلًا، إن تمكنت من معرفة وظيفة العميل والمدة التي قضاها في استخدام المنتج، ومقدار ما يدفعه لك مقابل الحصول على المنتج، فستساعدك هذه المعلومات على معرفة الأسلوب الأفضل في التواصل مع ذلك العميل. كذلك إن كان بمقدورك الاطلاع على المحادثات السابقة فسيجنّبك هذا الأمر التقليل من الافتراضات المسبّقة تجاه العميل. اللغة في غاية الأهمية إن كانت هذه هي الصورة البارزة لهذا المقال، فسيظن معظم الناس بأنّهم غير معنيون بمحتواه. في الواقع يمكن أن يتسبب استخدام الكلمات الخاطئة في نفور الناس، ولو أرسلت إلى العميل ردًّا يتضمن كلمات غير مفهومة أو غير مناسبة، فإنه سيتجاهل الرد بأكمله، مهما كانت المعلومات المقدّمة في الردّ مفيدة بالنسبة إليه. من هنا، يجب أن يكون هناك توازن بين الوضوح والاختصار في الرد الذي ترسله إلى العميل. فإن كنت تتحدث مع العميل مثلًا حول مشكلة في قاعدة البيانات التابعة له، فبمقدورك أن تقدّم إليه بيانات أداة قياس الأداء أو أن تتحدّث معه عن سرعة تحميل موقعه الإلكتروني. يمكنك أن تلاحظ هنا أنّه وعلى الرغم من أنّك تشير إلى الأمر ذاته، فإنّ الأسلوبين سيبدوان مختلفين تمامًا بالنسبة إلى العميل. القدرة على توضيح الأمور بطرق متعددة هل مررت من قبل بهذا الموقف عندما تلعب لعبة تخمين الكلمة من خلال الرسم؟ يرسم صاحبك هذا الشكل: فلا تعرف ما الذي يقصده بهذا الرسم، فتسأله هل الكلمة هي “طائر”؟ فيرسم هذا الشكل: فتجيبه بسرعة “طائر مقلوب”؟ فيرسم الشكل التالي مرة أخرى: تحدّق فيه مليًّا، فيمزّق الورقة ويبدأ الرسم من جديد على ورقة بيضاء: ولكنّك ترفض إكمال اللعبة لأنّ صاحبك لا يجيدها على الإطلاق. من المؤكّد بأنّك لا ترغب في أن يشعر عملاؤك بهذا الشعور؛ لذا من المهمّ جدًّا أن تكون قادرًا على توضيح الأمور بأكثر من طريقة وأسلوب. يجب أن تكون قادرًا على تقديم الإجابات بصيغ متعددة وفي مواضع مختلفة، كأن تكون على هيئة قائمة مرقّمة، أو رسائل إلكترونية تتضمن صورًا ثابتة أو متحركة gifs، أو اتصالًا هاتفيًا، أو توجيه العميل إلى التوثيقات، ويختلف الأسلوب المتّبع باختلاف الأشخاص الذين تتعامل معهم. فكّر كما يفكّر العميل عندما يطرح عليك العميل سؤالًا مثل: “كيف أهيئ رسالة إلكترونية جديدة لعميلي؟” يجب عليك أن تدرك بأن هذا السؤال يندرج ضمن سلسلة من الأسئلة، إذ سيتبعه سؤال مثل: “هل يمكنني استخدام السمة أو القالب الخاص بي؟”، “هل يمكنني تغيير عنوان المرسِل؟”، “كيف سأرى نتائجي؟” وغيرها الكثير من الأسئلة؛ لذا عندما تجيب على أول سؤال للعميل لا تجعل جوابك محددًا بالسؤال، بل يجب أن تتضمن إجابتك بعض المعلومات التي تساعد في الإجابة عن الأسئلة اللاحقة التي ستطُرح من غير شك. اعمل جاهدًا على أن تتخلص من جميع الافتراضات المسبقة، وأن تفهم جيّدًا الموضوع الذي يسأل عنه العميل، وقدّم إجابات تكون مفهومة من قبل العملاء، ومن المستحسن أن تكون متهيّئًا بشكل جيد لمساعدة عملائك على تحقيق النجاح مع المنتج الذي تقدّمه إليهم. ترجمة - وبتصرّف - للمقال Talking tech with non tech people لصاحبته Sabrina Gordon. حقوق الصورة البارزة محفوظة لـ Freepik
  15. في العالم المثالي، لا حاجة لأن تكون استبيانات الموظفين مجهولة الاسم، ولكن لسوء الحظ لا تتيح معظم الشركات الحرية الكاملة لموظفيها للتعبير عن آرائهم، لذا فإن عدم الإفصاح عن الأسماء يعدّ أمرًا ضروريًا. يسعني القول بأنّ أكبر سبب لعدم الاستجابة بشكل جيد للاستبيان أو تقديم معلومات غير دقيقة فيه، هو القلق الذي ينتاب الأشخاص حول مدى مجهولية الاستبيان الذي يُقدِمون على اﻹجابة عنه؛ فعلى سبيل المثال، إن كنتُ غير واثق بأن المعلومات التي سأدلي بها في الاستبيان ستكون مجهولة المصدر، فهناك فرصة كبيرة لأنْ أدلي بمعلومات مبالغ فيها بشأن رئيسي في العمل، أو قد لا أجيب على الاستبيان من أساسه. يمكن لاستبيانات الموظفين مجهولة الاسم أن تساعد على إزالة عقبة الخوف عن طريق الموظفين، وأن يكونوا أكثر انفتاحًا وصدقًا في الإجابة عن الأسئلة المطروحة في الاستبيان. لنطّلع معًا على بعض الفوائد المترتّبة على مجهولية الاستبيانات، ثم لتوضيح الأمر بصورة أكبر، سأقدم مثالًا عن الآلية التي نتبعها في Officevibe للقيام بذلك. فوائد الاستبيانات مجهولة الاسم إن من أكبر الفوائد المترتّبة على كون استبيانات الموظفين مجهولة الاسم هو دفع الموظفين إلى التعبير عن آرائهم وعن الأمور التي تثير قلقهم، فكون الاستبيان مجهول الاسم يعني أن الموظفين مطمئنون إلى أنّهم لن يقعوا في المشاكل وأنّ لديهم متّسعًا من الحرية للإفصاح عمّا يجول في خاطرهم. ولكن لا يخلو الأمر من المشاكل، ففي الاستبيانات مجهولة الاسم لا يمكنك معرفة الشخص الذي طرح المشكلة، وكل ما يسعك القيام به هو التركيز على التغذية الراجعة Feedback التي حصلت عليها من الاستبيان، وبطبيعة الحال، فإن معرفة هويّة الشخص الذي طرح مشكلة معيّنة أقلّ أهمية بكثير من إيجاد حلّ مناسب لتلك المشكلة. في بعض الأحيان، يكون من الضروري متابعة المشكلة، وهناك عدة طرق للقيام بذلك مع المحافظة على المجهولية (سنتحدث عن هذا بعد قليل)، ولكن إليك بعض الفوائد التي ستجنيها من كون الاستبيان مجهول الاسم. 1. تغذية راجعة صادقة من أعظم فوائد كون الاستبيان مجهول الاسم هو أن الموظفين سيكونون أكثر انفتاحًا وأمانة في التعبير عن آرائهم. فعدم الإفصاح عن هوية الموظف سيمنحه الشعور بالأمان من الناحية النفسية، اﻷمر الذي سيدفعه إلى الحديث عمّا يزعجه دون خوف أو قلق، والعكس بالعكس، فالخوف من عدم مجهولية الأسماء يدفع الموظفين إلى الشعور بالخوف من الوقوع في المشاكل. 2. شعور الموظفين بأن صوتهم مسموع عندما تقدّم إلى موظفيك استبيانًا مجهول الاسم، فأنت تُشعرهم بذلك أن صوتهم مسموع في الشركة، وتُعلمهم بأنّك لا تمانع في تعبيرهم عن آرائهم واستقبال التغذية الراجعة منهم، وبالتالي يكون للموظفين رأي في مجريات الأمور التي تخصّ الشركة التي يعملون فيها. شعور الموظفين بأن صوتهم مسموع سيؤدي بالنتيجة إلى تفاعلهم مع العمل بشكل أكبر، وهذا يؤدي إلى المزيد من الإنتاجية. 3. تحسين نسبة استبقاء الموظفين إن كنت تستجيب للتغذية الراجعة التي يقدّمها إليك العملاء، فهذا يعني - من الناحية النظرية - أنّك تجعلهم أكثر سعادة في عملهم، وهذا يؤدي بالنتيجة إلى زيادة نسبة استبقاء الموظفين Retention في الشركة. إن أكبر خطأ ترتكبه الشركات عند إجراء الاستبيانات (سواء أكانت مجهولة الاسم أم لا) هو عدم الاستجابة للتغذية الراجعة التي يحصلون عليها بعد الاستبيان. في الواقع، فإن عدم الاستجابة للتغذية الراجعة سيحمل أثرًا عكسيًا وسيؤدي إلى عدم تفاعل الموظفين، وشعورهم بالاستياء والغضب، ومع استمرار المشكلة لفترة طويلة، قد يؤدي ذلك إلى تركهم للعمل. من هنا، تساعد الاستبيانات مجهولة الاسم على تحسين نسبة استبقاء الموظفين في شركتك. كيف نتعامل في officevibe مع خصوصية استبيانات الموظفين نحن نحترم بشكل كامل خصوصية جميع المستخدمين، ونحرص دائمًا على أن يشاركوا ما يرغبون هم في مشاركته فقط، لهذا السبب تُحذَف جميع التفاصيل التعريفية من المعلومات التي ترد إلينا. ولكننا في المقابل نرغب في خلق بيئة تتيح للمديرين تشخيص مكامن الخطأ في الشركة، ليكونوا قادرين على إيجاد الحلول المناسبة لها. فعلى سبيل المثال، إن كان المديرون قادرين على تشخيص انخفاض في مؤشر صحة الموظفين وعافيتهم، فسيكون بمقدورهم حينئذٍ المبادرة إلى إيجاد الحلول المناسبة. مثلاً، إن أجبت عن 5 أسئلة في الاستبيان حول رضى الموظفين وكانت جميع إجاباتك بالنفي، فسيكون بمقدور المديرين حينها أن يدركوا بأن النتائج اﻹجمالية سلبية، ولكن دون أن يطلعوا على اﻹجابات الفردية ومعرفة أصحابها. فيما يلي سأوضح اﻷمور بشفافية أكبر، وسأبين لك جميع النشاطات التي نقوم بها واﻷسلوب الذي نتبعه في المحافظة على الخصوصية. أجوبة الاستبيان كما ذكرت مسبقًا، فإن الإجابات تكون مجهولة الأسماء 100%، ولا يمكن لأي مدير أن يعرف صاحب الإجابة على اﻹطلاق. ومن الضروري بالنسبة إلينا أن يدرك جميع الموظفين الذين يستخدمون المنصة هذه الحقيقة، فلن تُعرَض اﻹجابات على المدرين مهما أصرّوا على ذلك. في الواقع، كان هذا الأمر مدار نقاش وبحث طويليْن في الشركة، وقد قرّرنا أنّه من الأفضل أن نتيح للمستخدمين الإجابة على الاستبيانات براحة وطمأنينة حتى لو كان ذلك على حساب إرضاء فضول المديرين. تقرير التفاعل تُجمع كل المعلومات بلا أسماء، وتُعرَض على المدراء على هيئة تقرير تفاعل قوي وبسيط في آن واحد. هذا بالضبط ما يراه المديرون في المنصة، إذ يكون التركيز على الناتج النهائي إضافة إلى المقاييس العشرة لتفاعل الموظفين. أعود وأكرر مرة أخرى بأنّنا لا نعرض الإجابات الفردية للموظفين، فاﻷرقام إجمالية والهدف منها هو الحصول على فكرة عامة عن مجريات الأمور في العمل. إضافة إلى ذلك هناك بعض النصائح التي تساعد على تطوير الأوضاع بالاعتماد على أدنى النتائج التي نحصل عليها من الاستبيانات. تقرير التغذية الراجعة في Officevibe نطرح أسئلة إضافية مرتبطة ببعض الأسئلة المطروحة في الاستبيانات السابقة، وعندما يرسل الموظفون أجوبتهم يتاح لهم اختيار ما إذا كانوا يرغبون في إخفاء هويتهم أم لا. تُعرض جميع هذه المعلومات في تقرير يبيّن التغذية الراجعة التي يمكن للمدير أن يشاهدها. فعلى سبيل المثال، إن كنت مدير فريق تكنولوجيا المعلومات في Seattle، وكانت اﻹعدادات تتيح لك رؤية التغذية الراجعة من تلك المجموعة فقط، فلن تكون قادرًا على مشاهدة أي تغذية راجعة من أي فريق آخر عدا هذا الفريق، ويمكنك رؤية صورة الموظف إن اختار هو ذلك، أما إن اختار إخفاء هويته فلن تكون قادرًا على رؤية صورته الشخصية على اﻹطلاق. الردّ على التغذية الراجعة من أجمل الخصائص المتوفرة في Officevibe هو القدرة على الردّ على التغذية الراجعة الخاصة بالموظفين، وأحد أكبر التحديات التي واجهناها في هذا السياق هو إخفاء معلومات الموظفين مع استمرارهم في الردّ على التغذية الراجعة التي يقدّمونها إلى مديريهم. لهذا، ستبقى هوية الموظف مجهولة دائمًا، لأنّنا نرغب في التركيز على التغذية الراجعة، وليس على الشخص الذي قدّمها، إذ يجب أن يشعر الموظّفون بالراحة عند استخدام هذا النظام. هل استبيانات الموظفين سرّية حقًّا؟ من الممكن الاستعانة بطرف ثالث للمساعدة في إدارة الاستبيانات ونتائجها، ولكن المستخدم يتحمّل جزءًا من المسؤولية أيضًا. نمتلك في Officevibe طرقًا متعددة نضمن من خلالها السرية التامة لإجابات الموظفين، ولكن يمكن تجاوزها إن بُذِل الجهد الكافي لذلك. نحن نعمل على تحسين هذا الأمر باستمرار، مع أني كنت أتمنى أن لا نحتاج أصلًا إلى مثل هذه التحسينات. المشكلة في أغلب الاستبيانات مجهولة الأسماء تكمن في أنّها تتحول إلى ما يشبه المطاردة، إذ بدلًا من التركيز على التغذية الراجعة، تصبح معرفة صاحب تلك التغذية الراجعة الشغل الشاغل، ومن المؤسف القول بأنّ المدير هو المتضرر الوحيد في نهاية المطاف. إن فقدت ثقة أحد الموظفين بك فلن تحصل على تغذيته الراجعة مجدّدًا، وستواجه الكثير من المشاكل غير الموثقة والتي يمكن أن تتحول فيما بعد إلى كوارث حقيقية. سترتفع معدلات التحول Turnover، وسينخفض مستوى التفاعل، وسيسود الشعور بعدم الرضي بين الموظفين، وستتضرر سمعتك وسمعة شركتك و … إلخ. قد تبدو الصورة مأساوية جدًّا، ولكن هذا هو الواقع. يعتمد كل شيء على الثقة، وإن كنت تثق بموظفيك بما يكفي فلن تكون بحاجة إلى جعل استفتاءاتك مجهولة الاسم من الأساس. هل تعتقد بضرورة كون استبيانات الموظفين مجهولة الاسم؟ شاركنا رأيك في التعليقات. ترجمة - وبتصرّف - للمقال Why Using An Anonymous Employee Survey Is Important لصاحبه Jacob Shriar. حقوق الصورة البارزة محفوظة لـ Freepik