الأحد، 20 فبراير 2011

ضبط جودة البرمجيات من دوت نت عربي

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

ملاحظة: أخيرا و بعد طول إنتظار دوت نت عربي على أي تيونز حتى تستطيع مزامنة مع الأيفون و الأي بود و الأي باد و هو موجود على هذا الرابط .

السبت، 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  أو ربما أساله عن أي شي أخر؟

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

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

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

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

 

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

الثلاثاء، 29 ديسمبر 2009

تعقيب على الحسبة الصادمة

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

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

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

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

  • عدم اللجوء للإدارة الدقيقة للمبرمج ( Micro Managment ) : فالمراقبة عن كثب والتضييق على المبرمج ستفقده ثقته في نفسه و في مرأوسه و التي قد نحتاج للمراقبة عن كثب كعلاج لتضييع الوقت من قبل البعض و لكنها تبقى في إطار العلاج لفترة معينة , و قد صدمت عندما قرأت احد التعلقيات من احد الزوار على تدوينة الأخ هشام والتي تقول

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

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

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

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

 

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

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

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

 

الأحد، 27 ديسمبر 2009

تقنية Clear Type

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

هناك ميزة في ويندوز XP فما بعد تدعى Clear Type و هية تقنية توصلت لها مايكروسوفت في عام 98 لتحسين جودة النص الظاهر على شاشات LCD و غيرها و تم دعمها لأول مرة في برنامج قارئ مايكروسوفت بديل الأكروبات ريدير من أدوبي بعد ذلك وصلت إلى ويندوز إكس بي.

و لملاحظة الفرق هنا نص من مدونتي بدون تشغيل هذه الميزة و مع تشغيلها

قبل

befourClearType بعد حسب الإعدادت التي أخترتها.

AfterClearType

يصبج النص اجمل و أسهل للقراءة و هي مفعلة تلقائيا على ويندوز 7 لكن للتتأكد من ذلك ما عليك إلا إختيار زر البدء Start و كتابة ClearType, و إختيار معالج الإعداد لهذه الخاصية كما في الصورة التالية و إعداد شاشتك بما تراه مناسبا.

cleartypestartwindows

كانت هذه النصيحة الاولى لتحسين جودة النصوص على الشاشة .

النصحية الثانية هي أستخدام خط مناسب لكتابة الكود و قد قامت مايكروسوفت بإتاحة مجموعة من الخطوط التي تدعم Clear Type  للتنزيل في عام 2006 و احد اجمل هذه الخطوط يدعى Consolas و الذي أنصح بإستخدامة للفيجوال ستديو.

consolas هذه صورة توضح كيف يمكن عمل ذلك.

  • إفتح الفيجوال ستديو و إخنر Tools من القوائم العليا
  • vsMenus
  • من قائمة أدوات Tools إختر خيارات Options .
  • toolmenu
  • من خيارات أختر خصائص الخط و الألوان Font and Colors و هناك قم بتعديل اللازم.
  • VSoptions

و هكذا ستريح عينك تستمتع بخط جميل اثناء البرمجة.