تكلمت في اخر بوست عن مشروع التخرج كمادة ومتطلباتها وطريقة اجتيازها وان المطلوب في الاخير هو تنفيذ عملي لفكرة تكون بشكل او بآخر حل لمشكلة او تطوير حل متوفر حالياً, فكرة مشروع تخرجي عبارة عن منصة خاصة بطلاب الكلية توفر كل مايحتاجة الطالب من مصادر تعليمية (كتب, سلايدات وغيرها) و برامج وبيئات تطوير (Netbeans, Eclips, Android Studio, MySQL,PacketTracer) و برامج Office وغيرها حسب حاجة الطالب وجدولة الدراسي, بمعنى ان كل طالب سيجد الكتب الخاصة بالمواد في الترم الدراسي الحالي وسيجد البرامج والادوات الي يحتاجها مع تلك المواد.
طبعاً ربط الكتب والبرامج مع المواد كان بناء على مادرسته خلال الاعوام السابقة وما احتجته كطالب ومن خلال نتائج الاستبيانات في فترة بناء التوثيق لمشروع التخرج.
كيف؟
التطبيق يجب ان يكون مرتبط بقاعدة بيانات طلاب الكلية وعند استخدام الطالب للتطبيق (تسجيل الدخول باستخدام الرقم الجامعي) يتم جلب بيانات الجدول الدراسي للترم الحالي عن طريق الرقم الجامعي ثم تكون عملية انشاء بيئة العمل (تحميل الكتب والبرامج والادوات لنظام التشغيل), يتم تحميل سطح المكتب الخاص بالطالب ويكون جاهزا للاستخدام عن بعد عن طريق المتصفح
لغة البرمجة المستخدمة
تطبيق ويب (وهذا الافضل) بلغة PHP ومباشرة من خلال المتصفح.. يبدو رائعاً.. أليس كذلك؟.. لا ليس كما وصفه احدهم في لجنة المشاريع انه سيكون موقع الكتروني بسيط (مجرد مدخلات ومخرجات حسب تعبيره) ثم فكرت في تطبيق سطح مكتب بلغة JAVA وهذا يكفيني اني اتخرج وافتك بسلام
نظام التشغيل وسطح مكتب الطالب
Container ولا Virtual-Machine ؟ قررت اني استخدم حاويات باستخدlم docker لبناء نظام التشغيل الخاص بالطلاب الحاوية لها ميزات كثيرة ذكرت بعضها هنا , كانت السلبية الوحيدة في هذا المشروع ان الحاويات تنشيء انظمة لينُكس فقط, وطبعاً بعض الادوات المستخدمة في البيئات الاكاديمية مخصصة لويندوز فقط فما تقدر تشغلها في الحاويات, لكن عامة البرامج تكون موجودة على جميع الانظمة والاخر منها له بدائل على نظام لينُكس.
صور لواجهة التطبيق وسطح مكتب الطالب
باستخدام java و مكتبات swing كان هذا التصميم البشع للتطبيق
وهنا الأثر الجميل لمجتمع المصادر المفتوحة و حاويات لينُكس سطح مكتب متكامل من خلال المتصفح
وهكذا تم مناقشة المشروع والانتهاء منه بهذا الشكل النهائي, ومن هذه اللحظة قررت تحويل المشروع لتطبيق ويب just for fun
تحويل المشروع إلى تطبيق NodeJS
كنت افكر بـ Node JavaScript ولكن كنت اواجه مشكلة في اسلوب الـ asynchronous coding وجحيم الـ callbacks وحمسني واحد من الشباب (عاصم الحربي) اني استخدم النود واخذت فترة اسبوعين تقريبا اتعلم افكار asynchronous وتميتها, استخدمت كثير libraries كان اهمها express بجميع مشتقاتها ومكتبة مهمة asyncloop سهلت مهمة عمل حلقات synchronous.
المشروع مكتمل لكن ازلت جميع الادوات والبرامج من سطح مكتب نظام التشغيل الخاص بالمستخدمين بسبب ان المشروع الان تجريبي ومعروض للعموم وليس خاص بجهة معينة, ولانه شغال على سيرفري nas وما ابغاه يستهلك ريسورس كثير
المشروع متوفر على الرابط http://vdi.r1sk.net
اي اقتراحات او الابلاغ عن مشاكل التواصل على twitter