![]() |
|
Hard Coding: AutoResetEvent & ManualResetEvent - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : Hard Coding: AutoResetEvent & ManualResetEvent (/showthread.php?tid=21209) |
Hard Coding: AutoResetEvent & ManualResetEvent - silverlight - 27-07-17 مقدمة: الدوت نت به مجموعة من الكلاسات و للوهلة الأولي حين تدرسها قد لا تفهم الهدف منها تماما وحين تبدأ في دراسة بعضا من هذه الكلاسات بتعمق معقول ربما قد تكتشف أنه يمكن الإستغناء عن استخدام هذه الكلاسات تماما و غاليا ولهذا السبب قليلا ما تجد نركيزا كبيرا علي تفسير و شرح مثل هذه النوعية من الكلاسات من أغلب المبرمجين لذلك الكثير من المبرمجين يمرون علي مثل هذا النوعية من الكلاسات مرور الكرام و يكتفون فقط بقراءة مبسطة عن الكلاسات من تحت ميدأ العلم بالشئ لا غير لكن إعتقادي الشخصي قد يختلف قليلا عن هذا التفكير و السبب في ذلك أنني دوما ما أسأل نفسي سؤال واحد إن كانت أي كلاسات غير مهمة .... إذن ماذا يجعل شركة مثل مايكروسوفت تستثمر الوقت و المال في كتابة هذه الكلاسات؟ أكيد مايكروسوفت لها أسبابها !!!!؟؟؟؟ مثالا علي هذه النوعية من الكلاسات الكلاسان التاليان و هما سيكونا محورا أساسيا للمقال هذا الكلاسان كان أول ظهور لهم مع نسخة الدوت نت 2 تقريبا 1- AutoResetEvent 2- ManualResetEvent بعد أن قضيت حوالي ساعتان محاولا فهم هدف مايكروسوفت من كتابة الكلاسان أعلاه إكتشفت الأتي 1- الكلاسان يمكن استخدامهما في بناء Enumerator بسيط 2 - الكلاسان يمكن استخدامهما في تمرير البيانات بين المتغيرات باستخدام فكرة ByRef 3- امكانية تغيير شكل البيانات مثلا تمرر قيمة علي هيئة Byet و تسترد قيمة أخري مغايرة علي هيئة أخري مثل Integer .... أو علي أقل تقدير تسترد القيمة الأصلية التي تم تمريرها بتوضيح أكثر سهولة تقرأ قيمة من متغير ....... ثم تقوم بإجراء اي عمليات عليه .... ثم تخرج بمتغير مختلف أو تخرج بنفس المتغير الأصلي كأنك تقرأ شيئا ..... و تكتب شيئا ..... Read - Wrtie أو كأنك تكتب شيئا ..... و تقرأ شيئا...... Write - Read أو التفسير الفعلي ينحصر في كلمة واحدة هي التزامن synchronization الخلاصة من هذه المقدمة أنه و علي أي مبرمج أن لا يبني إنطباعات خاطئة عني أي كود يراه لأنه لا يعلم ما هو الهدف الحقيقي الذي يفكر فيه الشخص الذي كتب هذا الكود و المعني في بطن الشاعر كما يقولون ..... الأمثلة التالية ستوضح كيفية استخدام الكلاسان بشكل جيد و بسيط و أحيانا بشكل معقد من داخل برنامجك المثال الأول: يوضح و بشكل مبسط كيفية تخصيص و تمرير البيانات و تغيير نوعها النهائي وحتي الأن لم أستخدم كلاسات مايكروسوفت PHP كود : Public Class Form1المثال الثاني : هو نفس فكرة المثال الأول و لكن بشكل أكثر تعقيدا وحتي الأن لم أستخدم كلاسات مايكروسوفت فقط قمت بكتابة كلاس بسيط ليقوم بأداء نفس الهدف المطلوب الذي يؤديه الكود في المثال الأول PHP كود : Public Class Form1قد يتساءل البعض لمذا التعقيد هذا ؟ الإجابة تتلخص في أن اي شخص سيقرأ الكود المكتوب في المثال الأول حتي ولو كان مبرمج مبتدأ سيستطيع فهم الكود بسهولة أما الكود الموجود في المثال الثاني سيكون أكثر تعقيدا و بهذا أنت كمبرمج تقلل من عدد من يستطيعون قراءة الكود الخاص بك و استخدامه في برامجهم لتعتبره نوع من الإلهاء لتقليل سرقة الكود الخاص بك المثال الثالث: وهو نفس فكرة المثال الأول و الثاني و لكن بشكل أكثر تعقيدا PHP كود : Public Class Form1من الأمثلة أعلاه سنكتشف ان الهدف من الكود واحد لكن كيفية كتابة الكود مختلفة كتابة الكود بشكل صعب تعتبر واحدة من أهم أهداف البرمجة والهدف بسيط جدا الإلهاء وأعتقد و الله أعلم أن نصف كلاسات الدوت او أكثر هدفها الإساسي هو الإلهاء تقبلوا تحياتي RE: Hard Coding: AutoResetEvent & ManualResetEvent - ابو ليلى - 28-07-17 جزاك الله خيراً يا اخ عمر كان لي مرور عليها اثناء دراسة مكاتب CefSharp و لاحظت استخدامها بكثرة داخل كلاسات المكتبة RE: Hard Coding: AutoResetEvent & ManualResetEvent - silverlight - 28-07-17 مرحبا بمرورك أخي الفاضل أبو ليلي الحقيقة انا اكتشفت اني بنيت BackgroundWorker بسيط في الكود الموجود في الموضوع أعلاه و فعليا من الممكن الاستغناء عن كلاسات مايكروسوفت لأن التزامن الموجود في الكود من الممكن كتابته بأساليب أخري ها حاول اشوف المكتبة التي تحدثت عنها إن سمح الوقت وان كان لديك أفكارا أخري مشابهة للموضوع أرجو أن تكتبها حتي نستقيد أكثر RE: Hard Coding: AutoResetEvent & ManualResetEvent - silverlight - 28-07-17 الأخ أبوليلي في الكلاس أدناه ستجد نفس الفكرة بتطبيق مختلف وهنا تم الاستغناء عن كلاسات مايكروسوفت PHP كود : Public Class Providerالإستخدام الطريقة الأولي: PHP كود : Public Class Form1الطريقة الثانية: PHP كود : Public Class Form1يجب ملاحظة إن الكلاس ممكن تحويله الي Provider(OF T RE: Hard Coding: AutoResetEvent & ManualResetEvent - ابو ليلى - 29-07-17 جزاك الله خيراً على جهودك المميزة ما يعيقني هو توفر الوقت للدراسة و التطبيق , اذ ان الافكار كثيرة و تحتاج لاعادة ترتيب لطرحها . بالنسبة للمكتبة (CefSharp) هي اطار عمل كامل للتعامل مع متصفح Chrome و الاستفادة من خدماته توفر الكثير من الخدمات و مفتوحة المصدر و قابلة للتطوير . المكتية متوفرة بلغة #C تحديداً و تحتاج لاعادة دراسة و لكن مروري عليها كان مرور الكرام . ما عجبني فيها استخدتم متصفح قوقل و امكانية التحكم بكل شيئ تقريباً داخل المتصفح , حتى وصل الحد الى امكانية حقن اكواد الجافا سكربت و الجي كويري داخل الصفحة مع امكانية جلب كل شيئ يختص بها حتى ملفات Css يمكنك التعامل معها مكتبة جبارة و تحتاج للدراسة . و الشيئ المميز ان فريق التطوير الخاص بها نشيط و التطوير فيها مستمر . ان شاء الله اذا توفر الوقت نحاول طرح المكتية للتطوير هنا , حتى يستفيد المهتمين بهذا النوع تحياتي لك. |