المتابعون للمدونة

الخميس، 23 نوفمبر 2017

فشرة


يا خاينة للعشرة
طلع الدهب قشرة
طلع الغرام فشرة
وأنا كنت بهواكي

محمد حمدي، 2017

 

بجماليون


بجماليون 

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

 

 

مخطط تدفق طباعة سلسلة من الأعداد


س: اسم خريطة التدفق لطباعة الأعداد من 1 إلى 10 على الشاشة.

الحل:
سنستخدم في هذا المخطط متغيرا اسمه ع يعبر عن العدد الذي سنطبعه عن الشاشة.. هذا المتغير سيبدأ من العدد 1.. وسنستخدم حلقة تكرار وسيتكون المقطع الذي سيتم تكراره من أمرين:
1- طباعة ع على الشاشة.
2- زيادة ع بواحد.
وفي نهاية مقطع التكرار سنستخدم جملة شرط للتأكد إن كان ع أكبر 10، فإن لم يكن نواصل عملية التكرار، ولا نتوقف إلا إذا صار ع أكبر من 10.. أي أننا سنتوقف عندما تكون قيمة ع = 11.

هذه هي خوارزمية البرنامج: 

ع = 1 .
كرر:
اطبع ع على الشاشة.
ع = ع + 1 .
إذا كان ع > 10 إذن:
غادر البرنامج.
نهاية الشرط.
نهاية التكرار.


والمخطط يوضح هذه الخوارزمية.
 


من كتاب المبرمج الصغير، للصف الثالث الإعدادي، للتنزيل مجانا:

الأربعاء، 22 نوفمبر 2017

لا تسأليه فما درى


لا تسأليه فما درى! 

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

محمد حمدي غانم
22/11/2017

حلقة تكرار لا نهائية


س: ارسم خريطة التدفق لطباعة العدد 1 على الشاشة لعدد لا نهائي من المرات.

الحل:
كل ما سنفعله في هذا البرنامج هو استخدام حلقة التكرار Loop.

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

من كتاب المبرمج الصغير، للصف الثالث الإعدادي، للتنزيل مجانا:

الاثنين، 20 نوفمبر 2017

لا تنكريه


أنا ذلكِ العشقُ الذي لمْ تَعرفيهْ
يُشقيكِ عقلُكِ دائمًا كي تُنكريهْ
لكنَّ قلبَكِ رغمَ أنفِكِ يَشتهيهْ!

محمد حمدي غانم، 2017

 

خطر


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

لتحميل الديوان في صورة كتاب PDF:

 

TableAdapter Methods


وسائل فئة موصل الجدول TableAdapter Methods:

تمتلك فئة موصل الجدول الوسائل التالية:

 ملء Fill:
تستقبل معاملا من نوع الجدول المراد ملؤه بالبيانات، وتعيد عددا صحيحا يخبرك بعدد السجلات التي أضيفت أو تم تحديثها في هذا الجدول.. وفي موصل جدول المؤلفين، يكون معامل هذه الوسيلة من نوع جدول المؤلفين المعرف في مجموعة البيانات DsAuthorsBooks.AuthorsDataTable، وبالمثل يكون هذا المعامل في موصل بيانات الكتب، من النوع DsAuthorsBooks.BooksDataTable.
لاحظ أنك تستطيع أن ترسل جدولا من جداول مجموعة البيانات إلى هذه الوسيلة، أو ترسل جدول حرا ليس مرتبطا بمجموعة بيانات، المهم أن يكون من النوع الصحيح. 

 قراءة البيانات GetData:
لا تستقبل أية معاملات، لكنها تعيد جدولا جديدا مملوءا بالبيانات.. هذا الجدول يكون من النوع AuthorsDataTable في موصل جدول المؤلفين، ومن النوع BooksDataTable في موصل بيانات الكتب. 

 تحديث Update:
تحفظ التغييرات في قاعدة البيانات.. لاحظ أن كل ما تفعله هذه الوسيلة، هو استدعاء الوسيلة Update الخاصة بموصل البيانات الداخلي.. ولهذه الوسيلة الصيغ التالية:
- الصيغة الأولى تستقبل كائن الجدول المراد حفظ تغييراته.
- الصيغة الثانية تستقبل كائن مجموعة البيانات، حيث يقوم موصل الجدول بقراءة التغييرات من الجدول الخاص به في مجموعة البيانات، دون غيره من الجداول.. مثلا: تستخدم هذه الصيغة الكود التالي في موصل جدول المؤلفين:
Return Me.Adapter.Update(dataSet, "Authors")
 -الصيغة الثالثة تستقبل كائن صف البيانات DataRow الذي تريد حفظ تغييراته في قاعدة البيانات.
- الصيغة الرابعة تستقبل مصفوفة تحتوي على صفوف البيانات التي تريد حفظ تغييراتها في قاعدة البيانات.
 -الصيغة الخامسة تستقبل قيم الصف المراد حفظه في قاعدة البيانات.. ولهذه الصيغة عدة معاملات، كل منها يستقبل قيمة أحد الأعمدة الموجودة في الصف.. مثلا، ستحتوي هذه الوسيلة في موصل بيانات المؤلفين على هذه المعاملات بالترتيب: Author، CountryID، Phone، About، Original_ID، Original_RowVersion.
 -الصيغة السادسة تزيد على الصيغة السابقة بمعامل إضافي يستقبل المفتاح الأساسي للجدول (الحقل ID في مثالنا هذا).
وتعيد هذه الوسيلة عددا صحيحا يخبرك بعدد السجلات التي تم تحديثها في قاعدة البيانات، فإذا كان الناتج صفرا، فهذا معناه حدوث مشكلة تطابق Concurrency Violation. 

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

 حذف Delete:
تحذف سجلا من قاعدة البيانات.. وتميز هذه الوسيلة السجل باستقبال مفتاحه الأساسي Original_ID وإصداره Original_RowVersion كمعاملين.. لاحظ أننا لا نستخدم إصدار السجل في جدول الكتب، لهذا تمتلك هذه الوسيلة في موصل جدول الكتب معاملات بعدد حقول الجدول، للبحث عن السجل الأصلي في قاعدة البيانات بدلالة كل قيمه.
وتعيد هذه الوسيلة عددا صحيحا يخبرك بعدد السجلات التي تم حذفها من قاعدة البيانات، فإذا كان الناتج صفرا، فهذا معناه حدوث مشكلة تطابق Concurrency Violation. 

من كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:

أحلى قصيدة


انتي يا أحلى قصيدة
لسة انا ما كتبتهاش
مش هقولك ليه بحبك
وانتي لسه مقولتِهاش!

محمد حمدي غانم، 2017

 

النصب


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

 

 

 

TableAdapter Properties


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

 الاسم Name:
تحدد اسم فئة موصل الجدول. 

 المجال Modifier:
تحدد مجال فئة الجدول.. والقيمة الافتراضية هي Public ليمكن استخدام هذه الفئة حتى من خارج المشروع الحالي. 

 الفئة الأم Base Class:
تحدد الفئة الأم التي ترثها فئة موصل الجدول.. في الوضع الافتراضي تكون هذه الفئة هي فئة المكون System.ComponentModel.Component.. لكن لا مانع من أن تكتب بدلا منها أية فئة أخرى بشرط أن تكون مشتقة من الفئة Component.. يمكنك مثلا أن ترث فئة موصل البيانات، أو يمكنك أن ترث فئة موصل جدول آخر! 

الأحد، 19 نوفمبر 2017

المكتوب على قلبك


أنا كل اللي بتحبيه
وأكثر م اللي نفسك فيه
أنا المكتوب على قلبك ومش ممكن في يوم تمحيه
فليه عني الهوى تخبيه؟

محمد حمدي غانم، 2017

 

يا لها


يا لها 

مَن علَّمَ الصبرَ قلبَها = على الذي رامَ حبَّها؟
هو الذي هامَ واكتوى = وما به ما أصابَها
أما دَرَتْ أنَّ صمتَها = إذا سَرَى، ضاعَ وانتهى؟
كأنه منذُ حبِّها = لمُنتَهَى حزنِه اشتهى
إذا هفا قلبُه لها = بِشوقِهِ قلبُها لها
ومنذُ أن ذاقَ سحرَها = غدا شغوفًا مُدَلَّها
فيا لَها! ما لَها؟ وها = هو الذي في الهَوَى وَهَى
ولم تَزَلْ في غرورِها = وكانَ يَبغي عُلُوَّها

محمد حمدي غانم
6/11/2017 

ملحوظة لغوية:
وما به ما أصابها: ما الأولى اسم موصول بمعنى الذي، والثانية ما نافية، بمعنى: والذي به لم يصبها.. لأن البعض قد يعكس المعنى، فيظن ما الأولى نافية وما الثانية موصولة بمعنى: وليس به الذي أصابها.. والسياق يوضح أي المعنيين هو الصحيح. 

ملحوظة عروضية:
هذه القصيدة على صيغة خاصة من البحر البسيط اسمها "مُخلَّع البسيط"، وقد أدخلت عليه تعديلا طفيفا ليصير على وزن (مستفعلن فاعلن فعو) بدلا من (مستفعلن فاعلن فعولن) 

TableAdapter Class


فئة موصل الجدول TableAdapter Class 

فئة موصل الجدول ليست فئة من فئات إطار العمل، لكنها فئة يقوم مصمم مجموعة البيانات محددة النوع Typed DataSet Designer بإنشائها في برنامجك لتسهيل تعاملك مع قواعد البيانات.
ويشبه موصل الجدول TableAdapter موصل البيانات DataAdapter في كل شيء، فهو يسمح لك بالحصول على السجلات من قاعدة البيانات لملء أحد جداول مجموعة البيانات.. ولكنه يتفوق على موصل البيانات في قدرته على تنفيذ عدد كبير من استعلامات التحديد SELECT للحصول على سجلات الجدول بطرق مختلفة من قاعدة البيانات، بشرط أن يكون الناتج ملائما لتركيب الجدول الذي يتم ملؤه.. بينما موصل البيانات مهيأ للتعامل مع استعلام واحد فقط.
ولكي تنشئ موصل جدول، يجب أن يحتوي برنامجك على مجموعة بيانات محددة النوع أولا.. اتبع هذه الخطوات:
- أنشئ مشروعا جديدا اسمه TableAdapter.
- من القائمة الرئيسية Project اضغط الأمر Add New Item، وفي النافذة التي ستظهر، اختر العنصر Data من القائمة اليسرى ، ومن القائمة اليمنى اختر العنصر DataSet، وامنحها الاسم DsAuthorsBooks.xsd.
- في نافذة المخطط، افتح صندوق الأدوات، واسحب العنصر TableAdapter وأسقطه على مصمم المخطط.. سيؤدي هذا إلى بدء المعالج السحري لتهيئة موصل الجدول:
TableAdapter Configuration wizard.
- أول نافذة في هذا المعالج، هي نافذة اختيار قاعدة البيانات المراد الاتصال بها، وقد تعرفنا عليها من قبل.. اختر قاعدة بيانات الكتب Books.mdf من الاتصالات المتاحة، أو أنشئ اتصالا جديدا بها، ثم اضغط الزر Next.
- ستسألك النافذة التالية إن كنت تريد حفظ نص الاتصال في إعدادات البرنامج.. وافق على هذا ودع الاسم الافتراضي BooksConnectionString كما هو، واضغط Next.
- تتيح لك النافذة التالية اختيار نوع أمر التحديد.. اختر Use SQL Statement واضغط Next.
- في النافذة التالية اكتب استعلام التحديد التالي واضغط Next:
SELECT * FROM Authors
- في النافذة التالية يمكنك اختيار الوسائل التي ستضاف إلى فئة موصل الجدول، كما هو موضح في الصورة: 


 
يمكنك أن تختار إنشاء وسيلة لملء جدول موجود في مجموعة البيانات، وسيكون اسمها المبدئي Fill ويمكنك كتابة أي اسم آخر في مربع النص.

كما يمكنك أن تختار إنشاء وسيلة تعيد جدول بيانات DataTable مملوء بالنتائج، لتستخدمه أنت بالطريقة التي تناسبك، وسيكون اسمها مبدئيا GetData ويمكنك كتابة أي اسم آخر في مربع النص.
أما الاختيار الأخير، فيجعل موصل الجدول ينشئ الوسائل اللازمة لتحديث قاعدة البيانات، وهي تحمل الأسماء Update و Insert و Delete.
بعد أن تحدد الاختيارات التي تناسبك، اضغط Next.
- ستظهر نافذة تلخص اختياراتك.. اضغط Finish لإنهاء المعالج وإنشاء موصل الجدول.
سترى في مصمم المخطط العنصر الموضح في الصورة.. هذا العنصر يمثل مخطط الجدول Authors، وفي الجزء السفلي منه مخطط موصل الجدول الذي سيستخدم للتعامل معه، واسمه الافتراضي AuthorsTableAdapter.
 
 
من كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:

 

الاثنين، 13 نوفمبر 2017

إلقائي لقصيدة علي بابا والأربعين عاما


هذا هو إلقائي لقصيدة "علي بابا والأربعين عاما" التي كتبتها في رثاء صديقي الراحل الشاعر أ. حاتم يحيى طه رحمه الله:

 


ويمكن قراءتها مكتوبة هنا:

 

صفحة الشاعر