برجاء تسجيل الإعجاب بالصفحة لتصلك كتاباتي على فيسبوك

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

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

أنا الدموع



أنا الدموع 

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

 

 


الرفق بالمخطوف



تروح العين على الحلوات = وغيرك روحي يوم ما تشوف
 تنور بالسما النجمات = وأهوى البدر لو مكسوف
 وقلبي بين ايديك اثبات = وارجو الرفق بالمخطوف

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

 


المعالج السحري لمجموعة البيانات



المعالج السحري لإنشاء مجموعة البيانات
Generate DataSet Wezard 

تتيح لك دوت نت طريقة مرئية لإنشاء مجموعة البيانات آليا.. لفعل هذا، أضف موصل بيانات Data Adapter إلى صينية مكونات النموذج، واضبط خصائصه كما تعلمنا من قبل، ثم اضغطه بزرّ الفأرة الأيمن، ومن القائمة الموضعيّة اضغط الأمر "إنتاج مجموعة البيانات" Generate Dataset.. وستجد نفس الأمر في القائمة الرئيسيّة Data أعلى النافذة.
سيظهر لك مرّبع حوار "إنتاج مجموعة البيانات" كما هو موضح بالصورة:
 
 
في هذه النافذة يمكنك اختيار إنشاء مجموعة بيانات من مخطط مجموعة بيانات موجود سابقا في البرنامج، أو إنشاء مخطط جديد اسمه DataSet1.. لاحظ أنك تستطيع تغيير هذا الاسم، والأفضل اختيار اسم أكثر تعبيرا عن وظيفة مجموعة البيانات.
وتعرض لك النافذة قائمة بأسماء الجداول التي يوفرها موصل البيانات، ليمكنك اختيار إضافتها جميعا إلى مجموعة البيانات أو حذف بعضها.  ويوجد اختيار أسفل النافذة، يحدد إذا كنت تريد إضافة نسخة من مجموعة البيانات إلى النموذج أم لا.
بعد أن تحدد اختياراتك اضغط Ok لإغلاق النافذة.. سيؤدي هذا إلى ما يلي:


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

بعد البعد



بحبك مش هجيب لك ورد = ولا هشبه ف حبك حد
ولا بغنوة كتبها الشوق = هقولك إنه عشق بجد
أنا ههواكي زي ما أكون = فكوني الكون وجاوزي الحد
طاير لك فوق جناح الضوء = وهستناكي بَعد البَعد
محمد حمدي غانم، 2017


أسئلة حائرة في العشق



أسئلة حائرة في العشق 

يسألُني قلبي
ما طعمُ قصيدةِ شِعرٍ أكتبُها
وأنا أخشى أن يُوقظَكِ صريرُ القلمِ على الأوراقْ؟
أو نقراتي لمفاتيحِ الحاسبِ حينَ أبثُّكِ أنّاتِ الأشواقْ
أو دقةُ قلبي في أذنيكِ وأنتِ هنالِكِ تَغفِينَ على صدري
مثلَ الطفلةِ يُضحكُها الحلمُ البرّاقْ
يَسألُني كيفَ سأغرَقُ في عينيكِ إلى الأعماقْ
وأنا ما زلتُ أحّلقُ في الآفاقْ؟
يَسألُني ما سرُّ الدهشةِ في هذا الخجلِ التَّوّاقْ؟
أو كيفَ تَفَجَّرَ نبعُ اللذةِ من شَفةٍ تتبسّمُ للمشتاقْ
يَسألُني..
لا أدري كيفُ أجيبُ فألجأُ للإطراقْ
أسألُكِ الآنَ أنا،
فأجيبي القلبَ الخفّاقْ
يا أنتِ أيَا أسطورةَ عشقٍ تَتلألأُ في الأحداقْ
أعطي لفؤادي الميثاقْ
محمد حمدي غانم
4/10/2017


خريطة تدفق التقدير 2



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

إذا كان المجموع أصغر من 30 إذن:
التقدير = "ضعيف جدا".
غير ذلك إذا كان المجموع أصغر من 50 إذن:
التقدير = "ضعيف".
 غير ذلك إذا كان المجموع أصغر من 65 إذن:
التقدير = "مقبول".
غير ذلك إذا كان المجموع أصغر من 75 إذن:
التقدير = "جيد".
غير ذلك إذا كان المجموع أصغر من 85 إذن:
التقدير = "جيد جدا".
غير ذلك:
التقدير = "ممتاز".
نهاية الشرط.
اطبع التقدير على الشاشة.

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


عصفور نونو



يا قمر صبرِك عليا
لسة باستكشف ملامحِك
زي عصفور لسة نونو
تاه لوحده في حقل قمحِك
محمد حمدي غانم، 2017

 


النسر الأحمق



النسر الأحمق 

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


خريطة تدفق التقدير



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

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

إذا كان المجموع أصغر من 30 إذن:
اطبع على الشاشة "التقدير ضعيف جدا".
غير ذلك إذا كان المجموع أصغر من 50 إذن:
اطبع على الشاشة "التقدير ضعيف".
 غير ذلك إذا كان المجموع أصغر من 65 إذن:
اطبع على الشاشة "التقدير مقبول".
غير ذلك إذا كان المجموع أصغر من 75 إذن:
اطبع على الشاشة "التقدير جيد".
غير ذلك إذا كان المجموع أصغر من 85 إذن:
اطبع على الشاشة "التقدير جيد جدا".
غير ذلك:
اطبع على الشاشة "التقدير ممتاز".
نهاية الشرط.



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

 


الخميس، 28 سبتمبر، 2017

فارس من زمن العشق



فارس من زمن العشق

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

محمد حمدي غانم
23/9/2017


DataSet Class



فئة مجموعة البيانات DataSet Class 

هذه الفئة توجد في النطاق System.Data وهي تمثل واجهة مصدر القائمة IListSource التي سنتعرف عليها لاحقا.
ولحدث إنشاء هذه الفئة الصيغتان التاليتان:
- الصيغة الأولى بدون معاملات.
- والصيغة الثانية تستقبل معاملا نصيا، يمثل اسم مجموعة البيانات، الذي سيستخدم عند حفظ مجموعة البيانات في ملف XML. 



وتمتلك مجموعة البيانات الحدث التالي: 

  فشل الدمج MergeFailed:
ينطلق إذا فشلت عمليّة دمج بيانات جدولين باستخدام الوسيلة Merge.. يحدث هذا مثلا، إذا كان العمود المستخدم كمفتاح أساسي في السجل القادم، مختلفا عن العمود المستخدم كمفتاح أساسي في السجل الموجود مجموعة البيانات.
والمعامل الثاني e لهذا الحدث من النوع MergeFailedEventArgs، وهو يمتلك الخاصيتين التاليتين:

Table
تعيد كائن الجدول DataTable الذي رفض عملية الدمج.
Conflict
تعيد نصا يشرح سبب التعارض الذي أدى إلى فشل عملية الدمج.
 
من كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:

 


ذنب هواك



ذنب هواك 

ذنبٌ هواكِ وما حبّي بمعصيةٍ = إلاّ غوايةَ حسنٍ في مُحَـيَّاكِ

عشقي يَمُورُ وما للعشقِ من سببٍ = إلاّ تَسامِيَ رُوحي حينَ ألقاكِ

يا ظبيةً في المَدَى ظلّت تُراوغُني = ما آنَ أنْ تَسقطي في أسرِ مَولاكِ؟

سرُّ الغرامِ إذا نُخفيه مُنكَشِفٌ = شمسُ الغروبِ بدتْ في الشرقِ: خدّاكِ!

يَدري الوَرَي بالذي عيناكِ أَفصَحَتا = والنبضُ في مهجتي قد صاحَ: أهواكِ

أبدو القَوِيَّ وفيكِ الضعفُ يأسرُني = سبحانَ مَن بالذي أوهاكِ.. قوّاكِ!

إني أريدُكِ، هذا الشوقُ أرَّقَني = لا شيءَ فيَّ أَرَى إلاّ تَمنَّاكِ

محمد حمدي غانم
21/9/2017

 

 


وسائل الفئة DataSet


وسائل الفئة DataSet: 

 محو Clear:
تمحو كل السجلات من كل جداول مجموعة البيانات، لكنها لا تمحو الجداول نفسها، ولا العلاقات بينها.. لاحظ أن هذه الوسيلة ستسبب خطأ في البرنامج لو كانت مجموعة البيانات تتعامل مع وثيقة XML من النوع XmlDataDocument. 

 تصفير Reset:
تفرغ مجموعة البيانات من جميع محتوياتها، بما في ذلك الجداول والعلاقات والقيود. 

 نسخ Clone:
تنسخ تركيب مجموعة البيانات (مخططات الجداول، والعلاقات والقيود) إلى مجموعة بيانات جديدة وتعيد مرجعا إليها.. لكنها لا تنسخ أي سجلات. 

 نسخ Copy:
تنسخ مجموعة البيانات كاملة (مخططات الجداول، والعلاقات والقيود والسجلات أيضا) إلى مجموعة بيانات جديدة وتعيد مرجعا إليها. 

 معرفة التغيرات GetChanges:
تعيد مجموعة بيانات جديدة، تحتوي جداولها على الصفوف التي تمّ تعديلها أو إضافتها أو حذفها منذ ملء مجموعة البيانات الأصلية، أو منذ آخر استدعاء للوسيلة AcceptChanges.. وتعيد هذه الوسيلة Nothing إذا لم تجد أية تغيرات في مجموعة البيانات.
لاحظ أن هذه الوسيلة قد تضيف إلى مجموعة البيانات الجديدة بعض الصفوف التي لم تتغير بياناتها، وذلك للمحافظة على صحة العلاقات والقيود بين الجداول، ما يتيح لك إعادة دمج مجموعة البيانات الجديدة بمجموعة البيانات الأصلية إذا أردت، دون حدوث أية أخطاء.
وتوجد صيغة ثانية لهذه الوسيلة، تستقبل إحدى قيم المرقم DataRowState، التي تمكنك من الحصول على السجلات التي حدث بها نوع محدد من التغيير دون سواه.. وهذه القيم هي: 


اخضعي



اخضعي 

كانت المرأة المسلمة تنادي زوجها سيدي.. وكانت المرأة المصرية في القرن الماضي تنادي زوجها "سي".. وصارت المرأة في العصر الحديث تنادي زوجها "بيبي" :D :D :D.. "بيبي" في عينك.. فلنعد إلى زمن الرجال:

أنا سيدٌ، خفقاتُ قلبِكِ لي سبايا فاخضعي

مِن لهفتي لا تَهرُبي.. بينَ الضلوعِ تَضَعضعي

ودَعِي قيادَكِ في يدي، وضَعي جناحَكِ لي.. ضَعي

وحذارِ عِصياني، إذنْ لأَذقتُ قلبَكِ مِبضَعي

أنا كلُّ ما تَبغينَ، هيّا من جَنايَ تَبضَّعي

زَلزلتُ صَرحَكِ شامخًا ويُريدُ أن يَنقضَّ.. عِي

لا ذُلَّ إلاّ في الهَوَى.. ذُوقي هوايَ، تواضعي 

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

* لزومية من وحي هذا المنشور:

 

 


خصائص الفئة DataSet



خصائص الفئة DataSet: 

 اسم مجموعة البيانات DataSetName:
تحدد اسم مجموعة البيانات، ليتم استخدامه كاسم لعنصر الوثيقة Document Element في كود XML عند حفظ مجموعة البيانات. 

 نطاق الاسم Namespace:
تحدد اسم النطاق الذي سيتم تحته حفظ مجموعة البيانات في كود XML. 

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

ملحوظة:
عند استخدام الوسيلتين ReadXml و ReadXmlSchema لتحميل البيانات أو المخطط في مجموعة البيانات، فإنهما تبحثان في ملف XML عن نطاق الاسم الموضح في الخاصية DataSetName، ومجوعة البيانات المميزة بالبادئة الموضحة في الخاصية Prefix، فإذا لم تعثر في الملف عن مجموعة بيانات تحقق هذين الشرطين، لا يتم تحميل أي شيء من الملف.

ويريك المشروع DataSetSample مثالا على استخدام هذه الخصائص.. ستجد هذا الكود مثلا في حدث تحميل النموذج:
Ds.Namespace = "My Project"
Ds.Prefix = "Authors-Books"
Ds.DataSetName = "DsBooks"
ويظهر تأثير هذه الخصائص عند ضغط الزر "حفظ المخطط في ملف"، حيث ستجد أسماء هذه الخصائص مستخدمة في تعريف مخطط مجموعة في الملف C:\DsBooksSchema.xml. 

 حساسة لحالة الأحرف CaseSensitive:
إذا جعلت قيمة هذه الخاصية True، فستصير عمليات المقارنة والترشيح Filtering حساسة لحالة الأحرف.. هذا يؤثر في نتائج الوسيلة DataTable.Select والخاصية DataColumn.Expression.. والقيمة الافتراضية لهذه الخاصية هي False.
لاحظ أن تغيير قيمة هذه الخاصية، سيغير تلقائيا قيمة الخاصية CaseSensitive الخاصة بكل جدول في مجموعة البيانات. 

 المحل Locale:


صفحة الشاعر