اخر المواضيع

الأربعاء، 23 يونيو 2010

افكار امشاريع تخرج حاسبات ومعلومات

دى بعض افكار لمشاريع التخرج ودا طبعا شرح موجز ليها

                             






Operation System









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

فيه فيه شوية مشاكل دي اللي بانت ليا خلال الفترة اللي فاتت وهي :

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








فكرة مختلفة شوية








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








اللغات اللي احنا محتاجينها لموضوع زي كده :








*** Assembly : وده مش هيبقى كتيربصورة كاملة لأ ده هيبقى في حاجات قليلة أوي .
*** لغة برمجة low-level : ودي ممكن تبقى C,C++,Delphi ، ودي وظيفتها الوصول لحاجات معينة في الهاردوير متقدرش توصلها اللغات العادية وفي نفس الوقت حرام نقعد نعملها بالأسمبلي .
*** لغة برمجة عادية : Java أو Visual C++ وهي دي اللي هيبقى أغلب النظام مبني بيه بس لازم يكون بيعتمد على استدعاءات متبرمجة بالحاجتين اللي فاتوا دول .

















Distribution Of Linux










في الحالة دي هيبقى الموضوع أحسن شوية من الموضوع اللي فات لأنك مش هتبرمج بنفسك الاستدعاءات اللي low-level ، لأ ده انت هتعتمد على اللي موجودة أصلاً .









وهتبقى تعديلاتك متقسمة على قسمين :








*** في ال low-level في شوية الجوريزمات التنفيذ على ال Processor والتخزين وكده ، وفي الحالة دي انت برضو مش هتكلم البروسيسور مباشرة .
*** في مظهر نظام التشغيل وبروتوكولات نقل البيانات وتمثيل الملفات والملفات التنفيذية والحاجات دي .

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


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

Mobile OR Pocket PC System AND applications









أول حاجة الموضوع ده متقسم عندنا 4 اقسام :









* نظام تشغيل لموبايل :








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









* برامج وتطبيقات للموبايل :








الموضوع ده هيبقى سهل شوية بمجرد ما تعرف نوعية نظام التشغيل اللي هتشغل عليه التطبيق بتاعك ، طبعاً برامج وتطبيقات للموبايل لوحديها مش مشروع كويس لإن مستواه هيبقى قليل ، لو هيبقى مشروع يبقى نظام تشغيل بالتطبيقات بتاعته .









* نظام تشغيل لل








Pocket PC :

















نظام التشغيل بتاع ال Pocket Pc لسه موصلش لمستوى نظام تشغيل كامل زي بتاع ال PC العادي ، اضافة لميزته عن الموبايل ان ال Pocket PC موحد بحيث انك تقدر تعمله نظام تشغيل مش لواحد معين ، من نظم التشغيل للبوكيت pc نظام Pocket PC 2002,2003 - Windows CE.net دول اكتر حاجات بلاقي عنهم كلام وشروح . في الحالة دي ممكن نفس النظام نكمل على نظام تشغيل موجود اصلاً وبرضو نقدر نبدأ من الصفر .









* برامج وتطبيقات للبوكيت








PC :

















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









اللغات المتاحة :








Java - C++ في الأساس .

















وبنسبة أقل ال C# لكنها هتبقى اسهل من المية لو كان الموضوع تطبيقات Pocket PC فقط ، بس متهيألي انه مش هيشتغل إلا على نظم تشغيل من مايكروسوفت .
ونفس النظام بالجافا هي شوية حاجات صغيرة بس بتتعمل للموبايل العادي وكمان للبوكيت بس انا مجربتوش لانه طالب مني بعد ما اخلص البرنامج اني Package it as a .jad file ومعرفتش اعمل الخطوة دي .

Compiler

















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









أول حاجة اللغة اللي هنعملها








Compile :

















*** ممكن تبقى لغة جديدة احنا اللي هنحط قواعدها .
*** أو تكون لغة موجودة زي ال C++ وزي ما بنشوف Borland C و Turbo C وكده .

الحاجة التانية طيب ايه الجديد اللي هتخلي الناس تستخدم الكومبايلر بتاعنا - انا هنا بتكلم عن كومبايلر مش IDE ( الفرق بينهم اننا لما ببرمج كومبايلر يبقى انا بآخذ الكود حتة حتة واشوف الإيرورس واطلع كل حاجة زي ما كنا بنعمل في مشروع الكومبايلر ، ال IDE زي ال Visual Studio مثلاً مهمته انه يعملك أدوات جاهزة تستخدمها ويخليك ترسم مثلاً فورم وهو اللي يعمل Create للكود بتاعه ، وممكن يبقوا الاتنين مع بعض Compiler و IDE )

*** اسرع في ال Compiling .
*** Debuger محترم أحسن من اللي موجود .
*** رسائل خطأ أوضح .
*** Run Time Errors Detectors : وده بحره واسع أوي بس ممكن نصيد شوية أخطاء من دي في الكومبايلر .
*** طبعاً لو احنا اللي افتكسنا اللغة يبقى عنصر أساسي قوة اللغة دي وسهولة الاستخدام .
*** أو اتجاه في البرمجة مكنش موجود اساساً (قصدي اتجاهات زي مثلاً برمجة ويب - ذكاء اصطناعي - روبوت - ... الخ )









العناصر اللي هنحتاجها :








كلغة برمجة احنا مش هنحتاج غير للغة برمجة بسيطة C او C++ ، لكن احنا محتاجين حاجات كتيرة نتعلمها افضل بداية ليها الكتاب اللي كنا بنآخذه في الكلية ، لو شفنا العناصر بتاعته على السريع - مش نفهم اللي فيه بس نشوف العناصر الأساسية بس - هيكون كويس علشان نآخذ فكرة سريعة عن الموضوع .


















Firewall And AntiVirus










أولا :








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

















- معرفة مداخل ومخارج الجهاز ومعرفة كل برنامج شغال عليها ومعرفة الصلاحيات بتاعته وايه نوعيات البيانات اللي مسموح ليه انه يبعتها أو يستقبلها .
- مراقبة جميع بورتات الجهاز واعلامك مباشرة بأي عملية دخول أو خروج غير مصرح ليه بيها .
- مش كل الموضوع مراقبة الدخول والخروج ، لأ لأن في باتشات بتخش ضمن منافذ حاجات تانية كجزء منها ، مهمة ال Firewall كمان انه يراقب المنافذ دي ويتأكد من أن البيانات الداخلة أو الخارجة مصرحة ليها بالدخول أو الخروج .









ثانياً :








AntiVirus :

















بيقوم بمهمة منع الفيروسات من التسلل لنظام التشغيل ، وطبعاً هو مشروع أكبر بكتير من ال Firewall ، ومن حجم المهام اللي هو بيعملها هنقدر نعرف الفرق بينه وبين ال firewall ، فهو يقوم بـ :

















- مراقبة أي سلوك غير طبيعي من أي تطبيق موجود على الكومبيوتر .
- مراقبة وجود اي فيروس من قاعدة البيانات اللي موجودة عنده واللي لازم تبقى Updated بصورة مستمرة .
- منع أي برنامج من الوصل للمناطق الحرجة من نظام التشغيل إلا لما يكون مصرح ليها بالعمليات دي .
- محاولة اصلاح الاضرار لما يكون في فايروس مقابل اقل الخسائر الممكنة في الملفات والمستندات .
- توفير عمليات فحص شامل لكل محتويات وحدات التخزين غير الفحص الدائم اللي بيكون شغال في ال Background .



طبعاً بالنسبة ليا على الأقل الموضوع ده جديد ولسه محتاجين نمشي كتير عقبال ما نعرف احنا ايه اللي محتاجينه بالضبط ، لكن عموماً بالنسبة للغات البرمجة العادة انها بتكون Visual C++ وهي دي الأشهر بين برامج الحماية والفيروسات وطبعاً مقدرش اقول ليه لأننا معرفش ايه المطلوب مننا اننا نعمله بالضبط ، بس هو عموماً هيبقى صعب تتعمل Java لأنها بتشتغل على VM وده بيخليها ابطأ في مقابل انه يشغلها على كل نظم التشغيل ، وفي الحالة دي هيبقى صعب نعمل حاجة من النوعية دي تفضل شغالة في ال Background بتاعت الجهاز ،
طبعاً قبل كل الكلام اللي فات مننساش مواضيع الهندسة العكسية وجينات البرامج !! ودي محتاجة من الأول للآخر ل Assembly تقيل جداً ومحتاجة دراسة واسعة في المواضيع دي .










IDE









ميزة ال IDE عن الكومبايلر انها اسهل انك تلاقي ليها مستخدمين في المقام الأول ، لأنك مش هتخليهم يغيروا لغة البرمجة بتاعتهم ، ده غير انك المفروض تديلهم امكانيات عالية مكنتش موجودة قبل كده في ال IDE's اللي قبل كده ودي مهمة أسهل نسبياً .


في الفكرة دي انا مش هشرح مبادئها انا هشرح باختصار فكرة كانت جيالي وهي مبنية على فكرة حسام اللي هي ال IDE Online بس ده مش أون لاين ، لأ ده على الجهاز بس هيتميز بأنه ليه القابلية لعمل Compiling لاكتر من لغة برمجة ، ويسمحلك انك تكتب الكود بأكتر من لغة برمجة على بعض ومهمته أن هو يبدأ يجمع الأجزاء دي ويربط بينها ويبعت كل جزء منهم على الكومبايلر الجاهز بتاعه ، طبعاً كجزء من الفكرة ان الحاجة اللي هتكون مميزة اننا نوحد شاشات الرسم لعدد من لغات البرمجة اضافة إلى اننا نطور مجموعة من ال Wizerds بحيث انها تسهل كتير من العمليات في البرمجة ، ممكن نحط مميزات اضافية خاصة مثلاً بالمحاكيات Similatures للتطبيقات بمختلف انواعها ، خدمات اضافية خاصة بعمل Setup والحاجات دي بحيث انه يبقى في قوة ال IDE بتاع ال .net أو بتاع ال netbeens - وده ممكن مش مستحيل - بس في مقابل اننا نعمل موضوع دمج اللغات مع بعض أو لو الموضوع ده صعب حتى يبقى IDE واحد تقدر تبني بيه مشروع باي لغة برمجة - المشروع كله لغة برمجة واحدة بيختارها هو في مرحلة انشاء المشروع - .


الفكرة التانية في الموضوع ده هي فكرة حسام اتوقع ان حسام كان مديها حقها لما شرحها في آخر اجتماع قبل ما اسافر بس انا لسه عندي اعتقاد انها فكرة مستقلة عن Group Maker بحيث اننا نديها حقها ونطور ونحسن فيها على قد ما نقدر ، فمثلاً ممكن نحسن من طريقة عرض ال run ونخليه فعلاً بيعمل Compile & Run واضح ومقنع للمستخدم ، نفس النظام ممكن نديله امكانيات اعلى زي ال Wizerds والواجهة الرسومية اون لاين ونفس الكلام اللي كان ممكن يبقى في الفكرة الاولى .


ونفس النظام لو كان اختيارنا هو Group Maker يبقى ندي فيه على قد ما نقدر سواء على السيرفر او لو الشغل بتاع الماسنجر والحاجات دي ، وفي قسم ال Web Applications هتكلم عن افكار سريعة عن حاجات شبه كده .


























Web Application









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


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

- لغات برمجة سيرفر .
- قواعد بيانات .
- سكريبتات .
- اللغات الوصفية زي ال Html مثلاً .
- تصميم .

لو رجعنا واتكلمنا على الحاجات اللي ممكن تخلي Group Maker مشروع ضخم لوحديه هي زي ما قلنا قبل كده الماسنجر ، حاجة تانية انه يكون فيه نظام للتواصل عن طريق الموبايل مثلاً بحيث انه يشتغل عن طريق الموبايل العادي وده هيضيفلنا شوية تقنيات مثلاً هنستخدم WSP بدل HTTP وهنستخدم WML بدل ال HTML وكده . خدمات اضافية خاصة بالتسويق مثلاً أو ادارة المشاريع والمخططات البيانية بتاعتها ، أو نظام زي ال Source safe بتاع مايكروسوفت بحيث انه يعمل عملية ادارة التاسكات وتركيبها على بعض وكده .

من ناحية السوق أي فكرة من النوعية دي يعني Web Application هتبقى خبرة كويسة في السوق سواء كان جروب ميكر أو حتى حاجات زي اللي كنا بنفكر فيها زمان زي نظام الجامعة والمحلات الإلكترونية - لو مش فاكرين ده كان حاجة شبه أطلب بس كل واحد عايز يخش يعمل لنفسه حساب ويحط بياناته بحيث انها تبقى متقسمه بس الميزة هي في سهولة الإستخدام وانها تبقى لكل حاجة في أي حاجة - والحاجات دي كلها .


















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









DBMS









نظام لإدارة قواعد البيانات ، الفكرة موجودة ومعمولة ضمن فريق Dev4arabs بس النظرية ان الفكرة ممكن تبقى قوية وممكن تلاقي مكانها بسهولة لو كان فيها مميزات تفرقها عن غيرها ، مثال المميزات دي :

















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


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

















Network Application

برضو من مجالات التطبيقات اللي لسه مفتوحة وبتعتمد على نقل البيانات من مكان للتاني زي الماسنجر والسكايبي وكده ، وطبعاً محتاجه تكون فكرتها جديدة علشان تمشي في السوق :

- الماسنجر فكرة مستهلكة فلازم يبقى في حاجة تشد الناس عن الماسنجر بتاع الياهوو أو الهوتميل ، وطبعاً الناس بتستسهل فعلشان كده انك تمشي في السكة دي صعب أوي .
- برامج ال Share فيها فكرة نقل ملفات بس بأسلوب جديد يعتمد على وجود الملفات عند المستخدمين ، طبعاً نجاح برنامج زي كده بيعتمد على انه مثلاً بيديك أمان وسرعة وقوة في الأول ، بس أساس نجاح البرنامج هو كترة المستخدمين .
- برامج ال Remote Assistance واحدة من النوعية دي ونجاح فكرة زي كده بيعتمد على السرعة وكم التحكم اللي هتديهوله .
- برامج ال net cafe مثلاً موجودة بكترة .
- الألعاب ممكن تخش كمان كعنصر من عناصر ال Network Application .
- فكرة زي مشروع يوسف الأول الخاص بعمل سيرفر للألعاب على الإنترنت أو حسب ما فهمت منهم .


الامثلة اللي فاتت دي أمثلة على برامج المجال ده ، ميزتها انك ممكن بسهولة تعمل برنامج على مستوى البرامج اللي موجودة فعلياً .
















authentication & authorization









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


















Search Engine


















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


















Hardware Controller


















اعتماد مبدئي على التفاعل بين الكومبيوتر والمستخدم باستخدام الأحهزة الخارجية ، بحر الموضوع واسع وفيه أفكار كتيرة .

















Voice recognition









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










Image Processing









مجالها برضو واسع وتقدر تلاقي فيها التعرف على الأشكال Object Identification ، التعرف على الحركة Motion Detection ... الخ ، ويمكن استخدامها في نظم مقارنة أو نظم قراءة بصرية أو نظم تعرف أو نظم متابعة ... الخ .








   

ليست هناك تعليقات: