كيف اختار اللغة البرمجية المناسبة لتعلمها ؟


اذا مفكر تختص بتطبيقات الويب – تعلم الجافا سكربت ومنصة النود جي اس وnosql
اذا مفكر تختص بتطبيقات الموبايل – تعلم فلاتر والدارت وNosql
اذا مفكر بتطبيقات المكتب – تعلم الجافا او السي شارب وأي محرك قواعد بيانات SQL
اذا مفكر بالذكاء الاصطناعي – البايثون.
اذا مفكر بتطوير الالعاب – السي شارب ، السي بلس بلس وقد تحتاج للبايثون.
اذا مفكر تختص بتحليل البيانات – لغة R و البايثون والبور باي كأداة .
بمجال السيكورتي – البايثون ، السي .
السبب الاكبر لأفضلية لغة على اخرى في كل مجال هو توفر الموارد (المكتبات ، اطر العمل .. الخ) والمجتمعات الكبيرة .

لماذا الذكاء الاصطناعي لا يتنبأ بالزلازل ؟


حاليا اكو بعض نماذج الذكاء الاصطناعي اعطت دقة جيدة مختبريا ، لكن المشكلة مثل هكذا نماذج تحتاج بيانات ضخمة ومعالجة عالية جدا بالتالي فهذا عائق كبير امام الباحثين بهذا المجال .

ايضا لحد الان لا يوجد نمط ممكن الاعتماد عليه في التنبأ .
بسنة ٢٠٢٢ اعلنت اكاديمية سينيكا الاكاديمية وبالتعاون مع NCHC عن تطوير نموذج ذكاء اصطناعي وبدقة عالية ، النموذج يكدر يتنبأ بالزلزال اذا درجته ٦ او اعلى حسب مقياس ريختر قبل ٢٤ ساعة من حدوثة بالاعتماد على التغييرات الي تصير بالطبقات التكتونية لآخر ثلاثين يوم .
النموذج تم تدريبة على بيانات ضخمة داخل سوبر كومبيوتر .
ايضا لاحظ علماء الزلازل ان استهلاك الكهرباء بالغلاف الجوي يتغير بنصف قطر ٥٠ كيلومتر من مركز الزلزال قبل حدوثة وهذا ممكن يفيد كنمط لتطوير نموذج ذكاء اصطناعي عليه .

لماذا يفضل مطوري الذكاء الاصطناعي المعالجة على كارد الشاشة بدل من CPU

نسولف اليوم عن موضوع مهم لمطوري تطبيقات الذكاء الاصطناعي او حتى الباحثين بهذا المجال وهو ليش هؤلاء يفضلون تدريب المودلز (نماذج الذكاء الاصطناعي ) على كارت الشاشة بدل المعالج ؟ ايضا ليش بعملية تعدين العملات الرقمية ايضا يفضلون كارت الشاشة على المعالج ؟
كبداية اي تطبيق هو عبارة عن مجموعة من الاوامر والبيانات الي تحتاج لمعالج يعالجها ، فهنا لو كان عندنا بيانات كبيرة وايضا عمليات معالجة كثيرة فنحتاج الى معالج عالي السرعة هذا بالطرق التقليدية ويبدي ينفذ سطر بعد سطر بعملية تسلسلية ، بعدين من ظهر موضوع المعالجات الداخلية Cores حل المشكلة ،لكن مقابل هذا تطورت التطبيقات اكثر واحتاجت معالجة اكثر والبيانات صارت اكبر واكبر .
هنا رجعوا لتقنية مثيرة للاهتمام وهي المعالجة المتوازية يسموها Prarallel Computing  وهذي تتطلب معمارية المعالج يكون بيها اكثر من معالج وايضا سوفت يدير هالشي .
طيب وشنو علاقة هذا بهذا ، اني اكولك هنا صار التطبيق ممكن نوزعه على جميع الكورز بالمعالج بدل كور واحد فيكون التنفيذ اسرع ، لكن ؟ شكم كور بالمعالج ؟
حاليا بالحاسبات الشخصية ممكن يوصل ل١٦ كور وسعره يكون غالي ، طيب واذا عندك معالجات حتى ١٦ كور متنفع وياه ؟ اي نعم بعض نماذج الذكاء الاصطناعي تحتاج اكثر من هذا ! والحل ؟
هنا قالوا ليش ما نستفاد من كارت الشاشة ؟ اي نعم ، الشركات الي تصنع هذي الكارتات مثل Nvidia  و AMD استغلت الوضع حتى تخلي كارت الشاشة مو مجرد معالج رسومي بسيط ، فغيرو بمعمارياتهم و عملوا منصات برمجية للمطورين حتى يرغبون الناس بكارت الشاشة .
فمثلا انفيديا عملت منصة سمتها CUDA ووفرت بيها كثير اشياء مثل ادارة الميموريز والتولكتز .. الخ والاقوى وفرت كورات جدا كثيرة بالكارت مشابهه لكورات المعالج CPU سمتها CUDA Cores وايضا كورات لمكتبة Tensor  .
خلي نضرب مثل تخيل اعلى معالج بالسيرفرات يوصل عدد الكورات بي تقريبا ١٢٨ ، لكن كارت الشاشة مثلا RTX  3090  بي اكثر من عشرة الاف   CUDA Cores !!!
لكن ! هذي المنصة وكوراتها و Tensor Cores مو لكلشي تستخدمها ، وانما للمطورين يكدرون يستخدمونها حتى ينفذون (يدربون ) مودلاتهم على هذي الكورات بالتوازي  ، او التعدين بالعملات الرقمية يعني الموضوع برمجي. حتى بالسيارات ذاتية القيادة هذي الكارتات مهمة جدا بيها بالمعالجة بسبب ضخامة البيانات.
وايضا حتى مكتبة Tensor الخاصة بتطبيقات الذكاء  .
طيب و AMD شصار معاه ؟ ايضا نزلت منصة مشابه لCUDA سمتها ROCm لكن مو بقوة CUDA   .
لهذا السبب المعالجة الي تكون بكارت الشاشة (المتوازية) اسرع بكثير .
الموضوع اعلاه مختصر بسيط ، فيه تفاصيل كثيرة لم نتطرق لها .

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

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

محاكاة شبكات الطرق والتقاطعات

واحد من اسهل وافضل انظمة المحكاة للطرق والتقاطعات هو SUMO ، هذا النظام مفتوح المصدر ، وتم تطويره من قبل وكالة الفضاء الالمانية .
طبعا النظام جدا مفيد للاشخاص الي يدرسون موضوع تخطيط الطرق والتقاطعات بأستخدام الذكاء الاصطناعي ، بالاضافة ممكن تطبيق اي خوارزمية من خلال نمذجة المحاكاة والعمل عليها برمجيا .
واستدعاء شبكة خرائط الطرق ليعمل لها محاكاة سواء من OpenstreetMap او اي نظام اخر.
اعتقد يدعم ثلاث لغات برمجية البايثون ، الجافا ، السي بلس بلس .
كذلك بداخله مجموعة حزم مثلا واحدة لرسم الخرائط ، واحدة للنمذجة .. الخ .
حتى جماعة transition of control ToC ممكن يستفادون منه .
https://www.eclipse.org/sumo/

مشكلة حجم البيانات في السيارات ذاتية القيادة

وحدة من مشاكل السيارات ذاتية القيادة هي حجم البيانات .
طبعا كبداية السيارات الذكية او ذاتية القيادة يصنفوها خمس اصناف حسب نسبة القيادة الذاتية .
يعني مثلا الصنف الاول تكون القيادة الذاتية فيها بسيطة مثلا تقدم السيارة للامام او للخلف اما الصنف الخامس فمعناه قيادة السيارة وتحركها بالطرق تكون ذاتية ولحد الان للوصول للصنف الخامس هناك عدة تحديات ابرزها البيانات ، شلون ؟
كلما تكون السيارة ذاتية القيادة تماما معناه تحتاج الى حساسات كثيرة وكاميرات عدة عالية الدقة وثلاثية الابعاد ، وكل هذه الحساسات والكاميرات هي مصادر توليد بيانات مستمرة كلما تحركت السيارة ، هذه البيانات يتم معالجتها من خلال نموذج ذكاء اصطناعي كسوفتوير (Reinforcement Learning ( اما الهاردوير فيكون على كارت شاشة GPU ذو مواصفات عالية وهنا تتنافس NVIDIA و AMD بهذا المجال .
المشكلة هذه البيانات وين تتخزن ؟
الخيارات المطروحة اما كل حساس او كاميرا يكون بيها خزن ، او الخيار الاخر تكون خزن مركزي لكل هذه الاجهزة ، والمشكلة الاخرى شلون تنتقل هذه البيانات بين الاجهزة .
بوحدة من الاختبارات وصل حجم البيانات المتولدة من الحساسات والكاميرات خلال يوم واحد الى ١٠٠ تيرا !!!
شركة Seagate المتخصصة بصناعة اجهزة الخزن تقول ممكن تكون كلفة اجهزة الخزن عشرات الالاف من الدولارات وبالتالي ستكون السيارة مكلفة ومعناه فشل هذا المشروع .
حاليا هذه المعضلة مفتوحة للبحث العلمي ،وبنفس الوقت هناك تعاون بين الشركات لحلها فمثلا seagate و IBM و NVidia عدهم مشروع مشترك لطرح حل رخيص وناجح لهذه المشكلة .
للمهتمين الموضوع اعلاه يعتبر من ضمن مجال System on Chip SoC و AI.

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

ماهو 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 او الاوراكل (وهذا نوع من الاحتكار من مايكروسوفت😏 ) بالاضافة سعره نوعا ما غالي.