- الحصول على الرابط
- بريد إلكتروني
- التطبيقات الأخرى
- الحصول على الرابط
- بريد إلكتروني
- التطبيقات الأخرى
بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .
هذه مجموعة من أفكار مجالات التخرج ، رسالة كنت قد أرسلتها قبل البدء بعمل مشروع التخرج هذه السنة ، توضح المجالات التي يمكن أن نفكر في مشروع تخرج من خلالها ، الرسالة في بعض أجزائها مكتوبة باللهجة المصرية ولكنها واضحة على أية حال .
وكما سيتضح من الموضوع فهذه ليست أفكار لمشاريع التخرج ، بل هي موجز لبعض علوم وتقنيات الكومبيوتر والتي يمكن تطبيق فكرة مشروع التخرج لتكون ضمن واحد من هذه المجالات .
افكار لمجالات مشروع التخرج .
المجموعة دي مش أفكار لمشروع التخرج ، دي مجرد رؤوس أقلام لحاجات ممكن تكون مشاريع تخرج ، وبالمرة نعرف ايه اللي احنا محتاجينه علشان دي تبقى مشاريع التخرج علشان لو حد عنده وقت ممكن يبحث فيها اكتر أو يتعلم اللغة أو التقنية المطلوبة للموضوع ده ، الكلام اللي انا كاتبه ده موجز لكتب ودروس قريتها في المجالات دي خلال المدة اللي فاتت وطبعاً مش هيكون كامل لان ده اللي قريته على السريع .
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 ومعرفتش اعمل الخطوة دي .
Game Programming
المراحل المطلوبة في برمجة الألعاب :
*** التصميم :
في المرحلة دي المقصود بالتصميم مش الرسم ، لا ده شكل اللعبة العام ، لازم علشان تبدأ أي لعبة لازم تكون الحاجات دي جاهزة عندك :
1- فكرة اللعبة .
2- ميكانيكا اللعبة .
3- تصميم المراحل والمهمات .
4- قصة اللعبة .
طبعاً الحاجات دي مش محتاجة أكتر من تفكير وتحليل لعناصر اللعبة .
*** البرمجة :
هي دي المرحلة اللي هتشكل قلب اللعبة حسب التصميم اللي اتعمل في الأول ، الحاجات دي لازم تتعمل من المبرمجين في اللعبة - طبعاً هما متقسمين اجزاء كتير بس هي دي تقريباً معظم العناصر اللي المفروض يحققوها - :
1- محرك اللعبة ال 3D .
2- محركات الرسوميات .
3- الشبكات ( لو في شبكات في اللعبة ) .
4- برمجة الجرافيك في اللعبة وده اللي هو المفروض مسؤول عن سير اللعبة وحركة الكائنات اللي فيها .
5- برمجة الذكاء الإصطناعي للعبة .
6- برمجة الأصوات .
7- برمجة قصة اللعبة والمراحل .
8- برمجة الأدوات المستخدمة في اللعبة ، ولو في Packages أو حاجات زي كده ( أسلحة - لعيبة كورة ) وكده .
*** الأصوات :
واضحة المطلوب الأصوات اللي مطلوبة علشان سياق اللعبة لكل حدث من الأحداث اللي المفروض انها تحصل ، وبتضم الحاجات دي :
1- المؤثرات الصوتية في اللعبة .
2- خلفية الصوت في اللعبة .
3- موسيقى اللعبة - معندناش الموضوع ده مش هنعمل موسيقى للعبة كفاية المؤثرات الصوتية - .
4- أصوات الكائنات والعناصر اللي في اللعبة ( الشخصيات مثلاً ) .
*** الرسوميات :
المفروض ان قسم الرسوميات بيبقى مسؤول عن كامل رسومات وتصاميم اللعبة واللي بتضم :
1- واجهة المستخدم .
2- اخراج الرسوم والتصاميم .
3- تصميم الشخصيات أو كائنات اللعبة .
4- تصميم سياق أو قصة اللعبة .
5- رسم البيئة والمحيط اللي هتكون فيه اللعبة .
6- تصميم ال 3D .
7- الألوان والإكساء ( Texture ) الخاصة بكل عناصر اللعبة .
8- الحركة وال Animations والفيديو اللي ممكن يكون في اللعبة .
*** الإخراج :
المخرج المفروض ان هو مسؤول عن كل الناس اللي فاتت دي وعن توزيع التاسكات وعن تربيطها مع بعض ، المفروض انه بعد التصميم يبدأ يوزع ويربط بين البرمجة والرسوميات والاصوات بحيث ان مفيش حاجة تستنى حاجة تانية وكل الشغل يمشي في نفس الوقت ، كمان بيبقى مسؤول عن عمل محاكاة مستمرة للعبة علشان يتأكد ان هو ماشي ضمن التصميم اللي اتحط للعبة في الأول .
*** الاختبار :
المرحلة الأولى تجريب كامل لكل عناصر اللعبة من قبل المبرمجين ، والمرحلة التانية توزيع اللعبة على أكبر عدد من الناس علشان تجربها وتكتشف اخطائها أو حتى الأخطاء التصميمية اللي بتخليها اصعب في التعامل .
السوق :
الألعاب متعتبرش من الحاجات اللي ممكن تتسوق بسهولة وتجيب ربح إلا إذا كانت اللعبة جديدة في فكرتها وأسلوبها أو قوية جداً بحيث انها تغطي على اللي موجود في السوق اصلاً خصوصاً إن السوق مليان العاب في كل مجال يعتبر الوصول لمستواها في مشروع التخرج صعب جداً .
الأدوات اللي محتاجينها :
بالنسبة لتقنية الرسم
والحركة مفيش قدامنا غير حل من اتنين : OpenGL أو DirectX دول اللي ممكن نوصلهم بسهولة ، في غيرهم على فكرة بس ابقى قابلني لما تلاقي ليها تعليم بسهولة ، وطبعاً كل واحدة ليها مميزاتها ، ميزة ال DirectX هي زي أي ميزة حاجة تبع مايكروسوفت ، تكاملية عالية مع بعض فهتلاقي حاجات للرسم وحاجات للصوت وحاجات للتحكم وكلها مربوطة مع بعض بقدر أقل من المشاكل ، لكن عيبها الطبيعي انها مايكروسوفت يعني ممكن تلاقي حتة هبللولة في النص كده زي ما كلنا شوفنا في مشروع DirectX ، اما ال OpenGL ميزته انه بيشتغل على أكتر من سيستيم ، أقوى من ال Direct3d بس لأن مفيهاش بقية المكتبات ووصولها لكرت الشاشة أفضل من وصول ال DirectX .
لكن بالنسبة للغة البرمجة فهنلاقي قدامنا حاجات كتيرة ، ممكن تبقى أولاً Visual C++ زي ما عملنا المشروع اللي فات ، في Java كمان بس عيبها انها ابطأ شوية من Visual C++ .
في كمان Delphi ودي لغة قوية في الألعاب ومكتباتها Open Source زي الجافا وبتشتغل على أي نظام تشغيل واحسن من الجافا في موضوع الوصول لل low-level programming . عيبها هو ميزتها ، انها تعتبر لغة مش زي الجافا شغالة على VM وفي نفس الوقت مش زي ال .net وغيره شغالة على نظام تشغيل معين انما هي بتعمل كل حاجة فيها بنفسك بعيد عن نظام التشغيل وده بيخليها كبيرة أوي ، بتنزل منها نسخ كتير اوي بسبب انها بعيدة عن نظم التشغيل فسرعة تطويرها مش مرتبطة خالص بتطور نظم التشغيل وعادة ما بتتأخر عن تطور نظم التشغيل بوقت ، طبعاً انا قصدي Delphi العادية مش Delphi.net .
بالنسبة للرسم والتصميم
محتاجين برامج تصميم 3D زي الماكس والمايا وفي برامج مخصوصة لانتاج رسومات الألعاب بتختصر الوقت لأن فيها شخصيات جاهزة بس طبعاً بتحتاج تعديل ، محتاجين برامج اخراج فيديو اضافة لتصميم الفيديو سواء بالماكس أو ببرامج Adobe اللي بتتعامل مع ال 3D ونفس النظام برامج لإخراج الصوت .
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 ... الخ ، ويمكن استخدامها في نظم مقارنة أو نظم قراءة بصرية أو نظم تعرف أو نظم متابعة ... الخ .
خاتمة :
يمكن يكون في كلام مش مفهوم بسبب اللهجة ، أو بسبب ان الرسالة كانت موجهه للجروب وفي نقاط تمت مناقشتها قبل كده .
عموماً حبيت بس اشارككم بمجموعة من المجالات اللي ممكن الواحد يقدم فيها مشروع تخرج .
وهكون سعيد جداً لو واحد بدأ في مجال من هذه المجالات ووجد فكرة مناسبة وبدأ التطبيق .
طبعاً بعد كل هذه المحاولات تم اختيار مشروع يعتمد على مزيج من ال Hardware Controlling مع ال Image Processing وهي التي ربما لم تعطها هذه الرسالة حقها ، ولكن وجود الفكرة الجيدة هو الذي دفعنا إلى هذه التطبيق ، يمكنك مراجعة المشروع على هذا الرابط :
السلام عليكم ورحمة الله وبركاته .
هذه مجموعة من أفكار مجالات التخرج ، رسالة كنت قد أرسلتها قبل البدء بعمل مشروع التخرج هذه السنة ، توضح المجالات التي يمكن أن نفكر في مشروع تخرج من خلالها ، الرسالة في بعض أجزائها مكتوبة باللهجة المصرية ولكنها واضحة على أية حال .
وكما سيتضح من الموضوع فهذه ليست أفكار لمشاريع التخرج ، بل هي موجز لبعض علوم وتقنيات الكومبيوتر والتي يمكن تطبيق فكرة مشروع التخرج لتكون ضمن واحد من هذه المجالات .
افكار لمجالات مشروع التخرج .
المجموعة دي مش أفكار لمشروع التخرج ، دي مجرد رؤوس أقلام لحاجات ممكن تكون مشاريع تخرج ، وبالمرة نعرف ايه اللي احنا محتاجينه علشان دي تبقى مشاريع التخرج علشان لو حد عنده وقت ممكن يبحث فيها اكتر أو يتعلم اللغة أو التقنية المطلوبة للموضوع ده ، الكلام اللي انا كاتبه ده موجز لكتب ودروس قريتها في المجالات دي خلال المدة اللي فاتت وطبعاً مش هيكون كامل لان ده اللي قريته على السريع .
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 ومعرفتش اعمل الخطوة دي .
Game Programming
المراحل المطلوبة في برمجة الألعاب :
*** التصميم :
في المرحلة دي المقصود بالتصميم مش الرسم ، لا ده شكل اللعبة العام ، لازم علشان تبدأ أي لعبة لازم تكون الحاجات دي جاهزة عندك :
1- فكرة اللعبة .
2- ميكانيكا اللعبة .
3- تصميم المراحل والمهمات .
4- قصة اللعبة .
طبعاً الحاجات دي مش محتاجة أكتر من تفكير وتحليل لعناصر اللعبة .
*** البرمجة :
هي دي المرحلة اللي هتشكل قلب اللعبة حسب التصميم اللي اتعمل في الأول ، الحاجات دي لازم تتعمل من المبرمجين في اللعبة - طبعاً هما متقسمين اجزاء كتير بس هي دي تقريباً معظم العناصر اللي المفروض يحققوها - :
1- محرك اللعبة ال 3D .
2- محركات الرسوميات .
3- الشبكات ( لو في شبكات في اللعبة ) .
4- برمجة الجرافيك في اللعبة وده اللي هو المفروض مسؤول عن سير اللعبة وحركة الكائنات اللي فيها .
5- برمجة الذكاء الإصطناعي للعبة .
6- برمجة الأصوات .
7- برمجة قصة اللعبة والمراحل .
8- برمجة الأدوات المستخدمة في اللعبة ، ولو في Packages أو حاجات زي كده ( أسلحة - لعيبة كورة ) وكده .
*** الأصوات :
واضحة المطلوب الأصوات اللي مطلوبة علشان سياق اللعبة لكل حدث من الأحداث اللي المفروض انها تحصل ، وبتضم الحاجات دي :
1- المؤثرات الصوتية في اللعبة .
2- خلفية الصوت في اللعبة .
3- موسيقى اللعبة - معندناش الموضوع ده مش هنعمل موسيقى للعبة كفاية المؤثرات الصوتية - .
4- أصوات الكائنات والعناصر اللي في اللعبة ( الشخصيات مثلاً ) .
*** الرسوميات :
المفروض ان قسم الرسوميات بيبقى مسؤول عن كامل رسومات وتصاميم اللعبة واللي بتضم :
1- واجهة المستخدم .
2- اخراج الرسوم والتصاميم .
3- تصميم الشخصيات أو كائنات اللعبة .
4- تصميم سياق أو قصة اللعبة .
5- رسم البيئة والمحيط اللي هتكون فيه اللعبة .
6- تصميم ال 3D .
7- الألوان والإكساء ( Texture ) الخاصة بكل عناصر اللعبة .
8- الحركة وال Animations والفيديو اللي ممكن يكون في اللعبة .
*** الإخراج :
المخرج المفروض ان هو مسؤول عن كل الناس اللي فاتت دي وعن توزيع التاسكات وعن تربيطها مع بعض ، المفروض انه بعد التصميم يبدأ يوزع ويربط بين البرمجة والرسوميات والاصوات بحيث ان مفيش حاجة تستنى حاجة تانية وكل الشغل يمشي في نفس الوقت ، كمان بيبقى مسؤول عن عمل محاكاة مستمرة للعبة علشان يتأكد ان هو ماشي ضمن التصميم اللي اتحط للعبة في الأول .
*** الاختبار :
المرحلة الأولى تجريب كامل لكل عناصر اللعبة من قبل المبرمجين ، والمرحلة التانية توزيع اللعبة على أكبر عدد من الناس علشان تجربها وتكتشف اخطائها أو حتى الأخطاء التصميمية اللي بتخليها اصعب في التعامل .
السوق :
الألعاب متعتبرش من الحاجات اللي ممكن تتسوق بسهولة وتجيب ربح إلا إذا كانت اللعبة جديدة في فكرتها وأسلوبها أو قوية جداً بحيث انها تغطي على اللي موجود في السوق اصلاً خصوصاً إن السوق مليان العاب في كل مجال يعتبر الوصول لمستواها في مشروع التخرج صعب جداً .
الأدوات اللي محتاجينها :
بالنسبة لتقنية الرسم
والحركة مفيش قدامنا غير حل من اتنين : OpenGL أو DirectX دول اللي ممكن نوصلهم بسهولة ، في غيرهم على فكرة بس ابقى قابلني لما تلاقي ليها تعليم بسهولة ، وطبعاً كل واحدة ليها مميزاتها ، ميزة ال DirectX هي زي أي ميزة حاجة تبع مايكروسوفت ، تكاملية عالية مع بعض فهتلاقي حاجات للرسم وحاجات للصوت وحاجات للتحكم وكلها مربوطة مع بعض بقدر أقل من المشاكل ، لكن عيبها الطبيعي انها مايكروسوفت يعني ممكن تلاقي حتة هبللولة في النص كده زي ما كلنا شوفنا في مشروع DirectX ، اما ال OpenGL ميزته انه بيشتغل على أكتر من سيستيم ، أقوى من ال Direct3d بس لأن مفيهاش بقية المكتبات ووصولها لكرت الشاشة أفضل من وصول ال DirectX .
لكن بالنسبة للغة البرمجة فهنلاقي قدامنا حاجات كتيرة ، ممكن تبقى أولاً Visual C++ زي ما عملنا المشروع اللي فات ، في Java كمان بس عيبها انها ابطأ شوية من Visual C++ .
في كمان Delphi ودي لغة قوية في الألعاب ومكتباتها Open Source زي الجافا وبتشتغل على أي نظام تشغيل واحسن من الجافا في موضوع الوصول لل low-level programming . عيبها هو ميزتها ، انها تعتبر لغة مش زي الجافا شغالة على VM وفي نفس الوقت مش زي ال .net وغيره شغالة على نظام تشغيل معين انما هي بتعمل كل حاجة فيها بنفسك بعيد عن نظام التشغيل وده بيخليها كبيرة أوي ، بتنزل منها نسخ كتير اوي بسبب انها بعيدة عن نظم التشغيل فسرعة تطويرها مش مرتبطة خالص بتطور نظم التشغيل وعادة ما بتتأخر عن تطور نظم التشغيل بوقت ، طبعاً انا قصدي Delphi العادية مش Delphi.net .
بالنسبة للرسم والتصميم
محتاجين برامج تصميم 3D زي الماكس والمايا وفي برامج مخصوصة لانتاج رسومات الألعاب بتختصر الوقت لأن فيها شخصيات جاهزة بس طبعاً بتحتاج تعديل ، محتاجين برامج اخراج فيديو اضافة لتصميم الفيديو سواء بالماكس أو ببرامج Adobe اللي بتتعامل مع ال 3D ونفس النظام برامج لإخراج الصوت .
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 ... الخ ، ويمكن استخدامها في نظم مقارنة أو نظم قراءة بصرية أو نظم تعرف أو نظم متابعة ... الخ .
خاتمة :
يمكن يكون في كلام مش مفهوم بسبب اللهجة ، أو بسبب ان الرسالة كانت موجهه للجروب وفي نقاط تمت مناقشتها قبل كده .
عموماً حبيت بس اشارككم بمجموعة من المجالات اللي ممكن الواحد يقدم فيها مشروع تخرج .
وهكون سعيد جداً لو واحد بدأ في مجال من هذه المجالات ووجد فكرة مناسبة وبدأ التطبيق .
طبعاً بعد كل هذه المحاولات تم اختيار مشروع يعتمد على مزيج من ال Hardware Controlling مع ال Image Processing وهي التي ربما لم تعطها هذه الرسالة حقها ، ولكن وجود الفكرة الجيدة هو الذي دفعنا إلى هذه التطبيق ، يمكنك مراجعة المشروع على هذا الرابط :
- الحصول على الرابط
- بريد إلكتروني
- التطبيقات الأخرى
تعليقات