لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 03/24/21 في كل الموقع
-
يوجد العديد من المنصات التي تقدم شروحات برمجة باللغة العربية ومنها أكاديمية حسوب. إن تعلمك للغة الانكليزية ليس ضروري بدرجة كبيرة إنما خلال البرمجة نتعامل مع بعض المصطلحات الانكليزية مثلما هي لصعوبة ترجمتها و تبديل المصطلحات و إيجاد بديل لها مفهوم من قبل الجميع حيث أن توحيد المفاهيم يسهل النقاشات البرمجية و تبادل الأفكار. إن أغلب حلول المشكلات التي تعترض خلال الدراسة والعمل (في حال عدم وجود مرشدين و مدربين معك) ستحتاج للبحث عنها في غوغل و قراءة شروحات أجنبية وهنا تكمن الصعوبة بالإضافة للتوثيقات و الشروحات لجميع التقنيات هي بالانكليزية و لن تنفع ترجمة غوغل لتعريبها و فهمها، فبما أن لغتك ضعيفة إما أن تحسنها أو تتعلم من مصادر عربية.3 نقاط
-
في بداية الطريق لا مشكلة في أن تتعلم البرمجة ولغتك الإنجليزية ليست جيدة، ففي الغالب ستجد شروحات بالغة العربية لكل الأساسيات في أي لغة برمجة أو تقنية ما، لكن بعد إتمامك لمرحلة تعلم الأساسيات والدخول في مرحلة متقدمة أكثر فستواجهة صعوبة في فهم المصطلحات (حيث أن أغلب الشروحات للتقنيات المتقدمة تكون باللغة الإنجليزية أو باللغة العربية متضمنة مصطلحات إنجليزية بطريقةٍ أو بأخرى) أو في البحث عن حل مشكلة ما تواجهك وذلك لأن كل التوثيقات documentations لكل التقنيات بلا إستثناء تكون باللغة الإنجليزية وأغلب الأحيان لا يتم دعم اللغة العربية، حتى وإن أردت أن تتواصل مع شخص أجنبي ليحاول مساعدتك في مشروع ما أو في حل مشكلة تقنية، ففي الغالب سيتحدث بالإنجليزية مها كانت دولته أو لغته الأم. والحل يكمن في تعلم الأساسيات التقنية من مصادر عربية (منصة حسوب، يوتيوب، إلخ) بجانب تعلم أساسيات اللغة الإنجليزية معًا وبشكل متوازي، وبهذه الطريقة ستتعلم أساسيات البرمجة وفي نفس الوقت ستكتسب اللغة الإنجليزية التي ستساعدك في مرحلة تعلم التقنيات المتقدمة أو فهم الشروحات الإنجليزية بشكل عام. ومع الوقت ستصل لمرحلة تمكنك من قراءة توثيق أي تقنية مهما كانت بشكل مباشر دون الإستعانة بخدمات مثل ترجمة جوجل أو البحث عن شروحات عربية لها. عليك أن تعلم أيضًا أن مرحلة تعلم اللغة الإنجليزية لن تنتهي مثلها مثل تعلم التقنيات البرمجية، فحتى الذين لديهم اللغة الإنجليزية هي اللغة الأم، يتعلمون مصطلحات تقنية جديدة كل فترة، وتستطيع تعلم مصطلحات جديدة أيضًا من خلال قراءة المقالات والتوثيقات بشكل متواصل كل فترة. بالتوفيق، تحياتي.2 نقاط
-
لا يمكنك إلغاء العرض ولكن هنالك ميزة جديدة تم اضافتها من قبل مستقل تمكنك من إضافة عرض جديد حتى بعد أن تكون قد استفذت العروض المتاحة لك مقابل 1 دولار ولكن هنالك 4 شروط لذلك: ان تكون قد حصلت على تقييم 4 نجوم أو أعلى. ان يكون عندك معدل إكمال مشاريع 80% أو أعلى. أقل من 3 مشاريع جاري تنفيذها. توفر رصيد كافي في حسابك. كما يمكنك تجنب هذا الامر من الاساس من خلال اتباع الإرشادات الاتية قبل التقديم على اي مشروع: الإطلاع على معدل توظيف صاحب العمل فهو مؤشر يدل على جدية صاحب العمل وإذا كان سيختار احد المتقدمين ام لا. تجنب التقديم على المشاريع التي تحتوي على عدد كبير من المتقدمين او تلك التي مر عليها وقت طويل. حاول بقدر الإمكان أن تكون أول من يقدم على المشروع وان يكون عرضك جاذباً لأن اغلب العملاء يختارون من العروض التي تظهر لهم في الصفحة الاولى. حاول ألا تقدم على عدد كبير من المشاريع في يوم واحد.2 نقاط
-
يمكن موازنة روّاد الأعمال أحيانًا بالأبطال الخارقين، فهم يحلّون المشاكل، ويحملون قوّةً كبيرةً، ومعها مسؤوليّة تماثلها، كما أنّهم مستعدّون لخوض المخاطر، فهم لا يهتزّون في وجه الفشل، ويسعون إلى إيجاد حلول، وتطوير مستمرّ لمنتجاتهم، مع إبقاء عملائهم في الحسبان، لتتجاوز حلولهم احتياجاتهم الفرديّة؛ وحين ينجح رائد الأعمال، يقول الآخرون "لو أنّني فقط فكّرت في ذلك!". لكنّ التّفكير، والفعل غير كافيين، حيث يدرك روّاد الأعمال ضرورة مشاركة قيمة، وأصل مشروعهم، فهم لا يكتفون بحلّ المشاكل، بل يروون قصص الكوارث الّتي تجنّبوها، والمنافسين الّذين تفوّقوا عليهم، والخسائر المؤلمة الّتي عايشوها، وتعلّموا منها الانطلاق من جديد. ويقدّم سرد حلّ المشكلة مشكلةً محدّدةً تؤثّر على الكثير من النّاس، وتعرض الخدمة، أو المنتج على أنّه حلّ ابتكاري، وفريد، وحكيم. الرؤية يعدّ البقاء مركّزًا خلال سلسلةٍ متكرّرة من النّجاحات، والإخفاقات، أمرًا يتطلّب أكثر من مجرّد سرد حلٍّ لمشكلة، فأنت تحتاج إلى رؤية، وبالمقابل بيان مهمّة، وأهداف؛ وقد تعلّمت هذا سابقا في مقال (الرؤية والأهداف الريادية)، لكنّ عليك مراجعتها حين تنوي تطوير قصّتك، وصقل عرضها على المستثمرين المحتملين، والعملاء، والموظّفين. فالعرض هو تقديم رسميّ تطلب فيه شيئًا ما. ويكون موجّهًا عادة إلى المستثمرين في شركةٍ ناشئة. يمكن تعريف بيان رؤية سارة منقارة على أنّه تمنّي العيش في عالم لا يتعرّض فيه المعاقون بصريًّا إلى التّمييز، فمهمّة مشروعها هي تأسيس منظّمة غير ربحيّة تعمل بكفاءة على إظهار الإنسانيّة، والقيمة في المعاقين بصريًّا إعاقةً شديدةً لسكّان الولايات المتّحدة الأمريكيّة، والشّرق الأوسط، وشمال إفريقيا؛ فالهدف الرّئيس من رؤية سارة، بتخيّل مستقبل المنظّمة طويل الأمد، هو جعلها قائدًا عالميًّا في تقديم الخدمات للمعاقين بصريًّا؛ أمّا الأهداف الخاصّة، فتتضمّن استضافة الأحداث، وتطوير البرامج التّعليميّة، وتنظيم حملات التّوعية، وبالطّبع جمع التبرّعات. وباتّباع هذا المثال عن المهمّة، والرّؤية، والأهداف؛ لنحلّل كلّ مفهوم من المفاهيم الثّلاثة، ونرى كيف تعمل، وتنطبق على مشروعك المحتمل. يحدّد بيان الرّؤية -كما رأينا- الغرض العامّ، أو ما يريد رائد الأعمال لمشروعه أن يصبح مستقبلًا، وقبل تمكّنك من إنشاء بيان مهمّة مركّزًا، وأهدافًا تجيب عن الأسئلة من أنت؟ وماذا تفعل؟ وإلام تخطّط مستقبلا؟؛ فعليك تطوير بيان رؤيةٍ يتيح لك النّظر إلى المستقبل للإجابة عن السّؤال: "ماذا يمكن أن نصبح إذا صارت منظّمتنا في أحسن نسخة ممكنة منها؟" تعدّ كتابة بيان الرّؤية تمرينًا على التصوّر، أو توليد الأفكار، وهذه الأخيرة تعدّ عمليّةً هادفةً يفتح فيها المرء عقله لخيوط تفكير جديدة تتفرّع إلى مختلف الاتّجاهات انطلاقًا من غرض محدّد، أو مشكلة، وهي في حالتنا هذه تهدف إلى توليد احتمالات جديدة للمنتجات، أو الخدمات، أو العمليّات الّتي تجلب النّجاح لمشروعك، فبيان الرّؤية أكثر انفتاحًا من بيان المهمّة. الجدول 1.7 يبيّن بياني الرّؤية، والمهمّة لشركة أمازون. لاحظ كيف يختلفان: بيان الرّؤية، وبيان المهمّة لشركة أمازون بيان رؤية أمازون بيان مهمّة أمازون أن نصبح الشّركة الأكثر تركيزًا على العميل على وجه الأرض، أين يجد العملاء، ويكتشفون أيّ شيء يريدون اشتراءه عبر الإنترنت. نسعى إلى تزويد عملائنا بأقلّ الأسعار الممكنة، وأفضل الخيارات المتاحة، وأكبر قدر من الرّاحة. table { width: 100%; } thead { vertical-align: middle; text-align: center; } td, th { border: 1px solid #dddddd; text-align: right; padding: 8px; text-align: inherit; } tr:nth-child(even) { background-color: #dddddd; } الجدول 7.1 لاحظ الفروق بين البيانين. بيان الرّؤية يتطلّع إلى المستقبل، وهو أعمّ من بيان المهمّة. إذا أردت إنشاء بيان رؤية قويّ، فانظر إلى الميدان الواسع الّذي تنشط فيه منظّمتك، وكن عامًّا، وقيّد حلمًا غير ممكن التّحقيق حاليًّا، ولكنّه يعرّف حال مخرجاتكم الجماعيّة في أفضل سيناريو ممكن. فإنشاء بيان رؤية يمكّن منّظمتك -كونها فريقًا- من التعرّف على المجالات الرّئيسيّة للتطوّر المحتمل، والتّأثيرات الاجتماعيّة الرّئيسيّة الّتي يمكنك الحصول عليها؛ لكنّ من المهمّ البقاء مركّزًا على التّغييرات في مجالك، أو قطاعك، وإعادة صياغة بيان رؤيتك، إذا دعت تلك التّغييرات إلى ذلك. شركة نتفليكس، على سبيل المثال، بدأت بهدف تقديم الرّاحة، والقيمة الأقصى للعملاء الّذين يستأجرون أقرص DVD، ولكنّ تطوّر منصّات استهلاك التّسلية فرض عليها هي أيضًا التطوّر، ولهذا تحوّلت إلى بثّ المحتوى عبر الإنترنت، وصار بيان رؤيتها سنة 2019: "الغدوّ أفضل خدمات توزيع التّسلية عالميًّا". عند صياغة بيان الرؤية، اكتب أسئلة تبدأ بـ: "كيف يمكننا …؟"، أو العبارات التي تبدأ بـ: "في عالم مثاليّ، ستقوم منظّمتنا …"، فصياغة بيان رؤية يتوقّف على أهداف خدمة المنظّمة، ويحوّلها إلى مصلحة اجتماعيّة دائمة (يجب ألا تعِدَ بإحلال السّلام العالمي، أو إعطاء كلّ شخص ألف دولار، ولكن يجب أن تنظر في كيفيّة عمل الشركات في مجالك، وتحلم بتحسين الأداء الإستراتيجيّ، والاجتماعيّ)، وتوفّْر الخطوات الموالية نقطة انطلاق جيّدة: اذكر كيف ستعمل مؤسستك في سيناريو الحلم. اربط أحلام مؤسستك بآمال أوسع للتقدم. حدد كيف ستجعل العالم مكانًا أفضل في المستقبل من خلال منتجاتك، وخدماتك. لا يجب أن تكون الأحلام جامحةً حتى تكون جذابة، أو واسعة التّأثير، فالغرض من بيان الرؤية ليس تحديد أهدافٍ غير قابلةٍ للتحقيق، بل فتح العقول في المنظّمة. فإذا لم يكن لبيان الرّؤية أساسٌ في الواقع، أمكن تجاهله بسهولة؛ وعلى النّقيض، إذا كان يركّز على حصّة السّوق، وتطوير المنتجات (أي الأشياء الملموسة، والموجّهة نحو المهمّة)، فقدْ فقدَ هدفه. تخيّل أنّ أفضل فريقٍ لديك يبذل قصارى جهده من خلال القدرات، والإمكانيات المستقبلية التي أتاحها رواد الأعمال، والمبدعون الآخرون مثلك؛ ثمّ حدّد بوضوح مدى تأثيرك في تغيير العالم، ومرةً أخرى، الهدف ليس تطوير توقّعات لا يمكن التحكّم فيها، أو المطالبة بالابتكار المستمرّ من الموظّفين، والمساهمين الذين لديهم وظائف تدعم العمليّات اليومية؛ بل هو تطوير محادثة حول ما هو ممكن للمؤسّسة. وبالنّسبة للمؤسّسات الصّغيرة النّاشئة، يمكن أن تكون الرؤية أبسط، على أن تركّز تجربةً فريدةً ترغب في إنشائها لعملائك، أي يجب -بعبارة أخرى- أن يكون بيان الرّؤية طموحًا، مع ارتباط ببيان المهمّة. يسرد الجدول 2.7 بيانات الرّؤية لبعض الشّركات عبر مجموعة متنوّعة من الصّناعات. أمثلة عن بيان الرؤية المؤسّسة بيان الرّؤية جمعيّة آلزهايمر عالم خال من مرض آلزهايمر علّم لأمريكا يومًا ما، سيملك كلّ اطفال هذه الأمّة الفرصة للحصول على تعليم ممتاز. المشاع الإبداعي (Creative Commons) تحقيق القدرة الكاملة للإنترنت: وصول عالمي للأبحاث، والدّراسات، ومساهمة كاملة في الثّقافة، ودفع عهدة جديدة من التّطوير، والنموّ، والإنتاجيّة. واربي باركر عرض نظّارات المصمّمين بسعر ثوريّ، مع قيادة الدّرب لأعمال تجاريّة واعية مجتمعيًّا. آيكيا لخلق حياة يوميّة أفضل لأكثر عدد ممكن من النّاس. الجدول 2.7 بيانات الرّؤية القويّة ذات تفكير تقدّمي. لا يحتاج بيان الرّؤية إلى الطّول ليكون قويًّا، فمثالنا التّالي يحتوي على خمسة عشر كلمة فقط: "في آيكيا، تتمثل رؤيتنا في خلق حياة يومية أفضل لأكبر عدد ممكن من النّاس"، حيث يركّز بيان الرؤية هذا على ما تأمل آيكيا في تحقيقه، وما يمكن أن يطمح موظّفوها إلى تحقيقه، وهو أشخاص يجعلون الحياة اليومية أفضل للآخرين. لاحظ عبارة "أكبر عدد من النّاس"، هذه عبارة مقصودة، إذ تصنع آيكيا منتجات يتم تسويقها على نطاق واسع، وتختار مواءمة رؤيتها مع المستهلكين المستهدفين، كما لم تتم صياغة بيان الرؤية هذا في إطار سياسيّ؛ بل هو نموذج مثاليّ للعلامة التّجارية العالميّة، ويشير إلى نتيجة إيجابية واسعة النطاق، فبيان آيكيا هو رؤية خالصة تقريبًا، حيث يجب أن يربط بيان الرؤية العمل اليومي للمؤسسة بالمثل الأعلى العالميّ، بدلاً من محاولة رسم خارطة طريق للتنفيذ. وإلى جانب رؤيتها، تتابع آيكيا ما تسمّيه "فكرتها التجارية"، وهي تنصّ على: "فكرة عملنا هي 'تقديم مجموعة واسعة من منتجات تأثيث المنزل العملية، والمصممة تصميمًا جيّدًا بأسعار منخفضة للغاية، بحيث يتمكن أكبر عدد ممكن من الأشخاص من شرائها"، وهذا أشبه بتهجين القيمة المقترحة، وبيان المهمّة في صياغةٍ واحدة، حيث تشرح القيمة المقترحة بالضّبط ما تفعله منظّمةٌ، أو شركةٌ، ويدفع النّاس مقابلها (أو يساهمون فيها في حالة المنظمة غير الربحية)، وهي نقطة مركزية في أيّ خطوة. ومن أمثلة بيانات الرّؤية المعقّدة نذكر بيان كوكا كولا، فبالرغم من كونها شركة ناجحة جدًّا، إلّا أنّنا نجد صعوبة في التّفريق بين بيان الرّؤية ،وبيان المهمّة المنشورين على موقعها الإلكترونيّ. يوضّح الشّكل 7.2 مجموعة كبيرة من البيانات، والتعليقات بعنوان "المهمّة، والرؤية، والقيم" على موقع كوكا كولا الإلكتروني الذي يتضمن أقسامًا عن ثقافة مكان العمل، والتّركيز على السّوق، و"العمل بذكاء"، حيث تغطّي هذه المفاهيم مجتمعةً معظم ما ناقشناه في هذا المقال. لم تتعمّد كوكا كولا هنا إغفال المعطيات المهمّى في صفحة "المهمّة، والرؤية، والقيم". بل ربّما حاولت قول الكثير. ومن الأخطاء أيضًا كيفيّة صياغة هذه الأفكار. وبالنّسبة لشركة مثل كوكا كولا، ذات النّجاح الواسع، والانتشار العالميّ، وبعض لحظات الإعلان الخالدة؛ فإنّ بيان رؤية مثل هذا لا يمكن إلاّ أن يوصف بالميت. الشكل 2.7: هذا بيان مهمّة، ورؤية، وأهداف كوكا كولا. حفظ الحقوق: صورة مرخّصة باسم جامعة رايس، OpenStax، تحت ترخيص CC BY 4.0 هذه حالة تقليديّة من "الإخبار بدل الإظهار"، ويمكن القول بأنّ كلًّا من آيكيا، وكوكا كولا، يسعيان إلى تحسين حياة الأشخاص قليلًا تحسينًا يوميًّا، ولكنّ كوكا كولا بجموعة بياناتها تلك، تحاول تغطية كلّ أنواع الرّؤية لكلّ علاقة هامّة، أو كلّ جانب مؤسّساتي يمكن تخيّله، وتملك فوق هذا بيان مهمّة منفصلًا على موقعها الإلكتروني. رغم أنّ هذا البيان منشورٌ على أنّه بيان مهمّة، إلاّ أنّ صياغته أقرب إلى بيان الرّؤية، إذ جاءت فيها القيمة المقترحة فكرةً لاحقةً في خطاب مؤسّساتي، وكلّ هذا مرتبط برؤيةٍ غامضةٍ لسنة 2020، وما هذا ببيان رؤية فعليّ، بل هو أشبه خاتمة لمحتوى "المهمّة، والرؤية، والقيم"، وليس من الواضح ماذا ينبغي للقيادة، والموظّفين، والشّركاء، والعملاء أن يفعلوا بهذه المعلومات. تعدّ كوكا كولا إحدى العلامات التّجاريّة الأكثر شهرةً في العالم، ويمكن للشّركة أن تنمو من خلال إنشاء منتجاتٍ جديدةٍ، واستعادة حصّتها في السّوق من المنافسين؛ ومن الضروري إذا راجعت الشّركة بياناتها تلك، أن تحاول التحدّث إلى كلّ المجموعات سالفة الذّكر بصوتٍ واحدٍ، بدلاً من محاولة مخاطبة كلٍّ منها على حدى في بيانٍ واحد. تختلف صياغة بيان الرّؤية لمشروع رياديّ عن إعادة صياغة بيان رؤية شركة كوكا كولا، فالشركة الناشئة في طور تحديد نفسها، مما قد يجعل إنشاء رؤيةٍ بعيدة المنال أمرًا صعبًا، لكنّ صياغة بيان الرؤية، والالتزامَ به، يُمكن أن يذكّر القادة، والموظّفين بما هم قادرون عليه، وبما يدور حوله سوقهم، لذلك فهي خطوةٌ مهمّةٌ، ويعدّ بيانُ الرؤية الجيّد واسعًا بما يكفي للسّماح لمؤسّستك بالتحرّك داخل سوقها بينما لا تزال تهدف إلى تحقيق بعض الخير في العالم. المهمة تعرّفت في بداية هذا المقال على شابّةٍ تسعى لمحاربة الظّلم الاجتماعي، وقد كانت مهمّة منقارةٍ بديهيّةً، حيث جاء ذلك بعد تجربتها في مواجهة الأحكام المسبقة في المجتمع. أي أنّ مهام ريادة الأعمال الأخرى قد لا تكون شخصيّة، أو إيثاريّة؛ لكنّها لا تزال قوّةً تدفع بحماسٍ للبحث عن الحلول، كما رأينا مع منقارة، فغالبًا ما يطوّر روّاد الأعمال فكرة منتجٍ، أو خدمةٍ من خلال تجربةٍ صعبةٍ، أو محبطة؛سواء كانت بسبب ظلم اجتماعيّ، أو غيره. المهمّة الرّياديّة هي سبب الوجود سواء تعلّق الأمر بشركة، أو بمنظّمة غير ربحية، ويكون التّعبير عنها كمفهوم ذاتيّ في نطاق السّوق، ويتضمن إحساسًا بالعمل، وعند التفكير في مهمّة المشروع، فإنّ الأسئلة المناسبة هي: من نحن؟ ماذا نصنع؟ أو نفعل؟ لماذا نحن موجودون كمؤسسة في المقام الأول؟ يحدّد الشّعور العالي بالمهمّة ماهية المنظّمة، وما تسعى إلى أن تصبح عليه، فحتّى المنظّمات غير الرّبحيّة تتواجد في الأسواق، لذا فعليها التّنافس على الموارد، وتعريف ذاتها عبر الخدمات الّتي تقدّمها، وتساعد صياغة مهمّة واضحة المنظّمة غير الرّبحية على الحصول على التّمويل؛ أمّا في عالم الرّبح، فهي تساعد الروّاد في الشّرح للمستثمرين، والعملاء، والموظّفين لماذا "ذلك الشيء الخاص بهم" -أيّا كان- يستحقّ الإنجاز. على سبيل المثال، لدى منظّمة الصّليب الأحمر الأمريكيّة، وهي إحدى أقدم، وأشهر منظّمات الإغاثة في الولايات المتّحدة، بيان مهمّة محدَّدًا للغاية: "يمنع الصّليب الأحمر الأمريكيّ، ويخفّف من المعاناة الإنسانيّةِ في مواجهة حالاتِ الطّوارئ من خلال حشد القوّة من المتطوّعين، وكرم المانحين". ويعدّ تحديد مهمّةّ المنظّمة بوضوحِ، وبشكلٍ خاصّ، أمرًا ضروريًّا للنّجاح. فبيان المهمّة هو تعبيرٌ واضحٌ عن سبب وجود المؤسّسة الّذي يحدّد هدفها الأساسيّ طويل الأمد، وغالبًا ما يتضمّن خطّة عملٍ مختصرةً لكيفية الوصول إلى هذا الهدف، ويصاغ بيان المهمّة عبر الإجابة عن الأسئلة السّابقة: من نحن؟ ماذا نصنع أو نفعل؟ لماذا نحن موجودون كمؤسسة في المقام الأول؟ يؤدّي تطوير بيان مهمّة فعّال، والالتزامُ به، إلى وضع أعضاء أيّ مؤسسة على صفحة واحدة، ويبلّغ الشّركاء، والمستهلكين المحتملين أنّ مؤسّستك تعرف إلى أين تتّجه، حيث يمكن مراجعة بيانات المهمّة، ولكن من الأفضل تنفيذها بشكل صحيح في البداية، ويساعد بيان المهمّة القويّ أصحاب المصلحة في تحديد أولويّات خطوات عمل الكيان، ويجب أن يوجّه القرارات. عندما يتعلق الأمر بصياغة بيان مهمّةٍ فعّال، فإنّ الوضوح هو المفتاح، إذ يجب أن يكون البيان محدّدًا، وغالبًا ما يكون ما يُترك خارج بيان المهمّة، بنفس أهميّة ما يكتب فيها، فبيان المهمّة الجيّد يكون مركّزًا، ومباشرًا، وصادقًا، حول السّوق المعنيّة، وكذا حول قدرات المنظّمة، وإمكانيّاتها؛ كما يحقّق التّوازن الصّحيح بين التّطبيق العمليّ، والأمل. لدى باتاغونيا على سبيل المثال، وهي شركة ملابس خارجيّة، بيان المهمّة المقنع التّالي: "باتاغونيا: نصنع أفضل منتج، ولا نسبّب أيّ ضرر غير ضروريّ، ونستخدم التّجارة للإلهام، وتنفيذ حلول الأزمة البيئيّة." قد يقول بيان المهمّة غير المناسب ما يلي: "في شركة الألعاب الفلانيّة، نصنع أفضل الألعاب الخشبية التي يمكن أن يشتريها المال، ومهمّتنا هي الاستمرار في النموّ لنكون رائدين في السوق في صناعة الألعاب الكلاسيكيّة"؛ أمّا بيان المهمّة الأفضل فهو: "شركة الألعاب الفلانيّة هي شركة رائدة في السّوق في صناعة الألعاب الخشبية في الشّرق الأوسط، وشمال إفريقيا، وتتمثل مهمّتنا في قيادة السّوق العالميّ في مجال تصنيع الألغاز الخشبية، والسيّارات الخشبية، وخدمة العملاء بإصدارات جديدة من الألعاب الكلاسيكيّة"، فكلا البيانين يترك مجالا للنموّ، لكنّ الثّاني يحدّد بدقّة أكبر ما هي المنظّمة، وإلى أين تتّجه على المدى الطّويل. يجب أن يمتنع بيان المهمّة عن استخدام العبارات المبتذلة، لأنّها تقيّد الرّؤية المحدّدة، والفريدة للمشروع، كما لا ينبغي أن يحدّ البيان من الابتكار، أو الإبداع، ويجب أن يشير إلى المستهلكين، أو العملاء. لإنشاء بيان مهمّة قوي، ابدأ بتحديد ماهية المنّظمة، فحتّى في شركة ناشئة، لديك حلّ أساسيّ للمشكلة، وفكرة عمّا سيكون عليه المنتج، وبالتّالي العلامة التّجاريّة. فقط كن محدّدًا عند تعريف سبب وجود مؤسّستك دون الحدّ من سبل النّموّ، وضمّن، أو وارِ مهمّة الخدمة في المهمّة الأوسع، فعلى بيان المهمّة التّعبير عمّا يلي بشيء من التّفاؤل: حدّد من أنت. حدّد ما تفعله الآن، ولمن. حدّد ما تريد القيام به في المستقبل. قد تتغيّر المهمّة تغيّرًا كبيرًا في المراحل المبكّرة، لذا فلا ينبغي صياغة بيانات المهمّة بطريقة تحدّ من قدرة المؤسسة على التحوّل، بمعنى تغيير قيمتها المقترحة لتحقيق تناسب أكبر بين المنتج، والسّوق؛ وبينما لا ينبغي نبذ التّغيير، لا تراجع، وتغيّر بيان المهمّة إلاّ إذا كان ذلك ضروريًّا ومفيدًا، فعادةً ما تقوم الشّركات، والمؤسّسات بتغيير بيان مهمّتها عندما تقوم بتحوّل كبير، إمّا بسبب الاستحواذ، أو التحوّل إلى سوق آخر، أو تطبيق إستراتيجيّة نموّ جديدة، وما إلى ذلك؛ وإمّا لتغيّر الغرض منها تغيّرًا كبيرًا. على سبيل المثال، تأسّست منظمة مسيرة الدّايمز (The March of Dimes) في الأصل لخدمة المصابين بشلل الأطفال، ولكن مع نجاح لقاحات شلل الأطفال، والقضاء على المرض في الولايات المتحدة، غيّرت The March of Dimes مهمّتها للتّركيز على منع التشوّهات الخلقيّة، والولادة المبكّرة، ووفيات الأطفال. وفي مثال آخر، تأسّست سلاك (Slack)، وهي شركة ناشئة بتمويل رأس المال الجريء، وطُرحت منتصف 2019 للاكتتاب العام، وجاء تأسيسها على أنّها منصّة لمطوري الألعاب عبر الإنترنت للتعاون، ففشل المشروع الأصلي (مرتين)، لكن لاحظ المؤسس أنّ مهندسيه استخدموا الأداة للتّعاون السّريع، ولم يحتاجوا إلى بريد إلكتروني، أو وسائل تواصل أخرى من ميكروسوفت ويندوز، وبهذا نشرت سلاك بسرعة هذا التّغيير، عبر بيان مهمّة بسيط: "سلاك هو المكان الّذي ينساب فيه العمل، والمكان الّذي يجمع النّاس الّذين تحتاجهم، والمعلومات الّتي تتشاركها، والأدوات الّتي تستخدمها معًا لإنجاز المهامّ." ثمّة شيء واحد يجب أن يكون واضحًا، وهو أن الغرض من المنظّمة ليس الإتيان ببيانات مهمّة، ورؤية أفضل؛ إنّما الغرض منها هو تقديم قيمةٍ للأشخاص، ومحاولة الحصول على أموال، أو دعمٍ أثناء ذلك؛ والهدف من صياغة بيانات المهمّة، والرؤية، هو مساعدتك على تحقيق هذه الغاية، وباختصار يمكننا القول أنّ بيان رؤيتك هو حلمك، وبيان مهمّتك هو استراتيجيتك في سوق العالم الحقيقيّ، فالرّؤية هي عبارة عن بيانٍ حول سبب أهميّتك كمنظّمة، مع نظرةٍ إلى ما ستصبح عليه في المستقبل؛ في حين أنّ المهمّة هي عبارة عن بيان حول أولئك الذين قد يخدمهم المشروع. سيساعدك تنقيح هذه البيانات على توضيح قصّة ريادة الأعمال الخاصة بك. الأهداف تحتاج المنظّمة إلى تسطير أهداف محدّدة لمنتجاتها، وخدماتها لتحافظ على فائدتها، إذ يجب تحديد الأهداف بعبارات دقيقة مناسبة للسّوق، فعلى سبيل المثال، يحتاج مطعم إيطالي فاخر جديد في شيكاغو إلى هدف أوليّ حول كيفيّة جذب عملاء جدد، والاحتفاظ بهم بناءً على رؤيته، ورسالته، مقارنة بما هو متاح بالفعل، فربما لا يكون الهدف الأوليّ لشركة جديدة هو سحق كلّ المنافسة، والاستيلاء على مركز احتكار؛ وبدلاً من ذلك، قد تأمل في الحصول على نسبة من حصّة سوق منافس قريب، أو إنشاء منتجٍ جديدٍ للوصول إلى سوق متخصّصة، ففي هذه الحالات، تسطّر الأهداف على أنّها نتائج محدّدة لجذب عملاء المنافسين. أو إنشاء فئة جديدة، كما في مثال سبانكس أين أنشأت صاحبتها نوعًا جديدًا من الجوارب النّسائيّة الطّويلة. لولوليمون اثليتيكا (Lululemon Athletica) هي شركة رائدة في الملابس الرّياضيّة النّسائيّة، وهي من النّوع المركّز على العملاء، وقد احتاجت مؤخرًا إلى إلى أهدافٍ جديدةٍ للنموّ، بحيث تتّسق مع مهمّتها: "إنّ الإدارة عازمةٌ على زيادة أرباح الشّركة إلى 4 مليارات دولار بحلول عام 2020، وهذا يتضمّن تنمية نشاطات مساهمةٍ صغيرةٍ عادةً إلى أعلى مستوى، مثل: التّجارة الرّجاليّة، والدّوليّة، والرّقمية." قد تكون الأهداف تكتيكيّة على المدى القصير أيضًا، لكن يجب أن تكون معقولةً، قابلة للتّحقيق، ومتأثّرة بالفهم الدّقيق للسّوق، والمنافسة، فلا شيء يعيق النّمو، ويصعّب الطريق لتحقيق رؤيتك بشكل أسرع أكثر من تحديدك لأهداف غير قابلة للتّحقيق، وإلزام أعضاء المنظّمة بمعايير مستحيلة؛ وبدلاً من ذلك، حدّد أهدافًا "ذكيّة" حسب نموذج سمارت SMART الّذي ناقشناه في مقال الرؤية والأهداف الريادية. وهي الحروف الأولى من كلمات تصف الأهداف. هل من المعقول أن تسعى شركة صابون طبيعيّ إلى الحصول على 1.5% من حصة السّوق العالمية بعد عامين من التأسيس؟ لنفكّك الهدف لتقييم مدى اتباعه لنموذج SMART، يعدّ محدّدا لأنّه يذكر مبلغًا مستهدفًا بوضوح ( 1.5%) من سوق محدّد (السّوق العالميّة للصّابون الطّبيعيّ)، وحصّة السوق قابلة للقياس، إذ يمكننا افتراض أن هذا هدفٌ يمكن تحقيقه لشركتنا التخيّليّة النّاشئة، لكن هل هو ملائم؟ دائمًا ما يكون الحصول على حصة في السوق أمرًا ملائما لأنه يترجم إلى أرباح قصيرة الأجل، وإمكانية تحقيق أرباح مستقبلية في نفس الوقت؛ أمّا الهدف فكما هو مذكور في الوقت المناسب (في غضون عامين). وبالتالي، هذا هدف يتبع نموذج SMART. أهداف SMART ليست ضمانًا للنجاح، فقد تكون مخطئًا بشأن ما إذا كان الهدف قابلا للتّحقيق على سبيل المثال، أو قد تفشل في قياس النّتائج بشكل صحيح، وقد لا تكون فكرتك محدّدة جيدًا، أو فريدةً كما كنت تعتقد؛ ومع ذلك، فمن الأفضل بكثيرٍ تحديد الأهداف، مع وضع كل هذه العوامل في الحسبان بدلًا من ممارسة التفكير بالتمنّي، أو تحديد أهداف مجرّدة، والأمل في الوصول إلى معايير العمل عن طريق الحظّ. أََدركْ أنّ تحديد هدف SMART هو تكتيك لإنجاز الأشياء على المدى القصير، إذ يمكنك وضع العديد من الأهداف القابلة للتحقيق على مدى عدة أسابيع، أو أشهر، وبناء طريقك إلى خطّة عمل معقّدة، وواقعيّة، ويحتوي على سبيل المثال قالب خطّة العمل من إدارة الأعمال الصّغيرة SBA على أحد عشر قسمًا أساسيًّا، وعلى مخطّط تفصيليّ فارغ مكون من 35 صفحة، فإذا وضعت هدف SMART لتحقيقه عن كلّ قسم أسبوعيًّا، فإنّك بعد ثلاثة أشهر ستمتلك خطّة عملٍ شاملة. ترجمة -وبتصرف- للفصل (Telling Your Entrepreneurial Story and Pitching the Idea) من كتاب Entrepreneurship. اقرأ أيضًا المقال التالي: كيف يشارك رائد الأعمال قصته الريادية المقال السابق: استخدام العمليات الرشيقة في حل المشاكل الريادية لرائد الأعمال1 نقطة
-
لا شك أن هذا المقال يُعد القطعة المكملة لتاج العمل الحر، فنحن نفصِّل في كيفية التعامل مع العملاء وإحسان الإدارة الذاتية للنفس وبيئة العمل والحياة العملية وغير ذلك في الفصول الماضية من أجل الوصول إلى هذه النقطة، وهي جني ثمار كل الجهد والتعب السابقيْن. واعلم أن الإدارة المالية في عملك الحر ذات شأن عظيم، ليس لأن المال هو مطلوبك من العمل، بل لأن العمل الحر يختلف عن الوظيفة العادية في أنك تمثل هنا وزارة المالية والضمان الاجتماعي معًا! فالأعمال الحرة ليس لها تأمين صحي ولا معاش في الغالب لأنها لا تتبع جهة نظامية، ومثلها في ذلك مثل الأعمال الحرة الحرفية التي تراها من حولك من النجارة والحدادة وغيرها. وينبني على ذلك أن عليك التفكير من الآن بشكل مختلف جذريًا في المال الذي تكسبه من عملك ذاك، وألا تنظر إلى ورقة المئة دولار على أنها ربحك من عمل عملته، بل هذه المئة فيها جزء يجب أن يذهب في حساب خاص للتأمين الصحي والطوارئ، وجزء آخر يذهب لمعاشك حين تقرر التقاعد، وهكذا، لهذا فضلنا استخدام كلمة الإدارة المالية من بداية هذا المقال، إذ هي أقرب للمعنى المراد من كلمة أرباح أو مكاسب أو راتب. وسنبدأ هنا في شرح كيفية تسعير خدماتك، والطرق المشهورة في تسعير المشاريع وطلبات العملاء، لتختار نوع التسعير المناسب لك وفق كل حالة، وكيف ومتى تزيد من سعر خدمتك. ثم ننظر في الطرق المشهورة للتعاملات المالية في العمل عن بعد وبشكل حر على الإنترنت، لتعلم كيف تسحب أجرك من منصات العمل الحر أو من العملاء. وبعد ذلك نتكلم بقليل من التفصيل عن عقود العمل بينك وبين العملاء، والتأمين الصحي لك والطوارئ وحساب التقاعد. العوامل المؤثرة في التسعير لا شك في أن أمر حساب السعر المناسب للمشروع الذي ستعمل عليه يشغلك ويقلقك، إذ تخشى رفع السعر خوفًا من ترك العميل لك إلى غيرك، وتخشى خفضه فتبخس حقك أو يظن العميل سوء جودة تنفيذك، فما العمل؟ وما العوامل التي يجب النظر لها واعتبارها عند حساب سعر المشروع؟ الواقع أن سعر الأعمال في الأسواق الحرة لا يتبع قوانين حاكمة في الغالب خاصة في الصفقات التي تكون في الأعمال الحرة التي نقصدها من الكتابة والترجمة والتسويق والبرمجة والتصميم والاستشارات الإدارية وإدارة الأعمال والمحاسبة والمساعدة الافتراضية وغير ذلك. لكن نستطيع القول أن القاعدتين الحاكمتين اللتين يمكن الأخذ بهما هما السعر العام للخدمة في السوق، والسعر المناسب لك أنت وفقًا لحساب تكاليفك وأرباحك، وهما محل حديثنا هنا. فأما سعر السوق فتستطيع معرفته بالنظر في متوسط قيمة العروض على الخدمات المماثلة لخدمتك في مواقع العمل الحر أو متوسط ميزانيات العملاء لمثل تلك المشاريع، وإن لم يكن ذلك متاحًا من أجل توفير تنافس شريف على الأعمال كما في موقع مستقل، أو كانت ميزانيات العملاء لا تمثل القيمة الحقيقية للمشروع، فحينئذ تنظر في بعض من يقدم هذه الخدمة باحثًا عن السعر المناسب لما تفعله. فمثلًا، حين بدأت في الترجمة قبل نحو ست سنوات بعد أن كنت أعمل في التصميم المرئي وتصميم تجربة الاستخدام، لم أكن أعرف متوسط الأسعار التي يمكن طلبها في الترجمة للبلاد العربية، ونظرت في الأسعار العالمية للترجمة فلم أظنها تناسبني حينها. فاستشرت اثنين من الكتاب العرب الذين لهم أعمال في منصات العمل الحر التي قررت العمل فيها عن متوسط السعر المناسب لخدماتي، فأشاروا علي بالأسعار المناسبة وفق الجودة والسوق والعرض والطلب، ونفعني ذلك أيما نفع عند أول تعاملاتي مع عملاء من العرب. وأما حساب السعر وفقًا لتكاليفك أنت، فهذا تعرفه بحساب تكاليفك المختلفة من إيجار للمكتب إن كنت تعمل من مكتب، واشتراكات برمجية إن كنت تعمل على برامج تصميم كحزمة أدوبي مثلًا، وتكاليف الإنترنت والكهرباء والنقل وغيرها إن وجدت، ثم التكاليف التي تغطي حياة كريمة لك إن كنت تعتمد على العمل الحر بصورة كلية من سكن ونفقات ومأوى وطوارئ وتأمين ومعاش وغير ذلك، وتقسم مجموع ذلك على عدد ساعات عملك في الشهر، فتخرج بقيمة كل ساعة عمل لديك. وعليه، فإن كانت ساعة عملك تساوي 10$ مثلًا وكان العمل المطلوب منك يستغرق ثلاث ساعات فإن الثمن الذي ستضعه يجب ألا يقل عن 30$، وإن وجدت السوق كله ينفذ هذا العمل بخمسة دولارات فهذا لا يعنيك، إذ أن هذا هو السعر المناسب لك أنت، هذا ونحن لم نحسب عامل خبرتك في المجال إذ تزيد أو تُنقص من ذلك السعر أيضًا. طيب ماذا تفعل في هذه الحالة؟ الحل هنا أن تترك هذه الخدمة إلى غيرها أو تغير السوق الذي تتعامل معه أو تقلل تكاليفك ونفقاتك، فمن غير المنطقي أن تعمل بسعر لا يغطي تكاليفك! لكن هذه حالة متطرفة ولا تحدث إلا نادرًا جدًا، وفي غالب هذه النوادر يكون السبب هو وضع العميل لميزانية غير منطقية، وحينها تتفاوض معه على الميزانية المناسبة أو ترفض العمل. أنواع التسعير للمشاريع سننظر في ما يلي في بعض أشهر نظم تسعير الخدمات في السوق بشكل عام، والسوق العربي بشكل خاص لتختار بعدها ما يناسبك وفق المشروع ووفق نوع الخدمة التي تقدمها. التسعير بعدد الساعات في هذا النوع تحدد قيمة ساعة عملك وفقًا للتكاليف التي ذكرناها أعلاه، وتحسب سعر المشروع وفقًا لعدد الساعات التي تحتاجها لتنفيذه، لكن هذه الطريقة لا تصلح إلا للخبير في مجاله ولا تصلح للمبتدئين، إذ نفترض بهذا الأسلوب أنك تعرف تمامًا ما ستفعله في كل مشروع، فتكون الساعات الثلاث تلك كلها عمل، على عكس المبتدئ أو الأقل خبرة إذ سيكون نمط عمله أبطأ بقليل. التسعير بالوحدات في هذا النوع تحدد السعر لكل وحدة عمل، كأن تحدد قيمة معينة ولتكن س دولار لكل ألف كلمة تترجمها أو تكتبها، أو تصميم تنفذه، أو خاصية برمجية تضيفها، أو صفحة، أو جدول بيانات (spreadsheet)، وهكذا. وهذا النوع هو الأشهر في تحديد الأسعار في السوق، ولا نحتاج هنا أن نذكرك أن هذه القيمة يجب أن تناسب وقت تنفيذ المشروع وتغطي تكاليفك، وانتبه إلى أنه كلما طال وقت التنفيذ قلت قيمة كل ساعة عمل، فاحرص على إنهاء العمل قبل موعد تسليمه. التسعير الثابت هذا النوع مناسب للخدمات التي تنفذها لعملاء بشكل دوري ومتكرر، كأن يكون لديك عميل يرسل لك عددًا ثابتًا من الملفات للعمل عليها (ترجمة، تصميم، تعديل، …إلخ) كل شهر، فهنا تستطيع إما استخدام أحد أنواع التسعير السابقة، أو حساب متوسط تلك الملفات شهريًا ووضع سعر واحد للشهر وفقها. الطرق المشهورة للمعاملات المالية نأتي الآن لمرحلة ما بعد تنفيذ المشروع، يجب أن تكون قد حصلت على المال الآن، فأين هو، وكيف تحصل عليه؟ إن كنت تعمل على إحدى منصات العمل الحر فحينها يكون مالك في موقع تلك المنصة، وستقتطع منه المنصة نسبة كعمولة لها قد تصل إلى خمس المبلغ لقاء تأمين حصولك عليه وعدم تهرب العميل من الدفع، إذ تشترط المنصة على العميل إرسال كامل قيمة المشروع إلى المنصة قبل بدء التنفيذ، ولقاء توفير مكان يجمعك مع العميل والفصل في الخلافات التي قد تنشأ بينكما وغير ذلك من الخدمات التي قد تحتاج إليها في التعامل مع العملاء، خاصة عند البدء في العمل الحر بدون خلفية سابقة ولا قاعدة عملاء. وتحتفظ هذه المنصة بقيمة المشروع لديها مدة تتراوح بين أسبوع إلى أسبوعين من أجل إتمام إجراءات التحويلات البنكية من ناحية، وحفظ حق العميل من ناحية أخرى إذا حدث أن اشتكى العميل من سوء التنفيذ أو تلاعب المستقل به، فحينئذ تكون قيمة المشروع لا زالت في يد المنصة ويمكن إرجاعها للعميل، والعكس صحيح إذا ثبت الحق للمستقل. وبعد انتهاء مدة احتجاز الأرباح تلك، توفر منصة العمل الحر وسائل بنكية لسحب هذه الأموال، وأشهر هذه الوسائل هي باي بال (PayPal) وويسترن يونيون (Western Union)، لكن قد تجد منصات تقبل الدفع أو السحب بوسيلة بنكية أخرى، فالفيصل هو ما اختارت المنصة أن تتعامل به وفقًا لظروفها والمناطق الجغرافية التي تخدمها. وقد تكون في دولة أو بلد لديه مشاكل في سحب أموالك بالطريقة التي تتيحها المنصة، فما العمل؟ الحل أن تبحث عن وسيط (شخص أو شركة) يستطيع استلام تلك الأرباح ومن ثم تحويلها إليك، أو الاستعانة بأحد معارفك ممن تثق به خارج البلاد يسحبها لك ويرسلها إليك بطريقة أخرى، وستجد شرحًا مفصلًا لباي بال وطرق السحب منه في هذه المقالة من مدونة مستقل. التأمين الصحي وخطة التقاعد والآن، نأتي لمرحلة ما بعد العمل، فنفترض أنك قد تعاقدت مع عملاء وحصلت على مشاريع وعملت فيها وجنيت أرباحًا وصارت لك قاعدة وسوقًا نجحت فيه، ثم ماذا؟ يجب الآن أن تفكر في الطوارئ التي قد تحدث لك، ومتى ستوقف هذا العمل! نعم، فأنت لن تعمل طول عمرك، بل يجب أن يكون هذا تخطيطك حتى لو استطعت العمل، فأنت لم تخلق لتعمل وتعمل فقط، والوظائف التقليدية توفر هذا التفكير على العاملين فيها باقتطاع نسب ثابتة من رواتبهم كل شهر من أجل التأمينات الصحية والخدمات والمنافع الأخرى التي توفرها لهم، بما فيها المعاش أو الضمان الاجتماعي. أما وقد صرت تعمل بشكل حر الآن فإن عليك التفكير في هذه الأمور واحتسابها في تخطيط المالي لكل عام، وهذه النقطة تحتاج إلى استشارة متخصص في التأمينات الاجتماعية من أجل حساب دقيق لها، ليخبرك بالمبلغ الذي يجب تخصيصه كمعاش لك بعد التقاعد. لكن القاعدة العامة في هذا هي احتساب نفقاتك وتكاليفك كما ذكرنا في بداية المقال، ومحاولة ترشيد إنفاق تلك المصاريف واستهلاك الموارد، وما زاد على ذلك يُدخر للطوارئ والمعاش والاحتياجات المستقبلية. وأفضل من هذا أن تخطط لتعلم إدارة الأعمال -إن لم تكن قد فعلت- لأنك محتاج لها في العمل الحر من ناحية كما سيرد بيانه في المقال التالي: التعهيد الخارجي وتوظيف مستقلين، ولأنك تستطيع تأمين مصدر دخل خامل لك بإنشاء تجارة جانبية تنمو مع الوقت بينما تعمل أنت في عملك وخدماتك كما اعتدت، إلى أن تصل فيها تلك التجارة إلى مرحلة تغنيك عن العمل، فحينها تكون بديلًا عن الضمان الاجتماعي، إن لم تكن أفضل! إذ لا يشترط هنا أن تعمل بيديك فيها، بل قد توظف فيها من يعمل فيها لك. أيضًا، من الأفكار المعتبر بها في خطط التقاعد أن تختار تجارة أو شركة لتستثمر فيها بمالك دون أن تعمل فيها بشكل مباشر، أي في صورة أسهم فقط، وهذا من شأنه أن يعود عليك بأرباح شهرية أو سنوية تغنيك كذلك عن العمل بعد مدة معينة تصل فيها تلك الأرباح إلى الحد الذي يغطي نفقاتك وتكاليفك. خلاصة المقال وهكذا، نكون قد مررنا على أمور التسعير والتقاعد بشكل سريع، ونأمل أن تكون قد عرفت كيف تضع أسعارك في أعمالك وخدماتك دون رهبة من خسارة السوق أو تشويه لجودة عملك. كتبت سارة شهيد المسودة الأولية لهذه المقالة. اقرأ أيضًا المقال التالي: ما يلزم العامل المستقل معرفته عن التعهيد الخارجي المقال السابق: العناية ببيئة عمل العامل المستقل نصائح للمستقلين الذين يعملون في مجال تصميم وتطوير الويب للتوفير والادخار والتقاعد. كيف تسعّر مشاريع الويب. الطريقة الأمثل لإدارة ميزانيتك بكفاءة وتسجيل أرباح كعامل مستقل. النسخة الكاملة من كتاب دليل المستقل والعامل عن بعد1 نقطة
-
تكرما أريد اقتراحاتكم للعبة بسيطة بلغة البايثون تكون متعلقة بالثورة الصناعية الرابعة، حيث يجب أن تكون الصور بنوع JPG أو PNG.1 نقطة
-
عندما أستخدم eloquent ، يمكنني استخدام طريقة "where" ثم طريقة "get" لملء كائن يحتوي على ما حددته في قاعدة البيانات الخاصة بي. يعني: $users = User::where('gender', 'M')->where('is_active', 1)->get(['pseudo', 'email', 'age', 'created_at'])->toArray(); هنا يمكنني اختيار الأعمدة التي أريد الحصول عليها مثل "pseudo" ، "email" ، إلخ. ولكن ما أريده هو طريقة القيام بالعكس. يمكن أن يكون شيئًا من هذا القبيل: $users = User::where('gender', 'M')->where('is_active', 1)->notGet(['pseudo', 'email', 'age', 'created_at'])->toArray(); هل هناك طريقة معينة لعمل ذلك؟1 نقطة
-
أستخدم Laravel Jetstream و أريد أن اتيح للمُستخدم إضافة صورته الشخصية أثناء التسجيل و هذا ما وجدته في الملف CreateNewUser.php: <?php public function create(array $input) { Validator::make($input, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => $this->passwordRules(), 'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['required', 'accepted'] : '', ])->validate(); return DB::transaction(function () use ($input) { return tap(User::create([ 'name' => $input['name'], 'email' => $input['email'], 'password' => Hash::make($input['password']), ]), function (User $user) { $this->createTeam($user); }); }); } كيف يُمكنني إتاحة الأمر و أين أضيف الشيفرة التي تسمح برفع الصورة الشخصية ؟1 نقطة
-
يحتوي Jetstream على خاصية رفع صور الملف الشخصي مضمنة ويحتوي على الإعدادات الافتراضية المدرجة بالفعل. إذا كنت تريد أن تعمل هذه الخاصية عند التسجيل ، فيمكنك استدعاء الوظيفة المضمنة بعد استدعاء: $this->createTeam($user) أو قبلها مباشرة. ما عليك سوى القيام بذلك بعد إنشاء المستخدم حتى تتمكن من استخدام التابع updateProfilePhoto: return DB::transaction(function () use ($input) { return tap(User::create([ 'name' => $input['name'], 'email' => $input['email'], 'password' => Hash::make($input['password']), ]), function (User $user) { $this->createTeam($user); if (isset($input['image'])) { $user->updateProfilePhoto($input['image']); } }); }); هذه هي الطريقة التي يقوم Fortify بتنفيذها في صنف UpdateUserProfileInformation ، يمكنك إلقاء نظرة على هذا الصنف في app/Actions/Fortify. لا تنسى إضافة جزء التحقق من الصورة في : <?php Validator::make($input, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'image' => ['nullable', 'mimes:jpg,jpeg,png', 'max:1024'], 'password' => $this->passwordRules(), 'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['required', 'accepted'] : '', ])->validate(); و إضافة حقل الصورة لإستمارة التسجيل.1 نقطة
-
يمكنك استخدام makeHidden للقيام بإخفاء الأعمدة التي لا تريدها, فنقوم بالاستعلام عن البيانات التي نريدها, ثم نُطبق الدالة makeHidden ونحدد الأعمدة التي لا نريدها في النتيجة $res = Model::where('users')->get(); $res->makeHidden(['pseudo', 'email', 'age', 'created_at']); return $res; فبهذه الطريقة تقوم بإخفاء قيم (البريد الإلكتروني والعمر ... إلخ) عند الحاجة هذه طريقة جيدة, ولكن توجد طريقة أخرى أيضًا تُسهل عليك الإجراءات إذا كنت ترغب بإخفاء الأعمدة بشكل دائم وهي التوجّه إلى الـ model الخاص بالمستخدمين 'User' (أو أي نموذج ترغب بإخفاء أعمدة بداخله) ويوجد هنالك المتغير protected $hidden = [...] حيث يحتوي على مصفوفة باسماء الحقول التي لن تظهر عند الاستعلام ونقوم بإضافة الحقول المراد إخفائها في المتغير, لتصبح كالآتي: protected $hidden = [ 'password', 'remember_token', 'pseudo', 'email', 'age', 'created_at', ]; ثم نقوم بالاستعلام عن البيانات بشكل مباشر عن طريق نموذج User $res = User::all(); return $res; // الحقول التي حددناها أنّها مخفية لن تظهر في النتيجة1 نقطة
-
أحاول القيام بالتالي في مكون Livewire: $alertes = Alerte::with(['salarie', 'formation']) ->join('formations', 'formations.id', '=', 'alertes.formation_id') ->addSelect(DB::raw('date_add(formations.date_fin, interval formations.duree_validite month) as date_recyclage')) ->where('formations.entreprise_id', $this->entreprise_id) ->when($this->traitee, function ($query) { $query->where('traitee', $this->traitee); }) ->orderByRaw($this->critere_tri, $this->asc ? 'asc' : 'desc') ->paginate($this->nombre_par_page); ولكن عندما أحاول عرض : $alerte->formation->intitule فإنها لا تعمل: intitule not found لقد ألقيت نظرة على نتيجة الاستعلام مع dd. لدي حقل واحد فقط: date_recyclage. لماذا لدي حقل واحد فقط في حين أن بداية الاستعلام الخاص بي يجب أن يعيد السجلات مع salarie و formation . ما الخطأ في الكود الخاص بي؟1 نقطة
-
بدل السطر التالي: ->addSelect( DB::raw('date_add(formations.date_fin, interval formations.duree_validite month) as date_recyclage')) إستخدم: ->selectRaw( 'alertes.*, date_add(formations.date_fin, interval formations.duree_validite month) as date_recyclage') السبب في ذلك أنك تستطيع استخدام التابع addSelect إن كان لديك نسخة منشئ استعلامات مسبقًا ورغبت في إضافة عمود آخر لأعمدة Select الحالي لكنه ليس لديك select لذلك فالناتج هو عمود واحد فقط. و في هذه الحالة يُمكن استخدام طريقة selectRaw بدلاً من addSelect (DB :: raw (...)).1 نقطة
-
عليك بكتابة Native Module مخصص بداخل مجلد الـ android، على سبيل المثال، OpenSettingsModule.java بداخل android/app/src/main/java/com/<projectname>/opensettings. لا تنسى عمل register لهذا الـ module بداخل OpenSettingsPackage.java. سنقوم بكتابة الكود التالي بداخل OpenSettingsModule.java: package com.<projectname>.opensettings; import android.app.Activity; import android.content.Intent; import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReactContextBaseJavaModule; public class OpenSettingsModule extends ReactContextBaseJavaModule { @Override public String getName() { /** * .سيكون هذا اسم الوحدة التي سننشئها * * import { NativeModules } from 'react-native'; * * NativeModules.OpenSettings.openNetworkSettings( ... ); */ return "OpenSettings"; } @ReactMethod public void openNetworkSettings(Callback cb) { Activity currentActivity = getCurrentActivity(); if (currentActivity == null) { cb.invoke(false); return; } try { currentActivity.startActivity(new Intent(android.provider.Settings.ACTION_SETTINGS)); cb.invoke(true); } catch (Exception e) { cb.invoke(e.getMessage()); } } public OpenSettingsModule(ReactApplicationContext reactContext) { super(reactContext); } } الآن علينا تسجيل هذه الوحدة بداخل OpenSettingsPackage.java لنستطيع استخدامها: package com.<projectname>.opensettings; import com.facebook.react.ReactPackage; import com.facebook.react.bridge.JavaScriptModule; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.uimanager.ViewManager; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class OpenSettingsPackage implements ReactPackage { @Override public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) { List<NativeModule> modules = new ArrayList<>(); modules.add(new OpenSettingsModule(reactContext)); return modules; } @Override public List<Class<? extends JavaScriptModule>> createJSModules() { return Collections.emptyList(); } @Override public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { return Collections.emptyList(); } } قبل الاستعمال، علينا توفير الحزمة بداخل MainApplication.java هكذا: import com.<projectname>.opensettings.*; @Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage(), new OpenSettingsPackage() /* .هذه هي الوحدة التي قمنا بكتابتها */ ); } والآن، قم باستعماله بداخل React Native هكذا: import { NativeModules } from 'react-native'; function App() { const openSettings() { NativeModules.OpenSettings.openNetworkSettings(data => {}); } return ( <View> <Text onPress={openSettings}>Open Settings</Text> </View> ); }1 نقطة
-
1 نقطة
-
عندما اقوم بتشغيل التطبيق على Android عن طريق: react-native run-android احصل على الخطأ التالي: Could not initialize class com.android.sdklib.repository.AndroidSdkHandler1 نقطة
-
يجب عليك ضبط متغير البيئة $JAVA_HOME لكي يشير الى تثبيت JDK عندك. اذا كنت تستعمل MacOS او Linux، قم بعمل: export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home" وبالنسية لـ Windows، قم باضافة JAVA_HOME الى متغيرات المستخدم لديك الى: "C://Program Files/Java/jdk_1.x_" اذا كنت لا تعلم مسار Java على جهازك (Windows)، قم بعمل: c:\> for %i in (java.exe) do @echo. %~$PATH:i1 نقطة
-
أحد الطرق المُمكنة لتحقيق ذلك هي إستخدام نطاق خاص في النموذج User بالشكل التالي: protected $fields = ['id','pseudo','email']; // add all fields from your table public function scopeExclude($query, $excludes = []) { return $query->select(array_diff($this->fields, (array) $excludes)); } ثم في المُتحكم يُمكنك عمل: <?php $users = User::where([ ['gender', '=', 'M'], ['is_active', '=', 1], ])->exclude(['pseudo', 'email', 'created_at']) ->toArray();1 نقطة
-
هناك عدة طرق ولكن أشهر هذه الطرق التالي استخدام set حيث سيتم إنشاء set وأثناء إنشاء ال set يتم مسح العناصر المكررة كالتالي mylist = ["a", "b", "a", "c", "c"] mylist = list( set(mylist) ) أو استخدام ال dict.fromkeys وهذه الطريقة تقوم بإنشاء directory وأثناء إنشائه يتم مسح العناصر المكررة تلقائياً كالتالي mylist = ["a", "b", "a", "c", "c"] mylist = list( dict.fromkeys(mylist) ) الفرق أن الطريقة الأولى لا تحافظ على ترتيب العناصر ولكن الطريقة الثانية تحافظ علي الترتيب1 نقطة
-
ربما إعدادت مشروع أندرويد ناقصة ففي إعدادت Gradle تأكد من وجود: buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.2' // هنا } } أو نسخة أحدث.. وجود متغيرات البيئة الخاصة ب java sdk و android sdk : export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home export PATH=$PATH:$JAVA_HOME/bin export ANDROID_HOME=/Users/saif-ams/MyFiles/applications/androidsdk export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools1 نقطة
-
بعد إنشاء مشروع جديد، لم أتمكن من تشغيله بنجاح، حيث قمت بعمل: react-native init forum-app cd forum-app react-native run-forum-app ولكن يظهر لي الخطأ التالي: Failed to install the app. Make sure you have the Android development environment set up:1 نقطة
-
يمكنك عمل ذلك عن طريق خطوتين كالتالي يمكنك أخذ قيمة من المستخدم حفظ هذه القيمة في متغير وذلك عن طريق الدالة ()input string = input() توليد list من القيمة التي قام المستخدم بإدخالها عن طريق الدالة ()list theList = list(string)1 نقطة
-
السلام عليكم هل توجد طريقة لاظهار اعلان من صنعي لفئة معينة من الدول في بلوجر ؟ مثلا صنعت صورة بها رابط اعلاني واريد من تلك الصورة ان تظهر فقط في السعودية على سبيل المثال فهل يمكنني ذلك؟ وشكرا.1 نقطة
-
المعنى دلالي أي عندما تكتب object الشخص الذي يقرأ الشيفرة يفهم أن s هي array of objects أما var في حالة نمط بيانات بسيط ولكن var يمكنها أن تسلك سلوك object. يعتمد على نوع s. يمكنك قراءة هذا التوثيق المفيد. من هنا: boxing-and-unboxing c# objects استخدام object لمتغير int تدعى boxing حيث نعلم أن object هو كائن عام (أعم من int) يمكننا قصر القيمة casting مرة أخرى عندما تريد استخدامها (unboxing) استخدام var سيتم عمل compile حسب نوع s.1 نقطة
-
هذا يعني انه لا يوجد فرق مميز بين النوعين؟ لانه طُلب منا بحث عن الفرق بين النوعين في هذا المثال بالتحديد ومتى استخدم var ومتى object1 نقطة
-
مثلا عرفت مصفوفة من نوع object s=new object(4) { 'ali', 77,'A',2.77} عند المرور على العناصر بواسطة Foreach(var item in s) ممكن أيضا امر على العناصر بواسطة Foreach(object item in s) هنا مره استخدمت object ومره var ماهو الفرق في هذا المثال؟1 نقطة
-
كيق أقوم بتعريف ليست تحتوي على كلمات و أرقام ثم القيام بجمع الأرقام الموجودة داخل الليست1 نقطة
-
ببساطة يمكنك عملها بهذا الشكل طبعا لقد كتبتها بالجافاسكريب JavaScript const arr = ['ahmed', 4, 8, 'omar', 3] arr.map(e => e)1 نقطة
-
لنتمكن من حفظ حالة التحرك في التطبيق، يمكننا استخدام onStateChange و initialState الموجودين لدى الحاوية (NavigationContainer). onStateChange تُعلمنا هذه الخاصية بأية تغييرات في الحالة، لذا يمكننا حفظ الحالة بداخلها. initialState تسمح لنا هذه الخاصية بتمرير حالة أولية، لذا يمكننا تمرير الحالة المستعادة بداخلها. ضع في اعتبارك أن الحالة تتم استعادتها بشكل غير متزامن (Asynchronous)، فعلينا اولاً ان نكتب مكون التحميل وحالته بهذا الشكل: import Loading from '../Loading'; if (!isReady) { return <Loading />; } سنقوم ايضاً بكتابة الثابت PERSISTENCE_KEY الذي سيستخدم لحفظ حالة التحرك عن طريق AsyncStorage. فمثلاً، عن تغير الحالة، سنكتب الدالة بداخل onStateChange هكذا: <NavigationContainer onStateChange={(state) => AsyncStorage.setItem(PERSISTENCE_KEY, JSON.stringify(state)) } ></NavigationContainer> والآن الجزء الاهم هو الدورة التي سنكتبها بداخل useEffect والتي ستكون بالشكل التالي: const [isReady, setIsReady] = React.useState(false); React.useEffect(() => { const restoreState = async () => { try { const initialUrl = await Linking.getInitialURL(); if (Platform.OS !== 'web' && initialUrl == null) { const savedStateString = await AsyncStorage.getItem(PERSISTENCE_KEY); const state = savedStateString ? JSON.parse(savedStateString) : undefined; if (state !== undefined) { setInitialState(state); } } } finally { setIsReady(true); } }; if (!isReady) { restoreState(); } }, [isReady]); يوجد ايضاً طريقة آخرى عن طريق استخدام مكون الـ Modal من React Native، حيث يمكننا إظهار Splash بداخله عندما تتغير حالة التطبيق: function App() { const [isModalVisible, setIsModalVisible] = React.useState(false); const handleStateChange = nextState => { if (state.current.match(/inactive|background/) && nextState === 'active') { setIsModalVisible(false); } else { setIsModalVisible(true); } }; return ( <React.Fragment> <AuthContext.Provider> <NavigationContainer> {/* ضع باقي التحويلات هنا */} <Modal animationType="slide" visible={isModalVisible} transparent={true}> <Splash /> </Modal> </NavigationContainer> </AuthContext.Provider> </React.Fragment> ); }1 نقطة
-
مرحبًا عمر، إن التنسيقات الخاصة بالمكون Button في React Native محدودة جدً، ولايمكنك إضافة تنسيقات بالطريقة التي تستخدمها، فالتنسيقات الخاص بالزر يحددها نظام التشغيل الخاص بالهاتف المحمول IOS أو Android ويمكنك الإطلاع على خصائص الزر من التوثيق الرسمي من الرابط هنا. أما إذا كنت تحتاج إلى تنسيقات مختلفة فيمكنك استخدام العنصر TouchableOpacity أو أي عنصر من Touchable والتي توفر لك سهولة في إضافة التنسيقات بسهولة وأريحية من خلال استخدام أكواد الستيل. يمكنك الإطلاع على التوثيق الرسمي الخاص بالمكون TouchableOpacity من الرابط هنا. أتمنى لك التوفيق.1 نقطة
-
لا وجود لخاصية style لل button في ال react native ولكن هناك طريقة أخرى تمكنك من إضافة التنسيق لعنصر ال button وهي عن طريق ال touchableOpacity أو ال touchableHighlight كالتالي <TouchableOpacity style={{ backgroundColor: '#AEF', color: '#000', borderRadius: 6 }}> <Button title="Log In" onPress={() => authenticate({ username, password})}/> </TouchableOpacity>1 نقطة
-
في حال وجود مثال كامل أستطيع توضيح كل سطر. Var هو كلمة مفتاحية تحجز متغير يحوي قيمة من نمط معين رقم int أو سلسلة نصية String .. حسب إدخال المستخدم // int value رقم var age = 25; Console.WriteLine("var holds an int = {0}", age); // string value سلسلة نصية var name = "Mahesh Chand"; Console.WriteLine("var holds a string = {0}", name); تعتبر طريقة أسرع بعدم تحديد النمط int myNum = 15; Console.WriteLine(myNum); string name = "John"; Console.WriteLine(name); Object هي غرض متغير من نوع صنف Class ما ضمن المشروع (عادة الصنف يحوي على عدة أنماط سويا مع دوال). class Car { string color = "red"; int year = 2020; void print() { Console.WriteLine(color); Console.WriteLine(year); } static void Main(string[] args) { Car myObj = new Car(); myObj.print(); } } foreach هي حلقة تدور على مصفوفة و لكل عنصر جزئي من المصفوفة نريد نسخة منه لنتعامل معها ضمن منطق الحلقة مثل اختبار القيمة. سيأخذ المتغير المحلي (خاص بالحلقة) i جميع قيم المصفوفة cars بالتسلسل و ستتم طباعة كل منهم على حدى في تكرار للحلقة string[] cars = {"Volvo", "BMW", "Ford", "Mazda"}; foreach (string i in cars) { Console.WriteLine(i); } الكلاس الجزئي هو ميز في #c تجعلنا قادرين على كتابة صنف ما في أكثر من ملف و نستخدم الكلمة المفتاحية partial معها.1 نقطة
-
يمكنك استخدام هذه الدالة أو يمكنك التعديل عليها بما يناسبك col = [10, 500, 9080] def get_rows(col): rows = [] copied_col = col.copy() #نسخ المصفوفة for i in range(len(copied_col)): count = 0 while(copied_col[i] > 0): count = count+1 copied_col[i] = copied_col[i]//10 rows.append(count) # دفع عدد الخانات للمصفوفة final = dict(zip(col, rows)) # دمج المصفوفتين وتحويلهم الى قاموس return final print(get_rows(col))1 نقطة
-
ليست هناك إمكانية لإغلاق هذه المشاريع التي قمت عليها واعتقد أنَّ الأصدقاء بارك الله فيهم غطوا كل جوانب هذا الأمر جزاهم الله خيراً،بالتوفيق.1 نقطة
-
لا يوجد طريقة لسحب العرض الذي تقدمت به على مشاريع مستقل، سوف يتم إغلاق المشروع (توقف استقبال العروض) بعد مرور 15 يوم على طرحه و سوف تعاد لك فرصة تقديم عرض جديد بدل القديم. كما في حال تم توظيف مستقل آخر سوف تصبح حاة عرضك (مستبعد) وفي هذه الحالة أيضا سوف تعاد لك فرصة تقديم عرض جديد بدل القديم. كنصيحة: تجنب تقديم عروض على مشاريع تم نشرها منذ مدة طويلة أو مشاريع عليها الكثير من العروض لكي لا تصل لنفس هذه الحالة (ليس لديك عروض لتقديمها). حاليا عليك الانتظار فقط.1 نقطة
-
مرحبا أخ حسان، 1 - 2: إن كلفة الموقع و عدد الصفحات يتبع للمشروع ولا يمكن تحديده حاليا، و الكلفة أيضا تتبع لبلد المطور أو الشركة حيث تختلف الأسعار من شخص للآخر و من دولة لأخرى. 3: أفضل برمجة: يختارها مبرمج المشروع بعد التعرف على تفاصيله، في حال مشروع متوسط لن تلحظ فرقا بين تقنية و أخرى. 4: حسب خبرة المطور، لكن أعتقد أن الشركة تهتم أكثر و تختبر برامجها، وفي حال شرائك برنامج جاهز لربما تم شرائه و اختباره و تطويره من عدة أشخاص قبل، فهذا خيار أفضل. 5: شخص أو شخصين، وحسب عدد الزوار و نوعية الخدمات. 6: حسب نوع خدمة الإعلانات و مكان عرضها. 7: نعم بالتأكيد افتراضيا يعمل في جميع الدول 8: يجب الإهتمام بنوعية المحتوى و جودة الخدمة، والاشتراك مع استضافة جيدة ليكون عمل الموقع سريع. يمكنك طرح المشروع على مستقل و التعرف على ماذا يمكن أن يقدم لك المستقل مقابل قيمة العرض و تتعرف على الأسعار والتقنيات. أتمنى لك التوفيق1 نقطة
-
في هذا الدّرس من سلسلة تعلّم CSS؛ سنشرح كيفيّة تحديد الألوان في أوراق الأنماط، وسنتدرّب على ذلك بتغيير لون الخلفيّة. فهرس السلسلة: مدخل إلى أوراق الأنماط المتتالية (CSS). آلية عمل تعليمات CSS داخل المتصفحات. المحددات (Selectors) في CSS. كيفية كتابة تعليمات CSS يسهل قراءتها. تنسيق نصوص صفحات الويب باستخدام CSS. التعامل مع الألوان في CSS. (هذا الدرس) إضافة محتوى إلى صفحة ويب باستخدام CSS. تنسيق القوائم (Lists) في CSS. تعرف على الصناديق (Boxes) في CSS. رصف العناصر (Layout) في CSS. الجداول (Tables) في CSS. التعامل مع أجهزة العرض المختلفة والمطبوعات في CSS. الألوان استخدمنا في الدّروس السّابقة مجموعة محدودة من الألوان المُسمّاة. تدعم css في مجملها 17 لونًا مُسمّىً، قد تبدو لك بعض هذه الأسماء غريبة: الألوان الأساسية black: الأسود silver: الفضّيّ white: الأبيض red: الأحمر lime: الزيزفونيّ blue: الأزرق الألوان الثانوية yellow: الأصفر aqua: المائيّ fuchsia: الفوشيّ maroon: الأجرّيّ orange: البرتقالي olive: الزيتوني purple: البنفسجيّ green: الأخضر navy: النيلي teal: تركواز تفاصيل أكثر قد يدعم متصفّحك ألوانًا مُسمّاة أكثر مثل: dodgerblue peachpuff firebrick aquamarine لتفاصيل أكثر عن هذه القائمة الموسّعة، اطّلع على كلمات ألوان SVG في وحدة ألوان CSS3. انتبه عند استخدام أسماء ألوان قد تكون غير مدعومة في متصفّحات جمهورك. لاستخدام ألوان أخرى، يمكن تحديد المكوّنات الثلاثة الرئيسيّة لأيّ لون، الأحمر والأخضر والأزرق، باستخدام إشارة الرّقم (#) متبوعة بثلاثة أعداد بنظام العدّ الستّعشري (hexadecimal) والّتي يُرمز لها بالرّموز بين 0 و9 ثمّ بين a وf، حيث تُشير الحروف بين a وf إلى القيم 10-15: الأسود: #000 الأحمر الخالص: #f00 الأخضر الخالص: #000 الأزرق الصّافي: #00f الأبيض: #000 يمكن أيضًا استخدام عددين ستّعشريّين لكلّ جزء من اللّون لتنوّع أكبر: الأسود: #000000 الأحمر الخالص: #ff0000 الأخضر الخالص: #00ff00 الأزرق الصّافي: #0000ff الأبيض: #ffffff مثال يمكنك بشيء من المِران تعديل قيم أرقام الألوان الثّلاثة يدويًّا لشتّى الاستخدامات: ابدأ بالأحمر الصّافي: #f00 ثم اجعله أكثر شحوبًا، بإضافة بعض الأخضر والأزرق: #f77 ثم اجعله أميل للبرتقالي بإضافة مزيد من الأخضر: #fa7 ثم اجعله داكنًا بتخفيض كلّ مكوّناته: #c74 ثم خفّض إشباعه بجعل مكوّناته أقرب في القيمة إلى بعضها: #c98 وإذا جعلتها متساوية تمامًا فإنك تحصل على الرّماديّ: #ccc للحصول على لون شاحب مائل للأزرق: ابدأ بالأبيض الصّافي: #fff ثم خفّض المكوّنات الأخرى قليلًا: #eef تفاصيل أكثر بإمكانك تحديد الألوان باستخدام أعداد بنظام العد العشريّ مستخدمًا قيمًا بين 0 و255، أو نسبًا مئويّة: مثلًا: هذا اللّون أحمر آجري: rgb(128, , ) لمزيد من التفاصيل عن كيفيّة تحديد الألوان، اطّلع على الألوان في معيار CSS. لمعلومات أكثر عن كيفية مطابقة ألوان القوائم والأزرار مع ألوان النّظام، اطّلع على ألوان النظام في CSS2 في معيار CSS. دورة تطوير واجهات المستخدم ابدأ عملك الحر بتطوير واجهات المواقع والمتاجر الإلكترونية فور انتهائك من الدورة اشترك الآن خصائص الألوان استخدمنا الخاصّة color سابقًا لتغير لون النّصّ. يمكن استخدام الخاصّة background-color لتغير خلفيّة العناصر. يمكن تعيين هذه الخاصّة إلى transparent في حال رغبنا بالنّص صراحةً على جعل الخلفيّة شافّة، ممّا يؤدّي إلى إظهار لون خلفيّة العنصر الأب. تدريب: استخدام رموز الألوان حرّر ملف CSS الّذي تتدرّب عليه. طبّق التغيّير المعروض أدناه لجعل الحروف الأولى ذات خلفيّة زرقاء شاحبة (قد يختلف أسلوب الكتابة والتّعليقات في ملفّك عمّا تراه هنا، لا بأس، أبِقها كما تحبّ). <p id = "first"> <strong>C</strong>ascading <strong class="spinach">S</strong>tyle <strong class="spinach">S</strong>heets </p> <p> <strong>C</strong>ascading <strong>S</strong>tyle <strong>S</strong>heets </p> /*** CSS Tutorial: Color page ***/ /* page font */ body { font: 16px "Comic Sans MS", cursive; } /* paragraphs */ p { color: blue; } #first { font-style: italic; } /* initial letters */ strong { background-color: #ddf; color: red; font: 200% serif; } .spinach { color: green; background-color: #ddf; } احفظ الملفّ وحدّث المتصفّح لترى النّتيجة: تمرين غيّر أسماء الألوان إلى الرّموز الثّلاثيّة التي توافقها في ملفّ CSS لديك دون أن تغيّر النّتيجة. (قد لا يمكن مطابقة الألوان بالضّبط، ولكن يمكن الوصول إلى ألوان مقاربة، لأنّ مطابقة الألوان تمامًا تتطلّب الرّموز السّداسيّة، وهذا يحتاج مراجعة معيار CSS أو استخدام أداة تنتقي اللّون). شاهد الحل القيم التالية هي تقريب معقول للألوان المُسمّاة: strong { color: #f00; /* red */ background-color: #ddf; /* pale blue */ font: 200% serif; } .carrot { color: #fa0; /* orange */ } .spinach { color: #080; /* dark green */ } p { color: #00f; /* blue */ } ما التالي؟ المحتوى والتنسيق منفصلان تمامًا في ملفّين، سنطّلع في الدّرس التّالي على كيفيّة عمل استنثاء لهذه القاعدة من خلال إضافة محتوى إلى صفحة ويب باستخدام CSS. ترجمة -وبتصرف- للمقال Color من سلسلة Getting started with CSS على شبكة مطوّري Mozilla.1 نقطة