من الكود على الجيت هاب (أكبر منصة للأكواد) مكتوب ومولد بالذكاء الاصطناعي، هذه النقلة الخطيرة حدثت في عام 2023، غيرت كل الحسابات السابقة،
لنتخيل عام 2024….. سيكون على الأغلب 95% من الكود هو توليد آلي.
أي في عام 2025، لربما يكون 99% هو عمل آلة.
1% هو تدخل بشري بعد بضعة أعوام فقط.
هذا يقودنا إلى حقاً أن مهنة المبرمج في خطر، لدينا 100 مبرمج، سنحتاج إلى 5 محترفين منهم ليقوموا بالتوليد، والباقي سيتم الاستغناء عنهم، لا خطر دائما على الأذكياء وهو قلة، الخطر على الأقل ذكاء وهم المجتمع، وهم ابني وأخي وجاري.
في الثورة الصناعية في القرن التاسع عشر، استبدلت الآلة بعض الوظائف وليس كلها، المميز هذه المرة في هذه الثورة، أنها قادرة على استبدال كل الوظائف، لا أقول غدا، لكن بعد 20 عام من الآن.
المحرك البخاري لم يستطع استبدال الجزار مثلا، لكن الآن، يمكننا صناعة روبوت كامل يستبدل الجزار، فيقوم بعمله.
المحرك البخاري لم يستبدل الطبيب، لكن الذكاء الصناعي مع الروبوت، يستطيع، وبكفاءة أعلى، ونتكلم عن 95% استبدال، ستبقى ال5% فقط.
الكثير من التفصيل يمكن أن نستطرد فيه هذه المرة في الاستبدال، والمستقبل هو ضياع الوظائف، والمبرمج على رأسها حسب الحسابات.
هذا سؤال يسأله الجميع، الزبون، الشركة، العملاء، الموردين، كل من يستخدم النظام، متى يتم تسليم نسخة نهائية من المشروع وتكون فاعلة وكاملة ولا مشاكل بها؟
الجواب المختصر: لا ينتهي، بل يستمر أبد الدهر.
الجواب المطول يكمن في أن المشروع كائن حي، أكرر، المشروع كائن حي، يولد، ويفحص، ويغطى، ويحتاج عناية فائقة، ويأتي الأقارب ليحتفلوا به، يبدأ بالتعرف على العالم، يتعلم اللغة، يتطور في تناول الطعام، يمرض، فنجلب له طبيب فيداويه، يغير ملابسه بسرعة، إذ ينمو حجمه دائماً، تتغير ملامحه، من العيون الكبيرة الجميلة، والبشرة الناعمة إلى علامات المشاكسة.
يذهب للمدسة، يحتك أكثر بالعالم الخارجي، يتعلم لغة جديدة، يحتك بأصدقاء جدد، يقع، ينكسر، يجبر، يبلغ، يشتد عوده، ينطلق بقوة، يتزوج، يصبح لديه أبناء، تزداد المسؤولية في شتى النواحي، ينتقل لبيت أكبر، يبحث عن وظيفة تدر دخل أكبر.
يشيخ المشروع وبحاجة لأدوية ومتابعة طبية دائمة، وقد يموت، وقد يموت في شبابه، لمرض ما، لحادث عارض، لخلل جيني.
لا توجد لحظة في حياة المرء يقول فيها أنا اكتملت وانتهيت، والمشروع البرمجي كذلك
المشروع البرمجي بحاجة لتطوير دائم، فريق متجدد، متطلبات جديدة، مشكلات سابقة، فتح مزايا جديدة، صيانة، حماية، تنظيف، هيكلة، إضافة أنظمة خارجية، ربط مع أنظمة عالمية، توسيع الربط، توسيع الخدمات، إضافة أنظمة طرفية، تنمو بياناته، تزداد مشكلاته وتتغير، بحاجة لتغيير نموذج الربح أو تحسينه، عمليات تسويق مختلفة، قد يتم تغيير جوهره، أو إضافة ميزة جوهرية ضخمة، قد يتم شراؤه من قبل شركة ودمجه فيها، قد وقد وقد وقد.
لا يوجد لحظة تقول فيها: سأضع ساقي فوق الأخرى، وأرتاح، النظام (موقع، تطبيق.. إلخ) يعمل بنفسه بعد أن دفعت مبلغ 50 ألف دولار، وعلي الآن أن اقطف الثمار وأرتاح.
هذه الجملة هي بداية الموت، والمشروع لا تكفيه 50 ألف دولار مهما صغر، بل إن التسويق وحده يتكلف أضعاف هذا المبلغ.
لذا عزيزي صاحب المشروع، لتفهم هذه النقطة، أنت وشركة البرمجة عليكم بالعمل الدائم، ولتكن خطتك واسعة، وجيبك عميق.
حسناً، أنت تستخدم إطار عمل رائع، مثل ASP.NET Core MVC, Razor Pages ، أو أنت مبرمج من خارج عالم الدوت نت، مثلا مبرمج Django، أنت مبرمج من العيار الثقيل، تحب لغة البرمجة نفسها، السي شارب أو البايثون، وتعتقد أن القوة معها، لا مع عالم الجافاسكريبت، أو أنك لا ترتاح للجافا سكريبت، إلا أن العالم يقول لك اتجه مرغماً إلى إطار عمل FrontEnd وخياراتك بين Angular, Vue, React، وأنت مضطر لاتخاذ قرار، وهنا أقول لك، لقد فتح الله لك خياراً جديداً في عالم الويب ألا وهو البلازور Blazor.
إذا كنت لا تعرف ما هو البلازور، فأدعوك إلى قراءة هذا المقال، وإذا كنت أيضاً مبرمج بايثون أو أي لغة أخرى، فيمكنك أيضاً قراءته، لأن الWeb Assembly مبدأ واحد: ما هو إطار تصميم صفحات الويب Blazor
الAngular كإطار عمل، يخبرك أن العالم تقدم، على المبرمجين عمل API بأي لغة برمجة يحبونها، ثم يمكننا ربط هذه الدوال عبر الجافاسكريبت (Angular) لأن المتصفح يفهم الجافاسكريبت، فالأمر سهل جدا.
هناك مزايا عديدة في هذا النموذج، منها أن الAngular يمكنها أن تعمل مع أي لغة برمجة، فهي لا علاقة لها بلغة البرمجة، لأنها في النهاية تتحدث مع دوال API، فيمكن بهذا للشركات فصل المبرمجين، Back و Front وكلاً في فلك يسبحون، الBack لا يهم أياً كانوا، والFront هي Angular وهي تعمل في كل مكان ومع كل منصة.
مزايا هذا الأمر عديدة، لا نرغب بذكرها هنا، منها لا الحصر، الفصل بين السلطات، سهولة الفحص، التخصيص.. إلخ، يعيب الأمر عيباً واحداً وهو صعوبة وتعقيد إطار الAngular فهو يعتبر إطار عمل كامل منفصل وأنت بحاجة إلى شهرين من العمل لاتقانه.
ومع تقدم تقنيات الويب، وظهور الWeb Assembly فإن البلازور في الدوت نت أو الPyscript في البايثون، وغيرها من المنصات، سيكون خيارً بديلاً بل ولربما خيارا أمثلاً.
البلازور وكل تطبيقات الويب أسمبلي، ستكون أسرع من تطبيقات الجافاسكريبت، ستتيح لك بناء مواقع أقوى وبإمكانيات عالية، وبأداء أعلى، مثلاً الAngular تستخدم Incremental DOM أماالـBlazor فتستخدم خليط من Virtual DOM (هذا أقرب لما تفعله الـreact) والIncremental DOM في أمر جديد خاص بها اسمه RenderTree، والفرق بينهما في هذا المقال Incremental vs Virtual DOM
صحيح أن الAngular تعتمد على Typescript لكن الTypescript في النهاية ليست لغة Type Safe بينما الBlazor كذلك، يمكن للAngular الوصول مباشرة إلى DOM, أما ال Blazor فتستخدم JS Interop لكن هذا ليس بمشكل.
كذلك الأمان بالبلازور أعلى درجة في كل المستويات، فرق الإمكانيات بين لغة البرمجة سيكون هائل، التوسعية والتحمل سيكون أعلى في البلازور، كذلك السهولة في البرمجة ستكون في صالح البلازور، السيو SEO كذلك، والكثير من المزايا الأخرى.
على الرغم من نضوج الAngular وكثرة المقالات بها، إلا أن الإصدارات المختلفة عنها والتغييرات الجذرية كثيرة، صحيح أن الدعم سيكون أكثر من البلازور، لكن مركب البلازور قد سار ووصل إلى مسافة آمنة، نتمنى من مايكروسوفت المحافظة على هذا المسار وعدم نسف المركب.
في المستقبل، لا يمكننا التنبؤ بشيء، لكن ما ستوفره البلازوز من تطبيقات مستقبلية هام، مثل إنشاء تطبيقات هواتف ذكية ودمجها في MAUI، اقرأ أيضا ما هي ماوي .NET MAUI، أو بناء تطبيقات سطح مكتب وغيرها من الإمكانيات الهائلة.
طالما لا توجد خطة وطنية شاملة لاستيعاب المبرمجين والخبراء في غزة أو في فلسطين فسيبقى سوق التكنولوجيا سوق غير حقيقي، قابل للموت في أي لحظة. سوق غزة كله يعمل للخارج، سوق الضفة كذلك لربما هو أفضل حالاً. عمل السوق كله بالتعهيد سواء للأفراد وللشركات، بناء مشاريع بمبالغ زهيدة، تباع هذه المشاريع في دولها بالملايين.
إن .NET MAUI اختصاراً لـ (.NET Multi-platform App UI) عبارة عن إطار عمل framework لبناء أنظمة وتطبيقات حديثة تعمل على منصات مختلفة كـ iOS, Android, macOS, Windows بالاعتماد على كود واحد مبني بلغة السي شارب وواجهات زامل XAML.
.NET Multi-platform App UI (.NET MAUI)
باختصار، هي إطار جديد من مايكروسوفت لتبني تطبيقات أندرويد وiOS بسهولة أكثر وهي بديلة عن منصة الزامارين Xamarin ومنافسة للفلاتر Flutter وهي بذلك تنضم إلى منصات الCross Platform المختلفة.
وقد وعدت مايكروسوفت أنها ستقدم منصة متعددة لبرمجة التطبيقات مبنية على الدوت نت كور .NET Core، بعكس منصة الزامارين التي تعمل بالدوت نت فريموورك .NET Framework ، وهاي هي منصة ماوي ظهرت للنور بعد جهد سنوات.
كانت منصة الزامارين هي سلاح مايكروسوفت السري بعد شرائها كمنصة متعددة، لكنها كانت مليئة بعيوب كثيرة، أساسها أنها مبنية على الدوت نت فريموورك، وهي بالتالي غير متربطة بالتطورات الجديدة على الدوت نت كور، ولا يمكن تطويرها أكثر، كذلك تحتوي على مشاكل الواجهات المختلفة، حتى مع طرح زامارين فورمز لم يتم حل المشكلة، بطء التطوير، وانهيارات متعددة للمشاريع.
بنية منصة زامارين
أما منصة الماوي فهي تختلف في البنية، إذ تعتمد على كود مشترك واحد في الواجهات وفي مكتبة BCL
بنية منصة ماوي MAUI
في مشروع الماوي هناك مشروع واحد فقط، بعكس الزامارين، وهذا ما يؤكد أن الكود واحد، وهذا ما يريح المبرمج ولو كان هناك كود منفصل لأي منصة، فإنها ستكون في داخل المشروع، في الكود الخلفي لكل صفحة MainPage.android.cs و MainPage.iOS.cs
من المتوقع مستقبلاً بالاعتماد على إطار البلازور Blazor أن تتمكن منصة ماوي من تحزيم نسخة من المشروع تعمل على الويب، وكذلك توجد نسخة حالية تستطيع بها تحزيم تطبيقات تعمل على نظام Tizen الخاص بسامسونج.
العديد من المزايا التفصيلية للمنصة الجديدة، يمكنك بدء البرمجة بالاعتماد على الفيجوال ستوديو وستجد الأمور بسيطة إذا كنت قد مررت على XAML ونمط مايكروسوفت في البرمجة، لكن هل ستكون منصة موثوقة! هل ستعيش ولن تتخلى عنها مايكروسوفت، هذا هو السؤال الحقيقي، والباقي استعراض لا قيمة له، لأنه مئات منصات Cross Platform قد ماتت، وعشرات تقنيات مايكروسوفت الواعدة قد تخلت عنها، وقد تخلت عن ما هو أكبر، الويندوز موبايل، وهي نقطة احباط لا احباط بعدها.
إن ما تتسابق عليه شركات البرمجيات هذه الفترة هو تشغيل الشباب في الشركات الإسرائيلية وكسب مبلغ جراء استضافتهم، وهذا أحد أكبر مؤشرات الفشل الحكومي سواء في غزة أو الضفة، لأن التعهيد outsourcing لا يبني اقتصاداً ولا يطور قطاع البرمجيات بالشكل المطلوب.
الجامعات في كل العالم لها دور أساسي، ألا وهو تعليم الطالب الأسس التقنية، وليس تحضيره ليكون جاهزاً لسوق العمل، هذه النقطة تواجهها جامعات العالم وليس استثناء حالتنا الفلسطينية.
صحيح أن على الجامعات أن تتعاون مع شركات القطاع الخاصة باكراً في التدريب أو حتى تعريف الطالب بالسوق للاستعداد له، أو جلب خبراء دائمين وربطهم مع الطلاب.. إلخ، إلا أن هذا يبقى مؤثر ثانوي وليس أساسي.
في ASP.NET Core إذا قمت بربط النموذج Model من نوع Decimal or float or double مع واجهة المعراض View مباشرة أو عبر ViewModel سيظهر لك خطأ The value is not valid for ، وهي عدم إمكانية إرسال القيمة المدخلة من المعراض View إلى النموذج Model، وتظهر عند محاولتك إرسال أرقام كسرية فقط، أما الأرقام الصحيحة فتعمل بكفاءة، ولا تظهر في الأغلب حين تكون لغة المسار Thread إنجليزية أو لغة متناسقة مع الصيغة المعيارية.
سبب المشكلة هو صيغة النص والفاصلة بين الرقم الصحيح وكسره، ولحل هذه المشكلة، يجب أن نقوم بإرسال حاشية البيانات DataAnnotations في النموذج لتوضيح وتخصيص صيغة النص المدخل.
الخطوة الأولى هي إنشاء فئة Class كما في الكود التالي:
using Microsoft.AspNetCore.Mvc.ModelBinding;
using System.Globalization;
using System.Threading.Tasks;
public class DecimalModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
var valueProviderResult = bindingContext
.ValueProvider
.GetValue(bindingContext.ModelName);
var cultureInfo = new CultureInfo("en");
decimal.TryParse(
valueProviderResult.FirstValue,
NumberStyles.AllowDecimalPoint,
cultureInfo,
out var model);
bindingContext
.ModelState
.SetModelValue(bindingContext.ModelName, valueProviderResult);
bindingContext.Result = ModelBindingResult.Success(model);
return Task.CompletedTask;
}
}
ثم تقوم باستدعائها كحاشية توصيفية للبيانات في نموذج المعراض ViewModel
[ModelBinder(BinderType = typeof(DecimalModelBinder))]
public decimal Price { get; set; }
من الواضح أن المشكلة في قراءة البيانات من المعراض لذلك لا داعي لإضافة هذا التوصيف في النموذج Model فقط نكتفي في نموذج المعراض ViewModel
هناك طريقة أخرى لحل هذه المشكلة عن طريق jquery عبر هذا الرابط
أعادت شركة مايكروسوفت تصميم شريط المهام في ويندوز 11 بطريقة مختلفة قليلاً عما اعتدنا عليه في ويندوز 10، ومن ضمن التغييرات التي أجرتها أنها أجبرت كافة أيقونات البرامج في شريط المهام على التجميع، وألغت خيار عدم التجميع never combine taskbar
هذه الخاصية تم إلغاءها من الويندوز 11شكل خيارات شريط المهام الجديدة في ويندوز 11
ولإعادة هذه الخاصية مع خصائص أخرى، مثل إعادة الخيارات الأساسية في القائمة المنسدلة عند النقر على أي أيقونة، يمكن استخدام هذه المكتبة المجانية
قم بإعادة تشغيل الويندوز، أو قم بقتل المهمة explorer.exe
يمكنك قتل المهمة عبر تنفيذ هذا الامر في تشغيل taskkill /f /im explorer.exe
قتل مهمة explorer.exe
انتظر بعض الوقت لأن المكتبة ستقوم بتحميل بعض المكتبات من الإنترنت (قرابة 50 ميغا) وثم سيفتح الاكسبلورر من جديد أو قم بإعادة التشغيل إذا استغرق وقت طويل
يمكنك الآن من لوحة المفاتيح كتابة Win+X
ثم الخصائص
ثم تفعيل خيار عدم التجميع
ويمكنك تفعيل خيارات أخرى مثل إظهار القائمة المنسدلة
يمكنك برنامج OnionShare من نقل الملفات بينك وبين أي شخص بالعالم بطريقة آمنة كلياً، ودون الاعتماد على برمجيات نقل وسيطة سحابية أو غيرها، وهو نظام مجاني ومفتوح المصدر وسهل الاستخدام.
البرنامج يعمل على بيئة الويندوز واللينكس والماك، ويمكنك تحميله من الموقع مباشرة OnionShare
أما آلية النقل فهي سهلة:
1- تقوم بإضافة ملف أو ملفات في الواجهة الأولى لمشاركة الملفات
2- تضغط على مشاركة الملفات فيظهر لك رابط طويل تقوم بإرساله للشخص الذي تريد.
3- يجب على الشخص أن يفتح الرابط عبر متصفح Tor أو عبر نفس البرنامج
4- بعد الانتهاء من تحميل الملف، يمكنك إيقاف المشاركة.
5- لا يتم تحميل الملف إلا والبرنامج شغال، الأمر أقرب لإنشاء VPN بين جهازك وجهازه أو أقرب لخدمة التورنت، حيث يكون جهازك هو المرسل.