d خليل سليم – الصفحة 3 – مدونة الفريق

الكاتب: خليل سليم

  • متى ينتهى المشروع البرمجي بالكامل؟

    متى ينتهى المشروع البرمجي بالكامل؟

    هذا سؤال يسأله الجميع، الزبون، الشركة، العملاء، الموردين، كل من يستخدم النظام، متى يتم تسليم نسخة نهائية من المشروع وتكون فاعلة وكاملة ولا مشاكل بها؟

    الجواب المختصر: لا ينتهي، بل يستمر أبد الدهر.

    الجواب المطول يكمن في أن المشروع كائن حي، أكرر، المشروع كائن حي، يولد، ويفحص، ويغطى، ويحتاج عناية فائقة، ويأتي الأقارب ليحتفلوا به، يبدأ بالتعرف على العالم، يتعلم اللغة، يتطور في تناول الطعام، يمرض، فنجلب له طبيب فيداويه، يغير ملابسه بسرعة، إذ ينمو حجمه دائماً، تتغير ملامحه، من العيون الكبيرة الجميلة، والبشرة الناعمة إلى علامات المشاكسة.

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

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

    لا توجد لحظة في حياة المرء يقول فيها أنا اكتملت وانتهيت، والمشروع البرمجي كذلك

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

    لا يوجد لحظة تقول فيها: سأضع ساقي فوق الأخرى، وأرتاح، النظام (موقع، تطبيق.. إلخ) يعمل بنفسه بعد أن دفعت مبلغ 50 ألف دولار، وعلي الآن أن اقطف الثمار وأرتاح.

    هذه الجملة هي بداية الموت، والمشروع لا تكفيه 50 ألف دولار مهما صغر، بل إن التسويق وحده يتكلف أضعاف هذا المبلغ.

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

  • Blazor أم Angular ولماذا؟

    Blazor أم Angular ولماذا؟

    حسناً، أنت تستخدم إطار عمل رائع، مثل ASP.NET Core MVC, Razor Pages ، أو أنت مبرمج من خارج عالم الدوت نت، مثلا مبرمج Django، أنت مبرمج من العيار الثقيل، تحب لغة البرمجة نفسها، السي شارب أو البايثون، وتعتقد أن القوة معها، لا مع عالم الجافاسكريبت، أو أنك لا ترتاح للجافا سكريبت، إلا أن العالم يقول لك اتجه مرغماً إلى إطار عمل FrontEnd وخياراتك بين Angular, Vue, React، وأنت مضطر لاتخاذ قرار، وهنا أقول لك، لقد فتح الله لك خياراً جديداً في عالم الويب ألا وهو البلازور Blazor.

    إذا كنت لا تعرف ما هو البلازور، فأدعوك إلى قراءة هذا المقال، وإذا كنت أيضاً مبرمج بايثون أو أي لغة أخرى، فيمكنك أيضاً قراءته، لأن الWeb Assembly مبدأ واحد: ما هو إطار تصميم صفحات الويب Blazor

    الAngular كإطار عمل، يخبرك أن العالم تقدم، على المبرمجين عمل API بأي لغة برمجة يحبونها، ثم يمكننا ربط هذه الدوال عبر الجافاسكريبت (Angular) لأن المتصفح يفهم الجافاسكريبت، فالأمر سهل جدا.

    blazor vs 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 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 لا يبني اقتصاداً ولا يطور قطاع البرمجيات بالشكل المطلوب.

    الصفحات: 1 2

  • دور الجامعات والحاضنات في تطوير قطاع تكنولوجيا المعلومات في فلسطين.

    دور الجامعات والحاضنات في تطوير قطاع تكنولوجيا المعلومات في فلسطين.

    https://www.facebook.com/khalilme

    الجامعات في كل العالم لها دور أساسي، ألا وهو تعليم الطالب الأسس التقنية، وليس تحضيره ليكون جاهزاً لسوق العمل، هذه النقطة تواجهها جامعات العالم وليس استثناء حالتنا الفلسطينية.

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

    الصفحات: 1 2

  • حل مشكلة The value  is not valid for XXXX.

    حل مشكلة The value is not valid for XXXX.

    في 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 : إعادة خاصية عدم التجميع في شريط المهام وغيرها

    ويندوز 11 : إعادة خاصية عدم التجميع في شريط المهام وغيرها

    أعادت شركة مايكروسوفت تصميم شريط المهام في ويندوز 11 بطريقة مختلفة قليلاً عما اعتدنا عليه في ويندوز 10، ومن ضمن التغييرات التي أجرتها أنها أجبرت كافة أيقونات البرامج في شريط المهام على التجميع، وألغت خيار عدم التجميع never combine taskbar

    هذه الخاصية تم إلغاءها من الويندوز 11

    شكل خيارات شريط المهام الجديدة في ويندوز 11

    ولإعادة هذه الخاصية مع خصائص أخرى، مثل إعادة الخيارات الأساسية في القائمة المنسدلة عند النقر على أي أيقونة، يمكن استخدام هذه المكتبة المجانية

    https://github.com/valinet/ExplorerPatcher

    الخطوات:

    • قم بتحميل ملف ال dxgi.dll من هنا

    https://github.com/valinet/ExplorerPatcher/releases

  • قم بنسخ الملف إلى مجلد C:\Windows
  • قم بإعادة تشغيل الويندوز، أو قم بقتل المهمة explorer.exe
  • يمكنك قتل المهمة عبر تنفيذ هذا الامر في تشغيل taskkill /f /im explorer.exe

    قتل مهمة explorer.exe

    انتظر بعض الوقت لأن المكتبة ستقوم بتحميل بعض المكتبات من الإنترنت (قرابة 50 ميغا) وثم سيفتح الاكسبلورر من جديد أو قم بإعادة التشغيل إذا استغرق وقت طويل

    يمكنك الآن من لوحة المفاتيح كتابة Win+X

    ثم الخصائص

    ثم تفعيل خيار عدم التجميع

    ويمكنك تفعيل خيارات أخرى مثل إظهار القائمة المنسدلة

    إعادة قائمة الويندوز 10 المنسدلة في ويندوز 11
  • OnionShare لنقل الملفات بطريقة آمنة ومجهولة

    OnionShare لنقل الملفات بطريقة آمنة ومجهولة

    يمكنك برنامج OnionShare من نقل الملفات بينك وبين أي شخص بالعالم بطريقة آمنة كلياً، ودون الاعتماد على برمجيات نقل وسيطة سحابية أو غيرها، وهو نظام مجاني ومفتوح المصدر وسهل الاستخدام.


    البرنامج يعمل على بيئة الويندوز واللينكس والماك، ويمكنك تحميله من الموقع مباشرة OnionShare

    أما آلية النقل فهي سهلة:

    1- تقوم بإضافة ملف أو ملفات في الواجهة الأولى لمشاركة الملفات

    2- تضغط على مشاركة الملفات فيظهر لك رابط طويل تقوم بإرساله للشخص الذي تريد.

    3- يجب على الشخص أن يفتح الرابط عبر متصفح Tor أو عبر نفس البرنامج

    4- بعد الانتهاء من تحميل الملف، يمكنك إيقاف المشاركة.

    5- لا يتم تحميل الملف إلا والبرنامج شغال، الأمر أقرب لإنشاء VPN بين جهازك وجهازه أو أقرب لخدمة التورنت، حيث يكون جهازك هو المرسل.

    والله ولي التوفيق

  • محاكاة الحياة

    محاكاة الحياة

    مع إنتشار العالم الافتراضي، سيميل الناس إلى تجربة كل شيء إلكترونياً عبر بيئة افتراضية.هل ترغب أن تمارس عملك كضابط شرطة، حسنا تفضل هذه اللعبة لمحاكاة ما تتمنى، لربما ترغب أن تكون بائع، أو تسافر بطائرة، أو أن تمارس المحاماة، أو لعلك تود تجربة الصيد في البراري، ولربما تود تجربة القتل، أو الاغتصاب، أو الحرب، أو لربما تود أن تجرب حياة جديدة افتراضياً كما في لعبة Second Life أو The Sims ، بل لربما تود أن تجرب حياة غنمة أو كلب ضائع، وتجرب احساس أن تقول هاو هاو.

    أبسط الأمور لها محاكي كامل، لعبة محاكاة تجميع جهاز حاسوب، محاكي أن تكون في خدمة العملاء في الإسعاف، محاكي الزواج، محاكي الانجاب، من البسيط إلى المركب إلى حياة كاملة، وقد تعلمت الشركات ماذا يجذب البشر، ليبقوا حبيسي الألعاب باستخدام تقنيات السيطرة الاجتماعية والمكافآت.

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

    وهذه بعض المحاكيات

    Thief Simulator

    Goat Simulator

    112 Operator

    Microsoft Flight Simulator

    Trader Life Simulator

    PC Building Simulator

    Insurmountable

    American Truck Simulator

    Winter Resort Simulator

    Police Simulator

    Tank Mechanic Simulator

    Hunting Simulator

    Mech Mechanic Simulator

    Euro Truck Simulator

    Totally Accurate Battle Simulator