أهم أقسام المدونة

الصفحات

الثلاثاء، 31 أكتوبر 2017

خير الصحاب


خير الصحاب
(معلقة مهندسي المدينة الجامعية
لجامعة القاهرة دفعة 2000) 

لا تسألوني.. إنهم أصحابي = شَهِدَ الزمانُ بأنهم أحبابي
مهما تُفرّقْنا الأماكنُ ها هُمُو = عادوا لقلبي بعدَ طولِ غيابِ
عشرينَ عامًا ما تَبدَّلَ طبعُهم = ضحكاتُ لهوٍ من زمانِ تَصابي
ومهندسونَ، لنا مُفاخرةٌ بهم = وكفاحُهم كم نالَ من إعجابِ
1.   لو غابَ (ياسرُ) ما نَسِينا ذِكرَهُ = قد طابَ حيًّا أو ببطنِ تُرابِ
2.   ما زالَ (عبدُ العالِ) أفضلَ صاحبٍ = هذا شعوري دعكَ من أسبابي
3.   في المسألاتِ المُعضلاتِ ملاذُنا = نعمَ المهندسُ، زينةُ الألبابِ
4.   و(علي) له بينَ الجميعِ مآثرٌ = لو تَرتجيه يَجيءُ حتى البابِ
5.   هذا (النويشي) باحثًا ومهندسًا = ومضيفًَا "الدكتورَ" للألقابِ
6.   و(السندروسي) والبساطةُ طبعُهُ = يُضحى صديقَ الصَّحْبِ والأغرابِ
7.   ذا (وائلٌ عبدُ العزيزِ) أُعِزُّهُ = مَرِحٌ بَشوشُ الوجهِ بالتَّرحَابِ
8.   و(شريفُ نعمانٍ) يُعِيرُ متاعَهُ = ويُسجّلُ الأسماءَ فوقَ البابِ
9.   و(محمدٌ) من آلِ (يوسفَ) مِن قِنا = فَخرُ الصعيدِ وأنجبُ الأنجابِ
10.       مَن ذا على (نادي) يُنادي؟.. نَومُهُ = مُتشابِكُ الأحلامِ كاللَّبلابِ
11.       ما زالَ (أشرفُ صالحٍ) مُتوجِّهًا = لـ (أميرِ بيومي) ببعضِ عتابِ
12.       ذا (تامرٌ) دوما لودٍّ (حافظًا) = مَلَكَ القلوبَ بِضِحْكِهِ الخلاّبِ
13.       يا (أشرفُ المحروسَ) أُمَّ صلاتَنا = رتِّلْ فصوتُكَ بالغُ الإطرابِ
14.       و(محمدٌ حمدي) يسيرُ مُغنّيًا = للوهمِ كالشعراءِ والكتّابِ!
15.       ومن الـ(سلامةِ) أن تُصاقَ (ماهرًا) = فهو الزعيمُ بعنفوانِ شبابِ 
16.       لكنَّ (معتزًّا) ينافسُ (ماهرًا) = ليثينِ كانا في صراعِ الغَابِ
17.       لكنَّ (معتزًّا) كذلكَ حالمٌ = يُهدي دباديبًا بغيرِ حسابِ!
18.       (عبدُ الرحيمِ) هو الطويلُ بِهَيبةٍ = في العلمِ مجتهدٌ صديقُ كتابِ
19.       متشاكسانِ (رضا) و(سيّدُ رفعتٍ) = قَدَرُ العُدولِ تَنَافرُ الأقطابِ
20.       و(رضا) إمامُ الذاكرينَ، له الرضا = بوركتَ (سيّدَ رفعةٍ) كسَحابِ
21.       و(محمدُ المصري) زميلُ تَفوّقٍ = كانَ الحكيمَ وأهدأَ الطلاّبِ
22.       تَحلو مذاكرةٌ على طَبليّةٍ = يأتي بها (شعبانُ) لاستيعابِ
23.       (رمضانُ) يحيا بابتسامةٍ واثقٍ = تُغنيه في صمتٍ عن الإسهابِ
24.       ضَحِكي (إمامٌ) حينَ يَضحكُ (عاطفٌ) = حتّى ولو متعمّدٌ إغضابي
25.       وسَمِيُّه من آلِ (عيسى) طيّبٌ = ابنُ الصَّعيدِ بلهجةٍ وإهابِ
26.       أنسَى فلا أنسَى (سعيدًا يُوسفًا) = مُتذوّقًا للشِّعرِ باستعذابِ
27.       يُهديكَ (شبراوي) المَوَدَّةَ بَسمةً = يا (سيدَ) الأخلاقِ والأنسابِ
28.       ذا (تامرُ النجارِ) من دمياطَ في = كرمٍ يفوقُ مكارمَ الأَعرابِ
29.       وهناكَ مِن آلِ الـ(عمارةِ) (مُحسنٌ) = قلبٌ نَدِيُّ الزهرِ والأعشابِ
30.       مَن ذا يُـ(عادلُ) في البراءةِ (أحمدًا) = بطهارةِ الأخلاقِ والجِلبابِ
31.       و(أميرُ رمزي) ما أقولُ لشاعرٍ = إن قالَ نالَ مجامعَ الإعجابِ
32.       (علاّمُ) (أشرفُ) مَن تَرومُ صداقةً = فهو الصديقُ لمحنةٍ وصِعابِ
33.       و(شريفُ محروسٍ) بدا كممثلٍ = فتنَ الحِسانَ بمظهرٍ جذّابِ
34.       ها (أحمدُ الحَرَجاوِيَ) المُوصِي لنا = عندَ اتحادِ عشائرِ الطلاّبِ
35.       و(أبو المعاطي) ذاكَ أطيبُ (أحمدٍ) = ضخمٌ جَهورُ الصوتِ مثلُ هِضابِ
36.       ويَزينُ (زَينًا) في الرزانةِ (حِلمُهُ) = وجهٌ مُريحُ القلبِ والأعصابِ
37.       و(جمالُ) دفعتِنا ـ وربّي ـ (عَبدُهُ) = مَن في أناقتِه؟، ضَحكوكُ النابِ
38.       ويرى كمالُ سلامةٍ أحلامَه = تحيا بروحِ العازمِ الوثّابِ
39.       (بكرُ السفينةِ) كانَ أرجلَ صاحبٍ = بأصالةِ البدويِّ والأحسابِ
40.       قولوا (لإبراهيمَ) لا لم أنسَهُ = (تَحطيرُ) أطيبُ من رَأتْ أهدابي
41.       (عبدُ الغفورِ) هو الوقورُ، يَمِيزُهُ = صوتٌ عميقٌ جاءَ مِن سردابِ
42.       ها (أحمدٌ نوحٌ) نحيفٌ أسمرٌ = شابٌّ خفيفُ الدمِّ خيرُ شبابِ
43.       (شلّوبةً) ندعو أخانا (سامحا) = هي قريةٌ، والأرضُ كالأصلابِ
44.       و(أبو السعودِ) فلا يَغُرَّكَ حِلمُهُ = عندَ الشِّجارِ مُكَشِّرُ الأنيابِ
45.       ويَجيءُ (عاصمٌ) المدينةَ زائرًا = فَمَضَى علينا مثلَ مَرِّ سَحابِ
46.       (عبدُ العزيزِ) على جِدالي مُقبِلٌ = يا (أحمدًا) دعني أطرتَ صوابي
47.       يا (هاديًا) للحقِّ (عبدكَ) (أحمدا) = جَنِّبْهُ سَفْسَطةً وعودَ ثقابِ
48.       خُلُقًا وخَلْقا ذا (الحريري) بينَنا = فاشكرْ عطاءَ المُنعمِ الوهّابِ
49.       و(وليدُ موسى) والعريشُ طِباعُهُ = رجلٌ جميلُ الشَّعرِ قبلَ ذِهابِ
50.       جادٌّ وَدُودٌ في نَشاطٍ، (رأفتٌ) = وكذاكَ يُتقنُ حِرفةَ الأخشابِ
51.       متبسِّمٌ كيقينِ (يُوسفَ) بالتُّقى = سِمَةُ (العفيفِ) براءةُ الأثوابِ
52.       واذكر (إيادًا)، ذا الفتى (العِنتابي) = شهمًا سليلَ البدوِ والأعرابِ
53.       و(محمدًا طَهَ)، وكانَ مهندسًا = صارَ الطبيبَ مُخدِّرَ الأعصابِ
54.       و(محمدَ النحّاسِ) يَنشرُ بهجةً = أرسلْ سلامي للفتى الصَّخَّابِ
55.       و(لطارقِ الروّاشِ) في تهريجِه = وغرامِه باللّحمِ والأعنابِ
56.       أبلِغْ (زُعيرًا)، (عاصمًا)، و(المرغني) = بمودّتي ومَعزّةِ الأصحابِ
57. و(هشامُ) و(الفاروقُ) غَيْبٌ حاضرٌ = فالذكرياتُ مواطنُ الأحبابِ
وتحيةً مني لباقي جمعنِا = لا يَستوي والنجمُ مَرُّ شِهابِ
كنا هنالِكَ لا نُحسُّ بِغُربةٍ = نحيا معًا بمدينةِ الطُّلابِ
ما زالتِ الجدرانُ تَذكرُ أننا = كنا معا في الجَدِّ والألعابِ
والقلبُ صَفْوٌ والشبابُ طَلاقةٌ = تَمضي قواربُ عمرِنا المنسابِ
فنُعينُ إخوتَنا ونُكرِمُ بعضَنا = بالشايِ والنَّعناعِ والعِنّابِ
لا شخصَ يَبخلُ عن أخيه بعلمِهِ = دومًا سيَظفرُ سائلٌ بِجَوابِ
أحلى سنينِ العمرِ تَشهدُ أنهم = خيرُ الصحابِ وذاكَ فصلُ خطابي
يا ليتَ تجمعُنا بِمكّةَ صحبةٌ = وَلَدَى الحبيبِ نَلوذُ بالأعتابِ
طابوا وطابتْ في الوَرَى أبناؤهم = باقينَ في شِعري على الأحقابِ 

محمد حمدي غانم
24/9 - 18/10/2017

Custom DataSet


إنشاء مجموعات بيانات خاصّة Custom DataSet:
في هذا المقطع سننشئ مجموعات بيانات بدون تحميل أية تفاصيل من قاعدة البيانات.. سننشئها باستخدام مخطط XML، وسنربطها بجدول عرض DataGridView ليستطيع المستخدم إدخال البيانات بها، وسنسمح له بحفظها في ملفّ XML، وإعادة تحميلها بعد ذلك كما يشاء.
ابدأ مشروعا جديدا اسمه CustomDataSet، ومن القائمة الرئيسية Project اضغط الأمر Add New Item لعرض نافذة إضافة عنصر.. من القائمة اليسرى اختر العنصر Data، ومن القائمة اليمنى اختر العنصر DataSet، وحدّد اسما لهذا العنصر الجديد وليكن MyDataSet، واضغط الزرّ OK.
سيضاف مخطّط XML إلى المشروع اسمهMyDataSet.xsd .. انقره مرتين بالفأرة لعرض مصمم المخطط.
لو فتحت صندوق الأدوات الآن، فستجد به أدوات تناسب مخطط XML، وستكون مبوبة تحت الشريط DataSet.. انقر مرّتين بالفأرة على العنصر DataTable لإضافة جدول جديد إلى المخطّط.. هذا الجدول سيظهر في صورة مستطيل فارغ، يحمل الاسم الافتراضيّ DataTable1.. لتغيّر هذا الاسم، اضغطه بالفأرة لإظهار مربع التحرير، واكتب الاسم الجديد Students، ثم اضغط Enter.. كما يمكنك استخدام نافذة الخصائص لتغيير اسم الجدول.
ولإضافة عمود إلى هذا الجدول،

الخميس، 26 أكتوبر 2017

أخي


تمِّمْ شفاءَ أخي يا ربِّ واحفظْه 
اكتبْ لحمدي أخي من فضلِكَ الخيرا
سلّمْه مِن كلِّ سوءٍ دائمًا أبدًا
باركْ له بِبنيه اكتبْ لهم يُسرا
واحفظْ أخي (محسنًا) من كلِّ نائبةٍ 
واحفظْ أحبَّتَهُ، وَلْتُعلِهِ قَدرا

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

بلعب بديلي


بلعب بديلي 

يا أحلى م السكر
أنا في الغرام أشطر
من أيّ سلمندر
لو تقطعي لي ديل
يطلع له ألف بديل
مهما أشد الحيل
ع الحسن مش بقدر
بهوى أنا الحلوات
اثنين قليل وتلات
قلبي ومعاك إثبات
له أربعة سليندر
:D :D :D

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

خريطة التدفق الأسئلة


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



الحل:
سنستخدم في هذا البرنامج متغيرا اسمه المجموع، حيث سنجمع عليه درجة في كل مرة يجيب فيها المستخدم بإجابة صحيحة.. لاحظ أن البرمجة تستخدم الصيغة التالية لجمع 1 على المتغير:
المجموع = المجموع + 1
هذه الجملة ستبدو لك مربكة للوهلة الأولى إذ كيف يمكن أن يساوي الشيء نفسه بعد أن نجمع عليه 1 ؟!!
طيب.. دعني أكتب لك هذه العملية بشكل آخر:
س = المجموع + 1
المجموع = س
ما فعلناه هو تنفيذ العملية على خطوتين:
1- في الخطوة الأولى استخدمنا متغيرا مؤقتا اسمه س ووضعنا فيه المجموع + 1.
2- في الخطوة الثانية نقلنا القيمة الموجودة في المتغير س إلى المجموع.
من هاتين الخطوتين سنلاحظ حقيقة هامة، وهي أن المكتوب هنا ليس معادلات رياضية، بل هو نقل للقيم من متغير إلى آخر.. هذه العملية تسمى الإسناد Assignment أي أي وضع القيمة في المتغير، وتستخدم فيها العلامة = .. إذن فالعلامة = المستخدمة هنا ليست علامة مقارنة، بل هي علامة إسناد.
وقديما كان المبرمج مضطرا إلى تغيير قيمة نفس المتغير في خطوتين، كما رأينا، ولكن نظرا لأن هذه العملية تتكرر كثيرا، فقد اختصرتها لغات البرمجة في خطوة واحدة بحذف المتغير الوسيط س، ليصير الكود:
المجموع = المجموع + 1
هذا مجرد تسهيل على المبرمج، يوفر له وقتا وجهدا عند كتابة الكود.. ولكي لا يكون هذا الكود مربكا لك، فعليك أن تقرأه كالتالي:
قيمة المجموع بعد تنفيذ الكود = قيمة المجموع قبل تنفيذ الكود + 1

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

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

الأربعاء، 25 أكتوبر 2017

يوم واحد


حبيني يوم واحد يمكن أقابلك فيه
والمح على ملامحك كل اللي بتخبيه

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

زار كالسحر ليلتي


زار كالسحر ليلتي 

فاتنٌ حسنُهُ سَرَى = غارَ مِن خَطْوِه الثَّرَى
نورُه هامَ فالفضا = غامَ أمْ لمْ أعُدْ أرَى؟
يا لَبَرقٍ أصابني = أخبروني بما جرَى
قِيلَ: هلْ قدْ جُننتَ أمْ...؟ = قلتُ: شِعرِي له انبرَى
زارَ كالسحرِ ليلتي = كانَ بدرًا مُدّوَّرا
كانَ أسرِي بعشقِهِ = كنتُ غِرًّا مُخَدَّرا
ذا جزائي لأنّني = رُمتُ زهرًا مُعَطَّرا؟
ليسَ يُهدِي مُريدَهُ = لا يَبيعُ إذا اشترى!
ليتَ لي مِن وصالِهِ = ما أذوقُ بهِ الكَرَى
ذاكَ أو كانَ ظالمًا = سوفَ أَشكوهُ للوَرَى
محمد حمدي غانم
19/9/2017

 

 

Typed DataSet

مجموعة البيانات محددة النوع Typed DataSet:
رأينا في المعالج السحري كيف قامت دوت نت بإنشاء فئة اسمها DataSet1 آليا اعتمادا على المخطط DataSet1.xsd.. وتسمى هذه الفئة باسم مجموعة البيانات محددة النوع
Typed DataSet، لأنها تقوم بتعريف أنواع خاصة لجداول وصفوف مجموعة البيانات، وتسمح لك بالتعامل مع الجداول والأعمدة بأسمائها مباشرة.. لكي يحدث هذا، تقوم هذه الفئة بتعريف العديد من العناصر.. ولو فتحت الملف DataSet1.Designer.vb في المشروع TypedDataSet فستجد فيه تعريف الفئة DataSet1، وستجد فيها العناصر التالية:
1- فئة خاصة لكل صف في كل جدول في مجموعة البيانات.. أسماء هذه الفئات على الصيغة XRow، حيث X هو اسم الجدول.
وترث فئة الصف فئة صف البيانات الأم DataRow، وبداخل هذه الفئة يتم تعريف خاصية باسم كل عمود من أعمدة الجدول، تعيد قيمة الخانة الموجودة في هذا العمود في هذا الصف.. فمثلا، ستجد داخل الفئة DataSet1 فئة اسمها AuthorsRow تمثل صف البيانات في جدول المؤلفين، وستجد بداخلها خاصيتين هما: Author و Book تعيدان اسم المؤلف واسم الكتاب في الصف الحالي.
2- فئة لكل جدول موجود في مجموعة البيانات.. هذه الفئات تحمل أسماء على الصيغة XDataTable، حيث X هو اسم الجدول.
وترث فئات الجداول الفئة عامة النوع TypedTableBase(Of T) والتي ترث بدورها فئة الجدول DataTable، حيث T هو نوع صفوف الجدول.
فمثلا، ستجد داخل الفئة DataSet1 فئة اسمها AuthorsDataTable تمثل جدول المؤلفين، وهي ترث الفئة TypedTableBase(Of AuthorsRow).
وبداخل فئة الجدول، يتم تعريف خصائص للتعامل مع كل عمود بالجدول، وهي تعيد كائنات من نوع فئة العمود DataColumn Class.. فمثلا، ستجد في الجدول AuthorsDataTable الخاصيتين AuthorColumn و BookColumn اللتين تتيحان لك التعامل مع عمودي المؤلفين والكتب.
كما يتم تعريف عدة أحداث لفئة الجدول إضافة إلى ما ترثه من الفئة DataTable، وهي:
- الصف يتغير XRowChanging.
- الصف تغير XRowChanged.
- الصف يُحذف XRowDeleting.
- الصف حُذف XRowDeleted.
حيث X هو اسم الجدول.. فمثلا: في جدول المؤلفين يتم تعريف الأحداث التالية:
AuthorsRowChanging, AuthorsRowChanged,
AuthorsRowDeleting, AuthorsRowDeleted.
3- عدة خصائص على مستوى الفئة DataSet1 تحمل أسماء جداول مجموعة البيانات، لتتيح لك الحصول على كائن من نوع فئة هذا الجدول.. فمثلا، ستجد في الفئة DataSet1 خاصية اسمها Authors، تعيد نسخة من الفئة AuthorsDataTable، ويمكنك من خلالها التعامل مع جدول المؤلفين.
لاحظ أن هناك تشابها كبيرا بين فئات مجموعة البيانات محددة النوع وبين الكينوانات في Entity Framework و LinQ To SQL.
لكن لماذا كل هذا؟.. وبم تفيدنا المجموعة محددة النوع يا ترى؟

الجمعة، 20 أكتوبر 2017

أنا الدموع


أنا الدموع 

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