مدونة مبرمج معماري

الداعي

مضيفكم وسام البهنسي يرحب بكم.

 

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

قائمة الصفحات

آخر التدوينات

مغامرة مع مستبعدات الفهرسة
التوقيت 17/رجب/1430 01:05 ص بقلم الكاتب وسام البهنسي

خلال عملي في تطوير هذه المدونة اللطيفة وصلتُ إلى مهمة إعداد قائمة مستبعدات الفهرسة المستخدمة في عملية البحث.

 

ماذا؟ تسألوني ما هي مستبعدات الفهرسة؟ حسناً... فلنستطرد قليلاً ونتعلم ما هي مستبعدات الفهرسة...

مستبعدات الفهرسة (stop words) هي تلك الكلمات التي يعتبرها محرك البحث كلمات غير فعالة أو مؤثرة في البحث. مثلاً، أحرف العطف وكلمات الوصل وبعض الضمائر وأحرف الجر (الذي، التي، من، لأن، على، له، هو، في، ... الخ). عندما يقوم محرك البحث بتصنيف نص ما فإنه يتجاهل أو يستبعد الكلمات التي يواجهها في النص والتي تقع ضمن قائمة المستبعدات. ناتج هذه العملية هو توفير المساحة في قاعدة بيانات محرك البحث وتسريع البحث لاحقاً لأنك ستبحث في عدد أقل من الكلمات المفتاحية. فعندما يواجه المحرك نصاً كالآتي: "تجولت في ليلة جميلة في حارات دمشق القديمة وصليتُ العشاء في الجامع الأموي" فإن هذا النص سيعطي الكلمات المفتاحية التالية "تجولت ليلة جميلة حارات دمشق القديمة صليتُ العشاء الجامع الأموي". وعندما نطلب البحث عن عبارة "دمشق القديمة" فإن المحرك سيجد هاتين الكلمتين ضمن الكلمات المفتاحية السابقة، ومن ثم يعطينا النص الأصلي ضمن قائمة النتائج. إذن نظرياً لن نستطيع البحث عن أي كلمة ترد في قائمة المستبعدات.

الآن لنعد إلى موضوعنا، كنتُ أنوي إعداد قائمة مستبعدات الفهرسة العربية لمحرك بحث المدونة، فقررت أن أحاول الاستفادة من جهود من سبقني من مواقع بحث عربية وما شابه، فبدأتُ رحلة البحث الحثيث لأجد مجموعة من البحوث النظرية عن الموضوع من جامعات مختلفة، إضافة إلى قائمة توجد على موقع البروفسور جاك سافوي وأخرى في موقع عربايز، وأخيراً وجدت أحدهم وقد قرر استخدام القائمة المقدمة من موقع جاك سافوي لميزة البحث في نظام بريدي.

 

قررتُ الاطلاع على قائمة البروفسور جاك، وقد فوجئت بقائمة غريبة مليئة بالكلمات: إسرائيلي، بيريز، غزة، قتل، دمار، ... وما شابه!!!

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

 

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

 

الآن وقد ارتحت بالاً من هذه الثغرة، أعتقد أن أفضل قائمة لمستبعدات البحث حالياً هي تلك التي يستضيفها موقع عربايز (قائمة جاك سافوي غير متماسكة برأيي). على أنني لو كنتُ أنوي استعمال قائمة مستبعدات في منتدى عربي عام فإنني سأضع الكلمات التالية على رأس القائمة:

 

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

 

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





الإصدار العاشر من فيجوال سي هو الإصدار السادس من جديد
التوقيت 15/رجب/1430 11:04 م بقلم الكاتب وسام البهنسي

لمن عاصر فيجوال ستوديو في نهاية التسعينات ربما يعلم الانتشار الواسع الذي حظي به الإصدار السادس عند كل من مبرمجي سي وفيجوال بيسك على حد سواء. لقد كانت بداياتي الشخصية مع فيجوال ستوديو 5، وقد أحسست بفرق لا بأس به عند الانتقال إلى الإصدار السادس الذي استقدم خاصية السرد الآلي للكود (Intellisense) إلى لغة سي لأول مرة.

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

 

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

 

هنا أود أن أقدم اعتذاراً بسيطاً. لقد فوجئت عندما طالعت خبر هذا الإصدار على القناة التاسعة من MSDN، لأنني ظننتُ أن هذا الانتشار قد كان مقصوراً على محيطنا المحلي (سوريا والسعودية)، وفي أولى مقالاتي في مجلة ترونيكس (رحمها الله) كنتُ قد انتقدتُ من ما يزال يتشبث بالإصدار السادس مع أن الإصدار السابع كان قد ظهر منذ فترة ليست بالقريبة آنذاك، وقد نسبتُ هذا التصرف إلى التصلب بالرأي وعدم مواكبة التطور، متخذاً في ذلك من برامج أخرى دليلاً على كلامي (كالتشبث ببرنامج أوتوكاد 14 مع أن أوتوكاد 2000 كان متوافراً).

لكن يبدو أن هناك فعلاً شيء سحري في فيجوال ستوديو 6 (وربما أوتوكاد 14 كذلك!) يدفع الناس إلى التشبث به وتفضيله حتى على الإصدارات التالية. قد تكون سرعته أو بساطته أو فعاليته... مهما كان السبب، فإنني مدين بالاعتذار لمن وصفتُهم بالتصلب بالرأي بينما هم كانوا واقعين تحت سحر الإصدار السادس (الاعتذار لا يشمل من لم يكونوا تحت سيطرة هذا السحر).

 

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

 

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

 





باسم الله نبدأ
التوقيت 14/رجب/1430 11:10 م بقلم الكاتب وسام البهنسي

تحية طيبة لكافة الزوار الأعزاء.  وددتُ أن تكون تدوينتي الأولى بمثابة احتفاء بهذا الجهد الجديد من الشبكة العربية لمطوري الألعاب وتعريف بجوانبه، وسأسمح لنفسي هنا بالتحدث باسم إدارة الشبكة.

 

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

 

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

 

سأذكر قائمة عامة بمواصفات النظام لمن يهمه الأمر:

 

  • نظام تدوين قياسي بكامل العمليات الشائعة المتاحة في المدونات الأخرى.
  • إدارة عدد مفتوح من المدونات من موقع واحد، ولكل مدونة عدد مفتوح من المستخدمين (الكتاب والإداريين).
  • حفظ البيانات على نظام الملفات أو لقاعدة بيانات (تستطيع تشغيل النظام دون الحاجة لأية قاعدة بيانات).
  • واجهات استخدام وإدارة كاملة بلغة عربية صحيحة ومفهومة.
  • دعم كتابة التدوينات من خلال برنامج ويندوز لايف رايتر (Windows Live Writer) مما يسمح للكُتاب بكتابة التدوينات ومعاينتها دون الحاجة للاتصال بالإنترنت، ومن ثم نشرها حالما يتوفر الاتصال.
  • مبني على تقنية ASP.NET ويعتمد على تراكيب الإصدار الثالث من لغة #C لتحسين الكود وتنظيمه (مثلاً، عبارات LINQ).

 

سأكتفي بهذا القدر في هذه التدوينة، على أن أعود لذكر المزيد من التفاصيل حال توفر المعلومات باذن الله...

 

السلام عليكم!