مفهوم Trigger في قواعد البيانات

من المفاهيم المهمة في قواعد البيانات هو Trigger (طبعا ترجمته للعربي تنطي غير معنى ) ، هذا قصته مشابهه لStored Procedure (واذا ماعندك فكرة عنها فعادي ).
خلي نتخيل سيناريو معين ، عندك جدول معين بقاعدة البيانات ،وتريد كلما تعدل على بيانات بداخله يحفظ البيانات الجديدة والقديمة ! طبعا هذا السيناريو يتعلق ب  Versions يعني تحتفظ بأكثر من نسخة للبيانات الي صارت عليها تغييرات .
المهم بالطرق التقليدية لحل هذا السيناريو تسوي جدول ثاني ، وتربطه بالجدول الاساسي بعلاقة one to many ، وبعدين عند اي تحديث تعمل اضافة insert للجدول الثاني  قبل استعلام update على الجدول الاول.
هنا لو ردنا نطبق مفهوم Trigger فممكن تكتب كود(مثلا اضافة للجدول الثاني ) وعند اي تعديل يصير على الجدول الاول فأن الكود يشتغل بصورة تلقائية .
هذي فكرة  trigger انو يكون عندك كود يشتغل كلما يصير حدث على جدول معين ، والحدث نقصد مثلا اضافة سجل ، حذف سجل او تعديل على سجل (هذا النوع من التريجر يسموه DML ) ، او عند حذف جدول ، اضافة جدول ، او التعديل على جدول (وهذا النوع يسموه DDL Trigger ).

ماهي تقنية Automated Offside technology

بما ان الغالبية هذي الفترة متابع لكأس العالم بقطر ، فاليوم نسولف عن واحدة من التقنيات الجديدة التي استخدمت لأول مرة بهذه البطولة وربما سوف تعمم على باقي البطولات وهي تكنولوجيا تحديد التسلل Automated offside technology .
من ضمن المجالات الفرعية بالذكاء الاصطناعي اكو مجال اسمه انظمة صناعة القرار المعتمدة على الذكاء الاصطناعي ،وهذي فكرتها ننطي بيانات لنظام ذكاء اصطناعي بالزمن الحقيقي ويحلل البيانات وينطي القرار بدقة عالية جدا وبسرعة كبيرة .
هنا الفيفا استعانت ببعض الشركات ورادت تستفاد من الذكاء الاصطناعي بموضوع التسلل لان اغلب اخطاء الحكام تقع فيه ، فأخترعوا حل وهو تكنلوجيا تحديد التسلل الي هي تطبيق من تطبيقات انظمة صناعة القرار .
فكرة هذي التكنلوجيا انو نصبوا ١٢ كاميرا عالية الدقة بسقف الملعب وظيفتها تتبع حساس مزروع  بالكرة (بالعراقي الطوبة) وايضا تتبع ٢٩ نقطة بجسم كل لاعب مثلا ( الرأس ، القدم ، اليد ..الخ ) وموقع النقاط بالملعب (خمسين صورة تاخذ بالثانية الواحدة) ، وترسل البيانات لنظام موجود على خادم Server الي بدوره يحلل هذي البيانات ويحدد اذا اكو تسلل او لا ويرسل تنبية وصور الى شاشات غرفة الفار الي بيها حكام يشوفون الصور وينطون خبر لحكم الساحة لهذا تلاحظ دائما يتأخر حكم الساحة بأتخاذ قرار التسلل لان ينتظر النتائج من حكام الفار .
عموما هذي التقنية اثبتت نجاحها وخصوصا في مباراة المنتخب السعودي والارجنتيني وربما تتوسع تطبيقها لتشمل اكثر من التسلل .
وبنفس الوقت ارى زيادة تطبيق التكنولوجيا بكرة القدم تفقدنا متعة مشاهدة مباريات كرة القدم .

توزيع الاحمال 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 .
وفي الجزء الاخير رفع اجزاء المشروع على الانترنت .
رابط الكورس :

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

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

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


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

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

تزوير بصمة الإصبع 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