لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 09/09/23 في كل الموقع
-
هل أنت مهتم بتطوير الألعاب، وتود التعرف على مفهوم محرك الألعاب وأفضل أنواع محركات الألعاب Game Engines التي توفر لك بيئة عمل متكاملة يمكنك من خلالها برمجة الألعاب بسهولة واحترافية؟ نعرّفك في هذه المقالة على أبرز محركات الألعاب ونوضح أهم مميزاتها وعيوبها لتختار منها ما يناسبك وتنطلق في مجال صناعة الألعاب. مدخل إلى برمجة الألعاب قبل التعمق في شرح مفهوم محرك الألعاب لنتحدث بإيجاز عن خطوات تطوير وبرمجة الألعاب، حيث تضم عملية تطوير الألعاب عدة مراحل لا تقتصر فقط على المهارات البرمجية والرياضية، بل تحتاج لوجود مهارات فنية وإبداعية، والقدرة على ابتكار أفكار لعب مشوقة، وسرد اللعبة بطريقة واضحة تبين للاعب قوانين اللعبة وطريقة اللعب بها. قد تختلف مراحل تطوير الألعاب بحسب نوع اللعبة ومستواها ومنصة اللعب بها، إلا أنها تمر بمجموعة من المراحل الأساسية تشمل: التخطيط للعبة ووضع تصور عام لها وتحديد نوعها ومميزاتها وطريقة اللعب بها والمستويات التي تتضمنها والمنصة التي ستعمل عليها. تصميم اللعبة فبمجرد الانتهاء من مرحلة التخطيط للعبة تبدأ مرحلة التصميم وتحديد الشكل الذي ستظهر به هل هي ثنائية الأبعاد 2D أم ثلاثية الأبعاد 3D وشكل الشخصيات ونمط رسمها وهل ستصمم الشخصيات من الصفر أم ستستورد من مصدر جاهز. برمجة اللعبة في هذه المرحلة تتم كتابة المنطق البرمجي الذي يجعل اللعبة تعمل مع تحديد الأدوات أو التقنيات اللازمة لتحقيق ذلك، وهنا أمام المطور خياران إما البدء بكتابة كافة الأكواد البرمجية اللازمة لعمل اللعبة من الصفر بإحدى لغات برمجة الألعاب وهذا سيستغرق وقتًا وجهدًا كبيرين وهو يصلح لبرمجة الألعاب البسيطة أو استخدام محركات ألعاب متخصصة تساعد مبرمج الألعاب في أداء المهام التطويرية وتمكنه من تطوير ألعاب عالية الجودة بأقل جهد. اختبار اللعبة حيث بعد الانتهاء من برمجة اللعبة يجب اختبارها وتجربة اللعب بها والتأكد من أنها تعمل بالشكل المطلوب وإصلاح أي أخطاء تظهر فيها. نشر اللعبة على المنصات أو المتاجر الخاصة بها وإتاحتها للمستخدمين، على سبيل المثال إذا قمت بإنشاء لعبة تعمل على الجوال تحتاج لتحميلها على متجر تطبيقات جوجل بلاي ومتجر تطبيقات آبل. بالنسبة للألعاب البسيطة يمكن أن يكون مصمم اللعبة ومبرمج اللعبة هو الشخص نفسه، أم في الألعاب المتقدمة فيكون هناك فريق تطوير متخصص مكون من مجموعة أفراد الذين يعملون معًا لإنشاء وتطوير الألعاب كالمصممين الذين يبتكرون تصاميم اللعبة والمطورين الذين يكتبون الكود البرمجي لها ومهندسين لإنشاء أصوات اللعبة ومصممي مستويات اللعبة وأحيانًا كتَّاب سيناريو ومنتجين ومخرجين وغيرهم من الأشخاص المختصين بحسب مستوى اللعبة ودرجة تعقيدها. ما هو محرك الألعاب Game Engine؟ محرك الألعاب game engine أو ما يعرف بإطار عمل الألعاب game framework هو البيئة المسؤولة عن تشغيل الألعاب، إذ يوفر للمبرمجين إطار عمل برمجي يتضمن التعليمات البرمجية الأساسية والأدوات الجاهزة والمكتبات المضمنة التي توفر كافة الوظائف التي يحتاجها المطور لتطوير وتخصيص ونشر الألعاب بسرعة وسهولة. يعد محرك الألعاب أساس إنشاء وتشغيل الألعاب المختلفة، واختياره خطوة أولى لتطوير الألعاب باختلاف أنواعها، ويمكن تشبيه محرك الألعاب بمحرك السيارة فكما أن محرك السيارة هو ما يشغل هيكل السيارة ويجعلها تتحرك فهو ما يوفر البنية التحتية الرقمية اللازمة لتشغيل عناصر اللعبة وجعلها تعمل بالشكل المطلوب. لقد أحدثت محركات الألعاب تحولًا جذريًا في مجال تطوير الألعاب فقبل ظهورها كان مطور الألعاب يحتاج لتصميم كل تفاصيل لعبته الألعاب من الألف إلى الياء وكتابة كافة التعليمات البرمجية المطلوبة لتصميم الألعاب ونشرها على المنصات المختلفة، لكن باستخدام محركات الألعاب لن تكون مضطرًا لكتابة الكثير من التعليمات البرمجية المعقدة لتجعل لعبتك تعمل بالشكل المطلوب وستتمكن من خلال برنامج واحد إنشاء ألعاب متعددة المنصات تعمل على أجهزة الحاسوب الشخصية والأجهزة المحمولة ووحدات التحكم بالألعاب consoles ومنصات الواقع الافتراضي VR platforms، فكل ما تحتاجه لتصميم لعبة متكاملة اليوم هو تعلم استخدام أحد محركات الألعاب ومعرفة أساسية بإحدى لغات البرمجة التي يدعمها هذا المحرك. مكونات محرك الألعاب يتضمن محرك الألعاب عادة مجموعة من المكونات أو المحركات الفرعية التي تتفاعل مع بعضها البعض لتجعل عناصر أو كائنات اللعبة تقوم بكافة الوظائف الضرورية التي تحتاجها، وأهم هذه المحركات: محرك الفيزياء Physics Engine محرك التصيير أو الإخراج Rendering Engine محرك الرياضيات Math Engine محرك الصوت Sound Engine محرك الشبكة Networking Engine محرك الذكاء الاصطناعي AI Engine لنتناول بإيجاز دور كل محرك من هذه المحركات والوظائف التي يقدمها. 1. محرك الفيزياء Physics Engine المسؤول عن جعل عناصر اللعبة تظهر بطريقة واقعية عندما تسقط أو تصدم ببعضها البعض أو عند إطلاق قذيفة أو انسكاب سوائل وغيرها من التصرفات. 2. محرك التصيير أو الإخراج Rendering Engine يعرف كذلك باسم المحرك الرسومي graphic engine وهو مسؤول بشكل أساسي عن إخراج رسومات اللعبة بشكل ثنائي الأبعاد 2D أو ثلاثي الأبعاد 3D. 3. محرك الرياضيات Math Engine المسؤول عن توفير الوظائف الرياضية مثل حساب المسافة أو حساب السرعة وغيرها من العمليات الرياضية التي تفيدك في سياق التحكم في شخصيات اللعبة. 4. محرك الصوت Sound Engine المسؤول عن تحميل وتشغيل ملفات الصوت والتأثيرات الصوتية داخل اللعبة وتحسينها والتحكم بها. 5. محرك الشبكة Networking Engine الذي يتيح لك استخدام الشبكات لتطوير ألعاب متعددة اللاعبين multiplayer games ما يجعل اللعبة أكثر حماسًا وتفاعلية. 6. محرك الذكاء الاصطناعي AI Engine وهو المسؤول عن تقديم توصيات أو اتخاذ قرارات في اللعبة بناءً على سلوك اللاعب. قد لا تستخدم كافة هذه المحركات في تصميم لعبتك إذ يعتمد الأمر على طبيعة اللعبة التي تطورها والمميزات التي توفرها. دعنا نتعرف في الفقرات التالية ما هي أهم محركات الألعاب ونكتشف أبرز مميزاتها لتختار منها ما يناسبك. أشهر محركات الألعاب هناك العديد من محركات الألعاب التي توفر إمكانيات ومميزات مختلفة وتستهدف منصات متعددة وتتناسب مع أنواع ومستويات ألعاب مختلفة، ويعتمد اختيار محرك الألعاب المناسب على متطلبات اللعبة التي تود تطويرها مثل نوع اللعبة، والمنصة التي تستهدفها، ونوع الجهاز الذي ستعمل عليه، وغيرها من العوامل. وإليك قائمة بأبرز محركات الألعاب: محرك الألعاب Unity Engine محرك الألعاب Unreal Engine محرك الألعاب Godot Engine محرك الألعاب GameMaker Engine محرك الألعاب Open 3D محرك الألعاب jMonkey Engine محرك الألعاب FrostBite لنتعرف بمزيد من التفصيل على كل محرك من بين هذه المحركات ونكتشف أبرز مميزاته وعيوبه. 1. محرك الألعاب Unity Engine محرك يونتي Unity Engine هو واحد من أشهر محركات الألعاب طورته شركة Unity Technologies لتصميم ألعاب فيديو متكاملة الوظائف ومتعددة المنصات، يتميز محرك ألعاب Unity بالمرونة وسهولة الاستخدام ويناسب مطوري الألعاب المبتدئين والخبراء على حد سواء، كما أنه يعمل على كافة أنواع الأجهزة سواء أجهزة الحاسوب أو الجوال أو وحدات تحكم الألعاب الأخرى ويتوافق مع مختلف أنظمة التشغيل، وهو خيار مثالي لبرمجة ألعاب الهواتف المحمولة وألعاب الويب وسطح المكتب خفيفة الحجم. كما يوفر محرك Unity العديد من الميزات والوظائف المضمنة التي تساعد المطورين في تصميم ألعاب احترافية، مثل منصة تطوير ثنائية وثلاثية الأبعاد لبرمجة الألعاب، وميزات اكتشاف الاصطدام والفيزياء المضمنة، وعرض رسومات الألعاب بشكل ممتاز حتى على الأجهزة ذات الجودة المنخفضة، كما يوفر متجر ألعاب خاص به Unity Asset Store ليتيح للمطورين إنشاء وبيع الألعاب ومحلقاتها ومواردها المختلفة مثل التأثيرات الصوتية والبصرية والبيئات ثنائية وثلاثية الأبعاد وغيرها من العناصر التي تحتاجها لتصميم وبرمجة ألعاب احترافية بسرعة وبأقل جهد. يتميز محرك ألعاب يونيتي Unity عن غيره من محركات الألعاب بأنه يستخدم عدة صناعات أخرى غير صناعة الألعاب مثل التصوير السينمائي والهندسة المعمارية وتصميم السيارات وغيرها من الصناعات، وهو متوفر بإصدار شخصي مجاني Unity Personal مخصص للأفراد والهواة والمؤسسات الصغيرة للمشاريع التي تدرّ أرباحًا تقل عن 200000 دولار سنويًا، وإصدار آخر احترافي Unity Pro تبلغ تكلفته الشهرية 185 دولار وتكلفته السنوية 2040 دولار -أثناء كتابة المقال- لكل مقعد أو مستخدم، مع فترة تجريبية مجانية مدتها 30 يومًا. وقد أعلنت شركة Unity Technologies مؤخرًا فرض رسوم جديدة على المطورين بداية من الأول من يناير 2024 لزيادة ربحيتها وبأنها ستتقاضى رسومًا من المطورين في كل مرة يتم فيها تنزيل ألعابهم أي أن الرسوم ستفرض على المطور إما عندما تتجاوز إيرادات لعبته مبلغ 200000 دولار سنويًا أو عندما يبلغ عدد مرات تثبيت لعبته 200000 تثبيت لكنها تراجعت سريعًا عن قرار فرض رسوم مقابل عدد مرات التثبيت بعد أن تعرضت لانتقادات واحتجاجات واسعة من قبل المطورين وصناع الألعاب الذين يستخدمون محرك الألعاب يونتي Unity، ووضحت أن القرار سيبطق على الإصدارات المستقبلية من المحرك فقط في حال اختار المطور تحديثه. من أشهر الألعاب المطورة باستخدام محرك ألعاب Unity نذكر: Pokémon Go Cuphead Angry Birds 2+ Temple Run Monument Valley Lara Croft Go Pillars of Eternity 2. محرك الألعاب Unreal Engine محرك ألعاب أن ريل Unreal Engine هو محرك تطوير ألعاب مفتوح المصدر طورته شركة Epic Games عام 1988وهو يستخدم لإنشاء مختلف أنواع الألعاب الإلكترونية متعددة المنصات، ويتميز بكونه سهل الاستخدام وموثق بشكل جيد وواضح حيث يوفر للمطورين مجموعة شاملة من الموارد والشروحات التعليمية التي تساعدهم على تعلم استخدام المحرك بسرعة، إلى جانب ذلك يوفر مكتبة ألعاب متنوعة يمكن للمطور أن يحمِّل ما يشاء منها من مصادر ويسرّع تطوير ألعابه. لا يستخدم محرك Unreal عادة في تصميم وبرمجة الألعاب البسيطة فهو يعتمد على لغة البرمجة C++ لإضافة المنطق للألعاب وهي لغة صعبة نسبيًا للمبتدئين، لذا يناسب هذا المحرك مطوري الألعاب المحترفين الذين يستفيدون من أدائه العالي في برمجة الألعاب الثقيلة الحجم ذات الرسومات المتقدمة القريبة للواقع، والألعاب متعددة اللاعبين، وألعاب الواقع الافتراضي VR وألعاب الذكاء الاصطناعي التي تتطلب الكثير من الموارد وتعمل عليها فرق تطوير كبيرة والتي تعرف باسم ألعاب AAA Games كما يستخدم كذلك في مجالات أخرى مثل صناعة السيارات حيث يساعد في إنشاء تصاميم ثلاثية الأبعاد مفصلة وتفاعلية للسيارات ومحاكاتها قبل البدء بتصنيعها مما يساعد في اختيار التصميم الأنسب. يمكن تنزيل محرك Unreal Engine واستخدامه بشكل مجاني والبدء باستخدامه لتطوير ألعابك الخاصة دون دفع أي تكاليف، لكنك ستدفع رسوم ملكية بنسبة تساوي 5% عندما تحقق لعبتك أرباح تزيد على مليون دولار. من أشهر الألعاب المطورة باستخدام محرك ألعاب Unreal نذكر: Fortnite PUBG Gears of War Mortal Kombat Borderlands Tetris Effect Yoshi's Crafted World 3. محرك الألعاب Godot Engine محرك الألعاب جودو Godot Engine هو برنامج مفتوح المصدر لتصميم الألعاب طوره المبرمجان الأرجنتينيان جوان لينيتسكي Juan Linietsky وأرييل مانزور Ariel Manzur عام 2014 بهدف تطوير محرك فعال ومرن يناسب المطورين المبتدئين والمحترفين على حد سواء ويسمح لهم بإنشاء وتخصيص ألعابهم بسهولة كبيرة، حيث يعتمد محرك ألعاب جودو على لغة البرمجة GDScript وهي لغة بسيطة وسهلة المقروئية تشبه في تركيبتها لغة بايثون python، كما يسمح للمطورين بكتابة منطق ألعابهم بلغات برمجة أخرى مختلفة مثل C++ أو C# أو روبي Ruby. يتضمن محرك ألعاب جودو العديد من الميزات أبرزها توفير بيئة تطوير ألعاب ثنائية وثلاثية الأبعاد، وأدوات لإنشاء وإخراج الرسومات وعرضها، ومحرر شيفرات مدمج، ومشغل للملفات الصوتية، ومحرك فيزياء، وغيرها من الميزات ضمن واجهة رسومية بسيطة وسهلة الاستخدام تعتمد السحب والإفلات، كما يدعم محرك ألعاب جودو منصات متعددة فهو يسمح بتصميم ألعاب متوافقة مع أنظمة ويندوز ولينكس وماك وأندرويد Android وآي أو إس iOS كما يسمح بتصدير الألعاب بصيغة HTML5 لتناسب الويب. يعتمد محرك الألعاب جودو على مفهوم العقد Nodes والمشاهد scenes، فاللعبة في جودو ليست سوى مجموعة من مشهد أو مجموعة من المشاهد وكل مشهد عبارة عن شجرة من العقد، تشكل العقد الوحدات أو اللبنات الأساسية لبناء اللعبة والعقدة هي كائن يمثل وظيفة ما فقد تعرض العقدة الرسومات، أو تشغل الرسوم المتحركة، أو تشغل صوت أو تمثل نموذجًا ثلاثي الأبعاد لكائن ما لذا تضاف العقد للعبة حسب الوظيفة التي تحتاجها، كما تحتوي العقدة على مجموعة من الخصائص لتخصيص سلوكها ويمكنك تجميع العقد ودمجها لإنشاء عقد أكبر وأكثر تعقيدًا. دورة تطوير الألعاب ابدأ رحلة صناعة الألعاب ثنائية وثلاثية الأبعاد وابتكر ألعاب ممتعة تفاعلية ومليئة بالتحديات. اشترك الآن يعد محرك ألعاب جودو المحرك المفضل للمطورين ذوي الميزانية المحدود الراغبين في دخول عالم تطوير الألعاب لكونه يوفر حلًا مجانيًا قويًا لإنشاء ألعاب احترافية، ولكونه محرك مفتوح المصدر فهو يملك مجتمع دعم نشيط يضم آلاف المطورين الذين يوفرون الكثير من الشروحات والدروس التعليمية والنصائح ومنتديات الدعم التي تساعدك في حال واجهتك أي مشكلة في تطوير ألعابك. من أبرز الألعاب المطورة باستخدام محرك ألعاب Godot: Kingdoms of the Dump Cruelty Squad Dome Keeper Cassette Beasts Luck Be a Landlord Commander Keen in Keen Dreams 4. محرك الألعاب GameMaker محرك جيم ميكر GameMaker هو محرك ألعاب طوره بالأساس مبرمج الألعاب الهولندي مارك أوفرمارس Mark Overmars وصدر لأول مرة في 15 نوفمبر عام 1999 تحت اسم Animo وكان في بدايته عبارة عن أداة رسومية بإمكانيات محدودة، وبعدها منذ عام 2007 تولت شركة تطوير البرمجيات YoYo Games وأدخلت عليه تحسينات كثيرة تحويل إلى محرك ألعاب مخصص لإنشاء الألعاب ثنائية الأبعاد يستهدف المبتدئين وغير التقنيين حيث يسمح لهم ببرمجة الألعاب بطريقة سهلة وسريعة دون الحاجة لكتابة أي كود برمجي من خلال واجهة رسومية سهلة الاستخدام، لكن بالطبع فإن امتلاك خلفية برمجية سيمكنك من استخدام المحرك بكفاءة أعلى وتطوير الألعاب بشكل أفضل. يملك محرك GameMaker لغة برمجة مضمنة خاصة به تسمى لغة GML تعتمد على لغات جافا سكريبت و C++ و C# التي يتم دمجها بطرق محددة وبالتالي إذا كان لديك أساس برمجي جيد في هذه اللغات سيكون من السهل عليك تعلم هذه اللغة. يتضمن GameMaker العديد من الميزات والوظائف المدمجة مثل محرر صور لإنشاء السبرايت sprites (وهي الرسومات أو النقوش المتحركة التي تظهر ضمن اللعبة) كما يتيح لك استيراد الصور المنشأة في محرر خارجي وتحويلها إلى كائنات ضمن اللعبة وإضافة إجراءات أو وظائف برمجية لها وهو يدعم عشرات أنظمة تشغيل ويندوز ولينكس وماك وأندرويد و iOS إلى جانب منصات الألعاب مثل بلاي ستيشن PlayStation وإكس بوكس Xbox وسويتش Switch وغيرها. يمكنك تحميل محرك الألعاب GameMaker مجانًا لكنك مجبر على الترقية لأحد الخطط المدفوعة إذا كنت ترغب في الاستفادة منه بشكل فعلي وتصدير ألعابك إلى منصات معينة، حيث تبدأ الخطط المدفوعة من 5 دولارات شهريًا يناسب محرك الألعاب GameMaker إنشاء وتطوير أنواع مختلفة من الألعاب مثل الألعاب الحركية من نمط أعلى لأسفل top-down action games وألعاب الألغاز، وألعاب فن البكسل Pixel Art. ومن أشهر الألعاب المطورة باستخدام المحرك GameMaker: Post Void Undertale Hyper Light Drifter Spelunky 5. محرك الألعاب Open 3D محرك أوبن ثري دي Open 3D أو اختصارًا O3DE هو محرك تطوير ألعاب ثلاثي الأبعاد مفتوح المصدر متكامل الميزات طورته مؤسسة Open 3D Foundation حيث يتيح للمطورين إنشاء ألعاب عالية الدقة AAA وعوالم ثلاثية الأبعاد عالية الدقة ذات جودة سينمائية وهو إصدار محدث من محرك ألعاب أمازون Amazon Lumberyard المشتق من محركها السابق CryEngine ويوزع بموجب ترخيص Apache 2.0 ويدعم محرك O3DE حاليًا نظامي التشغيل ويندوز ولينكس فقط. أطلق الإصدار الأولي من محرك الألعاب Open 3D في يوليو/تموز عام 2021 وصدر أول إصدار مستقر منه في 12 مايو/أيار عام 2022 ورغم حداثته إلا أنه تمكن من منافسة محركات الألعاب التقليدية مثل Unity وUnreal Engine فقد احتفظ بأفضل مميزات المحرك Amazon Lumberyard وأضاف له العديد من المميزات مثل واجهة مستخدم قابلة للتوسيع وحزم برمجية جاهزة والعديد من المميزات والمكونات التي يمكن أن تختار ما تحتاج منها وتضيفه للعبتك دون الحاجة لتضمين المكونات غير الضرورية. يدعم Open 3D Engine لغات البرمجة C++ وبايثون Python ولوا Lua وهو مجاني بالكامل ولا يتطلب دفع أي رسوم أو التزامات تجارية كما يتضمن العديد من الميزات مثل عارض متعدد المنصات يسمى Atom يمكن توسيعه ليناسب متطلبات لعبتك ودعم المحاكاة الفيزيائية لإضافة الواقعية إلى عناصر اللعبة، كما يوفر أسلوبين لإضافة المنطق لألعابك إما من خلال واجهة مرئية تسمى Script Canvas أو من خلال لغة برمجة سريعة وخفيفة الوزن تسمى Lua ورغم أن شعبيته لاتزال أقل من غيره من محركات الألعاب نظرًا لحداثته إلا أنه ينبئ بمستقبل واعد. لازال محرك O3DE حديث العهد وعدد الألعاب المطور باستخدامه محدود ومن أشهر الألعاب المطورة باستخدام O3DE نذكر: Deadhaus Sonata Planet Survival Game Planet Storm 6. محرك الألعاب jMonkeyEngine jMonkeyEngine أو ما يعرف اختصارًا بـ jME هو محرك مفتوح المصدر يعتمد على لغة البرمجة جافا Java يستخدم لتطوير الألعاب ثلاثية الأبعاد طور الإصدار الأول منه Mark Powell عام 2003 وبعدها ساهم عدد كبير من الأشخاص بشكل كبير في تطوير هذا المحرك، والإصدار الحالي منه هو 3.6. يتميز محرك jMonkeyEngine بسهولة استخدامه وملائمته للمبتدئين توثيقه الجيد، والميزة المهمة هي أنه محرك متعدد المنصات يمكن استخدامه لتصميم ألعاب تعمل على مختلف المنصات وأنظمة التشغيل مثل ويندوز Windows ولينكس Linux وماك macOS وراسيبيري باي Raspberry Pi وأندرويد Android و آي أو إس iOS لكنه يتطلب وجود معرفة برمجية لتسهيل تطوير الألعاب. يستخدم هذا المحرك مكتبة Lightweight Java Game Library أو اختصارًا LWJGL بشكل افتراضي لإخراج الرسومات وعرضها ويتطلب تثبيته على جهازك وجود بطاقة فيديو متوافقة مع OpenGL 2 وتثبيت عُدة تطوير جافا بإصدار JDK 6 أو أعلى. يتميز محرك ألعاب jMonkeyEngine بسهولة استخدامه وتعلمه لذا فهو يستخدم من قبل العديد من المؤسسات التعليمية واستوديوهات الألعاب التجارية، ومن أشهر الألعاب المطورة باستخدامه: Skullstone Mythruna Boardtastic 2 Lightspeed Frontier 3079 3089 7. محرك الألعاب Frostbite فروست بايت Frostbite هو محرك ألعاب مكتوب بلغة C++ و C# طورته شركة DICE الشهيرة ثم استحوذت عليه شركة Electronic Arts لاستخدامه في تطوير ألعابها أي أنه محرك داخلي غير مرخص للعامة ومخصص حصريًا لتطوير ألعاب Electronic Arts لكننا ذكرناه لشهرة الألعاب المطورة باستخدامه وخصيصًا الألعاب المعتمدة على مبدأ إطلاق النار من منظور الشخص الأول First-person shooter أو اختصارًا FPS ومن أبرزها لعبة كرة القدم فيفا كما يمكن تشغيل الألعاب المطورة باستخدامه على نظام التشغيل ويندوز وأجهزة بلاي ستيشن 3 وبلاي ستيشن 4 وأجهزة Xbox 360 و Xbox one. يوفر محرك Frostbite العديد من الميزات من بينها محرك فيزياء ومحرك رسومات قادر على عرض رسوم متحركة عالية الجودة وتوفير صوت HDR يغير مستوى المؤثرات الصوتية داخل اللعبة ويركز على الأصوات الأكثر أهمية، مثل أصوات إطلاق النار وسير المركبات الأمر الذي يجعل الألعاب نابضة بالحياة وقريبة للواقعية. ومن أشهر الألعاب المطورة باستخدام محرك Frostbite نذكر: سلسلة ألعاب FIFA سلسلة ألعاب Star wars سلسلة ألعاب Battlefield Need For Speed Army of Two الخلاصة تعرفنا في مقال اليوم على أهم محركات الألعاب أو البرامج المستخدمة في تصميم وتطوير الألعاب وتعرفنا على أبرز مميزاتها ولغات البرمجة التي تستخدمها والمنصات والبيئات التي تدعمها، لتختار من بينها البرنامج المناسب لميزانيتك ومتطلبات لعبتك ومستوى خبرتك البرمجية وابدأ رحلة إنشاء الألعاب فهي مجال ممتع ومجزي بذات الوقت. اقرأ أيضًا تعرف على أشهر لغات برمجة الألعاب برمجة لعبة متاهة باستخدام محرك يونيتي Unity نبذة عن صناعة الألعاب ومحرك Unity3D مدخل إلى صناعة ألعاب المتصفح1 نقطة
-
لقد ثبت مكتبة virtualenv بنجاح و قمت بتفعيله لكن عند كتابه امر pip freeze تظهر لي كل المكتبات المثبته على الجهاز ما الحل؟1 نقطة
-
السلام عليكم عندي مشكلة عدم ظهور الصورة في اي متصفح chrome او Edge او firefox عن طريق الكود ;background: url('/pic/pimg.jpg') no-repeat ولكن تظهر فقط عندما اعرض عن طريق إضافه live server على VScode كما هو موضح بالصورة واذا ابعدت السلاش / من بدايه مكان كتابه موقع الصور لاتظهر ايضاَ عن طريق الاضافه ،، وهناك مشاكل اخرى بعدم ظهور بعض البيانات اذا لم استخدم الاضافه مع العلم انني حذفت VScode واعدت تثبيته وحدتث متصفح chrome ولم تنحل المشكلة رجاءاَ افيدوني تعبت منهها1 نقطة
-
السلام عليكم اريد فضلا مساعدة في كود سكريبت كاتالي عندما ينقر المستخدم على زر المطالبة، ستتم إعادة توجيهه إلى رابط قصير(shortlink)، ولن يحصل على مكافأة إلا إذا أكمل الرابط القصير ..بعدها يحصل الزائر على مكافئة عملة الكترونية و تحويل من faucetpay الى faucetpay الزائر تلقائيا1 نقطة
-
يوجد عندي عدة ملفات احتاج طريقة اقوم بعرض صور للمستخدم مثلا وعند الضغط على الصورة يقوم ب فتح الملف الطرق التي قمت بتجريبها تقليدية. بالاضافة الى خاصية على الملفات لمنع المستخدم من تحميل جميع الملفات مثال(يوجد 5 ملفات فقط يستطيع تحميل ملف او 2 ) الباقي يقوم بتصفحه بشكل عادي وفي حال وجود مثال او تطبيق لما ذكرته سابقا ارجو ان يتم ارفاقه وشكرا1 نقطة
-
السلام عليكم اريد شرح كتابي تفصيلي مع الامثله لأستخدام المعامل الفارغ الامن Null Safe Operator في لغة php شكرا لكم .1 نقطة
-
1 نقطة
-
قد يكون ذلك بسبب نوع الملف الذي تحاول تشغيله. على كلٍ يجب ان يكون بإمكانك تشغيله عبر النقر على go live في الشريط السفلي ل vs code في حال لم يظهر هذا الزر فربما يفيد اعادة تشغيل البرنامج والمحاولة مرة ثانية.1 نقطة
-
1 نقطة
-
هل إذا اشتركت أحصل على كل دوارات او أحصل على دوارت لي اخترته1 نقطة
-
هل يمكنك مشارك تفاصيل أكثر؟ مثلاً هل تستعمل بيئة افتراضية؟ ما هو اسمها في حال كان ذلك صحيح؟ و قم بتصوير لقطة كاملة للشاشة حتى يمكننا رؤية مختلف الإعدادات، كالتي سبق و أخبرتك عنها.1 نقطة
-
انا فعلت ذالك بالفعل ’ولكن تظهر نفس المشكله1 نقطة
-
هناك بعض المجالات المتقدمة في البرمجة التي تشتمل على مفاهيم رياضية أكثر تعقيدًا. على سبيل المثال، في علوم البيانات والذكاء الاصطناعي، قد تحتاج إلى فهم الاحتمالات والإحصاء والجبر الخطي لتنفيذ بعض الخوارزميات وتحليل البيانات. وفي العمليات الرياضية والمحاكاة، قد تحتاج إلى استخدام المعادلات التفاضلية أو الجبر الخطي المتقدم. لكن في معظم الحالات، يمكن للمطورين تنفيذ معظم المشاريع البرمجية بنجاح دون الحاجة إلى مستوى متقدم في الرياضيات. الأهم هو فهم مفاهيم البرمجة والتمكن من استخدام الأدوات والتقنيات المناسبة لحل المشاكل البرمجية. فمثلاً كمطور ويب، لا تحتاج بشكل عام إلى مستوى متقدم في الرياضيات. عند تطوير مواقع الويب، يتم التركيز على مفاهيم البرمجة وتقنيات الويب بدلاً من المفاهيم الرياضية المتقدمة. ومع ذلك، يمكن أن يكون لبعض المفاهيم الرياضية تطبيقات في مجالات محددة في تطوير الويب. على سبيل المثال، في تصميم وتطوير ألعاب الويب أو تطبيقات الرسومات ثلاثية الأبعاد، قد تحتاج إلى مفاهيم رياضية مثل الهندسة الرياضية والجبر الخطي. لذلك، إذا كنت مبتدئًا في البرمجة وتشعر بالقلق بشأن المستوى المطلوب من المعرفة الرياضية، فلا تقلق. يمكنك البدء بتعلم الأساسيات وتطوير مهاراتك البرمجية بدون الحاجة إلى معرفة رياضية متقدمة. ومع مرور الوقت، يمكنك استكشاف المجالات التي تهمك وتعلم المفاهيم الرياضية اللازمة في حالة الحاجة إليها.1 نقطة
-
وعليكم السلام، Zoho واحدة من الشركات المعروفة بتقديم حلول متكاملة لأعمال الويب، بما في ذلك خدمات استضافة الدومين والبريد الإلكتروني والتسويق عبر البريد الإلكتروني والكثير من التطبيقات الأخرى. بخصوص الإيميل، فهي تقدم خدمات تسمى "Zoho Mail" و "Zoho Campaigns" تتيح لك القيام بذلك. هذه الخدمات لديها واجهات سهلة الاستخدام وتقدم العديد من الميزات المفيدة لأصحاب المواقع. لم أستعمل Zoho لهذا الخصوص، كنت قد استعملتها فيما مضى مع فريق في إدارة أحد المشاريع البرمجية وفي إدارة Scrum sprints وكانت تجربة الإستخدام ممتازة. أرجح أنها مثل ذلك أو أكثر في غيرها من تطبيقاتها.1 نقطة
-
إعادة فتح برنامج VSCode بعد تثبيت الحزمة التي ترغب في استيرادها قد يحل المشكلة في بعض الأحيان. هذا ينطبق عند استخدامك للبيئة العامة (البيئة الأساسية لـ Python) خارج أي بيئة افتراضية. إذا كنت تستخدم بيئة افتراضية (venv)، يجب على Plycance Language Server اكتشاف الحزم المثبتة تلقائيًا بعد تثبيتها. في هذه الحالة، ليس من الضروري بالضرورة إعادة فتح برنامج VSCode.لذلك إذا كنت تستخدم بيئة افتراضية (venv) يمكنك تجربة الحلول السابقة من الجدير بالذكر أن التأكد من تحديد المفسر الصحيح لـ Python وضبط المسار الصحيح لـ Python في إعدادات برنامج VSCode1 نقطة
-
إذا كنت تواجه مشكلة عدم العثور على مكتبة Pygame في مشروع Python، تأكد أولاً من أنك قمت بتثبيت مكتبة Pygame على نظامك. يمكنك استخدام مدير الحزم pip للقيام بذلك. يمكنك تنفيذ الأمر التالي في سطر الأوامر: pip install pygame إذا كنت تستخدم بيئة افتراضية (virtual environment) لمشروعك، تأكد من أنك قمت بتفعيل البيئة الافتراضية قبل تثبيت Pygame وتشغيل مشروعك أو في بعض الأحيان، يمكن أن يتسبب محرر النصوص الذي تستخدمه في عرض رسائل خطأ خاطئة أو عدم التعرف بشكل صحيح على المكتبات. جرب إعادة تشغيل محرر النصوس أو استخدم محرر نصوس آخر وتأكد من تحديثه.1 نقطة
-
نعم هناك فرق بين الإطارين Laravel و Symfony، كلاهما يُعتبر إطار عمل للُغة PHP، إطار Symfony ظهر أولاً تم إطلاق أول إصدار منه سنة 2005 أما Laravel فتم إطلاق أول إصدار منه سنة 2011. يركز Laravel على بساطة الكود بالنسبة للمطور (للوصول إلى الحل ببساطة) والذي يمر عبر استخدام التوابع السحرية لـ PHP من أجل تقديم كود مقروء مقارب لللغة الإنجليزية. يفرض Symfony صرامة أكبر وهو أقرب إلى كود PHP الكلاسيكي (باستثناء إعدادات yaml)، وبالتالي فهو أكثر تفصيلًا بشكل عام. يسمح استخدامه المنخفض للتوابع السحرية بالتنقل بشكل أفضل في الكود والتحليل الثابت المبسط. إختيار أحدهما على الآخر يرجع للسوق، متطلبات العمل أو المشروع، الخيار الشخصي أيضاً، كلاهما يُمكننا من إنشاء تطبيقات و مشاريع متوسطة التعقيد إلى معقدة، أيضاً كلاهما يوفر السرعة و الأداء الجيد بالإضافة للحماية و الأمان و مجموعة من الأدوات المساعدة في التطوير. إطار Laravel يستخدم بذاته بعض المكونات من Symfony حتى لا يكرر العجلة التثبيت: في كلا الإطارين، يمكن إجراء التثبيت من خلال أمر create-project الخاص بـ composer: # Laravel composer create-project laravel/laravel example-app # Symfony composer create-project symfony/skeleton:"6.3.*" my_project_directory cd my_project_directory composer require webapp يتطلب Symfony عدة أوامر لأنه يُنشئ مشروع في وضع "microservice" إفتراضيًا، و يُضمن الحد الأدنى من المكونات فقط. يسمح لك أمر composer require webapp بتثبيت جميع المكونات اللازمة لإنشاء تطبيق ويب كلاسيكي. نلاحظ أيضًا أن الإطارين يشتملان على أمر (laravel لـ إطار Laravel وsymfony لـ إطار Symfony) يمكن استخدامهما للتحكم في إطار العمل وتنفيذ مهام معينة (تهيئة مشروع على سبيل المثال). هيكلية ملفات المشروع: تتشابه هيكلية الملفات في الإطارين مع وجود مجلد public والذي سيكون بمثابة جذر خادم HTTP. يتم وضع الشيفرات المصدرية للمشروع في مجلد src بالنسبة لـ Symfony و app في حالة Laravel. في كلا الإطارين ستوضع الإعدادات في مجلد بالإسم config مع الاختلاف الرئيسي وهو التنسيق المستخدم في الملفات. يستخدم Laravel ملفات PHP تُرجع مصفوفات يستخدم Symfony ملفات yaml بشكل افتراضي كلاهما يعتمد على نمط التصميم MVC المسارات: الآن بعد أن تم تثبيت الإطارات، سنكون قادرين على إنشاء المسار الأول لإنشاء الصفحة. في حالة Laravel نبدأ بإنشاء المتحكم، يمكن إنشاء المتحكم يدوياً أو عن طريق أوامر artisan المساعدة: لإنشاء متحكم عبر artisan نكتب: php artisan make:controller HelloController ثم نستطيع وضع الوظائف بداخله: <?php namespace App\Http\Controllers; class HelloController extends Controller { public function hello() { return 'Hello'; } } ثم نعلن عن المسار الذي يسمح بالوصول إلى الوظيفة: // routes/web.php Route::get('/hello', [HelloController::class, 'hello'])->name('hello'); من ناحية Symfony، من الممكن الإعلان عن المسارات من خلال السمات الموجودة في المتحكم مباشرةً. الأوامر الموافقة لـ artisan في Symfony هي أوامر bin/console فلإنشاء متحكم في Symfony نقوم بتنفيذ: php bin/console make:controller HelloController ثم نستطيع وضع الوظائف بداخله: <?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Routing\Annotation\Route; class BlogController extends AbstractController { #[Route('/hello', name: 'hello')] public function hello(): Response { return new Response('hello'); } } و كما تلاحظ فإن المسار يأتي مضمناً كسمة فوق الوظيفة التعامل مع الطلبات: بالنسبة لكلا الإطارين، من الممكن حقن وسيط في وظائف المتحكم للتعامل مع الطلب: public function hello(Request $request): Response { dd($request->query->get('name')); } لاحظ أن كائن الطلب الموجود في Laravel يرث من صنف الطلب الموجود في Symfony ليقدم طرقًا أسرع لتنفيذ العمليات الأساسية. التعامل مع مُعاملات المسارات: بالإضافة إلى معالجة الطلب، من الممكن أيضًا تمرير معاملات في عنوان ال URL. بناء الشيفرة والتشغيل متشابه في الإطارين: # Laravel Route::get('/hello/{name}', [HelloController::class, 'hello']); # Symfony #[Route('/hello/{name}')] يمكننا بعد ذلك الوصول لهذا المعامل في المتحكم كوسيط في الوظيفة: public function hello(string $name) { } محرك القالب: لعرض صفحات HTML سيكون من الممكن استخدام محرك قوالب، وعند هذه النقطة يظهر فرق بين الإطارين يستخدم Symfony محرك القوالب twig الذي يستخدم syntax خاص به مثال: {% extends "base.html.twig" %} {% block title %}Page Title{% endblock %} {% block sidebar %} {{ parent() }} <p>This is appended to the master sidebar.</p> {% endblock %} {% block content %} {% for post in posts %} <article> <h2>{{ post.title }}</h2> <p>{{ post.excerpt }}</p> <p><a href="{{ path('post.show', {slug: post.slug}) }}">Read more ...</a></p> </article> {% endblock %} يستخدم Laravel محرك قوالب خاص بإطار العمل: Blade. يقوم هذا المحرك بتوسيع ال syntax الخاص بـ PHP بميزات جديدة ولكنه يقبل أيضًا كود PHP صالح. مثال: @extends('layouts.app') @section('title', 'Page Title') @section('sidebar') @parent <p>This is appended to the master sidebar.</p> @endsection @section('content') @foreach($posts as $post) <article> <h2>{{ $post->title }}</h2> <p>{{ $post->excerpt }}</p> <p><a href="{{ route('post.show', ['slug' => $post->slug]) }}">Lire la suite</a></p> </article> @endforeach @endsection .لاحظ أن Blade يوفر نظامًا من المكونات تسمح لك بتضمين جزء من القالب باستخدام syntax أقرب إلى HTML: <form method="post"> <x-input :value="$post->title" label="Title"> </form> الإستمارات: إحدى المهام المتكررة عند العمل على الواجهة الخلفية هي إنشاء النماذج ومعالجتها. في Symfony، يمر إنشاء الإستمارة عبر صنف مخصص يسمح لنا بتمثيل البيانات في الإستمارة الخاصة مع إمكانية إضافة قواعد التحقق من الصحة إلى الخصائص باستخدام سمات PHP. في Laravel لا يوجد فئة لتمثيل الإستمارة، ولا لتوليد الإستمارة. في شيفرة القالب الخاصة بنا، سنقوم بإنشاء الإستمارة الخاص بنا بالطريقة الكلاسيكية (يمكننا استخدام التضمينات أو المكونات لتبسيط كتابة الحقول). ORM: يعد ORM أيضًا نقطة اختلاف كبيرة بين الإطارين. يستخدم Laravel بشكل افتراضي Eloquent وهو ORM يعتمد على Active Record حيث يكون النموذج مسؤولاً عن تمثيل الكيان، ولكن أيضًا عن إدارة البيانات من خلال الجدول الموافق في قاعدة البيانات. // get $post = Post::find(1); // update $post->title = "Title 1"; $post->save(); // create $post2 = Post::create(['title' => 'Title 2']); // delete $post3->destroy(); يستخدم Symfony بشكل افتراضي Doctrine وهو ORM يعتمد على مبدأ Data Mapper حيث يقوم بفصل مفهوم الكيان (كائن يمثل البيانات)، والمستودع Repository (كائن يستخدم لاسترداد الكيانات) والمدير Manager (كائن مسؤول عن إدارة البيانات). $em = $this->getDoctrine()->getManager(); // Entity Manager // get $post = $em->getRepository(Post::class)->find(1); // update $post->setTitle('Title 1'); // create $post2 = new Post(); $post2->setTitle('Title 2'); $em->persist($post2); // delete $em->remove($post3); // وفي جميع الحالات لا يتم إرسال البيانات إلى قاعدة البيانات // للقيام بذلك، يجب عليك استدعاء التابع flush $em->flush(); يمتلك Eloquent جمل أقصر ومنطقًا يبدو أكثر طبيعية، ولكن هذه البساطة الواضحة يمكن أن تؤدي إلى "نماذج كبيرة" لأنه سيتم تخزين كل المنطق في مكان واحد. بينما يسمح Doctrine بفصل أفضل ولكن سيتبين أنها مطولة نسبيًا في الحالات البسيطة. المصادقة: بالنسبة للمصادقة، يقدم Laravel "مجموعات بدأ" تسمح لنا بإعداد جميع عمليات إدارة حساب المستخدم الكلاسيكية. مثل Jetstream و UI بالإضافة إلى Breeze ستقوم هذه المجموعات بتوليد النماذج Models و المتحكمات بالإضافة لملفات القوالب اللازمة، مثلاً عند إستخدام Breeze: php artisan breeze:install php artisan migrate npm install npm run dev سيتم إنشاء الكود في مجلد التطبيق الخاص بك ويمكنك تعديله لإضافة السلوك الذي تريده عن طريق تعديل الكود المصدري. لدى Symfony، من جانبها، مكون أمان يقوم بإدارة المصادقة: php bin/console make:user php bin/console make:auth php bin/cinsole make:registration-form سيسمح لك تشغيل هذه الأوامر بتكوين إعداد المصادقة. من ناحية أخرى، ما يتم تقديمه افتراضيًا هو أقل بكثير مقارنة بـ Laravel وستحتاج إلى تطوير قسم تذكير كلمة المرور وتحرير الحساب وحذفه و ما إلى ذلك. نفس القلب: حاوية الخدمة Service Container: على الرغم من وجود نهج مختلف من حيث الأساليب المقدمة، إلا أن الإطارين يحتويان على نفس نظام حاوية الخدمة لتوصيل المكونات المختلفة معًا. إذا أردنا على سبيل المثال توليد صفحة: // laravel view('posts.index'); // نقوم بإستدعاء دالة عامة // Symfony $this->render('posts/index.html.twig') // نقوم بإستدعاء تابع من المتحكم على الرغم من الاختلاف الكبير بين الطريقتين، إلا أن هاتين الطريقتين تنفذان تعليمات برمجية متشابهة نسبيًا إذا نظرنا إلى ما هو مخفي خلفهما: // Laravel // view('posts.index'); Container::getInstance()->get('view')->make('posts/index'); // Symfony // $this->render('posts/index.html.twig') $this->container->get('twig')->render('posts/index.html.twig') في كلتا الحالتين، سيبدأ الإطار بإنشاء حاوية سيتم ملؤها بعد ذلك بخدمات مختلفة يمكن استرجاعها بعد ذلك وفقًا للاحتياجات داخل التطبيق. يختلف Laravel عن Symfony في أنه يجعل الحاوية قابلة للوصول في أي مكان في التطبيق بفضل استخدام Singleton، حيث سيفرض Symfony صرامة أكبر من خلال إجبار المستخدم على تحديد التبعيات من خلال ملف services.yml.1 نقطة
-
من الأفضل دائمًا إنشاء بيئة إفتراضية لكل مشروع تقوم بإنشاؤه لتجنب مثل تلك المشاكل وأيضًا تجنب تعارض بين إصدارات الحزم المثبتة بشكل عالمي. وقد يكون لديك أكثر من إصدار بايثون مثل إصدار 3.9 وإصدار 3.11 مثلاً، لذلك عند تثبيت مكتبة يتم تثبيتها في النسخة الأحدث وهي 3.11، وعند استخدام مترجم 3.9 مثلاً في محرر الأكواد vsocdeأو غيره كما أشار لك قيس، ستجد أن المكتبة غير مثبتة. والحل هو إما بإختيار مترجم بايثون الصحيح في محرر الأكواد والذي تم به تثبيت المكتبة، أو إنشاء بيئة إفتراضية venv أو pipenv وثتبيت المكتبات اللازمة، أو تثبيت المكتبة في مترجم بايثون الحالي من خلال الأمر التالي: pip install pygame1 نقطة
-
لا يوجد وقت معين للإنتهاء من الدورة فهي متاحة لك مدى الحياة، وأيضًا بإمكانك دخول الإمتحان أكثر من مرة لحين إجتيازه لكن من الأفضل الاستعداد لكي تجتازه من المرة الأولى حفاظًا على وقتك وجهدك. وبخصوص الإنقطاع ثم العودة للدراسة، فلا مشكلة في ذلك في حال وجود ما يمنعك، أما إذا كان تكاسلاً فنصيحتي إليك أنت المتضرر في النهاية، حيث ستعود للدارسة من البداية تقريبًا، ونعم ستتذكر بعض الأشياء لكن في الغالب ستنسى ما درسته. وستصاب بالملل والإحباط، لذلك اعمل على وضع خطة دراسة للإنتهاء من الدورة في وقت معين مع عدم الإسراع لإنهائها بل خذ وقت كافي للدراسة والاستيعاب والبحث والتطبيق وتنفيذ المشاريع، وذلك بشكل مستمر ففي البداية أنت بحاجة إلى الاستمرارية من أجل تثبيت ما تعلمته، وهنا نقاش سيفيدك:1 نقطة
-
لا يؤثر أبدا فقط كل ما عليك هو الانتهاء من الدورة بأي وقت و من ثم تقديم طلب إجراء الامتحان من خلال مركز المساعدة من هنا .1 نقطة
-
تتنوع لغات البرمجة وتتعدد استخداماتها لتناسب التخصصات البرمجية المختلفة، فبعض لغات البرمجة تفيد لتكون لغات برمجة ألعاب أكثر من غيرها، وبعضها الآخر يناسب تطوير التطبيقات، ومنها ما يلائم الذكاء الاصطناعي، وبعضها ينفع لتحليل البيانات أو الويب، فلكل تخصص برمجي لغات وتقنيات خاصة به، وفي مقال اليوم سنركز على لغات برمجة الألعاب. فإذا كنت ترغب في تعلم برمجة الألعاب، وتتساءل ما هي أفضل لغات برمجة الألعاب يمكنك تعلمها وما هي أبرز مميزاتها، وما الوظائف والمكتبات والأدوات المساعدة التي توفرها لمطوري الألعاب وما الخطوات الصحيحة لبرمجة الألعاب؟ فهذا المقال لك. ما هي برمجة الألعاب؟ برمجة الألعاب هي عملية تحويل الألعاب من فكرة مجردة إلى برنامج أو تطبيق يمكنك اللعب به على أحد المنصات وذلك باستخدام أدوات وتقنيات مساعدة كبرامج التصميم ومحركات الألعاب، أو باستخدام لغات البرمجة في حال رغبت بتطوير لعبتك من الصفر وهذا صعب جدًا وخاصة في الألعاب المتقدمة. تمر برمجة الألعاب عادة بمجموعة من المراحل تشمل: كتابة فكرة اللعبة وشخصياتها وطريقة اللعب وقواعد الربح والخسارة. التخطيط للعبة وكتابة سيناريو اللعبة وطريقة اللعب بها والموارد اللازمة لتنفيذها ونمط رسوماتها والجمهور المستهدف منها والمنصة المستهدفة التي ستعمل عليها. البدء ببرمجة اللعبة وتنفيذ فكرتها باستخدام الأدوات والتقنيات المناسبة كمحركات الألعاب وبرامج تصميم الرسومات ولغات البرمجة. اختبار اللعبة والتأكد من أنها تعمل بشكل صحيح وإصلاح أي أخطاء أو عيوب إن وجدت. نشر اللعبة على المنصة المستهدفة سواء الحاسوب أو الجوال أو الويب أو بلاي ستيشن PlayStation أوإكس بوكس Xbox أو غيرها. صيانة اللعبة ودعمها وتحديثها وتحسينها بصورة مستمرة وإصلاح أي مشكلات تظهر لاحقًا. يمكن أن يقوم شخص واحد بكل هذه المهام في حال برمجة الألعاب البسيطة، لكن في حال برمجة الألعاب الاحترافية المتكاملة التي تمتلك بيئة ضخمة وعدة شخصيات وأحداث وقواعد فهذه تعمل عليها فرق عمل تضم مبرمجين ومصممي رسوميات ومهندسي صوت وكتاب وغيرهم. ما أفضل لغات برمجة الألعاب؟ هناك العديد من لغات برمجة الألعاب، ومن أبرز هذه اللغات: C++ C# Java Python HTML JavaScript Lua Swift لنتناول بمزيد من التفصيل كل لغة من هذه اللغات وأهميتها في برمجة الألعاب ونكتشف أبرز الألعاب المطورة باستخدامها. 1. لغة برمجة C++ تعد لغة C++ من أشهر لغات برمجة الألعاب فهي لغة قوية وسريعة تدعم عرض الرسومات المعقدة ومعالجة كمية كبيرة من البيانات، كما توفر العديد من أدوات تصحيح الأخطاء التي تكتشف المشكلات البرمجية وتساعد على تحسين أداء التطبيقات المطورة باستخدامها. وهي لغة منخفضة المستوى فهذا يجعلها أقرب إلى طبقة العتاد ويساعد المطورين على برمجة ألعاب سريعة وعالية الأداء تستفيد من موارد الجهاز بالشكل الأمثل كما أنها لغة برمجة كائنية التوجه OOP فهي تمكن المطورين من تنظيم التعليمات البرمجية ضمن مكونات قابلة لإعادة الاستخدام وسهلة الصيانة. ومن المميزات البارزة للغة C++ أنها اللغة التي يستخدمها محرك الألعاب الشهير Unreal Engine كما تدعمها معظم محركات الألعاب الأخرى مثل Godot و CryEngine و Source، كما أنها لغة قابلة للتشغيل عبر منصات متعددة وتملك مجتمع دعم كبير عبر الإنترنت وتوفر الكثير من المكتبات والأطر المساعدة في مجال تطوير الألعاب، لكنها لغة صعبة التعلم لذا لا يفضلها المطورون المبتدئون في برمجة الألعاب. ومن أشهر الألعاب التي طورت باستخدام لغة C++ نذكر لعبة Counter Strike و World of Warcraft و King Quest. 2. لغة برمجة C# تتميز لغة C# بكونها واحدة من أشهر لغات برمجة الألعاب فهي لغة برمجة قوية وكائنية التوجه oop طورتها مايكروسوفت كجزء من إطار عمل دوت نت NET. وهي توفر الكثير من المزايا المتقدمة وتتيح للمبرمج الألعاب التحكم في موارد الجهاز كما توفر مجموعة كبيرة من المكتبات والأدوات اللازمة لتطوير التطبيقات المختلفة، وتتوافق لغة C# مع محرك الألعاب الشهير Unity Engine وهو محرك ألعاب شائع يفضله العديد من مطوري الألعاب ويمكن استخدامها مع محركات ألعاب أخرى مثل محرك Unreal Engine ومحرك Godot. تعد لغة C# من اللغات الملائمة جدًا لبرمجة وتطوير الألعاب فهي تتشابه في ميزاتها مع لغة C++ في السرعة والفعالية لكنها أبسط وأسهل منها في التعلم والاستخدام، ورغم كونها لا توفر نفس مستوى التحكم الدقيق بالعتاد الذي توفره لغة C++ لكنها لغة شائعة في برمجة الألعاب وتسمح للمطورين بالتركيز على إنشاء ألعاب عالية الجودة دون الغوص في تفاصيل فنية معقدة. ومن أشهر الألعاب المطورة باستخدام C# نذكر لعبة Stardew Valley و HearthStone و Cuphead و Dead Island. 3. لغة Java تعد لغة جافا Java من أشهر لغات البرمجة متعددة الأغراض وهي تستخدم في العديد من المجالات ومن ضمنها استخداماها في برمجة الألعاب، ومن أبرز مميزات لغة جافا هو كونها لغة سهلة التعلم وتدعم ميزات تساعد على زيادة سرعة وكفاءة البرامج مثل تعدد الخيوط threads والمعالجة على التوازي، كما توفر مكتبات وأطر تطوير ألعاب قوية مثل libGDX للألعاب ثنائية الأبعاد و jMonkeyEngine للألعاب ثلاثية الأبعاد، ويمكن تشغيل الألعاب المطورة باستخدامها على العديد من المنصات بفضل ميزة آلة جافا الافتراضية JVM. قد لا تكون لغة جافا شائعة في مجال صناعة الألعاب مثل C++ أو C# لكن العديد من الألعاب الكبيرة متعددة المنصات مثل ماين كرافت Minecraft الشهيرة لا تزال تستخدمها، ومن أشهر الألعاب المطورة باستخدامها Star Wars Galaxies و Runescape و Powder Game و Roboforge. 4. لغة Python لغة البرمجة بايثون Python هي لغة برمجة متعددة الأغراض وسهلة التعلم تناسب العديد من التطبيقات وتوفر العديد من المكتبات، وهي تستخدم أيضًا في مجال برمجة وتطوير الألعاب حيث توفر العديد من مكتبات الرسومات الأساسية والشبكات والصوت التي تساعد مطوري الألعاب وتسهل عملهم مثل مكتبة PyGame و Pyglet و Kivy و PANDA3D، كما أن لغة GDScript المستخدمة في محرك ألعاب جودو Godot تتشابه كثيرًا مع لغة بايثون وبالتالي فإن تعلم بايثون سيسهل البدء في إنشاء ألعاب باستخدام محرك الألعاب جودو Godot. دورة تطوير الألعاب ابدأ رحلة صناعة الألعاب ثنائية وثلاثية الأبعاد وابتكر ألعاب ممتعة تفاعلية ومليئة بالتحديات. اشترك الآن فإذا كنت تبحث عن لغة برمجة ألعاب بسيطة سهلة التعلم وذات شهرة كبيرة وتملك مجتمعًا كبيرًا ونشطًا عبر الإنترنت فإن لغة بايثون Python خيار مناسب للحصول على نتائج سريعة، لكن لغة بايثون لا تتحكم في العتاد أو إدارة الذاكرة بنفس كفاءة لغة C++ وهي أبطأ من لغات البرمجة الأخرى لذا فهي لا تناسب الألعاب عالية الأداء. ومن الألعاب المشهورة التي طورت باستخدام لغة بايثون نذكر World of Tanks و Battlefield 2 و Civilization IV و Vega Strike. 5. لغة HTML تستخدم لغة HTML بشكل أساسي في إنشاء صفحات الويب ويجب استخدامها إلى جانب لغة CSS ولغة جافا سكريبت -وهي الثلاثي الذهبي للويب- كإحدى لغات برمجة الألعاب وبشكل خاص ألعاب المتصفحات المتوافقة مع مختلف المنصات، حيث تعمل الألعاب المبنية باستخدام HTML على كل الحواسيب الشخصية والجوالات والأجهزة اللوحية وأجهزة التلفزيون الذكية أي أينما وُجد متصفح ويب. ولا تزال ألعاب المتصفح مطلوبة بشدة بالرغم التقدم الهائل في تقنيات وأدوات تصميم الألعاب ومن أشهر الألعاب المطورة باستخدام HTML نذكر A Grain of Truth و Dune 2 و RowserQuest و Cookie Clicker. 6. لغة برمجة JavaScript تعد لغة جافا سكريبت JavaScript من لغات البرمجة عالية المستوى والمستخدمة بشكل أساسي في تطوير الويب وإضافة تأثيرات تفاعلية على صفحات الويب، كما يمكن أن تستخدم جافا سكريبت في تطوير ألعاب المتصفح حيث توفر جافا سكريبت العديد من المكتبات وأطر العمل التي تساعد المبرمجين على تطوير ألعاب الويب التي تعمل على أي متصفح مثل WebGL وهي عبارة عن واجهة برمجة تطبيقات جافا سكريبت لعرض رسومات ثنائية وثلاثية الأبعاد على المتصفح، ومحرك ألعاب الويب Phaser ومكتبات Three.JS و Babylon.js و Impact.js. كما تعتمد لغة جافا سكريبت على مفهوم الأحداث events وهذا يجعلها مناسبة لكتابة التعليمات البرمجية غير المتزامنة ويساعد مطوري الألعاب على إنشاء ألعاب عالية الأداء وسريعة الاستجابة وقادرة على التعامل مع العديد من الطلبات وتوفر تجربة مستخدم سلسلة. ومن أشهر الألعاب المطورة باستخدام لغة البرمجة جافا سكريبت نذكر Bejeweled و HexGl و CrossCode و Polycraft و Swoop. 7. لغة برمجة Lua لربما تسمع باسم لغة البرمجة لوا Lua لأول مرة وهو يعني القمر باللغة البرتغالية، لكنك في الغالب سمعت بأسماء الألعاب الشهيرة المطورة بالاستعانة بها مثل Roblox و Angry Birds و World of Warcraft، تتميز لغة Lua بكونها مفتوحة المصدر ومبنية على لغة البرمجة سي C وهي لغة سريعة وفعالة وخفيفة الحجم ومتعددة المنصات وتدعم البرمجة الإجرائية والبرمجة الوظيفية والبرمجة كائنية التوجه كما تدعمها عدة محركات ألعاب مثل Open 3D و Solar 2d لذا تعد لغة مثالية لبرمجة الألعاب وتعديلها وتخصيصها بسرعة وسهولة. إضافة لذلك تتميز هذه اللغة بسهولة تعلمها حيث يمكن للأطفال تعلمها لبرمجة الألعاب الخاصة بهم، كما تستخدم في مجالات أخرى تتطلب السرعة والكفاءة مثل تطبيقات الويب وتحليل البيانات وبرمجة أنظمة الشبكات مثل CISCO و Nmap وغيرها. 8. لغة Swift تعد لغة البرمجة سويفت Swift من آبل لغة مثالية لتطوير الألعاب والتطبيقات التي تعمل على أنظمة ماك macOS وiOS وiPadOS وwatchOS وtvOS.وهي تتميز بكونها لغة برمجة حديثة سهلة التعلم والاستخدام وعالية الأداء وتوفر العديد من المكتبات الرسومية ثنائية وثلاثية الأبعاد مثل SpriteKit وSceneKit و GameplayKit التي تمكن المطورين من إضافة رسومات عالية الجودة وهذا يجعلها لغة مثالية لبرمجة الألعاب الكبيرة والمعقدة. من محدوديات لغة سويفت Swift أنها تقتصر على منصات آبل Apple ولا تمكنك من تطوير ألعاب تعمل على منصات أخرى لكنها تفوقت برغم حداثتها على لغة Objective-C المستخدمة أيضًا في تطوير تطبيقات لأنظمة تشغيل آبل وفاقتها في السرعة والأداء. ومن أشهر الألعاب المطورة باستخدام Swift نذكر Crossy Road و Flappy Bird و 2048. كيف تختار أفضل لغة برمجة لتطوير الألعاب؟ كما شرحنا سابقًا هناك العديد من لغات البرمجة المختلفة التي يمكنك استخدامها لتطوير الألعاب ومن أجل اختيار اللغة التي تناسب احتياجاتك عليك في البداية أن تحدد متطلباتك وهدفك من تعلم تطوير الألعاب بدقة ثم تختار بناء على ذلك لغة البرمجة الأنسب لتحقيق هذا الهدف. حيث يعتمد اختيار لغة برمجة الألعاب على طبيعة اللعبة التي تريد تطويرها، فإذا كان هدفك تطوير لعبة بسيطة ثنائية أو ثلاثية الأبعاد، فيمكنك في هذه الحالة استخدام لغة البرمجة بايثون Python أو لغة جافا سكريبت JavaScript أو لوا Lua. وإذا كان هدفك تطوير لعبة احترافية عالية الأداء تتضمن عمليات محاكاة معقدة وتتطلب قدرًا كبيرًا من الذاكرة فستحتاج حينها إلى الاعتماد على أحد محركات الألعاب التي تسهل لك العمل كما ذكرنا سابقًا وحينها ستكون مقيدًا باستخدام إحدى لغات البرمجة التي يدعمها هذا المحرك، فلكل محرك ألعاب مجموعة لغات برمجة محددة يمكنه التعامل معها، على سبيل المثال يمكن أن تستخدم لغة C++ أو لغة برمجة مرئية تسمى Blueprints مع محرك الألعاب Unreal Engine أو تستخدم لغة البرمجة C# أو لغة برمجة مرئية تسمى Bolt مع محرك ألعاب يونتي Unity. كما أن تحديد المنصة التي تستهدفها لعبتك قد يساعدك في تحديد لغة البرمجة الأفضل، فإذا كنت ترغب في إنشاء ألعاب تعمل على الحواسيب المكتبية سيكون من المناسب لك استخدام لغة C++ أو بايثون أو جافا، وفي حال كان هدفك تطوير لعبة تعمل على أنظمة أندرويد Android ففي هذه الحالة تعد لغة جافا خيارًا مناسبًا، أما إن كنت تنوي تطوير ألعاب لأنظمة iOS فعليك حينها اختيار لغة Swift، وفي حال كان هدفك هو برمجة ألعاب الويب فاستخدم لغة جافا سكريبت JavaScript أو بايثون Python. الخلاصة تعرفنا في مقال اليوم على أفضل لغات برمجة الألعاب الإلكترونية، ومميزات كل لغة من بينها، وأبرز الألعاب المطورة باستخدامها، ووضحنا في ختام المقال أن اختيار لغة برمجة لعبة يعتمد على عدة عوامل من بينها المنصة التي تستهدفها اللعبة ومدى تعقيدها ومستوى صعوبتها ونوعها، لذا قبل أن تحدد اللغة التي سوف تستخدمها في تطوير لعبتك حدد كافة متطلبات اللعبة بشكل دقيق ثم اختر اللغة الأنسب لتلبية هذه المتطلبات. اقرأ أيضًا مطور الألعاب: من هو وما هي مهامه كيف تحصل على أفكار ألعاب فيديو ناجحة برمجة لعبة متاهة باستخدام محرك يونيتي Unity برمجة لعبة تفاعلية باستخدام سكراتش نبذة عن صناعة الألعاب ومحرك Unity3D1 نقطة
-
الشبكة هي عبارة عن مجموعة من الأجهزة المتصلة مع بعضها على اختلاف أنواعها باستخدام تجهيزات وبرمجيات خاصة وظيفتها أن تتيح لهذه الأجهزة التواصل وتبادل المعلومات بشكل سريع وفعال. ويمكن عدّ الشبكة أيضًا على أنها النظام الذي يحكم هذه الأجهزة لتتمكن من مشاركة الموارد فيما بينها. وعلى اختلاف أنواع الشبكات فإنها غالبًا ما تتكون من نفس العناصر الأساسية والتي من الضروري تواجدها في أي نظام شبكي. لكن ما هي عناصر ومكونات الشبكة؟ لمعرفة مكونات الشبكة، تابعوا معنا الفيديو الآتي: إذا أردت التعرف أكثر على مجال الشبكات، فننصحك بالانضمام إلى دورة علوم الحاسوب، ولا تنسَ الاستعانة خلال رحلة تعلمك وعملك بتوثيقات موسوعة حسوب المجانية. وإذا أردت متابعة المعلومات البرمجية العلمية مكتوبة فيمكنك الاطلاع على قسم البرمجة في أكاديمية حسوب، كما يمكنك متابعة جديد الفيديوهات التقنية المتاحة على يوتيوب أكاديمية حسوب مجانًا.1 نقطة
-
يُطلق مصطلح الشبكة الحاسوبية على مجموعة من الأجهزة الإلكترونية -غالبًا حواسيب بصورة أو أخرى- المتصلة ببعضها سلكيًا أو لاسلكيًا، ويتحكم في قواعد الاتصال بين تلك الأجهزة بروتوكولات (قواعد) لنقل البيانات وتخزينها والوصول إليها، وقد تكون صغيرة للغاية مثل حاسوب منزلي متصل بطابعة مثلًا، أو قد تكون كبيرة للغاية ومترامية الأطراف مثل شبكة الإنترنت. ونتيجة لهذا المقياس الرهيب الذي قد تصل إليه شبكات الحاسوب فإن لها أنواعًا كثيرة، لكل منها غرض أو استخدام مختلف، وخصائص كذلك ومزايا وعيوب، وقد تطورت عدة معماريات للشبكات توجه تصميمها وتنفيذها، وهي عبارة عن مخططات أنشئت بسبب طبيعة الشبكات المعقدة التي تتغير فيها التقنيات التي تُبنى عليها من ناحية، والمتطلبات التي تحتاج إليها البرمجيات التي تستخدم الشبكات نفسها. أنواع شبكات الحاسوب ونستعرض فيما يلي أشهر أنواع شبكات الحاسوب وهي: الشبكة الشخصية PAN الشبكة المحلية LAN شبكات الشركات CAN الشبكات الإقليمية MAN الشبكة واسعة النطاق WAN الشبكة الشخصية PAN الشبكات الشخصية Personal Area Network وتختصر إلى PAN هي أصغر أنواع شبكات الحاسب حجمًا وأقلها تعقيدًا، وكما يوحي اسمها فهي تدور حول شخص واحد في الغالب حيث تربط أجهزته ببعضها أو بشبكة خارجية، سواء كانت تلك الأجهزة كلها حواسيب عامة الأغراض -مثل الحواسيب المكتبية desktop أو المحمولة laptop- أو أجهزة تقنية أخرى تتصل بتلك الشبكة، مثل الطابعة أو الأجهزة المنزلية الذكية أو أجهزة إنترنت الأشياء IoT أو الهاتف. من أهم مزايا الشبكات الشخصية ما يلي: تتميز بالأمان ومستوى الحماية الجيد نسبيًا نظرًا لأنها محدودة في عدد الأجهزة المتصلة، ويكون مالك تلك الأجهزة هو نفس الشخص في الغالب. نطاق عمل هذه الشبكة يكون صغيرًا جدًا في الحيز الجغرافي حيث لا يتجاوز أمتارًا معدودة. أما عيوب الشبكات الشخصية فهي: تفتقر الشبكات الشخصية إلى إمكانية الانتشار على نطاق متوسط إلى واسع، فإذا كان المنزل كبيرًا أو يتكون من عدة مباني متجاورة أو عدة طوابق مثلًا فقد لا تكون كافية وسيحتاج المستخدم إلى إنشاء شبكة محلية صغيرة أو إضافة أجهزة تقوية وأسلاك وربما هوائيات أيضًا لنقل الإشارة لاسلكيًا. قد تتداخل إشارات الشبكة مع إشارات شبكات أخرى تعمل على نفس التردد أو النطاق. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن الشبكة المحلية LAN الشبكات المحلية Local Area Network وتختصر إلى LAN هي ثاني أنواع شبكات الحاسوب من حيث الحجم، وتمتد على مساحات صغيرة نسبيًا، مثل مبنى واحد أو طابق في ذلك المبني، وقد يكون منزلًا أيضًا، وتُشارك الموارد الموجودة في ذلك المبنى مع الحواسيب والأجهزة المتصلة بتلك الشبكة، والغالب على تلك الموارد أن تكون طابعات أو ملفات مخزنة في أرشيف أو أقراص صلبة. من أهم مزايا الشبكات المحلية ما يلي: شبكة خاصة لا يستطيع أحد من خارجها أن يصل إليها. تقليل تكلفة الموارد المخصصة لكل حاسوب أو جهاز في تلك الشبكة، بما أننا نستطيع الوصول إلى أي من الموارد الموجودة في أي حاسوب في الشبكة -طالما يمتلك الحاسوب صلاحيات الوصول إلى تلك الموارد-، مثل البرمجيات غالية الثمن التي يمكن استخدامها عبر الشبكة دون الحاجة إلى شراء نسخة لكل حاسوب، أو الاتصال بالإنترنت مثلًا، إذ يمكن استخدام اتصال واحد لكل الحواسيب الموجودة في الشبكة. أما عيوب الشبكات المحلية فهي: التكلفة الابتدائية لإنشاء الشبكات المحلية تكون عالية، وإن كانت ستوفر لاحقًا في تكاليف التشغيل نفسها. تحتاج إلى إدارة ومتابعة مستمرة لإصلاح مشاكل العتاد والبرمجيات التي قد تطرأ. يستطيع مدير الشبكة أن يصل إلى جميع الملفات الموجودة على حواسيب الشبكة، فإن كانت تحمي الشبكة من الاتصالات الخارجية، إلا أن المتصلين بالشبكة أنفسهم ليس لديهم خصوصية كبيرة على الملفات الموجودة في حواسيبهم. شبكات المؤسسات CAN ثالث أنواع شبكات الحاسوب هي شبكات الشركات Corporate Area Network وتُسمى أحيانًا بشبكات الحرم Campus Networks لأنها تُستخدم عادة في الحُرُم الجامعية، وهذا يعني أنها تمتد على نطاق مباني الجامعة كلها بمكتباتها ومبانيها الأكاديمية والإدارية وغيرها، وكذلك في شأن الشركات إذ تُستخدم لتوصيل مباني الشركة ببعضها، فهي أكبر من الشبكات المحلية إذن في نطاقها الجغرافي، لكنها أصغر من الشبكات الواسعة WAN والإقليمية MAN. من أهم مزايا شبكات الشركات: تمتد على نطاق بين 1-5 كم. سرعة نقل البيانات، إذ تستخدم مزيجًا من كابلات الإيثرنت السلكية وكابلات الألياف الضوئية فائقة السرعة. مستويات الحماية العالية، نظرًا لطبيعة البيانات الحساسة الخاصة بالشركات والجامعات، فتوضع إجراءات حماية مشددة على العتاد الخاص بالشبكة، عن طريق الجدر النارية Firewalls وخوادم الوكلاء Proxy Servers، إضافة إلى مستويات الصلاحيات المخصصة لكل موظف أو فرد داخل الشبكة، وإجراءات الحماية الأخرى للعتاد من أقفال وحراسة وغيرها. أما عيوب شبكات الشركات فهي: عدد العُقد -الحواسيب أو الأجهزة اﻷخرى- المسموح به في الشبكة محدود، كما أن مدى الشبكة محدود بمسافة أيضًا. التكلفة العالية للصيانة والإدارة موازنة بالشبكات المحلية LAN والشبكات الواسعة WAN مثلًا. هل ترغب في إدارة شبكتك وحمايتها وتحديثها باستمرار؟ وظّف مهندس شبكات خبير من مستقل أضف مشروعك الآن الشبكات الإقليمية MAN تمتد الشبكات الإقليمية Metropolitan Area Network أو شبكات المدن على نطاق أكبر حيث تصل المساحات التي تغطيها إلى خمسين أو مئة كيلومتر مثلًا، وهذه الشبكات تمثل أحد أنواع شبكات الحاسب المعقدة، فقد تتألف من عدة شبكات محلية LAN عبر توصيلهم معًا بكابلات الألياف الضوئية. من أهم مزايا الشبكات الإقليمية: سرعات نقل البيانات العالية موازنة بالشبكات المحلية، حيث تكون بين 34-159 ميجابت/ث، أما الشبكات المحلية فتكون من 1-100 ميجابت/ث فقط. تستخدم خاصية المسار المزدوج dual bus لنقل البيانات في كلا اتجاهي وسيلة النقل (الكابل مثلًا) في نفس الوقت. الدعم التقني المتقدم بما أنها تتبع شركات في الغالب أو جهات حكومية. أما عيوب الشبكات الإقليمية فهي: التكلفة العالية للإنشاء والتشغيل، حيث تتطلب بنية تحتية باهظة التكلفة، وكذلك فرق صيانة وإدارة متخصصة. صعوبة تأمينها من الهجمات الأمنية التي ينفذها المخترقون بسبب انتشارها الجغرافي الواسع. الشبكة واسعة النطاق WAN تمتد الشبكات واسعة النطاق Wide Area Network وتختصر إلى WAN على نطاق أوسع من الشبكات السابقة، فيمكن إنشاؤها بين عدة مباني إلى أحجام أكبر تصل إلى العالم كله، فشبكة الإنترنت التي تصل بين مليارات الحواسيب والأجهزة التقنية في القارات المختلفة وفي أعالي البحار وفي الفضاء أيضًا -كما في حالة محطة الفضاء الدولية- ما هي إلا مثال على الشبكات واسعة النطاق WAN، وعلى ذلك يكون هذا النوع من الشبكات هو أكثر أنواع شبكات الحاسوب مرونة في زيادة حجمه. لكن الأمثلة الأشهر لها هي استخدامها في الشركات أو المؤسسات الكبيرة، وقد تتكون الشبكات واسعة النطاق من مجرد عدة شبكات محلية متصلة معًا. من أهم مزايا الشبكات واسعة النطاق ما يلي: إمكانية تغطية مساحات جغرافية كبيرة، مما يعني إمكانية ربط فروع الشركة ببعضها وإن كانت بعيدة. تشمل الشبكات واسعة النطاق نفس المزايا التي للشبكات المحلية، من مشاركة الموارد وتقليل التكلفة وغيرها. أما عيوب الشبكات واسعة النطاق فما يلي: تكلفة الإنشاء الابتدائية تكون عالية للغاية بما أنها قد تشمل تثبيت بنية تحتية على نطاق جغرافي كبير. صعوبة صيانتها للأيدي غير المدربة، فيجب توظيف متخصصين في الشبكات. طول المدة اللازمة لإصلاح الأعطال بما أن الفني المسؤول عليه أن يفحص كثيرًا من الأجزاء التي قد تكون فيها المشكلة، وقد يكون ذلك في عدة مباني مختلفة وعبر عدة وسائل لنقل البيانات. امتلك شبكة حاسوب اعتمادية وآمنة لأعمالك احصل على حلول شبكات متقدمة وسريعة بالاستعانة بأفضل خدمات الشبكات على خمسات اطلب خدمتك الآن أنواع الشبكات الأخرى توجد بعض الأنواع الأكثر تخصصًا في شبكات الحاسوب تخدم أغراضًا بعينها أو تكون لها طبيعة خاصة، وإن كانت جزءًا من واحدة أو أكثر من الشبكات السابقة، وأهم تلك الأنواع ما يلي: الشبكات المحلية اللاسلكية WLAN تتيح شبكات WLAN إمكانية الاتصال اللاسلكي لجهاز أو أكثر بشبكة محدودة النطاق، كما في حالة الراوتر اللاسلكي (الموجِّه) أو نقطة الاتصال Access Point أو المكرر Repeater الذين قد تستخدمهم في المنزل أو العمل، فيستطيع المستخدمون التحرك بأجهزتهم في نطاق تغطية الشبكة دون الحاجة إلى الاتصال السلكي. شبكات التخزين SAN تتكون شبكات التخزين Storage-Area Networks وتختصر إلى SAN من وحدات تخزينية قد تكون مجرد أقراص صلبة صغيرة أو قد تكون خوادم كاملة مخصصة لتخزين، ويمكن تصور كيفية عمل هذه الشبكة على أنها مجموعة من أقراص التخزين، يمكن الوصول إليها عبر شبكة من الخوادم. وتتميز هذه الشبكة بسرعة الوصول إلى بياناتها بسبب أن وحدات التخزين تظهر كأقراص صلبة في الحواسيب المتصلة بتلك الشبكة. الشبكات الخاصة بالمؤسسات EPN قد تبني الشركات أو المؤسسات شبكات خاصة بها Enterprise Private Networks لا يمكن الوصول إليها من خارجها، وذلك في حالة الشركات التي تريد توصيل عدة مواقع تتبعها توصيلًا آمنًا لضمان سلامة بياناتها الحساسة. الشبكات الافتراضية الخاصة VPN الشبكات الافتراضية الخاصة Virtual Private Networks تكون خاصة أيضًا -من الخصوصية- لكنها تستخدم شبكة عامة للاتصال بالمواقع البعيدة أو توصيل عدة مستخدمين معًا، وتستخدم اتصالات افتراضية أو وهمية virtual توجَّه داخل الإنترنت من شبكة المؤسسة إلى طرف ثالث يقدم خدمات VPN، ومنها إلى الموقع البعيد الخاص بالشركة. قد يكون استخدام تلك الشبكات مدفوعًا أو مجانيًا وفقًا لمقدم الخدمة، وتختلف عن النوع السابق للشبكات الخاصة في أنها يمكن الوصول منها إلى الإنترنت، على عكس شبكات المؤسسات التي تكون مقصورة على موارد الشبكة فقط بما أنها تستخدم خطوطًا خاصة بها لنقل البيانات. خاتمة تعرفنا في هذه المقالة على أشهر أنواع شبكات الحاسب المنتشرة، واستخدامات كل منها ومزايا بعضها، وعرفنا أنها تُصنف وفقًا لحجمها والغرض الذي تُستخدم له، ولا شك أنه توجد أنواع أخرى من الشبكات مثل الشبكات المنزلية Home Area Networks (HAN) وغيرها ولكن حرصنا أن يكون المقال تعريفًا بسيطًا بأشهر أنواع شبكات الحاسوب ببساطة ودون تعقيد أو تطويل، ويمكنك أن تنتقل بعد هذا المقال إلى مواضيع أوسع عن شبكات الحاسوب. وتوفر أكاديمية حسوب مساقًا كاملًا لتعلم علوم الحاسوب الأساسية، وفهم أساسيات أنظمة التشغيل المختلفة التي تعمل بها الحواسيب والأجهزة الإلكترونية والخوادم، وكذلك المفاهيم الأساسية في الشبكات، وطبيعة عمل الخوادم من حيث استقبال الطلبات فيها والرد عليها، ومفاهيم الحماية والأمان في تلك الشبكات وفي الويب خاصة. اقرأ أيضًا المتطلبات اللازمة لبناء شبكة حاسوبية البرمجيات المستخدمة في بناء الشبكات الحاسوبية أمثلة عن أنظمة أمن الشبكات الحاسوبية1 نقطة
-
شبكة الحاسب ببساطة هي مجموعة من أجهزة الحاسب التي تتصل ببعضها وتستخدم موارد مشتركة بينها، وتكون تلك الموارد المشتركة إما بيانات أو أجهزة حقيقية مثل الطابعات وأجهزة العرض والتسجيل أو الماكينات والآلات التي تحمل رقاقات حاسوبية بداخلها متصلة بنفس الشبكة. وصحيح أن مصطلح شبكة الحاسب على إطلاقه يشير إلى الشبكة العالمية التي نعرفها بالإنترنت، إلا أن مفهوم الشبكات أوسع من ذلك بكثير، كما سنرى في الفقرات التالية. تعريف شبكة الحاسب شبكة الحاسب computer network مؤلفة من كلمتين، الأولى شبكة ومعناها لا يخفى على أي قارئ عربي وهي بحسب قاموس صخر المعاصر ربط بين شيئين أو عدة أشياء أو يطلق على كل متداخل متشابك وتحصر كلمة الحاسب الثانية بربط الحواسيب مع بعضها بعضًا. ظهرت أول صورة من صور الحواسيب المتصلة ببعضها في أواخر الخمسينات من القرن الماضي في صورة شبكة من الحواسيب التي استُخدمت في أحد أنظمة الرادار في الجيش الأمريكي، وقد استُخدمت خطوط الهاتف العادية في نقل البيانات بواسطة جهاز مودم تجاري من شركة AT&T. تبع هذه المحاولة في تنظيم الاتصال بين الحواسيب البعيدة عن بعضها عدة محاولات أخرى في الشركات الكبرى والجامعات، وكان أغلب تلك المحاولات يحاول تنظيم الموارد المتاحة للشركة أو المؤسسة وتسهيل تطوير البيانات واتخاذ القرار من خلال تنظيم حركة تدفق البيانات بين تلك الحواسيب البعيدة. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن فوائد شبكات الحاسب لعل فوائد الشبكات بدأت تتضح مما لنا نحن كمستخدمين عاديين أو كشركات، وبدت أهمية شبكات الحاسب في نقل البيانات والمعلومات بين الدول والمؤسسات والأفراد، وكذلك في التحكم في الأجهزة والآلات عن بعد لتسهيل مراقبتها، وفيما يلي أهم تلك الفوائد: مشاركة الملفات: كما في حالة الشركات والمؤسسات، بل وفرق العمل التي تعمل عن بعد. مشاركة الموارد: كما في حالة مشاركة الطابعات، والحواسيب القوية لإجراء عمليات محاكاة أو إخراج للتصاميم الهندسية أو الإبداعية، أو العمل على برامج عمل سحابية مثل مستندات جوجل أو برامج تصميم مشترك سحابية. التواصل: حيث يستطيع المستخدمون للشبكة أن يرسلوا الرسائل والبيانات والوسائط فورًا ويستقبلون بيانات وردودًا مشابهة من غيرهم من المستخدمين في نفس الوقت. تقليل التكلفة: كما رأينا في حالة الموارد المشتركة مثل الطابعات أو الحواسيب الكبيرة أو توفير أجهزة وهمية للموظفين للعمل عليها أو خوادم وهمية لاستضافة المواقع. زيادة كفاءة المعدات وسلامة البيانات: بما أن العتاد المستخدم للشبكات يكون في الغالب ذا جودة عالية ويقوم عليه فريق صيانة متخصص، فتقل احتمالات تعطل العتاد أو خسارة البيانات نتيجة النسخ الاحتياطية المنظمة التي تُنفذ للبيانات، على عكس الحواسيب الشخصية للمستخدمين. عيوب شبكات الحاسوب رغم المنافع التي تطغى على بيئة الشبكات إلا أنها تأتي بعيوب قد يكون بعضها خطيرة وقد يكون بعضها الآخر مجرد أعباء إدارية، وفيما يلي بعض تلك العيوب لشبكات الحاسب: تحتاج شبكات الحاسب إلى الاستثمار في بنى تحتية باهظة التكلفة عند بداية إنشائها، وكلما زاد حجم الشبكة زادت التكاليف كثيرًا. تحتاج شبكات الحاسب إلى مراقبة على مدار الساعة لتجنب تعطل أجزائها أو فشل عمليات توصيل الطاقة إليها أو تبريد مراكز البيانات، أو اختراقها داخليًا من العاملين فيها أو خارجيًا من مخربين أو مخترقين عن بعد. سهولة انتقال الفيروسات والبرامج الضارة لكل الأجهزة المتصلة بالشبكة إن أصيب أحدها. المخاطر الأمنية التي قد تحصل نتيجة هجمات قد تأتي داخليًا من أحد الأجهزة المتصلة بالشبكة أو خارجيًا عبر اختراق الشبكة والأجهزة المتصلة بها. مكونات شبكات الحاسب الرئيسية صحيح أننا ذكرنا أن الشبكات الحاسوبية عبارة عن حواسيب متصلة ببعضها، لكن الأمر فيه تفصيل أكثر من هذا، فليست كل تلك الحواسيب عامة الأغراض وتشبه الحاسوب الذي لدى المستخدم العادي، بل يكون بعضها مخصصًا لوظيفة أو أكثر داخل تلك الشبكة بحيث يخدم بقية مكونات الشبكة دون أن يُستخدم هو نفسه لأي غرض آخر، بل قد يُحظر الوصول إليه أحيانًا إلا لفئات محدودة من الأشخاص لعدة أسباب أهمها الحفاظ على أمان الشبكة، وهكذا فإن المتطلبات اللازمة لإنشاء شبكة حاسوبية قد تكون أكثر تعقيدًا من مجرد توصيل بعض الأجهزة ببعضها. الخوادم Servers: أساس شبكات الحاسب لعل أجهزة الخوادم servers هي القلب النابض لشبكات الحاسوب، وهي حواسيب توضع فيها الموارد التي يراد الوصول إليها عن بعد من بقية مكونات الشبكة، وهي حواسيب أقوى من الحواسيب العادية بعشرات المرات من حيث قوة المعالجة وعدد المعالجات ومساحات التخزين والذواكر العشوائية، وتوجد في العادة في غرف مخصصة آمنة تسمى مراكز بيانات data centers. فحين تدخل إلى موقع تتصفحه مثلًا (والموقع هو جزء من شبكة الإنترنت العالمية) وليكن يوتيوب، فإنك تكتب عنوان الموقع في المتصفح، فيذهب بك إلى يوتيوب لتتصفح مقطعًا تريد مشاهدته، فهذا المقطع مخزن على خوادم شركة يوتيوب، وكذلك موقع يوتيوب نفسه مخزّن على خوادم سريعة بالغة القوة لتتحمل آلاف المقاطع التي تُرفع إليه وملايين المستخدمين الذين يتصفحونه في نفس الوقت. وتوجد أنواع عديدة من الخوادم يختص كل منها بمهمة أو عدة مهام، وأشهر تلك الأنواع ما يلي: خوادم أسماء النطاقات Domain Name Servers خوادم التطبيقات Application Servers خوادم الويب Web Servers خوادم الملفات File Servers خوادم البريد Mail Servers خوادم أسماء النطاقات Domain Name Servers وهي الخوادم التي تحتوي على عناوين المواقع التي تتصفحها، فإذا استخدمنا مثال يوتيوب السابق، فإنك تكتب Youtube.com مثلًا ثم تضغط زر الإدخال Enter ليرسل المتصفح الطلب إلى الشبكة، فيمر على خادم DNS الذي يمثل دفتر جهات الاتصال للشبكة وهي هنا شبكة الإنترنت، فيرسل بدوره الطلب إلى العنوان المقابل لهذا النطاق أو الموقع -youtube.com-، ويكون في الغالب مجموعة من الأرقام مثل 192.0.2.44. خوادم التطبيقات Application Servers تُحفظ بعض التطبيقات البرمجية على خوادم بعيدة ليتصل بها المستخدمون من حواسيبهم أينما كانوا، وتسمى الخوادم التي تُحفظ عليها باسم خوادم التطبيقات Application Servers، وتُستخدم مثل تلك التطبيقات في الغالب داخل الشركات التي تريد للموظفين أن يستفيدوا من تلك التطبيقات المركزية دون الحاجة إلى تثبيت التطبيق على حاسوب كل موظف، وهذا مفيد في تجميع بيانات العمل للموظفين في فريق واحد مثلًا ومشاركتها والتعديل عليها مباشرة دون الانتظار لرفع تلك البيانات من حاسوب كل موظف. كذلك تُستخدم في حالة الشركات التي تقدم خدمات بعيدة لمستخدميها بحيث يتصل المستخدم بالتطبيق الموجود بخوادم الشركة من أي جهاز متصل بالإنترنت دون أن يكون التطبيق مثبتًا على حاسوبه الشخصي، ومثل تلك التطبيقات تسمى تطبيقات ويب web apps لأنها تعمل في بيئة الويب في الغالب ويصل المستخدم إليها عن طريق المتصفح. خوادم الويب Web Servers خوادم الويب هي أشهر أنواع الخوادم التي تُستخدم في الوصول إلى الإنترنت، وهي المسؤولة عن نقل البيانات المخزنة في مواقع الإنترنت إلى حاسوبك أو جهازك الذي تتصفح منه، عن طريق بروتوكولات نقل بيانات مثل HTTP. خوادم الملفات File Servers تُستخدم خوادم الملفات في تخزين البيانات والملفات والبرامج داخل المؤسسات مثلًا للسماح بنقل تلك الملفات ومشاركتها بسرعة وأمان بين العاملين في تلك المؤسسة. خوادم البريد Mail Servers يخزن خادم البريد الرسائل البريدية الخاصة بالمستخدمين الذين يستخدمون خدمات بريدية مثل Gmail مثلًا، كي يتمكنوا من الوصول إليها دون الحاجة إلى استخدام برمجيات خاصة على أجهزتهم، حيث تكون تلك البرمجيات في خوادم البريد نفسها. توجد أنواع أخرى من الخوادم غير التي ذكرناها أعلاه، لكن هذه هي الأشهر والتي قد يتعامل المستخدم معها بشكل أو بآخر أثناء حياته اليومية داخل العمل وخارجه. المبدِّل Switches المبدِّل switch هو جهاز يربط أجزاء الشبكة ببعضها بواسطة أسلاك إيثرنت Ethernet أو فايبر في الغالب، فتتصل به الحواسيب الموجودة داخل مبنى مثلًا بالشبكة الموجودة داخل ذلك المبنى، ويكون هو المسؤول عن تنظيم التواصل بين تلك الحواسيب، ولمزيد من التفاصيل حول المبدل ووصله بالشبكة، يمكنك الرجوع إلى مقال شبكة الإيثرنت المبدلة Switched Ethernet. الموجِّه Router لعل هذا الجهاز الصغير هو أكثر مكونات الشبكات التي يتعامل معها المستخدم وإن كان تعاملًا غير مباشر، يليه جهاز نقطة الاتصال Access Point. يُستخدم الموجِّه أو الراوتر في الاتصال بشبكات متعددة، كما يُستخدم لمشاركة اتصال إنترنت واحد مع عدة حواسيب وأجهزة أخرى لتقليل تكلفة اتصال كل منها على حدة بالشبكة، سواء عن طريق أسلاك أو هوائيًا، ولا يكاد يخلو منزل في يومنا هذا من وجود راوتر فيه للاتصال بشبكة الإنترنت عبر مزود خدمة الإنترنت. نقطة الاتصال Access Point تُستخدم نقاط الاتصال، وهي أجهزة شبيهة بأجهزة الراوتر- لتوصيل الحواسيب والهواتف والأجهزة الأخرى بالشبكة اتصالًا لاسلكيًا، عن طريق الاتصال سلكيًا بالراوتر ثم بث إشارة الشبكة لاسلكيًا عن طريق هوائي صغير متصل بها. يمكن لتلك الأجهزة وكذلك أجهزة الراوتر أن تهيأ لتُستخدم كمكررات لإشارات الشبكات repeaters، بحيث تلتقط إشارة الشبكة لاسلكيًا وتنقيها من التشويش ثم تعيد توليدها وبثها مرة أخرى بقوة أكبر، وذلك من أجل توسيع نطاق البث للشبكة. العملاء/الأجهزة العميلة Clients الأجهزة العميلة أو الوكيلة في بيئة الشبكات هي الحواسيب والأجهزة الأخرى التي تتصل بالشبكة ومواردها المختلفة من خوادم وغيرها، وتلك الأجهزة العميلة تمثل مستخدمي الشبكات، حيث تستطيع إرسال واستقبال الطلبات من الخوادم. هل ترغب في بناء شبكة موثوقة وآمنة لشركتك؟ احصل على شبكة عالية الأداء مع مهندس شبكات خبير من مستقل أضف مشروعك الآن مكونات أخرى لشبكات الحاسب إضافة إلى ما سبق، توجد مكونات وأجهزة أخرى تمثل أجزاء لا غنى عنها للشبكة، وقد لا تكون بالضرورة أجهزة مادية، لكن المستخدم العادي قد لا يحتك بها مباشرة أو ليس له وصول إليها، وبعض تلك المكونات ما يلي: بروتوكولات شبكات الحاسب البروتوكول Protocol هو مجموعة من القواعد التي تحكم التواصل بين جهتين في الشبكة، وتكون بعض تلك البروتوكولات قياسية مثل بروتوكولات IP و TCP و FTP وغيرها. عنوان الوصول للجهاز Mac Address يمثل عنوان الماك -عنوان التحكم في الوصول إلى الوسائط Media Access Control Address- معرِّفًا وعنوانًا فريدًا لكل جهاز يتصل بالشبكة. المنفذ Port المنافذ هي قنوات منطقية يرسل المستخدمون البيانات من خلالها إلى التطبيقات أو يستقبلون بيانات منها، ويُعرَّف كل تطبيق من تلك التطبيقات باستخدام رقم المنفذ الذي يعمل من خلاله. وسائل نقل البيانات في شبكة الحاسب إذا كانت بيانات التطبيقات والمواقع والشركات تُخزَّن على خوادم وحواسيب بعيدة، وكان المستخدمون يصلون إلى تلك الخوادم من خلال حواسيبهم وهواتفهم وغيرها من الأجهزة، فكيف تُنقل تلك البيانات؟ تُرسل البيانات بطريقتين أساسيتين، إما نقلًا سلكيًا أو غير سلكي، والنقل السلكي يكون دومًا أسرع وأفضل، لكنه يحتاج إلى بنى تحتية أكثر كلفة، ويتم النقل فيه عبر كابلات من الألياف الزجاجية Fiber glass، خاصة في حالة الكابلات العابرة للمحيطات التي تربط بين القارات المختلفة، وكذلك باستخدام كابلات نحاسية مؤمنة ضد التشويش على الإشارات، تكون في صورة كابلات الإيثرنت التي نعرفها ذات الثمانية أطراف، أو الكابلات المحورية Coaxial، أو أسلاك الهاتف العادية كما كان يحدث قديمًا في اتصال Dialup. أما الاتصالات اللاسلكية فتكون باستخدام هوائيات Antennas لبث الاتصال بالشبكة المراد الاتصال بها، وتختلف المسافة التي يمكن الاتصال بالشبكة من خلالها وكذلك عدد المستخدمين الذين يمكنهم الاتصال بتلك الشبكة على نوع الهوائي المستخدم وسعة الشبكة نفسها. الجدار الناري Firewall الجدار الناري قد يكون جهازًا ماديًا أو برنامجيًا يُستخدم في التحكم في الشبكة وأمانها وقواعد الوصول إليها، وتوضع كحماية للحاسوب وما يتصل به من الشبكات الآمنة -مثل شبكات المنازل والشركات- من الاتصالات الخارجية غير المأمونة مثل الإنترنت، وتهيأ لحظر الطلبات من المصادر غير المعرَّفة للشبكة الآمنة، فهو مثل الباب الذي يفصل المنزل الداخلي الخاص عن المحيط الخارجي العام. زادت أهمية الجدر النارية كثيرًا بعد تطور الإنترنت ووصوله إلى يد كل مستخدم من خلال الهواتف الذكية وأجهزة إنترنت الأشياء، حيث زادت خطورة الهجمات السيبرانية التي قد تستهدف أولئك المستخدمين بحيث يمكن التلاعب بأجهزتهم وسرقة بياناتهم وإغلاق تلك الأجهزة لطلب فدية، كما يحدث كل مدة في حالة فيروسات الفدية التي تصيب أجهزة المستشفيات والمؤسسات المهمة والشركات الكبرى. أو حتى على مستوى الشبكات الموجودة في المنازل العادية حيث انتشرت أنظمة البيوت الذكية التي يُمكن التحكم فيها عن بعد، فيستطيع المخرب تنفيذ هجمة على المنزل بتغيير درجات الحرارة أو قطع الكهرباء أو الاتصالات أو التلاعب بالأجهزة المنزلية المتصلة بالشبكة. أنواع شبكات الحاسوب توجد عدة أنواع من الشبكات تُصنف وفقًا للحيز الجغرافي الذي تخدمه وعدد الحواسيب المتصلة فيها، وفيما يلي بعض أشهر أنواع هذه الشبكات: الشبكة الشخصية PAN الشبكة المحلية LAN الشبكات واسعة النطاق WAN الشبكات الإقليمية MAN 1. الشبكة الشخصية PAN الشبكات الشخصية Personal Area Network وتختصر إلى PAN هي الشبكات التي تتكون من أجهزة تتبع شخصًا واحدًا، مثل الحاسب الخاص به وهاتفه وأجهزته اللاسلكية المتصلة عبر البلوتوث، ويكون نطاقها محدودًا بالتبعية، وقد تتصل بالإنترنت لاسلكيًا. 2. الشبكة المحلية LAN الشبكات المحلية Local Area Network وتختصر إلى LAN تتكون الشبكات المحلية من مجموعة من الحواسيب والأجهزة الأخرى التي تتصل بشبكة واحدة على نطاق مبنى أو عدة مباني متجاورة تمثل مؤسسة واحدة مثل شركة أو مستشفى أو منزل أو غيره، وتكون الشبكة مقصورة على الأجهزة التي داخل تلك المباني، أي لا يمكن الوصول إليها من خارج الأجهزة المتصلة بها أو من خارج نطاق تلك الشبكة. تُستخدم تلك الشبكات في أغراض نقل الملفات واستخدام الأجهزة عن بعد مثل الطابعات والماسحات الضوئية وغيرها، ولعل أبسط صورها هو حاسوب متصل بطابعة مثلًا. لا يزيد عدد الأجهزة المتصلة في الشبكات المحلية عن 5000 جهاز. 3. الشبكات واسعة النطاق WAN الشبكات واسعة النطاق Wide Area Network وتختصر إلى WAN تمثل عدة شبكات محلية متصلة معًا، لكنها تمتد على نطاق جغرافي أكبر، كما في حالة الشركات الكبرى. تُعد شبكة الإنترنت أحد أمثلة الشبكات واسعة النطاق WAN العامة، أي التي يصل إليها كل أحد، على عكس الشبكات الواسعة التي تكون مقصورة على المؤسسات والشركات. 4. الشبكات الإقليمية MAN تنتشر الشبكات الإقليمية Metropolitan Area Network وتختصر إلى MAN على نطاق أوسع من سابقتها، حيث تمتد خلال المدن الكبيرة، وتمتد على نطاق يصل إلى خمسين كيلومترًا مثلًا، وقد تشمل شبكات LAN أو WAN، إضافة إلى شبكات أخرى متصلة عبر تقنيات الاتصال اللاسلكية الهوائية، مثل شبكات الهواتف الخليوية المتصلة عبر تقنيات الجيل الثاني والثالث. تتصل الشبكات الإقليمية في الغالب عبر كابلات ألياف زجاجية بسبب حاجتها إلى نقل البيانات بسرعات عالية. امتلك شبكة حاسوب اعتمادية وآمنة لأعمالك احصل على حلول شبكات متقدمة وسريعة بالاستعانة بأفضل خدمات الشبكات على خمسات اطلب خدمتك الآن خاتمة تُبنى التقنيات الحديثة الآن من حواسيب وشركات وبنى تحتية أحيانًا وأنظمة حكومية باستخدام شبكات الحاسب كقواعد أساسية لها، فصارت جزءًا لا يتجزأ من حياتنا اليومية سواء استخدمناها استخدامًا مباشرًا أم استفدنا من أحد تطبيقاتها. ولا يسع أحدنا اﻵن أن يجهل أبسط مبادئ علوم الحاسب التي بُنيت عليها تلك الشبكات من أجل فهم طبيعة عملها والاستفادة المثلى منها سواء في بيئة العمل أو المنزل، وكذلك تجنب مخاطرها وإغلاق ثغراتها التي قد يدخل المخربون منها. اقرأ أيضًا أمثلة عن أنظمة أمن الشبكات الحاسوبية مدخل إلى شبكات الحواسيب: مصطلحات وفهم طبقات الشبكة المتطلبات اللازمة لبناء شبكة حاسوبية أنواع شبكات الحاسب1 نقطة
-
اختيار لغة البرمجة المناسبة يعتمد على عدة عوامل، بما في ذلك أهدافك واحتياجاتك الشخصية. سأقدم لك بعض النصائح التي قد تساعدك في اتخاذ قرارك: التوجه نحو البايثون: إذا كان هدفك الأساسي هو أن تصبح مطورًا للباك إند، فإن البايثون ما زالت خيارًا جيدًا. إنها لغة برمجة سهلة التعلم وتتمتع بشعبية كبيرة في مجال تطوير الويب باستخدام إطارات مثل Django و Flask. بالإضافة إلى ذلك، البايثون لديها مجتمع نشط ووثائق واسعة الانتشار، مما يعني أنه من السهل العثور على مصادر تعلم ودعم. الجافا سكربت و Node.js: إذا كان هناك اهتمام بالويب الحديث وتطوير تطبيقات الجانب الخادم، فإن الجافا سكربت و Node.js قد تكون خيارًا جيدًا. الجافا سكربت هي لغة برمجة قوية ومتعددة الاستخدامات وتُستخدم على نطاق واسع في تطوير الويب والتطبيقات المحمولة والسحابية وغيرها. Node.js هو بيئة تشغيل تعتمد على الجافا سكربت وتمكّنك من تشغيل الجانب الخادم لتطبيقات الويب باستخدامها. الاستفادة من المزيج: يمكنك أيضًا النظر في تعلم كلا اللغتين، البايثون والجافا سكربت، واكتساب مهارات في كلا العالمين. قد يكون لديك فرص أو مشاريع مستقبلية تتطلب التعامل مع لغة برمجة معينة، وبالتالي، تعلم لغتين مختلفتين قد يكون ضمانًا لمزيد من الفرص الوظيفية. عندما تكون لديك مهارات في لغتين برمجية مختلفتين، يمكنك الاستفادة من الفرص التي تتطلب إحدى اللغتين أو كلاهما. قد يكون لديك فرصة للعمل على مشروع يستخدم البايثون وآخر يستخدم الجافا سكربت، وبالتالي تكون قادرًا على الانتقال بين المشاريع واكتساب تجارب متنوعة. تكنولوجيا المستقبل: الجافا سكربت و Node.js تعتبران من التقنيات الحديثة والمستقبلية في مجال تطوير الويب والتطبيقات. تعلم الجافا سكربت واستخدام Node.js يمكن أن يمنحك فرصًا أوسع في تطوير تطبيقات الويب المتطورة والتكنولوجيا الحديثة مثل تطبيقات الوقت الحقيقي وتطبيقات الشبكات الاجتماعية والتطبيقات المبنية على المؤشرات الحيوية. القرار النهائي يعتمد على احتياجاتك واهتماماتك الشخصية وفرص العمل المتاحة في سوق العمل المحلي. قد تكون أفضل استراتيجية هي تعلم البايثون في البداية وبناء قاعدة قوية في مجال تطوير الويب، ثم توسيع مهاراتك بمعرفة الجافا سكربت واستخدامها لاحقًا. هذا سيسمح لك بالاستفادة من مزايا كلا اللغتين وزيادة فرصك الوظيفية في المستقبل.1 نقطة
-
سيشرح هذا الفصل طريقة تأمين بعض الأمور الأساسية المحيطة بك مثل نظام التشغيل للحواسيب وجهاز الموجّه (Router). كما سنشرح أهميّة استخدام بعض الأدوات والبرامج الإضافية لزيادة الأمان والحماية والخصوصية. تأمين أنظمة ويندوز سيشرح هذا القسم أهمّ ما يجب عليك فعله لتأمين أنظمة ويندوز 10. استعمال حساب محلّي تأكّد أنّ ما تستعمله للدخول إلى نظام ويندوز الخاصّ بك هو حساب مستخدم محلّي (Local User Account) وليس حسابًا من مايكروسوفت. وهذا لأنّ استخدامك للأخير سيعني ربط كل معلوماتك على حساب مايكروسوفت بكل الموجود على جهازك من بيانات وملفّات ونشاطات. يمكنك فعل ذلك عبر الذهاب إلى الإعدادات (Settings) --> الحسابات (Accounts) والتأكّد من نوع الحساب كما في الصورة: استخدام كلمة مرور للدخول من المهم جدًا أن تستعمل كلمة مرور للدخول إلى حاسوبك بدلًا من أن تجعله مفتوحًا بلا كلمة مرور، وهذا لحمايته من المتطفلين إمّا من عائلتك أو أصدقائك أو غيرهم، وكذلك لحمايته مبدئيًا - ولو بصورة طفيفة فقط - من اللصوص الذين قد يسرقون حاسوبك المحمول ويحاولون فتحه. يمكنك إعداد كلمة المرور أو تغييرها من الإعدادات (Settings) --> الحسابات (Accounts) --> خيارات تسجيل الدخول (Login Options) --> كلمة المرور (Password). قم كذلك بتفعيل الخيار التالي كما في الصورة لتفعيل قفل الشاشة وطلب كلمة المرور تلقائيًا عندما تكون بعيدًا عن حاسوبك لفترة من الزمن: تعطيل إعدادات مشاركة البيانات ويندوز 10 افتراضيًا ممتلئ جدًا بإعدادات إرسال البيانات إلى مايكروسوفت. عليك تعطيلها جميعًا لتقليل البيانات المُرسلة من جهازك إلى خواديم الشركة. من الإعدادات (Settings) --> الخصوصية (Privacy) --> عام (General)، تأكّد أنّ إعداداتك هي كالشكل التالي: عطّل خدمة التمييز الصوتي من تبويب الكلام (Speech): عطّل خدمة الاحتفاظ بالكلمات التي تكتبها من تبويب إضفاء الطابع الشخصي على الكتابة بالحبر والكتابة (Inking & Typing Personalization): تأكّد أنّ وضع إرسال البيانات عن حاسوبك مضبوطٌ إلى أساسي (Basic) من تبويب التعليقات والتشخيص (Diagnostics & Feedback). سيظل حاسوبك هكذا يرسل البيانات عنك للأسف ولا يمكن تعطيل إرسال البيانات بصورة كاملة في ويندوز 10، لكن البيانات المُرسلة أقل من الوضع الآخر: تأكّد أنّ بقية الخيارات في الصفحة كالتالي: يسمح لك الخيار الأخير أن تثبّت برنامجًا اسمه "Diagonstic Data Viewer" أو "عارض بيانات التشخيص" وهو برنامجٌ رسمي من مايكروسوفت لعرض كلّ البيانات الموسّعة (لا يعرض كلّ البيانات بل فقط عند استخدام نمط الإرسال الموسّع) التي تُرسل من جهازك إلى مايكروسوفت. ينبغي أن يكون فارغًا عندما تفتحه: يمكنك حذف كل البيانات التشخيص التي جمعتها عنك مايكروسوفت إن أردت، كما يمكنك كذلك تعطيل خيار طلب سؤالك عن تقييمك للنظام كلّ فترة من نفس الصفحة: تأكّد أنّ خيارات الاحتفاظ بنشاطك على الجهازك معطّلة من تبويب سجل النشاط (Activity History): إذا كنت تستخدم حسابًا من مايكروسوفت لتسجيل الدخول إلى نظام التشغيل الخاصّ بك فيمكنك رؤية كلّ المعلومات التي جمعتها عنك مايكروسوفت من الرابط: https://account.microsoft.com/privacy وبعد أن تقوم بتسجيل الدخول إلى حسابك هناك سترى بياناتك ومعلوماتك مقسّمةً حسب نوعها. يمكنك رؤيتها أو حذف ما تشاء منها أو حتّى تنزيلها إن أردت: بقية التبويبات التي تراها هي صلاحيات الوصول للتطبيقات الموجودة على نظامك، يمكنك تصفّح كلٍّ منها على حدى: جميع هذه التبويبات تحوي خياراتٍ لتفعيل الصلاحية المذكورة في اسمها بالإضافة إلى إمكانية السماح أو منع تطبيقاتٍ معيّنة فقط من تلك الصلاحيات. ما ننصح به هو أن تمرّ عليها جميعًا وتقوم بتعطيل جميع الصلاحيات عبر تغييرها من On إلى Off، إلّا تلك التي تحتاجها تطبيقاتك الأساسية (مثلًا بالنسبة لصلاحيات الميكروفون، يمكنك ترك السماح للتطبيقات بالوصول إليه، لكن مع منع جميع التطبيقات من استخدامه إلّا متصفّح الويب الخاصّ بك والألعاب مثلًا): تعطيل المساعدة الصوتية (Cortana) كورتانا هي مُساعِدة صوتية موجودة داخل ويندوز 10، تسمح لك بالبحث عن بعض الأشياء على جهازك أو الويب صوتيًا، أو يمكنك حتّى أن تسألها بعض الأسئلة خارج ذلك، مثل لماذا يطلب أهالي الفتيات مهورًا عالية للزواج؟ اتّبع الخطوات التالية لتعطيل كورتانا: انقر بزرّ الفأرة الأيمن على أيقونة ويندوز واختر "Run" واكتب "regedit". اذهب إلى المسار التالي من الشريط الجانبي: HKEYLOCALMACHINE\SOFTWARE\Policies\Microsoft\Windows\Windows Search انقر على Windows Search بزرّ الفأرة الأيمن، واختر New --> New DWORD (32 Bit) كما في الصورة: أدخل "AllowCortana" كاسم القيمة الجديدة. أعد التشغيل. إدارة التحديثات التحديثات مفعّلة تلقائيًا على ويندوز 10، لكن أحيانًا تكون عالقة عند خطوة معيّنة وتتطلب منك تنزيلها يدويًا. يمكنك التحقق من حالة التحديثات الحالية على نظامك عبر الإعدادات (Settings) --> التحديث والأمان (Update & Security) وتثبيت أيّ تحديثاتٍ عالقة: ننصح كذلك بتعطيل ميّزة تحميل التحديثات من الأجهزة الأخرى عبر الشبكة من تبويب تحسين التسليم (Delivery Optimization) بالشكل التالي، وهذا لعدم حصول مشاكل في الشبكة المنزلية من تنزيلٍ ورفعٍ للتحديثات: تفعيل Windows Defender والجدار الناري اذهب إلى الإعدادات (Settings) --> التحديث والأمان (Update & Security) --> أمن Windows (Windows Security) وشغّل مركز حماية ويندوز من هناك: اذهب إلى تبويب أنشطة جدار الحماية والشبكة (Firewall & Network Protection) ومن الشريط الأيمن انقر على إدارة الموفرون (Manage Providers)، ثمّ تأكّد أنّ كلًّا من الجدار الناري وWindows Defender مفعّلان بالشكل التالي: لا يحتاج ويندوز 10 أيّ برنامج مكافحة فيروسات على عكس ما يعتقده الناس في الواقع. طالما أنّك ملتزمٌ بتعليمات الوعي والأمان التي شرحناها في فصولٍ سابقة فحينها لست بحاجةً لبرنامج مكافحة فيروسات سوى الموجود داخل ويندوز نفسه. عليك فقط تجنّب تحميل البرمجيات من مصادر مشبوهة وتجنّب إدخال ذواكر USB خبيثة إلى جهازك. تشفير الأقراص أو المجلّدات تسمح لك ميّزة "Bitlocker" الموجودة داخل ويندوز 10 بتشفير كامل القرص الصلب الخاصّ بك. وهذه ميّزة رائعة فالتشفير يضمن لك أنّ أحدًا لن يصل إلى ملفّاتك في الكثير من الحالات، وحتّى لو سُرق الحاسوب منك فسيظل السارق غير قادرٍ على الوصول إلى البيانات الموجودة فيه لأنّ القرص الصلب مشفّر (باستثناء ما إذا كان الحاسوب المحمول يعمل مثلًا أثناء سرقته، فحينها قد يتمكّن المخترقون من سحب البيانات عبر الذاكرة العشوائية عبر أساليب متقدمة جدًا، لكنّ هذا بعيدٌ عن تفكير أبوعبّود الحرامي الموجود في حارتكم غالبًا). لتفعيل Bitlocker، اذهب إلى لوحة تحكّم ويندوز وببساطة اكتب "Bitlocker" في مربّع البحث وافتحه: انقر على زرّ تفعيل Bitlocker أو "Turn on Bitlocker" الذي تراه بالصورة للقرص الذي تريد تشفيره، ثمّ تابع العملية. إذا سألك عن نوع التشفير الذي تريده، اختر "Encrypt Entire Drive" أو "تشفير كامل القرص". وهذا لضمان تشفير جميع ملفّاتك وليس الجديد منها فقط. إذا سألك عن مكان حفظ مفتاح الاسترجاع (Restore Key)، فيمكنك إمّا طباعته أو نسخه إلى ملفّ تخزّنه في مكانٍ آمن. قد تستغرق العملية بعض الوقت، بعدها ستحتاج إعادة التشغيل ليكتمل التشفير، وسيطلب منك النظام إدخال كلمة المرور التي أدخلتَها أثناء قيامك بإعداد Bitlocker. ملاحظة: لا يعمل Bitlocker على الأنظمة المُقرصنة (Cracked) من ويندوز، كما قد يحتاج تفعيل بعض الخيارات من نظام الـBIOS الخاصّ بالجهاز تُدعى TPM قبل القيام بالعملية. كما لا يعمل جيّدًا على الحواسيب التي تحوي نظاميّ ويندوز ولينكس معًا (يحتاج فقط أن يكون ويندوز مسيطرًا على محمّل الإقلاع الرئيسي للجهاز). كلّ ما سبق هو لتشفير كامل القرص الصلب، لكن ربّما تريد تشفير بعض الملفّات والمجلّدات فقط عوضًا عن ذلك، والحلّ حينها عبر استخدام برامج خارجية مثل VeraCrypt وغيرها. تسمح لك هذه البرامج بإنشاء أقراص صغيرة محلّية (هي في الواقع عبارة عن ملفّات حاويات) داخل نظامك الحالي لتقوم بوضع ملفّاتك الحساسة داخلها. فكّر بها على أنّها مثل "الخزنة" (Vault) داخل نظامك، وهي محمية بكلمة مرور وتستعمل تشفيرًا قويًا، وهكذا لا يمكن لأحدٍ فتحها إلّا إن امتلك كلمة المرور. يمكنك إنشاء هذه الأقراص لتكون بأيّ حجمٍ تريده وتحتاجه: كلّ ما عليك فعله بعد أن تنشئها هو أن تضع ملفّاتك المهمّة داخلها، تمامًا كما تفعل داخل أيّ مجلّد: هذه الملفّات والمجلّدات محمية بكلمة مرور، وبالتالي لا يمكن لأحد فتحها سواك. يمكنك أخذ هذه الخزنة ووضعها في مجلّد عميق داخل نظامك بحيث لا يعرف أحدٌ أنّها موجودة حتّى للمزيد من من الحماية. حذف الملفّات نهائيًا عندما تحذف الملفّات من نظام التشغيل فأنت لا تحذفها بصورة نهائية مباشرةً، بل ما يقوم نظام التشغيل بفعله هو أنّه يزيل الارتباط ما بين نظام الملفّات (Filesystem) وبيانات الملفّ فقط، ولا تُحذف بيانات الملفّ بالكامل إلّا بعد أن تأتي بياناتٌ جديدة لتكتب فوق نفس المساحة التي كانت مخصصة من قبل للملفّ القديم. وهذا هو المبدأ الذي تقوم عليه برامج الاستعادة (Restore Programs) التي تحاول استعادة الملفّات المحذوفة. وهذه مشكلة للكثير من الناس الذين يبيعون حواسيبهم وهواتفهم المحمولة ولا يدركون أنّ ملفّاتهم ربّما ما تزال قابلة للاستعادة من طرف المشترين الجدد بعد أن يبيعوها. وهذا الأمر وإن كان جميلًا لاستعادة بعض ملفّاتك التي حذفتَها عن طريق الخطأ إلّا أنّه سيء للأمان الرقمي خصوصًا إن كنتَ في بيئةٍ خطرة وتريد حذف الملفّات نهائيًا بلا رجعة. وهناك برمجيات متخصصة في حذف الملفّات والأقراص لحلّ هذه المشكلة؛ حيث تحدد الملفّات والمجلّدات والأقراص الصلبة التي تريد حذفها بصورة نهائية بلا رجعة وتتكفّل هذه البرامج بالقيام بالعملية. لكن هناك مشكلة كبيرة فيما يتعلق بحذف الملفّات بصورة نهائية، وهي أنّه تقريبًا من المستحيل ضمان حذفها على الأقراص الصلبة الثابتة (Solid-State Drives - SSD) وبطاقات SD Cards، وهذا لأنّ هذا النوع من أقراص التخزين يضرّه كثرة الكتابة فوق نفس المكان على القرص، فيحتوي تقنيةً تقوم تلقائيًا بتوزيع البيانات الجديدة إلى أماكن متفرّقة على القرص لإطالة عمره الافتراضي [1]. وهذا يجعل كلّ برامج حذف البيانات غير فعّالة حقيقةً عليه، لكنّها قد تساعد بصورة طفيفة. وتشفير كامل القرص الصلب هو الحلّ الحقيقي لحذف الملفّات كما شرحنا في خطوةٍ سابقة، وبعدها يمكنك حذف الملفّات بصورة عادية دون قلق. نكرر: لا تعمل برمجيات الحذف على أقراص الـSSD وبطاقات SD Cards بصورة جيدة لضمان حذف الملفّات بصورة دائمة. لكنّ استخدامها أفضل من لا شيء، إن كان اللاشيء هو البديل لديك. من بين البرامج المُساعِدة HardWipe وEraser، وهي برمجيات سهلة الاستخدام؛ فكلّ ما عليك فعله هو اختيار المجلّدات والملفّات المطلوبة: لاحظ أنّه لا يمكنك حذف الأقراص الخاصّة بالنظام التي قيد الاستخدام حاليًا بصورة كاملة عن طريق هذه البرامج؛ فإذا كنتَ تريد مثلًا بيع حاسوبك وبالتالي تريد حذف كلّ شيءٍ موجودٍ على القرص الصلب فحينها عليك استخدام طُرقٍ أكثر تقدّمًا، مثل أن تثبّت أحد توزيعات لينكس على ذاكرة USB ثمّ تقلع منها ثمّ تحذف كامل القرص الصلب عن طريقها (سنشرحها في قسم تأمين أنظمة لينكس). تأمين أنظمة لينكس أنظمة لينكس لسطح المكتب - وبالتحديد توزيعات مثل أوبونتو ولينكس منت - آمنة وتحترم الخصوصية افتراضيًا على عكس أنظمة ويندوز وماك. لا يوجد إرسال بيانات ولا تعقّب ولا أي شيء لتعطّله افتراضيًا (هناك إمكانية لتعطيل خيار بسيط لإرسال معلومات العتاد عن جهازك إلى كانونيكال، لكنك غالبًا رأيته بنفسك بالفعل فهو يُعرَض عليك أثناء التثبيت). ما يزال هناك بعض النقاط لتأخذها في الحسبان. استخدام مستودعات آمنة تدعم توزيعات لينكس ما يُعرف بالمستودعات (Repositories)، والمستودعات هي مصادر البرمجيات التي يمكنك منها تحميل ما يعرف بالحِزَم (Packages). تمتلك توزيعات لينكس الرئيسية مثل أوبونتو ولينكس منت أكثر من 50 ألف حزمة داخل مستودعاتها الرسمية. قد تكون بعض البرمجيات أحيانًا غير موجودة في المستودعات الرسمية، وعند بحثك عنها على الشبكة تجد أنّ مطوريها يقترحون عليك إضافة مستودعاتهم الخاصّة إلى نظامك من أجل تثبيت برمجياتهم. هذا به مشكلة لأنّ: بمجرّد إضافة مستودعٍ ما إلى نظامك فقد سمحتَ لأصحاب المستودع أن يصلوا إلى كامل نظامك، فيمكنهم مثلًا - من ناحية القدرة - جعل التحديث القادم يحذف كلّ ملفّاتك، أو يشفّرها أو يرسلها إليهم. لا تضمن أنّ هذه البرمجيات الخارجية لا تحوي برمجيات خبيثة أو برمجيات تجسس أو ثغرات أمنية بسبب الاعتماديّات (Dependencies) الموجودة فيها. لا تضمن كذلك أنّ هذه البرمجيات لا تتعارض مع إصدارات الاعتماديّات الموجودة في نظامك، فتخرّبه دون أن تدري. ننصح بسبب ذلك ألّا تقوم بإضافة مستودعاتٍ خارجية إلى نظامك إلّا على أضيق نطاق، ومن أشخاصٍ أو مؤسسات تعرفهم بصورة قوية قبل أن تقوم بذلك. لا تكتفي برؤية المستودع على أحد مدونات الإنترنت فتقوم بإضافته إلى نظامك. إن لم تعرف هل هذا المستودع آمن أم لا، فيمكنك سؤال الخبراء على منصّات المساعدة الشهيرة على الإنترنت وانتظار جوابهم. إدارة التحديثات تتبع توزيعات لينكس منهجًا مختلفًا فيما يتعلّق بالتحديثات. تُثبّت التحديثات الأمنية المهمّة فقط تلقائيًا على أوبونتو ولينكس منت، وعدا عن ذلك يبقى الأمر متروكًا للمستخدم ليثبّت التحديثات متى ما شاء. يمكنك البحث عن التحديثات الحالية أو تثبيتها من برنامج مدير التحديثات (Update Manager): هناك ما يعرف بـ"Snaps" على الإصدارات الأخيرة من أوبونتو، وهي حزم من نوع خاصّ لا تتبع تحزيم البرمجيات dpkg ولا تأتي بصيغة .deb، بل تُثبّت من متجر السناب (Snap Store) الخاصّ بشركة كانونيكال (Canonical) المطوّرة لأوبونتو. وهي برمجيات مُحتواة داخل حاويات (Containers) تحوي اعتمادياتها كلّها في حزمة واحد. جميع تحديثات السناب تلقائية تجري بالخلفية وقت حصولها، بل لا يمكنك تعطيلها حتّى. ننصح بتثبيت آخر التحديثات المتوفّرة بصورة أسبوعية على الأقل بشدّة. التشفير عند تثبيتك لتوزيعة لينكس مثل أوبونتو ولينكس منت، هناك خيارٌ يسمح لك بتشفير كامل القرص الصلب، ننصح باستخدامه بشدّة فهو أسهل شيء لضمان حماية بياناتك: سيتوجّب عليك اتباع خطواتٍ أكثر من ذلك إذا انتهيت من التثبيت بالفعل ونسيت تفعيل التشفير لتفعيله وهي فوق المستوى العادي لقرّاء هذه السلسلة. ننصح بأخذ نسخة احتياطية من ملفّاتك المهمّة ثم حذف نظامك وتثبيته من جديد مع تفعيل خيار التشفير المذكور أثناء التثبيت، فهو أسهل من محاولة تفعيل التشفير بعد التثبيت. إن تشفير الملفّات يحميك من معضلة حذف الملفّات بصورة نهائية على أقراص الـSSD - كما ستقرأ في القسم التالي - وهذا لأنّ التشفير يُطبّق كذلك على الملفّات المحذوفة، وبالتالي تصبح استعادتها شبه مستحيلة من طرف جهة ثالثة. إن لم تُرد تشفير كامل قرصك الصلب فيمكنك على الأقل استخدام برنامج VeraCrypt إن أردت لإنشاء "خزنات" (Valuts) آمنة، حيث تضع فيها الملفّات التي تريد تشفيرها وحمايتها بكلمة مرور. البرنامج يعمل على جميع توزيعات لينكس ويمكن تحميله من موقعه الرسمي. حذف الملفّات والأقراص بصورة نهائية لا تُحذَف الملفّات والأقراص بصورة نهائية على لينكس تمامًا كما على ويندوز، وتحتاج استخدام برمجيات إضافية للقيام بالعملية. وهنا تبرز نفس المشكلة حيث لا يمكن حذف الملفّات بصورة نهائية على أقراص SSD. لكن ما يمكنك فعله - إن أردت - هو حذف الأقراص كاملةً والكتابة فوقها ببيانات عشوائية. هذا يزيد من فرصة تدمير البيانات للأبد بصورة كبيرة، لكن بالطبع ستخسر كلّ بياناتك (يمكنك تطبيقها عبر الإقلاع من ذاكرة USB مثلًا، وهي مفيدة في حال أردت بيع حاسوبك): sudo dd if=/dev/urandom of=/dev/sdX bs=4096 status=progress مع استبدال sdX بالقرص المُراد حذفه بالكامل (استعمل sudo fdisk -l لسرد الأقراص المتوفّرة ثمّ انظر أيّ الأقراص تريد حذفه). إليك ما يفعله هذا الأمر: dd هو اسم البرنامج، يجب استعماله مع صلاحيات الجذر (sudo) للكتابة على الأقراص. if=/dev/urandom نقوم هنا بتحديد مصدر البيانات المُدخلة، وif هي اختصار لـInput file. توجد على لينكس بعض المسارات التي تولّد بيانات عشوائية بصورة مستمرة لبعض الاحتياجات الخاصّة مثل /dev/zero و/dev/urandom، يقوم هذا الأخير بتوليد أرقام عشوائية بصورة غير محدودة. ونستفيد منها نحن هنا بأخذها والكتابة فوق قرص الـSSD بالكامل وفقًا لحجمه تلقائيًا. (مثلًا إذا كان حجمه 300 جيجابت، فما سيحصل هو أنّ الأمر سيكتب 300 جيجابت من البيانات العشوائية على القرص لضمان إزالة البيانات السابقة). of=/dev/sdX نحدد هنا القرص المُراد الكتابة عليه، وof هي اختصار لـOutput File. bs=4096 تعليمة مُساعدة بسيطة، تُخبر البرنامج أن يكتب 4096 بايت من البيانات في الوقت نفسه. status=progress نطلب هنا من البرنامج أن يعرض شريط التقدّم لنا لنعرف أين وصل أُثناء تطبيق الأمر. يمكنك كذلك مراجعة صفحة Solid State drive/Memory Cell clearing على موسوعة أرتش لينكس للمزيد من إرشادات حذف بيانات SSD بالكامل على مختلف أنواع تلك الأقراص في السوق. إذا كنتَ تريد حذف الملفّات بصورة عادية فحينها عليك استخدام التشفير كما في الخطوة السابقة، ثمّ حذف الملفّات والمجلّدات كما تفعل عادةً. عدا عن ذلك لن يكون هناك ضمان. إزالة تاريخ الأوامر هناك ملفّ اسمه .bash_history وهو موجودٌ في مجلّد المنزل الخاصّ بك على كل توزيعة لينكس. يحوي هذا المجلّد كلّ الأوامر التي طبّقتها من قبل على نظامك منذ تثبيته. وهذا قد يشكّل خطرًا أمنيًا بناءً على نوعية الأوامر التي تكتبها وهل تتضمن معلومات حسّاسة أم لا (ولهذا يُستحسن بالمناسبة عدم كتابة كلمات المرور بصورة صرفة داخل الأوامر مهما كان السبب). وهذه هي الميزة التي تسمح للمستخدم أن يفتح الطرفيّة (Terminal) ويضغط على زرّ السهم العلوي على لوحة المفاتيح، فيظهر له آخر أمر قام بتطبيقه على نظامه، وهكذا إلى أن يصل إلى بقيّة الأوامر. كلّ ما عليك فعله هو حذف الملفّ كل بضعة أسابيع أو شهور حسبما تحتاج: rm ~/.bash_history تأمين جهاز الـRouter (الموجّه) والشبكات اللاسلكية غالبًا ما يعطيك موظّف مزوّد خدمة الإنترنت (Internet Service Provider - ISP) اسم المستخدم وكلمة المرور الخاصّين بالموّجه أو الراوتر (Router) عندما يقوم بتركيب الإنترنت في منزلك لأوّل مرّة. يمكنك الوصول إلى لوحة تحكّم الموجّه عبر العنوان 192.168.1.1 داخل متصفّحك (غالبًا هذا هو على معظم أجهزة الموّجهات، لكن يمكن أن يختلف أحيانًا ويمكنك أن تتأكّد منه من دليل استخدام الموجّه أو من العلبة التي يأتي بها). إن لم يزوّدك بهذه البيانات فيمكنك البحث عنها على الإنترنت عبر كتابة اسم طراز الموجّه ورقمه في محرّك البحث، وغالبًا ما يكون admin/admin في المرّة الأولى. عليك القيام بعدّة أشياء لتأمين شبكتك المنزلية بعد أن تفتح لوحة تحكّم الموجّه. تختلف أماكن هذه الأشياء بناءً على الشركة المصنّعة للموجّه ونوعه وطرازه. أوّلًا، قم بتغيير اسم المستخدم وكلمة المرور الخاصّين بتسجيل الدخول إلى لوحة التحكّم، وهذا لمنع المخترقين من الوصول إلى كامل إعدادات شبكتك المنزلية في حال نجحوا - فرضًا - باختراق شبكة الاتصال اللاسلكية في منزلك. يمكنك القيام بذلك من تبويب إدارة المستخدمين الخاصّ بالموجّه لديك. ثانيًا، قم بتغيير اسم شبكة الاتصال اللاسلكي وكلمة المرورّ الخاصّة بها. وهذه عملية سهلة جدًا من لوحة التحكّم. قم كذلك باستخدام تشفير WPA-2 في طلب منك الموجّه تحديد نوع التشفير. اتبع إرشادات كلمات المرور القوية التي سنذكرها في فصل "كلمات المرور" لاحقًا: ثالثًا، هناك غالبًا صفحة تسمّى DHCP Clients أو اسمًا شبيهًا بذلك تريك كلّ الأجهزة المتصلة بالشبكة اللاسلكية الحالية مثل هذا الشكل: يمكنك التأكّد عبرها من أنّ أجهزتك فقط هي المتصلة بالشبكة اللاسلكية، فإذا كان لديك 4 أجهزة فقط في المنزل بينما هناك 7 أجهزة متصلة مثلًا، فحينها هذا يعني أنّ أحدهم قد اخترق شبكة الاتصال اللاسلكية الخاصّة بك ويستخدمها مجانًا على حسابك. أخيرًا، عليك إيقاف ما يعرف بميّزة WPS، وهي ميّزة موجودة داخل معظم الموجّهات. تسمح هذه الميّزة لمختلف الأجهزة بالاتصال بالشبكة اللاسلكية إمّا عبر ضغط زرٍ موجود على الموجّه نفسه عندما تريد ربط جهازك بالشبكة، أو عبر رقمٍ سرّيٍ مكوّنٍ من 8 أرقام تدخله في جهازك عندما تريد ربطها بالشبكة. الطريقة الأولى أكثر أمانًا ولكنّها تسمح لأي شخص أن يشترك بالشبكة بمجرّد ضغط الزرّ، أمّا الثانية فهي كارثية لأنّها تفتح المجال لهجمات القوّة الوحشية (Bruteforce) حيث أنّ كسر الكلمة المكوّنة من 8 أرقام سهلٌ جدًا. يمكنك تعطيل WPS من خيارات الشبكة اللاسلكية: عليك تغيير كلمة مرور الشبكة اللاسلكية كلّ فترة؛ لا تتركها لمدّة سنوات دون تغيير. بل يستحسن أن تقوم بتغييرها كلّ بضعة أشهر بنفسك. استخدام DNS للحماية يمكنك استخدام أحد مزوّدات خدمة أسماء النطاقات (DNS) التي تقوم بتسريع التصفّح وحجب المواقع الإباحية والخبيثة داخل الموجّه الخاصّ بك، وهكذا تضمن أنّ جميع أجهزتك وأجهزة أولادك وأسرتك محميةٌ منها. ستقوم هذه الخدمات بحجب هذه المواقع تلقائيًا ومنعها من العرض إذا طلبها متصفّح الويب الخاصّ بك أو بأحد أفراد أسرتك. توجد هذه الإعدادات غالبًا في إعدادات اتصال الـDHCP الخاصّة بالموجّه: إليك بعضًا من هذه المزوّدات (أدخلها في خانتيّ DNS Server وSecondary DNS Server) وهي قد تختلف من ناحية السرعة وقدرتها على حجب المواقع السيّئة، كما أنّ الأوّل والثالث أمريكيان بينما الثاني روسي (يمكنك تجربتهم واختيار ما تظنه الأسرع والأفضل): OpenDNS: 208.67.222.123, 208.67.220.123. Yandex DNS: 77.88.8.7, 77.88.8.3. CloudFlare Family: 1.1.1.1 (أدخل نفس العنوان في كلا الخانتين). يحميك استخدام خدمة DNS خارجية من معرفة مواقع الويب التي تزورها من طرف المتطفّلين على اتصالاتك. هو ما يُعرف بثغرات "تسريب عناوين أسماء النطاقات" (DNS Leak). وهناك مواقع ويب لاختبار هذا التسريب مثل DNSLeakTest.com. تأكّد جيّدًا من استخدامك لمزوّد DNS خارجي فهو يحميك من عدّة مخاطر. خاتمة صار هكذا كلٌ من حاسوبك والموجّه الخاصّ بك آمنين بصورة جيّدة وفقًا للتعليمات التي شرحناها. هناك المزيد من الأشياء التي يُمكنك فعلها بالطبع للحصول على المزيد من الخصوصية والأمان كاستخدام في بي إن، لكن يمكنك البحث عن هذه الأشياء بنفسك إن أردت على الشبكة أو سؤال المتخصصين في المجال عنها. اقرأ أيضًا المقال التالي: النسخ الاحتياطي وحفظ البيانات في العالم الرقمي المقال السابق: اختيار الخدمات والمزودات في العالم الرقمي النسخة الكاملة من كتاب دليل الأمان الرقمي1 نقطة
-
التجريد – Abstraction نعلم أنَّ الصنف المُشتَق يأخذ خاصياته من الصنف الأب لكن الصنف المُشتَق مستقل تمامًا عن الصنف الأب؛ وقد يكون في بعض الأحيان من الجيد أن نرسم خطوطًا عريضة لآلية سلوك الصنف الابن، وهذه هي مهمة الأصناف والدوال المجردة. إذ أنَّ الصنف المجرد يحتوي على دوال غير مكتملة (أي مجردة) التي يجب أن يملأها الابن لكي يكون صنفًا وعدا ذلك سيكون صنفًا مجردًا أيضًا. بكلامٍ آخر، الصنف المُجرَّد (Abstract Class) هو صنف يحتوي على أسماء دوال دون كتابة الشيفرات المسؤولة عن عملها وتسمى تلك الدوال بالدوال المجردة، وقد يحتوي أيضًا على دوال كاملة اعتيادية تؤدي وظيفتها تمامًا. انظر إلى المثال الآتي لمزيدٍ من الإيضاح: <?php // تعريف صنف مجرد abstract class AbsClass { function __construct() { echo "this is an abstract class <br>"; } // دالة مجردة abstract public function abs_function(); function full_function() { echo "this is not an abstract function <br>"; } } class SubClass extends AbsClass { function __construct() { echo "this is child class <br>"; parent::full_function(); } // تعريف الدالة المجردة public function abs_function() { echo "this is completed abstract function <br>"; } } $obj = new SubClass(); $obj->abs_function(); ?> نستعمل الأصناف المجردة عندما يلزمنا إنشاء طريقة محددة للتعامل مع عدِّة أصناف مُشتقَّة، التي قد تتشارك ببعض الوظائف. ملاحظة: لا يمكن إنشاء كائن من صنف مجرد، حيث لا يمكن إلا اشتقاق تلك الأصناف. يستعمل الصنف المجرد لتقييد عمل الصنف الابن. الواجهات interfaces من بين الحالات التي نستعمل فيها الواجهات (interfaces) هي عندما نريد تطبيق التعددية الشكلية أي أن تكون طريقة تعاملنا متشابهة مع عدِّة أصناف. الواجهة هي مجموعة من الدوال المجردة أي أنك تعرف اسم الدالة مع المعاملات التي تقبلها لكن دون تحديد طريقة عمل الدالة، ويمكن للصنف أن يستعمل أكثر من واجهة، لكن يجب أن يعيد تعريف كل الدوال الموجودة في تلك الواجهة، انظر إلى المثال الآتي لأخذ فكرة عن الواجهات: <?php // تعريف واجهة interface MyInterface { // abstract functions // all must be public public function display(); public function another($argument); } // واجهة أخرى interface AnotherInterface { public function complete_it(); public function one_more(); } class Parent { function parent_fun() { echo "parent function"; } } // صنف يشتق صنفًا آخر ويستعمل واجهة class Demo extends Parent implements MyInterface, AnotherInterface { public function display() { echo "display complete"; } public function another($argument) { #code } public function complete_it() { #code } public function one_more() { #code } } ?> نستعمل الواجهات عندما نريد إنشاء طريقة موحدة للتعامل مع عدِّة أصناف، فمثلًا، نُنشِئ واجهة اسمها Database فيها دوال مجردة مثل select و insert وغيرها، ثم نستعمل تلك الواجهة في صنف MySQL وفي صنف SQLite، ونعيد تعريف الدوال الموجودة في الواجهة بما يلائم طريقة عمل كل نوع من أنواع قواعد البيانات. وبهذه الطريقة نستطيع أن نستعمل قواعد بيانات MySQL أو SQLite بنفس الآلية تمامًا. ملاحظة: يجب أن تكون جميع الدوال داخل الواجهة عامةً، يمكن أن يرث صنفٌ ما صنفًا آخر ويستعمل واجهة بنفس الوقت، لكن يجب أن يكون تعريف الاشتقاق قبل الواجهات. السمات Traits قدم الإصدار 5.4.0 من PHP ميزة السّمات Traits، وهي طريقة تسمح بإعادة استعمال الشيفرات في اللغات التي لا تسمح بالوراثة المتعددة، وهي تقلل من المحدوديات الناتجة عن عدم السماح بالوراثة المتعددة عن طريق إتاحة استعمال مجموعة من الدوال في عدة أصناف. أي لو كانت عندك مجموعة من الدوال العامة، وترغب في مشاركتها بين أكثر من صنف، فضعها في Trait ثم استعملها (use) في تلك الأصناف. يُعرف Trait عبر ذكر الكلمة المحجوزة trait متبوعةً باسمه، ثم تُعرَّف الدوال داخله. وتُستعمل الكلمة use عند تعريف صنف يستعمل Trait معين كما في المثال الآتي: <?php trait HelloWorld { public function sayHello() { echo 'Hello World!'; } } class World { use HelloWorld; } $obj = new World(); $obj->sayHello(); // ستُطبع عبارة Hello World! ?> يمكن إعادة تعريف الدوال داخل الأصناف التي تستعمل Trait معيّن، كما في المثال الآتي: <?php trait HelloWorld { public function sayHello() { echo 'Hello World!'; } } class World { use HelloWorld; } class NewWorld { use HelloWorld; public function sayHello() { echo 'Hello Universe!'; } } $obj1 = new World(); $obj1->sayHello(); // ستُطبع عبارة Hello World! $obj2 = new NewWorld(); $obj2->sayHello(); // ستُطبع عبارة Hello Universe! ?> يمكن استعمال أكثر من Trait في نفس الصنف عبر ذكر أسمائهم في عبارة use مفصولًا بينهم بفاصلة، لاحظ أنه إذا عُرِّفَت دالتين بنفس الاسم في أكثر من Trait، ثم استعملناها في صنف، فسيحدث تضارب وتظهر رسالة خطأ fetal error، ويمكنك حل مشكلة التضارب في الأسماء عبر استعمال المعامل insteadof أو عبر as كما في المثال الآتي: <?php trait A { public function smallTalk() { echo 'a'; } public function bigTalk() { echo 'A'; } } trait B { public function smallTalk() { echo 'b'; } public function bigTalk() { echo 'B'; } } class Talker { // لدينا في A و B دالتين اسمهما bigTalk و smallTalk // ما يلي سيجعل الصنف يستعمل الدالة smallTalk من B عوضًا عن مثيلتها في A // و bigTalk من A عوضًا عن B use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; } } class Aliased_Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; // لاحظ كيف استعملنا as لتغير اسم الدالة في الصنف B::bigTalk as talk; } } ?> مصادر مقالة Abstraction and Interface in PHP لصاحبها Harish Kumar فصل Objects في كتاب Practical PHP Programming فصل البرمجة غرضية التوجه في كتاب تعلم البرمجة بلغة PHP صفحات Object Interfaces و Traits في دليل PHP وغيرها.1 نقطة