Hello our valued visitor, We present you the best web solutions and high quality graphic designs with a lot of features. just login to your account and enjoy ...

<none>

Hello our valued visitor, We present you the best web solutions and high quality graphic designs with a lot of features. just login to your account and enjoy ...

CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
1 + 0 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.

أخبار تكنلوجيا

رقم الخبر عنوان الخبر التفاصيل
70,251 أبل توجه ضربة "قاسية" لـ فيسبوك في سوق الإعلانات على هواتف آيفون!

بدأ تأثير تغيير الخصوصية على أنظمة تشغيل هواتف آيفون، والذي أطلقته شركة أبل في أبريل في الظهور على الميزانيات العمومية للشركات الأخرى، حيث يظهر القوة الهائلة التي تمارسها أبل على الصناعات غير المرتبطة بالإلكترونيات الاستهلاكية.

وتضمن التحديث الذي أثار الجدل بين أبل والكثير من الشركات مثل فيسبوك، ظهور نافذة منبثقة جديدة تسأل المستخدمين عما إذا كانوا يريدون السماح للتطبيقات على هواتفهم بتعقبهم للمساعدة في تخصيص الإعلانات لهم، وهو ما يمكّن مالكي أجهزة آيفون لإلغاء الاشتراك بسهولة من خلال النقر على زر "عدم التعقب".

وأدت ميزة الخصوصية إلى تغيير آليات العمل وراء الكواليس للعديد من إعلانات الهاتف.

من جانبها، حذرت شركة ميتا، الشركة الأم لـ فيسبوك، الشهر الماضي من أن تبني الميزات قد وصل إلى "مرحلة حرجة" وجعل إعلاناتها أقل فعالية في استهداف العملاء المحتملين المربحين. وقالت فيسبوك إن إيراداتها كانت ستنمو بالتتابع في الربع الثالث لولا تغييرات إعلانات أبل.

فيما ألقت شركة سناب شات باللوم على تغيير الخصوصية على أنظمة تشغيل هواتف آيفون، في التأثير على مبيعاتها والتي لم تشهد نموا يذكر خلال الربع الثالث. حيث قال الرئيس التنفيذي لشركة سناب شات، إيفان سبيغيل، إن الميزة الجديدة على هواتف آيفون فرضت مخاطر على أرباح الشركة في الربع الرابع، وتوقعت الشركة أن تسجل مبيعاتها للربع الأخير من السنة حوالي 1.18 مليار دولار، مقابل توقعات محللي وول ستريت البالغة 1.36 مليار دولار.

فيما قالت شركة بيلوتون، الشهر الماضي إن ميزة خصوصية أبل تضر بنمو أعداد المستخدمين.

من جانبه، رفض الرئيس التنفيذي لشركة أبل، تيم كوك، التعليق على تأثير الميزة على الشركات الأخرى، لكنه قال: "نحن لا نتخذ القرار، فقط نسمح للمستخدمين بطريقة بسيطة من اتخاذ قرارهم".

استفادة أبل

في حين تم تسويق التغييرات على أنها مكسب للمستخدمين، إلا أنها تفيد أيضاً منتج أبل الإعلاني، والمعروف بـ Apple Search Ads، والتي يلجأ إليها المسوقون لإعلانات الهواتف التي تزيد من عمليات تثبيت التطبيقات.

وقال رئيس المحتوى في AppsFlyer، شاني روزنفيلدر، وهي شركة لقياس الإعلانات: "لقد شهدنا زيادة هائلة في حصة سوق الإعلانات على شبكة البحث من أبل". وأضاف "أصبحوا اللاعب الأول الجديد، وتجاوزوا فيسبوك، الذي سيطر على نظام iOS في الماضي".

وأوضح تقرير لـ AppsFlyer، أن 86% من الأجهزة التي تعمل بنظام تشغيل iOS من أبل، تعمل بإصدار حديث كافٍ ما يجعلها مؤهلة لميزة منع الإعلانات، وفيما اختار 38% من المستخدمين السماح للتطبيقات بتعقبهم إعلانياً، فإن 62% قرروا عدم التعقب.

ردود الفعل

أعلنت شركة ميتا، منذ البداية حربها على تحديث نظام تشغيل ios. وقال الرئيس التنفيذي لشركة فيسبوك، مارك زوكربيرغ، "نظراً لأن تغييرات أبل تجعل التجارة الإلكترونية واكتساب العملاء أقل فعالية على الويب، فإن الحلول التي تسمح للشركات الكبيرة بإنشاء متجر داخل تطبيقاتها ستصبح جذابة ومهمة بشكل متزايد بالنسبة لهم".

فيما كان الرئيس التنفيذي لشركة سناب شات، إيفان شبيغيل، قد أشاد سابقاً بنهج أبل، إلا أن الشركة قامت بتحديث منتجاتها الإعلانية للعمل مع بديل لخدمة "شفافية تتبع التطبيقات" المعروفة باسم ATT من أبل. لكن في الشهر الماضي، قال مسؤولو سناب شات إن استبدال خدمة أبل لقياس الإعلانات، بخدمات SKAdNetwork، غير موثوق بها.

وقالت سناب شات إنها تعمل على تطوير خدمتها الإعلانية بشكل مباشر.

النتائج المالية

وفيما لا تنشر أبل إيراداتها من خدماتها الإعلانية ضمن النتائج المالية، إلا أنها تمثل جزءا صغيرا من أعمالها في مجال الخدمات، والتي سجلت إيرادات 68.43 مليار دولار في السنة المالية 2021 للشركة، بزيادة قدرها 27%.

وقدر المحلل في بيرنشتاين، توني ساكوناغي، أن إعلانات بحث أبل تولد 4 مليارات دولار سنوياً ولديها 60% من حصة سوق "إعلانات البحث عن التطبيقات" على أجهزة آيفون.

وكتب في مذكرة للعملاء الأسبوع الماضي، أن الإعلانات على شبكة البحث ليست سوى جزء بسيط من سوق إعلانات الهاتف المحمول بأكمله. ويقدر أن سوق إعلانات الهاتف المحمول ككل تبلغ قيمته 300 مليار دولار سنوياً، و20% من هذه الإعلانات مخصصة لتطبيقات الأجهزة المحمولة، أو حوالي 60 مليار دولار، فيما يمثل نظام iOS نصف هذه الكعكة.

70,250 كيف تحقق المزيد من الوعي حول علامتك التجارية؟

خطوات وتقنيات ناجحة لبناء الوعي بالعلامة التجارية

تعد عملية بناء الوعي بالعلامة التجارية من الخطوات الأولى التي يقوم بها المسوّقون لكسب العملاء وتذكيرهم بالمنتجات أو الخدمات والتعرف عليها وتذكرها. فيما يساعد الوعي بالعلامة التجارية على تحقيق أهداف العمل وغاياته، إذ من الممكن أن يزيد من حركة المرور على الموقع الإلكتروني، ويوسّع قاعدة العملاء، فبالتالي زيادة المبيعات والأرباح.

ويُبنى الوعي بالعلامة التجارية على معرفة اهتمامات الجمهور وقيَمهم واحتياجاتهم وتغذيتها من خلال اتباع استراتيجيات التسويق الصحيحة والملائمة لطبيعة النشاط التجاري بهدف الوصول إلى جماهير جديدة أو الترويج لمنتجات أو خدمات مميزة.

مفهوم بناء الوعي بالعلامة التجارية

الوعي بالعلامة التجارية هو مصطلح عام يصف مدى معرفة وإلمام العملاء للعلامة التجارية ومنتجاتها أو خدماتها، ومتى ما كانت العلامة التجارية مميزة بالنسبة للعملاء كانت أسرع ثباتًا ورسوخًا في أذهانهم.

وتعتبر من الاستراتيجيات القوية والفعّالة كونها تمدّ العلامة التجارية بالقوّة والمصداقية الذي يتحول إلى زيادة في المبيعات وارتفاع مستوى الموثوقية بين العلامة التجارية والعملاء.

كم من الوقت يستغرق بناء الوعي بالعلامة التجارية؟

إن استراتيجية بناء الوعي بالعلامة التجارية التسويقية تعدّ من الخطط طويلة الأجل التي تعمل ببطء حتى تحقق النتائج المطلوبة، فقد تستغرق عملية بناء الوعي بالعلامة التجارية من 3 أشهر إلى عام وربما إلى عامين، لذلك تعتمد خطة بناء الوعي بالعلامة التجارية على المتابعة المستمرة والتنفيذ المدروس على أكمل وجه، إلى جانب مدى قوة العلامة التجارية وتميّزها بالنسبة إلى العملاء المستهدفين وارتباطها بقيَمهم واحتياجاتهم.

7 خطوات لبناء حملة توعية بالعلامة التجارية

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

إذا كانت هذه الصورة مكتملة لدى العملاء فستصبح عملية بناء الوعي بالعلامة التجارية سهلة وواضحة لأن الأهداف الأساسية والمعلومات الأوّلية حاضرة في أذهان الجمهور المستهدف.

فيما يلي 7 خطوات لبناء حملة توعية بالعلامة التجارية الخاصة بك.

1– حدّد أهدافًا منطقية وواقعية. حدّد إلى أين تريد أن تصل.

تساعدك الأهداف الموضوعة بمنطقية إلى زيادة فرصة نجاح استراتيجيتك التسويقية، فإذا كنت ترغب في زيادة مبيعاتك، أو توسيع قاعدة عملائك، أو زيادة حركة المرور إلى موقعك الإلكتروني، فينبغي عليك أن تكتب هذه الأهداف بدقّة.

مثلًا: زيادة نسبة المبيعات 20% خلال شهر. أو الوصول إلى 1000 متابع خلال شهر على منصة الانستجرام.

تحديد الأهداف من أولى الخطوات التي يجب القيام بها قبل إطلاق حملة التوعية بالعلامة التجارية الخاصة بك.

2- حدّد عملاءك المستهدفين:

ابحث عنهم وعن اهتماماتهم، وتعرّف على أماكن تواجدهم على الإنترنت مثلًا، تعرّف على القنوات أو المنصات التي يستخدمونها بكثرة، ويميلون إليها ويتصفحونها باستمرار.

ولا تنسَ المعلومات الديموغرافية التي تحدّد لك بيانات عملائك بدقّة كالفئة العمرية والجنس والاهتمامات وأماكن التواجد والمستوى التعليمي والاقتصادي.

3- تعرف على وسيلة التواصل الاجتماعية التي يتواجد بها جمهورك:

بعد أن قمت بجمع معلومات وبيانات عملائك، فإن الصّورة الآن اكتملت.

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

4- خصّص ميزانية محدّدة:

إذا كانت ميزانيتك محدودة فعليك أن تضع هذا الأمر في الاعتبار.

وسائل التواصل الاجتماعي الآن أتاحت فرصة التسويق عن علامتك التجارية على منصاتها وبمقابل ماديّ رمزيّ. خصّص ميزانية متناسبة مع أهدافك وأنشئ حملة إعلانية على المنصة التي يتواجد بها جمهورك. 

5- قم بالتنويع:

لا تتبع استراتيجية واحدة لعرض إعلاناتك، اعرض مرّة تجارب عملائك الإيجابية، وردود أفعالهم. وفي حين آخر جرب أن تنشئ حملة إعلانية حول منتجٍ أو خدمة تقدمها ومتأكد بأن جمهورك يبحث عنها ويتطلع إليها !

أعلن عن خصومات، أو عروض ترويجية فعّالة يمكن أن تجذب إليك العملاء المحتملين.

نوّع في استراتيجياتك التسويقية المستخدمة لتحظى بعملاء أكثر، يهتمون بعلامتك التجارية، ولديهم الوعي الكامل حولها.

6- حدّد جدولًا زمنيًا لحملتك:

ترتبط الحملات التوعية بالعلامة التجارية بوقتٍ زمنيّ محدّد، حدّد متى ستبدأ حملتك ومتى ستنتهي.

من شأن هذه النقطة أن تجعلك مستعدًا جيّدًا لحملتك الإعلانية، ومتطلّعًا إلى نتائجها المثمرة.

7- تتبع نتائج حملتك، وقيّمها:

بناء على الأهداف التي وضعتها في بداية إنشائك لحملتك الإعلانية، قم بتتبع نتائجك وقيّمها. 

هل حققت الأهداف المرسومة؟

أي المنصات كان التفاعل فيها أكبر؟

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

تقنيات ناجحة لبناءِ الوعي بالعلامة التجارية على الإنترنت

يحظى المسوّقون وأصحاب العلامات التجارية بفرصةِ نجاح كبرى على الإنترنت، إذ بإمكانهم الإعلان عن منتجاتهم أو خدماتهم من خلال وسائل التواصل الاجتماعي وما توفّره من خصائص وخدمات تساعد على إنشاء ونشر الحملات الإعلانية إلى الجمهور المستهدف بضغطة زرّ.

وتوجد العديد من التقنيات والاستراتيجيات التي يستخدمها المسوّقون لبناء الوعي حول علامتهم التجاريّة والتي تزيد من نسبة المبيعات وتجذب المزيد من العملاء بعيدًا عن التقنيات التقليدية والمستهلكة.

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

فيما يبدو استخدام الكلمات المفتاحية التي يبحث عنها عملاؤك باستمرار من الاستراتيجيات الشائعة والمستخدمة بكثرة لتحسين محرّكات البحث والوصول إلى عملاء محتملين. ابحث عن الكلمات الرئيسية حول مجال عملك ونشاطك التجاريّ، إذا تعرّفت على أكثر الكلمات التي يبحث عنها عملاؤك وقمت بتضمينها في العنوان الرئيسي مثلًا فإنك ستحظى بعدد مشاهدات أكبر وسيلقى منشورك رواجًا أكثر!

وضمن إطار سعيك لتحقيق المزيد من الوعي حول علامتك التجارية، بإمكانك أن تنشئ مدونة صوتية (بودكاست)، أو محتوى مكتوب على وسائل التواصل الاجتماعي، وتعامل مع الأمر بذكاء، إذ لا تقوم بصناعة المحتوى بهدفِ التسويق عن منتجاتك أو خدماتك والإعلان عنها فقط. لا، قم بكتابة الموضوعات والمقالات أو إنشاء حلقات بودكاست تتحدث عن مجال عملك ومنتجاتك بطريقة غير مباشرة، فإذا كنت تقدّم منتجات تقنية عالية الجودة، فضمّن محتواك بمعلومات قيّمة ينتفع بها المتابعون، ثم أعلن عن منتجك المميّز بطريقة تدعّم محتواك، وتلبي احتياج العملاء في نفس الوقت.

ولا يقتصر الأمر على هذه التقنيات فقط، بإمكانك المشاركة في المهرجانات والفعاليات المحلّية ووضع اسم علامتك التجارية على بعض المنتجات كالأقلام أو دفاتر الملاحظات أو USB وتوزيعها بشكل مجانيّ على الزوّار.

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

وتوجد أيضًا تقنيات أخرى يمكن اتباعها، كتكوين الصداقات مع صنّاع محتوى مؤثرين، أو التسويق بالكواليس أو رواية القصص العاطفية والملهمة لجذب العملاء المحتملين وبناء الوعي حول علامتك التجارية.

أخطاء يجب أن تتجنبها عند بناء الوعي حول علامتك التجارية

في كلّ رحلة يقوم بها المسوّق أو صاحب العلامة التجارية لنشر الوعي حول منتجاته وخدماته قد يقع في العديد من الأخطاء التي لم يحسب لها حساب، إما بسبب قلة خبراته، أو ضعف معلوماته، مما يشعرِ المسوّق بالارتباك والتشتت فبالتالي فشل عملية بناء الوعي بالعلامة التجارية.

ومن هذه الأخطاء الشائعة:

1- عدم تحديد الجمهور المستهدف، والاكتفاء بالجمهور العام:

لن تستطيع أن تبني وعيًا حول علامتك التجارية إذا كان جمهورك عامًا وليس محدّدًا، فاللغة التي تستخدمها في إعلاناتك التسويقية قد تناسب الرّجال أكثر من النّساء، أو فئة المراهقين أكثر من الأطفال، من شأن عدم تحديد الجمهور المستهدف بدقّة الحصول على معلومات مضلّلة أو ببساطة عدم وصول علامتك التجارية إلى الأشخاص المعنيين !

2- عدم وجود خطة بديلة:

جميع الأعمال والمشاريع التجارية في العالم لا تخلو من الأزمات والمخاطر التي تواجهها، وعملك كذلك. قم بوضع خططًا بديلة لمواجهة الأزمات والمخاطر التي قد تواجهها علامتك التجارية في المستقبل. من شأن هذه الخطط أن تقوم بإدارة الأزمة أو التقليل منها أو معالجتها مبكرًا والمحافظة على سير العمل كما هو.

3- إهمال خدمة العملاء:

مما يساهم في تعزيز استراتيجيتك التسويقية حول بناء الوعي بعلامتك التجارية هو الإجابة عن استفسارات العملاء والتجاوب مع اقتراحاتهم وحل مشكلاتهم، وتوفير الدردشة الحيّة مثلًا على موقعك الإلكتروني لضمان التواصل السريع والفعّال مع العملاء.

4- استخدام لغة غامضة أو معقدة:

عند كتابة الإعلانات استخدم كلمات مفهومة وواضحة ويستوعبها جمهورك المستهدف، وينجذب إليها بقوّة. 

إن الكلمات المتخصصة في مجالٍ محدّد أو المعقّدة والتي لا يفهمها إلا النّخبة من الأشخاص تجعل من الصعب تكوين قاعدة عملاء واسعة مهتمة بعلامتك التجارية.

5- انعدام التواجد على وسائل التواصل الاجتماعي:

وسائل التواصل الاجتماعي الآن هي حلقة الوصل بين العلامة التجارية والعملاء، من خلالها تستطيع الوصول إلى جمهورك المستهدف والتعرف على اهتماماته وأنماطه، لذلك يجب أن تكون العلامة التجارية حاضرة على منصة التواصل الاجتماعي التي يتواجد بها العملاء بكثرة !



الكاتب: سماهر با سيف

التدوينة كيف تحقق المزيد من الوعي حول علامتك التجارية؟ ظهرت أولاً على عالم التقنية.

70,240 "قد يكون مستحيلا".. "ميتا" تسعى لإنشاء تجارب واقع افتراضي آمنة

حذر أندرو بوسورث، مدير التكنولوجيا في شركة ميتا (المعروف سابقًا باسم فيسبوك) الموظفين من أن إنشاء تجارب واقع افتراضي آمنة كان جزءًا حيويًا من خطة أعمالها. ولكن من المحتمل أيضًا أن يكون مستحيلًا على نطاق واسع.

وفي مذكرة داخلية اطلعت عليها صحيفة "فاينانشيال تايمز"، قال بوسورث إنه يريد أن تتمتع عوالم ميتا الافتراضية بمستويات أمان ديزني تقريبًا.

ويأتي ذلك بالرغم من أن المساحات من المطورين الخارجيين يمكن أن يكون لها معايير أكثر مرونة من المحتوى المبني عبر ميتا مباشرة.

ويمكن أن تشكل المضايقات أو السلوكيات السامة الأخرى تهديدًا وجوديًا لخطط الشركة المتعلقة بإنترنت مستقبلي متجسد إذا أبعدت هذه السلوكيات المستهلكين العاديين عن الواقع الافتراضي.

وفي الوقت نفسه، قال بوسورث إن ضبط سلوك المستخدم على أي نطاق ذي مغزى أمر مستحيل عمليًا. وكان بوسورث يستشهد بنظرية الاستحالة لمايك ماسنيك مؤسس مدونة Techdirt.

وتوضح النظرية أنه من المستحيل تعديل المحتوى على نطاق واسع بشكل جيد. ويشير ماسنيك إلى أن هذه النظرية ليست حجة ضد الضغط من أجل إشرف أفضل. ولكن الأنظمة الكبيرة تؤدي دائمًا إلى إحباط شرائح كبيرة جدًا من السكان.

ويبدو أن بوسورث يقترح أن ميتا يمكنها الإشراف على المساحات مثل منصة Horizon Worlds VR باستخدام نسخة أكثر صرامة من قواعد المجتمع الحالية.

ميتا: الإشراف السيئ يشكل تهديدًا وجوديًا

في حين أن المذكرة الكاملة ليست متاحة للجمهور، فقد نشر بوسورث تدوينة ألمح إليها. وتشير التدوينة، التي تحمل عنوان الحفاظ على أمان الأشخاص في الواقع الافتراضي وما بعده، إلى العديد من أدوات الإشراف الموجودة في الواقع الافتراضي لدى الشركة.

ويتضمن ذلك السماح للأشخاص بحظر المستخدمين الآخرين في الواقع الافتراضي. بالإضافة إلى نظام مراقبة Horizon الواسع النطاق لمراقبة السلوك السيئ والإبلاغ عنه. كما تعهدت الشركة بتقديم 50 مليون دولار للبحث في القضايا العملية والأخلاقية حول خططها بشأن ميتافيرس.

وتعرضت منصات ميتا القديمة مثل فيسبوك وإنستغرام لانتقادات بسبب إخفاقات خطيرة في الإشراف. بما في ذلك الاستجابات البطيئة وغير الكافية للمحتوى الذي يروج للكراهية ويحرض على العنف.
وتوفر إعادة تسمية الشركة مؤخرًا بداية جديدة محتملة. ولكن كما تشير المذكرة، من المحتمل أن تواجه العوالم الافتراضية والواقع الافتراضي مجموعة جديدة من المشكلات بالإضافة إلى المشكلات الحالية.

وكتب بوسورث في التدوينة: غالبًا ما نجري محادثات داخليًا وخارجيًا حول التحديات التي نواجهها. والمفاضلات التي ينطوي عليها الأمر والنتائج المحتملة لعملنا. هناك مشاكل مجتمعية وتقنية صعبة ونحن نتصارع معها يوميًا.

70,239 تيك توك تتعاون مع ديزني.. لتحويل النص إلى كلام

تتعاون شركة ديزني مع منصة "تيك توك" لإضافة الأصوات الرسمية لشخصياتها عبر العلامات التجارية Star Wars و Marvel و Disney Animation إلى ميزة تحويل النص إلى كلام لتطبيق الوسائط الاجتماعية الشهير.

ويتيح لك ذلك قراءة التعليقات التوضيحية الخاصة بك بواسطة شخصيات ديزني المشهورة مثل C-3PO و Chewbacca و Stormtrooper من Star Wars و Rocket Raccoon من Guardians of the Galaxy.

ويتم طرح أصوات الشخصيات الجديدة في التطبيق كجزء من يوم ديزني بلس الترويجي للاحتفال بمرور عامين على الخدمة.

ويمكن استخدام الأصوات بشكل مشابه لأصوات تحويل النص إلى كلام العادية عبر المنصة. وبعد تسجيل مقطع فيديو، انقر على زر النص عبر الشاشة واكتب ما تريد أن تقرأه ميزة تحويل النص إلى كلام.

وبعد ذلك، اضغط على زر تحويل النص إلى كلام لتحديد صوت. ولكن بدلاً من مجرد رؤية الإعدادات المسبقة المعتادة التي تقدمها المنصة عادةً، فإنك ترى أصوات ديزني الجديدة.

يذكر أن لدى الشركة خمسة إعدادات مختلفة الآن. وذلك بعد دعوى قضائية بشأن الصوت الأصلي لتحويل النص إلى كلام في وقت سابق من هذا العام.
وكجزء من الترويج، يتعين عليك فتح أصوات ديزني الجديدة أولاً باستخدام كلمات رئيسية محددة.

كجزء من احتفالات يوم ديزني بلس

لا يعتبر تعاون ديزني المرة الأولى التي تقدم فيها تيك توك أصواتًا ترويجية لتحويل النص إلى كلام. وتعاون التطبيق سابقًا مع Paramount لإضافة صوت يشبه Scream يبدو وكأنه Ghostface ليتزامن مع المقطع الدعائي لفيلم الرعب القادم.
ولم تذكر الشركتان المدى التي تكون فيها أصوات تحويل النص إلى كلام الشخصية الجديدة متاحة.

وتأتي الشراكة الجديدة مع تيك توك بعد أن أطلقت ديزني بلس مؤخرًا حسابًا رسميًا عبر المنصة. الذي يتميز بمحتوى موجه حول أصول وشخصيات وموهبة البث.

وأعلنت ديزني عن الميزة الجديدة كجزء من مجموعة إعلانات يوم ديزني بلس، إلى جانب مجموعة من العروض الترويجية الأخرى (بما في ذلك تقديم الشهر الأول من خدمة ديزني بلس للمشتركين الجدد والعائدين مقابل 1.99 دولار).

وتهدف حملة يوم ديزني بلس على مستوى الشركة للاحتفال بمرور عامين على الإطلاق الأولي للخدمة إلى جانب محاولة جذب المشتركين إلى الخدمة التي سجلت في ربع سبتمبر 2021 أدنى معدل نمو لها منذ بداية خدمة الاشتراك.

70,229 تعرف على أعظم ابتكارات الصين في مجال التكنولوجيا

منذ القِدم اشتهرت الصين باختراعاتها التي تركت أثراً كبيراً في العالم، منها صناعة الورق والطباعة والبوصلة والبارود. وقد غيرت جميعها وجه العالم إلى الأبد والدليل أنها ما زالت تُستخدم حتى يومنا هذا.

وفضلاً عن هذه الاختراعات الأربعة القديمة، استمرت الصين بتقدمها وتطورها عبر السنوات لتتصدر اليوم قائمة الدول الأكثر تميزاً في المجال التقني والعلمي والصناعي.

فيما يلي أعظم ابتكارات الصين في مجال التكنولوجيا:

1. أول روبوت طبي مؤهل

الروبوت الصيني (Xiaoyi) المطوّر بتقنية الذكاء الاصطناعي خضع لاختبارات الترخيص الطبي الصعبة في الصين عام 2017، واجتازها بكفاءة عالية ليصبح أول روبوت مؤهل لممارسة مهنة الطب. وتم تطوير هذا الروبوت بواسطة شركة (iFlytek)، ويتميز بوظائفه الصوتية الذكية وقدرته على التعلّم الذاتي. لكن بالرغم من ذلك لا تزال تقاريره بحاجة إلى توقيع الأطباء البشر.

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

2. أكبر محطة طاقة شمسية عائمة

تُعتبر الصين أكبر مستثمر في الطاقة المتجددة حول العالم، حيث قامت بتخصيص 698 مليار دولار في مجال الطاقة المتجددة بين عام 2010 والنصف الأول من عام 2019 وفقاً لتقرير تدعمه الأمم المتحدة. كما تُعد موطناً لأكبر محطة طاقة شمسية عائمة في العالم، والتي تقع في مقاطعة آنهوي الشرقية.

وبدأ تشغيل هذه المحطة بشكل رسمي اعتباراً من 2017، حيث يُمكنها توليد 40 ميجاوات من الكهرباء، ما يكفي لتشغيل 15,000 منزل.

الجدير بالذكر أن إحدى الشركات المنافسة قامت بإنشاء محطة طاقة شمسية عائمة بقدرة 150 ميغاوات في مقاطعة آنهوي أيضاً، ستكون الأكبر في العالم عند تشغيلها بالكامل.

3. إطلاق أول طائرة ركاب دون طيار

كذلك نجحت بكين في اختبار طائرات بدون طيار لمكافحة التلوث تعمل على تنظيف الجو ومكافحة التلوث وإنهاء ظاهرة الضباب الدخاني التي يعاني منها الصينيون على الدوام وتهدد صحتهم.

وقد بدأت الشركة الصينية الناشئة (EHang) منذ عام 2016 باختبار الرحلات الجوية لطائرات الركاب دون طيار بسرعات تصل إلى 130 كم/الساعة، حيث بإمكانها حمل راكب أو اثنان لمدة 25 دقيقة في الرحلة الواحدة. وتمتلك الشركة حالياً نموذجاً بمقعد واحد ونموذج آخر بمقعدين.

لكن تجدر الإشارة إلى أنه لا يزال على الشركة تطوير البنية التحتية بالتعاون مع السلطات المحلية، حتى تتمكن من إطلاق هذه الطائرات على نطاق واسع.

4. استنساخ قردين لأول مرة

اقترب العلماء خطوة جديدة من استنساخ البشر بعد إعلانهم نجاح عملية استنساخ قردين في الصين تُعد الأولى من نوعها في العالم. فقد استطاع مختبر صيني إنشاء زوج متطابق من قردة المكّاك التي تُعتبر من أنواع قردة العالم القديم، وذلك باستخدام نفس التقنية التي استُنسخت بها النعجة دوللي.

وقال العلماء إنهم كسروا الحاجز التقني أمام استنساخ البشر، معربين عن أملهم في استخدام هذا الأمر لعلاج الزهايمر وباركنسون وغيرهما من الأمراض.

5. أول بنك صيني تديره الروبوتات

عام 2018 افتتحت الصين أول بنك في العالم تديره مجموعة من الروبوتات التي تقوم باستقبال العملاء والترحيب بهم لتبدأ بالمساعدة. وتتحدث هذه الروبوتات داخل البنك إلى العملاء وتجيب على أسئلتهم الأساسية. كما تتلقى منهم البطاقات المصرفية وحسابات الشيكات وتقدم لهم غيرها من الخدمات.

يذكر أن ابتكارات الصين لم تقتصر على استخدام الروبوتات في البنوك فقط، فهناك العديد من الشركات أيضاً التي تُديرها مجموعة من الروبوتات بدل الأفراد.

6. مساعد معلّم بتقنية الذكاء الاصطناعي

قام مطور برامج وألعاب صيني باختراع أول مساعد معلم بتقنية الذكاء الاصطناعي في العالم وأطلق عليه اسم (Qiqi). ويستطيع هذا المساعد التحقق من عدد الحاضرين والغائبين من خلال التعرف على وجوه الطلاب. كما يمكنه المساعدة في وضع العلامات، وتعيين مهام مخصصة لكل طالب.

يشار إلى أن هذا المساعد أصبح متاحاً لحوالي 5 ملايين مُستخدم في جميع أنحاء الصين.

70,228 مكونات الويب: التعامل مع شجرة DOM الخفية

تعرفنا في المقال السابق مكونات الويب: عناصر HTML المخصصة وقوالبها على عناصر HTML المخصصة وكيفية إنشائها وسنكمل التعرف على موضوع مهم في هذا الصدد وهو شجرة DOM الخفية Shadow DOM -والتي تترجم أيضًا إلى ظل شجرة DOM- تستخدَم للتغليف encapsulation، والتي تسمح لكل مكوِّن ويب مخصص أن يمتلك شجرةً خفيةً لا يمكن للمستند الرئيسي الوصول إليها صدفةً، وقد تمتلك قواعد تنسيق خاصة وغير ذلك من الخواص.

شجرة DOM الخفية

هل لديك فكرة عن مدى تعقيد إنشاء وتنسيق أدوات تحكم المتصفح؟

لنفترض وجود العنصر <"input type="range> مثلًا:

input[type="range" i] { appearance: auto; cursor: default; color: rgb(157, 150, 142); padding: initial; border: initial; margin: 2px; }

يستخدم المتصفح ضمنيًا DOM/CSS لرسم أدوات التحكم، ولا تظهر بنية شجرة DOM لنا عادةً، لكن يمكننا رؤيتها باستخدام أدوات التطوير بتفعيل الخيار "Show user agent shadow DOM" من إعدادات أدوات المطور Dev Tools تحديدًا قسم Elements في المتصفح Chrome مثلًا.

ستبدو الشجرة DOM للعنصر السابق كالتالي:

ما نراه تحت العنوان shadow-root# يسمَّى شجرة DOM المخفية، ولا يمكن الحصول على عناصر شجرة DOM المخفية المضمنة باستخدام استدعاءات JavaScript النظامية أو المحددات selectors، فهذه العناصر ليست أبناءً نظاميةً، بل هي تقنية تغليف متقدمة.

سنرى في المثال السابق السمة المفيدة pseudo، وهي سمة غير قياسية وموجودة لأسباب تاريخية، حيث يمكننا استخدامها لتنسيق العناصر الفرعية باستخدام CSS كالتالي:

<style> /* make the slider track red */ input::-webkit-slider-runnable-track { background: red; } </style> <input type="range">

See the Pen JS-p3-06-Shadow-DOM -ex1 by Hsoub (@Hsoub) on CodePen.

بدأت المتصفحات باختبار الشيفرة بالاستفادة من بنى DOM الداخلية لتجهيز أدوات التحكم، وبعد فترة من الزمن طوّرت شجرة DOM الخفية وأصبحت معياريةً لتسمح لنا وللمطورين بالقيام بأشياء مماثلة. سنستخدم لاحقًا المعيار الحديث لشجرة DOM الخفية الذي تغطيه مواصفات DOM وغيرها من المواصفات ذات الصلة.

الشجرة الخفية Shadow tree

يمكن لكائن DOM أن يمتلك نوعين من الأشجار الفرعية:

  1. شجرة ظاهرة Light tree: وتمثل شجرةً فرعيةً نظاميةً مكوّنةً من عناصر HTML أبناء، وجميع الأشجار التي رأيناها في الفصل السابق من هذا النوع.
  2. شجرة خفية Shadow tree: شجرة DOM فرعية لا تظهر على صفحة HTML، بل تكون مخفيةً من الظهور والرؤية.

إذا امتلك العنصر الشجرتين السابقتين فسيصيّر المتصفح الشجرة الخفية، لكن يمكن إعداد توليفة بين الشجرتين، وسنرى تفاصيل أكثر في فصول لاحقة.

يمكن استخدام الشجرة الخفية في العناصر المخصصة لإخفاء المكوّنات الداخلية وتطبيق تنسيق خاص بالمكوِّن.

يخفي العنصر <show-hello> على سبيل المثال شجرة DOM الداخلية ضمن شجرة خفية:

<script> customElements.define('show-hello', class extends HTMLElement { connectedCallback() { const shadow = this.attachShadow({mode: 'open'}); shadow.innerHTML = `<p> Hello, ${this.getAttribute('name')} </p>`; } }); </script> <show-hello name="John"></show-hello>

See the Pen JS-p3-06-Shadow-DOM -ex2 by Hsoub (@Hsoub) on CodePen.

ستظهر النتيجة في أدوات تطوير متصفح بالشكل التالي، حيث تكون جميع المحتويات تحت "shadow-root#":

يُنشئ الاستدعاء ({...:elem.attachShadow({mode شجرةً مخفيةً أولًا، لكن توجد عقبتان:

  1. يمكن إنشاء جذر مخفي واحد لكل عنصر.
  2. يجب أن يكون العنصر عنصرًا مخصصًا، أو أحد العناصر التالية:
    • "article"
    • "blockquote"
    • "body"
    • "div"
    • "footer"
    • "h1…h6"
    • "header"
    • "main"
    • "nav"
    • "p"
    • "section"
    • "span"

ولا يمكن لغير هذه العناصر استضافة شجرة خفية.

يضبط الخيار mode مستوى التغليف، ويمكن أن يحمل إحدى القيمتين:

  • "open": يمكن أن نحصل على الجذر الخفي من خلال elem.shadowRoot، ويمكن لأي شيفرة الوصول إلى الشجرة الخفية لــ elem.
  • "closed": ويعيد الأمر elem.shadowRoot القيمة null دائمًا.

يمكن الوصول إلى شجرة DOM الخفية عن طريق المرجع الذي يعيده attachShadow فقط، ومن الممكن أن يكون مخفيًا ضمن صنف، وتكون الأشجار الخفية الأصلية المتعلقة بالمتصفح -مثل <input type="range"‎>- من النوع المغلق، ولا يمكن الوصول إليها، ويشابه الجذر الخفي shadow root الذي يعيده attachShadow العناصر، ويمكن إظهاره باستخدام innerHTML أو توابع DOM مثل append.

يُدعى العنصر الذي يمتلك جذرًا خفيًا بمضيف الشجرة الخفية shadow tree host، ويتاح للاستخدام ضمن الخاصية host للجذر الخفي:

// لن يعيد شيئًا elem.shadowRoot وإلا {mode: "open"} بافتراض أن alert(elem.shadowRoot.host === elem); // محقق التغليف Encapsulation

تفصَل شجرة DOM الخفية عن المستند الرئيسي:

  1. لا تكون عناصر شجرة DOM الخفية مرئيةً للتابع querySelector من شجرة DOM الظاهرة، وقد تمتلك عناصر شجرة DOM الخفية معرفات id تتعارض مع تلك الموجودة في شجرة DOM الظاهرة، فهي فريدة ضمن الشجرة الخفية فقط.
  2. لشجرة DOM الخفية أوراق تنسيق خاصة بها، إذ لا تُطبق قواعد التنسيق الخارجية عليها.

إليك مثالًا:

<style> /*(1) #elem لن يطبق التنسيق على الشجرة الخفية للعنصر*/ p { color: red; } </style> <div id="elem"></div> <script> elem.attachShadow({mode: 'open'}); // (للشجرة الخفية تنسيقها الخاص (2 elem.shadowRoot.innerHTML = ` <style> p { font-weight: bold; } </style> <p>Hello, John!</p> `; // مرئية فقط للاستعلامات التي تجري داخل الشجرة <p> (3) alert(document.querySelectorAll('p').length); // 0 alert(elem.shadowRoot.querySelectorAll('p').length); // 1 </script>

(1) لا يؤثر تنسيق الصفحة على تنسيق الشجرة الخفية.

(2) يؤدي التنسيق داخل الشجرة عمله بطريقة صحيحة.

(3) للحصول على العناصر من الشجرة الخفية، لا بدّ من الاستعلام عنها من داخل الشجرة.

تقليم شجرة DOM الخفية وعملية التركيب

تحتاج العديد من المكوّنات إلى محتوىً لتصييره، مثل النوافذ ومعارض الصور والقوائم وغيرها، ويتوقع العنصر المخصص <custom-tabs> محتوى نافذة ليمرَّر إليه، على غرار العناصر الأصلية المضمنة في المتصفح مثل <select> -عدا عناصر <option>-، ويحتاج العنصر <custom-menu> كذلك إلى محتوى على شكل عناصر قائمة.

قد تبدو الشيفرة التي تستعمل العنصر <custom-menu> كالتالي:

<custom-menu> <title>Candy menu</title> <item>Lollipop</item> <item>Fruit Toast</item> <item>Cup Cake</item> </custom-menu>

سيتمكن بعدها مكوّننا من تصيير المحتوى بصورة صحيحة، على شكل قائمة جميلة لها عنوان وعناصر ومعالجات لأحداث القائمة وغيرها، ولكن كيف سننجز ذلك؟ يمكننا أن نحاول تحليل محتوى العناصر وأن ننسخ أو نعيد ترتيب عقد DOM ديناميكيًا، لكن إذا كنا سننقل عناصر إلى شجرة DOM الخفية shadow DOM، فلن يُطبَّق تنسيق CSS الموجود ضمن المستند عليها، وبالتالي سنفقد التنسيق المرئي، وسيحتاج ذلك إلى كتابة بعض الشيفرة، ولحسن الحظ ليس علينا فعل ذلك، إذ تدعم شجرة DOM الخفية عناصر <slot> التي تُملأ تلقائيًا بالمحتوى الموجود في شجرة DOM الظاهرة وشبهنا هذه العملية بعملية "التقليم" التي تجرى على الأشجار من قص وإنشاء فتحة في الشجرة ووضع فرع في الفتحة من شجرة أو نوع آخر لذلك أطلقنا عليها هذا الاسم وسنستعمل اسم "فتحة" المقابل للكلمة الأجنبية slot (اسم العنصر) للسهولة.

الفتحات المسماة Named slots

لنلق نظرةً على طريقة عمل التقليمات في هذا المثال البسيط، حيث توفر شجرة DOM الخفية للعنصر المخصص <user-card> فتحتين تُملآن من شجرة DOM الظاهرة:

<script> customElements.define('user-card', class extends HTMLElement { connectedCallback() { this.attachShadow({mode: 'open'}); this.shadowRoot.innerHTML = ` <div>Name: <slot name="username"></slot> </div> <div>Birthday: <slot name="birthday"></slot> </div> `; } }); </script> <user-card> <span slot="username">John Smith</span> <span slot="birthday">01.01.2001</span> </user-card>

See the Pen JS-p3-06-Shadow-DOM -ex3 by Hsoub (@Hsoub) on CodePen.

يعرّف العنصر <"slot name="X> في شجرة DOM الخفية نقطة إدراج، وهو المكان الذي تُصيَّر فيه العناصر التي تعرف فيها الخاصية "slot="X، ثم ينفِّذ المتصفح عملية تركيب composition، إذ يأخذ عناصر من شجرة DOM الظاهرة، ويصيّرها ضمن الفتحات الملائمة ضمن شجرة DOM الخفية، وهكذا سنحصل في نهاية الأمر على مكوِّن يمكن ملؤه بالبيانات، وهذا ما نريده.

إليك بنية الشجرة DOM بعد تنفيذ السكربت مهملين عملية التركيب:

<user-card> #shadow-root <div>Name: <slot name="username"></slot> </div> <div>Birthday: <slot name="birthday"></slot> </div> <span slot="username">John Smith</span> <span slot="birthday">01.01.2001</span> </user-card>

لقد أنشأنا شجرة DOM خفيةً، وسنجدها تحت ‎#shadow-root. سيمتلك العنصر الآن شجرتي DOM الظاهرة والخفية.

سيبحث المتصفح -لأغراض التصيير- عن السمة "..."=slot لكل <"..."=slot name> التي لها نفس الاسم في شجرة DOM الظاهرة، وستُصيَّر هذه العناصر ضمن الفتحات.

 

 

وعندها ستسمى النتيجة شجرة DOM المسطّحة flattened DOM.

<user-card> #shadow-root <div>Name: <slot name="username"> <!-- slotted element is inserted into the slot --> <span slot="username">John Smith</span> </slot> </div> <div>Birthday: <slot name="birthday"> <span slot="birthday">01.01.2001</span> </slot> </div> </user-card>

لقد أوُجِدت شجرة DOM المسطحة لأغراض التصيير ومعالجة الأحداث، قد تبدو الطريقة التي تُعرض بها الأمور افتراضيةً نوعًا ما، لكن لن تُنقَل العقد في المستند فعليًا، فمن السهل التحقق من أنّ العقد لا تزال في مكانها بتنفيذ الأمر querySelectorAll.

alert( document.querySelectorAll('user-card span').length ); // 2

تُشتقّ شجرة DOM المسطحة من شجرة DOM الخفية بإدراج الفتحات، حيث يصيّرها المتصفح ويستخدمها في وراثة التنسيق وانتقال الأحداث -وهو ما سنوضّحه لاحقًا-، لكن نظرتها لن تغير JavaScript إلى المستند قبل الوصول إلى الشجرة المسطحة.

ملاحظة: يمكن للأبناء من المستوى الأعلى فقط امتلاك السمة "…"=slot، إذ يمتلك الأبناء المباشرون للمضيف الخفي -وهو العنصر <user-card> في مثالنا- السمة "..."=slot فقط، بينما ستُهمل هذه السمة للعناصر الداخلية. وسيتجاهل المتصفح في المثال التالي العنصر <span> الثاني، فهو ليس ابنًا مباشرًا للعنصر <user-card>:

<user-card> <span slot="username">John Smith</span> <div> <!-- invalid slot, must be direct child of user-card --> <span slot="birthday">01.01.2001</span> </div> </user-card>

إذا وجدت عناصر لها فتحات بنفس الاسم في شجرة DOM الظاهرة، فستوضع في الفتحة واحدةً تلو الأخرى، إليك المثال التالي:

<user-card> <span slot="username">John</span> <span slot="username">Smith</span> </user-card>

إليك مثالًا عن شجرة DOM مسطحة تمتلك عنصرين ضمن الفتحة <"slot name="username>:

<user-card> #shadow-root <div>Name: <slot name="username"> <span slot="username">John</span> <span slot="username">Smith</span> </slot> </div> <div>Birthday: <slot name="birthday"></slot> </div> </user-card> المحتوى الابتدائي للعنصر slot

إذا وُضع محتوًى ما ضمن الفتحة <slot>، فسيصبح هو المحتوى الافتراضي حيث سيعرضه المتصفح إذا لم يوجد محتوىً مناسب ضمن شجرة DOM الظاهرة لملء الفتحة. عندها ستكون نتيجة تصيير هذا الجزء مثلًا من شجرة DOM الخفية هي Anonymous إذا لم توجد فتحة باسم "slot="username في شجرة DOM الظاهرة.

<div>Name: <slot name="username">Anonymous</slot> </div> الفتحة الافتراضية هي أول فتحة بلا اسم

ستكون أول فتحة <slot> في شجرة DOM الخفية غير مالكة لاسم هي الفتحة الافتراضية، وستحصل على كل العقد في شجرة DOM الظاهرة التي لم تُدرج في أي فتحة أخرى. لنضف في المثال التالي فتحةً افتراضيةً للعنصر المخصص <user-card> الذي سيخفي كل معلومات المستخدم غير المدرجة في فتحات:

<script> customElements.define('user-card', class extends HTMLElement { connectedCallback() { this.attachShadow({mode: 'open'}); this.shadowRoot.innerHTML = ` <div>Name: <slot name="username"></slot> </div> <div>Birthday: <slot name="birthday"></slot> </div> <fieldset> <legend>Other information</legend> <slot></slot> </fieldset> `; } }); </script> <user-card> <div>I like to swim.</div> <span slot="username">John Smith</span> <span slot="birthday">01.01.2001</span> <div>...And play volleyball too!</div> </user-card>

See the Pen JS-p3-06-Shadow-DOM -ex4 by Hsoub (@Hsoub) on CodePen.

سيوضع محتوى شجرة DOM الظاهرة غير المُدرج في المثال السابق ضمن العنصر <fieldset> الذي يحمل تسمية Other information، حيث ستُدرج العناصر ضمن الفتحة واحدًا تلو الآخر، ولذا ستُدرج قطعتا المعلومات معًا ضمن الفتحة الافتراضية.

وستبدو شجرة DOM المسطحة كالتالي:

<user-card> #shadow-root <div>Name: <slot name="username"> <span slot="username">John Smith</span> </slot> </div> <div>Birthday: <slot name="birthday"> <span slot="birthday">01.01.2001</span> </slot> </div> <fieldset> <legend>Other information</legend> <slot> <div>I like to swim.</div> <div>...And play volleyball too!</div> </slot> </fieldset> </user-card> مثال القائمة

لنعد الآن إلى العنصر المخصص الذي أشرنا إليه سابقًا في هذا الفصل، حيث يمكن استخدام الفتحات لتوزيع العناصر، إليك ترميز HTML للعنصر المخصص <custom-menu>:

<custom-menu> <span slot="title">Candy menu</span> <li slot="item">Lollipop</li> <li slot="item">Fruit Toast</li> <li slot="item">Cup Cake</li> </custom-menu>

تمثل الشيفرة التالية قالب شجرة DOM الخفية مزوّدةً بالفتحات الملائمة:

<template id="tmpl"> <style> /* menu styles */ </style> <div class="menu"> <slot name="title"></slot> <ul><slot name="item"></slot></ul> </div> </template>
  1. يُدرج <"span slot="title> ضمن <"slot name="title>.
  2. هناك العديد من عناصر القائمة <li slot="item"> في القالب، لكن توجد فتحة مناسبة <slot name="item"> واحدة ضمنه، لذلك ستُدرج كل عناصر القائمة -مثل <li slot="item">- ضمن الفتحة الواحد تلو الآخر، وهذا ما يُشكِّل القائمة.

ستصبح شجرة DOM المسطّحة كالتالي:

<custom-menu> #shadow-root <style> /* menu styles */ </style> <div class="menu"> <slot name="title"> <span slot="title">Candy menu</span> </slot> <ul> <slot name="item"> <li slot="item">Lollipop</li> <li slot="item">Fruit Toast</li> <li slot="item">Cup Cake</li> </slot> </ul> </div> </custom-menu>

قد نُلاحظ تواجد العنصر <li> ضمن القائمة <ul> في شجرة DOM صالحة، لكن الشجرة في الشيفرة السابقة مسطحة تصف آلية تصيير المكوِّن، وهذا الأمر طبيعي، ويبقى علينا إضافة معالج للحدث click لفتح وإغلاق القائمة <custom-menu> لتصبح جاهزةً:

customElements.define('custom-menu', class extends HTMLElement { connectedCallback() { this.attachShadow({mode: 'open'}); //هو قالب الشجرة الخفية في الأعلى this.shadowRoot.append( tmpl.content.cloneNode(true) ); // لا يمكن اختيار عقد من الشجرة الظاهرة، لذلك تُعالج النقرات ضمن الفتحة this.shadowRoot.querySelector('slot[name="title"]').onclick = () => { // فتح وإغلاق القائمة this.shadowRoot.querySelector('.menu').classList.toggle('closed'); }; } });

وستكون النتيجة:

See the Pen JS-p3-06-Shadow-DOM -ex5 by Hsoub (@Hsoub) on CodePen.

يمكن بالطبع تعزيز وظائف القائمة من خلال الأحداث والتوابع وغيرها.

تحديث الفتحات

ماذا لو أرادت الشيفرة الخارجية إضافة أو إزالة العناصر ديناميكيًا؟ يراقب المتصفح الفتحات، ثم تُحدَّث العناصر المصيّرة إذا تغيرت أو أزيلت العناصر المدرجة، وطالما ستُصيَّر العناصر الظاهرة فقط في الفتحات -ولن تُنسَخ- فستظهر أي تغييرات عليها مباشرةً، فلا حاجة لفعل أي شيء لتحديث نتيجة التصيير، لكن يمكن استخدام الحدث slotchange إذا أرادت شيفرة المكوّن مراقبة التغيرات في الفتحات.

يُدرَج في المثال التالي عنصر قائمة ديناميكيًا بعد ثانية، ويتغير العنوان بعد ثانيتين:

<custom-menu id="menu"> <span slot="title">Candy menu</span> </custom-menu> <script> customElements.define('custom-menu', class extends HTMLElement { connectedCallback() { this.attachShadow({mode: 'open'}); this.shadowRoot.innerHTML = `<div class="menu"> <slot name="title"></slot> <ul><slot name="item"></slot></ul> </div>`; //لا يمتلك الجذر الخفي معالجات أحداث لذا سنستخدم الابن الأول this.shadowRoot.firstElementChild.addEventListener('slotchange', e => alert("slotchange: " + e.target.name) ); } }); setTimeout(() => { menu.insertAdjacentHTML('beforeEnd', '<li slot="item">Lollipop</li>') }, 1000); setTimeout(() => { menu.querySelector('[slot="title"]').innerHTML = "New menu"; }, 2000); </script>

See the Pen JS-p3-06-Shadow-DOM -ex6 by Hsoub (@Hsoub) on CodePen.

يُحدَّث تصيير القائمة كل مرة دون تدخلنا، وسنلاحظ في الشيفرة السابقة وجود حدثي slotchange:

  1. عند التهيئة: حيث يقع الحدث slotchange: title مباشرةً عندما يُدرج "slot="title من شجرة DOM الظاهرة ضمن الفتحة الموافقة له.
  2. بعد ثانية: يقع الحدث slotchange: item عندما يُضاف عنصر قائمة جديد <"li slot="item>.

لاحظ أنه لا وجود للحدث slotchange بعد ثانيتين عندما يُعدَّل محتوى "slot="title، والسبب هو عدم وجود أي تغييرات في الفتحة، حيث عدّلنا محتوى عنصر مُدرج في الفتحة، وهذا أمر مختلف.

يمكن تتبع التغيرات الداخلية ضمن شجرة DOM الظاهرة باستخدام شيفرة JavaScript من خلال الآلية المعمّمة MutationObserver.

الواجهة البرمجية للفتحات

لنلق نظرةً على توابع JavaScript المتعلقة بالفتحات، إذ تنظر JavaScript كما رأينا سابقًا إلى شجرة DOM الحقيقية دون تسطيح flattening، لكن إذا كانت قيمة الخيار mode في الشجرة الخفية هي "open"، فسنتمكن من معرفة أي العناصر أدرِجت في فتحات، كما يمكننا معرفة الفتحة من العنصر الذي أدرج ضمنه:

  • node.assignedSlot: تعيد الفتحة <slot> التي أسندت إليها عقدة من الشجرة node.
  • ({slot.assignedNodes({flatten: true/false: يعيد عقد DOM التي أسندت إلى فتحة، وستكون قيمة الخيار flatten هي "false" افتراضيًا، لكن إذا ضبطت على القيمة "true" صراحةً، فسيُنظر إلى DOM المسطحة بعمق، كما سيعيد التابع الفتحات المتداخلة nested في حال وجود مكوّنات متداخلة، ويعيد "محتوى التراجع" إذا لم يجد أي عقد أسندت إلى فتحات.
  • ({slot.assignedElements({flatten: true/false: يعيد عناصر DOM التي أسندت إلى فتحة، وهو يشابه التابع السابق إلا أنه يعيد عقد العنصر.

تُستخدَم هذه التوابع عندما نريد إظهار محتوى الفتحات وتتبعها باستخدام JavaScript. وإذا أراد المكوّن <custom-menu> مثلًا معرفة ما الذي يعرضه، فيمكنه تعقّب الحدث slotchange والحصول على العناصر من خلال slot.assignedElements:

<custom-menu id="menu"> <span slot="title">Candy menu</span> <li slot="item">Lollipop</li> <li slot="item">Fruit Toast</li> </custom-menu> <script> customElements.define('custom-menu', class extends HTMLElement { items = [] connectedCallback() { this.attachShadow({mode: 'open'}); this.shadowRoot.innerHTML = `<div class="menu"> <slot name="title"></slot> <ul><slot name="item"></slot></ul> </div>`; // يقع عندما يتغير محتوى الفتحة this.shadowRoot.firstElementChild.addEventListener('slotchange', e => { let slot = e.target; if (slot.name == 'item') { this.items = slot.assignedElements().map(elem => elem.textContent); alert("Items: " + this.items); } }); } }); // items update after 1 second setTimeout(() => { menu.insertAdjacentHTML('beforeEnd', '<li slot="item">Cup Cake</li>')}, 1000); </script>

See the Pen Untitled by Hsoub (@Hsoub) on CodePen.

تنسيق شجرة DOM الخفية

يمكن أن تحتوي شجرة DOM الخفية على الوسمين <style> و<link rel="stylesheet" href="…"‎>، وتُخزّن أوراق التنسيق في الوسم الأخير في ذاكرة HTTP المؤقتة، لذلك لن يُعاد تحميلها للمكونات المختلفة التي تستخدم نفس القالب، ويمكن أن نعد ما لي قاعدةً عامةً: يعمل التنسيق المحلي داخل الشجرة الخفية، بينما تعمل تنسيقات المستند ككل خارجها، مع وجود بعض الاستثناءات.

المحدد host:

يسمح هذا المحدد باختيار المضيف الخفي، أي العنصر الذي يحتوي الشجرة الخفية، لنفترض مثلًا أننا سننشئ عنصرًا مخصصًا <custom-dialog> يجب أن يتوسط الصفحة، لذلك لا بدّ من تنسيق المكوّن <custom-dialog> ذاته، وهذا ما يفعله host: تمامًا:

<template id="tmpl"> <style> /* the style will be applied from inside to the custom-dialog element */ :host { position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%); display: inline-block; border: 1px solid red; padding: 10px; } </style> <slot></slot> </template> <script> customElements.define('custom-dialog', class extends HTMLElement { connectedCallback() { this.attachShadow({mode: 'open'}).append(tmpl.content.cloneNode(true)); } }); </script> <custom-dialog> Hello! </custom-dialog>

See the Pen JS-p3-06-Shadow-DOM-styling -ex1 by Hsoub (@Hsoub) on CodePen.

توريث التنسيقات Cascading

يبقى المضيف الخفي -<custom-dialog> ذاته- ضمن شجرة DOM الظاهرة، لذلك سيتأثر بقواعد CSS التي يخضع لها المستند كاملاً، فإذا وجدت خاصية جرى تنسيقها محليًا ضمن host: وفي المستند بنفس الوقت، فسيُطبق حينها تنسيق المستند.

فإن كان المستند مثلًا:

<style> custom-dialog { padding: 0; } </style>

فسيُعرض العنصر <custom-dialog> دون حاشية padding.

من الملائم أن نعّرف تنسيقًا افتراضيًا للمكوّن ضمن القاعدة host:، ثم نعيد التنسيق -إذا أردنا- باستخدام تنسيق المستند، ويبقى الاستثناء في الخاصية التي نعنونها important!،عندها يُطبق التنسيق المحلي.

المحدد (host(selector:

هو نفسه host: لكنه يُطبّق فقط إذا تطابق اسم المضيف الخفي مع الوسيط selector، فعلى سبيل المثال: نريد توسيط المكوّن <custom-dialog> في الصفحة فقط إذا امتلك السمة centered:

<template id="tmpl"> <style> :host([centered]) { position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%); border-color: blue; } :host { display: inline-block; border: 1px solid red; padding: 10px; } </style> <slot></slot> </template> <script> customElements.define('custom-dialog', class extends HTMLElement { connectedCallback() { this.attachShadow({mode: 'open'}).append(tmpl.content.cloneNode(true)); } }); </script> <custom-dialog centered> Centered! </custom-dialog> <custom-dialog> Not centered. </custom-dialog>

See the Pen JS-p3-06-Shadow-DOM-styling -ex2 by Hsoub (@Hsoub) on CodePen.

والآن سيُطبّق التوسيط فقط على المكوّن الأول <custom-dialog centered>.

باختصار، يمكن استخدام عائلة المحددات host: لتنسيق العنصر الرئيسي للمكوِّن بناءً على السياق، ويمكن تغيير هذه التنسيقات -ما لم تستخدم السمة important!- من قبل تنسيق المستند.

تنسيق محتوى الفتحات

لننظر إلى حالة وجود فتحات slots.

تأتي المكوّنات المقلمة slotted components من شجرة DOM الظاهرة، لذا ستستخدم تنسيقات المستند، ولن يؤثر التنسيق المحلي على المحتوى المركب. سنرى في المثال التالي أنّ العنصر المركب <span> سيظهر بخط سميك وفق تنسيق المستند، لكنه لن يتأثر بقيمة الخاصية background العائدة للتنسيق المحلي للعنصر:

<style> span { font-weight: bold } </style> <user-card> <div slot="username"><span>John Smith</span></div> </user-card> <script> customElements.define('user-card', class extends HTMLElement { connectedCallback() { this.attachShadow({mode: 'open'}); this.shadowRoot.innerHTML = ` <style> span { background: red; } </style> Name: <slot name="username"></slot> `; } }); </script>

See the Pen JS-p3-06-Shadow-DOM-styling -ex3 by Hsoub (@Hsoub) on CodePen.

سيكون الخط سميكًا لكنه ليس باللون الأحمر. وإذا أردنا تنسيق العناصر المركبة في مكوننا فأمامنا خياران هما:

الأول هو تنسيق الفتحة <slot> نفسه اعتمادًا على وراثة تنسيق CSS:

<user-card> <div slot="username"><span>John Smith</span></div> </user-card> <script> customElements.define('user-card', class extends HTMLElement { connectedCallback() { this.attachShadow({mode: 'open'}); this.shadowRoot.innerHTML = ` <style> slot[name="username"] { font-weight: bold; } </style> Name: <slot name="username"></slot> `; } }); </script>

See the Pen JS-p3-06-Shadow-DOM-styling -ex4 by Hsoub (@Hsoub) on CodePen.

سيكون الخط سميكًا في <p>John Smith</p>، وذلك لأن وراثة CSS ستنقل التنسيق من الفتحة <slot> إلى المحتويات، لكن ليست كل خصائص CSS قابلة للوراثة.

الخيار الثاني هو استخدام محدد الصنف الوهمي (slotted(selector::، والتي تطابق العناصر بناءً على شرطين:

  1. أن يكون العنصر مركبًا وآتيًا من الشجرة الظاهرة، ولا يهم اسم الفتحة هنا، ويطبق على العنصر المركب ذاته وليس على أبنائه.
  2. أن يطابق العنصر قيم الوسيط selector.

يختار المحدد (slotted(div:: في مثالنا التالي العنصر <"div slot="username> تمامًا وليس أبناءه:

<user-card> <div slot="username"> <div>John Smith</div> </div> </user-card> <script> customElements.define('user-card', class extends HTMLElement { connectedCallback() { this.attachShadow({mode: 'open'}); this.shadowRoot.innerHTML = ` <style> ::slotted(div) { border: 1px solid red; } </style> Name: <slot name="username"></slot> `; } }); </script>

See the Pen JS-p3-06-Shadow-DOM-styling -ex5 by Hsoub (@Hsoub) on CodePen.

لاحظ أنه يمكن للمحدد slotted:: التقدم داخل عناصر الفتحة، لذا تكون المحددات التالية غير صحيحة:

::slotted(div span) { /*مع هذا المحدد div لايتطابق العنصر */ } ::slotted(div) p { /* DOM لا يمكنه التقدم داخل */ }

يمكن استخدام slotted:: أيضًا في querySelector.

خطافات CSS مع خاصيات مخصصة

كيف ننسق العناصر الداخلية للمكوِّن من المستند الرئيسي؟

تطبق المحددات -مثل host:- القواعد على عناصر مخصصة، مثل <custom-dialog> أو <user-card>، لكن كيف ننسق عناصر شجرة DOM الخفية ضمنها؟ لا يوجد محدد قادر على التأثير المباشر على تنسيق شجرة DOM الخفية من المستند الرئيسي، لكن -وكما عرضنا توابع للتفاعل مع مكوننا- يمكن عرض متغيرات CSS -خصائص CSS مخصصة- إلى التنسيق.

تتواجد الخصائص المخصصة على كل المستويات وفي كلتا الشجرتين الخفية والظاهرة، حيث يمكن مثلًا استخدام المتغير ‎--user-card-field-color في شجرة DOM الخفية لتنسيق الحقول، ويمكن أن يضبط المستند الخارجي قيمتها:

<style> .field { color: var(--user-card-field-color, black); /* معرفًا استخدم اللون الأسود --user-card-field-color */ } </style> <div class="field">Name: <slot name="username"></slot></div> <div class="field">Birthday: <slot name="birthday"></slot></div>

عندها يمكن التصريح عن هذه الخاصية في المستند الخارجي للمكوّن <user-card>:

user-card { --user-card-field-color: green; }

تخترق خاصيات CSS المخصصة شجرة DOM الخفية، وهي مرئية في كل مكان، لذلك يمكن للقاعدة الداخلية field. استخدامها، وإليك مثالًا كاملًا:

<style> user-card { --user-card-field-color: green; } </style> <template id="tmpl"> <style> .field { color: var(--user-card-field-color, black); } </style> <div class="field">Name: <slot name="username"></slot></div> <div class="field">Birthday: <slot name="birthday"></slot></div> </template> <script> customElements.define('user-card', class extends HTMLElement { connectedCallback() { this.attachShadow({mode: 'open'}); this.shadowRoot.append(document.getElementById('tmpl').content.cloneNode(true)); } }); </script> <user-card> <span slot="username">John Smith</span> <span slot="birthday">01.01.2001</span> </user-card>

See the Pen JS-p3-06-Shadow-DOM-styling -ex6 by Hsoub (@Hsoub) on CodePen.

شجرة DOM الخفية والأحداث

إنّ الفكرة الأساسية من الشجرة الخفية هي تغليف تفاصيل التنفيذ الداخلي للمكوّن. لنفترض وقوع حدث نقرٍ داخل شجرة DOM الخفية للمكوّن <user-card>، لكن لا تملك السكربتات في المستند الرئيسي أي فكرة عن ما يجري داخل الشجرة، وخاصةً إذا أتى المكون من طرف ثالث، لذا يعيد المتصفح استهداف الحدث للمحافظة على تغليف التفاصيل.

تستهدف الأحداث التي تحدث في شجرة DOM الخفية العنصر المضيف عندما تُلتقط خارج إطار المكوِّن. وإليك مثالًا بسيطًا:

<user-card></user-card> <script> customElements.define('user-card', class extends HTMLElement { connectedCallback() { this.attachShadow({mode: 'open'}); this.shadowRoot.innerHTML = `<p> <button>Click me</button> </p>`; this.shadowRoot.firstElementChild.onclick = e => alert("Inner target: " + e.target.tagName); } }); document.onclick = e => alert("Outer target: " + e.target.tagName); </script>

See the Pen JS-p3-06-Shadow-DOM-and-events -ex1 by Hsoub (@Hsoub) on CodePen.

إذا نقرت على الزر فستظهر الرسائل التالية:

  1. الهدف الداخلي BUTTON: معالج حدث داخلي يحصل على الهدف الصحيح، وهو عنصر داخل الشجرة الخفية.
  2. الهدف الخارجي USER-CARD: معالج حدث المستند، والذي يحصل على المضيف الخفي مثل هدف.

إنّ إعادة استهداف retargeting الأحداث أمر مفيد جدًا، إذ يُفترض أن لا يعرف المستند الخارجي ما يوجد داخل المكوّن، فالحدث قد وقع من وجهة نظره على المكوّن <user-card>.

لا تحدث إعادة الاستهداف إذا وقع الحدث في عنصر مُركّب، وذلك لأنه موجود فيزيائيًا في شجرة DOM الظاهرة، فلو نقر مستخدم مثلًا على <span slot="username"‎> في المثال التالي، فسيستهدف الحدث العنصر span هذا بالتحديد، وفي كلا معالجي الحدث الخاصين بالشجرتين الظاهرة والخفية:

<user-card id="userCard"> <span slot="username">John Smith</span> </user-card> <script> customElements.define('user-card', class extends HTMLElement { connectedCallback() { this.attachShadow({mode: 'open'}); this.shadowRoot.innerHTML = `<div> <b>Name:</b> <slot name="username"></slot> </div>`; this.shadowRoot.firstElementChild.onclick = e => alert("Inner target: " + e.target.tagName); } }); userCard.onclick = e => alert(`Outer target: ${e.target.tagName}`); </script>

See the Pen JS-p3-06-Shadow-DOM-and-events -ex2 by Hsoub (@Hsoub) on CodePen.

فإذا نُقر الاسم "John Smith"، فسيكون الهدف بالنسبة لمعالجي الحدث الداخلي والخارجي هو <span slot="username">، وهنا لن يُعاد الاستهداف لأنه عنصر من DOM الظاهرة. من ناحية أخرى، إذا نُقر عنصر يعود إلى شجرة DOM الخفية مثل العنصر <b>Name</b>، فسُيعاد ضبط هدف الحدث event.target أثناء انسياب الحدث لخارج شجرة DOM الخفية ليصبح <user-card>.

التابعان Bubbling و()event.composedPath

تُستخدم DOM المسطحة لدفع الأحداث إلى الخارج bubbling، لذا إذا وُجد عنصر مركب slotted في فتحة ووقع حدث في مكان ما بداخله، فسيندفع الحدث إلى خارج العنصر باتجاه الفتحة <slot> وإلى الأعلى، ويمكن الحصول على المسار الكامل للهدف الأصلي للحدث مع كل عناصر شجرته الخفية باستخدام التابع ()event.composedPath، ويؤخذ هذا المسار -كما يدل اسم التابع- بعد عملية التركيب، وإليك شجرة DOM المسطحة للمثال السابق:

<user-card id="userCard"> #shadow-root <div> <b>Name:</b> <slot name="username"> <span slot="username">John Smith</span> </slot> </div> </user-card>

عند النقر على <span slot="username">، سيعيد استدعاء التابع ()event.composedPath المصفوفة التالية:

[span, slot, div, shadow-root, user-card, body, html, document, window]، وهي شجرة العناصر كاملةً ابتداءًا من العنصر المُستهدف في شجرة DOM المسطحة بعد التركيب.

اقتباس

لا يمكن الحصول على تفاصيل الشجرة الخفية إلا في حالة {'mode:'open}، فإذا أُنشئت الشجرة الخفية باستخدام {'mode: 'closed}، فسيبدأ المسار المركب من المضيف user-card وإلى المستوى الأعلى. يشابه هذا الأمر بقية التوابع التي تعمل مع شجرة DOM الخفية، فالتفاصيل الداخلية للأشجار المغلقة مخفية.

التابع event.composed

تنساب معظم الأحداث إلى خارج حدود شجرة DOM الخفية، لكن هذا لا ينطبق على بعضها، وذلك بحسب قيمة كائن الحدث composed، فإذا كانت "true" فستعبر الأحداث حدود الشجرة، وإلا فستلتقَط داخل حدود الشجرة فقط.

إذا ألقينا نظرةً على توصيفات أحداث واجهة المستخدم UI Events specification، فسنجد أن قيمة composed هي "true" للأحداث:

  • blur وfocus وfocusin وfocusout.
  • click وdblclick.
  • mousedown وmouseup وmousemove وmouseout وmouseover.
  • wheel.
  • beforeinputوinputوkeydownوkeyup.
  • جميع أحداث اللمس والتأشير.

أما الأحداث التي يكون فيها composed: false فهي:

  • mouseenter وmouseleave: التي لا تنساب للخارج إطلاقًا.
  • load وunload وabort وerror.
  • select.
  • slotchange.

يمكن التقاط هذه الأحداث من قبل العناصر داخل شجرة DOM نفسها، حيث يقيم العنصر المستهدف.

الأحداث المخصصة

لا بدّ من ضبط الخاصيتين bubbles وcomposed على القيمة "true" إذا أردنا إيفاد أحداث مخصصة تنساب إلى مستوى أعلى وإلى خارج المكوّن، وسننشئ في المثال التالي div#inner في شجرة DOM الخفية ضمن div#outer ونطلق حدثين فيها، وسيصل الحدث الذي يمتلك الخاصية composed: true فقط إلى الخارج، وصولًا إلى المستند:

<div id="outer"></div> <script> outer.attachShadow({mode: 'open'}); let inner = document.createElement('div'); outer.shadowRoot.append(inner); /* div(id=outer) #shadow-dom div(id=inner) */ document.addEventListener('test', event => alert(event.detail)); inner.dispatchEvent(new CustomEvent('test', { bubbles: true, composed: true, detail: "composed" })); inner.dispatchEvent(new CustomEvent('test', { bubbles: true, composed: false, detail: "not composed" })); </script> خلاصة

شجرة DOM الخفية هي طريقة لإنشاء شجرة محلية خاصة بالمكوِّن.

  1. ({shadowRoot = elem.attachShadow({mode: open|closed: ينشئ شجرة DOM خفيةً للعنصر elem، ويمكن الوصول إليها باستخدام الخاصية elem.shadowRoot إذا كانت الخاصية "mode="open.
  2. يمكن تعميم الكائن shadowRoot باستخدام innerHTML أو توابع DOM أخرى.

عناصر شجرة DOM الخفية:

  • لها فضاء خاص لقيم المعرّفات id.
  • غير مرئية لمحددات JavaScript الموجودة في المستند الرئيسي، مثل querySelector.
  • تستخدم التنسيق الموجود ضمن الشجرة الخفية فقط، وليس تنسيق المستند الرئيسي.

تُصيّر شجرة DOM الخفية -إن وجدت- ضمن ما يُسمى شجرة DOM الظاهرة light DOM، مثل عناصر أبناء نظاميين.

إذا امتلك عنصر شجرة DOM خفيةً، فلن تُعرض شجرة DOM الظاهرة عادةً، لذلك تسمح الفتحات slots -الناتجة عن عملية تقليم الشجرة- بعرض عناصر من شجرة DOM الظاهرة في أماكن محددة من شجرة DOM الخفية، ويوجد نوعان من الفتحات:

  • الفتحات المسماة <slot name="X">...</slot>: الحصول على أبناء شجرة DOM الظاهرة فتحتها slot="X"‎.
  • الفتحة الافتراضية: وهي أول فتحة <slot> لا تحمل اسمًا، وتهمَل الفتحات غير المسماة التي تأتي لاحقًا، كما يحصل على أبناء شجرة DOM الظاهرة الذين لم يُدرجوا في فتحات.
  • إذا وجدَت عدة عناصر في الفتحة نفسها، فستُدرج واحدًا بعد الآخر.
  • يُستخدَم محتوى الفتحة <slot> محتوىً للتراجع، لذا يظهر هذا المحتوى عند عدم وجود أبناء لشجرة DOM الظاهرة في الفتحة.

تُدعى عملية تصيير العناصر المدرجة في فتحات ضمن فتحاتها بالتركيب composition، وتسمى النتيجة شجرة DOM المسطّحة.

لا تنقل عملية التركيب العقد في الواقع، فمن وجهة نظر JavaScript ستبقى شجرة DOM نفسها، ويمكن الوصول إلى الفتحات من خلال توابع JavaScript التالية:

  • ()slot.assignedNodes/Elements: يعيد العقد أو العناصر داخل فتحة.
  • node.assignedSlot: وهي الخاصية المعاكسة، وتعيد الفتحة من العقدة التي تشغلها.

إذا أردنا معرفة ما نُظهره، فيمكننا تعقب محتوى الفتحة باستخدام:

  • الحدث slotchange: ويقع في المرة الأولى التي تُملأ بها الفتحة، أو أثناء عمليات الإضافة أو الإزالة أو الاستبدال لعنصر مُدرج في الفتحة وليس لأبنائه، وستكون الفتحة event.target.
  • MutationObserver للغوص عميقًا في محتوى الفتحة ومعرفة التغيرات التي حدثت ضمنها.

بعد أن تعرفنا على كيفية إظهار عناصر من شجرة DOM الظاهرة، سنتعرف على كيفية تنسيقها بالشكل الصحيح، وتبقى القاعدة الأساسية هي أن عناصر شجرة DOM الخفية تُنسّق من الداخل، والظاهرة من الخارج -مع بعض الاستثناءات-، وهذا ما سنتعرف عليه في الفصل القادم.

يمكن أن تحوي شجرة DOM الخفية تنسيقات مثل <style> أو <"link rel="stylesheet>، وتؤثر التنسيقات المحلية في:

  • الشجرة الخفية.
  • المضيف الخفي عندما يستعمل عائلة المحددات host:.
  • العناصر المركبة القادمة من شجرة DOM الظاهرة، حيث يسمح المحدد (slotted(selector:: باختيار العناصر المركبة ذاتها وليس أبنائها.

بينما تؤثر تنسيقات المستند الرئيسي في:

  • المضيف الخفي، إذا كان حيًّا في المستند الخارجي.
  • العناصر المركبة ومحتوياتها، إذا كانت أيضًا في المستند الخارجي.

سيُطبق تنسيق المستند الخارجي عندما يحدث تضارب في تنسيق العنصر، إلا عند استخدام الخاصية مع عنوان important!، حيث يُطبق التنسيق المحلي.

تخترق خصائص CSS المخصصة شجرة DOM الخفية، وتستخدم مثل خطافات hooks لتنسيق المكوّن:

  1. يستخدم المكوِّن خصائص CSS المخصصة لتنسيق العناصر المفتاحية، مثل (<var(--component-name-title, <default value.
  2. ينشر مؤلف المكون هذه الخصائص للمطورين، وهي بأهمية توابع المكوّنات العامة.
  3. عندما لا يرغب المطور في قضاء وقت طويل على التنسيق، فسيسند الخاصية ‎--component-name-title إلى المضيف الخفي أو الخاصية التي أشرنا إليها في الأعلى.
  4. الربح طبعًا!

تتجاوز الأحداث حدود شجرة DOM الخفية إذا كانت قيمة الراية composedهي true، والتي تكون كذلك لمعظم الأحداث المضمنة Built-in، كما هو محدد في التوصيفات:

من الأحداث المضمنة التي يكون فيها composed: false:

  • mouseenter وmouseleave: لا تنساب للخارج إطلاقًا.
  • load وunload وabort وerror.
  • select.
  • slotchange.

يمكن التقاط هذه الأحداث من قِبل العناصر داخل شجرة DOM نفسها.

إذا أردنا إيفاد أحداث مخصصة CustomEvent فلا بد من ضبط الخاصية composed على القيمة "true" بشكل صريح.

اقتباس

ملاحظة: قد تتداخل شجرة DOM الخفية ضمن أخرى عند وجود مكونات متداخلة، كما تنساب الأحداث المركّبة في هذه الحالة عبر حدود أشجار DOM الخفية جميعها، فإذا أردنا أن نستهدف بالحدث مكوّنًا يقع خارج الشجرة مباشرةً، فيمكن إيفاده إلى المضيف الخفي بعد أن نضبط الراية composed على القيمة "false"، وهكذا سينتقل خارج شجرة الخفية التي تحتوي المكوّن، لكنه لن سينساب إلى مستوىً أعلى.

المراجع

ترجمة -وبتصرف- للفصول Shadow DOM and events و Shadow DOM slots, Composition وShadow DOM وShadow DOM Style من سلسلة The Modern JavaScript Tutorial.

اقرأ أيضًا
70,211 كيفية استخدام مكون الأرشيفات ومكون البحث في ووردبريس

يصبح التنقل ضمن المدونة صعبًا مع نمو حجم المحتوى فيها، حيث يرغب بعض الزوار بالبحث بالأرشيف القديم لمحتوى موقعك، إلا أنهم يتوقفون بسبب ضعف تنظيم الموقع، ولهذا فإن مكون الأرشيفات يُمّكن الزوار من التنقل السلس ضمن المحتوى حسب عام أو شهر نشر المقالات.

من ناحية أخرى يجب أن يوفر موقعك تجربة مستخدم جيدةً لضمان استقطاب وجذب الزوار، وأحد الطُرق السهلة لتحقيق هذا هي من خلال مساعدة الزوار على إيجاد ما يبحثون عنه بسهولة، وهنا يكمن دور مكون البحث في ووردبريس الذي تستطيع إضافته لأي مقال أو صفحة في ووردبريس، ليتمكن زوار موقعك من استخدامه والعثور على المحتوى المطلوب.

سوف نشرح في هذا المقال كيفية إضافة مكون الأرشيفات ومكون البحث إلى الصفحات والمقالات ووكيفية استخدام إعداداته وخياراته المتنوعة، مع ذكر بعض النصائح لاستخدامه والإجابة عن بعض الأسئلة المتكررة حوله..

كيفية إضافة مكون الأرشيفات لصفحات ومقالات ووردبريس

تستطيع إضافة مكون الأرشيفات لمقالات وصفحات موقعك كما هو الحال مع أي مكون آخر، فكل ما عليك فعله هو التوجه من لوحة تحكم ووردبريس إلى مقال أو صفحة جديدة، أو تحرير أي مقال أو صفحة موجودة مسبقًا، ثم الضغط على إشارة "+" الموجودة في جسم المنشور أو أعلى يمين النافذة. الآن ابحث عن أرشيفات، ثم اضغط عليه لإضافته لقسم المحتوى.

سوف تظهر لك روابط لأرشيف المدونة بعد إضافة المكون مباشرةً تُظهِر أرشيف الأشهر السابقة.

كما ترى، فإن مكون الأرشيفات لا يُضيف ترويسةً أو أي شيء آخر يُعرفه على أساس قسم، لكنه يوفر بعض خيارات التخصيص الأخرى. وقبل الحديث عن هذه الخيارات والإعدادات، من المهم أن تعلم أنك تستطيع إضافة مكون الأرشيفات كودجت، حيث تضع العديد من المواقع روابط أرشيف المقالات ضمن الشريط الجانبي أو التذييل لتُسهل على القارئ العثور على ما يبحث عنه.

تستطيع التوجه إلى المظهر ثم ودجات واختر القسم الذي تريد عرض الأرشيف ضمنه، وانتبه إلى أن اختيار المكان الصحيح أمر مهم ليعثر الزوار عليه بسهولة، ويعتمد المكان الأفضل على قالب ووردبريس الذي تستخدمه وتصميم الموقع.

إعدادات وخيارات مكون الأرشيفات

لا يتضمن مكون الأرشيفات على الكثير من خيارات التخصيص، حيث تعتمد قائمة تصميم العنصر على القالب الذي تستخدمه في الموقع. لا تستطيع تغيير نوع الخط أو لونه أو لون الروابط، لكن توجد خيارات أخرى، فإن وضعت مؤشر الفأرة فوق المكون فستظهر لك خيارات تعديل المحاذاة أو التغيير لنوع عنصر آخر.

للوصول للمزيد من الخيارات عليك الضغط على المكون، ثم الضغط على أيقونة اﻹعدادات في الزاوية اليسرى العلوية من الشاشة. سوف تظهر لك قائمة تتضمن خيارات العرض من عدد المقالات أو تحويل قائمة الأرشيف إلى قائمة منسدلة.

تستطيع اختيار عرض الأرشيف مثل قائمة أو قائمة منسدلة، كما أن إضافة عدد المقالات إلى المكون يُساعد الزوار على اختيار الأشهر التي يريدون البحث فيها.

تستطيع حفظ المقال أو الصفحة بعد اختيار طريقة العرض الملائمة لك ليتمكن زوار الموقع من تصفح المقالات بسهولة أكبر.

أفضل النصائح لاستخدام فعال لمكون الأرشيفات

يجب عليك إضافة مكون الأرشيفات في مكان يسهل على الزوار العثور عليه لتكون عملية انتقالهم بين المقالات عمليةً سلسةً ومريحة، تضع الكثير من المواقع روابط الأرشيفات ضمن الشريط الجانبي أو التذييل، ويُعَد الشريط الجانبي خيارًا جيدًا جدًا من الصعب عدم ملاحظته.

يُنصح بإضافة عناصر أخرى يُمكن أن تُساعد الزوار أيضًا على الوصول للمحتوى الذي يريدونه، وذلك للحصول على أفضل النتائج، فعلى سبيل المثال تستطيع تضمين:

  • قسم لأحدث المقالات: يُسلط هذا القسم الضوء على المحتوى الحديث نسبيًا في موقعك، وهو إضافة جميلة بجانب مكون الأرشيفات كونه يوفر خيارات أوسع للزوار لتصفح المحتوى.
  • مربع البحث: يُفضِّل بعض الزوار استخدام البحث للعثور على المحتوى المطلوب بدلًا من استخدام الأرشيف، وهذا مفيد إن كان موقعك يحتوي على كمية ضخمة من المقالات.

إن استخدام مكون الأرشيفات مع أحد أو كلا العنصرين السابقين سوف يُساهم في زيادة المدة التي يقضيها الزوار على موقعك، وهذا بدوره يزيد معدل التحويل ويُساعد في بناء جمهور قوي.

أسئلة متكررة حول مكون الأرشيفات في ووردبريس

إن استخدام مكون الأرشيفات سهل، لكن هناك بعض التساؤلات التي يطرحها المستخدمون عن كيفية عمله.

  • متى يجب علي إضافة مكون الأرشيفات في موقعي؟ إن كنت قد أطلقت موقعك منذ فترة قصيرة، فتستطيع الانتظار قليلًا إلى أن ينمو المحتوى ضمن موقعك لحجم مناسب لاستخدام مكون الأرشيفات، ويُنصح باستخدام هذا المكون بعد عدة أشهر من إطلاق الموقع، لكنك تستطيع في هذه المدة استخدام عناصر مختلفة مثل مربع البحث وآخر المقالات إلى حين استخدامك لمكون الأرشيفات.
  • هل أستطيع استخدام مربع البحث بدلًا من قائمة الأرشيف؟ يُنصح بتوفير مربع البحث إلى جانب روابط الأرشيف، فهذا مفيد إن كان موقعك يتضمن العديد من المقالات، كما أن استخدام ودجات مثل آخر المقالات يُحسن تجربة المستخدم.
  • كيف أستطيع تغيير نمط مكون الأرشيفات؟ يعتمد نمط مكون الأرشيفات افتراضيًا على القالب الذي تستخدمه، حيث أن العنصر نفسه لا يوفر أي خيارات تصميم، لكن إن أردت تغيير مظهره، فيُمكنك تخصيصه من خلال استخدام CSS لتغيير مظهر المكون.
كيفية إضافة مكون البحث لمقال أو صفحة في ووردبريس

يحتاج منك الأمر بضع ثوان، حيث عليك أولًا التوجه من لوحة تحكم ووردبريس إلى مقال أو صفحة جديدة، أو تحرير أي مقال أو صفحة موجودة مسبقًا، ثم الضغط على إشارة "+" الموجودة في جسم المنشور أو أعلى يمين النافذة. ابحث الآن عن بحث، ثم اضغط على مكون بحث الذي سوف يظهر لك.

توجد طريقة أخرى لإضافة مكون البحث، وهي من خلال كتابة search/ ضمن قسم المحتوى للمقال أو الصفحة، ثم اختيار المكون المطلوب من القائمة التي سوف تظهر.

إعدادات وخيارات مكون البحث

سوف يظهر شريط أدوات قرب مكون البحث عند إدراجه ضمن قسم المحتوى.

يتضمن شريط الأدوات عدة أدوات تستطيع استخدامها، وفي ما يلي شرح مختصر عن وظائف هذه الأدوات.

  1. تغيير النمط: يسمح لك هذا الخيار بتغيير نمط المكون إلى مجموعة أو أعمدة.
  2. تغيير المحاذاة: يسمح لك هذا الخيار بتغيير محاذاة المكون، والتي تُضبط افتراضيًا على الجهة اليمنى، لكنك تستطيع تغيير المحاذاة لليسار أو الوسط.
  3. تبديل تسمية البحث: تسمح لك هذه الأداة باختيار ما إذا كانت عبارة البحث سوف تظهر قبل حقل النص، فعند تعطيل الخيار سوف يظهر حقل البحث دون ترويسة.
  4. تغيير موضع الزر: ترتبط هذه الأداة بزر البحث الذي يظهر إلى يسار حقل البحث، والخيارات الموجودة هي بدون زر أو زر خارجي أو زر داخلي، حيث يُشير آخر خيارين إلى مكان تواجد الزر ضمن حقل البحث أو خارجه.
  5. استخدام زر مع أيقونة: يسمح لك هذا الخيار بالاختيار بين عرض كلمة البحث ضمن زر البحث أو عرض أيقونة مكبرة.
  6. عريض: تستطيع استعمال هذا الخيار لجعل عبارة البحث التي تظهر فوق حقل البحث أعرض.
  7. مائل: يُستخدم هذا الخيار لعرض نص البحث الذي يظهر فوق حقل البحث بتصميم مائل.
  8. المزيد: عبارة عن قائمة منسدلة توفر المزيد من خيارات الخط.
  9. الخيارات: سوف تجد هنا قائمةً تتضمن المزيد من الخيارات، مثل إدراج مكون جديد قبل أو بعد المكون الحالي.

تجد إلى اليسار الشريط الجانبي، والمزيد من خيارات التحكم.

القسم الأول هو إعدادات العرض، حيث تستطيع تعديل عرض مكون البحث من خلال اختيار قيم موجودة مسبقًا، أو إدخال قيمة مخصصة. القسم الثاني هو متقدم، حيث تستطيع إضافة شيفرة CSS مُخصصة.

أفضل النصائح لاستخدام فعال لمكون البحث

إن استخدام مكون البحث سهل جدًا، ومع بعض النصائح ستستطيع استخدامه بفعالية أكبر. وعليك أولًا اختيار مكان مناسب له، فعلى سبيل المثال، من أفضل الأماكن وضعه في أعلى الجزء الجانبي للصفحة، بحيث ينتبه له الزوار فور دخولهم موقعك.

أيضًا لكي تضمن أن زوار الموقع سوف يعثرون على مكون البحث دون عناء، عليك إضافة مكون البحث في أعلى وأسفل الصفحة، كي يتمكن زوار موقعك من استخدامه قبل وبعد تصفح محتوى الصفحة.

أسئلة متكررة حول مكون البحث في ووردبريس

أصبحت تعلم الآن كل الخيارات والإمكانيات المرتبطة بمكون البحث وكيفية استخدامه، وللتأكد من إحاطتنا بجميع الجوانب الأساسية لهذا المكون، فقد أدرجنا الأسئلة التالية، والتي يتكرر طرحها من قِبل المستخدمين والمجاب عنها هنا:

  • أين أجد مكون البحث في ووردبريس؟ توجد طريقتان تستطيع من خلالها إضافة واستخدام مكون البحث في ووردبريس ضمن مقال أو صفحة، والطريقة الأولى هي من خلال الضغط على زر إضافة مكون وكتابة بحث ضمن حقل البحث، ثم الضغط على أيقونة المكون عند ظهورها. الطريقة الثانية هي من خلال كتابة search/ ضمن المحتوى، واختيار مكون البحث من القائمة التي تظهر ليُضاف هذا المكون.
  • ما هي وظيفة ودجت البحث؟ يُسهّل مكون البحث على المستخدمين العثور على ما يبحثون عنه داخل موقعك، لذا تستطيع تضمينه في مقالات وصفحات الموقع في مكان يسهل على الزوار الانتباه له واستخدامه. حالما يُدخل الزوار عبارةً أو كلمةً مفتاحيةً يبحثون عنها، سيعمل هذا المكون تلقائيًا على توليد قائمة بالمقالات والصفحات المرتبطة بمدخلات البحث ضمن موقعك.
  • أين أستطيع استخدام مكون البحث في ووردبريس؟ تستطيع إضافة هذا المكون في أي مكان في ووردبريس. وتستطيع الوصول له من خلال محرر المكونات، وهذا يعني أنك تستطيع استخدامه في أي مكان ضمن المقالات والصفحات، أضف لما سبق ودجات ووردبريس.
الخلاصة

إن التنقل ضمن أرشيف المدونة يستهلك الكثير من الوقت، خصوصًا إذا أردت العودة لشهور أو أعوام سابقة، حيث أن الانتقال من صفحة لأخرى حتى الوصول للمقال المطلوب يستغرق وقتًا طويلًا، وهنا تأتي أهمية قائمة الأرشيفات التي تُسهل على الزوار التنقل ضمن موقعك وقضاء المزيد من الوقت ضمنه.

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

من المهم بصفتك مالكً لموقع أن تحرص على أن يكون موقعك سهل الاستخدام، وأن يكون التنقل ضمنه سهلًا ومُيسرًا، وأحد الطرق لتحقيق ذلك هي باستخدام حقل البحث ليتمكن الزوار من استخدامه بسرعة وسهولة للعثور على ما يبحثون عنه، ولحسن الحظ فإن ووردبريس يوفر مكونًا يُساعدك على تحقيق هذا بلمح البصر.

كما رأيت في المقال، فإنك تستطيع إضافة مكون البحث في مقالات وصفحات موقعك، من خلال الضغط على زر إضافة المكونات، والبحث عن هذا المكون بإدخال كلمة بحث. تستطيع تعديل عرض ومحاذاة مكون البحث بعد إضافته لأي مقال أو صفحة، إضافةً إلى تخصيص الخط والمظهر، فعلى سبيل المثال تستطيع اختيار عرض أو إخفاء ترويسة البحث، وتعيين مكان زر البحث داخل أو خارج حقل النص.

ترجمة -وبتصرّف- للمقالين How to Use the WordPress Archives Block وHow to Use the WordPress Search Block لصاحبه Will Morris.

اقرأ أيضًا
70,190 اقتصاد صناعة المحتوى: الخطوة المقبلة لعمالقة التواصل الاجتماعي

لقد دفع وباء كورونا بوجوهٍ جديدة كثيرة إلى ساحة صناعة المحتوى ، فالعمل عن بعد والعمل الحر والعمل الذاتي صارت مفاهيم أساسية لدى الكثير من الناس الذين لم يعودوا مقتنعين بالوظيفة التقليدية.

هؤلاء استخدموا بالطبع وسائل التواصل الاجتماعي لترويج أنفسهم ومحتواهم، لكن ليست جميع وسائل التواصل الاجتماعي سواسيةً في ذلك. فقد أدرك صانعي المحتوى أن عليهم امتلاك منصاتهم الخاصة إن أرادوا حقًا امتلاك مشاريعهم، لكنهم أيضًا يعرفون وسائل الربح الممكنة إن شاركوا على هذه المنصات، وهو بدوره ما يدفع بفيس بوك وتويتر وتك توك وغيرها إلى توفير المدخول المادي لهؤلاء الصانعين عن طريق مشاركة الأرباح معهم، لأنهم يعلمون أنهم الوسيلة الوحيدة لجعل الناس يبقون لديهم بدلًا من الذهاب لغيرهم.

كيف يبدأ صانعي المحتوى مشروعهم

يريد أي صانع محتوى جديد بناء جمهوره بأسرع وقتٍ ممكن على أفضل منصة تحوي جمهوره المستهدف، فمثلًا:

  • جمهور الألعاب ومحبيها لا يتواجدون على تويتر، ولهذا لن تجد صانع محتوى متخصص بالألعاب على تويتر اللهم إلا لنشره الأخبار والتحديثات الشخصية، لكن هؤلاء يذهبون لمنصات مثل Twitch وDiscord، لأنها مناسبة أكثر لهذا الجمهور.
  • كما أن التوزع الجغرافي لمستخدمي منصات التواصل الاجتماعي مهم، فمثلًا لا يشيع استخدام فيس بوك في دول الخليج، بينما يستخدم سناب شات أكثر من 71% من الشعب السعودي، وبالتالي من يريد استهداف هذه الفئة عليه أن يتمركز في سناب شات.
  • وتاريخيًا يوتيوب (وفيس بوك في السنوات الثلاث الأخيرة) هما أفضل الأماكن لنشر المحتوى المرئي الطويل، لأنه سهل الوصول والمشاركة إلى أكبر عدد ممكن من الجمهور العام وقابل لتحقيق الانتشار الفيروسي.

هناك بعض صانعي المحتوى ممن لا يمتلكون مواقع شخصية، بل فقط حسابات على مواقع التواصل الاجتماعي. لكن هؤلاء بدؤوا يدركون مؤخرًا أن امتلاك موقع ويب لهم سيزيد من فرص انتشارهم وأرباحهم، لأن المنصات تحتفظ بمعظم الأرباح لنفسها، كما أن منشئي المحتوى هؤلاء يخسرون نسبة كبيرة من الزوار الذين لا يستعملون منصات التواصل التي يعملون عليها وأولئك الذين يبحثون عن الأشياء في محركات البحث كجوجل، وفوق كل هذا عليهم الالتزام بسياسات الاستخدام لكل هذه المنصات.

مع بداية جائحة كورونا – وحيث لم تكن مواقع التواصل الاجتماعي مستعدةً بعد – بدأ الكثير من الداخلين الجدد إلى صناعة المحتوى تحت فكرة إنشاء مواقعهم الخاصة والربح منها عبر وسائل مختلفة كالإعلانات وغيرها، ثم مشاركة محتواهم فقط على مختلف المنصات للحصول على ربح إضافي، ولم تكن هذه المنصات جذّابةً لهم وقتها ليتمركزوا حولها فقط، لكن تدريجيًا بدأت المنصات بالانتباه وترى أن الأفضل لها أن تستوعبهم ليتخلوا عن هذه الفكرة ويركّزوا عليها وحدها، وهذا لزيادة إمكانيات الوصول الإعلاني الخاصّة بها.

أهميّة صانعي المحتوى لأي شركة

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

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

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

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

تحرّكات عمالقة التواصل الاجتماعي لجذب صانعي المحتوى

لأجل ما سبق يحاول عمالقة التواصل الاجتماعي جذب هؤلاء الناس إليهم عبر عدة طرق ووسائل، وكل شبكة تحاول بطريقة مختلفة:

  • تويتر يحاول جذب صانعي المحتوى الصوتي والبودكاست إليه عبر دفع 2500$ شهريًا لهم إن كانوا يحققون شروطًا معينة. ثبت لهم أن العملية صعبة ومكلفة فقد أغلقوا باب التقدّم على هذا البرنامج في أقل من أسبوع بسبب كثرة الطلبات. وقد استحوذ تويتر على منصة Revue للنشرات البريدية وضمّها إلى خدماته ليتمكن المستخدمون من إنشاء نشرات بريدية مدفوعة عبر حساباتهم في تويتر.
  • ولدى فيس بوك ركن خاص بصنّاعي المحتوى يتيح لهم أسائل وأدوات مختلفة للربح من محتواهم على فيس بوك، وخصوصًا المحتوى المرئي. ويمكنهم الربح عبر الإعلانات التي سيعرضها فيس بوك أثناء عرض فيديوهاتهم أو محتواهم على الشبكة، أو عبر الشراكات الخارجية مع العلامات التجارية المهتمة بنفس المحتوى، أو عبر ميزة المقالات الفورية لعرض محتوى المقالات من مواقع الإنترنت داخل فيس بوك نفسه دون الخروج منه.
  • ويمتلك سناب شات مركزًا شبيهًا هو الآخر لصناعة المحتوى بشروط شبيهة.
  • وتيك توك أيضًا لديه برنامج شبيه محدود لأي شخص مشهور على المنصة لديه أكثر من 10 آلاف متابع وحقق 100 ألف مشاهدة حقيقية خلال آخر 30 يومًا، إلا أنه ما يزال في طور التجريب.
  • وتاريخيًا جوجل هي المسيطر الحقيقي على صانعي المحتوى؛ فبرنامج جوجل أدسنس الشهير وإعلانات جوجل للمعلنين بالإضافة إلى وجود يوتيوب (الذي يشارك نسبة من الأرباح مع صانعي المحتوى) سمح لجوجل بأن تمتلك هيمنة كبيرة على مجال الإعلانات كلّه، وأكثر من 80% من دخل شركة ألفابيت (الشركة اﻷم لجوجل) هو من الإعلانات.

لعل أكثر الشركات ارتياحًا فيما يتعلق بالوضع الحالي لصناعة المحتوى في 2021م هي جوجل بالفعل، فهي مسيطرة عليهم من عدة جهات؛ فمحرّك بحثها يسيطر على 86% من سوق محركات البحث في العالم، وهو سوق يدفع أصحاب المواقع الإلكترونية إلى التركيز على تحسين مواقعهم لجوجل وسياساتها لتجنّب انقطاع أحد أكبر مصادر الزوّار إليهم، كما أن برنامج جوجل أدسنس هو الأكثر سخاءً بالنسبة لصانعي المحتوى، حيث تدفع جوجل 68% من أرباح الإعلانات إلى الناشرين على برنامج جوجل أدسنس.

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

وفي أسوأ الأحوال، يمكن لجوجل ببساطة زيادة نسبة الـ68% من الأرباح التي تشاركها مع المعلنين إلى نسبةٍ أعلى لتجنب أي خسارة ممكنة.

بعض الشبكات الاجتماعية ما تزال تبني نفسها وجمهورها قبل أن تتحول إلى نموذجها الربحي، ومنها تلجرام. هناك 550م مستخدم نشط شهريًا على تيليجرام إلا أن تلجرام لا يربح أي قرش حاليًا منهم لأن جميع خدماته مجانية، لكن من يتابع سيل التحديثات الهائلة التي يطلقها تيليجرام كل شهر خصوصًا فيما يتعلق بوسائل الدفع المدمجة والغرف الصوتية والمرئية يعرف أن المنصة قريبًا توشك أن تبدأ بعرض الإعلانات أو توفّر مميزات مدفوعة لجمهورها.

منصات التواصل الاجتماعي ليست المنافس الوحيد على صانعي المحتوى

هناك الكثير من المنصات الأخرى المتخصصة التي تجذب صانعي المحتوى إليها بالفعل:

  • كما أن Patreon، وهو منصة اشتراكات شهيرة، مستعمل بكثرة في الغرب لدعم صانعي المحتوى شهريًا سواء بمقابل أو دون مقابل. يحب الكثير من منشئي المحتوى الاعتماد على باتريون وهذا لأنه يخلصهم من عبء البحث عن مصدر دخل ثابت أو دوّامة الإعلانات… إلخ.
  • Clubhouse أيضًا تطبيق متخصص بالغرف الصوتية، وهو من فجّر هذا الاهتمام الكبير بالفكرة مؤخرًا من بقية منصات التواصل.
  • منصات الكتابة الاحترافية والتدوين مثل Ghost وMedium هي الأخرى لا مصلحة لها في أن يبقى المستخدمون على منصات التواصل، ولكنها أصغر حجمًا وأقل قدرة على منافسة عملاقة التواصل الذين يمتلكون ميزانيات بالمليارات.

هذه الخدمات وغيرها تجعل صانع المحتوى يدرك أن أمامه الكثير من الخيارات المتوفرة للربح بمجرد أن يبني جمهوره، وبالتالي هو ليس محدودًا في المنصات التي يمكنه نشر محتواه عليها.

المستقبل لصناعة المحتوى

هناك حاليًا نحو 50 مليون مستخدم يصنفون أنفسهم كصانعي محتوى. هذا العدد كبير لكنه ليس كبيرًا إن كانت كل شبكة ستتاقسمهم ليخدموا المليارات من المستخدمين الآخرين على كل شبكة.

هذا يعني أنه في المستقبل:

  • يمكننا توقع حصول المزيد من المبادرات التي تشجع الأفراد العاديين على التحول لصانعي محتوى، وهذه أفضل طريقة لتتمكن منصّات التواصل من إبقائهم عندها؛ أن تكون هي من صنعتهم أصلًا.
  • كما يمكننا توقع المزيد من عمليات استحواذ الشركات الكبرى على الشركات الأصغر منها المتخصصة في تقديم المحتوى وخدمته؛ ولهذا تفهم إقدام باي بال على شراء Pinterest بـ45 مليار دولار، رغم أنها مجرد شركة مالية بعيدًا تمامًا عن المجال، فضلًا عن مجال Pinterest نفسه الذي 70% من جمهوره هو النساء، وهذا لأنها تفهم أن وسائل الدفع لم تعد محدودة ببيبال وهناك منافسون آخرون في الساحة ولا بد من تنويع مصادر الدخل والوصول إلى العملاء المحتملين بشكل أكبر من السابق.
  • سيعني هذا تحسنًا أيضًا في وسائل الدفع وإمكانيات الاشتراك المدفوع في المنصات، لأن صانعي المحتوى يريدون تحقيق مدفوعات من مشتركيهم. وهو ما وفّره يوتيوب مثلًا عبر الاشتراكات المدفوعة بعد جائحة كورونا، حيث صار بإمكان المشتركين الانتساب إلى قنوات يوتيوب لقاء مبالغ معيّنة شهريًا، ووفره فيسبوك عبر بيع المنتجات.
  • بعض الشركات رغم أنها تمتلك مقدرة هائلة على الوصول للمستخدمين وتحقيق نتائج مثل Reddit إلا أنها لا تنجح في تحقيق أرباح من الإعلانات، فمستخدم ريديت العادي يجلب للمنصة ربح 0.30$ فقط، بينما المستخدم العادي لمنصات التواصل الاجتماعي يجلب من 3$ إلى 9$. هذا يعني أنه إما أن يُستحوَذ على مثل هكذا منصات وإما أن تتحول في نموذجها الإعلاني وتصلحه لتحقق أرباح أكبر.
خاتمة

إن كنت صانع محتوى – أو تريد أن تكون – فحينها من الجيد أن تعلم أن المستقبل مشرق بالنسبة لك، فالجميع يتنافس على الوصول إليك وتقديم وسائل دفع وحلول تواصل لجعلك قادرًا على الربح من جمهورك العريض الذي بنيته، وهو ما يعني أن صناعة المحتوى بأكملها على وشك الانتقال إلى مرحلةٍ أعلى في السنوات القليلة المقبلة.

يبقى حينها أمامك أن تركز على بناء جمهورك، ففي النهاية هذا هو ما يهم لصانع المحتوى بغض النظر عن الوسائل والمنصات والأدوات، فالجمهور الكبير والوفي لصانع المحتوى هو ما يصنع قيمته هذه الأيام على الشبكة.

التدوينة اقتصاد صناعة المحتوى: الخطوة المقبلة لعمالقة التواصل الاجتماعي ظهرت أولاً على عالم التقنية.

70,181 طرق مذهلة لاستخدام مساعد غوغل الصوتي.. تعرف عليها!

يعتقد البعض أن مساعد شركة غوغل الصوتي لا يقدم الكثير من الفوائد أو الاستخدامات، مثل مساعد أبل الصوتي سيري.

إلا أنه يمتلك مجموعة متنوعة من المميزات التي ازداد حجمها بعد تحديث أندرويد 12 الجديد.

فيما يلي طرق مذهلة يمكنك استخدامها مع جميع إصدارات أندرويد المختلفة والهواتف المختلفة أيضاً، لذلك لا تقلق من دعم هاتفك.

1- قراءة المقالات بصوت مرتفع

تعمل هذه الخاصية حصراً مع تطبيقات غوغل لتصفح الإنترنت، وهذا يعني متصفح كروم أو تطبيق أخبار غوغل أو تطبيق غوغل للبحث.

وكل ما تحتاج لفعله هو التوجه إلى المقال الذي ترغب في جعل الهاتف يقرأه، ومن ثم تطلب منه مباشرة أن يبدأ بالقراءة. كما يمكنك أن تطلب منه أن يقرأ المقال عبر أحد الأوامر التالية: Read It – Read this page- Read Aloud.

وتجد شريطاً خاصاً بالملف الصوتي الجديد أو قارئ المقال يظهر أسفل المقال، بالإضافة إلى أدوات للتحكم في عملية القراءة في شريط التنبيهات. وتستطيع التحكم في الملف الصوتي الناتج مثلما تتحكم في أي ملف صوتي أو مقطع موسيقي تقوم بتشغيله عبر الهاتف.

2- معرفة نسبة الشحن

يستطيع مساعد غوغل الصوتي إخبارك بنسبة الشحن الخاصة بهاتفك مباشرة عبر إتباع الأوامر الصوتية. وتستطيع استخدام هذا الأمر أيضاً عبر مكبرات الصوت التي تدعم مساعد غوغل الصوتي أو أجهزة العرض الذكية.

وكل ما تحتاج للقيام به هو سؤال المساعد عن نسبة بطارية هاتفك، وتجد أن المساعد يخبرك مباشرة بها.

3- إيجاد الهاتف

يمكنك توجيه الأمر مباشرة إلى مساعد غوغل عبر قول Where Is my Phone ويقوم بعد ذلك بعرض مكان هاتفك مباشرة.

ويعمل هذا الأمر مهما كان عدد الأجهزة التي تمتلكها متصلة بحساب غوغل الخاص بك، لذلك تجده يعرض أكثر من هاتف معاً أو أكثر من جهاز معاً.

4- تحويل الهاتف إلى الوضع الصامت

تستطيع جعل الهاتف ينتقل تلقائياً إلى الوضع الصامت عبر توجيه أمر إلى مساعد غوغل، ويمكنك قول Silence My phone.

وتلقائياً يتم تحويل الهاتف إلى الوضع الصامت بعد هذا الأمر مباشرة. كما يعمل هذا مع أي هاتف أو مكبر صوت متصل بمساعد غوغل الذكي.

5- مشاركة الموقع

يمكنك مشاركة موقعك مباشرة أو معرفة موقعك بدقة على الخريطة عبر استخدام أوامر المساعد الصوتي.

وتستطيع توجيه أمر Where am I ليعرض لك مكانك على الخريطة مباشرة في نافذة صغيرة- وهو يعرضها من خرائط غوغل بالطبع. كذلك يمكنك توجيه أمر Share My Location ليتم مشاركة موقعك مع أي جهة اتصال تختارها مباشرة.

6- أخذ لقطة الشاشة

يستطيع مساعد غوغل الصوتي أخذ لقطة شاشة مباشرة من شاشتك دون أن تمسك بالهاتف أو تضغط أزرار لقطة الشاشة.

وكل ما تحتاج إليه هو قول Take A Screenshot، ليقوم بأخذ لقطة الشاشة وعرضها في هاتفك وتخزينها فيه.

7- التقاط صورة عبر الكاميرا

يستطيع المساعد أخذ صورة لك عبر استخدام كاميرا الهاتف الأمامية أو الخلفية، وكل ما تحتاج له هو تحديد نوع الصورة التي ترغب بها. ويمكنك جعله يأخذ صورة عبر الكاميرا الأمامية من خلال قول Take A Selfie أو أخذ صورة عبر الكاميرا الخلفية من خلال Take A picture.

كما تستطيع أيضاً إضافة مؤقت قبل أخذ الصورة وذلك حتى تستعد للالتقاط الصورة، كما ترغب ولأي وقت أو مدة ترغب بها.

8- تشغيل الضوضاء الهادئة

قد تحتاج في بعض الأوقات لتشغيل ضوضاء هادئة أو موسيقى هادئة لتتمكن من العمل بهدوء في مكان مزدحم.

ويمكنك فعل ذلك دون الإمساك بالهاتف عبر توجيه الأمر مباشرة إلى مساعدك الصوتي من خلال أمر Play وبعد ذلك تذكر نوع الموسيقى التي ترغب فيها سواء كانت White Noise أو موسيقى هادئة أو صوت الماء وهكذا.

9- الوصول إلى إعدادات المساعد

لا يمكنك الوصول إلى إعدادات المساعد الصوتي بشكل سهل أو سريع، حيث تحتاج للتوجه لتطبيق غوغل أو تطبيق المساعد.

لكن تستطيع عبر أمر إعدادات المساعد من خلال المساعد الصوتي لغوغل أن تصل إلى تطبيق الإعدادات الخاص بها بشكل سريع.

10- إعادة ما قاله المساعد

إذا كنت تستخدم مساعد غوغل الصوتي بلغة مختلفة عن لغتك الأم مثل اللغة الإنجليزية أو غيرها من اللغات، فإنك قد تواجه مشكلة في فهم ما قاله خاصة إن تحدث بسرعة أو كان الهاتف في مكان بعيد ولم تسمعه جيداً.

لذلك تستطيع توجيه أمر Can You Repeat إلى المساعد الصوتي ليعيد ما قاله بأوضاع مختلفة، حيث إذا طلبت منه إعادته بصوت أعلى، يرفع درجة الصوت أو يجعلها أبطأ.

11- إيقاف المساعد عن الرد

يعمل مساعد غوغل الصوتي في بعض الأحيان دون توجيه الأمر له مباشرة، وذلك بسبب تعرفه على بعض الأوامر الصوتية. ونتيجة لذلك قد تجده بدأ بالعمل مباشرة أثناء محادثتك مع أحد أصدقائك أو زملاء العمل. غير أنه يمكنك جعله يصمت عبر توجيه الأمر التالي : That Wasn’t For You.

كما يعتبر هذا الأمر من القصص الهامة التي يجب أن تتذكرها حتى تتمكن من جعل المساعد يصمت في حالة عمل تلقائياً.

70,180 توجيه شبكات التراكب Overlay Networks الحاسوبية

لقد اعتُمدت الإنترنت منذ نشأتها على أساس نموذج نظيف، تكون فيه الموجّهات routers داخل الشبكة مسؤولةً عن تمرير الرزم من المصدر إلى الوجهة، وتُشغَّل البرامج التطبيقية على الأجهزة المضيفة المتصلة بأطراف الشبكة.

يلتزم نموذج العميل / الخادم الموضح في التطبيقات التي ناقشناها سابقًا على هذا النموذج، لكن أصبح التمييز بين تمرير الرزم ومعالجة التطبيقات أقل وضوحًا في السنوات القليلة الماضية، حيث توزَّع التطبيقات الجديدة عبر الإنترنت، وفي كثيرٍ من الحالات تتخذ هذه التطبيقات قرارات التمرير الخاصة بها.

يمكن أحيانًا تنفيذ هذه التطبيقات الهجينة الجديدة من خلال توسيع الموجّهات والمبدّلات التقليدية لدعم قدرٍ صغيرٍ من المعالجة الخاصة بالتطبيقات، حيث يتواجد مثلًا ما يسمى بمبدّلات المستوى 7 أمام عناقيد الخادم server clusters، وتمرر طلبات HTTP إلى خادمٍ معين بناءً على عنوان URL المطلوب، وتظهر شبكات التراكب overlay networks بسرعةٍ مثل آليةٍ مختارةٍ لإدخال وظائف جديدةٍ إلى الإنترنت.

يمكنك التفكير في التراكب على أنه شبكةٌ منطقيةٌ مُطبَّقةٌ فوق بعض الشبكات الأساسية، فقد بدأت الإنترنت من خلال هذا التعريف مثل شبكة تراكبٍ على الروابط التي توفرها شبكة الهاتف القديمة. يوضح الشكل السابق تراكبًا مطبَّقًا على شبكةٍ أساسية، وكل عقدة في شبكة التراكب موجودةٌ أيضًا في الشبكة الأساسية؛ أي أن هذا التراكب يعالج ويمرر الرزم بطريقةٍ خاصةٍ بالتطبيق. تُنفَّذ الروابط التي تربط عقد التراكب مثل أنفاق tunnels عبر الشبكة الأساسية، ويمكن أن توجد شبكات تراكبٍ متعددةٍ على نفس الشبكة الأساسية، فتطبّق كل منها سلوكها الخاص بالتطبيق، ويمكن أن تتداخل التراكبات، أي تراكبٌ فوق الآخر، وتُعامِل جميعُ أمثلة شبكات التراكب التي نُوقشت في هذا القسم الإنترنت اليوم على أنه الشبكة الأساسية.

رأينا بالفعل أمثلةً عن إنشاء أنفاقٍ لتنفيذ الشبكات الوهمية الخاصة VPN، حيث تعامِل العقدُ الموجودة على طرفي النفق المسارَ متعدد القفزات بينها مثل رابطٍ منطقي واحد، ولا تدركُ العقد الممرَّرة عبر نفقٍ باستخدام رزم التمرير المستندة على الترويسة الخارجية أن العقد النهائية قد أرفَقت ترويسةً داخليةً. يوضح الشكل السابق ثلاث عقد تراكب (A وB وC) متصلةً بواسطة زوجٍ من الأنفاق. قد تتخذ عقدة التراكب B في هذا المثال قرارًا بتمرير الرزم من العقدة A إلى العقدة C استنادًا إلى الترويسة الداخلية IHdr، ثم ترفِق ترويسةً خارجية OHdr تحدّد العقدة C على أنها وِجهةٌ في الشبكة الأساسية. يمكن للعقد A وB وC تفسير كلٍّ من الترويسة الداخلية والخارجية، بينما لا تفهم الموجّهات الوسيطة سوى الترويسة الخارجية، وتكون للعقد A وB وC عناوينٌ في كلٍ من شبكة التراكب والشبكة الأساسية، ولكنها ليست عناوينًا متطابقةً بالضرورة؛ فقد يكون العنوان الأساسي هو عنوان IP مؤلَّفٌ من 32 بتًا، بينما قد يكون عنوان التراكب عنوانًا تجريبيًا مؤلفًّا من 128 بتًا. لا تحتاج شبكة التراكب إلى استخدام عناوينٍ تقليديةٍ على الإطلاق، ولكنها قد توجِّه بناءً على عناوين URL، أو أسماء النطاق أو استعلامات XML، أو حتى محتوى الرزمة.

توجيه شبكة التراكب

أبسط نوعٍ من التراكب هو الذي يوجد فقط لدعم استراتيجية توجيهٍ بديلة؛ حيث تُجرَى معالجةٌ إضافيةٌ على مستوى التطبيق في عُقد التراكب، حيث يمكنك استخدام شبكةٍ وهميةٍ خاصة VPN بمثابة مثالٍ عن توجيه شبكات التراكب، ولكن لا يحدد هذا المثال الكثير لاستراتيجيةٍ أو خوارزميةٍ بديلة، لأنه يدخل مدخلات جدول توجيهٍ بديلة لتُعالَج بواسطة خوارزمية تمرير IP القياسية، حيث يُقال في هذه الحالة بالذات أن التراكب يستخدم أنفاق IP، وتُدعمَ القدرة على استخدام شبكات VPN هذه في العديد من الموجّهات التجارية.

لنفترض أنك أردت استخدام خوارزمية توجيه لم يرغب مصنّعو الموجّهات التجارية في تضمينها في منتجاتهم. إذًا ماذا ستفعل؟ يمكنك ببساطةٍ تشغيل الخوارزمية الخاصة بك على مجموعةٍ من المضيفين النهائيين، وتشغيل النفق عبر موجّهات الإنترنت، حيث سيتصرّف هؤلاء المضيفون مثل موجهاتٍ في شبكة التراكب، أي مثل مضيفين متصلين بالإنترنت، من خلال رابطٍ فيزيائيٍ واحدٍ فقط، ويتصرفون مثل عقدةٍ في التراكب، ويُوصلون بالعديد من الجيران عبر الأنفاق.

تُعَد التراكبات وسيلةٌ لإدخال تقنياتٍ جديدةٍ مستقلةٍ عن المعايير الأساسية، فلا توجد تراكباتٌ معياريةٌ يمكننا الإشارة إليها على أنها أمثلة، لذلك سنوضح الفكرة العامة لتوجيه التراكبات من خلال وصف العديد من الأنظمة التجريبية التي أنشأها باحثو الشبكات.

إصدارات تجريبية من بروتوكول IP

تُعَد التراكبات مثاليةً لنشر إصدارات تجريبية من بروتوكول IP التي تأمل أن تسيطر على العالم في النهاية، حيث بدأ بث IP المتعدد على سبيل المثال مثل إضافةٍ لبروتوكول IP، ولكن لم يُفعَّل في العديد من موجهات الإنترنت حتى اليوم، كما كانت شبكة MBone شبكة العمود الفقري متعدد البث multicast backbone عبارةً عن شبكة تراكب طبّقت بروتوكول IP متعدد البث على التوجيه أحادي البث الذي يوفره الإنترنت. وقد طُوِّرت أدوات المؤتمرات متعددة الوسائط ونُشِرت على شبكة Mbone، حيث بُثَّت اجتماعات منظمة IETF التي تستغرق أسبوعًا وتجذب الآلاف من المشاركين لسنواتٍ عديدة عبر شبكة MBone على سبيل المثال، ولكن حلّ التوافر الواسع لأدوات المؤتمرات التجارية محل النهج القائم على شبكة MBone.

استخدمت شبكة MBone مثل شبكات VPN كلًا من أنفاق وعناوين IP، ولكنها طبّقت خوارزمية تمريرٍ مختلفةٍ عن تلك المستخدمة في شبكات VPN، حيث استخدمت تمرير الرزم إلى جميع الأجهزة الموجودة تحتها في المسار الأقصر لشجرة البث المتعدد. تمر الموجهات ذات البث المتعدد عبر نفقٍ من الموجهات القديمة مثل تراكب overlay، على أمل ألا تكون هناك يومًا ما موجهاتٌ قديمة.

كانت شبكة 6-BONE شبكة تراكبٍ مشابهة، واُستخدِمت لنشر الإصدار IPv6 تدريجيًا، حيث استخدمت شبكةُ 6-BONE، مثل شبكة MBone، الأنفاقَ لتمرير الرزم عبر موجّهات IPv4، لكن لم تقدّم عقد شبكة 6-BONE تفسيرًا جديدًا لعناوين IPv4 المؤلفة من 32 بتًا على عكس شبكة MBone، حيث مررت العقد الرزم بناءً على حيز عناوين IPv6 ذات 128 بتًا، ودعمت شبكة 6-BONE أيضًا بث IPv6 المتعدد.

بث النظام النهائي المتعدد End System Multicast

بث بروتوكول IP المتعدد شائعٌ بين الباحثين وقطاعات معينة من مجتمع الشبكات، إلا أن نشره في الإنترنت العالمي كان محدودًا. لذلك تحوّلت التطبيقات القائمة على البث المتعدد مثل مؤتمرات الفيديو مؤخرًا إلى استراتيجيةٍ بديلةٍ، هي بث النظام النهائي المتعدد، حيث تتمثل فكرة هذه الاستراتيجية في قبول أن البث المتعدد لبروتوكول IP لن يصبح موجودًا في كل مكانٍ مطلقًا، ولذلك يُسمَح للمضيفين النهائيين المشاركين في تطبيقٍ معينٍ قائمٍ على البث المتعدد بتطبيق أشجار البث المتعدد الخاصة بهم.

يجب أن نفهم أولًا أن بث النظام النهائي المتعدد، على عكس شبكات VPN وMBone، يفترض مشاركة مضيفي الإنترنت فقط دون موجهات الإنترنت في التراكب، ويتبادل هؤلاء المضيفون الرسائل مع بعضهم بعضًا من خلال أنفاق UDP، بدلًا من أنفاق IP، مما يسهّل تنفيذها مثل برامج تطبيقاتٍ عادية، ويؤدي إلى إمكانية عرض الشبكة الأساسية مثل رسمٍ بيانيٍ متصلٍ بالكامل، حيث أن كل مضيف في الإنترنت قادرٌ على إرسال رسالةٍ إلى كل مضيفٍ آخر. إذًا، يحل بث النظام النهائي المتعدد مشكلة العثور على شجرة البث المتعدد المضمَّنة التي تمتد عبر جميع أعضاء المجموعة، بدءًا من رسمٍ بيانيٍ متصلٍ بالكامل يمثّل الإنترنت.

لاحظ أن هناك نسخةً أبسط من هذه المشكلة من خلال التوافر الجاهز للآلات الافتراضية VM المستضافة على السحابة حول العالم، حيث يمكن أن تعمل الأنظمة النهائية ذات البث المتعدد آلاتٍ افتراضيةٍ في مواقعٍ متعددة؛ هذه المواقع معروفةٌ جيدًا وثابتةٌ نسبيًا، لذلك يمكن إنشاء شجرةٍ ثابتةٍ متعددة البث في السحابة، ويمكن جعل المضيفين النهائيين الفعليين يتصلون ببساطةٍ بأقرب موقعٍ سحابي.

بما أننا نفترض أن شبكة الإنترنت الأساسية متصلةٌ بصورةٍ كاملة، فإن الحل البسيط هو أن يكون كل مصدر متصلًا مباشرةً بكل عضوٍ في المجموعة، أي يمكن تطبيق بث النظام النهائي المتعدد من خلال إرسال كل عقدةٍ رسائل أحادية البث إلى كل عضوٍ في المجموعة. ضع في حساباتك مثال مخطط الشبكة الموضح في الشكل السابق لفهم المشكلة، حيث أن الموجهَين R1 وR2 متصلان باستخدام رابط عابرٍ للقارات بحيز نطاقٍ تراسلي منخفض، والمضيفات A وB وC وD هي مضيفاتٌ نهائية وتأخيرات الروابط مُعطاةٌ مثل أوزانٍ للأضلاع.

بافتراض أن المضيف A أراد إرسال رسالةٍ متعددة البث إلى المضيفين الثلاثة الآخرين مثلما يوضح الشكل السابق كيف سيعمل البث الأحادي البسيط، لكنه غير مرغوبٍ لأن نفس الرسالة يجب أن تعبر الرابط بين المضيف A والموجّه R1 ثلاث مرات، وتعبر نسختان من الرسالة الرابط بين الموجه R1 والموجه R2. يوضح الشكل السابق أيضًا شجرة بث IP المتعدد التي أنشأها بروتوكول التوجيه متعدد البث لمُتجّه المسافات Distance Vector Multicast Routing Protocol -أو اختصارًا DVMRP. يلغي هذا الأسلوب الرسائل الزائدة، لكن بدون دعمٍ من الموجهات، فإن أفضل ما يمكن تتمناه من بث النظام النهائي المتعدد هو شجرةٌ مشابهةٌ لتلك الموضحة في الشكل السابق، حيث يحدد بث النظام النهائي المتعدد معماريةً لإنشاء هذه الشجرة.

يتمثل النهج العام في دعم مستوياتٍ متعددةٍ من شبكات التراكب، حيث يَستخرج كلٌ منها رسمًا بيانيًا فرعيًا من التراكب الموجود أسفله، حتى نختار الرسم البياني الفرعي الذي يتوقعه التطبيق. يحدث هذا على مرحلتين بالنسبة إلى بث النظام النهائي المتعدد، هما:

  1. إنشاء تراكبٍ شبكيٍ بسيط على شبكة الإنترنت المتصلة بالكامل.
  2. اختيار شجرةٍ متعددة البث داخل هذه الشبكة.

يوضح الشكل السابق هذه الفكرة، بافتراض وجود المضيفين النهائيين الأربعة A وB وC وD. بمجرد اختيار شبكة تراكب شبكة مناسبة، نشغّل خوارزميةَ توجيه البث المتعدد القياسية مثل بروتوكول DVMRP فوقها لبناء شجرة البث المتعدد. يمكننا أيضًا تجاهل مشكلة قابلية التوسع التي يواجهها البث المتعدد على مستوى الإنترنت، حيث يمكن تحديد الشبكة الوسيطة لتضمين فقط العقد التي ترغب في المشاركة في مجموعة بثٍ متعدد معينة.

إن مفتاح إنشاء شبكة تراكبٍ وسيطة هو تحديد مخطط شبكةٍ متوافق تقريبًا مع مخطط شبكة الإنترنت الأساسي، ولكن يجب علينا فعل ذلك دون أن نعلم بما يبدو عليه الإنترنت الأساسي في الواقع، نظرًا لأننا نعمل فقط على المضيفين النهائيين وليس على الموجّهات. تتمثل الإستراتيجية العامة للمضيفين النهائيين في قياس زمن الانتقال ذهابًا وإيابًا إلى العقد الأخرى واتخاذ قرار إضافة روابطٍ إلى الشبكة فقط عندما تكون الأمور جيدةً، حيث يحصل ذلك على النحو التالي:

أولًا، افترض وجود شبكةٍ بالفعل، حيث تتبادل كل عقدةٍ قائمةً list بجميع العقد الأخرى التي تعتقد أنها جزءٌ من الشبكة مع جيرانها المتصلين مباشرةً. إذا تلقّت العقدة قائمةَ العضوية من أحد الجيران، فإنها تدمج تلك المعلومات في قائمة العضوية الخاصة بها وتمرر القائمة الناتجة إلى جيرانها. تنتشر هذه المعلومات في النهاية عبر الشبكة، كما هو الحال في بروتوكول توجيه متجه المسافات.

إذا أراد مضيفٌ الانضمام إلى شبكة تراكب البث المتعدد، فيجب أن يعرف عنوان IP لعقدةٍ أخرى على الأقل موجودةٍ بالفعل في شبكة التراكب، ثم يرسل رسالة الانضمام إلى الشبكة join mesh إلى هذه العقدة، وهذا يربط العقدة الجديدة بالشبكة عن طريق ضلعٍ إلى العقدة المعروفة. قد ترسل العقدة الجديدة رسالة انضمامٍ إلى عقدٍ حالية متعددة، وبالتالي تنضم إلى الشبكة عن طريق روابطٍ متعددة، وترسل العقدة الجديدة دوريًا رسائل أنها لا زالت نشطة keepalive إلى جيرانها بمجرد توصيلها بالشبكة من خلال مجموعةٍ من الروابط، لإعلام جيرانها بأنها لا تزال تريد أن تكون جزءًا من المجموعة.

ترسل العقدة التي تغادر المجموعة رسالة ترك الشبكة leave mesh إلى جيرانها المتصلين مباشرةً، وتُنشَر هذه المعلومات إلى العقد الأخرى في الشبكة عبر قائمة العضوية الموضحة أعلاه. يمكن أن تفشل العقدة أو تقرر ترك المجموعة بصمت، وفي هذه الحالة يكتشف جيرانها أنها لم تَعُد ترسل رسائل keepalive. بعض حالات مغادرة العقدة لها تأثيرٌ ضئيلٌ على الشبكة، ولكن إذا اكتشفت العقدة أن الشبكة أصبحت مقسَّمةً بسبب مغادرة عقدةٍ ما، فإنها تنشئ ضلعًا جديدًا إلى عقدةٍ في القسم الآخر بإرسال رسالة انضمام إلى الشبكة. لاحظ أنه يمكن للجيران المتعددين أن يقرروا في نفس الوقت حدوث تقسيمٍ في الشبكة، مما يؤدي إلى إضافة أضلاعٍ متعددة إلى الأقسام المتقاطعة من الشبكة.

ستتشكّل في النهاية شبكةٌ تمثل رسمًا فرعيًا من شبكة الإنترنت الأصلية المتصلة بالكامل، ولكن قد يكون لها أداءٌ دون المستوى الأمثل للأسباب الأربعة التالية:

1- اختيار الجار الأولي يضيف روابطًا عشوائيةً إلى مخطط الشبكة. 2- قد يضيف إصلاح التقسيم أضلاعًا أساسيةً في الوقت الحالي، ولكنها ليست مفيدةً على المدى الطويل. 3- قد تتغير عضوية المجموعة بسبب عمليات الانضمام والمغادرة الديناميكية. 4- قد تتغير ظروف الشبكة الأساسية.

ما يجب أن يحدث هو أن يقيّم النظام قيمة كل ضلع، مما يؤدي إلى إضافة أضلاعٍ جديدة إلى الشبكة وإزالة الأضلاع الموجودة بمرور الوقت. لإضافة أضلاعٍ جديدة، تتحقق كل عقدةٍ i دوريًا من بعض الأعضاء العشوائية j التي لا تتصل بها حاليًا في الشبكة، وتقيس زمن انتقال الأضلاع ذهابًا وإيابًا (i,j)، ثم تقيّم فائدة إضافة هذا الضلع، حيث يُضاف الرابط (i,j) إلى الشبكة إذا كانت الفائدة أعلى من حدٍ معين. يكون تقييم فائدة إضافة الضلع (i,j) على النحو التالي:

EvaluateUtility(j) utility = 0 for each member m not equal to i CL = current latency to node m along route through mesh NL = new latency to node m along mesh if edge (i,j) is added} if (NL < CL) then utility += (CL - NL)/CL return utility

قرار إزالة ضلعٍ مماثلٌ لإضافة ضلع باستثناء أن كل عقدة i تحسب تكلفة كل رابطٍ إلى الجار الحالي j على النحو التالي:

EvaluateCost(j) Cost[i,j] = number of members for which i uses j as next hop Cost[j,i] = number of members for which j uses i as next hop return max(Cost[i,j], Cost[j,i])

ثم تختار العقدة الجار ذا التكلفة الأقل، وتلغيه إذا انخفضت التكلفة إلى ما دون حدٍ معين.

أخيرًا، بما أن الحفاظ على الشبكة يحدث باستخدام بروتوكول متجه مسافة، فلا يُعَد تشغيل بروتوكول DVMRP للعثور على شجرة البث المتعدد المناسبة في الشبكة أمرًا مفيدًا. لاحظ أنه ليس من الممكن إثبات أن البروتوكول الموصوف للتو ينتج عن شبكةٍ مثلى، مما يسمح لبروتوكول DVMRP بتحديد أفضل شجرةٍ متعددة البث ممكنة، لكن تشير كلٌ من المحاكاة والخبرة العملية الواسعة إلى أنها تعمل جيدًا.

شبكات التراكب المرنة Resilient Overlay Networks

يمكن أن يؤدي التراكب وظيفةً أخرى وهي إيجاد طرقٍ بديلة لتطبيقات البث الأحادي التقليدية، حيث تستغل هذه التراكباتُ الملاحَظةَ التي تفيد بأن عدم المساواة في المثلث لا ينطبق على شبكة الإنترنت. يوضح الشكل الآتي ما نعنيه بذلك، فليس غريبًا العثور على ثلاثة مواقعٍ على الإنترنت A وB وC، بحيث يكون زمن الانتقال بين الموقعين A وB أكبرُ من مجموع فترات الانتقال من الموقع A إلى الموقع C، ومن الموقع C إلى الموقع B؛ أي يُفضَّل في بعض الأحيان إرسال الرزم الخاصة بك بصورةٍ غير مباشرة عبر عقدةٍ وسيطةٍ بدلًا من إرسالها مباشرةً إلى الوِجهة.

لكن كيف يمكن أن يحدث هذا؟ لم يَعِد بروتوكول البوابة الحدودية Border Gateway Protocol -أو اختصارًا BGP- أبدًا بأنه سيجد أقصر مسارٍ بين أي موقعين، فهو يحاول فقط إيجاد مسارٍ ما. تتأثر مسارات بروتوكول BGP بشدة بأمور السياسات policy، مثل سياسة من يدفع لمن ينقل حركة المرور. يحدث هذا غالبًا عند نقاط التناظر بين مزودي خدمة الإنترنت الأساسيين، فلا ينبغي أن يكون عدم وجود مساواة بمثلثٍ في شبكة الإنترنت أمرًا مفاجئًا.

كيف نستغل هذه الملاحظة؟ تتمثل الخطوة الأولى في إدراك أن هناك مقايضةً أساسيةً بين قابلية التوسع والأمثلية لخوارزمية التوجيه. ويتوسّع نطاق بروتوكول BGP لشبكات كبيرة جدًا، ولكنه غالبًا لا يختار أفضل مسارٍ ممكن ويكون بطيئًا في التكيف مع انقطاعات الشبكة؛ فإذا كنت قلقًا فقط بشأن العثور على أفضل مسارٍ بين عددٍ قليلٍ من المواقع، فيمكنك التوجّه إلى عملٍ أفضل بكثير من مراقبة جودة كل مسار قد تستخدمه، مما يتيح لك تحديد أفضل مسارٍ ممكنٍ في أي لحظة.

أدّى تراكبٌ تجريبي يُسمى شبكة التراكب المرنة Resilient Overlay Network -أو اختصارًا RON- ذلك بالضبط، حيث توسّعت شبكة RON إلى بضع عشراتٍ فقط من العقد، وذلك لأنها استخدمت استراتيجية N × N لمراقبة ثلاثة جوانبٍ لجودة المسار عن كثب عبر بحثٍ نشطٍ بين كل زوجٍ من المواقع، وهذه الجوانب الثلاثة هي: زمن الانتقال latency، وحيز النطاق التراسلي bandwidth المتاح، واحتمالية الخسارة loss probability.

أصبحت شبكة RON بعد ذلك قادرةً على تحديد المسار الأمثل بين أي زوجٍ من العقد، وتغيير المسارات بسرعةٍ في حالة تغير ظروف الشبكة، فقد أظهرت التجربة أن شبكة RON كانت قادرةً على تقديم تحسيناتٍ متواضعة في الأداء للتطبيقات، ولكن الأهم من ذلك أنها تعافت من أعطال الشبكة بسرعةٍ أكبر.

اكتشَف مثيلٌ لشبكة RON يعمل على 12 عقدةً 32 انقطاعًا استمر لأكثر من 30 دقيقةً خلال فترةٍ واحدةٍ مدتها 64 ساعةً في عام 2001 على سبيل المثال، وتمكَّن من التعافي منها جميعًا في أقل من 20 ثانيةً وسطيًا. اقترحت هذه التجربة أيضًا أن تمرير البيانات من خلال عقدةٍ وسيطةٍ واحدةٍ فقط يكون كافيًا عادةً للتعافي من حالات فشل الإنترنت.

بما أن شبكة RON غير مصمَّمةٍ لتكون نهجًا قابلًا للتوسّع، فلا يمكن استخدامها لمساعدة المضيف العشوائي A على التواصل مع المضيف العشوائي B؛ أي يجب أن يعرف المضيفان A وB مسبقًا أنه من المُحتمَل أن يتواصلا، ثم ينضما إلى نفس شبكة RON.

تُعَد شبكة RON فكرةً جيدةً في إعداداتٍ معينة، مثل توصيل بضع عشراتٍ من مواقع الشركات المنتشرة عبر الإنترنت أو السماح لك أنت و50 صديقٍ من أصدقائك بإنشاء شبكة تراكبٍ خاصة بك من أجل تشغيل بعض التطبيقات، حيث تطبَّق هذه الفكرة اليوم مع الاسم التسويقي Software-Defined WAN -أو اختصارًا SD-WAN-، لكن السؤال الحقيقي هو ماذا يحدث عندما يبدأ الجميع في تشغيل شبكة RON الخاصة بهم؟ وهل يؤدي حمل الملايين من شبكات RON التي تستكشف المسارات بقوة إلى إغراق الشبكة؟ وهل يرى أي شخصٍ تحسّن السلوك عندما تتنافس عدة شبكات RON على نفس المسارات؟ لا تزال هذه الأسئلة دون إجابة.

توضِّح كل هذه التراكبات مفهومًا أساسيًا لشبكات الحاسوب هو الافتراضية virtualization، أي يمكن بناء شبكةٍ افتراضية من موارد مجردة أو منطقية على شبكةٍ فيزيائيةٍ مبنيةٍ من موارد فيزيائية أيضًا. يمكن تكديس هذه الشبكات الافتراضية فوق بعضها بعضًا، كما ويمكن أن تتعايش شبكاتٌ افتراضيةٌ متعددةٌ على نفس المستوى، حيث توفر كل شبكةٍ افتراضيةٍ بدورها إمكاناتٍ جديدة ذات قيمة لمجموعةٍ معينةٍ من المستخدمين، أو التطبيقات، أو الشبكات ذات المستوى الأعلى.

ترجمة -وبتصرّف- للقسم Overlay Networks من فصل Applications من كتاب Computer Networks: A Systems Approach.

اقرأ أيضًا

الصفحات

أنت هنا