تجربتي مع miniEdit

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

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

و بسبب حاجتي لمحرر نصوص مع تفلية Debug بدأت مشروع LightPHPEdit قمت بوضعه على السورس فورغ، المحرر على صغره كلفني شغل النسخة الأولية منه شهر و نصف عمل متواصل، كلمة عمل متواصل في ذلك الوقت كان يعني أكثر من  5 ساعات في اليوم.
كان علي ان أضع Syntax الخاص بال PHP الذي يدمج صيغ HTML معه عند فتح <? و اغلاقها، و طبعا لم تكن متوفرة في المكونات الجاهزه، قمت بانشاء واحد يرتبط مع SynEdit و يأخذ تنسيقات متعددة تبعا للنوع المحدد مثلا <?xml  طبعا لم ابرمج الـ xml بعد و لكن وضعت القواعد لها بحيث استطيع اضافة اي نوع جديد، كان يخطر على بالي مثلا <?pascal 😀
ايضا كان علي ان اضع برتوكول التخاطب مع xdebug و هو اضافة لل php و عليه التخاطب معه عبر TCP، المسألة ليست سهلة فهو MultiThread لأن التفلية يجب أن تكون في الخلفية عند التوقف عند breakpoints.
بالاضافة لوضع محرك رئيسي للمحرر بحيث يترابط الجميع على طبقات و تكون معزولة عن الواجهة، انا اعمل دائما بهذه الطريقة، احب ان اجعل الواجهة لا تحوي الكثير من الكود.

انتهيت منه بلغة الدلفي، و اصدرت منه نسخة على السورس فورغ، و لكن هنالك غصة في القلب أنه بالدلفي وهي ايضا غير مجانية (مكسورة) و كان الخيار ان انتقل إلى Lazarus لهذا السبب.
كانت لازاروس متخلفة كثيرا في ذلك الوقت و ليس من السهل نقل برنامج بالرغم من بساطته (لأن الواجهة لا تحوي الكثير من الكود) إيضا ان لازاروس لا يعتمد على Windows API و بها الكثير من العلل في ذلك الوقت.
كان ال SynEdit المستخدم في الازاورس هو نسخة قديمة جدا من النسخة التي في الدلفي اي سأخسر الكثير من المزايا و قد خسرتها بالفعل، ايضا هنالك تعليمات لا تعمل إلا في الويندوز بالرغم اني استطيع استعمالها إلا انني أرغب في تشغيله على اللينوكس ايضا.
مثلا فتح مجلد الملف كان غير موجود بنفس الصيغة في اللينوكس، لذلك قمت بعزلها على شكل Addon خاص بالويندوز، أيضا كان اهتمامي ان ارتبط مع الباسكال تحضيرا لانشاء تفليه للباسكال عليه، هذه لم تتم بعد و لكن يمكن ربطها بسهولة لأن المحرر مستقل تماما عن نوع التفلية الموجود، اي تم عزل الـ PHP ليصبح مجرد Addon أو كما سميته Perspective

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

الآن مع العلل البسيطة اعتقد ان المحرر جاهز للنشر وهو موجود على الـ github باسم miniEdit، مع اني استعمله منذ أول يوم ولادة له كملف تنفيذي، لانني استطع التجاوز عن العلل التي فيه دون أن اعيب على من صنعه 😛

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

Advertisements

10 أفكار على ”تجربتي مع miniEdit

  1. الله يعطيك العافيه

  2. و يعافيك اخ “اسامة” او “مهند” 🙂

  3. السلام عليكم
    قُمت بتحميل الكود لكن لم اجد المكتبات مثل miniLib, miniCommon

  4. كلها موجودة في http://sourceforge.net/projects/minilib
    ايضا يوجد نسخة من ال miniEdit ضمنها
    ولكني استعمل ال Github كمستودع رئيسي للمشروع

  5. قمت بتحميل الملف المضغوط من sourcefore لكن وجدت بداخله برنامج تنفيذي لوندوز

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

  7. نعم يكفي توزيع الملف التنفيذي له، لكن مشكة لينوكس أنه يحتاج لنسختين لكل معمارية على حده ٣٢ بت و ٦٤ بت إذا كان يستخدم مكتبات في النظام

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

  9. لكن ليس لدي المكتبات

  10. أي مكتبات؟
    مكتبات الـ minilib كلها على السورس فورغ حتى انها تتضمن نسخة من الـ miniEdit لكني افضل ان تستعمل نسخة ال github لل miniEdit

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

شعار وردبرس.كوم

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   /  تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   /  تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   /  تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   /  تغيير )

Connecting to %s