جديد

[نظام إدارة مواقع ...] قادم

16 - 05 - 2008

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

ما هو هذا النظام ( كلمة نظام كبيرة شوي ) ؟

هو عبارة عن موقع فارغ ، يمكن اعتباره نواة Core موقع ، لا يحتوي في حالته الافتراضية شيئا إلا ( لوحة تحكم أساسية ، نظام قولبة ! Theme ، برنامج نموذجي ).
لوحة التحكم الأساسية تتضمن : معلومات المدير و إمكان تعديلها ، إمكانية تثبيت و إزالة برامج mods ، تعديل إعدادات الموقع الأساسية ، توزيع الكتل أو الصناديق ).

مم يتألف البرنامج mod ( اختصار لـ module ) ؟
يتألف أساسيا من ملف xml يحوي كافة معلومات البرنامج ، إضافة للصفحات المكونة له و هي من نوع php و js و ... حسب الرغبة

هذا هو كل الموضوع !

حقيقة ، قمت بالتعامل مع الكثير من أنظمة إدارة المحتوى CMSs و كانت فكرتي أن أقوم بشيء مشابه لكن بأقل كمية ممكنة من الكود و بأكبر قدر ممكن من الديناميكية، و هذا النموذج هو ما استقريت عليه.
قد يبدو صغيرا لكن كما قلت هو نواة فقط ، يمكن بالتالي تخصيص هذا الموقع لأي غرض.
مثال ، أريد أن أجعل الموقع عبارة عن موقع إخباري [أخبار ، أقسام ، تعليقات ، مدراء ، RSS ، ...]
أقوم ببرمجة برنامج خاص بذلك mod و ليكن اسمه news ، يتضمن هذا البرنامج ملف إعدادات xml و ملفات php و ليكن أحدها خاص بعرض الأقسام ، آخر خاص بعرض الأخبار (عموما ، حسب القسم ، عرض خبر كامل ... ) ملف خاص بالخلاصات RSS ... أيضا هناك ملفات لإدارة كل مقطع تظهر للمدير في لوحة التحكم بعد أن يقوم بتثبيت هذا البرنامج.

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

هناك حرية كبيرة في برمجة أي برنامج ، المهم شرح هذا البرنامج في ملف الـXML الخاص به.

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


                   

مشروع المترجمات

15 - 05 - 2008

مشروع المترجمات

اليوم انتهيت من مشروع المترجمات (Compiler) ، قضيت 10 ساعات متواصلة في كتابة الكود ، حوالي 500 سطر جافا.
أعتقد أنه إنجاز جيد بالنسبة لي لعدة اعتبارات :

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

مراحل عمل المترجم :

1 - قراءة الكود الذي يقوم المستدم بكتابته في ملف.
2 - تقسيم الكود إلى مقاطع و وضعها في ملف XML .
3 - جلب البيانات من ملف الـ XML و تحليل كل مقطع و حفظ قائمة بالأخطاء.
4 - في حال عدم وجود أخطاء ، بناء برنامج java مكافئ.
5 - توليد ملف .class من ملف الجافا الناتج.

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

اللغة التي يقبلها المترجم هي لغة بسيطة تتكون من الآتي :

- يبدأ البرنامج بكلمة start و ينتهي بكلمة end .
- يعرف المتحول على أنه إما String أو int بواسطة الكلمة def مثل :
def test int;

- عبارة if لها الشكل :
if (exp){}

- عبارة for لها الشكل :
for x = y to z { }

- عبارة الإدخال هي :
input(x)

- عبارة الإخراج لها الشكل :
output(x)

- تقبل اللغة حلقات for و حلقات if متداخلة.

هذه صورة توضح الطريقة المتبعة في معالجة حلقة For ، يتم بناء مكدس أو مصفوفة تحوي في عناصرها تعابير نظامية Regular Expression كل منها يعبر عن محتوى يجب أن يكون ، تتم معالجة الجملة بحيث نقوم بتجميع الحروف حتى نصل للفراغ ثم مقارنة النص الناتج مع قمة المكدس ، إذا حصل تطابق matches ننفذ الطريقة pop التي تحذف قمة المكدس ، و في نفس الوقت نكون قد حذفنا الأحرف المشكلة للكلمة التي تم تحليلها.
هناك حالتان لوقوع الخطأ :
- في حال انتهاء العبارة و عدم انتهاء المكدس.
- في حال وجود حالة عدم تطابق في إحدى المراحل.
صورة توضيحية ( بعض الشيء ) : اضغط على الصورة للتكبير -



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


                   

مقررات و أساليب تدريس

11 - 05 - 2008

المترجمات Compiler و هندسة البرمجيات (القسم العملي) هما المادتان الوحيدتان الذي أحبهما هذا الفصل أما الـ X مادة الأخرى فلا أطيقها !
لماذا ؟

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

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

لماذا أحب هاتين المادتين هذا الفصل ؟

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


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


بالمقابل هناك ... بلا ما أحكي ، أو ربما أحكي لاحقا بتفاصيل


                   

كتابات سابقة

مواضيع سابقةبتاريخ
لكي لا ننسى ... ولن ننسى 06 - 05 - 2008
روابط مفضلة 02 - 05 - 2008
بلا عنوان 30 - 04 - 2008
صراحةً 25 - 04 - 2008
البرمجة الكائنية عند أفلاطون 23 - 04 - 2008

Cloud Tags

أنصح باستخدام فايرفوكس.
RSS

أقسام

صفحات إضافية

اقتباس

لا أحد أقوى من نفسك على إرشادها للخير.
شكسبير

آخر المواضيع

Flickr

مواضيع عشوائية

مواقع و مدونات

أنا في

salamm[at]live.com
أنا في فلكر
Ma.gnolia

Icons



Syria Planet

Add to Google