You are currently browsing the category archive for the 'برنامه های مفید' category.
تا به حال این جور عبارتا به گوشتون خورده؟
DVCS
software revision control
Distributed Version Control
Revision control
خوب ممکنه به گوشتون نخورده باشه. اما احتمالا این اسم ها باید به گوشتون آشنا باشه:
Monotone
Git
Bazaar
Subversion
BitKeeper
CVS
خب پس فهمیدید قراره امروز در موردی چی حرف بزنم. برنامه هایی که چار چشمی کدهای شما رو زیر نظر میگیرن و تمام تغییرات رو ثبت میکنن. این کار خوبی های زیادی داره مخصوصا برای کار توی پروژه های بزرگ و از اون مهم تر پروژه های اوپن سورس. یکی از ویژگی هایی که من خیلی در مورد این برنامه ها دوست دارم اینه که اگه یه وقت گند بزنید به کدهاتون خیالتون راحته که میتونید برگردید به چند مرحله قبل تر وگند خودتون رو اصلاح کنید (فهمیدید چرا این ویژگی رو دوست دارم؟) احتمالا اصلی ترین ویژگی ایی که بقیه برنامه نویس ها دوسش دارن راحتیه کار تیمی روی کدهای یه برنامست. خب این یعنی چی؟ این که دیگه پرسیدن نداره. فکر میکنید چجوری 100 نفر روی یه برنامه کار میکنن هیچ وقت هم کدها قرو قاطی نمیشه؟
قبل از اینکه باز شروع کنم به وراجی کردن این بار هم خواهش میکنم یکی یه ترجمه مناسب در مورد “Revision control” یا “Distributed revision control” ارایه بده چون خسته شدم از اینکه وقتی میخوام در مورد این جور برنامه ها صحبت کنم باید اسم خارجکی شون رو به طور کامل تلفظ کنم.
من خودم از Bazaar خوشم میاد و واسه برنامه هام استفاده میکنم. میدونید چرا؟ چون با پایتون نوشته شده, پس من بهتر می فهممش و مثل بقیه برنامه های پایتون ساختار ساده ولی پرقدرتی داره. حالا یه جوری فکر نکنید که الآن من دارم در هفته روی 10-12 تا برنامه کار میکنم و زندگیم داره با برنامه نویسی میچرخه نه بابا از این خبر ها نیست. من خودم کار و زندگی و درس و دانشگاه و کلی کاره دیگه دارم اما گاهی اوقات کسایی که منو میشناسن بهم پیشنهاد میدن منم کارشون رو قبول میکنم. (نه, پروژه دانشگاهی قبول نکردم تاحالا!)
حالا از این حرف ها بگذریم. می خوام به لیست برنامه های بالا اسمی رو اضافه کنم که خیلی ها هنوز باهاش آشنا نیستن. تا چند وقته پیش منم جزو همون خیلی ها بودم. اگه اونقدر خنگید که از عنوان پست نفهمیدید اسم برنامه چیه مجبورم اینجا تکرارش کنم: Mercurial
حالا چرا Mercurial؟ اولین دلیل: بگم اولین دلیل چیه یا خودتون متوجه شدید؟ خب فکر کنم متوجه شدید. آره چون با پایتون نوشته شده. دلیل بعدی: این لعنتی جدا کارش درسته. یعنی حاج آقامون متخصصه بکار گرفته شدن تو پروژه های گندست. و از اون جایی که ذهن یه برنامه نویس پایتون پشتش بوده پس به صورت پایتونیک نوشته شده یعنی ساده, تمیز, پرقدرت و از همه مهمتر جالب و لذت بخشه! این زیر یه سری از پروژه های معروفی که از Mercurial استفاده میکنن رو واستون قرار دادم :
IcedTea
medit
LinuxTV
MoinMoin
Mozilla
NetBeans
Nuxeo
OpenJDK
OpenOffice
OpenSolaris
Pida
Pylons
Python Programming language
rpm.org
SymPy
Symbian Platform
Wget
Xen
حالا اگه برنامه ایی نوشتین که خواستید با بقیه توش شریک بشید باید بهتون مژده بدم که سایت های زیر از Mercurial پشتیبانی میکنن:
SourceForge.net
Savannah
Mozdev
Google Code
BerliOS Developer
…..
خوب میبینم که با دیدن اسم های بالا ترغیب شدید که یه نیگاه بندازید به Mercurial مگه نه؟ Mercurial کلی ویژگی دیگه داره که من جدا حال ندارم همشو توضیح بدم برید خودتون تو سایتش ببینید دیگه.
نکته ی اخلاقی:
یه چند تا اسم بود که فکر کنم فکر شمارو مشغول کرد مثل NetBeans و OpenJDK
ذهن من هم کمی مشغول شد. که حتی سان ماکروسیستم (بابای جاوا) هم داره از Mercurial استفاده میکنه. اتفاقا این یه کار کاملا حرفه ایی از طرف یه شرکت کاملا حرفه ایی هستش. اگه بر نامه ایی واقعا خوب بود, باید بدون تعصب ازش بهره برد. برای خیلی از ماها مهمه که برنامه با جاوا نوشته شده باشه یا با سی شارپ. با دلفی نوشتنش یا با وی بی. با پایتون نوشتنش یا با روبی. از QT استفاده میکنه یا GTK یا هر جور فکر مزخرف دیگه.
پس مهم نیست یه برنامه از چه زبان یا چه ابزاری استفاده میکنه, مهم اینه که با کیفیت و مرغوب باشه. به قول یکی از بچه ها هر چیزی خوبش, خوبه!
تقریبا همه شماها فرمت محبوب OGG رو می شناسید.یه فرمت کاملا آزاد. اکثرا فکر میکنن ogg یک فرمت مخصوص صدا هستش در صورتی که اینطور نیست. ogg فقط یه قالبه صوتی/تصویریه که میتونه هم صوت و هم تصویر رو تو خودش جا بده. یه چیزی مثل قالب avi
به حالت معمول در قالب ogg, صوت توسط کدک Vorbis و تصویر توسط کدک Theora پردازش میشه. اگه تا الآن شما هم آهنگی رو شندید که فرمت .ogg داشت یعنی در حال استفاده از کدک vorbis بودید. جدیدا با اضافه شدن تگ مخصوص تصاویر ویدیویی در HTML5 شایعه هایی شنیده میشه که قراره Theora به خاطر محبوب بودن فرمت ogg و همچنین به خاطر آزاد و اپن سورس بودن خودش, تبدیل بشه به فرمتی که اکثر مرورگر ها بتونن به صورت درونی اون رو اجرا کنن یعنی دیگه لازم نباشه برای دیدن کلیپ های وب, فلش پلیر یا چیزی شبیه اون رو نصب کنین.
کدک Theora در واقع رقیبی برای کدک های Divx و Xvid هست و کیفیتش هم در همین حد قرار داره. بر عکس کدک Vorbis که تقریبا همه قبول دارن که MP3 رو تو جیبش میزاره, کدک Theora به عنوان یه تازه کار به حساب میاد. علاوه بر اینکه به گفته ی سازندگانش هنوز جا برای پیشرفت داره, تبدیل کردن کلیپ های مختلف به این کدک زمان بیشتری نسبت به کدکی مثل Xvid میبره. بنابراین Theora شاید بهترین کدکی نباشه که شما انتخاب میکنید اما مزیت های خودش رو هم داره. از طرفی چون یک کدک آزاد هستش میتونه خیلی سریع مثله بقیه نرم افزار های آزاد پیشرفت کنه.
به هر حال من فقط اینا رو گفتم که اگه کسی با این کدک آشنا نبود آشنا بشه. و در آخرش هم افزونه ایی رو برای فایرفاکس معرفی کنم که با نصب اون میتونید به راحتی کلیپ های خودتون رو به این کدک تبیل کنید. فایرفاکس تا اونجا که من خبر دارم اولین مرورگری بود که تگ <video> رو پیاده سازی کرد و برای استفاده از این تگ فرمت ogg و کدک Theora رو در خودش پیاده سازی کرد. اگه از فایرفاکس 3.5 استفاده میکنید از این قابلیت بهره مند هستید. میتونید برید و افزونه ی Firefogg رو از سایت خودش دانلود کنید. بعد از نصب افزونه دوباره به همین سایت برید و روی لینک Make OGG Viddeo کلیک کنید تا بتونید توسط یه اینترفیس ساده کلیپ های خودتون رو به OGG/Theora تبدیل کنید. خوشبختانه خیلی از نرم افزار های پخش فایل های مالتی مدیا در کامپیوتر میتونن OGG/Vorbis و OGG/Theora رو پخش کنن نمونش می تونه VLC یا MPlayer باشه. میتونید فیلترهای مخصوص این کدک ها رو هم برای استفاده در مدیا پلیر ویندوز نصب کنید.
در حال حاظر Adobe AIR چیز نا آشنایی به حساب نمیاد و مدتیه که به عرصه وارد شده. اما خیلی ها هستن که یا این تکنولوژی اصلا براشون جالب نیست, و یا اینکه هنوز مفهوم اصلی این تکنولوژی رودرک نکردن. و از اونجایی که محتوای وب فارسی هنوز مطالب زیادی در مورد این تکنولوژی ارایه نداده خیلی از برنامه نویس ها هم زحمت یه همچین کاری رو به خودشون نمیدن.
مقداری محتوای فارسی در این زمینه وجود داره که به جز تعداد معدودی, باید با اجازتون عرض کنم همشون **شر هستن و جز گمراه کردن خواننده کمک دیگه ایی بهش نمی کنن. واسه همین تصمیم گرفتم Adobe AIR رو با یه زبون ساده و قابل فهم برای کسایی که تا الآن زیاد با این تکنولوژی آشنایی پیدا نکردن توضیح بدم.
قضیه این جور شروع میشه:
در قدیم وب بیشتر برای تولید محتوا در شبکه ی جهانی اینترنت به کار میرفت. اما با گذشت زمان و اومدن راه حل های جدیدی مثل AJAX این فرصت به وجود اومد تا برنامه نویس ها قادر باشن برنامه های کاربردی خودشون رو روی وب پیاده سازی کنن که کاربر موقع کار با این برنامه ها فرق خاصی با برنامه های کاربردی دسکتاپ حس نمی کنه. نیازی به توضیح در مورد فواید پیاده سازی برنامه های کاربری روی وب نیست و در این مورد بحث به اندازه کافی صورت گرفته.
– حالا اگه من یه برنامه نویس دسکتاپ باشم, و خواهان این باشم که برنامه ی کاربردی ایی که برای دسکتاپ نوشتم, روی اینترنت هم پیاده سازی بشه باید چی کار کنم؟
– یا برعکس, اگه من یه برنامه نویس وب باشم و بخوام برنامه ی مبتنی بر وب خودم روی دسکتاپ هم ارایه بدم چه جوری باید این کارو بکنم؟
جواب این دوتا سوال در قدیم میشد یه چیزی شبیه این:
1.
– اول یه زبان جدید که قابلیت برنامه نویسی برای وب رو داشته باشه یاد بگیر
– بعد سعی کن برنامه نویسی و طراحی وب رو یاد بگیری که خودش هم شامل HTML, جاوا اسکریپت و…. میشه.
– کل برنامه رو با استفاده از زبان تازه ایی که یاد گرفتی از پایه کد نویسی کن ( که مسلما باعث تغییر در نقاط مختلف برنامه میشه.
2.
– اول یه زبان برنامه نویسی که قابلیت برنامه نویسی برای دسکتاپ رو داشته باشه یاد بگیر.
– حالا برای ساخت GUI برنامه ات باید یکی از تولکیت های ساخت GUI مثل +GTK و QT رو هم یاد بگیری.
– برنامه ی وب خودت رو از پایه با مقدار زیادی تغیرات بر مبنای این زبان و تولکیت جدید کدنویسی کن.
کاری که AIR انجام میده باعث میشه شما بدون دردسر برنامه هایی بنویسید که هم به صورت آنلاین در وب, و هم به صورت آفلاین مثل یک برنامه ی دسکتاپ عادی اجرا بشن! جالبه نه؟
جالب تر میشه اگه بدونید برنامه ایی که مینویسید علاوه بر توضیح بالا, میتونه روی سیستم عامل های پراستفاده و تمام مرورگر های معروف اجرا بشه؟ لازم نیست بگی, خودم فهمیدم که این یکی هم جالب بوده!
حالا AIR چطوری قادره همچین چیزی رو عملی کنه؟ AIR سعی کرده فریم ورکی ایجاد کنه که اگه شما بر مبنای اون برنامه خودتون رو توسعه بدین, می تونین چه به صورت آنلاین و چه به صورت آفلاین برنامه خودتون رو تحت نظر این فریم ورک اجرا کنید. روش کار هم به این شکله:
شما جوری تحت فریم ورک AIR برنامه نویسی میکنید که انگار مشغول برنامه نویسی برای ساخت یک برنامه کاربردی تحت وب هستید. مسلما اگه با این روش برنامه نویسی کنید برنامه شما تحت مرورگرهای اینترنتی اجرا میشن. این از جنبه ی آنلاین برنامه…… اما این برنامه که نمی تونه به صورت آفلاین در دسکتاپ و بدون وجود مرورگر, مثل برنامه های عادی دسکتاپ اجرا بشه؟ میتونه؟ جواب به حالت عادی اینه: نه…. اما AIR برای انجام همچین کاری از موتور رندرینگ WebKIT استفاده میکنه که موتور رندرینگ مرورگر Safari هم هستش. پس برنامه های آفلاین شما هم به صورت غیر مستقیم دارن تحت یه مرورگر پنهان جوری اجرا میشن که شبیه برنامه های عادی دسکتاپ به نظر بیان. به این صورته که فریم ورک AIR محصولی رو ارائه میکنه که میتونه کاملا شبیه برنامه های دسکتاپ اجرا بشه و در وضعیت آنلاین هم هنگام مشاهده در یک مرورگر مشکلی در اجرا نداشته باشه. در واقع برنامه ی شما به حالت آنلاین نیازی به فریم ورک AIR نداره چون به حالت عادی مخصوص وب ساخته شده اما در حالت آفلاین به فریم ورک AIR احتیاج پیدا میکنه تا بتونه برنامه ی مورد نظر رو در دسکتاپ شما بدون نیاز به مرورگر اجرا کنه.
هدف فریم ورک AIR ساخت برنامه هایی است که بتونن مستقل از سیستم عامل, تحت هر مرورگر وب, و در هر دو حالت آنلاین و آفلاین بدون کوچک ترین تغییری (یا تغییرات اندکی) براحتی اجرا بشن.
فریم ورک AIR به اون صورتی که چیزی مثل JAVA یا NET. برنامه شما رو محدود به فریم ورک میکنن, باعث محدودیت اجرایی برنامه ی شما نمیشه. در واقع میشه این برداشت رو کرد که فریم ورک AIR بیشتر از اینکه به ساخت برنامه ی شما کمک کنه, به اجرای برنامه ی شما کمک میکنه. با توضیخاتی که در زیر میدم بیتشر متوجه این مطلب میشین.
برای استفاده از فریم ورک AIR برنامه های شما میتونن به سه روش نوشته بشن:
1- استفاده از Flash
– شما GUI برنامه رو با استفاده از فلش طراحی میکنید.
– با استفاده از زبان اکشن اسکریپت که زبان عادی برنامه فلش هست, از این GUI استفاده میکنید و برنامه خودتون رو مینویسید.
– تحت وب, اگر کاربر فلش پلیر رو نصب کرده باشه میتونه مثل هر فایل فلش دیگه ایی برنامه شما رو در مرورگر خودش اجرا کنه.
– تحت دسکتاپ, اگر کاربر AIR رو روی دستگاهش نصب کرده باشه میتونه برنامه فلش شما رو جوری اجرا کنه که شبیه یه برنامه عادی دسکتاپ به نظر برسه. (WebKIT در پشت صحنه حکم همان مرورگر شما رو داره).
2. استفاده از HTML و جاوا اسکریپت
– شما GUI برنامه ی خودتون رو با استفاده از HTML , جاوا اسکریپت و AJAX مانند ساخت یک برنامه عادی وب ایجاد میکنید.
– با استفاده از زبان جاوا اسکریپ از این GUI استفاده میکنید.
– به غیر از جاوا اسکریپت, می تونید مثل تمام برنامه های تحت وب که کدهای اصلی خودشون رو در زبان هایی دیگه ایی مثل پایتون یا PHP می نویسن, شما هم کدهای کاربردی برنامه رو به جای جاوا اسکریپ در چیزی مثل پایتون یا جاوا یا …. بنویسید که در این صورت GUI برنامه با HTML و جاوا اسکریپ خواهد بود و کدهای اصلی با چیزی شبیه پایتون نوشته میشن.
– تحت وب, کاربر به صرف داشتن یک مرورگر اینترنتی روی دستگاه خودش ( و خب مسلما تنظیماتی که هر برنامه وب بهش نیاز داره مثل عملیات مربوط به وب سرور و غیره که در حیطه کار برنامه نویس محسوب میشن نه کاربر, و باید توسط برنامه نویس انجام گرفته باشه) میتونه از برنامه شما استفاده کنه.
– تحت دسکتاپ, کاربر در صورت نصب بودن AIR رو دستگاه خودش میتونه از برنامه شما مانند یک برنامه ی عادی دسکتاپ استفاده کنه. از اونجایی که در این مرحله WebKIT وارد عمل میشه پس برنامه شما عملا تحت یک مرورگر مخفی اجرا میشه. این یعنی میتونید در برنامه دسکتاپ خودتون از جاوا اسکریپت, AJAX یا هر چیز دیگه ایی که موقع ساخت یه برنامه وب به مغزتون خطور میکنه استفاده کنید.
فکر کن که می خوای یه برنامه پایتون بنویسی, ولی جای استفاده از +GTK یا QT میتونی از HTML یا جاوا اسکریپت که هم خیلی راحت ترن و هم خیلی چیز های زیبا تری میشه باهاشون ایجاد کرد, برای ساخت GUI برنامه خودت استفاده کنی. اوففففففف فکر کن بتونی همه ی اون افکت های جاوا اسکریت و داشته باشی یا از همه ی فریم ورک های AJAX با اون همه امکاناتشون استفاده کنی… چی میشششششششه پسسسسررر!!!!
3. استفاده از Flex
قبل توضیح در مورد این شیوه بذارید یه توضیح در مورد خود flex بهتون بدم. ببینید خیلی از ماها دوست داریم که GUI برنامه هامون مثل برنامه های فلش خوشگل موشگل باشن. اما چن درصد ماها در اون سطح با فلش آشنایی داره یا بهتر بگم چند درصد از ماها برای یه برنامه میرن کلی وقت میزارن تا فلش یاد بگیرن؟ حلا دردسر ارتباط برقرار کردن با GUI ایی که با فلش ساختی و زبان برنامه نویسی مورد علاقت دیگه بماند چون به حالت عادی وقتی با فلش کار میکنی باید برای برنامه نویسی اون از اکشن اسکریپت استفاده کنی.
حالا flex چه کاری در این زمینه کرده؟ شما با استفاده از flex میتونی برنامه های مبتنی بر فلش تولید کنید بدون اینکه نیاز باشه تمام اجزای GUI خودتون مثل دکمه یا فیلد های متنی رو با استفاده از فلش و به صورت دستی بسازید. (هر چند که البته دکمه و فیلد متنی در فلش به صورت آماده هست ولی منظورم کامپوننت های پیشرفته تر از اون ها بود و این دوتا رو فقط برای مثال گفتم.)
Flex اومده مقداری زیادی از این کامپننت ها و افکت هارو به صورت پیش ساخته در خودش جمع کرده. بعد یه زبان مبتنی بر “تگ” مثل HTML ارایه کرده به اسم MXML (که یادگیریش هم خیلی آسونه وهم شباهت زیادی به خود HTML داره) شما با استفاده از این زبان می تونید GUI برنامه خودتون رو ایجاد کنید. مثلا تگ مربوط به “دکمه” رو با بقیه جزییاتی که برای شکل و قیافه دکمه مد نظرتونه بنویسید و یه “دکمه” با مشخصاتی که خواسته بودید ایجاد خواهد شد با این تفاوت که دکمه ی ایجاد شده یه آبجکت فلش هستش نه یه دکمه ی بی ریخت و معمولی!
با ترکیب کردن اکشن اسکریپت و MXML شما می تونید برنامه های خودتون رو با فرم کلی زیر بنویسید:
– GUI شما توسط MXML و به صورت آبجکت های فلش ایجاد خواهد شد.
– با استفاده از اکشن اسکریپت از این GUI استفاده میکنید.
– به حالت حرفه ایی تر میتونید به جای اکشن اسکریپت از زبان های دیگه مثل پایتون هم استفاده کنید. در این صورت برنامه ایی خواهید داشت که GUI اون با فلش ساخته شده اما کدهاش با پایتون یا هر زبان دیگه ایی نوشته شده (نه دقیقا هر زبان دیگه ایی! گفتم که این قسمت یه کم حرفه ایی میشه که خب مقاله ی ما قرار نیست زیاد حرفه ایی باشه)
– تحت وب, برنامه شما در صورت استفاده از اکشن اسکریپت مثل هر برنامه فلش دیگه ایی با در نظر گرفتن نصب بودن برنامه فلش پلیر می تونه در مرورگر شما به راحتی اجرا بشه.
– تحت دسکتاپ هم با استفاده از AIR برنامه شما مثل برنامه های عادی دسکتاپ اجرا میشه.
خوب از حق نگذریم چیز جالبیه این Adobe AIR و باید بگیم که فکر استفاده از یه مرورگر پنهان برای اجرای برنامه های تحت وب در دسکتاپ کار زیرکانه ایی بود که البته قبل از AIR هم وجود داشت. ماکروسافت هم چیزی شبیه AIR ساخته که من حتی اصلا زحمت تحقیق در مورد اونرو هم به خودم نمی دم. Flex و اجزای زیاید از فریم ورک AIR اوپن سورس هستن و همین منو به استفاده از این تکنولوژی بیشتر ترعیب میکنه. Adobe تا مدتی دیگه انتشار پایدار AIR برای لینوکس رو هم کامل میکنه ( هر چند که به هر حال همه میدونن تمام محصولات Adobe در وحله ی اول باید با MAC هماهنگ بشن)
خودم خیلی ترغیب شدم که حالا هر برنامه ایی که شد رو با استفاده از AIR و پایتون ( و کمک از روش دوم یعنی ساخت GUI با HTML و جاوا اسکریپت) بنویسم. خواهشن هم واسه پز دادن نپرین وسط بگین که فلان چیز رو گفتی یا فلان چیز رو نگفتی خودم بهتر میدونم در مورد چه جیزهایی توضیح دادم و در مودر کدوم هاشون توضیح ندادم. قرار بود این مقاله ساده باشه نه یه مقاله ی حرفه ایی که 80 درصد خواننده ها رو سردرگم کنه.
لینک دادن به منبع نوشته هم زوری نیست ولی اگه حال داشته موقع کپی این مطلب یه لینکی هم به من بدی بد نیست…
وقتی یه چیزی رو دوست داری و فکر میکنی برات مفیده، شاید بد نباشه که اون رو به دیگران هم معرفی کنی تا شاید مورد استفاده ی بقیه هم قرار بگیره. مخصوصا اگه اون چیز به صورت آزادانه و کاملا مجانی بهت داده شده باشه، معرفی اون به بقیه یه نوع تشکر از سازنده ی اون هم به حساب میاد. من تو وبلاگم قسمتی رو با عنوان “لوگوها” در نظر گرفتم که تا چیزهایی رو که خیلی برام مفید بودن رو به بقیه هم معرفی کنم. امروز می خواستم Python و Django رو هم به این قسمت اضافه کنم اما لوگوهای آماده ای که تو سایتشون بود زیاد توجه منو جلب نکرد واسه همین هم تصمیم گرفتم اونا رو یه کم تغییر بدم تا اون چیزی بشن که من می خوام و نتیجه اش رو هم دارید اون بغل می بینید. الآن هم فایل svg این دو تا رو که با inkscape روشون کار شده واستون میذارم. من زیاد سلیقه ندارم و علاقه ی زیادی هم به برنامه های گرافیکی ندارم ( به خاطر نداشتن سلیقه و ذوق هنری ) واسه همین اینا رو میذارم تا اگه کسی تونست چیز بهتر و قشنگتری بسازه من هم در جریان بگذاره





