المقالاتمقالات عامة

أفكار لبرامج صغيرة للمبرمجين

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

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

برنامج لتحميل فيديوهات اليوتيوب

هناك الكثير من الدورات التعليمية على اليوتيوب وقد تريد حفظها لكي تحضرها لاحقاً، الفكرة بعمل برنامج يأخذ الرابط لقناه معينة ويقوم بتحميل كل ال Playlist مع توفر خاصية تحويل الفيديو الى صيغ اخرى مثلاً لل IPhone أو xVid حتى يكون اكثر فائده

مثال لبرنامج مشابه:

youtubedownload
رابط البرنامج: http://download.cnet.com/YTD-Video-Downloader/3000-2071_4-10647340.html
المستوى: متوسط ، أي شخص تعلم اساسيات الملفات وعمل واجهات المستخدم والتعامل مع الشبكة Network Programming والتعامل مع أكثر من Threads.

الفكرة بواسطة: https://twitter.com/mmot33

برنامج لاستخراج ومسح المحفوظات من متصفحات الانترنت

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

مثال لبرنامج مشابه:

firefox
رابط البرنامج: http://www.nirsoft.net/utils/mozilla_history_view.html
المستوى: سهل لمتوسط ، أي شخص تعلم اساسيات الملفات وعمل واجهات المستخدم والتعامل مع قواعد البيانات SQLite

مراجع مفيدة :

مقدمة في تحليل جرائم الانترنت Internet Forensics

برنامج ايجاد نوع ال Encoding في الملف النصي

أي ملف نصي Text File يكون لديه ترميز معين حتى يمكن للمحرر عرضه بالشكل الصحيح، فالملفات التي تستخدم ترميز  ال Unicode في الغالب لديها علامه غير مرئية في أول الملف تسمى BOM توضح لك ما هيه هذه الملف ، الأن فكرة البرنامج كلها عن طريق قرائه ال BOM وهي تكون أول 2 الى 4 بايتات ومن ثم يمكنك التعرف على نوع ال Encoding المطلوب.

مثال لبرنامج مشابه:

File_BOM_Detector
رابط البرنامج: http://www.bryntyounce.com/filebomdetector.htm
الفائدة منه: سوف تتعلم كيفية القرائه والكتابه من الملفات في لغة البرمجة ، وسوف تتعلم طرق الترميز المعروفة ومالفرق بين UTF-8 و UTF-16 والخ  وسوف تتعلم ما هيه ال BOM.

المستوى: سهل لمتوسط ، أي شخص تعلم دوال I/O والقرائه من الملفات مع عمل واجهات المستخدم GUI يستطيع عمله، اذا كنت مبرمج جديد مثلاً تستخدم لغه السي++ ولا تعرف كيف يمكن عمل الواجهات فيمكنك عمله Console Application على الشاشه السوداء.

مراجع مفيدة لكي تتعلم اساسيات ال Encoding:

أساسيات لا بد لأي مبرمج معرفتها (ال Encoding)

برنامج تعديل الصور المقلوبة Image Rotation

كثير من الأحيان بعد أن تلتقط الصور من جوالك وقمت بنقلها الى جهازك سوف تجدها مقلوبة ، وتحتاج الى فتح محرر الصور في ويندوز وقتوم بقلبها يدوياً (هذا ما حصل لي بعد التقاطي صور من ايفون وجالاكسي ومشاهدتها على ويندوز 7) المشكلة تكون في حال كان لديك صور كثيرة 3000 صورة مثلاً) والمشكلة الأخرى أن مستعرض الصور في ويندوز يقوم بمسح بعض المعلومات المهمه في الصورة metadata عندما تقوم بعمل التدوير Image Rotation.

المطلوب: برنامج يقوم بتعديل الصور Image Rotation الموجودة في المجلد المحدد بدون تقليل جودة الصورة (لأن الصور JPEG عندما يحصل لها تدوير فهذا يقلل من جودتها، جرب أن تقوم بفتح صورة وقم بتدويرها مرات كثيرة وسوف تكتشف بأن الجودة قلت). هناك طرق متقدمة في تعديل الصورة بدون الاخلال بحجمها لكننا سوف نبدأ بالأسهل وهي عن طريق استخدام مكتبة جاهزة أو Command Line نستدعيها من برنامجك.

مثال على برنامج:

jpeglossless3
الفائدة من المشروع: سوف تتعلم امور كثيرة بخصوص الصورة والتعامل معها والهيدر Exif، سوف تتعلم كيف تقوم بعمل برنامج يتعامل مع I/O وقرائه الصور ، سوف تتعلم كيف تستدعي Command Line من برنامجك تقوم بعملية ما (سوف نستدعي مكتبة تسمى jpegtran تقوم بالعملية) هذه المكتبة تستخدم من قبل أكثر من 84 برنامج وبرنامجك ان شاء الله سوف يكون من ضمنهم) النسخ التالية من المشروع هي البدء بالعملية من الصفر اذا اراد المبرمج ان يتعلم اكثر عن الصورة والعمل عليها. ايضاً اذا قمت بدعم ال Right Click مثل الصورة التي فوق سوف تتعلم بعض الامور عن ال Shell Extensions في الWindows وكيف تضع برامجك على هذه الخانه Right Click Menu

المستوى: متوسط

المشاركة: يمكنك البدء من الصفر لو أحببت ، لكني في السابق قمت بعمل واجهه لذلك واستخدمت الcommand line  ويحتاج كثير من  التحسينات واضافة Thread مع Progress bar لدلاله على ان العمل ما زال في الخلفية (المشروع هنا مفتوح المصدر برنامج مدور بسي++ مع Qt ، وهذه صورة منه):

modawer

برنامج حمايه الصور Image Protection

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

مثال برنامج مشابه:

PhotoCrypt_1
الرابط: http://www.softpedia.com/get/Security/Encrypting/PhotoCrypt.shtml
الفائده من المشروع: سوف تتعلم قرائه الملفات I/O ، والتشفير المتناظر Symmetric Encryption وتقوم بتشفير الصورة بالمفتاح (الرقم السري) وفك تشفيرها ايضاً.

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

المستوى: سهل لمتوسط

برنامج ايقاف الشبكات الاجتماعية

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

مثال:

antisocial_windows2
رابط المشروع:  http://anti-social.cc/
الفائدة من المشروع: سوف تتعلم كيفية الدخول والتحكم في مجرى البيانات الداخلة والخارجة من جهازك ، سوف تتعلم اساسيات ال DLL وكيف تقوم بعملها، وسوف تتعلم اساسيات في برمجة الWindows.

مستوى المشروع: متوسط

برنامج حذف الملفات المكررة

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

مثال:

howtoduplicatecleanerwin
الرابط: http://www.digitalvolcano.co.uk/duplicatecleaner.html
الفائده من المشروع: تعلم التعامل مع الملفات I/O، كيف تحسب ال Hash للملفات ، وكيف تقوم بعمل Traversal على الملفات الموجودة في المجلد  (دعم البحث داخل المجلدات الفرعية Nested Sub-folder) ، وكيف تقوم بعمل Thread مع Progress bar حتى يتم الانتهاء من الحذف.

المستوى: سهل لمتوسط

برنامج المتحكم في الكاميرا

كم مرة اشتريت لابتوب جديد وقمت بالصاق شريط على الكاميرا الموجودة فيه، الآن سوف تحافظ على منظر لابتوبك وتتحكم في الويب كام كيفما تريد

مثال:

image001
الرابط: http://www.mywebcamlock.com/
الفائده من المشروع: يمكن ان يكون تجارياً وتكسب منه، سوف تتعلم امور متقدمة في الويندوز وكتابه Drivers يعمل على مستوى الكيرنل حتى تتحكم جيداً بالجهاز (في السابق قمت بعمل شيء ممثال عن طريق ال Hooking ولكنه كان Alerting وليس تحكم فيه).

المستوى: متقدم

برنامج كسر الملفات المضغوطة

كثيراً ما يكون لديك ملفات مضغوطة برقم سري ولكنك نسيت ذلك الرقم، فيمكن استخدام البرنامج وبالاستفاده من قدرات جهازك بمحاولة لكسر هذا الرقم السري

مثال:

zippasswordunlocker_mainscreen
الرابط: http://securityxploded.com/zip-password-unlocker.php
الفائده من المشروع: سوف تتعلم كيفية الاستفاده من ال Cores في جهازك في محاولة تخمين الكلمة، سوف تتعلم عن المصطلحات المعروفة في أمن المعلومات مثل Brute Force Attach و Dictionary Attack وكيف تقوم بهذه الهجمات ، سوف تقوم بعمل خوارزمية لتوليد النصوص والارقام بعدة لغات.

المستوى: متوسط

وفقة حول برامج موقع Security Exploded

الموقع http://securityxploded.com فيه كمية جيدة من البرامج الخاصة بالحماية Security والتي يمكنك عملها لو أردت انظر لقائمة البرامج لديهم وهي في ال Password Cracking و ال Network Security وايضا بعضها في حمايه الSystem، هي برامج اغلبها سهله ويمكنك القيام بها خصوصاً لو تعلمت أساسيات البرمجة في ويندوز ستجد أنك تستطيع ان شاء الله برمجه أغلب القائمة الموجودة وعمل برامج مماثله بالعربي. فيمكنك ان تستقى الأفكار والبدء بعمل مشاريعك بلغتك واستهداف الشريحة التي ترغب بها.

برنامج وضع معلومات الجهاز على سطح المكتب

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

مثال (للمبرمج الخبير مارك، أحد أفضل مبرمجي الويندوز على الاطلاق، صاحب ادوات SysInternal):

bb897557.BgInfo(en-us,MSDN.10)
الرابط: http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx
الفائده من المشروع: سوف تتعلم كيف تفتح صورة وتكتب فوقها وتضعها كخلفية على سطح المكتب، أو يمكنك عمل برنامج يعمل في الخلفية وتقوم بعمل نافذه بدون اطار شفافه وتكتب فيها المعلومات حتى تتحدث من فترة لأخرى على حسب المعلومات التي تود اخراجها، ايضاً ستتعلم كيفية الحصول على المعلومات مثلاً اسم الجهاز، عنوان الايبي، المعالج والذاكرة والخ من المعلومات.

المستوى: متوسط

حذف الأكواد الخبيثة من صفحات موقعك

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

مثال: http://www.maliciouscodecleaner.com/
الفائدة من المشروع: تعلم كيفية البحث عن نص داخل ملف، وحذف جزئية معينة من الملف، والبحث Iterations في الملفات داخل مجلد معين.

المستوى: سهل

برنامج حفظ كلمات المرور

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

مثال:

Add-400x284
الرابط: http://www.thewindowsclub.com/passbox-download
الفائده من المشروع: سوف تتعلم عمل قاعدة بيانات صغيرة مشفرة أو ملف مشفر بخوارزميات التشفير مع واجهه مستخدم جميلة.

المستوى : سهل

خاتمة

  • القائمة سوف تتحدث باستمرار
  • القائمة خاصه بتطبيقات سطح المكتب وسيتم عمل موضوع اخر لتطبيقات الويب والموبايل ان شاء الله
  • القائمة مناسبة للمتعلمين او من يودوا العمل على مشكله ما
  • يمكنك تطبيق اي من هذه المشاريع باللغه التي تود ، و تذكر أن حل المشكلة بتطبيق هو اهم من اختيار اللغه بدون حل لمشكلة
  • يمكنك الرد في هذا البوست واضافة افكار اخرى تراها مناسبة لاثراء الموضوع