توزيع الاحمال Load Balancing

توزيع الاحمال Load Balancing
لنأخذ مثال لو كان عندك سيرفر ، وعندك خدمة مثلا موقع الكتروني ، ووضعت الموقع على السيرفر الاول وأشتغل بصورة طبيعية ، بعد شهر زاد عدد الاشخاص الذين يتصفحون الموقع (اقصد الذي يتصفحون الموقع بنفس اللحظة) ، هنا سوف يحصل تأخير في استجابة السيرفر للمستخدمين الذين يطلبون منه تصفح الموقع .
طيب ماذا لو أردت ان يستجيب السيرفر بصورة اسرع ؟ اعمل ترقية للسيرفر !
ممكن لكن ربما السيرفر وصلت للحد الاعلى للمواصفات التي يدعمها !!!
طيب ماذا لو السيرفر توقف عن العمل ؟
هنا كمهندس ايتي او متخصص في مجال البنية التحتية ومراكز البيانات والانظمة وايضا حتى لو كنت مهندس شبكات يجب ان تدرس السيناريوهات قبل اطلاق اي خدمة ، وواحد من اشهر هذه السيناريوهات هو اعلاه .
والحل ؟ هنا ظهر اللود بلانس وهو عبارة عن اداة نضعها امام السيرفر وفكرته توزيع الطلبات التي تأتي بنفس الوقت على السيرفرات وبالتالي التقليل من التأخير في الاستجابة .
عملية توزيع الطلبات لا تكون عشوائية وانما هناك عدة طرق(خوارزميات) للتوزيع وحسب الحاجة وكالتالي:
الطريقة الاولى – Round Robin – وفكرته توزع الطلبات الانية على كل السيرفرات المستضيفة للخدمة تزامنيا (يعني مثلا اذا سيرفرين واستلمت طلبين فكل طلب يذهب لسيرفر).
الطريقة الثانية – Least Connections – فكرته توزع الطلبات على السيرفرات التي لديها اقل عدد من الطلبات (شلون) يعني لنفترض نفس المثال اعلاه والسيرفر الثاني كمل تنفيذ الطلب بينما الاول لازال يعالج الطلب الذي وصله ، فعندما يأتي طلب ثالث فهنا سوف يذهب للسيرفر الثاني ، بينما لو استخدمنا الطريقة الاولى فأن الطلب يذهب للسيرفر الاول.
الطريقة الثالثة Least Time – فكرتها لو كان السيرفرات عليها نفس العدد من الطلبات ، فأن الطلب الذي يأتي وحسب خوارزمية معينة سوف يرسل الى الخادم الذي لديه اقل عدد و الاسرع في تنفيذ الطلبات.
الطريقة الرابعة – Hash وهذه الطريقة تعتمد على شي نسميه بالمفتاح يعني مثلا اذا وصل طلب من كذا مستخدم فيجب تحويله الى كذا سيرفر ، او مثلا اذا الاشخاص الذين طلبو الموقع من العراق فيجب ان ينفذ المعالجة السيرفر الموجود بالعراق واذا الطلب من مصر ،فيجب ان ينفذ الطلب السيرفر الموجود في مصر وهكذا .
الطريقة الخامسة Random with Two Choices – هذه خوارزمية تأخذ سيرفرين بصورة عشوائية وتقارن منو اقل عليه اقلل عدد من الطلبات وترسل له الطلب الجديد .
بالمقدمة قلنا اللود بلانس هو اداة ، لكن هل هي سوفتوير او هاردوير ؟
اللود بلانس ممكن يكون فقط سوفتوير ( او فيجر موجودة بواحد من الاجهزة مثلا اجهزة الفايروول) او جهاز يتكون من هاردوير وسوفتوير .

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

كورس fullstack

اكتمل اليوم الكورس الرابع من مسار fullstack web development الخاص بمبادرة ICT Taskforce وتم رفعه على اليوتيوب .
الكورس يتألف من اربعة اجزاء
الجزء الاول مخصص لشرح الداتا بيس (MongoDB) .
اما الجزء الثاني فهو لبناء Backend بأستخدام منصة Nodejs واطار العمل Expressjs .
بينما الجزء الثالث لبناء FrontEnd بأستخدام مكتبة Reactjs .
وفي الجزء الاخير رفع اجزاء المشروع على الانترنت .
رابط الكورس :

ماهو Sharepoint وماهي الخدمات التي يقدمها ؟

بالبداية ماهو الشير بوينت؟ بأختصار يقولون عنه هو منصة تعاونية Collaboration Platform وايضا نظام لأدارة الوثائق Documents Management System .
لحظة !
شنو منصة تعاونية وشنو تقصد بنظامDMS  ؟؟؟
المنصة نقصد بي ان يكون اجزاءه او خدماته تعتمد جميعها على قاعدة بيانات موحدة وبالتالي تتعاون فيما بينها ، اما المقصود ب DMS فيعني ادارة ، مشاركة ، تخزين ، والبحث في الوثائق والمعلومات .
ماواضح !
نعم ، الشير بوينت تصوره عبارة عن مكان بي مجموعة من قواعد البيانات الجاهزة لتخزين المعلومات والوثائق التي لديك ، وبنفس هذا المكان تقدر تعمل مواقع بسهولة حسب الي تحتاجه مثلا انت تشتغل بشركة وتريد تعمل تطبيق ويب لشؤون المواطنين ، او لطلبات العمل .. الخ ، هنا تقدر تعمل هذا التطبيق من داخل الشير بوينت وبسهوله لان قاعدة البيانات موجودة وكأنما انت تعمل تخصيص للقاعدة بحيث تناسب التطبيق وهذي نسميها Content Management system .
او يختصروها بCMS مثل الوورد بريس .
طيب  هنا سؤال ، ليش ما اني اطور التطبيق بدون الحاجة للشير بوينت ؟ كلامك صحيح اذا كان عندك تطبيق او تطبيقين او عدد قليل من التطبيقات ، لكن لما يكون عندك بيانات كثيرة وتطبيقات كثيرة فهنا الافضل تستخدم الشير بوينت ! ونقطة اضافية الشير بوينت مو فقط CMS  وانما يوفرلك خدمات اضافية قوية وضرورية مثل Assignworkflow (تتبع سير العمل ) وهذا يعني ان الشير بوينت يقدر يتتبع حركة وثيقة مثلا من قسم الى اخر وينظم الحركة .
ايضا ادارة وخزن وحماية الوثائق ، بالاضافة للبحث فيها ، وكذلك موضوع الحماية وايضا اذا كان عندك Active Directory وتطبق سياسات على المستخدمين والتكامل مع مجموعة الاوفيس ، وايضا من ضمن الخدمات التي فيه هو BI (Business Intellegence ) وهذا يسويلك تحليل ويعطيك احصائيات بالوقت الحقيقي للبيانات الي عندك بالشير بوينت و.
طيب سؤال اخر هل احتاجه كشخص ؟ لا ، وانما فقط ينفع مع المؤسسات .
سؤال هل الشير بوينت يأتي فقط على الكلاود ؟
لا ، ممكن تستخدمه على الكلاود ويسموه Shairepoint online او تشتري لايسنس وتنصبه سيرفراتك Premise .
ميزاته يوفر العديد من الخدمات الضرورية ، وايضا سهل على المستخدم على اعتبار انه من مايكروسوفت التي تركز كثيرا على سهولة الاستخدام User Friendly 😊.
عيوبه يعتمد على محرك قواعد البيانات Sql Server فقط وبالتالي لا تستطيع استخدام محرك اخر مثل Mysql او الاوراكل (وهذا نوع من الاحتكار من مايكروسوفت😏 ) بالاضافة سعره نوعا ما غالي.

هل شهادات الخبرة ضرورية ؟

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

شلون يشتغل Internet Download manager (IDM) ؟ وشلون يزيد سرعة الانترنت ؟


بالبداية لما تريد تنزل ملف من الانترنت , هنا انت تعمل طلب Request للسيرفر الموجود عليه الملف , وبعدها يجاوبك السيرفر بالموافقة (Response ) ويرسل الملف بعد ما يعمله ترميز الى النظام الثنائي bits ويجمع كل 8بت بشكل بايت ويرسلهم لحاسوبك Stream , بجهازك تتخزن هذي البايتات على الهارد ديسك بصورة وقتية ولما يكمل استلامها جميعا يعمل فك الترميز ليعطينا الملف الأصلي هذي فكرة التنزيل أي شي من النت او الشبكة .
اما بالنسبة لـ IDM يشتغل بنفس الفكرة لكن فرقه عن بقية برامج التنزيل انه يعتمد على خوارزمية , وهذه الخوارزمية تشتغل على ميزة موجودة في اغلب الخوادم (وليس جميعها) .
الميزة هذه تسمح للسيرفر ان يستقبل اكثر من طلب من نفس المستخدم على ملف معين , طيب وهذه شنو علاقتها بخوارزمية IDM ؟ الخوارزمية هذه تفحص حجم الملف وسرعة الشبكة وبالخصوص الجزء الفارغ من Bandwidth حتى تستغله , وبمعادلة رياضية تحسب العدد افضل عدد مناسب لتجزئة الملف فعلى سبيل المثال لو كان 4 وحجم الملف 1 ميغا بايت , هنا سوف ترسل طلب للخادم تطلب منه يرسل لها الملف من البايت الأول الى البايت 255 , وطلب ثاني تطلب منه الملف بشرط من البايت 256 الى 511 , ثم طلب ثالث من البايت 512 الى 767 , ثم طلب رابع من البايت 768 الى اخر بايت .
فهنا صار التنزيل على اربع أجزاء كل واحد مستقل عن الثاني وحسب السرعة الافتراضي للشبكة , وبعد اكمال التنزيل للاجزاء الأربعة تعمل هذه الخوارزمية تجميع للاجزاء وفك ترميزهم فيعطينا الملف الأصلي .
بالنسبة للجزء الثاني من السؤال , IDM لا يزيد سرعة الانترنت , وانما يستغل Bandwidth بأفضل صورة , بمعنى لا لو كان bandwidth للخدمة 100 كيلوبت , وبالحالات الاعتيادية انت مستخدم فقط ربعها , هنا IDM سوف يستغل الجزء المتبقي بعملية التنزيل .

الفرق لما نخلي الحاسوب بوضع sleep او Hibernate ؟


غالبيتنا مرات يترك الحاسوب بحالة Sleep او Stand by والبعض الاخر بحالة Hibernate او Safe Sleep .
طبعا الحالتين غرضهم هو التقليل من استهلاك الطاقة ، و ربما البعض يعتبرهم نفس الشي، لكن تقنيا يختلفون من ناحية نسبة تقليل صرف الطاقة وسرعة الإقلاع.
ان Sleep يحفظ البيانات وحالة الحاسوب بالرام ويطفي بقية قطع الحاسوب (مثل المعالج والهارد ديسك ..الخ) وبالتالي يقلل بصورة كبيرة من استهلاك الطاقة ، وهذي دائما نستخدمها مع اللابتوب وتعتبر سمة feature من سمات نظام التشغيل ، وبمجرد ما نضغط على زر البور تقلع الحاسبة بسرعة .
اما Hibernate فكرتها مشابه ل Sleep لكن بدل من الرام فهي تخزن البيانات والحالة بالهارد ديسك وتطفي بقية القطع بما فيها الرام ، وبالتالي تقلل استهلاك الطاقة بنسبة كبيرة جدا واكثر حتى من حالة Sleep ، لكن من ناحية الإقلاع عند الضغط على زر البور فهي تعتبر أبطئ من Sleep .
دائما السبات Hibernate تستخدم مع الحاسبات المكتبية ، ونستفاد منها لما نريد نقلل من استهلاك الطاقة لفترات طويل مثلا ايام ، عكس sleep الي تكون لفترات اقل من Hibernate.

كيف تعمل الهندسة العكسية على البرمجيات

لغات البرمجة  تصنف إلى ثلاثة ١- لغات المستوى الادنى LLL – هذه تكتب بالأرقام الثنائية وتتعامل مباشرة مع الهاردوير ،وتسمى ب Machine Language. ٢- لغات المستوى الأوسط- وصيغتها تكتب باللغة الإنجليزية وتعتبر نوعا ما صعبة ، وتحتاج إلى مترجم يحولها إلى لغة الآلة وتسمى ب Assembly Language. ٣- لغات المستوى الأعلى- وهذه تحتاج إلى مترجم او مفسر لتحويلها إلى لغة الآلة،  وتعتبر أقربهم إلى لغة الإنسان وابسطهم. في مجال الحماية لدينا اختصاص يسمى بالهندسة العكسية Reverse Engineering وظيفته التعديل على البرمجيات مغلقة المصدر Closed Source  وهذا التعديل قد يشمل اللايسنس او عدد المستخدمين او تفعيل ميزات معينة الخ أبرز شكل على الهندسة العكسية الكراكات. نحن نعرف ان البرنامج ينفذ بعد أن يترجم إلى لغة الآلة بشكل شفرات ثنائية،  هناك ادوات تقوم بتحويله من لغة الآلة إلى لغة Assembly  حتى نستطيع التعديل عليه بأستخدام ما يسمى ب disassembler  . مفهوم الهندسة العكسية لا يطبق فقط على البرمجيات وإنما في كل الصناعات الأخرى(التقليد ) .

الكشف عن بصمات الاصابع المزورة

تزوير بصمة الإصبع Fingerprint اليوم تعتبر واحدة من أكبر التحديات الي تواجه الانظمة البايومترية وهذي نقصد بيها الانظمة الي تعتمد على بصمات الأصابع في التحقق من المستخدم مثل الي موجودة بالموبايلات .
على العموم السؤال الاهم كيف نميز بين البصمات الحقيقية والمزوره ؟ طبعا من المستحيل نقدر نميز بينهم بالعين المجردة ، ونقصد بالبصمة المزورة Fake fingerprint يعني مثلا اثر بصمتك على شاشة التلفون ممكن اي شخص بأستخدام مواد سيلكونية يسحبها وتكون عنده بصمتك .
نرجع للسؤال والاجابه عليه تحتاج كلام لساعات لكن بالمختصر هناك طريقتين
الأولى : تكون عن طريق استخدام حساسات وكاميرات عالية الدقة ، وبأستطاعتها تميز البصمة الحقيقة عن المزورة لكن المشكلة هذي مكلفة جدا .
يعني مثلا لو أردنا تطبيقها بأجهزة الموبايل ذات المواصفات البسيطة والأسعار الرخيصة بالتالي تكون كلفتها أغلى من سعر الموبايل.
الثانية : تكون عن طريق برمجيات ، وهذي حاليا كنز للبحوث ، فالطرق المقترحة باستخدام المشين ليرننك او خوارزميات الديب ليرننك تكون عن طريق استخراج سمات من صورة البصمة(سواء مزورة او حقيقية ) ومقارنتها مع البصمة الاصلية لكن المشكلة لازالت دقة النتائج دون المطلوب .

السطر الأعلى من الصورة بصمات حقيقية ، والاسفل بصمات مزورة .

ماهو Closure ؟ ومالفائدة منه ؟


وحتى نعرف شنو closure لازم نفهم بالبداية Scopes .
مفهوم scope يقصدون بي حدود الوصول للمتغير بمعنى ثاني المكان الي يحدد بي المتغير بحيث ما نقدر نوصله من خارجه اما برمجيا ممكن يكون كتلة من الكود Block of Code مثلا دالة او عبارات الشرط .. الخ .
بمعنى ثالث لو عرفنا متغير داخل دالة ، فهذا المتغير يسموه متغير محلي Locally ، بحيث ما ممكن نوصله من خارج الدالة ، لهذا الدالة تسمى هنا Scope .
بأغلب الحالات ممكن يكون عندك سكوبس متداخلة يعني واحدة داخل ثانية ، مثلا لو عندنا سكوب اسمها خارجية اسمها Outer وداخلها سكوب داخلية اسمها Inner بالتالي برمجيا من داخل السكوب Inner نوصل لأي متغير بالسكوب Outer ، بينما من خارج Inner ما نقدر نوصل لأي متغير داخل Inner وهذا يسموه بسكوب Lexical .
طيب وهذا شنو علاقته بال Closure ؟
ان Closure بالاصل عبارة عن دالة داخلية مثل inner بالمثال اعلاه ، لو فرضا الدالة Inner احتاجت قيم بمتغير موجود ب Outer فسوف تصل له حسب مفهوم Lexical طيب ماذا لو استدعينا ونفذنا الدالة Inner بداخل سكوب اخر خارج Outer شنو الي راح يصير ؟
الي يصير تبقى Inner عندها امكانية الوصول للمتغير الموجود ب Outer حتى لو تنفذت بسكوب ليس له علاقة ب Outer .
هذا هو مفهوم Closure ! طيب والفائدة منه ؟
يجعلك تفهم حالة المتغيرات من سكوبس مختلفة وبالتالي تسيطر عليها ويستخدم مع لغات البرمجة التي Functional Programming