2018/12/03

ما هي Angular و React و Vue ؟


منذ فترة ليست ببعيدة كان الأسلوب التقليدي ببرمجة مواقع وتطبيقات الويب هو إنشاء شيء يمكن أن يسمى Template، يقوم المبرمج بإقحام (inject) للبيانات داخله ثم تحويله إلى HTML (يسمى Render) وهذا حال أغلب اللغات مثل PHP و ASP .NET بالأسلوب القديم Web Forms أو الأحدث منه Razor أو ضمن Node.js أسلوب Jade و غيره…

الأسلوب الجديد هو التالي:
برمجة تطبيق من طرف المخدم (Server Side Application) مع ربط بقاعدة بيانات (Database) (يمكن استخدام طبقات DAL: Data Access Layers أو طبقة ORM: Object-Relational Mapping) وتقديم واجهات برمجية للوصول إلى التطبيق (عبر SOAP قديماً و RESTful APIs حديثاً وغالباً JSON).

الفائدة من الأسلوب الجديد هو برمجة تطبيق واحد من طرف السيرفر دون واجهات أبداً! فقط واجهات برمجية للوصول إلى البيانات والموارد. بعدها يتم برمجة تطبيقات مثل موبايل Android or iOS… وربط التطبيقات عبر الواجهة البرمجية API (خدمة ويب Web Service) بالتالي الوصول الكامل للتطبيق عبر واجهة برمجية.
الآن بدلاً من تصميم واجهات HTML يتم توليدها على المخدم كـ Templates؛ بدء العمل على الأسلوب الجديد وهو الاعتماد على منصات الـ Frontend مثل Angular و React و Vue وغيرهم… سيتم تصميم واجهة HTML وربطها مع الـ Javascript بالمنصة (Framework) المستخدمة. الغالب في استخدام هذه المنصات برمجة تطبيق بصفحة واحدة (Single Page Application).
هذه الـ Frameworks المخصصة للويب ستعمل نفس مبدأ تطبيق الموبايل الذي يتصل بخدمة الويب (API) للوصول إلى البيانات والموارد لكن بدلاً من لغات Native سيتم ذلك عبر Javascript وطلبات (Requests) غالباً Ajax أو تقنية أعلى مثل Web Socket. أضف إلى ذلك يمكن بناء تطبيقات موبايل من نمط Hyperd Applications مثل Cordova و PhoneGap والأحدث والأشهر حالياً Ionic. التي تعتمد على استخدام HTML و Javascript في بناء التطبيق. ويمكن استخدام Angular و React و Vue لتحكم أكبر.

هذه الطريقة تضمن برمجة تطبيق واحد من طرف المخدم ويحتوي جميع العمليات البرمجية، وتقديمها بشكل واجهة برمجية API، واستخدامها من أي تطبيق لاحقاً بشكل UI فقط كما ذكرت مثل Android أو iOS أو Flutter أو Javascript أو حتى Desktop Application أو IoT.

مصدر الصورة: Medium

2017/01/06

عن PHP و ASP.NET أتحدث 😊


السلام عليكم ورحمة الله وبركاته
الجدال حول PHP و ASP.NET على أحر من الجمر…
اشتغلت باللغتين بحدود 8 سنين لحد هلأ، البداية مع C# و ASP.NET كانت سيئة نوعاً ما بالبدايات، Web Forms كان فيها أدوات سهلة ومريحة بالبداية لكن وقت بدك تفوت بالتفاصيل شوي بتلاقيها صارت معقدة كتير ومحدودة الإمكانيات أحياناً وسيئة جداً بالتخصيص كتصميم خصوصي css باعتبار كود html مالك شايفو وأحياناً كتيرة بيعتمد عل جداول وهاد بيأثر كتير على تصميم المشروع وجماليتو.
انتقلت للـ PHP وكانت بسيطة كتير مقارنة بالـ ASP.NET ولكن كنت اتعذب كتير لأني بلشت برمجة من الصفر وخصوصي بموضوع السكيوريتي. بعد فترة تعرفت عل لغة منيح وحبيتها نوعاً ما والأهم صرت اتعامل مع أطر عمل (Frameworks) نواخترت العمل بنصيحة صديق عزيز على فريم وورك CodeIgniter وكانت رائعة جداً وسهلة وفيها مكتبة كبيرة من الأدوات وبتأمن درجة جيدة جداً من السكيوريتي. بعد عدة مشاريع بلشت اتضايق من اللغة والسينتاكس تبعها باعتبار بدايتي بالبرمجة أكاديمياً كانت مع C# وتعاملي بالجامعة مع C# بشكل كبير. لذلك توصلت لصورة مقتنع فيها حالياً نوعاً ما أنو PHP لغة برمجة قديمة قوية ولكن على مدى السنين تطورت بأسلوب ترقيعي بحيث بتدعم برمجة غير غرضية التوجه وبتدعم بالشكل التاني غرضي التوجه. مافيها تنظيم خصوصي بالفانكشينات الأساسية وهاد بيسبب لخبطة وتضطر تحفظ مع الاستخدام الطويل لعدد كبير من التوابع. بينما لو اعتمدت على برمجة غرضية التوجه بشكل مضبوط أكتر كان الشغل أرتب وأفضل بكتير.
رجعت صرلي بحدود 3 سنين للـ C# وصرت اعتمد عليها بأول سنة بجانب PHP لكن النصر كان لصالح ASP.NET خصوصي بعد دراسة أكاديمية جيدة ومعرفة التعامل معها بشكل ممتاز وحل المشاكل والأخطاء (ما عدا Web.Config يلي بشوفو غليظ نوعاً ما لحد هلأ) بس باقي الشغلات ممتازة وهية برأيي النقاط لتفوق C# و ASP.NET:
  1. البرمجة غرضية التوجه: اعتماد لغة C# على هاد المبدأ أفضل بكتير خصوصي تنظيم ممتاز للكود، مكتبات متاحة بشكل كبير، سبورت كبير بحيث أغلب المشاكل يلي ممكن تواجهك بتلاقي حلها عل انترنت وإيدك اليمين غوغل وستاك أوڤر فلو. تقسيم المشروع على أكتر من بروجيكت بيسهل المهام أكتر.
  2. MVC: أسلوب ممتاز كتير للبرمجة بأي لغة وأي بلاتفورم. منظم بشكل كبير، العمل بفريق عمل أفضل لسهولة توزيع المهام بين الداتابيز أو داتا سورس بشكل عام و بين البرمجة وبين تصميم الديزاين. رازور هية بديل عن برمجة كودات ASP ضمن صفحة الديزاين، قريبة لأغلب لغات الـ Scripting وصيغة مو معقدة. في أدوات بتولد كود سريع إذا حبيت تستخدمها وبنفس الوقت تخصيصها بالـ css سهل. اعتماد أسلوب أفضل من القديم قالب (Master Page) وبتعبي فيه محتوى وصارت أفضل بعمل أجزاء الصفحة على ملفات متعددة include متل PHP وهاد الشي كان بينقصها نوعاً ما وأسهل من Web Controls القديم. الاعتماد على الموديلات بيسهل الشغل البرمجي كتير بس أحياناً بتضطر تستغني عنو بحالات أكتر من فورم (الأسلوب القديم كان ممنوع استخدام أكتر من فورم واحد ضمن كل الصفحة).
  3. ASP.NET WebAPI: مع الحاجة الملحة لبرمجة تطبيقات متعددة المنصات سواء سيرفرات أو كومبيوتر عادي أو موبايل صار مصدر البيانات من الصعب تضمينو مع التطبيق والمزامنة ما بين المستخدمين الآخرين بنفس التطبيق لهيك صار ضروري كتير تخزين البيانات وإجراء عملية المعالجة على سيرفر واحد بيجمع كل المستخدمين بغض النظر عن تطبيقاتهون وأنظمة التشغيل. تم هاد الشي بإنشاء مشروع ويب API (اختصار لـ Application Programming Interface) بيكون هوة الـ Exchange ما بين التطبيقات و قاعدة البيانات. طبعاً صارت المعالجة مركزية مشان هيك بيصير وصول أكبر لعتاد ولو كان منخفض. منصات الموبايل كافة متل Android - iOS - Tizen - Windows Phone وحتى المستقبل للـ IoT.
  4. حماية الكود: لأنو النسخة Publish بتكون Binary بالتالي لا يمكن سرقة الكود، مع إمكانية نشر الكود فوراً وبيشتغل عل سيرفر بنفس الأداء تماماً يلي ما بيحب يعمل Publish أو أثناء التطوير والتجريب.
  5. Entity Framework: حولت عالم قواعد البيانات من منصة مستقلة عن المشروع إلى مصدر بيانات برمجي قوي جداً جداً وسهل التعامل معه برمجياً بشكل لا يصدق!
  6. مفتوحة المصدر: شركة مايكروسوفت أطلقت مصدر كل من Dot Net Framework و ASP.NET وأطلقت IIS Express يلي بيشتغل على أنظمة التشغيل الشهيرة Windows - Linux - macOS وبالتالي يمكن استضافة أي تطبيق Dot Net على أي نظام تشغيل تقريباً من الموجودين، وإمكانية تنزيل السورس وعمل Build على أنظمة أخرى إذا احتاج الشخص. دعم IoT بشكل كبير. إطلاق نسخة SQL Server لنظام تشغيل Linux وبالتالي استضافات ويندوز الغالية ما عد في داعي إلها في حال اختيار البرمجة ASP.NET Core وقواعد البيانات سواء MySQL أو SQL Server ودعم Entity Framework.

وأخيراً: Visual Studio من أفضل الـ IDEs على الإطلاق وأمر رائع أنو صار في نسخة للـ macOS. في محررات نصوص جيدة متل Sublime Text بس في تقدم حالياً لـ Visual Studio Code بشكل كبير.

الخلاصة برأيي لغة PHP في إلها سلبيات ما عم لاقيلها حلول مرنة متل ما بدي، اللغة شعبيتها عم تخف يوم بعد يوم. معشر المبرمجين عم يتجهو نحو لغات تانية متل C# و Node.JS و Ruby و Python وغيرها كتير. بس بيضل بشكل عام برأيي هاد تقدم كبير كتير للـ C# ومايكروسوفت عامة لأنو بيخلي المبرمج يرتاح أكتر بعد مشقة التعلم الأكاديمي والتطبيقي مع هدول الأدوات المتكاملة ولو ما كنت عم تبرمج على ويندوز ولكن لينوكس أو ماك .

ادعولنا 😉

2015/05/19

زوروني كل سنة مرة ^_^

السلام عليكم ورحمة الله
أهلاً وسهلاً بزوار موقعي 
مابعرف شو بدي قول بس أنا مقصر بكتير كتير شغلات , موقعي ومدونتي , شغلي , مشاريعي الخاصة , مشاريع ملتزم فيها ...
آآآآخ ...
تفاجأت ... مو كتير أنو لحد هلأ مالي كاتب على مدونتي غير 3 تدوينات صغيرة , وبيناتون سنة أو سنتين ! وهي التدوينة الرابعة اجت بعد سنة من آخر تدوينة أيضاً 
طيب شو بدي احكي هلأ ؟ والله مشغول ومضغوط ومتل ما قلت أني مقصر بالكتابة لذلك حالياً ما رح احكي شي , حبيت سلم عليكون , وبدي منكون تدعولي أمانة 

2014/05/02

رسالة إلى إخوتي في الله عزاءً لنا بشهدانا طلاب العلم الشرعي في دمشق

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

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

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

إن الله كتب لهذا الأمر أن يحدث ((وَاعْلَمْ أَنَّ الأمة لَوْ اجْتَمَعَتْ عَلَى أَنْ يَنْفَعُوكَ بِشَيْءٍ لَمْ يَنْفَعُوكَ إِلاَّ بِشَيْءٍ قَدْ كَتَبَهُ اللَّهُ لَكَ وَلَوْ اجْتَمَعُوا عَلَى أَنْ يَضُرُّوكَ بِشَيْءٍ لَمْ يَضُرُّوكَ إِلاَّ بِشَيْءٍ قَدْ كَتَبَهُ اللَّهُ عَلَيْكَ رُفِعَتْ الْأَقْلاَمُ وَجَفَّتْ الصُّحُفُ)) صدق رسول الله

إن البلاء الذي حل بنا لا شك أنه عظيم , وإنه لحدث جلل تكاد قلوبنا تتفطر له , لكني أجد أنه خير بإذن الله ((فَعَسَى أَنْ تَكْرَهُوا شَيْئاً وَيَجْعَلَ اللَّهُ فِيهِ خَيْراً كَثِيراً)) والدليل أن الصبر الذي أنزله الله على أهالي الشهداء ما هو إلا رحمة منه عز وجل , ومكرمة لهم بأن جعل الله أبناءهم في أعلى المنازل ألا وهي الشهادة , فما بالك إن كانوا من طلاب العلم , وبالأخص العلم الشرعي , وبعض أهالي الجرحى لما رأوا أهل الشهداء في تلك الحالة تمنوا لو أن الله جعل أبناءهم بدل الجرحى شهداء في تلك المنزلة !

أسأل الله أن يجعلني وإياكم من طلبة العلم ومن حفظة كتاب الله ومتبعي شرعه الحنيف. وما نزل بلاء إلا بذنب وما رفع إلا بتوبة.

((وَمَا كَانَ اللّهُ لِيُعَذِّبَهُمْ وَأَنتَ فِيهِمْ وَمَا كَانَ اللّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ)) صدق الله العظيم

2012/10/06

WebGL

WebGL

مشاركة من صديق عل فيسوبك عن WebGL

Demos :



تعليم WebGL
http://learningwebgl.com/blog/?page_id=1217

الـOpenGL ES والـWebGL تقريباً نفس الكود ونفس المبادئ

وطبعاً ما بضر لما بدك تستخدم تابع جديد تشوف التوصيف تبعو :)
https://www.khronos.org/registry/webgl/specs/1.0/

النص مقتبس من الأخ هشام كما أرسله لي وأحببت مشاركته معكم
شكراً Hisham Fuchs ^_^