لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 03/13/19 في كل الموقع
-
"أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ!" هذه هي أكثر عبارة تتردد على سمعي من حديثي العهد بالبرمجة، إذ يأتيني هذا السؤال مرارًا وتكرارًا؛ وفي كل مرة أحاول أن أجيب عنه في سياقه، أجد أنني أضيف معلومات جديدة على إجاباتي السابقة، لذا قررت كتابة هذا المقال بعنوان "تعلم البرمجة" لعله يفيد الراغبين في تعلم تطوير التطبيقات في بدء رحلتهم مع تعلم البرمجة من الصفر. جدول المحتويات حرصًا على تنظيم المقالة ولتسهيل الوصول إلى القسم الذي تريده بسهولة، سنذكر هنا جدول المحتويات باختصار: ما هي البرمجة؟ لماذا تتعلم البرمجة؟ ما عليك معرفته لتصبح مبرمجًا الأدوات اللازمة للبدء في تعلم البرمجة لماذا هناك العديد من لغات البرمجة؟ مفاهيم البرمجة مصادر تعلم البرمجة تطوير واجهات المستخدم تطوير الواجهات الخلفية تعلم تطوير تطبيقات الجوال تطوير الألعاب تطوير الأنظمة المدمجة تطوير تطبيقات سطح المكتب كيفية اختيار لغة البرمجة التي تناسبك نصائح لتعلم البرمجة ما هي البرمجة؟ البرمجة هي عملية تقسيم مهمة معينة يراد تنفيذها عبر الحاسوب إلى أجزاء صغيرة ومترابطة وقابلة للتنفيذ بأوامر بسيطة. بعد ذلك، تجري كتابة هذه الأوامر والتعليمات بإحدى لغات البرمجة، والتي هي وسيلة للتخاطب مع الحاسوب. إليك المثال العملي التالي الذي يشرح ماهية البرمجة: إن كنت تتوقع زيارة صديق لك اليوم، واتصل بك ليقول لك: "أنا واقف بجانب الحديقة ولا أعرف كيف أصل إلى منزلك". أنت عادةً تمر كل يوم من جانب الحديقة وتعرف الطريق بينها وبين منزلك شبرًا بشبر. برأيك هل ينفع إن قلت له: "منزلي معروف وقريب من الحديقة وأنا كل يوم أمر من جانبها"؟ لا، بالتأكيد. تحتاج إلى أن تقسِّم المشكلة إلى أجزاء تمثل خطوات بسيطة يستطيع صديقك فهمها وتنفيذها. مثلًا، أخبره أن ينفذ الأوامر التالية: "سر إلى الأمام عشرة أمتار" ثم "اتجه إلى اليمين" ثم "سر إلى نهاية الشارع" ثم "اتجه إلى اليسار". أخبره بعد ذلك: "عُدَّ الأبنية الموجودة على اليسار حتى تصل إلى البناء الرابع" ثم "اصعد إلى الطابق الثاني" ثم "اطرق على الباب الذي سيظهر أمامك". مبارك! بهذه الطريقة، تستطيع أن تدل صديقك على منزلك بدقة. البرمجة هي الشيء نفسه تمامًا. فهل ترى التعابير المكتوبة بين علامتي الاقتباس؟ إنها التعابير التي تكتب بإحدى لغات البرمجة والتي تخاطب الحاسوب بدلًا من صديقك السابق. لغات البرمجة هي مجموعة من المفردات والقواعد اللغوية التي تشكل لغةً وسيطةً للتخاطب مع الحاسوب وأمره بتنفيذ تعليمات وأشياء محدَّدة. فلا الحاسوب يفهم لغة البشر ولا البشر يفهمون لغة الحاسوب، لذا كان هنالك حاجة ملحة لوجود لغة وسيطة يفهمها كلاهما؛ نتيجةً لذلك، انبثق مفهوم لغة البرمجة. بعبارة أخرى، لو أردنا أن نقول للحاسوب "افعل كذا"، فسنحتاج إلى لغةٍ مشتركةٍ بيننا وبينه ليفهم ما نبتغيه، وهنا يأتي دور لغات البرمجة، إذ يمكنك أن تعدّ لغات البرمجة على أنها وسيط بين المبرمج والحاسوب. يهتم المبرمج بالتفكير في تسلسل الخطوات التي على الحاسوب القيام بها لإتمام العمل المطلوب منه (مثل حساب العمر اعتمادًا على تاريخ الولادة)، ثم كتابة هذه الخطوات بترتيب منطقي بإحدى لغات البرمجة. ربما لاحظتَ في الجملة السابقة أن جزءًا من مهمة المبرمج هو التفكير المنطقي، وهذا يجعلنا ننتقل إلى السؤال الشائع "هل أستطيع تعلم البرمجة وأصبح مبرمجًا؟" أو "هل أنا مؤهل لأصبح مبرمجًا؟". لماذا تتعلم البرمجة؟ يبدو أن تعلم البرمجة من الصفر ليس بالصعوبة التي توقعتها، لكنك تريد حافزًا يجعلك تتعلم البرمجة. تسمع كثيرًا أن البرمجة هي مجال المستقبل، وأن وظائف المبرمجين ستكتسح مجال التوظيف في السنوات القادمة؟ أستطيع أن أؤكد لك ذلك، كما أنَّ وظائف البرمجة هي من أعلى الوظائف دخلًا. فلو كنت تريد بدء مشوارك الاحترافي وتريد عملًا مستقرًا وذا دخلٍ ممتاز، فإن تعلم البرمجة والعمل بها هو أفضل خيارٍ أمامك. وظائف البرمجة مريحة عمومًا، فالعمل كله مكتبي أمام حاسوب في بيئة مريحة ومناسبة، وأغلبية الشركات تتبع نظام العمل 40 ساعة في الأسبوع (أي 5 أيام لمدة 8 ساعات يوميًا)، ولا تغفل عن قدرتك على العمل عن بعد من خلال الانترنت أو كمستقل في أوقات فراغك. تعلم البرمجة سيوسع أفق تفكيرك كثيرًا، خصوصًا أن تعاملك مع الحاسوب يتبع إلى التفكير المنطقي، وستجد أن البرمجة ستسهل لك القيام بأمور أخرى في الحاسوب. ما عليك معرفته لتصبح مبرمجًا يتردد الكثيرون في تعلم البرمجة متذرعين بأن مستواهم في الرياضيات ليس ممتازًا، وهذا ليس صحيحًا، فصحيحٌ أنَّ هنالك أمور تعترضك أثناء أداء عملك كمبرمج تتطلب خبرة في الرياضيات، إلا أنَّه قد تمر عليك فترات طويلة لا تحتاج فيها إلى مسائل رياضية. كل ما يلزمك للبدء في تعلم البرمجة هو الأساسيات التي يعرفها الجميع. إلى حين اعتراضك أية مسألة أو مشكلة تتطلب مهارة في الرياضيات، هنالك الكثير من المصادر والمراجع التي تستطيع الرجوع إليها آنذاك. بعبارة أخرى، أجِّل هذا الأمر قليلًا ولا تخف. الأهم من ذلك هو أن تكون قادرًا على التفكير بشكل منطقي. التفكير المنطقي التفكير المنطقي هو المهارة التي تجمع كافة المبرمجين تحت مظلة واحدة، وهي أساس كتابة الخوارزميات، إذ يجب أن تكون قادرًا على اكتساب هذه المهارة وتطويرها. الخوارزميات كلمة "الخوارزميات" هي الكلمة المرعبة التي ينفر منها البعض، فكل ما يتخيلونه عند ذكرها هو الرياضيات المعقدة والمعادلات الطويلة والرموز العجيبة، لكن الأمر بسيط جدًا؛ فالخوازرميات هي تطبيقٌ للتفكير المنطقي في خطوات متسلسلة واضحة تمامًا لحل مشكلة ما. لكي أوضِّح لك أن الخوارزميات ليست أمرًا معقدًا، سأخبرك بكيفية كتابة برنامج يسأل المستخدم عن سنة ميلاده، ثم يعيد عمره الحالي بالسنوات. الخطوة الأولى: إظهار رسالة نصية نطلب فيها من المستخدم إدخال تاريخ ميلاده. الخطوة الثانية: تخزين سنة الميلاد التي أدخلها المستخدم. الخطوة الثالثة: الحصول على السنة الحالية. الخطوة الرابعة: طرح مدخلات المستخدم من السنة الحالية. الخطوة الخامسة والأخيرة: إظهار الناتج. ما سبق هو خوارزمية بسيطة تتألف من خطوات متسلسلة، لكن إذا أمعنّا النظر فيها سنجد خللًا في حال أدخل المستخدم تاريخًا أكبر من التاريخ الحالي، أي لو أدخل 2050 مثلًا بدلًا من 1995. عندها سيصبح العمر المعاد من الخوارزمية سالبًا، ويمكننا أن نحل هذه الإشكالية منطقيًا بوضع شرط يمنع المستخدم من إدخال تاريخ أكبر من التاريخ الحالي. إطارات العمل كلمة أخرى شائعة جدًا في عالم البرمجة هي "إطارات العمل" frameworks، إطارات العمل هي مجموعة من الشيفرات البرمجية التي تسهل على المبرمج إنشاء التطبيقات، بتوفير وحدات جاهزة تقدم خدمات متنوعة مثل تسجيل المستخدمين، وإرسال البريد الإلكتروني، والتعامل مع قواعد البيانات. أي يمكنك أن تعدّها أدوات برمجية تساعدك في برمجة تطبيقك وتسهِّل لك فعل ذلك. الأدوات اللازمة للبدء في تعلم البرمجة تحتاج إلى حاسوبٍ بمواصفات جيدة (ليس من الضروري أن يكون من أفضل الحواسيب، وإنما أن يمتلك مقدارًا جيدًا من الذاكرة العشوائية). لا ننصح بمواصفات معينة أو نظام تشغيل معين، استعمل ما يحلو لك وما ترى نفسك معتادًا عليه (سواءً كان ويندوز أو لينكس أو ماك). ستحتاج أيضًا إلى اتصالٍ جيد بالإنترنت للوصول إلى المواد التعليمية، ولتنزيل البرمجيات والمكتبات اللازمة للتطوير. أما بخصوص أدوات التطوير، فستحتاج إلى برمجية لكتابة الشيفرات، وهنالك نوعان رئيسيان لها: المحررات النصية: مثل Visual Studio Code أو Atom أو Sublime Text أو Bracktes أو Notepad++. وهذه المحررات النصية تكون بسيطة في أغلبها، وتوفر ميزات أساسية مثل تلوين الشيفرات، وبعض ميزات الإكمال التلقائي، وتدعم أغلبيتها إضافات لزيادة وظائفها. وظيفة هذه المحررات النصية عمومًا هي تعديل الشيفرات بسهولة وسرعة. ننصحك بتجربة Visual Studio Code لشهرته حاليًا وكثرة إضافاته ودعمه الممتاز من شركة Microsoft. بيئات التطوير المدمجة: مثل Visual Studio و Eclipse و Android Studio و NetBeans و Apple Xcode وغيرها. وهذه البيئات توفر ميزات أكثر بكثير من المحررات النصية، مثل تشغيل الشيفرات وتنقيحها (debugging) وميزات التحكم بالإصدارات (version control) والاتصال بقواعد البيانات وخلاف ذلك. لماذا هناك العديد من لغات البرمجة؟ قد تتساءل، لماذا هناك العديد من لغات البرمجة؟ أليست هذه اللغات كلها تنفذ الهدف ذاته؟ لماذا لا يكون هنالك لغة موحدة بين المبرمجين والحاسوب؟ الحقيقة أنّه توجد لغة برمجة واحدة ولكن ليست إحدى اللغات التي تراها أمامك في الصورة. اللغة التي نشير إليها هي لغة الآلة التي يستطيع معالج الحاسوب قراءتها وفهمها. أتتساءل ما هي لغة الآلة وكيف تبدو؟ إليك مقطعًا منها: معلومٌ أنّ معالج الحاسوب لا يفهم شيئًا سوى الأصفار والواحدات، وهذه اللغة -أي لغة الآلة- هي تمثيل للأصفار والواحدات بطريقة تخبر الحاسوب بما يجب عليه فعله. الجدير بالذكر أن هذه اللغة عصية الفهم على البشر، وحتى إن استطعت كتابة شيفرة مثل الشيفرة الموضحة بالصورة (كما في السنوات الأولى من بداية اختراع الحاسوب)، لن يفهمها الآخرون ولن يستطيع أحد التعديل على الشيفرة وتطويرها لاحقًا باستثنائك. سعيًا لإيجاد لغة قريبة من لغة البشر، انقسمت لغات البرمجية إلى قسمين: لغات البرمجة منخفضة المستوى، ولغات البرمجة عالية المستوى وذلك تبعًا لمدى قربها من لغة الآلة أو لغة البشر على التوالي. أي أنّ لغات البرمجة منخفضة المستوى هي اللغات الأقرب للغة الآلة آنفة الذكر مثل لغة التجميع Assembly language، ولغات البرمجة عالية المستوى هي اللغات الأقرب للغة البشر مثل لغة بايثون وجافا. تنفيذ البرامج المكتوبة بلغات برمجة عالية المستوى يقودنا الحديث عن اللغات عالية المستوى واللغات منخفضة المستوى إلى الحديث عن كيفية تنفيذ المعالج للشيفرة المكتوبة بلغة عالية المستوى لا يفهمها المعالج (أليس هذا ما تفكر به الآن؟). عرفنا أن المعالج يفهم الأوامر والتعليمات المكتوبة بلغة منخفضة المستوى (لغة الآلة)، فمَثَلُ هذه العملية كمَثَلِ شخصٍ أجنبي تعلم اللغة العربية وبدأ التحدث مع ناطقٍ باللغة العربية، إذ يمكن لهما التواصل مباشرةً - ليخبر كل منها ما يريد من الآخر فعله - دون وسيط. أمَّا مَثَلُ كتابة برنامج بلغة عالية المستوى أقرب إلى لغة البشر والطلب من الحاسوب تنفيذه كمثل ناطق باللغة الهندية يريد التخاطب مع ناطق باللغة العربية دون أن يفقه أحدهما لغة الآخر. في هذه الحالة، لن يستطيع أحدهما فهم ما يتكلم به الآخر وستفشل عملية التواصل. قد تقول: لماذا لا يحضران مترجمًا يترجم ما يقوله كل منها للآخر؟ حسنًا، هذا ما يحصل تمامًا عندما يراد تنفيذ برنامج بلغة لا يفهمها معالج الحاسوب. في اللغات البشرية، هنالك نوع واحد من المترجمين يعرفه الجميع للترجمة من لغة إلى آخرى؛ أما في لغات البرمجة، هنالك نوعان من المترجمين بين اللغات هما: المفسر interpreter، والمترجم compiler. بناءً على ذلك، تنقسم لغات البرمجة إلى لغات مفسرة ولغات مترجمة. (من الآن وصاعدًا، كلما ذكرنا لغات البرمجة، فنحن نشير إلى لغات البرمجة عالية المستوى.) -المفسر (interpreter): وهو برنامج خاصٌ يفسِّر الشيفرة المصدرية لبرنامج مكتوب بلغة عالية المستوى سطرًا بسطر ويحولها إلى لغة منخفضة المستوى لينفذها الحاسوب مباشرةً. -المترجم (compiler): وهو برنامج خاصٌ يحوِّل الملفات المصدرية لبرنامج مكتوب بلغة عالية المستوى إلى ملف تنفيذي مكتوب بلغة الآلة دفعةً واحدةً، ثم يمكن تشغيل الملف التنفيذي على الحاسوب للقيام بالمهمة المطلوبة. لماذا يوجد الكثير من لغات البرمجة عالية المستوى؟ الآن وبعد أن عرفت الفرق بين لغة الآلة ولغة البشر، لربّما ما زلت تتساءل عن كثرة اللغات البرمجية عالية المستوى المتوافرة وعدم وجود لغة واحدة. نستطيع القول أنك خطوت خطوةً جيدةً للأمام إذ أصبحت الآن أكثر دقة. جواب سؤلك هو أنّ كل لغات البرمجة تُستخدم لتحويل فكرة منطقية إلى سلسلة أوامر يمكن للحاسوب أن ينفذها. فعلى سبيل المثال لا الحصر يمكنك استخدام أي من Ruby أو Java أو Python أو C# أو Go أو JavaScript لبناء موقع ويب. لكن يمكنك أن تعدّ لغات البرمجة على أنها أدوات، وكل أداة تسهّل مهمة دونًا عن أخرى. فعلى سبيل المثال، السيارة والحافلة والدراجة والمحراث الزراعي كلها وسائط نقل، لكنها مختلفة الاستخدام؛ فلا يمكنك أن تذهب وعائلتك لقضاء إجازة صيفية مستخدمين المحراث الزراعي، كما لا يمكنك استخدام سيارة سباق في مدينة مكتظة ذات شوارع ضيقة للذهاب بها إلى العمل. مع أن آلية عمل هذه المركبات متشابهة. والأمر سيانٌ بالنسبة إلى البرمجة. خلاصة القول أنّ هنالك لغات برمجة متخصصة بإنشاء تطبيقات سطح المكتب، وأخرى متخصصة بإنشاء تطبيقات الجوال، وأخرى تستعمل خصيصًا لمواقع الويب، وأخرى لبرمجة العتاد، وهذا ما يحيلنا إلى الحديث عن مجالات البرمجة واللغات الأنسب لكلٍ منها. مفاهيم البرمجة "حسنًا، اقتنعتُ أن البرمجة مناسبة لي وليست صعبة كما كنتُ أتخيل، من أين أبدأ طريقي في تعلم البرمجة إذًا؟" قبل الإجابة عن السؤال السابق، سآخذ وقتي لأشرح لك بعض المفاهيم الخاصة بالبرمجة، ثم سنتحدث عن مجالات العمل فيها وما المسار الأفضل لتعلمك كلًا منها. أنت تعلم أن البرنامج هو سلسلة أوامر ينفذها الحاسوب لحل مشكلة ما، والبرنامج نفسه مكتوب بلغة يفهمها الحاسوب تسمى لغة الآلة. من الأمور الملحوظة التركيز كثيرًا على لغة البرمجة ذاتها أثناء بداية تعلم البرمجة. سأخبرك حقيقةً صادمةً: "لغة البرمجة التي تستعملها ليست بتلك الأهمية التي تتوقعها"، أنا لا أقول لك أن جميع لغات البرمجة متماثلة أو تُستعمل لنفس الاستعمالات، لكن لا تركِّز كثيرًا على تعلم كيفية الكتابة في لغة برمجة ما وتهمل المفاهيم البرمجية التي تقف وراءها. المتغيرات والثوابت عليك أن تتعرف على مفهوم المتغيرات variables المستعمل في جميع لغات البرمجة، والذي يعني إسناد قيمة ما إلى رمز أو كلمة وتخزين هذه القيمة في الذاكرة. فلو أردنا أن نخزن العبارة "Hello World" في متغير ما فنكتب شيئًا شبيهًا بما يلي: var variable_name = "Hello World"; أي أننا نسند الجزء الموجود على يمين إشارة المساواة إلى المتغير المذكور على يسار إشارة المساواة. يمكننا أن نستنتج من اسم "المتغيرات" أن قيمتها قابلة للتغيير خلال تنفيذ البرنامج، فيمكننا في مكانٍ ما من الملف المصدري أن نعيد تعريف المتغير السابق بكتابة: var variable_name = "New value"; أما الثوابت فهي تتشابه مع المتغيرات في كثيرٍ من النواحي، إلا أنك لا تستطيع إعادة تعريف قيمتها بعد تعريفها أول مرة. قد تستفيد من الثوابت عندما تكون متأكدًا تمامًا من عدم تغيير القيمة خلال فترة تنفيذ البرنامج. فلو أردنا تعريف ثابت اسمه pi يحتوي على القيمة 3.14 (والتي سنعرف أنها لن تتغير مطلقًا)، فيمكننا أن نكتب: const pi = 3.14; وإذا حاولتَ تغيير قيمة الثابت بعد تعريفه فستحصل على رسالة خطأ. الشروط تدعم جميع لغات البرمجة تعريف شروط تُنفَّذ في حالات معينة. ففي الخوازرمية السابقة التي شرحنا فيها حساب العمر، يمكننا أن نكتب الشرط بالعربية كما يلي: إذا كان (تاريخ الميلاد أكبر من التاريخ الحالي): نقول للمستخدم أن هنالك خطأ وإلا: سنحسب العمر بطرح تاريخ الميلاد من التاريخ الحالي وإذا أردنا كتابتها بإحدى لغات البرمجة فستبدو شبيهةً بما يلي: if ( user_birth > current_year ) { // ERROR! } else { age = current_year - user_birth; } لا تلقِ للأقواس بالًا، فهي جزء من لغة البرمجة، وقد تختلف من لغة لأخرى، وليست موضع اهتمامنا حاليًا. حلقات التكرار ماذا لو كانت لدينا قاعدة بيانات فيها أكثر من مستخدم ولكل مستخدم تاريخ ميلاد. لا تقل لي سنأخذ التواريخ يدويًا وندخلها إلى البرنامج! هذا مضيعةٌ للوقت، والصواب هو إنشاء حلقة تكرار تأخذ قيمة تاريخ الميلاد الخاص بكل مستخدم ثم تحسب عمره كما أسلفنا في القسم السابق. دعنا نعدل الخوارزمية البسيطة لنضيف تكرارًا فيها: ما أجمل البرمجة! تخيل لو كان عندك ألف مستخدم، وكان عليك حساب أعمارهم، يمكنك بضغطة زر أن تحسبها كلها. الدوال الدالة function هي مجموعة من التعليمات البرمجية التي تقبل مدخلات وتعيد القيمة المطلوبة. تكون الدوال عادةً قصيرةً وتقوم بمهمة وحيدة فقط. فمثلًا لو أردنا تعريف دالة باسم divide تقبل عددين، وتعيد ناتج قسمة العدد الكبير على الصغير، فيمكننا أن نكتب الخورزمية الآتية: مصادر تعلم البرمجة للمبتدئين أول ما سيتبادر إلى ذهنك بعد قرارك تعلم البرمجة هو من أين سأتعلم؟ هنا يأتي دور القسم التعليمي المتكامل في حسوب ليقدم للمبتدئ (والمحترف على حدٍ سواء) محتوى علمي مميز ومبسط. تزخر أكاديمية حسوب بالمحتوى المفيد عن تعلم البرمجة للمبتدئين وحتى الخبراء أي على كافة المستويات، ستجد فيها أقسامًا تشرح لغات البرمجة وتقنياتها كلها. ولدينا قسم للأسئلة البرمجية التي يمكنك أن تطرح فيه سؤالك وسيجيب عليه أحد أفراد مجتمع أكاديمية حسوب. أضف إلى ذلك أن الأكاديمية توفر قسمًا للدورات المتخصصة التي تبدأ معك من الصفر وحتى احتراف لغة البرمجة التي تريد تعلمها مع كادر من المدربين المختصين الذي يقدمون لك المساعدة ويجيبون عن جميع استفساراتك. وهنالك قناة للأكاديمية على يوتيوب ننشر فيها دوريًا دروسًا قصيرةً عن تساؤلات محددة ومفاهيم البرمجة وخلافه. لا تنسَ الاشتراك في قناة الأكاديمية لتصلك الفيديوهات الجديدة. ماذا لو أردتَ التعمق أكثر في لغة معيّنة؟ تأتي هنا موسوعة حسوب التي توفِّر توثيقًا عربيًا كاملًا وعالي الجودة، مدعّمًا بالأمثلة لمختلف لغات البرمجة وتقنيات تطوير الويب والجوال. ستكون الموسوعة مرجعًا تعود إليه في مسيرتك البرمجية، وتستعين بها لمعرفة التفاصيل الدقيقة عن لغات البرمجة. فأنت لست مضطرًا لحفظ كل شيء في لغة البرمجة، إذ حتى المبرمجون المختصون ذوو الخبرة يعودون إلى التوثيقات بين الفينة والأخرى أثناء عملهم. لننطلق الآن للتحدث عن مجالات البرمجة الأساسية وما اللغات والتقنيات المستعملة فيها. تطوير واجهات المستخدم يبدأ أغلبية المطورين مشوارهم من خلال تعلم تطوير واجهات المستخدم عند اتخاذ قرارهم لدخول مجال تطوير وبرمجة مواقع الويب، وذلك لسهولة اللغات المستعملة في هذا المجال. هدف هذا المجال هو تطوير صفحات الويب التي تعرض محتوى مختلف مواقع الويب، وهي الصفحات التي تراها عند زيارتك لموقع أكاديمية حسوب أو موسوعة حسوب أو مستقل أو أي موقع آخر. تتألف صفحة الويب من مجموعة من المكونات، وتُكتَب هذه المكونات باستخدام لغة HTML، وبعد كتابة البنية الهيكلية للصفحة سنأتي على تنسيقها باستخدام لغة CSS، وهي اللغة المستعملة لإضفاء شكل وهيئة على عناصر HTML. أي أن عناصر HTML تصف محتوى الصفحة (مثل الترويسات والقوائم والمحتوى الرئيسي والفقرات والروابط والصور والفيدوهات)، وقواعد CSS تُعرِّف كيف يجب أن تبدو هذه العناصر (سواءً من ناحية الألوان أو المساحات أو الخلفيات أو الخطوط أو خلاف ذلك). تأتي لغة JavaScript مكملةً لهما وتستعمل لإعطاء بعض عناصر الصفحة صفاتٍ تفاعلية، مثل شريط متحرك من الصور أو قوائم تظهر عند وقوع حدث معيّن …إلخ. هنالك تقنيات كثيرة تستعمل في تسهيل إنشاء الواجهات الأمامية وسنذكر بعضها: إطار Bootstrap لتسهيل تنسيق عناصر الصفحة. مكتبة jQuery لتسهيل التعامل مع عناصر الصفحة باستخدام JavaScript. مكتبة React JS: لتسهيل تطوير واجهات المستخدم بالاعتماد على مكونات قابلة لإعادة الاستخدام. لغة Sass لإنشاء ملفات CSS بسرعة وسلاسة. أدوات بناء مثل Webpack الذي يسهِّل تحويل الملفات المصدرية للتطبيق إلى النسخة النهائية التي ستعرَض للمستخدم. لتعلم تطوير واجهات المستخدم، ننصحك بالتسجيل في دورة تطوير واجهات المستخدم المقدمة من أكاديمية حسوب، والتي تحتوي على أكثر من 72 ساعة فيديو تتوزع على ثمانية مسارات تعليمية تشرح أمثلة عملية تطبيقية شرحًا مفصلًا. أثناء مشاهدتك للدورة، يمكنك أن تعود إلى موسوعة حسوب لتتعرف على توثيق لغات البرمجة المذكورة، وذلك للاطلاع على تفاصيل وأمثلة أكثر عن كل جزئية من الجزئيات المشروحة في دورة تطوير واجهات المستخدم. اللغات والتقنيات المستخدمة في تطوير واجهات المستخدم: HTML و CSS و JavaScript و Bootstrap و Sass و jQuery و Webpack. تطوير الواجهات الخلفية قد تتساءل: ماذا يعني تطوير الواجهات الخلفية (backend)؟ وما الفرق بينه وبين تطوير واجهات المستخدم (frontend)؟ الفرق بينهما هو أن الواجهات الخلفية هي البرمجيات التي تُنفَّذ على الخوادم وتجري عمليات عليها مثل التعامل مع قواعد البيانات والملفات والخدمات الخارجية، أما واجهات المستخدم فهي الصفحات التي تظهر على شاشة الزائر في متصفحه. سأطرح عليك الخيارات المتاحة أمامك للبدء في مجال تطوير الواجهات الخلفية، وجميع اللغات المذكورة هنا هي لغات ناجحة وقوية ولا يهم أي لغة تختار منها، المهم أن تتطلع على شيفرات بسيطة من كل لغة وتتخذ قرار تعلمها، واحذر من تضييع وقتك في التنقل بين لغات البرمجة والبحث عن أفضلها، فكلُ لغةٍ ممتازةٌ في مجالها. تعلم البرمجة باستخدام لغة PHP بعد تبيان الفرق بين واجهات المستخدم والواجهات الخلفية، يمكن القول بأن أشهر لغة لتطوير الواجهات الخلفية هي لغة PHP، وتتفوق على اللغات المنافسة لها أضعافًا مضاعفة. تعلم البرمجة بلغة PHP أمر سلس، فهي لغة سهلة التعلم وبسيطة الشكل، والمجتمع حولها كبير وتطويرها مستمر. هذه اللغة هي خيار استراتيجي لمن يريد الدخول إلى مجال تطوير الواجهات الخلفية. هنالك عدد من البرمجيات المكتوبة بلغة PHP مثل ووردبريس WordPress ودروبال Drupal وميدياويكي MediaWiki (التي تشغِّل ويكيبيديا وموسوعة حسوب) وغيرها الكثير؛ إضافةً إلى عددٍ كبير من إطارات العمل مثل Laravel و CodeIgniter و Symfony و CakePHP و Yii وغيرها، وهذا ما يدل على إمكانيات اللغة الكبيرة والمجتمع الكبير الذي يحيط بها. لتعلم تطوير الواجهات الخلفية باستخدام PHP، ننصحك بالتسجيل في دورة تطوير تطبيقات الويب باستخدام PHP المقدمة من أكاديمية حسوب، والتي تحتوي على 75 ساعة فيديو تتوزع على اثني عشر مسارًا تعليميًا تبدأ بأساسيات لغة البرمجة PHP للمبتدئين، مرورًا بشرح أمثلة عملية تطبيقية بالتفصيل، ووصولًا لتطوير التطبيقات باستخدام إطار العمل Laravel، وشرح تطوير ووردبريس. أثناء مشاهدتك للدورة، يمكنك أن تعود إلى موسوعة حسوب للاطلاع على توثيق لغة PHP وإطار العمل Laravel. اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام PHP هي: PHP و Laravel وقواعد البيانات (مثل MySQL و PostgreSQL وغيرها). تعلم البرمجة باستخدام لغة روبي - Ruby إذا كنتَ تبحث عن لغةٍ أنيقة وسهلة الاستعمال فستجد ضالتك في لغة روبي Ruby فهي من أجمل اللغات وأسلسها كتابةً، وهي لغة برمجة عامة يمكن استخدامها لتطوير مختلف أنواع التطبيقات ومن ضمنها تطوير تطبيقات الويب. ذاع صيت روبي في تطوير الويب بعد نشر إطار العمل Ruby on Rails (يشار إليه اختصارًا "ريلز"). هنالك إطارات عمل أخرى مثل سيناترا Sinatra لكن يبقى ريلز أشهرها. لتعلم تطوير الواجهات الخلفية باستخدام روبي، ننصحك بالتسجيل في دورة تطوير تطبيقات الويب باستخدام روبي المقدمة من أكاديمية حسوب، والتي تحتوي على 20 ساعة فيديو تتوزع على أربعة مسارات تعليمية تشرح أمثلة عملية تطبيقية شرحًا مفصلًا، وتشرح تطوير التطبيقات باستخدام إطار العمل ريلز. أثناء مشاهدتك للدورة، يمكنك أن تعود إلى موسوعة حسوب للاطلاع على توثيق لغة روبي وإطار العمل ريلز. اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام روبي: روبي و ريلز وقواعد البيانات (مثل MySQL و PostgreSQL وغيرها). تعلم البرمجة باستخدام لغة جافا سكربت - JavaScript نعم! تستعمل JavaScript في تطوير الواجهات الخلفية أيضًا. الفضل يعود لبيئة Node.js التي تسمح للمطورين باستخدام JavaScript لكتابة برمجيات تعمل من جهة الخادم وذلك لتوليد صفحات ويب ديناميكية قبل إرسالها إلى المتصفح، وتستطيع Node.js التعامل مع الملفات وقواعد البيانات ومختلف أنظمة الشبكات وخدمات أنظمة التشغيل. هل يوجد أجمل من استخدام نفس اللغة لبرمجة الواجهات الأمامية لمواقع الويب والواجهات الخلفية؟ وكل ذلك باستخدام لغة سهلة التعلم والاستعمال ومدعومة دعمًا ممتازًا من المجتمع. تعلم لغة JavaScript لتطوير الواجهات الخلفية من خلال التسجيل في دورة تطوير التطبيقات باستخدام JavaScript المقدمة من أكاديمية حسوب، والتي تحتوي على 69ساعة فيديو تتوزع على أحد عشرمسارًا تعليميًّا تشرح أمثلة عملية تطبيقية شرحًا مفصلًا، وتشرح تطوير الواجهة الخلفية باستخدام Node.js. أثناء مشاهدتك للدورة، يمكنك أن تعود إلى موسوعة حسوب للاطلاع على توثيق لغة JavaScript وبيئة العمل Node.js. اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام JavaScript: لغة JavaScript وبيئة Node.js وإطار العمل Express.js وقواعد البيانات (مثل MongoDB و MySQL و PostgreSQL وGraphQL وغيرها). تعلم البرمجة باستخدام لغة بايثون - Python لغة بايثون متعددة الاستعمالات، ويمكن عدّها على أنها أسهل لغة برمجة على الإطلاق، إذ تبدو شيفرتها البرمجية كأنها مقالة مكتوبة باللغة الإنكليزية. إذا أردتَ لغةً سهلةً ومدعومةً دعمًا ممتازًا ولها أطر عمل كثيرة فأنت تبحث عن لغة بايثون. الخيارات المتاحة أمامك هي إطار العمل جانغو (Django) وفلاسك (Flask) وغيرها، يمكنك تعلم لغة البرمجة بايثون لتطوير الواجهات الخلفية من خلال قراءة سلاسل المقالات عن تعلم بايثون في قسم البرمجة في أكاديمية حسوب، ثم الانتقال إلى تعلم إطار العمل جانغو أو فلاسك. يمكنك أن تعود إلى موسوعة حسوب للاطلاع على توثيق لغة بايثون. تعلم لغة بايثون لتطوير الواجهات الخلفية من خلال التسجيل في دورة تطوير التطبيقات باستخدام Python المقدمة من أكاديمية حسوب، والتي تحتوي على 69 ساعة فيديو تتوزع على عشرةمسارات تعليمية تشرح أساسيات لغة بايثون للمبتدئين، ثم تطبق عمليًا بأمثلة واقعية، وتشرح إطار العمل جانغو Django وفلاسك Flask. اللغات والتقنيات المستخدمة في تطوير تطبيقات الويب باستخدام بايثون: لغة بايثون وإطارات العمل المبنية عليها (مثل جانغو وفلاسك) وقواعد البيانات (مثل MySQL و PostgreSQL وغيرها). تعلم تطوير تطبيقات الجوال ازداد عدد تطبيقات الجوال لأنظمة أندرويد و iOS ازديادًا كبيرًا في الفترة الماضية، وأصبح لكل شركة أو خدمة تطبيق خاص بها يسهِّل على مستخدميها الوصول إلى الخدمات التي توفرها. النظامان الرئيسيان المسيطران على سوق الجوال حاليًا هما أندرويد ثم iOS. يمكن برمجة تطبيقات أندرويد بلغة Java أو Kotlin (أو غيرهما) وبرمجة تطبيقات iOS باستخدام Swift (وغيرها). ستكتشف أنَّ عليك تطوير تطبيقين منفصلين تمامًا، واحد لهواتف أندرويد وآخر لهواتف iOS، وذلك يسبب زيادةً في حجم العمل المطلوب وصعوبةً في إدارة التغييرات. بسبب ذلك، ظهر مفهوم "التطبيقات متعددة المنصات"، وهي تطبيقات تعمل على نظام أندرويد و iOS دون أي تعديلات، وذلك باستخدام تقنيات مشتركة وهي في الغالب تقنيات الويب. أي أصبح بإمكان مطوري الويب الاستفادة من معلوماتهم في تطوير تطبيقات الجوال باستخدام منصات مثل آيونيك Ionic. تسمح آيونيك Ionic للمبرمجين بالتعامل مع مختلف وظائف الجهاز باستخدام لغة JavaScript، مثل الوصول إلى الموقع الجغرافي، والتقاط صور بالكاميرا، والتعامل مع الملفات وخلاف ذلك. طوِّرت في الفترة الماضية تقنيات أخرى مبنية على JavaScript مثل React Native المبنية على مكتبة React.js والتي تسمح للمطورين بكتابة تطبيقات أصيلة باستخدام تقنيات الويب. تستطيع تعلم تطوير تطبيقات الجوال عبر Ionic وعبر React Native من خلال التسجيل في دورة تطوير التطبيقات باستخدام لغة JavaScript المقدمة من أكاديمية حسوب، والتي تحتوي على 69 ساعة فيديو تشرح أمثلة عملية تطبيقية شرحًا مفصلًا. وكالعادة يمكنك أثناء مشاهدتك للدورة أن تعود إلى موسوعة حسوب للاطلاع على التوثيقات اللازمة. اللغات والتقنيات المستخدمة في تطوير تطبيقات الجوال: Java و Swift و Kotlin و Ionic و React Native وغيرها. تطوير الألعاب تطوير الألعاب هو المجال الذي يحلم جميع مستخدمي الحاسوب بالدخول إليه. فالأغلبية تعرفوا على الحاسوب من خلال ألعاب الفيديو ومن ثم بدؤوا برحلة الاستكشاف عن البرمجة والتطوير. أغلب من يجيب عن تطوير الألعاب يقول "عليك بتعلم لغة C++" لكن دعني أفصِّل لك الأمر قليلًا. برمجة الألعاب تتطلب عملًا كثيرًا من فريق عمل كبير، مدعوم من شركة تجارية. من الصعب على مطوِّر وحيد أن ينشئ لعبة كاملة من الصفر دون فريق. تُطور أغلبية الألعاب باستخدام محرِّك ألعاب Game Engine والذي يسهِّل الأمر على المطورين ويتيح بيئة تطوير مناسبة للألعاب، ويتيح الميزات الأساسية لجميع الألعاب مثل التحكم بالكاميرا ونمذجة الشخصيات ثلاثية الأبعاد وتحريكها والأمور الفيزيائية الأخرى. هنالك عدد كبير من محركات تطوير الألعاب، ومن المرجح أنك شاهدت شعارها في الألعاب التي لعبتها من قبل، ومن أشهرها: Unreal Engine و Unity و Godot. يمكن التعامل مع هذه المحركات باستخدام عدِّة لغات، مثل C++ (وهي أشهرها)، وجافا (خصوصًا للألعاب على هواتف أندرويد) وحتى يمكن استخدام JavaScript في التعامل مع بعضها. تذكر أنّ الألعاب غير محدودة بتطبيقات سطح المكتب أو الهواتف، فهنالك ألعاب كثيرة تعمل على المتصفحات باستخدام تقنيات HTML5 و JavaScript. اللغات والتقنيات المستخدمة في تطوير الألعاب: C++ و Java و JavaScript ومحركات Unity و Unreal Engine و Godot. برمجة الذكاء الاصطناعي يُعد الذكاء الاصطناعي (AI) من المجالات الرائدة والمطلوبة بكثرة في سوق العمل اليوم، لاسيما بعد أن أصبحت تطبيقاته في متناول الجميع وبات يستخدم في العديد من المجالات فتعلمك لهذا المجال الرائد يعزز قدراتك كمبرمج ويساعد على تعزيز تطبيقاتك بقدرات الذكاء الاصطناعي القوية. يتفرع الذكاء الاصطناعي لعدة مجالات من أبرزها تعلم الآلة والتعلم العميق التي تُمكّن الحواسيب من التعلم من البيانات وتحسين أدائها بمرور الوقت دون الحاجة لبرمجة تقليدية. كي تتعلم برمجة الذكاء الاصطناعي تحتاج لامتلاك فهم جيد للبرمجة وتحليل البيانات ويمكنك استخدام لغات برمجة متعددة في هذا المجال أشهرها لغة البرمجة بايثون التي توفر الكثير من المكتبات والأطر المساعدة مثل تنسرفلو TensorFlow وكيراس Keras وبايتورش PyTorch وباندا Pandas. إذا كنت مهتمًا بتعلم هذا الاختصاص القوي فستوفر لك دورة الذكاء الاصطناعي من أكاديمية حسوب التي تحتوي على 58 ساعدة تدريبية ممتدة على ثمانية مسارات تدريبية شاملة كل ما تحتاج إليه للبدء بتطوير تطبيقات ذكاء اصطناعي قوية واكتساب مهارة في تحليل البيانات من الصفر ودون الحاجة لامتلاك معرفة مسبقة. اللغات والتقنيات المستخدمة في برمجة الذكاء الاصطناعي هي Python و MongoDB وPymongo و TensorFlow و Keras و Pandas والنماذج اللغوية الكبيرة LLMs المختلفة. تطوير الأنظمة المدمجة الأنظمة المدمجة هي أنظمة حاسوبية شبيهة بالحاسوب ولكنها لا تملك كل ميزات الحاسوب الذي تراه أمامك الآن. بعبارة أخرى، النظام المدمج هو حاسوب صغير مبرمج لأداء مهام محددة فقط ومدمج ضمن الجهاز أو البيئة المراد استخدامه فيها. أنت الآن محاط بالكثير من الأنظمة المدمجة الآن مثل جهاز مقياس مستوى المياه وجهاز التحكم بالتلفاز وجهاز إنذار الحريق وأجهزة المراقبة …إلخ. حتى إشارات المرور وتنظيم السير وألعاب الأطفال الآلية تصنَّف على أنها أنظمة مدمجة. هل سمعت أيضًا بمصطلح "إنترنت الأشياء"؟ إنترنت الأشياء هو نظام مدمج متصل بالإنترنت. نعم، بهذه البساطة! لابد الآن أن يتبادر إلى ذهنك الساعات والثلاجات والغسالات الذكية وطائرات الدرون وأنظمة المراقبة عن بعد وأنظمة البيوت الذكية، إذ كلها أمثلة على إنترنت الأشياء. كيفية برمجة الأنظمة المدمجة أشهر وأكثر لغة برمجة تستعمَل في برمجة الأنظمة المدمجة وإنترنت الأشياء هي لغة C (أي لغة سي) وكل اللغات المشتقة منها (مثل لغة أردوينو C). تُستعمَل لغة C++ كثيرًا في هذا المجال، إذ تعدُّ لغة ذات مستوى أعلى من لغة C لدعمها للبرمجة كائنية التوجه. أضف إلى ذلك أنه بدأ حديثًا استعمال لغة بايثون في برمجة تطبيقات الأنظمة المدمجة مع أنها لم ترتبط تقليديًّا بهذا المجال سابقًا. صحيح أنَّ لغة بايثون ليست بقوة لغة C و C++ في هذا المجال إلا أنها تستمد ميزاتها وفعاليتها من المكتبات الهائلة المتوافرة فيها. بعيدًا عن C وبايثون، تستعمل في مجال الأنظمة المدمجة أيضًا لغات أخرى تنضوي ضمن "لغات توصيف العتاد" (Hardware Description Languages)؛ لغتي VHDL و Verilog هما من أشهر لغات توصيف العتاد المستعملة في هذا المجال. تُستعمَل مثل هذه اللغات في برمجة "مصفوفة البوابات المنطقية القابلة للبرمجة" (FPGA أي Field Programmable Gate Array). أخيرًا، قد تجد بعض المراجع تشرح برمجة الأنظمة المدمجة بلغة أخرى تدعى "لغة التجميع" (Assembly Language) التي تصنف من اللغات منخفضة المستوى. يتطلب تعلم البرمجة باستخدام هذه اللغة فهمًا واسعًا بمعمارية وحدة التحكم المركزية والمعالج بالمجمل لأنها أقرب لغة يفهمها الحاسوب. الانتقال إلى هذه اللغة قد يكون في مستويات متقدمة من تعلمك لبرمجة الأنظمة المدمجة وتطبيقات إنترنت الأشياء. من ميزات البرمجة بهذه اللغة هي التحكم الواسع بالعتاد والمعالج الذي لا توفره لغات أخرى. يقال أن هذه اللغة صعبة بعض الشيء ومعقدة، ولكن لا أرى ذلك! قد يكون سبب قول ذلك هو أن لغة التجميع هي لغة منخفضة المستوى وأقرب شيء إلى لغة الآلة ولا يستطيع من يلقي نظرة على شيفرة مكتوبة فيها فهمها مطلقًا إن لم يعرفها. تطوير تطبيقات سطح المكتب مجال تطوير تطبيقات سطح المكتب كالمحيط الواسع؛ إن لم تملك بوصلة وتعرف إلى أين تريد الاتجاه، ستضيع فيه حتمًا. هنالك الكثير من أنظمة التشغيل أشهرها - وأكثرها سيطرةً على السوق حاليًا - هي: نظام التشغيل ويندوز، ولينكس، وماك (macOS)، ويملك كل نظام تشغيل تطبيقات مكتبية خاصة به. لذلك، يجب عليك أولًا -قبل الدخول إلى سوق برمجة تطبيقات سطح المكتب- تحديد نظام التشغيل المستهدف. أي يجب الإجابة على السؤال التالي: هل يستهدف تطبيقك نظام تشغيل محدد، أم تريد لتطبيقك أن يعمل على عدة أنظمة تشغيل في آن واحد؟! بعد تحديد نظام التشغيل المستهدف، اطلع على اللغات المفضل استعمالها في ذلك النظام لبرمجة تطبيقاته؛ فعلى سبيل المثال، اللغات C و C++ و C# و VB.NET هي الأكثر استعمالًا في برمجة تطبيقات نظام التشغيل ويندوز، واللغات C و C++ و Bash هي الأكثر استعمالًا في برمجة تطبيقات توزيعات نظام التشغيل لينكس. أمَّا نظام الشغيل ماك، فينفرد باستعمال لغة Objective-C. حسنًا، دعني أخبرك الحقيقة، كل لغة برمجة عامية الغرض يمكن استعمالها في برمجة التطبيقات، إذ أشهر اللغات التي تُدرَّس أكاديميًّا في هذا المجال هي لغة جافا (Java). لا يخفى على القارئ دخول لغة بايثون بقوة على هذا المجال نظرًا لامتلاكها الكثير من المكتبات الرائعة وسهولة صياغتها. دخلت مؤخرًا لغة جافاسكريبت على سوق برمجة تطبيقات سطح المكتب عبر إطار العمل Electron (إلكترون)، إذ توظف في هذا المجال تقنيات تطوير الويب (HTML و CSS و JavaScript …إلخ.). بدأ هذا الإطار ينتشر كالنار في الهشيم مما دفع شركات كبيرة لتطوير تطبيقات سطح المكتب الخاصة بها باستعمال هذا الإطار ومنها شركة Slack التي استعملت هذا الإطار لتطوير تطبيقها المكتبي. أعلم أنك الآن تشعر بالضياع من كثرة لغات البرمجة والتقنيات المستعملة في هذا المجال؛ معك حق، فقد أخبرتك بذلك منذ قليل. دخول هذا السوق يحتاج منك تحديد هدفك منه بالضبط. هل لديك فكرة تطبيق وتريد إنشاءه والربح منه؟ هل تريد العمل لدى شركة محددة؟ ما هي مواصفات التطبيق الذي تريد إنشاءه أو تريد العمل على تطويره؟ كل ذلك يلعب دورًا في تحديد لغة البرمجة الأنسب لك لتعلمها. في النهاية، إن تعلمت أساسيات البرمجة وأتقنت العمل على لغة برمجية محددة، سيسهل عليك الانتقال إلى لغة برمجة أخرى، إذ أغلب لغات البرمجة تشبه بعضها بعضًا من ناحية المفهوم والمضمون وتختلف بعض الشيء من ناحية الصياغة والشكل. لذلك، اطمئن من هذه الناحية. كيفية اختيار لغة البرمجة التي تناسبك يمكنك اختيار لغة البرمجة اعتمادًا على المجال الذي تحب العمل فيه، سألخص لك مسار التعلم لمختلف مجالات العمل: العمل كمطور ويب full-stack: يعني ذلك تعلم تطوير واجهات المستخدم أو الواجهات الأمامية، وتطوير الواجهات الخلفية. يمكن التخصص بمجال واحد من هذين المجالين فقط، إذ يُطلَب كثيرًا في سوق العمل مبرمجين متخصصين في واجهات المستخدم أو الواجهات الخلفية. العمل كمطور تطبيقات للهواتف المحمولة: يمكنك تعلم برمجة تطبيقات أندرويد أو iOS كلًا على حدة، أو استعمال تقنيات مثل كوردوفا لتطوير لكلا النظامين معًا. العمل كمطور تطبيقات سطح المكتب: يمكنك البدء بالتخصص في تطوير تطبيقات مكتبية لنظام تشغيل محدَّد (مثل نظام التشغيل ويندوز أو لينكس) عبر تعلم لغة البرمجة المستعملة في ذاك المجال (كما أشرنا إلى ذلك في قسم تطوير تطبيقات سطح المكتب)؛ خيار آخر هو تعلم اللغات والتقنيات التي تمكنك من تطوير تطبيقات عابرة للمنصات (تعمل على عدة أنظمة تشغيل) مثل استعمال إطار العمل Electron. العمل كمطور للأنظمة المدمجة والأنظمة الذكية: لغة C هي أساس هذا المجال، سواءً كنتَ تتعامل مع المتحكمات مباشرةً، أو تتعامل مع شريحة مثل أردوينو (والتي تمتلك لغةً مشتقةً من C). يساعدك هذا الفيديو على معرفة المعايير التي من خلالها ستتمكن من اختيار لغة البرمجة التي تتناسب مع تطلعاتك وأهدافك المستقبلية. نصائح لتعلم البرمجة مشوار تعلم البرمجة من الصفر طويل وشائق، ولكنه جميل ومسلٍ بذات الوقت، قد تصاب بالإحباط في بداية طريقك لكثرة الأمور التي عليك الإلمام بها، لذا جهزت إليك النصائح الآتية من تجربتي في البرمجة: حدد هدفك من تعلم لغة البرمجة وسوق العمل الذي تريد دخوله واجعله واقعيًا. بدون هدف، أبشرك بأنك ستتخلى عن فكرة تعلم البرمجة بعد حين. انتبه إلى أن يكون هدفك واقعيًا وقابلًا للقياس والتجزيء على مراحل. بدون ذلك، ستفشل من أول عقبة وتترك تعلم البرمجة. أعرف نفسك جيدًا ونقاط قوتك وضعفك. كلنا لديه نقاط قوة وضعف، ولكن المفلح من عمل على ترميم وتحسين نقاط ضعفه في المجال الذي يرغب بتعلمه. رشح دورة واحدة وكتابًا واحدًا وابدأ بقراءة الكتاب ومتابعة الدورة تدريجيًّا ثم انتقل بعد الانتهاء إلى دورة أخرى وكتاب آخر، إذ سيجنبك ذلك التشتت بين الدورات الكثيرة والكتب العديدة. الشيء الذي أفعله قبل بداية تعلم شيء جديد هو ترشيح قائمة من عدة كتب ودورات ثم ترتيب هذه الكتب والدورات بحسب جودتها ومدى بساطتها وتعقيدها. أرقم الكتب والدورات وأبدأ بالخيار الأول منها. أحدد الوقت التقريبي الذي يأخذه كل خيار لدراسته وأجدول الخيارات البقية على رزنامتي الخاصة. لا تأخذ العلم إلا ممن تثق بعلمه، فالكثير من المبتدئين يحاولون مساعدة غيرهم وقد يضعون معلومات مغلوطة دون قصد. طبق ما تعلمته مباشرة، وأنشئ أي شيء من كل أمر جديد تتعلمه حتى لو كان رسمة بسيطة أو شيفرة من عدة أسطر فقط. فرحة إنجاز شيء مما تعلمته تدفعك لتعلم المزيد والاستمرار في طلب العلم. نظم وقتك بورقة وقلم، حدد بداية كل أسبوع خطةً لسائره والتزم بتنفيذها. أخبر أصدقائك أن لديك التزامات وأمور مهمة عليك إنجازها. خصص وقتًا للاستراحة بالطبع ولا تنسَ نصيبك منها. في نهاية كل أسبوع، وازن مدى الإنجاز الذي حققته ومدى تطبيق الخطة التي وضعها وحاول أن تصل النسبة إلى 100%. أنصحك بقراءة ومتابعة استراتيجيات تنظيم الوقت ورفع الإنتاجية. تمرس على حل المشكلات وتحدى نفسك باستمرار وتابع المسابقات البرمجية واشترك بها إن استطعت، أنصحك بقراءة مقالة حل المشكلات وأهميتها في احتراف البرمجة بعد هذه المقالة. لا تنسَ أن تكافئ نفسك في كل مرة تنهي فيها كتابًا أو تكمل العمل على مشروع. لا تنسَ حظك من الاستراحة، لأن طريق البرمجة قد يكون له بداية ولكن النهاية بعيدة ومتعبة -مثله مثل أي مجال آخر-. في النهاية أرجو لك كل التوفيق في مشوارك البرمجي. وأرجو منك أن تشاركنا تجربتك في تعلم البرمجة، لعل غيرك يستفيد منها. اقرأ أيضًا كيف تتعلم البرمجة المدخل الشامل إلى تعلم علوم الحاسوب المرجع الشامل إلى تعلم لغة بايثون تعرف على أعلى تخصصات البرمجة أجرا تعلم لغة HTML قواعد البرمجة ما هي فوائد تعلم البرمجة؟ أسهل لغات البرمجة أهمية البرمجة3 نقاط
-
إذا كنت من مستخدمي برنامج مايكروسوفت وورد الدائمين -ومن منّا لا يستخدمه- فلا بُدّ لك من التعرّف على واحدة من أهم الخصائص التي تساعدك على إنشاء مستندات متّسقة ومنسقة بصورة جيّدة؛ الأنماط Styles. تحتوي المستندات عادة على العديد من الفقرات، كالعنوان، المَتْن، العناوين الرئيسية، العناوين الفرعية، تسميات توضيحية، اقتباسات، إلخ. وعند تنسيق هذه الفقرات باستخدام النمط المناسب لكل فقرة، لا يؤدي ذلك إلى جعل المستند أكثر جاذبية من الناحية البصرية فحسب، وإنّما يساعد القرّاء على فهم ما يقرؤونه بشكل أفضل. في هذا الدرس سنتعلّم كيفية تطبيق الأنماط السريعة التي يوفّرها وورد بشكل افتراضي، وكذلك كيفية إنشاء أنماط جديدة إن لم نكن نرغب في استخدام الأنماط الجاهزة. تطبيق الأنماط السريعة توجد العشرات من الأنماط الجاهزة في وورد والتي يمكن الوصول إليها من معرض الأنماط ضمن تبويب الصفحة الرئيسية Home. الصورة أدناه توضّح مستندًا بسيطًا من صفحتين يحتوي على نصوص عادية غير منسقة، ويتكون من عنوان ومجموعة عناوين رئيسية وفرعية بالإضافة إلى محتوياتها: تبدو العناوين في المستند أعلاه غير بارزة بسبب عدم تنسيقها بتنسيق خاص، وهذا قد يشتت القارئ بعدم معرفة العنوان الذي ينتمي إليه ذلك المحتوى الذي يقرأه من النص. يمكننا تنسيق العناوين، أو غيرها، بالطريقة العادية باستخدام الأوامر الخاصة بتنسيق النصوص في تبويب الصفحة الرئيسية كحجم الخط، لونه، سمكه، إلخ. لكننا سنقوم بتطبيق الأنماط المناسبة للسرعة، السهولة، ولفائدة الأنماط الكبيرة في جعل بعض خصائص وورد تعمل بصورة مثالية، كالفهارس مثلا. نحدد الفقرة/النص التي نريد تطبيق النمط عليها ثم نذهب إلى معرض الأنماط في تبويب الصفحة الرئيسية Home، نمرر المؤشر فوق الأنماط المختلفة لعرض معاينة مباشرة، وعندما نحدد النمط المناسب ننقر عليه لتطبيقه: كما نلاحظ، هناك العديد من الأنماط المختلفة كنمط للتوكيد، نمط للاقتباس، نمط للعناوين الفرعية، إلخ. لقد قمنا باختيار النمط Title لأنه ما يناسب عنوان المستند، وعند تطبيقه يتغيّر حجم ونوع الخط (أو لونه في أنماط أخرى) تلقائيا. قمنا بتطبيق أنماط أخرى على بقية الفقرات (نمط Heading 1 للعناوين الرئيسية، ونمط Heading 2 للعناوين الفرعية). ويمكننا الاستدلال إلى نوع النمط المطبّق على الفقرة بوضع المؤشر فوقها، إذ سيتغّير النمط في معرض الأنماط كلما قمنا بتغيير موضع مؤشر الكتابة: يمكننا الوصول إلى هذه الأنماط أيضا وتفاصيلها من جزء الأنماط Styles Pane. ننقر على أيقونة مشغّل جزء الأنماط في أسفل يمين خانة الأنماط لفتحها: نضع مؤشر الكتابة عند الفقرة التي نريد تطبيق النمط عليها، ثم ننقر على النمط من جزء الأنماط. من فوائد هذه القائمة أنّها تعرض تفاصيل النمط (نوع الخط، حجمه، المسافات البادئة، إلخ) بمجرّد تمرير المؤشر فوقه: وهناك طريقة أخرى لعرض الأنماط، بفتح جزء تطبيق الأنماط Apply Styles Pane: يحتوي هذا المربّع على نفس الأنماط السريعة بالإضافة إلى المزيد من الأنماط الأخرى، والكثير منها خاصّة بالجداول. يمكننا كتابة اسم النمط في حقل الاسم Style Name للبحث عنه أو تصفّح الأنماط في القائمة وتحديدها: هل ترغب في الحصول على مستندات وورد احترافية؟ وظّف مدخل بيانات محترف من مستقل لتحرير مستنداتك وتنسيقها أضف مشروعك الآن تغيير مجموعة الأنماط Styles Set إنّ مجموعة الأنماط الموجودة ضمن معرض الأنماط هي المجموعة الأساسية والافتراضية للمستند. لدينا خيار تغيير تنسيق هذه الأنماط بالكامل من تبويب تصميم Design، إذ يمكننا انتقاء مجموعة أنماط جديدة تختلف عن المجموعة الافتراضية من حيث خصائص الخط والفقرات. نمرر المؤشر فوق أحد التنسيقات من معرض تنسيق المستند Document Formatting لعرض معاينة مباشرة، وعند اختيار المجموعة المناسبة ننقر عليها لاختيارها: بعد اختيار مجموعة الأنماط الجديدة سيتغيّر مظهر المستند بالكامل، وكذلك ستتغيّر الأنماط السريعة في معرض الأنماط تبعا لذلك: ويمكننا تغيير النسق Theme، الخطوط Fonts، الألوان Colors، تباعد الفقرات Paragraph Spacing، وغيرها من الخيارات من نفس التبويب أيضا: ملاحظة: إذا كنت تستخدم إصدارا أقدم من 2013 فستجد معظم هذه الخيارات مجموعة ضمن أمر تغيير الأنماط Change Styles في تبويب الصفحة الرئيسية Home: مصدر الصورة مسح الأنماط والتنسيقات قد نحتاج أحيانا إلى مسح كافة التنسيقات وكافة الأنماط المطّبقة على فقرات المستند، وخصوصا إن لم نكن نحن من قام بإنشاء المستند من الأصل. في هذه الحالة من الأفضل إزالة هذه التنسيقات والأنماط ثم إعادة تنسيقها من جديد لتسهيل تمييز الفقرات التي قمنا بتطبيق تنسيقاتنا الخاصة عليها. للقيام بذلك نحدد الفقرة التي نريد مسح تنسيقاتها ثم نفتح جزء الأنماط وننقر على مسح الكل Clear All: أو ننقر على أمر مسح التنسيق بأكمله Clear All Formatting من خانة خط Font في تبويب الصفحة الرئيسية Home: نكرر الخطوة أعلاه على جميع الفقرات المنسّقة. لكنّ هذه العملية تصبح مملة ومضيّعة للوقت إذا كان المستند طويلا أو كانت التنسيقات والأنماط كثيرة ومعقّدة، ولذلك من الأفضل تحديد كافة محتويات المستند (Ctrl+A) ثم ننقر على مسح الكل Clear All: من الجدير بالذكر أنّ الأنماط تخلّصنا من الحاجة إلى إضافة فقرات إضافية من أجل ضبط التباعد بين الفقرات. فإذا كان المستند يحتوي على نصوص عادية بالشكل التالي: سيكون من الصعب تمييز بدايات الفقرات وسواء كانت عناوين أو غيرها، ولذلك سنضطر إلى إضافة فقرات إضافية بين العنوان والمتن: لكن عند تطبيق النمط المناسب على كل فقرة، سيتم ضبط تباعد الفقرات تلقائيا، وهذه فائدة أخرى لاستخدام الأنماط. إذا، فالأنماط هي عبارة عن خيارات تنسيقية تحسّن من مظهر المستند وتجعله سهل القراءة، كما توفّر الكثير من الوقت وتسّهل استخدام عدد من الخصائص الأخرى في البرنامج كالفهارس Table of Contents، الإسناد الترافقي Cross-reference، الارتباطات التشعبية Hyperlinks، إلخ. انشر كتابك عبر الإنترنت وأخرج أفكارك للنور دع مبدعي خمسات يساعدونك في تأليف كتابك ونشره وبيعه وترويجه عبر الإنترنت اطلب خدمتك الآن إنشاء أنماط جديدة بالرغم من التعدد في الأنماط الجاهزة المتوفرة في معرض الأنماط ومجموعات الأنماط المتوفرة في معرض تنسيق المستند، إلّا أنّنا في بعض الأحيان نحتاج إلى أنماط مخصصة تكون سمة للمستندات التي ننشئها. ومهما كان نوع النمط، يمكننا إنشاءه بعدة خطوات بسيطة. مثلا، في المستند الموضّح في الصورة أدناه، والذي لم يُطبّق عليه أي نمط أو تنسيق، إذا رغبنا في تنسيق كلمة "Workability" بنسق مخصص بحيث تظهر في كل الفقرات بهذا التنسيق يمكننا إنشاء نمط بهذا التنسيق وإضافته إلى معرض الأنماط. نقوم أولا بتنسيق الكلمة حسب ما هو مرغوب (قمنا بتغيير اللون ونوع الخط، وكذلك جعلناه مائلا Italic) ثم تحديدها (كلها أو جزء منها) والنقر على السهم في أقصى يمين معرض الأنماط، ثم نختار إنشاء نمط Create a Style: في مربع الحوار الذي سيظهر نقوم بإدخال الاسم المرغوب للنمط ثم ننقر على موافق OK: ستتم إضافة النمط الجديد إلى معرض الأنماط، وبذلك يمكننا البحث عن كلمة "Workability" في كافة فقرات المستند وتطبيق هذا النمط عليها: أو بطريقة أكثر اختصارا باستخدام خاصية الاستبدال Replace. نحدد كلمة "Workability" ثم ننقر على أمر استبدال Replace من تبويب الصفحة الرئيسية Home: من مربع الحوار Find and Replace نكتب نفس الكلمة (Workability) في حقل استبدال بـ Replace With ثم نتأكد من وضع مؤشر الكتابة في هذا الحقل، وننقر على Format ونختار Style: نحدد النمط الذي قمنا بإنشائه في الخطوة السابقة، ثم ننقر على موافق OK: بعد ذلك ننقر على زر استبدال الكل Replace All: وبذلك سيُطبّق النمط على جميع الكلمات مرّة واحدة، بدلا من تطبيقه على كل كلمة على حدة. بالإضافة إلى طريقة إنشاء نمط جديد التي قمنا بشرحها أعلاه، بإمكاننا تعريف نمط جديد وتخصيص كافة خياراته. مثلا إذا رغبنا في تعريف نمط للفقرات التي تمثل محتوى العناوين الفرعية، نضع مؤشر الكتابة داخل إحدى هذه الفقرات، ثم ننقر على زر نمط جديد New Style من جزء الأنماط: في مربع الحوار الذي سيظهر نقوم بإدخال اسم النمط، ونحدد نوعه Style Type سواء كان حرف Character، فقرة Paragraph، جدول Table، إلخ. والفرق بين الحرف والفقرة هو أنّ الأول سيُطبق على الكلمة التي يوجد عندها مؤشر الكتابة فقط، أما الثاني فيُطبّق على كامل الفقرة التي يوجد عندها مؤشر الكتابة. من قائمة Style based on نحدد النمط الذي نريد بناء نمطنا الجديد على أساسه (أي نستخدم خصائص ذلك النمط كأساس نبدأ بتعديل خياراتنا منه). نعدّل الخيارات الأخرى كالمسافة البادئة للفقرة، لون النص، حجم الخط، سمكه، نوعه، وغيرها. ويمكن الاستفادة من حقل المعاينة لمعرفة كيف سيبدو النمط الذي نقوم بإنشائه. بعد الانتهاء من تعديل جميع الخيارات ننقر على موافق OK: سيتم إدراج النمط الجديد في معرض الأنماط السريعة، ويمكننا تطبيقه على الفقرات بوضع مؤشر الكتابة فوق الفقرة ثم النقر على النمط: تعديل النمط إذا كنا نرغب في تعديل خيارات النمط الذي قمنا بإنشائه، أو أي نمط آخر موجود ضمن معرض الأنماط، ننقر بزر الفأرة الأيمن عليه ثم نختار تعديل Modify: أو بطريقة أخرى، ننقر على السهم بجانب اسم النمط في جزء الأنماط ونختار تعديل Modify: وفي الحالتين سيُفتح نفس مربع الحوار، Modify Style، ومنه نقوم بالتعديل المرغوب. سنقوم مثلا بإضافة مسافة تباعد عند نهاية الفقرة، ونلاحظ أنّ أي خيار نقوم بتخصيصه يظهر في المربّع السفلي الذي يوضّح خصائص النمط: بعد الانتهاء ننقر على موافق OK، وسيتم تطبيق التغيير في النمط على جميع الفقرات المُطبّق عليها هذا النمط، وبهذا نختصر الكثير من الوقت بدلا من إضافة تباعد لكل فقرة على حدة. استخدام مركز التحكم بالنمط Style Inspector مع تعدد طرق تنسيق النصوص في وورد، قد يصعب أحيانا معرفة نوع التنسيق المطبّق على فقرة أو كلمة معيّنة. لكن باستخدام أداة Style Inspector يمكننا معرفة بالضبط فيما إذا تم تطبيق تنسيق يدوي على النص بالإضافة إلى تنسيق النمط المُطبّق عليه. يمكننا أيضا استخدام خيارات Style Inspector وبالتحديد Reveal Formatting إذا كنا نريد معرفة تفاصيل النمط وتخصيص خياراته بدقة. للوصول إلى هذه الأداة، نفتح جزء الأنماط وننقر على زر Style Inspector: في نافذة مركز التحكم بالنمط يُوضَّح النمط المطبّق على الفقرة/الكلمة التي يوجد عندها مؤشر الكتابة. ومن خلاله يمكننا إزالة نمط الفقرة الحالي المخصص وإعادة تعيين النمط العادي Normal بالنقر على زر Reset to Normal Paragraph Style: أو إزالة التنسيق المطبّق يدويا على النص مع الإبقاء على التنسيق الآتي من النمط بالنقر على زر Clear Character Formatting: ولمعرفة تفاصيل النمط الحالي والتعديل عليها ننقر على زر Reveal Formatting: من خلال جزء Reveal Formatting بإمكاننا رؤية جميع المعلومات الخاصة بتنسيق النمط، وعند النقر على كل خيار ستُفتح نافذة مستقلة يمكننا بواسطتها تخصيص خيارات أكثر تفصيلا: فعند النقر على الخط Font مثلا، سيفتح مربع حوار يحتوي على كل ما يتعلّق بالخط من خيارات يمكن تخصيصها: وعندما ننقر على التباعد Spacing سنتمكن من تخصيص خيارات مسافات التباعد بدقة أكبر، حتى أنّه بالإمكان إدخال القيم يدويا، وهذا ما لم نتمكن من فعله في مربع الحوار Modify Style: إضافة النمط إلى المستندات الجديدة أو المستندات الموجودة عندما نقوم بإضافة النمط إلى معرض الأنماط السريعة، فإنّه وبشكل افتراضي يُضاف إلى المستند الحالي فقط. لكن هناك إمكانية إضافته إلى كل المستندات الجديدة التي نقوم بإنشائها أو المستندات الموجودة مسبقا. نقوم بفتح مربع الحوار Modify Style بالنقر بزر الفأرة الأيمن على النمط الذي قمنا بإنشائه ثم نختار Modify. عند فتح مربّع الحوار، نلاحظ أنّ الخيار Only in this Document محدد تلقائيا، وهذا يعني أنّ النمط الحالي مضاف إلى المستند الحالي فقط. لجعل النمط يُضاف إلى كل مستند جديد يُستخدم فيه القالب الحالي نحدد الخيار New Document based on this template: وبما أنّ القالب الذي نستخدمه في هذا المثال هو القالب العادي Normal، فإنّ هذا النمط سيُضاف إلى معرض الأنماط السريعة كلما قمنا بفتح مستند جديد بقالب فارغ: إما لإضافة النمط إلى مستند موجود مسبقا، نقوم بالنقر على زر إدارة الأنماط Manage Style من جزء الأنماط: في مربع الحوار الذي سيظهر ننقر على زر استيراد/تصدير Import/Export: في مربع الحوار Organizer لدينا مربعان، الأول (على جهة اليسار في الصورة أدناه) يحتوي على الأنماط الموجودة في المستند الذي نعمل عليه، Workability. والثاني (على جهة اليمين في الصورة أدناه) يحتوي على الأنماط الموجودة في القالب الافتراضي Normal: ما نريد القيام به هو نسخ النمط الذي قمنا بإنشائه سابقا باسم "Body Text1" من المستند الحالي، إلى مستند محفوظ لدينا على الجهاز باسم "The Bailey Method"، لذلك سنقوم أولا بإغلاق مستند القالب Normal بالنقر على زر Close File (المحدد في الصورة أعلاه)، ثم النقر على Open File: عند الانتقال إلى المجلد الذي نحفظ فيه المستند، سنلاحظ أنّه لا يحتوي على أي مستندات، وذلك لأنّ الامتدادات المحددة هي قوالب وورد All Word Templates. نقوم بتغيير هذا الخيار إلى كافة مستندات وورد All Word Documents: نحدد المستند المطلوب، وهو "The Bailey Method" في هذا المثال ثم ننقر على فتح Open: ستتم إضافة الأنماط الموجودة في هذا المستند إلى المربع على جهة اليمين. نحدد النمط الذي نريد نسخه من مستند "Workability"، وهو "Body Text1" ثم ننقر على زر نسخ Copy، وستتم إضافته إلى قائمة أنماط المستند "The Bailey Method": نغلق مربع الحوار Organizer ونحفظ التغييرات بالنقر على Save. عندما نقوم بفتح المستند "The Bailey Method" في المرة القادمة، سنجد أن النمط Body Text1 موجود ضمن معرض الأنماط السريعة:1 نقطة
-
من الرائع في برنامج اكسل أنّه يتيح إمكانية إدخال الكمية التي تريدها من البيانات مهما كانت كبيرة لتملأ الملايين من الخلايا، وكذلك إمكانية عرض هذه البيانات بالعديد من الطرق المختلفة. لكن في جداول البيانات الكبيرة جدا سيكون من الصعب تحليل جميع المعلومات في الورقة، وهنا يأتي دور الجداول المحورية Pivot Tables لتساعدك في تنظيم بياناتك، تلخيصها، وتحليلها. كما هو واضح من الاسم، الجداول المحورية هي جداول أيضا تحتوي على أعمدة وصفوف، لكنها توفّر خاصية التلاعب بالبيانات وترتيبها بعدة طرق بسرعة وسهولة. على سبيل المثال جدول البيانات أدناه: لو أردنا معرفة قيم المبيعات لكل "صنف"، يمكننا تنظيم البيانات وتلخيصها البيانات باستخدام الفرز والتصفية Sort & Filter أو المجاميع الفرعية Subtotals، لكن هذا في حالة كون الجدول صغيرا. والحقيقة هي أنّ هذا الجدول يحتوي على أكثر من 1400 صف مما يجعل عملية تلخيص البيانات صعبة بدون استخدام الجداول المحورية: عندما نقوم بتحويل البيانات إلى جدول محوري سيكون بإمكاننا التركيز على ملخص الجدول بدلا من التعامل مع الكم الهائل من البيانات ككل: نلاحظ في الصورة أعلاه كيف تحوّل الجدول المتكون من 1403 صف إلى جدول مبسّط بأقل من 20 صف. يتكونّ الجدول المحوري من 4 مناطق: منطقة الأعمدة Columns، منطقة المرشحات (عوامل التصفية) Filters، منطقة الصفوف Rows، ومنطقة القيم. يمكننا التحكم بالبيانات التي تظهر في كل منطقة من هذه المناطق بكل سهولة. فإذا أردنا أن نقوم بعرض مجموع المبيعات حسب الربع في منطقة الصفوف، ونقل الأشهر إلى منطقة المرشحات، ببساطة ننقر على حقل "الربع" ونسحبه من منطقة المرشحات إلى منطقة الصفوف. وبالمثل ننقر على حقل "شهر الطلب" ونسحبه من منطقة الصفوف إلى منطقة المرشحات، وبذلك نحصل على طريقة مختلفة لتحليل بياناتنا: كما يمكننا التحكم في الحقول fields التي نرغب في إظهارها/إخفائها في الجدول بتأشير اسم الحقل من قسم الحقول الجانبي (أسماء الحقول هي نفسها عناوين الأعمدة للجدول الأصلي الذي قمنا بتحويله إلى جدول محوري): وللتركيز على جزء أصغر من البيانات لتحليلها بشكل مفصّل يمكننا استخدام أمر التصفية، أو ما يُسمى بمقسم طريقة العرض Slicers والتي سنأتي إلى شرحها لاحقا في هذا المقال. إذا فالجداول المحورية هي طريقة أكثر مرونة لعرض البيانات يمكن إعادة هيكلتها بسهولة مع العديد من الخيارات التي تمكننا من تنظيم تلك البيانات، تلخيصها وتحليلها بشكل سهل وسريع. كيفية إنشاء الجداول المحورية لنعد إلى الجدول الأصلي؛ مجموعة من الأعمدة والصفوف التي تعرض قيم المبيعات لعدد من الأصناف وحسب الأشهر وأرباع السنة. لتحويل هذا الجدول إلى جدول محوري ننقر على إحدى الخلايا داخل الجدول ثم نذهب إلى تبويب إدراج Insert: في خانة جداول Tables نلاحظ وجود أمرين لإنشاء الجدول المحوري: PivotTable و Recommended PivotTable. سننقر الأمر الأول (PivotTable) لإنشاء الجدول (أو يمكننا استخدام الاختصار Alt+N+V). سيظهر مربع الحوار التالي: نؤشر الخيار تحديد جدول أو نطاق Select a table or range ونحدد الجدول (أو جزء منه) الذي نريد تحويله إلى جدول محوري (وهو محدد تلقائيا هنا لأننا قمنا بتحديد خلية داخله مسبقا). إذا رغبنا في استيراد بيانات من ملف خارجي، كقاعدة بيانات Access مثلا، نحدد الخيار استخدام مصدر بيانات خارجي Use an external data source. وكذلك لدينا خيار إنشاء الجدول في ورقة عمل جديدة بتحديد الخيار New Worksheet أو إنشائه في الورقة الحالية Existing Worksheet وتحديد الخلية التي نريده أن يبدأ منها من حقل Location. يُحدد الخيار الأخير، إضافة هذه البيانات إلى نموذج البيانات Add this data to the data model، إذا كانت البيانات علائقية Relational (أي مقسمة على عدة جداول)، وفي هذه الحالة يمكن إضافة الجداول المتعددة إلى نموذج بيانات في اكسل، إنشاء علاقات بينها، ثم استخدام نموذج البيانات لإنشاء PivotTable. بعد تحديد جميع الخيارات المرغوبة، ننقر على موافق OK. في الورقة الجديدة ستتم إضافة placeholder للجدول المحوري بالإضافة إلى لوحة جانبية تحتوي على جميع الحقول الموجودة التي يمكن إضافتها إلى الجدول، ومصدرها هو الجدول الأصلي. سنقوم ببناء الجدول بسحب الحقول التي نرغب في إضافتها إلى المنطقة المرغوبة. فإذا أردنا تصفية الجدول ككل حسب الأشهر، سنقوم بسحب حقل "شهر الطلب" إلى منطقة Filters، وستتم إضافة عامل التصفية مباشرة إلى الورقة: وسنقوم بسحب حقل "الربع" إلى منطقة الأعمدة وحقل "الصنف" إلى منطقة الصفوف: نلاحظ أن الجدول ما زال فارغا، وذلك لأننا لم نحدد بعد الحقل الذي نضعه في منطقة القيم. كما نلاحظ أن البرنامج يقوم بإضافة صف وعمود الإجمالي الكلي Grand Total تلقائيا. سنقوم بسحب "المبيعات" إلى منطقة القيم: يمكننا في أي وقت تغيير هيكلية الجدول بسحب الحقول ونقلها إلى المكان الآخر، وهذا ما يميز الجدول المحوري؛ المرونة التامة في التحكم طريقة عرض البيانات. الطريقة الأخرى لإنشاء الجدول المحوري هو أمر Recommended PivotTable الذي يقترح مجموعة من الخيارات المناسبة لبياناتك. يمكنك استخدام هذا الأمر إذا لم تكن ترغب في ببناء الجدول يدويا، أو إذا لم تكن تعرف بالضبط كيف تعرض بياناتك بالشكل المناسب. بنفس الطريقة، نحدد خلية داخل جدول البيانات العادي ثم ننقر على Recommended PivotTable: في مربع الحوار تُعرض العديد من طرق العرض المختلفة للبيانات. انقر على المصغرات لمعاينتها بصورة أكبر في جزء المعاينة. عندما تقرر الشكل المناسب لك، انقر على موافق OK. سيتم إنشاء الجدول المحوري في ورقة جديدة: في الشكل الذي اخترناه، يُعرض حقلا "ربع" و "شهر الطلب" كصفوف، وعدد الطلبات في منطقة القيم. ولا توجد حقول في منطقتي الأعمدة والمرشحات (وهذا يعني أنّه ليس بالضرورة استخدام جميع المناطق وإضافة الحقول إليها). يمكننا مواصلة العمل على هذا الترتيب أو تغييره يدويا حسب ما يناسبنا. تنسيق الجداول المحورية بعد أن تعرّفنا على كيفية إنشاء الجداول المحورية وكيفية التلاعب في هيكلية الجدول بنقل الحقول من منطقة إلى أخرى، لنستعرض المزيد من الخيارات الخاصة بتنسيق الجدول المحوري. عندما ننقر على أي خلية داخل الجدول سنلاحظ ظهور التبويبين السياقيين تصميم Design وتحليل Analyze: يحتوي تبويب تصميم على العديد من الخيارات التنسيقية، منها مجموعة أنماط PivotTable Styles تشابه أنماط الجداول العادية. نمرر الفأرة فوق أي من هذه الأنماط لعرض معاينة مباشرة، وعندما نحدد النمط المناسب ننقر عليه لاختياره: كما يحتوي على خيار تمييز الصفوف (أو الأعمدة) بتنسيق خاص لتسهيل تمييز البيانات ومتابعتها. نحدد أحد الخيارين Banded Rows أو Banded Columns لتطبيق التنسيق الخاص: وبإمكاننا تطبيق تنسيق خاص لعناوين الصفوف/ الأعمدة بتأشير الخيارين Row Headers/ Column Headers: وإذا كنا نفضّل المزيد من المساحات البيضاء في الجدول يمكننا إضافة صفوف فارغة تحت كل مجموعة عناصر من خيار Insert Blank Line after Each Item: كما أنّ هناك المزيد من الخيارات الخاصة بتخطيط الجدول يمكننا الوصول إليها من أمر تخطيط التقرير Report Layout: في النموذج المضغوط Show in Compact Form (وهو التخطيط الافتراضي) تُعرض عناصر الحقول المختلفة في منطقة الصفوف في عمود واحد (مثلا، في الجدول أدناه تُعرض عناصر "الصنف" و "شهر الطلب" في عمود A)، كما تكون عناوين الصفوف والأعمدة عمومية ("Row Labels" و "Column Labels"): بالإمكان استخدام النموذج المضغوط إذا كنا بحاجة إلى المزيد من المساحة لعرض القيم. وكذلك بالإمكان استخدام أيقونات +/- عند عناوين الصفوف لعرض/إخفاء التفاصيل المندرجة تحت كل عنوان: وفي نموذج مخطط تفصيلي Show in Outline Form يتم تخصيص عمود لكل حقل من حقول منطقة الصفوف (مثلا، في الجدول أدناه خصص العمود A لحقل "الصنف" وعمود B لحقل "شهر الطلب)، كما تُعرض تسميات الحقول الحقيقة (مثلا، "الصنف" بدلا من "Row Labels" و"شهر الطلب" بدلا من "Column Labels"): أما الخيار الأخير، النموذج الجدولي Show in Tabular Form، فهو يشابه النموذج السابق تقريبا، ولكنه يعرض قيم المجاميع (Total) أسفل المجموعات وليس أعلاها: يمكننا اختيار إي نموذج من النماذج المتاحة، فالأمر يعتمد على التفضيل الشخصي للمستخدم. من الخيارات الأخرى المتوفرة إمكانية إخفاء قيم الإجمالي الكلي Grand Total للصفوف والأعمدة Off for rows and columns، أو إظهارها للصفوف فقط On for rows only أو للأعمدة فقط On for columns only: وكذلك إمكانية إخفاء قيم المجاميع الفرعية Subtotals، أو تحديد موضع عرضها في أسفل مجموعات العناصر Show all subtotals at bottom of group أو أعلاها Show all subtotals at top of group: بالإضافة إلى ذلك، يمكننا الوصول إلى بعض الخيارات التنسيقية من تبويب تحليل Analyze. مثلا، في الجدول أدناه، يمكننا تغيير تنسيق مجموع المبيعات في منطقة القيم بإضافة رمز العملة. أولا، نحدد إحدى الخلايا التي تحتوي على مجموع المبيعات، ونتأكد من أننا حددنا الحقل المطلوب من مربع الحقل النشط Active Field، ثم ننقر على إعدادات الحقل Field Settings: نلاحظ في مربع الحقل النشط أنّ الحقل المحدد هو حقل "المبيعات Sum of" وهو ما نريده. من مربع الحوار "إعدادات حقل القيم" يمكننا إدخال اسم مخصص للحقل Custom Name، ويفضّل أن يكون مختلفا عن اسم المصدر Source Name لكيلا تختلط أسماء الحقول. كما يمكننا تغيير الدالة التي نريد استخدامها لتلخيص البيانات. الدالة الافتراضية هي الجمع Sum، ونستطيع استخدام الدوال الأخرى كالمتوسط، الضرب، إلخ: ولتغيير تنسيق الأرقام في منطقة القيم، ننقر على تنسيق الرقم Number Format. في مربع الحوار تنسيق الخلايا ننقر على الخيار عملة Currency، ثم نحدد نوع العملة وعدد الفواصل العشرية في الرقم، ثم موافق OK: وسيتم تنسيق الأرقام في منطقة القيم بصيغة عملة: سنتابع في الدرس القادم كيفية إنشاء وتنسيق المخططات المحورية في برنامج اكسل.1 نقطة
-
Let’s Encrypt هي سلطة شهادات مفتوحة ومؤتمتة تستعمل بروتوكول ACME (Automatic Certificate Management Environment) لتوفير شهادات TLS/SSL مجانية لأي عميل يحقق الشروط المطلوبة، وتلك الشهادات يمكن أن تستعمل لتشفير الاتصالات بين خادوم الويب وزوار موقعك. هنالك الكثير من العملاء المتاحة لبروتوكول ACME المكتوبة بمختلف لغات البرمجة، مع قدرة على الدمج مع أدوات الإدارة والخدمات والخواديم الشهيرة. أشهر عميل ACME باسم Certbot يُطوَّر حاليًا من Electronic Frontier Foundation. ويمكن لعميل Certbot ضبط تشفير TLS/SSL في خودايم أباتشي و Nginx إضافةً إلى التحقق من ملكية النطاق والحصول على الشهادات. سيشرح هذا الدرس سلطات الشهادات باختصار وكيف تعمل خدمة Let’s Encrypt، ثم سنتحدث عن بعض عملاء ACME. ما هي سلطة الشهادات؟ سلطات الشهادات (certificate authorities اختصارًا CAs) هي الجهات التي توقِّع شهادات TLS/SSL رقميًا لضمان وكفالة موثوقيتها. إذ تملك المتصفحات وأنظمة التشغيل قائمةً بسلطات الشهادات الموثوقة التي يمكن استعمالها للتحقق من شهادات أحد المواقع. حتى وقتٍ قريب، كانت أغلبية سلطات الشهادات خاضعة لشركات تجارية والتي تتقاضى أموالًا للحصول على خدمات توقيع الشهادات، لكن أتت خدمة Let’s Encrypt وجعلت هذه العملية مجانية للمستخدمين عبر أتمتة العملية كليًّا، وبالاعتماد على نظام الرعاية والمساهمات المالية لتمويل البنية التحتية اللازمة لتشغيل مثل هذه الخدمة. لمزيدٍ من المعلومات حول الشهادات والأنواع المختلفة من سلطات الشهادات، فاقرأ مقالة A Comparison of Let’s Encrypt, Commercial and Private Certificate Authorities, and Self-Signed SSL Certificates. كيف تعمل خدمة Let’s Encrypt بروتوكول ACME يُعرِّف كيفية تواصل العملاء مع الخواديم لطلب الشهادات والتحقق من ملكية النطاقات وتنزيل الشهادات، وهذا البروتوكول في صدد تحويله إلى معيار IETF رسمي. توفِّر خدمة Let’s Encrypt شهادات لنطاقات موثوقة، وهذا يعني أنَّها ستتحقق أنَّ الشهادة تأتي من شخصٍ يتحكم فعليًا بالنطاق، وذلك عبر إرسال العميل لرمز فريد (unique token) ثم إجراء طلبية ويب أو DNS للحصول على مفتاح مأخوذ من ذاك الرمز. على سبيل المثال، لو كنا سنجري تحقق عبر HTTP، فسيحسب العميل المفتاح من الرمز الفريد (unique token) ورمز الحساب (account token)، ثم يضع الناتج في ملف مُخدَّم من خادوم الويب، ثم يمكن لخواديم Let’s Encrypt أن تنزِّل الملف الموجود في المسار http://example.com/.well-known/acme-challenge/token فإذا كان المفتاح صحيحًا، فهذا يعني أن العميل قادرٌ على التحكم بالموارد الموجودة في النطاق example.com وبالتالي سيوقِّع الخادوم الشهادة ويتيحها للعميل. يُعرِّف بروتوكول ACME عدِّة طرائق للتحقق أنَّ العميل يملك النطاق، فاختبار HTTPS شبيه باختبار HTTP، لكن بدلًا من استخدام ملف نصي فسيوفِّر العميل شهادة موقعة ذاتيًا وفيها مفتاح التحقق. أما التحقق عبر DNS فيتم عبر وضع المفتاح في سجل DNS TXT. عميل Certbot Certbot هو أشهر عميل Let’s Encrypt، وهو متوافر في أغلبية توزيعات لينكس ويتضمن القدرة على الضبط التلقائي لخادومَي أباتشي و Nginx. يمكنك الحصول على الشهادة وتحديث ضبط أباتشي بتنفيذ الأمر الآتي بعد تثبيت عميل Certbot: sudo certbot --apache -d www.example.com سيسألك Certbot بعض الأسئلة ثم يجري عملية التحقق وينزِّل الشهادات ويُحدِّث ضبط أباتشي ويعيد تحميل الخادوم، ويمكنك بعد ذلك أن تنتقل إلى https://www.example.com في متصفح الويب الخاص بك وستشاهد القفل الأخضر مشيرًا إلى أنَّ الشهادة صحيحة والاتصال مشفّر. ولأن شهادات Let’s Encrypt صالحة لتسعين يومًا فقط، فمن المهم ضبط عملية تجديد مؤتمة. الأمر الآتي سيُجدِّد كل الشهادات الموجودة على الحاسوب: sudo certbot renew ضع الأمر السابق في جدول cron وشغِّله يوميًا، وستُجدَّد الشهادات تلقائيًا قبل ثلاثين يومًا من انتهاء صلاحيتها، وإذا أُنشِئَت الشهادة بادئ الأمر مع أحد الخيارين --apache أو --nginx فسيعيد Certbot تحميل الخادوم بعد نجاح عملية التجديد. إذا أردتَ معرفة المزيد من المعلومات حول جداول cron فأحيلك إلى درس كيف نستخدم المهام المجدولة باستخدامCron في أنظمة لينكس ويونكس. عملاء آخرين لأن بروتوكول ACME مفتوح وموثّق جيدًا، فقد طوِّرَ الكثير من العملاء البديلين، وهنالك قائمة بعملاء ACME في موقع Let’s Encrypt، وأغلبية العملاء لا يملكون ميزة ضبط خادوم الويب تلقائيًا التي يملكها Certbot لكن هنالك ميزات أخرى لها قد تجذبك: - هنالك عميل مكتوب بكل لغات البرمجة تقريبًا، بما في ذلك سكربتات الصدفة (shell scripts) ولغة Go و Node.js، وقد تستفيد من ذلك إن كنتَ تُنشِئ شهادات في بيئة مغلقة لا يمكن تضمين بايثون فيها ولا بقية اعتماديات Certbot. - بعض العملاء يمكن أن يعملوا دون امتيازات الجذر، فمن المستحسن تقليل كمية الشيفرات التي تعمل بامتيازات الجذر إلى أقل قدر ممكن. - الكثير من العملاء يمكنها أتمتة عملية التحقق عبر DNS عبر استخدام الواجهة البرمجية المناسبة لموفِّر خدمة DNS لإنشاء سجلات TXT تلقائيًا، والتحقق عبر DNS يسمح بتوليد شهادات لحالات الاستخدام الغريبة مثل تشفير خواديم الويب التي لا يمكن للعموم الوصول إليها. - بعض العملاء يمكن أن يندمج مع خودايم الويب أو الخواديم الوسيطة (proxy) العكسية، أو موزّعات الحِمل (load balancers) مما يسهِّل عملية الضبط والتشغيل. بعض أشهر تلك العملاء: - lego المكتوب بلغة Go، والذي يُثبَّت عبر ملفٍ ثنائيٍ وحيد، والذي يدعم عدد من مزودي خدمة DNS لتسهيل التحقق عبر DNS. - acme.sh وهو سكربت صدفة بسيط يمكن أن يعمل دون امتيازات الجذر، ويستطيع أن يتواصل مع أكثر من 30 مزودًا لخدمة DNS. - Caddy وهو خادوم ويب كامل مكتوب بلغة Go والذي يملك دعمًا مدمجًا فيه لخدمة Let’s Encrypt. يتوافر الكثير من العملاء، وأصبحت العديد من الخدمات والخواديم تؤتمت عملية إعداد TLS/SSL بدعم خدمة Let’s Encrypt فيها. الخلاصة لقد شرحنا أساسيات عمل خدمة Let’s Encrypt، وناقشنا أشهر العملاء المتوافرين، وإذا أردتَ معرفة كيفية إعداد هذه الخدمة مع بقية البرمجيات فأنصحك بالاطلاع على درس تنصيب شهادة SSL مجانية عبر خدمة Let’s encrypt على خادوم لينكس. ترجمة –وبتصرّف– للمقال An Introduction to Let’s Encrypt لصاحبه Brian Boucheron1 نقطة
-
البرنامج بسيط، فيكفي إنشاء مصفوفة من 10 أعداد صحيحة حيث سنستخدم حلقة التكرار for لملئ هذه المصفوفة بالأعداد المطلوبة ومن ثم سنستخدم نفس حلقة التكرار لمقارنة الأعداد واستخراج اكبر واصغر عدد. اعتبرنا في البداية أن أول عدد في المصفوفة هو أكبر وأصغر عدد ثم بدأنا بالمقارنة مع بقية الأعداد فإذا وجدنا عدد اكبر/اصغر منه غيّرنا قيمة المتغير mi أو ma (متغيرات اكبر واصغر قيمة). #include <iostream> using namespace std; int main() { int T[10]; int i, mi, ma; for (i=0;i<10;i++) { cout<<"Enter a number "; cin>>T[i]; } mi = T[0]; ma = T[0]; for (i=1;i<10;i++) { if (T[i]<mi) mi=T[i]; if (T[i]>ma) ma=T[i]; } cout<<"The Max is "<<ma<<endl; cout<<"The Min is "<<mi<<endl; }1 نقطة
-
تعرّفنا في الجزء الأول من هذا الدرس على الجداول المحورية وكيفية إنشائها وتنسيقها، وسنكمل في هذا الجزء الشرح حول أساسيات الجداول المحورية بالإضافة إلى المخططات المحورية. كيفية إنشاء الحقول المحسوبة Calculated Fields في بعض الأحيان تحتاج إلى إضافة معلومات أخرى إلى تقرير PivotTable ولا تريد تغيير مصدر البيانات الأصلي، أو قد يكون إدخالها في الجدول الأصلي يستغرق الكثير من الوقت. في هذه الحالة يمكنك استخدام الحقول المحسوبة Calculated Fields. في المثال أدناه، نريد إضافة حقل تُحسب فيه قيم العمولة لنسبة عمولة تساوي 11%: نحدد خلية داخل الجدول ليظهر التبويبان السياقيان. من تبويب تحليل Analyze ننقر على: Fields, Items, &Sets > Calculated Field في مربع الحوار "إدراج حقل محسوب"، نقوم بإدخال اسم للحقل الجديد من خانة Name. ومن خانة Formula نقوم بكتابة صيغة الحقل. بما أننا نريد حساب العمولة التي تنتج من ضرب قيم المبيعات × نسبة العمولة، ستكون الصيغة بالشكل التالي: =المبيعات * %11 يمكننا كتابة كلمة "المبيعات" يدويا في الصيغة أو النقر عليها بشكل مزدوج من مربع Fields. بعد الانتهاء من كتابة الصيغة ننقر على موافق OK. سنلاحظ إضافة حقل "العمولة Sum of " إلى قائمة الحقول وإدراجه في منطقة القيم، وكذلك ظهور قيم مجموع العمولة لكل شهر لكل "صنف" في الجدول: بإمكاننا تغيير عنوان العمود من "العمولة Sum of" إلى "مجموع العمولة" بتحديد الخلية التي تحتوي على العنوان ثم إدخال الاسم الجديد في خانة الحقل النشط Active Field: إذا أردنا حذف الحقل المحسوب الذي قمنا بإضافته، نحدد خلية داخل الجدول، نذهب إلى تبويب: Analyze > Fields, Items, &Sets > Calculated Field من خانة Name نحدد الحقل الذي نرغب في حذفه (وهو حقل "العمولة" في هذا المثال)، ننقر على حذف Delete ثم موافق OK: كيفية استخدام مقسمات طريقة العرض Slicers لتصفية البيانات مقسّمات العرض Slicers هي بمثابة لوحة تحكم بصرية بعوامل التصفية Filters، وهي تختلف عن التصفية التقليدية بكونها أسهل وأسرع للاستخدام. مثلا، في الجدول أدناه، يمكننا استخدام الحقل في منطقة المرشحات ("الربع") لتصفية الجدول المحوري. فإذا أردنا عرض مبيعات الربع الأول من كل سنة فقط، نحدد "الربع الأول" ثم ننقر على موافق OK: لكن إذا أردنا التصفية حسب السنوات، أو الأشهر، دون إضافة هذه الحقول إلى منطقة المرشحات (أو إلى PivotTable)، يمكننا استخدام مقسّمات العرض. من تبويب تحليل Analyze ننقر على إدراج مقسّم طريقة العرض Insert Slicer. في مربع الحوار الذي سيظهر نحدد الحقول التي نريد إدراجها كمرشحات. سنقوم بإدراج "شهر الطلب" و"السنة" مثلا (يمكن إدراج واحد فقط أو أكثر): بعد إدراج المقسّمات، يمكننا تغيير مكانها بسحبها إلى الموضع المرغوب، أو تغيير حجما باستخدام المقابض عند حدودها: نلاحظ أن كل مقسّم يحتوي على عنوان، وهو نفسه عنوان الحقل، بالإضافة عدد من الأزرار التي تمثل عناصر ذلك الحقل. لعمل تصفية، ننقر على الأزرار داخل كل مقسّم. فلو أردنا عرض المبيعات لشهر نيسان من عام 2011، ننقر على زر "نيسان" من مقسّم "شهر الطلب": وبإمكاننا عمل تصفية متعددة (أي عرض القيم لأكثر من عنصر في المقسّم) بالضغط على مفتاح Ctrl أثناء النقر على مجموعة من الأزرار في المقسّم. ففي المثال أدناه، قمنا بعرض مجموع المبيعات لشهر "نيسان"، "حزيران" و"أيلول" من عام 2011: لإلغاء عملية التصفية، ننقر على زر إزالة التصفية في حافة المقسّم (أو نضغط مفتاحي Alt+C من لوحة المفاتيح). هناك العديد من الخيارات الخاصة بتنسيق المقسّم يمكننا الوصول إليها من تبويب خيارات Options الذي يظهر عند تحديد أي مقسّم في الورقة. يمكننا تغيير لون المقسّم باختيار أحد الأنماط Styles من معرض الأنماط: أو تغيير عند الأعمدة في المقسّم من خانة الأزرار Buttons وبالتحديد حقل الأعمدة Columns. كما يمكننا تغيير أبعاد الأزرار من نفس الخانة: يمكننا أيضا تغيير اسم المقسّم من مربع Slicer Caption في خانة Slicer: وللوصول إلى الخيارات الإضافية للمقسّم ننقر على خيارات مقسّم طريقة العرض Slicer Setting من خانة Slicer: من مربّع حوار "الإعدادات"، يمكننا تغيير عنوان المقسّم أيضا، أو عدم عرضه بإلغاء تأشير الخيار Display header. وبالإمكان تغيير طريقة فرز وتصفية عناصر المقسّم بتأشير الخيار تصاعديا Ascending أو تنازليا Descending. فإذا كانت العناصر نصية سيتم فرزها من الألف إلى الياء (أو بالعكس)، وإذا كانت العناصر رقمية سيتم فرزها من الأصغر إلى الأكبر (أو بالعكس). كما يوجد خيار استخدام قائمة مخصصة عند فرز العناصر Use Custom Lists when sorting. مثلا عندما نقوم بإلغاء تأشير هذا الخيار ستترتب العناصر في مقسّم "شهر الطلب" أبجديا: إنّ إلغاء تأشير استخدام القوائم المخصصة غير مناسب في هذه الحالة، لأننا نريد عرض الأشهر حسب ترتيبها المعتاد. لكن يكون هذه الأمر مفيدا إذا كانت مجموعة العناصر تتطلب ترتيبا محددا، يمكننا إنشاء قائمة مخصصة Custom List واستخدامها لفرز العناصر في المقسّم. وإذا كانت هناك عناصر في المقسّم لا تحتوي على بيانات لتصفيتها، ولا نرغب في عرض هذا العنصر، يمكننا تأشير الخيار Hide items with data: بعد تحديد جميع الخيارات المرغوبة ننقر على موافق OK. كيفية إنشاء PivotCharts كما هو واضح من الاسم، PivotCharts تشبه إلى حد كبير PivotTables، فبدلا من الجدول، ستُمثل القيم في مخطط يمكن تغيير طرق العرض فيه بكل سهولة كما نفعل في الجدول المحوري. هناك أكثر من طريقة لإنشاء PivotChart، إما بتحديد إحدى الخلايا داخل الجدول المحوري، ثم الذهاب إلى تبويب تحليل Analyze والنقر على PivotChart من خانة أدوات Tools: أو الذهاب إلى تبويب إدراج Insert والنقر على PivotChart من خانة مخططات Charts: أو النقر على مخططات مستحسنة Recommended Charts من نفس التبويب لعرض المخططات المقترحة والمناسبة لبياناتنا: وفي جميع الحالات سيُفتح نفس مربّع الحوار الذي يشابه مربّع الحوار الخاص بإدراج المخطط العادي (راجع درس كيفية إنشاء المخططات وتخصيصها في Excel للاطلاع على كيفية اختيار المخطط المناسب للبيانات): بعد انتقاء نوع المخطط المناسب ننقر على موافق OK ليتم إدراجه في الورقة: يرتبط هذا المخطط ارتباطا مباشرا بالجدول المحوري، أي أنّ أي تغيير نجريه على الجدول سيتم تحديث المخطط على أساسه. وبالمثل، أي تغيير يجري على المخطط سيتم تحديث الجدول ليعكس هذا التغيير. فلو قمنا، مثلا، بعمل تصفية لعرض قيمة الربع الثاني في المخطط، سيتم تطبيق نفس العملية على المخطط تلقائيا: وإذا قمنا بإلغاء تأشير حقل "الفرع" من الجدول، وتأشير حقل "السنة"، سيتغير المخطط تبعا لذلك: وحتّى لو استخدمنا مقسّمات طريقة العرض Slicers لتصفية الجدول، سيتغير المخطط أيضا: ولتجنّب ازدحام العناصر في الورقة، يمكننا نقل المخطط إلى ورقة جديدة فارغة. ننقر على المخطط لتحديده، نذهب إلى تبويب تحليل Analyze ثم ننقر على نقل المخطط Move Chart من خانة إجراءات Actions: نحدد الخيار ورقة جديدة New Sheet ونقوم بإدخال اسم الورقة، ثم ننقر على موافق OK: سيتم نقل المخطط إلى ورقة جديدة. وستصبح لدينا المزيد من المساحة مما يسّهل تحليل المخطط: وكما في الجدول المحوري، يحتوي المخطط على أربع مناطق: منطقة عوامل التصفية Filters، منطقة حقول المحور Axis، منطقة وسائل الإيضاح Legend، ومنطقة القيم Values. وبإمكاننا تغيير طريقة عرض المخطط بإعادة ترتيب الحقول وسحبها من منطقة إلى أخرى حسب المطلوب كما فعلنا في الجدول: توجد العديد من الخيارات لتصميم وتنسيق المخطط المحوري تماما كما في المخططات العادية. فمن تبويب تصميم Design يمكننا تغيير نمط المخطط من معرض الأنماط Chart Styles، أو تغيير ألوانه من أمر ألوان Colors: كما يمكننا إضافة عناصر إلى المخطط من أمر Add Chart Element أو تغيير تخطيط المخطط من أمر Chart Layout (تُعرض معاينة مباشرة للتخطيط بمجرد تمرير الفأرة فوقه): إذا، فالمخططات المحورية هي عبارة عن مخططات عادية بمرونة وخيارات الجداول المحورية.1 نقطة
-
OTP أو One-time password تقنية تستخدم لتوليد كلمة مرور صالحة لمرة واحدة فقط بهدف استعمالها لتسجيل الدخول إلى خدمة عبر الإنترنت، وهي عادةً ما تستخدم جنبًا إلى جنب مع كلمة المرور التقليدية كطبقة أمان إضافية. أهم ميزاتها أنها ديناميكية أي يتم توليد واحدة جديدة في كل مرة مما يمنع إمكانية محاولة تخمينها بغرض الاختراق، وكذلك ضمانها لمجهوليتك بنفس الوقت، فأنت هنا لا تحتاج إلى رقم هاتف مربوط باسمك وهويتك لاستخدام التحقق بخطوتين1 نقطة