العدد الثامن

العدد الثامن, فهارس الأعداد 4 عدد التعليقات
إهداء العدد
يهدي فريق تحرير مجلة كلية الهندسة المعلوماتية هذا العدد من المجلة إلى عضو الفريق المهندس عبد الله سواس والذي غادر البلاد إلى دولة الإمارات العربية المتحدة لإكمال الدراسات العليا.

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

فريق التحرير
19-08-2009

Cover

لتحميل العدد:
الجزء الأول it.mag8_part1 (94)
الجزء الثاني it.mag8_part2 (97)
الجزء الثالث it.mag8_part3 (73)

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

المقدمـــــة , نظام التشغيل Ubuntu

م. إبراهيم غباش & م. يوسف الصطم
الويب الدلالي لينا نعمان
Port Knocking On Open Source Systems خديجة شمالي
البرمجة بلغة البرولوغ – 2 م.م . طلال عبد الواحد
منصة العمل Grails ولغة Groovy م. محمد الأحمر
المقالات المنوعة
تاريخ الألعاب الالكترونية محمود الكامل

الافتتاحية

افتتاحية, العدد الثامن تعليق واحد
11

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

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

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

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

أتمنى لطلابنا أجمل الأيام وأفضل النتائج وتحصيل علمي رائع, وأن نراهم في المستقبل القريب من حملة شعلة النور في هذا العالم .

والسلام عليكم .

د. محـــمد دبــــاس الحميـــد

عميد كلية الهندسة المعلوماتية

مقدمة سلسلة البرمجيات المفتوحة المصدر

العدد الثامن لا تعليقات
بسم الله الرحمن الرحيم
تقديم السلسلة :
إن البرمجيات هي نتيجة جهد مضنـي للكثير من المطورين وإن سرقة جهود اﻵخرين يتنافى مع المبادئ الأخلاقية ﻷي عقيدة أو شريعة أو ديانة, وإن أياً منا لن يكون سعيداً عندما يسرق جهده ليباع بثمن بخس تحت أي مسوغ أو أي اعتقاد، خاصة أن مهنتنا تتطلب مجهودا ً ذهنيا ً مضنيا ً، وإذا ما تمت سرقته فسيضيع هذا الجهد سدىً.
إن عجلة التطور تدور باستمرار, والتطور التقنـي والمعرفي والمعلوماتي في كل يوم يثمر فكراً جديداً أو منتجاً جديداً أو تقنية جديدة. نحن كعاملين في هذا المضمار إما أن نأخذ دورنا كلاعبين أساسيين في هذا التطور أو على اﻷقل نحاول مجاراته, وإما أن نسلم اﻷمور لتدهسنا هذه العجلة.
كلنا يعلم أنّ بلدنا “سورية” من البلدان النامية وأنّ عملية التطور المعلوماتي فيها تسير بخطى نحو الأمام ولكن ببطء شديد, فإلى الآن لا توجد حقوق ملكية فكرية حقيقية بالرغم من وجود القوانين, فما يعلمه المواطن السوري عن البرمجيات هو أن كل ما يحتاج إليه متوفر على قرص واحد بتكلفة لا تتجاوز الـ 100 ليرة سورية في أسوأ الأحوال, وبالرغم من محاولات العديد من الشركات المحلية والعالمية حماية برامجها بطرق شتى وإنفاق المزيد من الأموال على هذا الجانب إلا أنه في نهاية الأمر يتم اختراق هذه الحماية, كما نعلم كسوريين أن هذا الحال لن يستمر طويلا وخاصة في ظل المحاولات الجادة من الحكومة لبناء شراكة حقيقة مع الاتحاد الأوربي وما نحصل عليه الآن بـ 100 ليرة سورية كثمن لحزمة من البرمجيات سيكلفنا آلاف الدولارات بعد بضعة سنين. إذاً نحن أمام مواجهة حقيقية وتحدي كبير, لا بد لنا من إعداد العدة واتخاذ الخطوات والتدابير لمواجهته.
حاولت الجمعية السورية للمعلوماتية بالتعاون مع الحكومة ومنظمة العلماء السوريين في المغترب نوستيا و الجامعات والحرم الفرانكفونـي والعديد من الأفراد التنبيه لهذا الموضوع وعقدت العديد من المؤتمرات وورشات العمل والندوات التعريفية للبرمجيات الحرة والمجانية والمفتوحة المصدر, والحق يقال أن العاملين في هذا المجال قدموا الكثير وحققوا تقدماً ملحوظاً خلال السنوات الأربع الماضية على اﻷقل في جامعة دمشق. نحن كمستخدمين للحاسب، كمطورين، أو مستخدمين عاديين بحاجة لاعتماد بديل للبرمجيات المقرصنة في حواسيبنا, ابتداءً من نظام التشغيل وصولاً للبرامج الخدمية وغيرها, والمُطلع في هذا الشأن يَلحظ أن الدول المتقدمة (كحكومات ومنظمات وأفراد ومؤسسات تعليمية , …) والتـي تستثمر الحاسب في جميع نواحي الحياة وبفاعلية تفوق فاعليتنا بمرات عدة، يلحظ أن هذه الدول تعتمد البرمجيات الحرة و المجانية والمفتوحة المصدر في الكثير من قطاعاتها وخاصةً التعليمية, وتخصص جزءاً كبيرا ً من ميزانيتها لتطوير هذه البرمجيات لتلبـي خصوصية هذه الدول.
أعتقد أنه من واجب الجميع بدأ العمل وبشكل جدي للانتقال إلى البرامج المجانية والحرة والمفتوحة المصدر, فاﻷيام تمر سريعاً ولن يكون لدينا الوقت الكافي إذا اضطررنا لهذا الانتقال, وربما تتوقف أو تنتكس خطوات التطور في بلدنا بسبب هذه المشكلة, لذلك أردنا أن نبدأ بعون الله سلسلة تعريفية بالبرامج الحرة والمجانية والمفتوحة المصدر وسنتناول أنظمة تشغيل وحزم من البرمجيات للتعريف بها وكيفية استخدامها, ولن تكون هذه السلسلة موجهة للمستخدمين العاديين فحسب بل سنتناول القضايا التـي تخص المطورين, علنا نساهم في تغيير واقعنا نحو اﻷفضل.
المهندس ابراهيم الغباش المهندس يوسف الصطم

بسم الله الرحمن الرحيم

تقديم السلسلة :

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

إن عجلة التطور تدور باستمرار, والتطور التقنـي والمعرفي والمعلوماتي في كل يوم يثمر فكراً جديداً أو منتجاً جديداً أو تقنية جديدة. نحن كعاملين في هذا المضمار إما أن نأخذ دورنا كلاعبين أساسيين في هذا التطور أو على اﻷقل نحاول مجاراته, وإما أن نسلم اﻷمور لتدهسنا هذه العجلة.

» أكمل القراءة

Port Knocking On Open Source Systems

العدد الثامن تعليق واحد
Port Knocking On Open Source Systems
في حياتنا الواقعية كل يوم حين نقوم بزيارة أحد الأصدقاء نقوم بالدق على باب المنزل الذي نقوم بزيارته وربما يأتينا سائل من خلف الباب يسأل من أنت ؟ … وسنقوم تلقائياً بالرد على هذا السائل بقول أنا فلان ومن ثم يقول السائل بفتح الباب لتدخل…..
تأتي فكرة الـ Port Knocking بإسقاط مباشر على الحياة الواقعية بحيث تحاكي هذا السيناريو الذي أخذناه من واقع حياتنا.
تعد الأنظمة التـي تؤمن حماية من التدخلات الخارجية وتفرض سماحيات خاصة جداً على بعض الارتباطات وحمايات ضد ارتباطات أخرى ربما تكون مجهولة الهوية من أفضل أنظمة الحماية. وتنهج فكرة الـ Port Knocking هذا المنهج الذي تتبعه أنظمة الحماية تلك.
لايمكن أن تؤمن اتصالاً دون أن تتأكد من هوية المتصل :
التمييز بين المستخدم الثقة والمستخدم الغير ثقة هو الميزة الرئيسية والمهمة في فكرة الـ Port Knocking على خلاف الجدران النارية Firewall التـي لا تؤمن تلك الميزة .
كيف يتم تطبيق هذه الفكرة تكنولوجياً وبالتحديد على شبكة من الحواسيب؟؟!!!!!!
لنفرض بأن هناك مدير شبكة/مدير أنظمة (Admin) وهو خارج العمل واحتاج الوصول إلى جهازه بداخل العمل، وجميع المنافذ من الخارج مغلقة أي أن جميع الـ packets التـي ستصل إلى الجدار الناري الخاص بجهاز الشركة يتم عمل Block ومن ثم Drop لها بغض النظر عن IP هذا المدير الذي يمكن أن يكون خارج البلد مثلاً.
يأتي هنا دور الـ Port Knocking حيث يتم تركيب برنامج daemon على الجهاز الذي يمكن الاتصال به من الخارج، يقوم هذا البرنامج بقراءة الـ LOG وحين يرى بأن هناك عملية مسح Scan على منافذ معينة يقوم بإضافة rule إلى الـ iptables تفتح منفذ وممر لهذا الشخص للدخول إلى النظام .
من الجدير بالذكر أن :
سلسلة الدقات knock sequence هذه تحتوي على قيم معلومات مهمة جداً مثل (IP,Port,Time,etc…..) :
يكون الـ IP الموجود في السلسلة هو IP الجهاز الذي يطلب الدخول (client) إلى الجهاز الرئيسي (server)، ويمكن أيضاً إضافة القناع الخاص بال IP للبرنامج الذي يتعامل مع الدقات وبتحديد المنفذ الذي سيتم الدق عليه مع إتباعه بقيم معلومات مهمة أخرى كالوقت وعدد الدقات الأصغري (أو مجال عدد الدقات) وكلمة مرور خاصة يمكن عندها الوصول إلى الهدف المرجو من هذه الفكرة.
هناك الكثير والعديد من البرامج التـي صممت لحماية الأجهزة التـي تستخدم الأنظمة المفتوحة المصدر(Open Source) (كأنظمة تشغيل Linux) والتـي تستخدم فكرة الـ Port Knocking كمبدأ أساسي يمكن أن يضاف عليه الكثير من الميزات بما يخدم مصلحة الجهاز الذي سيركب عليه هذا البرنامج.
وربما تكون أهمية هذه الفكرة قد نبعت أصلاً من كون أن الأنظمة المفتوحة المصدر تحتاج لتأمين الحماية المثلى ضد الاختراقات الأمنية . ولذلك كان من الأجدر وجود تلك الأفكار العملية والديناميكية التـي تتلاءم وحاجة التطور الذي يطرأ على هذه الأنظمة بشكل ديناميكي وسريع.

في حياتنا الواقعية كل يوم حين نقوم بزيارة أحد الأصدقاء نقوم بالدق على باب المنزل الذي نقوم بزيارته وربما يأتينا سائل من خلف الباب يسأل من أنت ؟ … وسنقوم تلقائياً بالرد على هذا السائل بقول أنا فلان ومن ثم يقول السائل بفتح الباب لتدخل…..

تأتي فكرة الـ Port Knocking بإسقاط مباشر على الحياة الواقعية بحيث تحاكي هذا السيناريو الذي أخذناه من واقع حياتنا.

تعد الأنظمة التـي تؤمن حماية من التدخلات الخارجية وتفرض سماحيات خاصة جداً على بعض الارتباطات وحمايات ضد ارتباطات أخرى ربما تكون مجهولة الهوية من أفضل أنظمة الحماية. وتنهج فكرة الـ Port Knocking هذا المنهج الذي تتبعه أنظمة الحماية تلك.

لايمكن أن تؤمن اتصالاً دون أن تتأكد من هوية المتصل :

التمييز بين المستخدم الثقة والمستخدم الغير ثقة هو الميزة الرئيسية والمهمة في فكرة الـ Port Knocking على خلاف الجدران النارية Firewall التـي لا تؤمن تلك الميزة .

كيف يتم تطبيق هذه الفكرة تكنولوجياً وبالتحديد على شبكة من الحواسيب؟؟!!!!!!

» أكمل القراءة

مفهوم الاعتمادية لأنظمة الحاسوب

العدد الثامن لا تعليقات
مقدمة ولمحة تاريخية:
نـشـأ مصطلح الاعتمادية انطلاقاً من عدة مـجـالات سبقته مرتبطة به، مثل التسامح مـع الخـطأ (Fault Tolerance) والوثوقية (Reliability) وذلك في الستينات من القرن الماضي. ومع زيادة الاهتمام بهذا المجال والحاجة إلى أنظمة يمكن الاعتماد عليها في السبعينات وبدايات الثمانينيات، أصبح مفهوم الوثوقية يستخدم للتعبير عن الكثير من المصطلحات الخارجة عن تعريفه الأصلي، مثل قياس كمية الأخطاء في نظام ما (بما في ذلك استخدام طرق قياس متنوعة تم إدراجها في وقتنا الحالي تحت تصنيفات أخرى مثل سلامة النظام (Safety)، وكمالية النظام (Integrity)). في تلك الفترة قام (Jean-Claude Laprie) بإطلاق مصطلح جديد في بداية الثمانينيات شمل جميع ما يتعلق بهذه المواضيع وهو مصطلــح الاعتـماديـة (Dependability). يتكون مفهوم الاعتمادية من عدة عناصر، سنقوم بالحديث عنها فيما يلي:
الخصائص (Attributes)
خصائص الاعتمادية تعبر عن مدى جودة النظام. بحيث يتم تحديدها لتحديد ما مستوى اعتمادية النظام وذلك باستخدام طرق قياس مختلفة. وهذه الخصائص هي:
التوافرية (Availability): الجاهزية لتقديم خدمة صحيحة.
الوثوقية (Reliability): الاستمرار في تقديم خدمة صحيحة.
السلامة (Safety): عدم وجود نتائج كارثية على المستخدم أو البيئة التـي يستخدم فيها النظام.
الكمالية (Integrity): عدم وجود تغييرات غير ملائمة للنظام.
قابلية الصيانة (Maintainability): إمكانية تنفيذ تعديلات وإصلاحات على النظام.
كما هو واضح من التعاريف السابقة فمن الممكن قياس كل من توافرية ووثوقية نظام والحصول على قيم عددية، بينما بقية الخصائص فهي تقييمة وحسب. فعلى سبيل المثال أمان النظام لا يمكن قياسه والحصول على نتيجة مباشرة ولكن من الممكن تقييمه بتطبيق بيانات تجريبية والحصول على مستوى أمان النظام. في حين يمكن قياس وثوقية النظام بعدد الأخطاء التـي حدثت في النظام مع مرور الوقت.
قد تشمل الاعتمادية أيضاً مفهوم الأمان (Security) وذلك بإضافة خاصية جديدة إلى الخصائص السابقة وهي السرية (Confidentiality)، أي عدم وجود أي كشف غير مسموح به للمعلومات. فأمان أي نظام يتألف من ثلاث خصائص هي السرية، الكمالية، والتوافرية. وبالتالي عند إضافة السرية فإن الاعتمادية تشمل مفهوم الأمان أيضاً. ولكن التوجه الحالي هو إطلاق مصطلح “الاعتمادية والأمان” في هذه الحالة.
التهديدات (Threats)
تعرف التهديدات بأنها الأشياء التـي يمكن أن تؤثر على نظام ما وتسبب في انخفاض مستوى اعتماديته. ويوجد ثلاثة مصطلحات لا بد من التعرف عليها بشكل واضح:
العيب Fault)): العيب في النظام (أو ما يطلق عليه في بعض الأحيان باللغة الانكليزية اسم bug لأسباب تاريخية) هو وجود علّة فيه، وبالتالي وجود عيب في النظام لن يسبب بالضرورة حدوث فشل فيه.
ففي بعض الأحيان بالرغم من وجود عيب في نظام ما فإن دخل هذا النظام قد لا بسبب في وقوع خطأ وبالتالي لن يحدث فشل في النظام. ولنأخذ مثالاً بسيطياً للتوضيح فعند كتابة برنامج لإعطاء ناتج تقسيم عددين ، فحتى عند وجود عيب في النظام بحيث لم يقم فيه المبرمج بدراسة إمكانية ادخال المستخدم العدد 0 كدخل في مقام عملية القسمة، إلا أن المستخدم قد لا يقع في هذا الخطأ أبداً وبالتالي لن يفشل النظام.
الخطأ (Error): خطأ النظام هو مقدار التفاوت ما بين الخرج الذي يقدمه النظام وبين الخرج المتوقع منه. فالخطأ يقع في مرحلة تنفيذ وعمل النظام (Runtime) عندما تدخل بعض أجزاء النظام في حالة غير متوقعة نتيجة تنفيذ عيب في النظام. وبما أن الخطأ يتم انتاجه من حالات غير متوقعة فمن الصعب مراقبته بدون استخدام آليات مخصصة لهذا الأمر مثل (Debuggers) أو حفظ نتائج الخرج في ملفات (Log Files).
الفشل (Failure): فشل النظام هي فترة من الزمن يقوم فيها النظام بتقديم تصرف يتناقض مع مواصفاته. ليس بالضرورة أن يسبب كل خطأ فشلاً في النظام. فعلى سبيل المثال قد يتم كتابة البرنامج بحيث يتم معالجة استثنائاته (Exceptions) باستخدام تقنيات التسامح مع الخطأ وبالتالي ناتج النظام ككل سيتمشى مع مواصفاته بالرغم من وقوع خطأ.
ومن هنا نشأ ما يدعى بسلسلة عيب-خطأ-فشل (Fault-Error-Failure Chain) أي أن العيب سيؤدي إلى تنفيذ الخطأ وبالتالي إلى حدوث فشل في النظام. وقد يكون خرج النظام دخل لنظام آخر، وبالتالي سيؤدي العيب إلى خطأ والخطأ إلى عيب جديد ومنه إلى خطأ جديد وهكذا.
الوسائل (Means):
بما أن فكرة سلسلة عيب-خطأ أصبحت واضحة ومفهومة، أصبح من الممكن انشاء وسائل لكسر هذه السلسلة وبالتالي زيادة اعتمادية النظام. وحتى الآن تم تعريف أربع وسائل:
المنع (Prevention) – الإزالة (Removal) – التوقع (Forecasting) – التسامح (Tolerance)
يمكن تنفيذ منع وجود عيوب ضمن النظام باستخدام طرائق تطوير وتقنيات تنفيذ جيدة.
يمكن تقسيم إزالة العيب إلى قسمين:
الإزالة خلال مرحلة التطوير—الإزالة خلال مرحلة الاستخدام
إزالة العيب في مرحلة التطوير يتطلب عمليات اختبار وتأكيد بحيث يصبح من الممكن كشف العيوب وإزالتها قبل وضع النظام في مرحلة الإنتاج. فما إن يتم استخدام النظام في عملية الإنتاج لا بد أن يقوم النظام من تسجيل العيوب التـي يقع فيها بحيث يتم إزالتها من خلال عمليات الصيانة الدورية للنظام.
تقوم عملية توقع العيب في النظام بتنبأ العيوب التـي من الممكن أن تقع بحيث يمكن إزالتها أو على الأقل التخفيف من حدة ضررها على النظام.
عملية التسامح مع الخطأ تسمح للنظام بالاستمرار بتقديم خدماته بالرغم من وجود عيب فيه. ومن الممكن فتخفيف مستوى أداء النظام بسبب وجود العيب، مع الاستمرار في اعطاء نتائج صحيحة.
م.محمد سامر سروجي

Dependability in Computer Systems

مقدمة ولمحة تاريخية:

نـشـأ مصطلح الاعتمادية انطلاقاً من عدة مـجـالات سبقته مرتبطة به، مثل التسامح مـع الخـطأ (Fault Tolerance) والوثوقية (Reliability) وذلك في الستينات من القرن الماضي. ومع زيادة الاهتمام بهذا المجال والحاجة إلى أنظمة يمكن الاعتماد عليها في السبعينات وبدايات الثمانينيات، أصبح مفهوم الوثوقية يستخدم للتعبير عن الكثير من المصطلحات الخارجة عن تعريفه الأصلي، مثل قياس كمية الأخطاء في نظام ما (بما في ذلك استخدام طرق قياس متنوعة تم إدراجها في وقتنا الحالي تحت تصنيفات أخرى مثل سلامة النظام (Safety)، وكمالية النظام (Integrity)). في تلك الفترة قام (Jean-Claude Laprie) بإطلاق مصطلح جديد في بداية الثمانينيات شمل جميع ما يتعلق بهذه المواضيع وهو مصطلــح الاعتـماديـة (Dependability). يتكون مفهوم الاعتمادية من عدة عناصر، سنقوم بالحديث عنها فيما يلي:

» أكمل القراءة

التعرف على الكتابة

العدد الثامن لا تعليقات
التعرف على الكتابة
مقدمة:
كان اختراع الكتابة في الألف الخامس قبل الميلاد نتيجة لتطور المجتمعات البشرية. فمع تطور الحضارات أصبح من الضروري العثور على وسيلة لحفظ القوانين ولتناقل الأفكار والأخبار. ومن أهم المناطق التـي بدأ فيها تطور الكتابة: بلاد الرافدين والشام ومصر، بالإضافة إلى بلاد فارس والإغريق. وقد استعملت الألواح الطينية والحجرية بداية لتناقل هذه المعلومات قبل أن يخترع الصينيون الورق في القرن الثاني للميلاد. وبقي الخط اليدوي هو المستعمل إلى أن تم  اختراع الطباعة لتسود بعد ذلك الأحرف المطبوعة إلى يومنا هذا.
لا تقتصر الكتابة اليدوية Hand Writing  على النصوص اللغوية فحسب، بل تتجاوزها إلى كتابة المعادلات الرياضية، المعادلات الكيميائية، الدارات الكهربائية، والمخططات الهندسية، لتشمل بذلك كل ما يمكن أن تبدعه اليد البشرية. فهي مهارة فردية تتطور منذ الولادة لتجعل صاحبها قادراً على التعبير ونقل أفكاره عن طريق كتابته. لدرجة أنه يمكن القول أن كتابة شخص ما تعتبر بصمة مميزة لهذا الشخص.
وقد يظن البعض أن التقدم التكنولوجي الهائل والسريع قد وضع الكتابة اليدوية في خطر كون أن المستندات الرقمية (الحاوية على نصوص، رسوم، ومعادلات … الخ) أصبحت تعد بالملايين، وأصبحت أساسية لأي بحث علمي. ومن السهولة بمكان تناقل وتبادل هذه المستندات عبر آلاف الكيلومترات.
غير أن الكتابة بقيت هي الطريقة المفضلة لدى الغالبية العظمى للتعبير عن أفكارهم وتبادل المعلومات. مما دفع إلى اختراع أدوات جديدة تسهل الدمج بين الكتابة التقليدية والمستندات الرقمية، من أهم هذه الأدوات: القلم الرقمي، الألواح الرقمية، المساعد الرقمي الشخصي PDA، وأخيراً أجهزة الحواسيب والهواتف النقالة التـي تعتمد على الشاشات الحساسة للمس والمزودة بأقلام تسمح بإدخال الكتابة اليدوية.
أنظمة التعرف
كل هذا التطور فتح الباب واسعاً أمام الأبحاث التـي تهدف إلى الوصول إلى البرمجيات القادرة على الاستفادة من هذا التطور في الأدوات، ومن هنا ظهرت برمجيات التعرف على الكتابة Recognition Systems والتـي تتيح للمستخدمين حرية التعبير عن أفكارهم باستخدام الكتابة، وفي نفس الوقت تتيح تحويل هذه الكتابات إلى شكلها الرقمي مما يفتح المجال لأرشفتها أو تناقلها أو معالجتها لاحقاُ.
من أهم تطبيقات التعرف على الكتابة:
التعرف على المحارف Character Recognition
التعرف على النص Text Recognition
تحديد الهوية Writer Recognition
التحقق من الهوية Writer Authentication
التعرف على الدارات الكهربائية
التعرف على المعادلات الرياضية
والعديد من التطبيقات المهمة الأخرى ، من الجدير بالذكر أننا نتحدث عن الكتابة اليدوية وليس عن الأحرف أو الأشكال المطبوعة، علماً أن التعرف في كلا الحالتين يرتكز على العديد من الأسس المشتركة.
يمكن تقسيم عملية التعرف في كل من التطبيقات السابقة إلى أربع مراحل أساسية تختلف بتفاصيلها من تطبيق إلى آخر إذ يجب أن تحترم خصوصية المشكلة المعالجة، هذه الخطوات هي:
التقطيع Segmentation
التعرف Classification
التحليل البنيوي Structural Analysis
النموذج اللغوي Language Model
كما أن تعقيد أي تطبيق يعتمد بشكل أساسي على القيود المفروضة على الكتابة، فعلى سبيل المثال، يمكن أن نفرض على المستخدم كتابة كل حرف أو رمز بجرة قلم واحدة Stroke وبالتالي نسهل عملية التقطيع.
على أي حال، التطبيق المثالي هو الذي لا يفرض أي قيود على الكتابة، أي يعطي حرية تامة في الكتابة، ولكن بالمقابل تكون هذه التطبيقات شديدة التعقيد وقد تحتاج إلى زمن طويل نسبياُ للتعرف على الكتابة المدخلة.
أنواع الكتابة من حيث المعلومات المتوفرة:
يمكن أن نميز نوعين أساسيين Online و Offline الشكل 2 المجاور:
1- Online:
في هذه الحالة تكون إشارة الدخل مأخوذة بشكل مباشر من أداة الدخل (على سبيل المثال: القلم الرقمي). وفي هذه الحالة  تكون إشارة الدخل عبارة عن تغير الإحداثيات مع الزمن، بالإضافة إلى معلومات أخرى تختلف باختلاف أداة الدخل كالضغط مثلاً. وتعرف جرة القلم Stroke بأنها مجموعة النقاط المرسومة بين وضع القلم PenDown  ورفع القلم PenUp، فيكون المحرف هو عبارة عن مجموعة من جرات القلم Strokes.
2- Offline: وتندرج هذه الحالة ضمن برمجيات معالجة الصورة، إذ يكون الدخل عبارة عن صورة، إي أننا نحتاج إلى مرحلة إضافية قبل أن نكون قادرين على استخلاص إحداثيات النقاط المشكلة للدخل، كما أن محور الزمن مفقود في هذه الحالة ولا يمكن معرفة أي جرة قلم Stroke تمت كتابته قبل الآخر. أي نعرف الدخل في هذه الحالة بأنه مجموعة البكسلات Pixels I(x,y) دون أي معلومات تتعلق بالكتابة نفسها.
التدريب:
بغض النظر عن نوعية الدخل، وقبل الخوض في تفاصيل آلية أي تطبيق للتعرف، من المهم أن نعرف أن أي نظام للتعرف بحاجة إلى مرحلة من التدريب والفحص قبل أن يوضع بالخدمة. على سبيل المثال: إذا كنا نريد بناء تطبيق للتعرف على الكلمات العربية Online لاستعماله في كتابة الرسائل القصيرة في أجهزة الهواتف النقالة، نحن بحاجة إلى قاعدة معطيات للكلمات العربية (أو الأحرف العربية وذلك تبعاُ للآلية المستخدمة). ومن ثم يتم تقسيم هذه القاعدة إلى بيانات للتدريب Train وبيانات للاختبار Test، حيث يتم تدريب النظام باستخدام جزء التدريب Train ويفحص أداؤه باستخدام جزء الاختبار Test.
قد تأخذ عملية التدريب وقتاً طويلاً يمتد لعدة أيام وذلك تبعاً للتطبيق. ومن الجدير بالذكر أن غالبية أدوات التعرف Classifiers قادرة على الوصول إلى معدل تعرف يصل إلى 100% على قاعدة التدريب، ولكن هذا لا يعني أنها أصبحت قادرة على التعرف على أي دخل. وهنا يأتي دور قاعدة الاختبار التي تعكس قدرة النظام على ما يسمى بالتعميم generalization، حيث عادة يتم إيقاف عملية التدريب عند الوصول إلى معدل تعرف مقبول على قاعدة الاختبار.
الخاتمة:
تهتم الكثير من المؤتمرات العالمية بموضوع تحليل المستندات document analysis  بشكل عام, وتطبيقات التعرف بشكل خاص. على سبيل المثال:
International Conference for Document Analysis and Recognition أو ما يعرف اختصاراً بـ ICDAR.
Document Recognition and Retrival (DRR).
والعديد من المؤتمرات الأخرى.
مما يعكس أهمية موضوع التعرف على المستوى العالمي, أما على مستوى اللغة العربية فما زالت الأبحاث في مراحلها الأولى.
في الختام, قدمنا لكم في ما سبق لمحة سريعة عن مبادئ التعرف على الكتابة مع بعض التفاصيل البسيطة. بهدف توضيح المفاهيم والأفكار المستعملة قبل الخوض في التفاصيل التقنية والخوارزميات المستعملة مع هذه الأنظمة في أعداد قادمة بعونه تعالى.
أحمد منتصر أول : خريج 2005 قسم الذكاء الصنعي
ماجستير نظم معلومات من جامعةINSA de Lyon فرنسا—سنة ثانية دكتوراه في التعرف علي البنى ثنائية الأبعاد
في جامعة  Ecole Polytechnique de l’université de Nantes فرنسا

مقدمة:

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

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

1

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

» أكمل القراءة

تاريخ الألعاب الالكترونية

العدد الثامن 2 عدد التعليقات
تاريخ الألعاب الالكترونية
تعد الألعاب الإلكترونية electronic games من أهم الظواهر التـي رافقت ظهور الحاسوب وتطوره، وهي في المفهوم المعلوماتي برمجيات تحاكي واقعاً حقيقياً أو افتراضياً بالاعتماد على إمكانات الحاسوب في التعامل مع الوسائط المتعددة multimedia وعرض الصور وتحريكها وإصدار الصوت، أما في المفهوم الاجتماعي فهي تفاعل بين الإنسان والآلة للإفادة من إمكاناتها في التعليم والتسلية والترفيه، ومن الناحية العملية تمثل الألعاب الإلكترونية أداة تحد لقدرات المستثمر إذ تضعه أمام صعوبات وعقبات تتدرج من البساطة إلى التعقيد، ومن البطء إلى السرعة، وأداة تطوير لثقافته وقدراته إذ تشد انتباهه وتنقل إليه المعلومة بيسر ومتعة.
منذ نشوء الدارات المنطقية والإلكترونية الذكية وظهور لغات البرمجة البدائية سارع المهتمون في هذا المجال إلى تطوير الألعاب الإلكترونية التـي سرعان ما شدت الانتباه ولاقت قبولاً ونجاحاً لدى معظم فئات المجتمع، مما دفع المبرمجين والشركات إلى بذل كثير من الجهد في تطوير كل من الأجهزة والبرامج الخاصة بها حتى باتت هذه الألعاب وسيلة بمتناول الجميع تفيد في الترفيه والتعليم.
ملاحظة : قلما استخدمت الألعاب للتعليم و إن علمت فهي تعلم الطفل العنف و الإجرام فقط.
و الآن فلتبدأ رحلتنا و نستعرض كيف بدأت الألعاب الالكترونية :
ترجع بداية الألعاب الإلكترونية إلى عصر ما قبل الألعاب و كان في عام 1889 حيث ظهرت لعبة ورق اللعب الهانافودا “Hanafuda” من شركة ماروفوكو و سرعان ما غيرت اسمها إلى شركةNintendo ناينتندو(الإله) المعروفة حاليا في مجال أجهزة الألعاب الإلكترونية.
و في عام 1953  تمكن بعض المختصين من إظهار «قملة» على شاشة كبيرة من المصابيح وتحريكها باستخدام حاسوب ضخم بلغت كلفته حينذاك ملايين الدولارات، تلتها بعد ذلك محاكاة مبسطة لألعاب مثل الضامة والشطرنج,و في عام 1954 ظهرت شركةSEGA  في طوكيو.
وفي عام 1960 لاقت لعبة حرب الفضاء Space-War التـي صممها ثلاثة طلاب من معهد مساشوستس التقني MIT  نجاحاً جعل الشركات المنتجة تقدمها هدية قيمة مع الحاسوب، وفي هذه الأثناء صمم رالف باير Ralf Baer أول جهاز بيتي لألعاب الفيديو أسماه مانيافوكس أوديسي Magnavox Odyssey وكان يحوي ثلاثة عشر لعبة محملة على ستة أشرطة.
وشهد عام 1972 حدثاً بارزاً في تاريخ الألعاب الإلكترونية الحافل الذي ما يزال في تطور وتقدم مطردين حتى اليوم، فقد أسس كل من نولان بشنيل Nolan Bushnell وتيد دابنـيTed Dabney شركة أتاري “Atari” للألعاب الإلكترونية في الولايات المتحدة الأمريكية وطرحا لعبة «بونغ» Pong التـي سرعان ما لاقت نجاحاً منقطع النظير. وكانت لعبة «بونغ» محاكاة مبسطة لرياضة كرة الطاولة يمثل فيها المضربان بمستطيلين يتحركان على طرفي الشاشة عن طريق مقبضين في الجهاز تتحرك بينهما كرة مربعة الشكل. أقبل العامة على هذه اللعبة لدى اختبارها لأول مرة في مقهى، واستطاعت الشركة في مدة وجيزة تحقيق نجاح كبير بتسويق أكثر من مئة ألف نسخة من هذا الجهاز.
وأمام هذا النجاح سارع كل من ستيف جوبس Steve Jobs وستيف فوزنياك Steve Wazniak، إلى طرح لعبة «تهديم الجدار»Breakout، وتمثل جداراً من قطع الآجر في أعلى الشاشة يجب هدمه بكرة ومضرب أفقي متوضع في أسفل الشاشة، وقد لاقت هذه اللعبة إقبالاً كبيراً ونجاحاً باهراً.
وتعددت الشركات التـي بدأت تستثمر في تطوير ألعاب متنوعة جديدة وطرحها، فحققت أرباحاً كبيرة سمحت لها شيئاً فشيئاً بتطوير الأجهزة الإلكترونية والحواسيب، فلم تعد ألعاب الفيديو حصراً على طبقات معينة من المجتمع، وساعد على شعبيتها ظهور ألعاب ممتعة تركت أثراً حتى اليوم، مثل لعبة باك مان (كرة صفراء تلتهم الأهداف وتهرب من الكرات المعادية) ولعبة غزاة الفضاء Space Invaders الشهيرة.
وتسارع تطوير الأجهزة والألعاب المتنوعة وتسويقها ووصلت في عام 1982 إلى قمة مبيعاتها، ليبدأ بعد ذلك التراجع الذي أسهم فيه إلى حد بعيد ظهور الحواسيب المخصصة للألعاب، حتى باتت مبيعات أجهزة ألعاب الفيديو في العام 1985 أقل منها بثلاثين مرة من مبيعات عام 1982، في حين لم يستطع الحاسوب الشخصي لدى ظهوره عام 1980 منافسة أجهزة الألعاب بسبب عمليات التعامل المعقدة التي كانت مستخدمة في ذلك الحين.
ومع تزايد الحاجة إلى أجهزة يسهل استخدامها والتعامل معها، طرحت شركة Nintendo جهاز ألعاب بمواصفات بيانية ورسومية عالية الدقة تعتمد فكرة الألعاب فيه على مغامرات عامل تمديدات صحية اسمه ماريو Mario همه البحث عن أميرته. وحقق هذا الجهاز شهرة واسعة ومبيعات خيالية، حتى تجاوزت مبيعات أشرطة الألعاب عليه الخمسين مليون شريط، مما دفع شركة SEGA في عام 1968، لطرح منتج شبيه به يعتمد شخصية قنفذ سريع اسمه سونيك Sonic يبحث عن أميرته «القنفذة».
وطورت الشركات عدة ألعاب على أجهزتها محققة مبيعات تجاوزت كل التوقعات، وكان من هذه الألعاب على سبيل المثال سباق موناكو للسيارات ولعبة زيلدا أو مقاتل الشوارع، وتطورت الحواسب الشخصية في عام 1988 إذ ظهرت المعالجات 386 و486، وسرعان ما استعيض عن نبضات الصوت ببطاقات الصوت، كما سمح ظهور برنامج النوافذ Windows 3-11 في عام 1990 بتفاعل مبسط مع الحاسوب بات بمتناول الكثيرين، فغدت الألعاب أكثر متعة وسميت ألعاب المحاكاة مثل محاكاة الطيران، ومحاكاة ألعاب التفكير وألعاب الشطرنج.
وفي عام 1993 ظهرت معالجات البنتيوم وقارئات الأقراص المدمجة CD-ROM وطرحت شركة مايكروسوفت برنامج النوافذWindow 95 مما جعل من الحاسوب الشخصي أداة قوية لتطوير ألعاب تعتمد على الوسائط المتعددة في الإفادة من الصور والرسوم والأصوات، فغدت إمكاناتها أكبر وباتت أكثر قرباً من الواقع.
ومع تطور الحاسوب الشخصي بات تراجع أجهزة ألعاب الفيديو سريعاً لدرجة جعلت بعضهم يصرح بأن نهاية هذه الأجهزة أصبحت وشيكة، وأخذت الشركات الكبيرة تتخلى واحدة تلو الأخرى عن برامجها التطويرية في هذا المجال، إلا أنه في عام 1995 طرحت شركة(Sony) اليابانية العملاقة جهاز محطة الألعاب PlayStation المزود بمكتبة واسعة من الألعاب بإمكانات عالية من حيث الصوت والصورة والسرعة، وسرعان ما حذت حذوها شركات يابانية أخرى مثل:الناينتندو و مايكروسفت…. مما بعث من جديد السباق على تطوير أجهزة الألعاب وبرامجها وتسويقها. وظهرت ألعاب إلكترونية مستقلة عن الحاسوب، أو متصلة به يتحكم بها المتعلم وفق أوامره ضمن برامج الذكاء الصنعي، والروبوت (الإنسان الآلة)، التي تقلد أعمال الإنسان في حياته اليومية، مما أكسب هذه الأجهزة والألعاب الملحقة بها تنوعاً واسعاً في التقنيات، وسمح بإشغال حواس عدة كالبصر والسمع واللمس بإتقان أكثر.

تعد الألعاب الإلكترونية electronic games من أهم الظواهر التـي رافقت ظهور الحاسوب وتطوره، وهي في المفهوم المعلوماتي برمجيات تحاكي واقعاً حقيقياً أو افتراضياً بالاعتماد على إمكانات الحاسوب في التعامل مع الوسائط المتعددة multimedia وعرض الصور وتحريكها وإصدار الصوت، أما في المفهوم الاجتماعي فهي تفاعل بين الإنسان والآلة للإفادة من إمكاناتها في التعليم والتسلية والترفيه، ومن الناحية العملية تمثل الألعاب الإلكترونية أداة تحد لقدرات المستثمر إذ تضعه أمام صعوبات وعقبات تتدرج من البساطة إلى التعقيد، ومن البطء إلى السرعة، وأداة تطوير لثقافته وقدراته إذ تشد انتباهه وتنقل إليه المعلومة بيسر ومتعة.

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

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

و الآن فلتبدأ رحلتنا و نستعرض كيف بدأت الألعاب الالكترونية :

» أكمل القراءة

البرمجة بلغة البرولوغ 2

العدد الثامن 3 عدد التعليقات

تصف البرامج المبرمجة بلغة البرولوغ العلاقات المحددة حسب الشروط أو العبارات.

هناك نوعان من الشروط: حقائق وقواعد. تتألف القاعدة من رأس وجسم على الشكل التالي:

Head :- Body.

وتقرأ على الشكل: الرأس (Head) صحيح  إذا كان الجسم (Body) صحيح.

يتألف جسم القاعدة من استدعاء للمعلن، هذا المعلن بدوره يدعى الهدف بالنسبة للقاعدة.

المعلن {,} (يأتـي بين معلنين لهما اسم) يرمز إلى اتحاد كلا الهدفين لتشكيل القاعدة (حرف العطف و).

أما المعلن {;} يرمز إلى تحقق أحد الهدفين (حرف العطف أو) لتشكيل القاعدة.

هذان المعلنان الأخيران يظهران فقط في جسم القاعدة ولايأتيان في رأس القاعدة.

القواعد التـي تحتوي على جسم فارغ تدعى حقائق، مثال:
» أكمل القراءة

الويب الدلالي – Semantic Web

العدد الثامن تعليق واحد
ثورة جديدة في عالم الويب ومفهوم يطمح العلماء من خلاله إلى تحويل مسار الويب من مجرد حاويه أو مستودع كبير للمعلومات المبعثرة و المتناثرة إلى قاعدة بيانات عالميه ضخمة تكون فيها المعلومات معطيات يمكن للآلات قراءتها وفهم محتواها ومن ثم تقييمها، إنه الويب الدلالي (أو ما يطلق عليه أحيانا “الويب ذات الدلالات اللفظية” أو “الويب ذات المعنى “)
حيث تصبح المعلومات قابلة للمعالجة من قبل الحاسبات بدلاً من كونها بشرية التوجيه في وبالتالي فإن الويب الدلالي يسمح للمتصفح أو البرمجيات بالبحث والعثور على المعلومات ومشاركتها بدلاً عنّا.”وفي الواقع فإن الويب الدلالي ما هو إلا امتدادا للشبكة الحالية بحيث تكون المعلومات ذات معنى محدد، وهذا سيمكّن أجهزة الحاسب والبشر على العمل في تعاون أفضل”.
هذا المفهوم الذي يعتبره المهتمون عنصراً مهماً في الجيل الجديد من الويب web 3.0، وإمكانية تحقيقه على أرض الواقع بالشكل الذي يخطط له العلماء حالياً فإنه بلا شك سيحدث تغييراً هاماً في نظرة المستخدم وتعامله مع شبكة الويب، وسيكون له الأثر الإيجابي الكبير على محركات البحث بصفتها البوابة الرئيسية للحصول على المعلومة حيث سيكون من السهل على محرك البحث أن يعي الجملة أو مفردة البحث التـي يبحث عنها ولا يتعامل معها كمجموعة كلمات أو أحرف غامضة بالنسبة له – كما هو الحال اليوم – بل معاني تقوم أنت كمستخدم بشرحها له وفق دلالات ومعطيات محددة ومفهومة من قبله كأن تحدد مثلا أنك تبحث عن اسم شخص، مكان، مصطلح علمي، عنوان كتاب، أو برنامج حاسوبي….إلخ
وقد تؤول الأمور إلى أبعد من ذلك, وتزول  ببساطة محركات البحث بشكلها الحالي, ليأخذ مكانها جيل جديد من محركات البحث التخصصية والتي يهتم كل منها بموضوع معين وتكون بالأحرى واجهات برمجية ذكية ومتكاملة يكون البحث من خلالها وفق أساليب منظمة تضمن سهولة العثور على المعلومة المطلوبة بكل يسر وسهولة.
ولجعل هذه الصور أو الطموحات ممكنة التحقق بالصورة الأفضل يطور العلماء حالياً تحت إشراف منظمة _(W3C) – وهي المنظمة المعنية بتطوير تقنيات شبكة الويب – العديد من الأدوات والحلول التـي تمهد الطريق للمواقع الالكترونية _ بصفتها هدف هذا المفهوم _لتحويلها إلى مواقع تتماشى مع مفهوم الويب الدلالي وتحقق معاييره في صيانة المعلومات وتنظيمها وفي سبيل تحقيق هذه الأهداف المرجوة يعتمد ويب الدلالي على مجموعة من الأدوات وهي:
يتألف الويب الدلالي من نماذج بيانات (data models) تستخدم عدداً من التقنيات لتمثيلها منها:
لغة لتنسيق تبادل البيانات: مثل لغة إطار وصف المصدر (Resource Description Framework) واختصارها RDF، أو بدائلها مثل RDF/XML و N3 و Turtle و N-Triples
مخططات العلاقات مثل (RDF Schema) ولغة وجودية الويب (Web Ontology Language) واختصارها OWL، والتي تسهل عملية توصيف المفاهيم والمصطلحات والعلاقات ضمن مجال معين.
محرك الاستدلال: والذي يحتوي على قواعد استدلالية تستخدم اللغتان السابق ذكرهما ولغات أخرى مبنية عليها لإعطاء نتائج منطقية تماما كما يفكر البشر.
كيف يبدو الويب الدلالي وما هي أهميته؟
إن شبكة ويب الدلاليSemantic Web ما هي إلا امتداد لشبكة الويب الحالية WWW، لكنها تتميز عنها بأنها تقدم معلومات محددة ودقيقة في نتائج البحث، وكذلك تمكن الحواسيب أو بالأحرى برامج الحاسوب من العمل بشكل تفاعلي وتعاوني مع البشر، فشبكة ويب الدلالي تبدو وكأنها مجموعات شبكات متدخلة مع بعضها البعض وتضم الفيض الهائل من المعلومات والبيانات والتـي تم تجهيزها وإعدادها بصورة آلية وأرشفتها بصورة دقيقة جداً من قبل برامج متخصصة، تعتمد على الاستفادة من تكنولوجيا وإمكانات الذكاء الصنعي في تيسير عمليات البحث واسترجاع المعلومات، وبما أن هذه التكنولوجيا ما زالت قيد البحث والتطوير والتجارب المبدئية، فإن الرؤية المستقبلية لها تبشر بالكثير من الخدمات التي ستعتمد على تطوير هذه الأدوات.
لعله يتبادر إلى أذهاننا أن نسأل ما هي أهمية تكنولوجيا الويب الدلالي؟ و لماذا كل هذا الاهتمام بتطويرها والأبحاث التي تبذل في هذا المضمار الجديد؟ وإليكم الاجابه.. إنّ الويب الآن بصورته الحالية مفهومة لنا نحن بني البشر ولكنها بالنسبة للآلات عبارة عن صفحات ممثلة بصفر و واحد لا تعني لها شيئأً، إن ما نريده من الويب الدلالي أن تجعل الآلة أيضاً تفهم ماذا تعني محتويات صفحة الويب وماذا تعني الروابط في الصفحة ..إذا قمنا بذلك يمكن لبرامج المستقبل أن تعطي نتائج ذكية وأن تخدم احتياجاتنا مدعمة بنوع من” الذكاء الاصطناعي”.
الويب الدلالي و الويب 3.0:
WEB 3.0 : هو الويب الذي سنجده في كل مكان و كل شيء. هو الويب الذي سيكسر الحواسيب ليكون موجود في الهواتف المحمولة و العادية, التلفاز, الثلاجة, … و حتى في الأجهزة التي لم تخترع بعد, كل شيء سيكون معه انترنت. وبذلك نجد أن  الويب 3.0 بدأ فعلا بالانتشار قليلا، الجميع يتحدث  الجميع عن الويب 3.0 و الويب الدلالي. يوجد مؤسسات متخصصة في محتوى الانترنت تقدم هدية مليون دولار لأفضل نموذج دلالي.
ولكن السؤال الذي يطرح نفسه الان  هل الويب الدلالي هو ذاته ويب 3.0؟
عموما يوجد غموض حول هذه النقطة, البعض يرى أن الانترنت الدلالي هو نفس الويب 3.0 و آخرون ينفون هذا و يرون أن semantic web هو جزء لا يتجزأ من الويب 3.0 و ليس مثله.
المحرك و الحاسب مثل الببغاء يقولون ما نعلمهم إياه و لكن لا يفهمونه. الويب الحالي يمكن تسميته ويب الملفات. الملفات مرتبطة بشكل ذكي يبعضها البعض و لكن ماذا يوجد داخلها غامض , الذكاء هنا و التطوير أن نعرف الحاسب عما يوجد داخل تلك الملفات الويب الدلالي يعطي معنى للكيانات و العلاقات التـي بينها على صفحات الانترنت. إذا الويب الدلالي هو عكس الويب الحالي. هو ويب مع كيانات.
المواقع لاجتماعية الحالية:
الآن يمكن أن تقول لي…. يوجد مواقع تستطيع فهم الكثير عم ما هو موجود في صفحة انترنت معينة. إذا فتحت حسابا مثلا على الفيس بوك ففيس بوك سيعرف من هم أصدقائي, ما هي صورتي, اسمي, الأشياء التي أفضلها,… و ان الأشخاص هم أشخاص— بشر.
إذا فيس بوك ذكي!!
نعم هذا صحيح و لكن الذكاء منحصر لفيس بوك فقط! البرامج و التطبيقات الأخرى لن تعرف شيء. بالنسبة للتطبيقات الأخيرة هم صفحة مع معلومات لا أكثر.
إذا في الويب 3.0 جميع التطبيقات و المواقع عليها ان تفهم ان Aهو صديق B و B يحب هذه الأشياء. و ان الموضوع المنشور هو موضوع  حول التكنولوجيا و هكذا المفهوم يجب ان يكون متاح لجميع التطبيقات على الانترنت.
ثورة جديدة في عالم الويب ومفهوم يطمح العلماء من خلاله إلى تحويل مسار الويب من مجرد حاويه أو مستودع كبير للمعلومات المبعثرة و المتناثرة إلى قاعدة بيانات عالميه ضخمة تكون فيها المعلومات معطيات يمكن للآلات قراءتها وفهم محتواها ومن ثم تقييمها، إنه الويب الدلالي (أو ما يطلق عليه أحيانا “الويب ذات الدلالات اللفظية” أو “الويب ذات المعنى “)
حيث تصبح المعلومات قابلة للمعالجة من قبل الحاسبات بدلاً من كونها بشرية التوجيه في وبالتالي فإن الويب الدلالي يسمح للمتصفح أو البرمجيات بالبحث والعثور على المعلومات ومشاركتها بدلاً عنّا.”وفي الواقع فإن الويب الدلالي ما هو إلا امتدادا للشبكة الحالية بحيث تكون المعلومات ذات معنى محدد، وهذا سيمكّن أجهزة الحاسب والبشر على العمل في تعاون أفضل”.
هذا المفهوم الذي يعتبره المهتمون عنصراً مهماً في الجيل الجديد من الويب web 3.0، وإمكانية تحقيقه على أرض الواقع بالشكل الذي يخطط له العلماء حالياً فإنه بلا شك سيحدث تغييراً هاماً في نظرة المستخدم وتعامله مع شبكة الويب، وسيكون له الأثر الإيجابي الكبير على محركات البحث بصفتها البوابة الرئيسية للحصول على المعلومة حيث سيكون من السهل على محرك البحث أن يعي الجملة أو مفردة البحث التـي يبحث عنها ولا يتعامل معها كمجموعة كلمات أو أحرف غامضة بالنسبة له – كما هو الحال اليوم – بل معاني تقوم أنت كمستخدم بشرحها له وفق دلالات ومعطيات محددة ومفهومة من قبله كأن تحدد مثلا أنك تبحث عن اسم شخص، مكان، مصطلح علمي، عنوان كتاب، أو برنامج حاسوبي….إلخ
وقد تؤول الأمور إلى أبعد من ذلك, وتزول  ببساطة محركات البحث بشكلها الحالي, ليأخذ مكانها جيل جديد من محركات البحث التخصصية والتي يهتم كل منها بموضوع معين وتكون بالأحرى واجهات برمجية ذكية ومتكاملة يكون البحث من خلالها وفق أساليب منظمة تضمن سهولة العثور على المعلومة المطلوبة بكل يسر وسهولة.

» أكمل القراءة

الهندسة العكسيّة

العدد الثامن 2 عدد التعليقات
Reverse Engineering
كثيراً ما يرتبط هذا المصطلح مع مصطلح آخر هو “Crack” وعلى كلٍ فإن البعد السلبـي هو السائد على هذا المصطلح في أوساط العامة، لذا سوف أحاول أن اعرض هذا العلم ببعديه الإيجابـي والسلبـي داعماً ذلك بالأمثلة كمحاولة لتقريب المسافة بين التنظير والتطبيق لوضوح الرؤية.
الجانب الايجـابي:
فيما لا شك فيه فإن عامل الزمن يعتبر عامل حساس جداً لذا عند بناء برمجية يلجأ المطورون إلى برمجيات التوليد الذاتـي للكود البرمجي مثل LLBLGen Pro و Visual Paradigm  بالاعتماد على مخطط الصفوف أو قاعدة البيانات أو المخطط المفاهيمي لقاعدة البيانات وبذلك يكون قد تم توفير زمن كبير جداً ولا يتوقف الأمر هنا بل يصل إلى مراحل يتم من خلالها استنتاج مخططات التصميم لأي برمجية مهما كانت اللغة التـي كتبت بها لذا من الأهمية بمنزلة أن تكون لدى مهندسي البرمجيات خاصة ومهندسي المعلوماتية عامة إلمام بهذه التقنيات.
سوف أتكلم عن الهندسة العكسية في هذا القسم في الحدود الخاصة بقواعد البيانات حيث  توجد تقنيتان تعبران عن ناتج الهندسة العكسية لقاعدة البيانات – إن صح التعبير –  الأولى تدعى “ORM: Object-Relational Mapping” من خلالها يتم التعامل مع الجداول وكأنها صفوف وأعمدتها متحولات تابعة للصفوف، لكن عيبها أنها بطيئة التنفيذ لعدم الاستفادة من مفهوم “Stored Procedure” فالاستعلامات تعاد ترجمتها من قبل محرك قاعدة البيانات عند كل استعلام. إما التقنية الثانية فتدعى “N-Tier or Three-Tier” وهذا المصطلح يحمل معانـي عدة لكن ضمن قواعد البيانات فهو مماثل لسابقه مع الاستفادة من مفهوم “Stored Procedure” بل إنه في الأساس يعتمد في استعلاماته على هذا المفهوم.
الجانب السلبـي:
فيم لا شك فيه إن حقوق الملكية الفكرية تعد المتضرر الأول في هذا الجانب، لكن من منطلق تعليمي من الصعب على الطالب أن يستخدم نسخ أصلية في مراحل دراسته لذا في نظري أجد من الضرورة أن نسلك هذا المسلك، دعونا من هذا الجانب ولنتكلم عن أسس وأساليب كسر حماية البرمجية .
من الطبيعي أن تكون هناك أدوات مستخدمة وهذه الأدوات تتفاوت بين السهولة والصعوبة في الاستخدام لكن الأهم من ذلك المستخدم نفسه هل يتمتع بحس برمجي خارق أو مستوى من الذكاء يفوق المستوى الذي يملكه مصمم البرمجية المستهدفة، كما لا ننسى إن الخبرة في نظم التشغيل ولغة الأسمبلي تلعب دور كبير في هذا المجال، ونظراً لإقبال الطلاب في هذه الأيام بشكل كبير وملحوظ على بيئة .Net كان لا بدّ من إفراد فقرة خاصة بهذا الشيء.
سوف اجعل القسم النظري هنا حول بيئة .Net والهندسة العكسية وكيفية الحماية في حين سأجعل القسم التطبيقي شامل لبيئة .Net  وبرمجيات Win32.
عادة في بيئة .Net  نطلق عبارة  “De-Compilation” للدلالة على إمكانية استعادة الكود البرمجي كما كتبت وهذا ممكن ضمن بيئة .Net  أو  Java VM في حين يطلق “Disassembly” لبيان إن الكود المعاد هو في الحقيقة بلغة التجميع Assembly، هناك مصطلحين غير شائعين هما “ILDASM , Obfuscator” لذا كان لبد من شرحهما حتى تكتمل الصورة  لدى القارئ الكريم.
تتميز بيئة .Net بأنها بيئة عمل مستقلة ومن أعظم مميزاتها أن أي مطور برمجيات ضمن هذه البيئة يمكن أن يستفيد من MSIL (Microsoft Intermediate Language) حيث تتيح له تحويل أي كود برمجي بلغات .Net “C++.net,VB.net,C#…etc” ليصبح في صيغة MSIL، وكما هو معروف فإن كل معالج كمبيوتر له جملة من التعليمات المستقلة فالبرمجية الناتجة من عملية الترجمة لكود برمجي بلغات .Net يحوي MSIL بالإضافة إلى  ما يدعى “Metadata”
حيث يتم تحويل تعليمات MSIL إلى لغة المعالج الموافق في زمن التنفيذ.
كثير منا يجد نفسه سعيداً بمميزات بيئة .NET حيث يمكن أن يدمج أكثر من لغة في برمجية وحيدة وهذا بفضل معمارية هذه البيئة، لكن الجانب المظلم منها يتمثل في أنه من الممكن أن نستعيد الكود البرمجي كما هو بالاستفادة من “MSIL & Metadata”.
What Actually Is ILDASM ؟؟
بسهولة تعنـي الحصول على الكود البرمجي من الملف التنفيذي. إن ILDASM ‘IL Disassembler’ هو في الحقيقة خاص بشركة مايكروسوفت ويمثل decompiler.
(لمزيد من المعلومات شاهد ملفات الملتيميديا التابعة للمقالة) .
إن ناتج استخدام ILDASM بالنسبة للبرنامج mfsapp.exe نلاحظه في الصورة المقابلة.
وبالاستفادة من دليل المطور الخاص بشركة مايكروسوفت تجد إمكانية فك الرموز هذه.
يمكنك الوصول إلى دليل المطور الموجود ضمن نسخة VS2005 باستخدام المسار التالي:
[Drive name]:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Tool Developers Guide
أو البحث عن عبارة asmparse  أو ECMA  ضمن MSDN أو باستخدام الرابط:
http://msdn.microsoft.com/net/ecma/default.asp
Obfuscator :
تعنـي هذه الكلمة “إبهام أو تعمية” وقد أطلقت على البرمجيات التـي يتم من خلالها حماية الملفات التنفيذية والمكتبات من الهندسة العكسية، في الشكل المقابل مخطط يوضح آلية عملها بالنسبة لبيئة  .Net
هذا المخطط يعطي فكرة واضحة عن النقاط التـي من خلالها تحدد المناطق الحرجة للبرمجية والتـي تكون عرضة للهندسة العكسية.
Obfuscation is based upon :
في الحقيقة إن برمجيات التعمية بُنيت على مفهوم بسيط جداً وهو التحويل من لغة مفهومة إلى لغة غير مفهومة وفق مبدأ ‘encryption and decryption’ وهنا توجد ثغرة أمنية متمثلة في العلاقة المستخدمة كما أن هناك تقابل من نوع واحد لواحد بين المحتوى للبرمجية قبل التنفيذ وفي زمن التنفيذ، هذا كله يجعل من الممكن كسر حماية البرمجيات وعندئذٍ تبقى وظيفة برامج التعمية والتمويه هو تأخير زمن كسر الحماية فقط.
إعداد: م. نواف هاشم بن طالب
Nawaf2020th@yahoo.com

Reverse Engineering

كثيراً ما يرتبط هذا المصطلح مع مصطلح آخر هو “Crack” وعلى كلٍ فإن البعد السلبـي هو السائد على هذا المصطلح في أوساط العامة، لذا سوف أحاول أن اعرض هذا العلم ببعديه الإيجابـي والسلبـي داعماً ذلك بالأمثلة كمحاولة لتقريب المسافة بين التنظير والتطبيق لوضوح الرؤية.

الجانب الايجـابي:

فيما لا شك فيه فإن عامل الزمن يعتبر عامل حساس جداً لذا عند بناء برمجية يلجأ المطورون إلى برمجيات التوليد الذاتـي للكود البرمجي مثل LLBLGen Pro و Visual Paradigm  بالاعتماد على مخطط الصفوف أو قاعدة البيانات أو المخطط المفاهيمي لقاعدة البيانات وبذلك يكون قد تم توفير زمن كبير جداً ولا يتوقف الأمر هنا بل يصل إلى مراحل يتم من خلالها استنتاج مخططات التصميم لأي برمجية مهما كانت اللغة التـي كتبت بها لذا من الأهمية بمنزلة أن تكون لدى مهندسي البرمجيات خاصة ومهندسي المعلوماتية عامة إلمام بهذه التقنيات.

سوف أتكلم عن الهندسة العكسية في هذا القسم في الحدود الخاصة بقواعد البيانات حيث  توجد تقنيتان تعبران عن ناتج الهندسة العكسية لقاعدة البيانات – إن صح التعبير –  الأولى تدعى “ORM: Object-Relational Mapping” من خلالها يتم التعامل مع الجداول وكأنها صفوف وأعمدتها متحولات تابعة للصفوف، لكن عيبها أنها بطيئة التنفيذ لعدم الاستفادة من مفهوم “Stored Procedure” فالاستعلامات تعاد ترجمتها من قبل محرك قاعدة البيانات عند كل استعلام. إما التقنية الثانية فتدعى “N-Tier or Three-Tier” وهذا المصطلح يحمل معانـي عدة لكن ضمن قواعد البيانات فهو مماثل لسابقه مع الاستفادة من مفهوم “Stored Procedure” بل إنه في الأساس يعتمد في استعلاماته على هذا المفهوم.

الجانب السلبـي:

» أكمل القراءة

كافة الحقوق محفوظة لموقع مجلة كلية الهندسة المعلوماتية © 2010
التدويناتRSS | التعليقاتRSS | تسجيل الدخول