استخدام جهاز الباركود في لغة سي شارب

19
في درس اليوم من سلسلة شذرات برمجية سوف نتعرف على كيفية استخدام جهاز قارئ الباركود Barcode Scanner / Reader في الدوت نيت، وستكون اللغة المستخدمة هي سي شارب C# علما أن نفس العمل يمكن تطبيقه كذلك على لغة فيجوال بيسك دون أية مشاكل.
سنشتغل على مثال يقوم بإضافة المنتجات إلى قاعدة البيانات، بحيث تتم قراءة الباركود تلقائيا بواسطة القارئ ثم يتم إدخال باقي تفاصيل المنتوج، وعند البيع يكفي تمرير ملصق الباركود المطبوع على المنتج أمام جهاز الباركود ليتم جلب معلوماته وصورته.
أيضا يحتوي الدرس على مجموعة من المعلومات البرمجية المفيدة كطريقة التعامل مع الصور واستخدام البرامترات مع SQL Command من أجل منع حقن SQL Injection وغير ذلك من المعارف النافعة.
نسأل الله عز وجل أن يجعل هذا العمل خالصا لوجهه الكريم وأن يتقبل منا ومنك صالح الأعمال.
مع متمنياتي لكم بالتوفيق والسداد، ودام لكم البشر و.............الفرح :)

رابط الدرس:


أيهما أفضل وأقوى PHP أم ASP.Net ؟ وبماذا أبدأ ؟

29

السلام عليكم ورحمة الله وبركاته، أحبتي في الله حياكم الله، وأهلا وسهلا بكم جميعا في مقالة جديدة من مقالات أكاديمية المبرمجين العرب.
سؤال اليوم سؤال مثير للجدل، غالبا ما يطرحه مبرمج أنهكته تطبيقات سطح المكتب فأقبل على أبواب تعلم برمجة الويب الديناميكية Dynamic Web Development، أو مبرمج بصدد البدء في مشروع من نوع Web project إما Website أو Web application قهرته الحيرة والتردد.
سؤال اليوم: أيهما أفضل وأقوى PHP أم ASP.Net ؟ وبماذا أبدأ ؟
للإجابة على هذا السؤال علينا إسقاطه على ثلاث نقاط أساسية لنخلص بعدها إلى جواب علمي مرتكز على معايير واقعية وليس على أهواء وميولات.

النقطة الأولى: التكلفة Cost:

معلوم ان لغة PHP لغة مجانية، ويمكن تشغيلها على مختلف انظمة التشغيل من Windows و Mac و Linux، إضافة إلى أن استضافة المواقع والتطبيقات المبرمجة بها متوفرة ومتاحة بكثرة وسعرها مناسب جدا.
بينما تقنية ASP.Net تابعة لشركة ميكروسوفت، وهي ليست مجانية وإنما مدفوعة، ويا ليت الأمر يتوقف عندها بل إن التكاليف مستمرة، خصوصا أن المواقع والتطبيقات المبرمجة بتقنية ASP.Net لا تشتغل إلا على الويندوز وهو منتج مدفوع، أضف إلى ذلك أن بيئة التطوير الخاصة ب ASP.Net وهي الفيجوال ستوديو مدفوعة أيضا وليست مجانية، إلا في حال أردت أن تشتغل على بيئة Mono Project على نظام Linux و Mac أو تشتغل على النسخ Express من الفيحوال ستوديو وهي مجانية لكنها ليست بمستوى كفاءة وقوة النسخ الكاملة مثل Ultimate و Professional...
ويستمر تفوق PHP على ASP.Net إذا ما تطرقنا إلى موضوع التوافقية Interoperability مع قواعد البيانات، فسوف نجد أن لغة PHP متوافقة بشكل كبير مع نظام إدارة قواعد البيانات MySQL وهو منتوج مجاني متاح للجميع :)
بينما تستمر دواهي وطوام ASP.Net لنجد أنها متوافقة بشكل كامل مع نظام إدارة قواعد البيانات MS SQL Server وهو مدفوع وغير مجاني :) ما عدا النسخة Express طبعا.
إذن من حيث عامل التكاليف فلغة PHP أفضل بمراحل من تقنية ASP.Net

النقطة الثانية: الكفاءة والأداء Performance:

هذه النقطة بالذات لا نستطيع الجزم فيها لأن كلا من لغة PHP وتقنية ASP.Net تشتغلان بكفاءة عالية وبأداء جيد، ويمكنك الاطلاع على سرعة مواقع كبيرة مصممة بهما، فمثلا موقع Facebook وهو أكبر شبكة تواصل اجتماعي مبرمج بلغة PHP، وموقع StackOverFlow أكبر تجمع للمبرمجين حول العالم مبرمج بتقنية ASP.Net بالارتكاز على لغة C# التي أفردنا لها دورات ودروس عدة يمكنك الاستفادة منها من هنا:
ما دمنا نتحدث حول الأداء والكفاءة فدعوني أوجه رسالة لكل أخ مبرمج:
كفاءة البرامج مرتبطة بكفاءة المبرمج، فما دمت تعتمد على الدقة في كتابة الكود Optimize the code، وما دمت تحرص على كتابة استعلامات منسقة ونظيفة Clean and Proper SQL Queries فأنا أضمن لك أن كفاءة برامجك ستزداد.

النقطة الثالثة: مصادر التعلم

مصادر تعلم لغة PHP متوفرة بشكل أكبر من مصادر تعلم تقنية ASP.Net ولعل ذلك راجع إلى مجانية اللغة والعدد الكبير للمبرمجين بها.
كذلك من حيث سهولة التعلم فلغة PHP أسهل، يكفيك أن تتابع دورة أو تقرأ كتابا ثم تبدأ بتطوير برمجيات ب PHP، كما يكفيك أن تطلع على قليل من قواعد PHP لتبدأ تطوير أنظمى إدارة المحتوى Content Managemeny System مثل ووردبريس، والتي أفردنا لها دورة من ثلاثين حلقة يمكنك متابعتها من هنا:
أما تقنية ASP.Net فمصادر تعلمها نادرة قليلا بالقياس مع وفرة مصادر PHP، لكنها سهلة التعلم إن كان لك سابق عهد بإحدى لغات الدوت نيت (فيجوال بزيك أو سي شارب) إضافة إلى دعمها للعديد من تقنيات الويب بشكل بسيط نذكر على سبيل المثال تقنية Ajax التي ستستطيع استخدام مجموعة من الأدوات الجاهزة، كل ما عليك سوى سحبها داخل Source Code والاستمتاع بها، وقد أفردنا لها بضعة دروس يمكنك الاطلاع عليها من هنا:
أيضا تقنية ASP.net غنية جدا على مستوى تقارير الطباعة Reporting لأنها تدعم الكريستال ريبورت و Report Document بشكل قوي جدا، الشيء الذي سيجعل شعرك يشيب في PHP لأنها عقيمة على مستوى التقارير.

في الختام أحب أن أشير إلى أن الاختيار بين لغة PHP وتقنية ASP.Net يحكمه توجهك الخاص أخي المبرمج، فلو كنت من رواد الدوت نيت فالتحق بركب ASP.Net ولا تلتفت لكل ما يشاع فإنك على صواب.
أما إن كنت جديدا وليس لك دراية بإحدى لغات الدوت نيت، فلا تتردد بخوض غمار لغة PHP ورأسك مرفوع، وإن سألوك عن السبب قل لهم: أوصاني بها رجل من بلاد المغرب الأقصى.

كيف أغير لون أو صورة خلفية فورم من نوع MDI في الدوت نيت ؟

11
البرامج من نوع MDI هي برامج تحتوي على واجهة رئيسية تشمل كل شاشات البرنامج وتمكننا من عرض أكثر من شاشة في وقت واحد والتحكم فيها جميعا بأمر واحد، كأن نغلق جميع الشاشات الفرعية من قائمة موجودة في الشاشة الرئيسية وما إلى ذلك.
في الدوت نيت (فيجوال بزيك و سي شارب) إذا أردنا أن نجعل واجهة معينة رئيسية لمجموعة من الواجهات الأخرى فلا بد لنا من تغيير الخاصية IsMdiContainer من القيمة الافتراضية False إلى القيمة الافتراضية True.
لكن المشكلة التي ستواجهها أن لون خلفية الواجهة سيصبح رماديا داكنا لا يتغير حتى وإن استبدلته بلون آخر، بل ولا يعرض حتى الصورة التي نحددها له كخلفية سواء فعلنا ذلك يدويا من نافذة الخصائص Properties Window أو كتابة بالكود.
كل ما ستراه هو ذلك اللون البائس أعلاه :(
توجد أكثر من طريقة لحل المشكلة، إما أن نضع شرطا يتحقق من نوع الفورم فإن كان من نوع MDI Client نضع له صورة أو نغير لون خلفيته وهذه هي الطريقة الأسهل والأفضل على الإطلاق والتي سنستعرضها بإذن الله.
أو نقوم برسم صورة الخلفية بواسطة مستطيل Rectangle في الحدث Paint الخاص بالفورم الرئيسي.
الآن تعال معي لنستعرض الحلول.

تغيير لون الخلفية (بلغة Visual Basic.Net):

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For Each ctl As Control In Me.Controls
            If TypeOf ctl Is MdiClient Then
                ctl.BackColor = Color.Aquamarine
            End If
        Next ctl
    End Sub

تغيير لون الخلفية (بلغة  C sharp.Net):

        private void Form1_Load(object sender, EventArgs e)
        {
                    foreach (Control ctl  in this.Controls)
                    {
                        if (ctl.GetType() ==typeof(MdiClient))
                        {
                            ctl.BackColor = Color.Aquamarine;
                        }
                    }
}

تغيير صورة الخلفية (بلغة Visual Basic.Net):


    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For Each ctl As Control In Me.Controls
            If TypeOf ctl Is MdiClient Then
                ctl.BackgroundImage = Image.FromFile("c://myPic.jpeg")
            End If
        Next ctl
    End Sub

تغيير صورة الخلفية (بلغة  C sharp.Net):

        private void Form1_Load(object sender, EventArgs e)
        {
                    foreach (Control ctl  in this.Controls)
                    {
                        if (ctl.GetType() ==typeof(MdiClient))
                        {
                            ctl.BackgroundImage = Image.FromFile("c://myPic.jpeg");
                        }
                    }
        }
هذه بعض الطرق السريعة لإنجاز المطلوب وكما ذكرنا آنفا، يوجد لدينا طرق أخرى للقيام بنفس العمل.
نكتفي بهذا القدر ونلتقي في تدوينة قادمة إن شاء الله.
دام لكم البشر والفرح.

وصايا مبرمج حكيم لابنه (أدبيات برمجية)

9

وصية مبرمج حكيم لابنه:

يا بني، حينما أكلمك اصغ إلي جيدا وحبلك على غاربك، فأنا لا أطالبك بالتنفيذ لأننا فقدنا الأمل فيه، فحتى الأكواد التي نخطها بأناملنا تخذلنا ساعة التنفيذ.
يا بني، لا تتعلق بأحد مهما استحسنته فإن الناس نُسَخٌ، وقد تعجبك نسختهم الآنية فترتبط بها، ثم يصدمونك عند أول تحديث أو إصدار جديد.
يا بني، لقد أدركت أكوادا لا أفهم عاليها من سافلها، لكنني تحاملت على نفسي وسايرتها باجتهاد حتى صرت أراها أبهى من ضفائر بثينة، وأجمل من لوحات بيكاسو، فلا تحكم على أحد من أول وهلة قبل أن تعايشه وتعاشره.
يا بني، سيحيط بك الفاشلون والمُثَبِّطُون وسيقولون لك: لن تستطيع إنجاز شيء، فاضرب بكلامهم عرض الحائط فقد قالوا نفس الكلام عن لغة الأسمبلي، لكن تأمل الآن كم من اللغات الرائعة التي خرجت من رحمها.
يا بني، عِشْ على أمل، فالدنيا حلقة تكرارية من نوع while مرتكزة على شرط: ما دمت متفائلا ستحيى، فإن أنت يئست كنت أقرب لباطن الأرض منك إلى ظاهرها.

يا بني، شَرُّ القومِ قَوْمٌ مَرُّوُا بِأَرْضٍ فَلاَةٍ، فلما تمكن منهم الظمأ واستيأسوا من طلب الورد، أدركوا بئرا فشربوا منها حتى قضوا وطرهم، ووردوا إبلهم وملؤوا قرابهم، ثم طمروا البئر وواصلوا سفرهم لئلا ينتفع منها غيرهم، وما علموا أن لو سبقهم إليها أمثالهم لكانوا قد هلكوا عطشا، فكذلك مثل أهل الأكواد المحتكرين الذين كلما عثروا على سورس كود استحوذوا عليه وَضَنُّوا به عن غيرهم مخافة أن ينتفعوا منه أو يسابقوهم فيه، فبئس القوم هم، جانبهم وباعد بينك وبينهم فإنهم أناس لا يصطلى بنارهم ولايرتجى نفعهم


الخطوات السوية لإنتاج برامج قوية - لغة UML (الجزء 1)

14
تعد هذه المقالة الجزء الثاني من السلسلة المكتوبة المسماة "الخطوات السوية، لإنتاج برامج قوية" التي تعنى بهندسة البرمجيات Software Engineering ولغة UML المستخدمة لنمذجة الأنظمة يمكنك قراءة المقالة الأولى عبر الرابط التالي: الخطوات السوية لإنتاج برامج قوية (مدخل إلى Software Engineering)
حينما أكمل المبرمج اللبيب حديثه عن أهمية مرحلة التحليل في هندسة البرمجيات، وذكر سوء عاقبة غياب التحليل أو الاستناد إلى تحليل سيء Bad Design في مختلف الجوانب: المال والوقت والسمعة وغيرها. اقتنع المبرمج العجول، ثم قال مستفسرا:
إن كان لا بد من مرحلة التحليل يا صديقي، فبماذا تنصحني؟ وهل علي تعلم تقنيات معينة لضمان سلامة التحليل؟ وهل هنالك وسائل تساعدنا في هذه المرحلة؟
لاذ المبرمج اللبيب بالصمت برهة ثم أجاب بانبساط:
مجرد طرحك لهذه الأسئلة دليل على استيعابك لأهمية مرحلة التحليل في نجاح مشاريع IT، لذلك ركز معي وبإذن الله ستجد أجوبة شافية لأسئلتك الآنفة.
سأفترض مسبقا أنك مثل الكثير من مطوري البرمجيات، تشتغل على تطبيقات سطح المكتب Desktop applications أو على أنظمة لشركات ومؤسسات Entreprise Systems، وتقوم بالانكباب على مشاريع تستنزف جهدك ووقتك وصبرك عبر صعوباتها وتعقيداتها...
ضحك المبرمج العجول قائلا:
لا تستغرب من تعقيدات الأنظمة، فطريق البرمجة ليس مفروشا بالورود... وإلا لسلكه العاشقون !
ابتسم المبرمج اللبيب ثم استطرد:
وهل في ذلك شك! لكن أبشر  فهنالك لغة إن أنت أتقنتها أو على الأقل فهمتها وعرفت كيف تستخدمها بشكل مضبوط، ستعرف كيف تدير تعقيدات المشاريع Projects Complexity.
و قبل أن أحدثك عن هذه اللغة أريد أن أصفعك ببعض المعلومات لتفتح عينيك جيدا، اعلم أن نسبة قليلة من مشاريع IT هي التي تنجح، والنسبة الأكبر من هذه المشاريع إما يكتب لها الموت قبل الاكتمال، أو يتم تسليمها لأصحابها منقوصة، مشوبة بعيوب وأخطاء أو غير مرضية.
هذه المشاريع قد تكون اشتغلت عليها مؤسسات بحيالها، أو مبرمجون متمرسون، لكن مع ذلك كتب لها الفشل، بسبب غياب فن إدارة المشاريع Project Management، و سوء تقدير تفاصيل النظام حق قدرها، وعدم الاستناد على تحليل سليم يخول فهم النظام فهما شاملا قبل كتابة أول سطر من الكود.
ثم ضع في بالك أن هنالك فرقا بين التحليل Analysis وبين التصميم Design، فالأول (التحليل) هو ما نستهل به عملية إنشاء البرمجيات، والغرض منه هو فهم المشكلة Understanding the problem واستيعابها بشكل سليم، أما التصميم Design فهو يأتي بعد مرحلة التحليل ويعني تهيئة وصياغة الحل المناسب لمشكلة المشروع.
وتذكر جيدا أن هندسة البرمجيات ماهي إلا نشاط تمثيلي أو نمذجي Modeling Activity لأي مشكلة نريد حلها، لأنه لا سبيل إلى التعامل مع تعقيدات الأنظمة إلا عبر نمذجتها (تصور النظام على شكل نماذج وتمثيلات).
وللقيام بأي نشاط نمذجي وتمثيلي لا بد من لغات مخصصة لذلك، وأشهر اللغات المخصصة لهذا الغرض هي لغة UML، وهي اختصار ل Unified Modeling Language، ويمكننا ترجمتها إلى اللغة العربية كالتالي لغة النمذجة الموحدة.
UML هي لغة لنمذجة وتحليل وتصميم المشاريع، وسميت لغة لأنها تؤدي تقريبا نفس الدور المنوط باللغات التي نعرفها، مثلا حينما نتحدث باللغة العربية فنحن نقوم بوصف أشياء وأشخاص وأحداث عبر استخدام الكلمات والإشارات. كذلك UML فنحن نستعملها كلغة لوصف وتمثيل المشاريع والأنظمة عبر استعمال مجموعة من المخططتن Diagrams والأشكال Notations.
على سبيل المثال إذا أردنا أن نصف الهاتف بلغتنا العربية سنقول عنه:
الهاتف هو جهاز الكتروني صغير بحجم الكف، يتكون من أزرار وشاشة، نستخدمه لإجراء واستقبال الاتصالات الصوتية، وكذلك تبادل الرسائل المصورة والنصية.
هذا التعريف أو الوصف لو دققنا فيه جيدا سنلاحظ أنه يركز على أمرين أساسيين:
1. خصائص الجهاز Properties (صغير، بحجم الكف، مكون من أزرار وشاشة)
2. وظائف الجهاز Functionality (إجراء المكالمات، استقبال المكالمات، بعث الرسائل، استقبال الرسائل)
وقد نضيف إلى هذين القسمين قسما ثالثا لا نتلفظ به لكننا نقوم به وهو القسم السلوكي Behavior، ويعني كيفية القيام بتلك الوظائف التي يوفرها الهاتف، وكمثال بسيط على سلوكيات الجهاز، نستطيع أن نقول: لكي نجري اتصال نقوم بإدخال رقم المخاطب ثم نضغط على زر اتصال، ونستطيع كذلك التمثيل عليه ب: لكي نبعث رسالة ندخل إلى قائمة الهاتف، ونضغط على أيقونة الرسائل، ثم نقوم بكتابة الرسالة ورقم هاتف المرسل إليه، وبعد ذلك نضغط على زر إرسال.
هذه كلها من السلوكيات التي نقوم بها من أجل الاستفادة من وظائف الهاتف.
هكذا نتكلم باللغات البشرية، فألفاظنا لا تحيد عن هذه الأقسام الثلاثة: الخصائص، الوظائف، السلوكيات، طبعا مع إضافة خصائص اللغة من أساليب بيانية وبلاغية وغيرها.
نفس الكلام ينطبق على لغة UML، نعم هي لغة والدليل أننا نستخدمها من أجل إجراء الثلاثية السابقة، لكن من أجل توصيف وتمثيل ونمذجة وتحليل الأنظمة والمشاريع عبر مجموعة من القواعد والرسومات والأشكال التي توفرها لنا هذه اللغة الرائعة من أجل الحصول على تحليل دقيق للمشروع، فعلى سبيل المثال نستطيع توصيف جهاز الهاتف بلغة UML على الشكل التالي:

الشكل 1: مثال على توصيف الهاتف بلغة UML
الشكل أعلاه يمثل مخططا من مخططات لغة UML يسمى مخطط الفئات Class diagram، وهو كما تلاحظون يعرض اسم الفئة المتناولة في التمثيل كعنوان للوحدة (في المثال هو Mobile)؛ ثم يعرض بعدها خصائص الفئة مع تحديد نوع بيانات كل خصيصة (طول وعرض ولون ونوع الهاتف)، وفي الختام وظائفها (إجراء واستقبال المكالمات والرسائل).
تتيح لنا لغة UML استخدام مجموعة من المخططات Diagrams المتنوعة حسب مراحل بناء المشروع، فهنالك مخططات نستخدمها أثناء جمع المتطلبات واستفسار العميل، وهنالك مخططات نستخدمها أثناء مرحلة تطوير المشروع وهنالك مخططات أخرى يختلف استخدامها مع اختلاف المرحلة التي نصل إليها في إنتاج المشروع.
أحيانا نحتاج إلى استخدام العديد من هذه المخططات وفي أحايين أخرى نجد أنفسنا غير ملزمين إلا ببعضها، والأمر الوحيد الذي يحدد لنا المخططات التي سنحتاجها هو تعقيد وصعوبة المشروع Project Complexity، فمثلا حينما يكون المشروع مفهوما وبسيطا من الأول كإنشاء برنامج لعرض عواصم البلدان، فعلينا ألا نبالغ في استخدام النماذج والإفراط في التحليل والدراسة، بينما الحال يختلف لما تزداد تعقيدات وتشبيكات النظام، فحينما يتعلق الأمر ببرنامج لحساب رواتب الموظفين بناء على عدد ساعات عملهم مع الأخذ بعين الاعتبار أوقات الغياب ودقائق التأخير وأيام الإجازات وغيرها من قيود، فنحن هنا ملزمون بالتريث واستخدام مخططات عديدة.
من بين المخططات المهمة التي نحتاجها في لغة UML، نذكر ما يلي:

  • مخطط حالة الاستخدام Use Case Diagram: هو أول نموذج نبدأ به عملية التحليل غالبا، ونستعمله أثناء جمع المتطلبات من لدن المستخدم، ويلزمنا في هذه المرحلة أن نتحدث مع المستخدم بلغة يفهمها وأن ننأى بأنفسنا عن المصطلحات البرمجية، لأن نموذج Use Case يعبر عن النظام من وجهة نظر المستخدم. ويستند هذا المخطط على شكلين رئيسيين وهما الممثل Actor وحالة الاستخدام Use case، ثم العلاقة بينهما. الممثل هو أي شخص أو أي شيء يتعامل مع النظام، بمعنى أنه ممكن أن يقدم أو يستلم شيئا من النظام، ويتم ترميز الممثل في UML بواسطة شكل شخص مرسوم كما يلي:
الشكل 2: توصيف الممثل Actor Notation
غالبا ما يعبر الممثل Actor عن شخص حقيقي يتفاعل مع النظام كالمستخدم الذي يستعمله، لكنه أحيانا ممكن أن يمثل نظاما آخر يتفاعل مع النظام المدروس، مثلا لو عندنا تطبيق معين يستقبل بيانات من تطبيق آخر، فهذا التطبيق الآخر يعتبر ممثلا Actor بالنسبة للتطبيق الأول، وللتوضيح: لنفرض أن لدينا تطبيق للآذان يستقبل آخر أوقات الآذان في مختلف البلاد من ويب سيرڤيس Web service، فهذا الويب سيرڤيس يعتبر ممثلا Actor في نظام تطبيق الآذان.

أما حالة الاستخدام Use Case فهي كل عملية ممكن أن يقوم بها الممثل في النظام، ويتم ترميزها بشلك بيضوي كما تعرض الصورة أدناه:
الشكل 3: توصيف حالات الاستخدام Use case Notation
وهذا مثال على كيفية استخدام مخطط حالة الاستخدام Use Case Diagram في نظام معلوماتي يسمح للطلبة بالولوج إليه من أجل مشاهدة درجاتهم، ومن أجل تحميل الدروس:

الشكل 4: مخطط Use case لنظام يتيح مشاهدة الدرجات وتحميل الدروس للطلاب

كما يعرض الشكل أعلاه، فالطالب بالنسبة للنظام هو عبارة عن ممثل Actor، بينما العمليات التي يقوم بها هذا الطالب على النظام هي حالات استخدام Use Cases.
توجد مخططات أخرى في لغة UML سوف نتعرف عليها إن شاء الله في المقالات القادمة، وبعد أن نستعرضها سننكب على دراسة حالة حقيقية لنخضع هذه المعلومات للتجربة.

دام لكم البشر والفرح والسلام عليكم.

الخطوات السوية لإنتاج برامج قوية (مدخل إلى Software Engineering)

35
تعتبر هذه المقالة جزء من أجزاء عديدة سنقوم بنشرها باستمرار إن شاء الله من أجل تقريب هندسة البرمجيات  Software Engineering لأذهان رواد أكاديمية المبرمجين العرب.
رمقه بنظرات ساخرة وقال له بازدراء:
- ويحك يا مغبون ! لماذا تضيع وقتك في مرحلة التصميم Design؟ ألا ترى أنه لا جدوى من هذه الخزعبلات مادمت تعرف ما الذي عليك عمله؟
فقط قم بفتح بيئة التطوير وابدأ في كتابة الأكواد التي تروج في ذهنك وسترى أنك ستنجز البرنامج دون تحليل أو صداع رأس.
رفع المبرمج اللبيب رأسه ثم رد بهدوء:
- لا تستعجل يا صديقي، وأمهلنا نخبرك اليقين.
ثم تابع بنفس الهدوء:
التخطيط أو التحليل أو التصميم لا يعني تحديدا تصميم الشاشات والواجهات الرسومية GUI أو كتابة أكواد تدور في خلدك كما تتصور، وإنما يعني كذلك التصميم الوظيفي والعملي، بمعنى تحديد طريقة التعامل مع البرنامج واختيار أفضل السبل والطرق لإنجازه على أحسن وجه، إذن فالتصميم يجمع بين الشكل والوظيفة appearance and functionality
تصور معي بناء منزل من دون تصميم، أو تركيب أجزاء سيارة دون مخطط، أو تجميع جهاز موزع إلى قطع دون دليل تجميع، فكذلك يا صاحبي شأن التحليل، فهو ذلك التصور السليم الذي ستسير وفقه حتى يتم إنشاء البرنامج بالشكل الذي ترتضيه ويرضي العميل، أما أن تأتي وتبدأ إنتاج البرنامج مباشرة فذلك أشبه بتجميع قطع لعبة puzzle لم تشاهد صورتها الأصلية، فنسبة الفشل إذن كبيرة جدا.

عليك بالتحليل، فالبرمجة بلا تحليل، كالإعلام العربي بلا تضليل...

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

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

غياب التحليل قبل مرحلة التكويد، أو الاعتماد على تحليل سيء Bad Design قد يتسبب لك في مجموعة من الخسارات أبرزها:

  1. ضياع الوقت: التحليل السيء سيدفعك باستمرار إلى العودة إلى نقاط تجاوزتها بغرض التعديل أو الاستغناء على أجزاء من الكود، لأن برمجة الأنظمة تكون متسلسلة وكل جزء مرتبط بغيره، وأي خطأ منهجي أو نقص في التحليل قد يستنزف الكثير من وقتك في أمور أنجزتها وستجد نفسك مضطرا إلى إعادة إنجازها لأنك أقمتها على غير وجهها.
  2. ضياع الجودة: بما أن برنامجك قائم على تحليل سيء أو قائم دون تحليل، فكن على يقين أنه سيكون رديئا بجميع المواصفات: شكلا ووظيفة، ولن يرتاح المستخدم النهائي إليه، بل قد لا يستطيع فهمه فضلا عن أن يتعامل معه.
  3. ضياع المال: لأنك إن أنشأت برنامجا بتحليل سيء فكن على يقين أنه سيكون مليئا بالأخطاء التي قد تعوق اشتغاله بشكل صحيح مما يدفع العميل إلى رفع تقارير الخطأ إليك باستمرار، والتي ستستنزف وقتك وتضيع عليك فرصة الاشتغال على برامج أخرى لجلب العائد المالي، بل وقد يؤثر التحليل السيء على عملية بيع البرنامج بحيث لن تكون طلبات له بسبب سوء اشتغاله.
  4. ضياع السمعة: إن كانت لديك مؤسسة أو مكتب وقمت بإنتاج برنامج يفتقد إلى التحليل السليم فكن على يقين أن سمعتك في السوق ستهوي إلى أقصى المنحدرات وقد رأيت بعيني كيف خسرت بعض الشركات بسبب كثرة شكاوي العملاء ومنهم من يشهر عيوب البرنامج بل وقد يطعن في الشركة عامة.
  5. ضياع الثقة في النفس: إن كان لديك فريق برمجي ووزعت العمل عليهم دون تحليل وفي كل مرة تقول لهم: لقد أخطأنا في كذا وكذا، والتحليل ينقصه كذا وكذا، وتعالوا بنا نعود إلى نقطة كذا وكذا، فكن على يقين أن ثقة الفريق ستهتز، ومزاجهم سيتم تكديره بكثرة إعادة نفس العمل جراء سوء التحليل.
أما إن كنت تشتغل على البرنامج بمفردك، فقد تضجر وتجزع بسبب كثرة الرجوع إلى نقاط سابقة، وصدقني قد تفكر في التوقف عن إكمال البرنامج، وكله بسبب عنادك وسخريتك من مرحلة التخطيط.

الإكمال التلقائي في مربع النص TextBox AutoComplete With Csharp

16
السلام عليكم ورحمة الله وبركاته، من الأسئلة التي طرحت علي فيما مضى هو كيفية جعل مربعات النص تقوم بعملية الإكمال التلقائي سواء من خلال إظهار اقتراحات Suggest مثل تلك الموجودة في محركات البحث (غوغل مثلا) أو من خلال الإدراج Append في نفس مربع البحث (شريط العنوان في متصفح غوغل كروم مثلا).
خلال هذا الدرس سوف نتعرف على هذا الأمر بسهولة من خلال استخدام خصائص AutoComplete المصحوبة لمربع النص في الدوت نيت وجعل الإكمال التلقائي يستند إلى جدول في قاعدة بيانات من نوع SQL Server، ويمكنك تحديد مصدر البيانات الذي تريد بنفس الطريقة، ويمكنك تطبيق نفس العملية في الفيجوال بسيك دوت نيت دون مشاكل.

لا تنس الاشتراك في القناة ومشاركة هذا الدرس مع أصدقائك :)

التثريب على المتقاعسين من أهل التعريب

0

بعد أن تحررت بلدان المشرق والمغرب العربي من براثين الاحتلال، بدأت في شق طريق النهضة والتقدم، وأدركت أن لا تقدم ولا نهضة إلا بعد  تعريب كل المجالات التي سرت فيها لوثة المحتل، لأن اللغة أصل الفهم، ولكي يفهم الجيل الناشىء العلوم والتكنولوجيات عليه أن يجدها باللغة التي يفهمها.
من هذا المنطلق بدأت معظم الدول في تعريب المناهج التعليمية بدرجات متفاوتة، فبين دول عربت  التعليم العام في كل مراحله بدء من الطور الابتدائي وانتهاء بالطور الجامعي مرورا بالأطوار الإعدادية والثانوية (دول الخليج نموذجا)، وبين دول عربت طورا دون طور (دول المغرب العربي نموذجا).
وكما تذكر الموسوعة العربية العالمية، فإن الحاجة الكبرى إلى عمليات التعريب دفعت مجموعة من الأقطار العربية إلى إنشاء مجامع لغوية "على غرار مراكز التعريب التي ازدهرت في العصر الأمويّ والعباسي خاصة وجعلت من اللغة العربية آنذاك لغة الثقافة والحضارة والعلم، إلى جانب كونها لغة الدين." بغرض مواكبة الثورة العلمية الحديثة، ومحاولة نقلها إلى العالم العربي بصيغة مفهومة تقوم على ترجمة كل المصطلحات الأجنبية إلى مصطلحات عربية.
ولا يستطيع أحد أن ينكر فضل هاته المجامع والتنسيقيات والمعاهد والمكاتب التي لم تذخر جهدا في سبيل ترجمة كل المصطلحات الدخيلة وإيجاد مفردات مقابلة لها في اللغة العربية سعيا منها لمواكبة هذا الزخم المعرفي والتطور العلمي الهائل في العالم الغربي، ولا يقدر أحد أن يجحد بأن هذا الجيل جنى ثمار هذه المؤسسات من خلال القواميس العديدة التي أصدرتها، وأبرز هذه المجامع: المجمع العلمي العراقي، مجمع اللغة العربية الأردني، مجمع اللغة العربية المصري، المكتب الدائم لتنسيق التعريب بمدينة الرباط عاصمة المغرب، ويعد هذا الأخير ـ حسب الموسوعة العربية العالمية ـ صاحب فضل عظيم في "تنسيق وتوحيد مصطلحات 20 علما إلى حدود عام 1981، وبلغ عدد تلك المصطلحات 67 061 مصطلحا، كما قام المكتب بإصدار مجلته اللسان العربي منذ شهر يونيو عام 1964م، ونشر المصطلحات العلمية والمعاجم في الرياضيات والفيزياء والكيمياء والفقه والقانون والأشغال العامة والسياسة وغيرها من شؤون الحياة."
لكن في السنوات القليلة الأخيرة، بدأ نشاط هذه المجامع يضعف وعطاؤها يندر إزاء ثورة معرفية هائلة تستلزم تكثيف الجهود لمسايرة متطلبات العصر عبر تعريب مصطلحات هذه المعارف والتقنيات الجديدة ومحاولة إفراد قواميس متخصصة يعود إليها كل من أراد الكتابة في علم من هذه العلوم.
الكاتب العربي اليوم، الذي يكتب في مجال التقنية أو البرمجة أو الشبكات أو الإعلاميات عموما، يجد صعوبة بالغة في ترجمة الكلمات الأعجمية إلى اللغة العربية لأنه ليس من أهل الفن وليس له باع طويل في اللغة العربية فتجده يتخبط في الترجمة فيعرب كلمة دخيلة بما لا علاقة له بالمفهوم الأصلي للكلمة (مثلا في البرمجة تتم ترجمة الكلمة Class إلى "فئة" وهذه الكلمة لا تعكس جوهر الكلمة الأصل)، لا عتاب ولا لوم ولا تثريب على هؤلاء الكتاب، لأنهم ليسوا مجبرين بأن يكونوا من علماء اللسانيات أو من نوابغ النحو و الإعراب ليتمكنوا من إيجاد المرادف السليم لكل كلمة أعجمية، لكن اللوم كل اللوم والتثريب كل التثريب على أهل التخصص الذين لم يوفروا لهذا الكاتب قاموسا يعود إليه ليجد المصطلح السليم المتفق عليه عربيا فيستعمله في كتاباته.
اليوم، اللغة العربية في أمس الحاجة ـ أكثر من أي وقت مضى ـ إلى أهل التخصص في التعريب والترجمة لكي يبدؤوا في البحث عن الكلمات المستخدمة في المعلوميات ويحاولوا أن ينسقوا مع المجامع العربية الأخرى ويوحدوا جهودهم ليخرجوا بقواميس ومعاجم يعود إليها كتاب المعلوميات، وذلك سيجعل لغتنا العربية لغة قوية مواكبة لتغيرات العصر، بالإضافة إلى إغنائها بزاد مهم من الكلمات العلمية والتقنية.

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

أساطير برمجية - أبو الأكواد ونظام الويندوز

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

فرد عليه المنصور: طيب أسمعنا شيئا من الهجاء وياليتك توجه سهامك إلى شركة ميكروسوفت.

ابتسم أبو الأكواد بخبث ثم رد بهدوء: أمرك يا مولاي، ثم بدأ:

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

فغر الخليفة فاه في ذهول وهو يقول:
شل الله لسانك أهذا هجاء أم إطراء؟

أطرق "أبو الأكواد" برأسه وهو يقول:
وهل في الحسناء شيء يعاب، ألست يا مولاي تستخدم نظام الويندوز؟

هنا رد الخليفة ضاحكا:
حسبك.

ثم أمر له بحاسوب Compaq وقرص صلب خارجي مقداره 3 تيرا.

دورة لغة XML وتوابعها (سبعة دروس بجودة عالية)

4

السلام عليكم ورحمة الله وبركاته، أحبتي في الله نقدم لكم اليوم دورة جديدة من الدورات التي تقدمها أكاديمية المبرمجين العرب حول موضوع: لغة XML وما يترتب عنها من توابع (XSL, DTD, SCHEMAS, XPath, XQuery, ...)  بأسلوب أكاديمي سلس نراعي فيه التدرج وبسط المفاهيم المعقدة بأسلوب مستساغ.
تعرض دورتنا هذه تاريخ لغة XML وأهميتها في عالم البرمجيات والأنظمة وتبادل البيانات بين الأجهزة المختلفة، أيضا نكشف النقاب عن الفرق بين لغة XML وبين لغة HTML وعن أصلهما المشترك لغة SGML ال\ي استمدتا منه البنية الشجرية القائمة على الأوسمة Balises / Tags، أيضا ستاعرف على مكونات ملفات XML بدء من المدخل Prolog / XML Declaration وما يتكون منه من خصائص Version، Encoding، Standalone، مرورا بالمحتوى Content الذي يتكون من الجذر Root و العناصر Elements.
سنتعرف على معالجات XML التي تسمى ب XML Parsers التي تقوم بعرض محتوى ملفات XML بعد تحويلها باستخدام لغة XSL (Extensible Stylesheet Language) وسنتعرف كذلك على ضوابط وقواعد كتابة الأوسمة في XML ومفهوم الخصائص Attributes.
مع متمنياتي لكم بالتوفيق والسداد ودام لكم البشر والفرح.

محتوى دورة لغة XML و توابعها:

1. دورة لغة XML - تاريخ لغة XML وتقنيات تبادل البيانات 
2. دورة لغة XML - دواعي استخدام XML ونماذج حقيقية على ذلك 
3. دورة لغة XML - الفرق بين HTML و XML ومزايا لغة XML والأدوات اللازمة 
4. دورة لغة XML - إنشاء أول ملف XML (المدخل Prolog، الترميز Encoding، المعالجة Parsing) 
5. دورة لغة XML - الجذر والعناصر Root and Elements 
6. دورة لغة XML - قواعد كتابة ملف XML سليم Well-Formed
7. دورة لغة XML - الخصائص Attributes 

حل مشكلة ظهور الحروف العربية على شكل علامات استفهام في SQL Server

51

السلام عليكم ورحمة الله وبركاته، مشكل الترميز في نظام إدارة قواعد البيانات SQL Server 2008 يتسبب أحيانا في إظهار الكتابات العربية على شكل علامات استفهام لأن الترتيب الافتراضي  Collation لا يدعم ترميز الحروف العربية، وبالتالي وجب تغيير نمط الترتيب واختيار أحد الأنماط الداعمة للغتنا، وهذه صورة للمشكلة:

حل المشكلة

قد تبحث على النت فتجد طرقا كثيرة جدا لكنها ستستنزف وقتك وأحيانا لن تفي بالغرض لأنك قد تواجه مشاكل قاعدة البيانات أحادية ومتعددة الاستخدام  Single_User and Multi-User Modes أو مشاكل أخرى، لذلك ارتأيت أن أختصر عليك الجهد في أسطر ثلاثة إذا قمت بنتفيذها ستنتهي مشكلة الترميز.
قم بإضافة محرر استعلامات جديد:

الآن قم بنسخ الأوامر التالية في محرر الاستعلامات ثم اضغط على زر التنفيذ Execute أو اضغط على الزر F5، مع الأخذ بعين الاعتبار تغيير اسم قاعدة البيانات إلى إسم قاعدة البيانات الخاصة بك:

USE master
ALTER DATABASE YourDatabaseName SET SINGLE_USER;
ALTER DATABASE YourDatabaseName COLLATE Arabic_CI_AS;
ALTER DATABASE YourDatabaseName SET MULTI_USER;


شرح الأوامر

في السطر الأول حددنا قاعدة البيانات الرئيسية master التي استخدمناها من أجل تنفيذ أوامر تغيير الترميز.
في السطر الثاني قمنا بتغيير وضع الاتصال بقاعدة البيانات التي نريد تحويل ترميزها إلى الوضع الأحادي SINGLE_USER، ثم في السطر الثالث قمنا بتغيير ترتيب الترميز إلى اللغة العربية Arabic_CI_AS، وفي السطر الأخير قمنا بإرجاع قاعدة البيانات إلى الوضع المتعدد MULTI_USER.
علما أنه توجد مجموعة من الأنماط الأخرى الداعمة لغة العربية حسب البلدان العربية ويمكنك الاطلاع عليها من خلال عمل Right Click على قاعدة البيانات ثم اختيار Properties، بعد ذلك ادخل على التبويب Options، ستظهر لك قائمة منسدلة إلى جانبها Collation قم بالدخول إليها وستجد مجموعة من الترميزات العربية حسب البلدان العربية وكلها تبدأ بالمقدمة Arabic.


ملاحظة

الطريقة التي رأيناها فعالة جدا إذا قمنا بها قبل إنشاء الجداول، أما إن كانت الجداول منشأة مسبقا فقد لا تتأثر بعملية تغيير ترميز الحروف Collation، لذلك وجب في حالة بقاء الخلل في الجداول الموجودة مسبقا أن تقوم بفتح الجدول في وضع التعديل Design Mode، ثم تحدد الحقل الذي تريد تخزين قيم عربية داخله وتذهب إلى خصائصه وتعدل الخاصية Collation التابعة له وبهذا ينتهي المشكل جذريا (عملية تعديل ترميز الحقل كما يلي):


في حفظ الله ورعايته.


السماح بكتابة الأرقام فقط في TextBox في ASP.Net

2

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

لنفترض أن مربع النص لدينا في صفحة الكود سورس كما يلي:

<asp:TextBox ID="txtAge" runat="server" />

علينا إنشاء دالة بالجافاسكريبت وليكن اسمها مثلا CheckNumeric()
  

  <script type="text/javascript">
        function CheckNumeric() {
            if ((event.keyCode < 48 || event.keyCode > 57)) {
                event.returnValue = false;
            }
        }
    </script>

الدالة CheckNumeric() تتحقق من مجال الأزرار المضغوطة فإن كان ترميزها في نظام ASCII أصغر من 48 أو أكبر من 57، أي أنه لا ينتمي إلى مجال الأرقام من 0 إلى 9 (لأن ترميز ASCII للأرقام يبدأ من 48 وينتهي ب 57) يقوم بإلغاء عملية الكتابة، وفي حال العكس (أي إدخال قيم رقمية)  سيسمح بالكتابة.
بعدها في الحدث onkeypress التابع لمربع النص نقوم باستدعاء الدالة التي قمنا بإنشائها:

<asp:TextBox ID="txtAge" runat="server" onkeypress="CheckNumeric()" />

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

يمكنك العودة إلى جدول ترميز ASCII للاستفاضة في التمثيل الرقمي لكل رمز من رموز لوحة المفاتيح من الرابط التالي:

http://www.asciitable.com/

كتاب: الشرح الوافي لتعلم لغة SQL من نبعها الصافي

28

الحمد لله ابتداء وانتهاء، والصلاة والسلام على حبيبنا محمد صلى الله عليه وعلى آله وصحبه وسلم تسليما كثيرا وبعد:
فإنه من غير اللائق بأمة طالما حملت مشاعل التقدم والتطور أن تتخلف عن ركب التكنولوجيا، وأن تنشغل بتوافه الأمور من قبيل ما اصطلح عليه بالفن والإبداع وهو لعمري عن الفن بعيد بُعْدَ الشرق عن الغرب، حيث صرنا نرى كل الدعم يوجه إلى تشجيع أهل الغناء والرقص والكوميديا والأجدر أن تنفق هذه الأموال فيما يعود على الأمة بالنفع والصلاح لتستعيد مثابتها في الريادة والقيادة، ولن يتأتى ذلك بعد النجوم ولا بانتظار هطول الذهب، فإن الله جل وعلا لا يغير ما بقوم حتى يغيروا ما بأنفسهم.
علينا كأمة طامحة لفرض ذاتها أن تعمل ﴿ وَقُلِ اعْمَلُوا فَسَيَرَى اللَّهُ عَمَلَكُمْ وَرَسُولُهُ وَالْمُؤْمِنُونَ (التوبة:105)﴾ في سبيل قيام نهضة علمية. قد يقول قائل بأن كل ما نورده الآن هو موجود وقد سبقنا إليه الغرب، أقول ليس عيبا أن نبدأ من حيث انتهى غيرنا، فهم أيضا بنوا حضاراتهم على أطلال حضاراتنا وقد ترجموا من أمهات الكتب العلمية ماالله به عليم، ناهيك عن تزوير الحقائق الذي قاموا به من نسب بعض الاكتشافات إلى مغموريهم على حساب فطاحلنا.
طبعا هذه المقدمة بعيدة كل البعد عن لغة SQL ولكن لابد من هذا التمهيد حتى تتحمس – عزيزي القارئ – إلى الإبداع في هذا المجال وألا تكتفي فقط بالأخذ مما جاء في غضون الكتاب بل عليك الاجتهاد واستغلال ملكة التفكير.
ينقسم كتاب "الشرح الوافي، لتعلم لغة SQL من نبعها الصافي" إلى خمسة فصول رئيسية. الفصل الأول والثاني يعرضان مجموعة من المعلومات والتقنيات النظرية والرياضية، بينما تقوم الفصول الثلاثة الأخيرة بعرض معلومات عملية تطبيقية، تدفعك إلى اكتساب تقنيات جديدة تخول لك احتراف لغة SQL مع برنامج SQL Server.
ولا ننسى كما جرت العادة، إلى تنبيهكم بأن لكل شيء إذا ما تم نقصان، ومجهودنا هذا مجهود بشري قد يشوبه النقص والخلل عن سهو أو عن سوء فهم، لذا نرجو من حضراتكم إعلامنا في حال وجود أي شائبة أو خطأ في هذا الكتاب.
نسأل الله عز وجل أن يجعل هذا العمل خالصا لوجهه الكريم، وألا يجعل للنفس ولا للهوى حظا فيه، كما نسأله عز وجل أن ينفع كل قارىء لهذا الكتاب ولو بالنزر القليل.
دام لكم البشر والفرح وبالتوفيق والسداد إن شاء الله.


خالد السعداني

كتاب: الهجرة من الفيجوال بسيك إلى سي شارب والعكس

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

كتاب: مدخل إلى الداتا أكسيس لاير في لغة c#

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