السبت، 16 أكتوبر 2010

حكاياتي مع الإنتخابات , أو لماذا لن أنتخب

بقي أقل من شهر على موعد الإنتخابات البرلمانية لعام 2010 , و ها نحن نشاهد الصراع المحموم نحو قبة البرلمان بشعارات طنانة رنانة نعلم يقينا أنها لن تتحقق, نفس الوجوه نراها من شارع إلى شارع, نفس مقرات الدعم والمؤازة لا يوجد شئ جديد إلا أن حزب جبهة العمل مقاطع للإنتخابات هذه المرة.

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

أذكر تماما إنتخابات 2003كانت أول إنتخابات أشارك بها في حياتي و صدمت يومها بالتزوير المنظم لجان إنتخابية كانت تسهل الإنتخاب لأكثر من مرة لمرشحيين بعينهم عدا عن ألآت كي الختم التي تضعة اللجنة الإنتخابية على البطاقة أو كشوف الإنتخابات الغير دقيقية , خرجت من قاعة الإنتخابات و مشاعرة مضطربة تجتاحني لقد تم إستغفالي وشاركت بلعبة سمجة يقال أنها “ديموقراطية”.

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

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

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

فما رأيكم دام فضلكم هل أنا على حق في عدم المشاركة .

الأربعاء، 6 أكتوبر 2010

إعتراف … إلى والدي

بعض الأشياء التي أحبها في والدي أنه لم يكن مباشرا في الإنتقاد أو التأديب و أذكر مرة كان لا يعجبه حالي فما وجدت منه إلا أن كتب بضعة أبيات على ورقة صغيرة يقول فيها

يا ولدي .. يا نطفة من دمي

و بضعة من حلمي الشاعري

تراك تغدو فارسا ملهما؟

أم تنطوي كالسراب العابر؟

عمر.. هذا زمن جاحد و أنت في الحومة بعض الرجاء
أراك في قلبي و في مقلتي هل يكذب القلب و يغشا الضياء؟
أبصرت فيك الشمس زهوها تأبى الغروب الجهم عند المساء

هذه الأبيات أثقلت كاهلي دوما و كنت أخشى أن أخيبت أمله.

وضعت تلك الورقة في محفظتي بقيت مع كل ذلك الوقت (أكثر من عشر سنين) تجبرني على أسير دوما للأمام.

فإلى والدي شكرا لأنك جعلتني ما أنا علية.

شكرا لتفهمك و حبك و عطفك اللا مشروط.

الثلاثاء، 16 فبراير 2010

إستخدام Using Block في سي شارب

تتميز الدوت نت .NET كغيرها من البيئات عالية المستوى بأننا لا نحتاج لإدارة الذاكرة فيها إذ يعمل ما يسمى بال Garbage Collector أو GC “ترجمتة الحرفية جامع النفايات” كل فترة من الوقت و يزيل الكائنات التي لم تعد تستخدم.

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

و في حالة و جود هذه الكائنات غير المدارة أو كائنات مدارة تستخدم كائنات غير مدارة نحتاج في تعريفيها إلى الوراثة من واجهة IDisposable التي توجب عليك إضافة دالة Method بإسم Dispose و بهذه الدالة نكتب الكود اللازم لتحرير هذه الكائنات و احد الامثلة الشهيرة في هذه المجال هو كتابة الكود المسؤل عن الإتصال بقواعد البيانات حيث يكتب كما يلي

//نقوم بوارثة واجهة IDisposable
public class DataAccess:IDisposable
{
//نعتمد على الواجهات في إنشاء الكائنات الخاصة بنا حتى لا تكون عملية تغير البرنامج
//إلى أي قواعد بيانات أخرى عملية صعبة
public IDbConnection DbConnection { private set; get; }

public DataAccess()
{
//الحصول على إعدادات الوصول إلى قواعد البيات من ملف الإعدادات
var connectionString = ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString;
// إنشاء كائن الأتصال بقاعدة بيانات SQL
DbConnection = new SqlConnection(connectionString);
}
// دوال أخرى

//الدالة التي تفرضها علينا واجهة IDisposable
public void Dispose()
{
// سيتم تنفيذ الكود الموجود هنا عند منادة هذه الدالة أو عند إستخدامها مع Using Block
DbConnection.Close();
//نقوم هنا بكتابة الكود المسؤل عن تحرير المصادر غير المدارة مثل إغلاق الإتصال بقواعد البيانات
DbConnection.Dispose();
}
}



عندها نستطيع إستخدام ال Using Block إذ أننا لا نستطيع أستخدامة إلا إذا كان الفئة Class  التي نستخدمها معه قد و رثت من واجهة IDisposable  و لأريكم كيف يتم إستخدامه تابعو الكود التالي:




class Program
{
static void Main(string[] args)
{
//ننشئ كائن من الفئة التي ترث IDisopoable
using (var Db = new DataAccess())
{
//نكتب العمل الذي نريده
// Do Some Code Here
}// عن الخروج من هذه المنطقة ستجبر الدوت نت الفئة على مناداة دالة Disopose
// حتى لو حدث أي عطل خارج عن إرادتنا
}
}



و الأن بعدما تعلمت كيفية إستخدامه أرجو منك تطبيقها و الإستفادة منها في الحيات العملية و ان تكون ممن يعرفون كيف يستخدم الميزة المناسبة في المكان المناسب.

الجمعة، 22 يناير 2010

من وحي المقابلات

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

ما دفعني لهذا التعميم أجابات المحترفين الذين اقابلهم في الشركة من اجل التوظيف و إجاباتهم الغريبة و هذه عينة منها

تسال أحدهم : كيف ترى نفسك في  OOP “مفاهيم البرمجة الكائنية” ؟

فيجيب : جيد

نساله : كم تعطي نفسك من عشرة ؟

يقول : 7 من عشرة

أسأل : ما هي الInterface  أو ربما أساله عن أي شي أخر؟

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

يعني لم يكلف نفسه أن يقرأ من كتاب أو يبحث من الإنترنت يعني أيضا أنه لم يكلف نفسه البحث في الأشياء التي يستخدمها و هذه الإجابات كانت تأتي ممن لدية خبرة و ليس من  حديثي التخرج و حسب !! 

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

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

 

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