.NET « مغامرات برمجية

وسوم: .NET

تعديل ما لا يمكن تعديله باستخدام Extension Methods

نّشر في: 2012/10/30
تعليقات: تعليق واحد

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

قبل فترة كنت أعمل على تعديل تطبيق طوره فريق آخر (في دولة أخرى!) وأضيف بعض الخصائص الجديدة عليه. وكانت طبقة التواصل مع قاعدة البيانات Data Access Layer (أو DAL) مطورة باستخدام أداة غير مجانية. هذا كان معناه أنه رغم أن الكود المصدري لهذه الجزئية كان موجوداً، لم يكن بمقدوري التعديل عليه وعمل كومبايل دون أن نشتري هذه الأداة. وهذه لم تكن مشكلة، حيث أن جميع الإجراءات التي أحناجها موجودة.

أحدها كان الإجراء GetAllReports التابع للكلاس ReportDAL والذي يعطيني جميع التقارير قي سنة معينة. المشكلة كانت تكمن في أن هناك عملية تتكرر كثيراً وهي تصفية الناتح كثر بنوع التقرير. العملية ليست صعبة. سطرين أو ثلاثة باستخدام Linq كان كفيلاً بهذا. ولكن هذا الكود بدأ يتكرر بكثرة في أنحاء البرنامج، لذا أصبح من اللازم أن يصبح هذا الكود الجديد هو الآخر جزئاً من الـDAL. ولكن الكود لا يمكن تعديله (دون دفع نقود).

الحل الكلاسيكي كان أن نطور كلاي جديد يرث الـClass القديم ويضيف الدالة الجديدة. ولكن هذا مزعج حيث أنه علي تعديل البرنامج كله ليستخدم الكلاس الجديد. هنا تأتي فائدة الـExtension Methods.

(اقرأ المزيد …)

Post to Twitter

استبدال Java بـC‎#‎ في كود نظام Android

نّشر في: 2012/05/03
تصنيفات: أخبار تقنية
وسوم: , , , ,
تعليقات: 5 تعليق

Android in C#

قبل بضعة أيام أعلنت شركة Xamarin أنها نجحت في استبدال محرك Dalvik (الذي يعمل بـJava) بمحرك Mono (الذي يعمل بـC‎#‎) في نظام تشغيل 4.0 Android للأجهزة المحمولة. الخبر من مدونة الشركة.

Xamarin هم الفريق وراء Mono، النسخة المتعددة المنصات من Microsoft .NET. أحد منتجاتهم هي Mono for Android الذي يسمح لك ببرمجة تطبيقات الـAndroid باستخدام الدوت نت (هناك نسخة لأجهزة iOS أيضاً). وقاموا بهذا الاستبدال كتجربة لاكتشاف فروقات الأداء بين Mono و Dalvik. والنتائج مثيرة جداً للاهتمام!

(اقرأ المزيد …)

Post to Twitter

مشروع: تطبيق Ray Tracing باستخدام C‎#‎ – الحلقة 2 – الإضاءة والتظليل


في الدرس الأخير قمنا ببناء برنامج Ray tracing مبسط جداً. قد تكون نتيجته مخيبة للأمل نوعاً ما، ولكن يمكن اعتباره “هيكل” لبرنامج Ray tracing أكثر تعقيداً. قمت عمداً بإبقاء معمارية البرنامج قابلة للتوسيع بقدر الإمكان حتى نستطيع إضافة أشياء جديدة في المستقبل. وبما أننا في درس جديد حان وقت تطوير برنامجنا المتواضع أكثر. دعنا نراجع النتيجة التي وصلنا إليها في المرة السابقة.

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

(اقرأ المزيد …)

Post to Twitter

مشروع: تطبيق Ray Tracing باستخدام C‎#‎ – الحلقة 1 – الأساسيات البحتة

الرسوم ثلاثية الأبعاد بواسطة الكمبيوتر هو موضوع مشوق وله شجون. لذا اخترته ليكون الموضوع الاستهلالي لتصنيف جديد في المدونة، أنوي من خلاله تقديم مشاريع كاملة “من طق طق لسلام عليكم” كمجموعة دروس تطبيقية. المشروع التالي سيكون تطبيقاً لما يسمى بالـRay Tracing باستخدام لغة C‎#‎. لماذا C‎#‎ بالذات؟ لا يوجد سبب معين. مزاجي كان ميالاً نحو C‎#‎ عندما بدأت المشروع. ولكن ما سأقدمه هنا يمكن بسهولة تطبيقه في أي لغة. الصورة بالأعلى هي نتيجة لعملية Ray Tracing باستخدام برنامجي.

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

(اقرأ المزيد …)

Post to Twitter

البرمجة الوظيفية في ‎.‎‎NET‎ – ما هي؟

نّشر في: 2011/06/16
تعليقات: 8 تعليق

انتشر في السنوات الأخيرة مصطلح Functional Programming أو البرمجة الوظيفية رغم أنه قديم جداً (في مقياس علم الحاسب على كل حال) ويعرفه الكثير من طلاب الحاسب الآلي. فجأةً أصبحت الكثير من لغات البرمجة الشائعة تتباهى بأنها تدعم البرمجة الوظيفية. و ‎.‎‎NET‎ لم تكن مستثناة. بدايةً من النسخة 3.0 بدأت تدخل مزايا تعتمد إعتماداً كلياً على البرمجة الوظيفية مثل مكتبة LinQ. بل أصبحت هناك لغة جديدة بالكامل موجهة للبرمجة الوظيفية هي ‎F‎#‎. ولكن ما هي البرمجة الوظيفية؟ ولماذا الآن؟

(اقرأ المزيد …)

Post to Twitter

ما الفرق بين const وreadonly؟

نّشر في: 2011/06/02
وسوم: , ,
تعليقات: 3 تعليق

 

في كلا اللغتين C‎#‎ و Visual Basic .NET هناك اثنان keyword تستخدمان لتعريف أن متغيراً ما هو متغير ثابت: const وreadonly. الكثيرون يستخدمونهما بنفس الطريقة لنفس الغرض:

const معC‎#‎

public const decimal pi = 3.14159265;

ReadOnly مع Visual Basic .NET

Public ReadOnly pi As Decimal =  3.14159265

ولكن ما قد يدركه البعض أن هناك فرق بين الإثنين. وهو فرق قد يؤثر على أداء برنامجك وصحة عمله. لذا عليك الاختيار بدقة بين الإثنين. const هي ما يدعى بـcompile time constant أي أنها ثابت يتم حسابه عند عمل الكومبايل. أما readonly فهي runtime constant أي أنها ثابت يتم حسابه وقت تشغيل البرنامج.
(اقرأ المزيد …)

Post to Twitter

page 1 of 1
Project Euler
أحدث التدوينات
تصنيفات
الأرشيف
منوعات
System Down على Twitter

مرحباً , تاريخ اليوم هو الثلاثاء, 2017/02/21