شنبه، آذر ۲۱، ۱۳۸۸

و روزی که من Seam یاد گرفتم...

امروز دومین روزی است که دارم کتاب Seam in Action یا به قول دوستان سیمین اکشن را می خوانم. قبلا هیچ گاه بیشتر از دیدن چند برنامه نمونه و تجربه قبلی JSF به درون Seam نرفته بودم و نیازی به یادگیری بیشتر حس نمی کردم. ولی این بار من باید یک برنامه جهنمی را تغییر دهم و چون نویسندگان این برنامه هیچ گونه دانشی در زمینه جاوا (J2EE و سایر موارد بماند) نداشته اند، کد برنامه بسیار ترسناک شده است.

تقریبا من در حال تعمیر یک بنای باستانی هستم که به هر دیوار آن کلنگ می زنم سقف روی سرم خراب می شود. نکته مثبت این پروژه این است که من بالاخره باید در مورد JSF و Seam بیشتر یاد بگیرم. در حین خواندن Seam in Action به پست The Law of Leaky Abstractions از بلاگ Joel Spolsky برخوردم. فکر می کنم کسی نمی تواند بهتر از Joel این حس را توصیف کند. این مقاله را حتما بخوانید. متاسفانه اشکال تکنولوژی هایی مثل JSF این است که سطح abstraction بالایی فراهم می کنند و درنتیجه با دانش 20 درصدی می توان 90 درصد کارها را انجام داد ولی برای حل 10 درصد باقیمانده باید با زیر و بم تکنولوژی آشنا شد و این کار در مورد JSF و Seam خیلی ساده نیست.

در ضمن طی این دو روز حس می کنم که تازه فهمیدم Seam همان Spring نیست که به جای XML از Annotation ها استفاده می کند. Seam در واقع اولین مدل Stateful برنامه های وب جاوایی است که می توانند از EJB استفاده نکند. (حداقل اولین برای من) و این خود یک paradigm shift بزرگ برای کسی است که همیشه در دنیای Stateless زندگی کرده است.
نوشتن یک برنامه با دید Stateless و استفاده از Seam هدر دادن وقت و هزینه است و عاقبت دردناکی دارد. برای استفاده از هر تکنولوژی باید با روح آن آشنا شد. به همه کسانی که دوست دارند از این تکنولوژی استفاده کنند خواندن کتاب Seam in Action را توصیه می کنم و در آخر هم جمله Joel Spolsky:

All non-trivial abstractions, to some degree, are leaky

جمعه، آذر ۲۰، ۱۳۸۸

The Cool Cat

The last Ubuntu was a disappointment to me. I hope the next one be better! The first alpha version of the next Ubuntu code named "Lucid Lynx" released yesterday. Lynxes are some kind of wild cats. I love cats. Take a look at these cats. Aren't they cool? ;)

پنجشنبه، آذر ۱۹، ۱۳۸۸

مرتب کردن فایل های mp3 با MusicBrainz Picard

اگر شما هم مثل من آلبوم های موسیقی خود را دانلود می کنید، حتما متوجه شده اید که برنامه های پخش موزیک با قابلیت مدیریت کتابخانه مثل RhythmBox، iTunes و Amarok، بسیاری از اسم آهنگ ها را درست نشان نمی دهند و در آن ها را در آلبوم های مختلف یا در یک گروه دسته بندی نشده قرار می دهند.
مشکل اینجاست که این برنامه ها اطلاعات (Tag) تگهای mp3 را می خوانند و به اسم فایل ها کاری ندارند. بعضی وقتها حتی اسم فایل ها هم درست نیست. برای داشتن یک کتابخانه آهنگ منظم باید اطلاعات تگ ها را پر کنید. برای این کار می توانید از برنامه ای به نام MusicBrainz Picard استفاده کنید. این برنامه به پایگاه داده MusicBrainz متصل می شود و با استفاده از اطلاعات فایل (مثلا md5) داده ها را گرفته و در تگ های mp3 ذخیره می کند. در مواردی هم که دقیقا این فایل پیدا نشود با استفاده از اسم فایل می توانید یک جستجوی دستی انجام داده و پس از پیدا کردن بهترین مورد اطلاعات را در فایل ذخیره کنید. Picard با استفاده از Python و qt4 نوشته شده است و می تواند در هر سه سیستم عامل ویندوز، لینوکس و مک اجرا شود. این برنامه در مخازن اوبونتو نیز موجود است. من در اینجا چند screenshot برای تکمیل یک آلبوم که به تازگی دانلود کرده ام را به شما نشان می دهم تا مراحل کار را ببینید. برای اطلاعات بیشتر در مورد استفاده های خاص از این برنامه به سایت برنامه مراجعه کنید. همچنین می توانید سوال های خود را در بخش نظرات بپرسید.
پس از نصب و بالا آمدن Picard ابتدا دو تغییر زیر را در Options-->Options انجام دهید تا اسم فایل های تگ شده در هنگام ذخیره بر اساس الگوی مشخص (شماره track و نام آهنگ ) تغییر کند:
و سپس "جابجایی فایل ها" را فعال کنید تا فایل های تگ شده در سلسله پوشه ها با نام گروه و آلبوم ذخیره شوند.
خوب من در اینجا یک آلبوم از Travis دارم که اطلاعات تگ های آن ناقص است و در پوشه ای به نام گروه و آلبوم ذخیره شده است.
این پوشه را به Picard اضافه می کنم.
سپس دکمه scan را می زنم تا عملیات تطبیق شروع شود. همانطور که در تصویر زیر می بینید آهنگ های من از دو آلبوم Travis گرفته شده اند (اسم آلبوم ها یکی است اما مدت زمان پخش آن متفاوت است). آهنگ های تطبیق داده شده با یک علامت سبز رنگ مشخص می شوند. اگر تطبیق کامل نباشد، رنگ این آیکون زرد یا قرمز خواهد بود.
خوشبختانه همه فایل ها پیدا شدند. در این مرحله اگر داده های تگ پیدا نشد، دکمه lookup را بزنید و در سایت MusicBranz دنبال تگ مورد نظر بگردید. اطلاعات بیشتر را در فروم و ویکی MusicBrainz پیدا کنید.
خوب در اینجا من فایل های تطبیق داده شده را ذخیره می کنم.
در شکل زیر می توانید ببینید که تگ فایل ها کامل شده است و به صورت منظم در محل مورد نظر ذخیره شده اند.

چقدر گیک هستید؟

هفته پیش چند تا کارتون بامزه پیدا کردم و در گوگل ریدر share کردم. می خواهم این کارتون ها را اینجا هم قرار دهم. اگر طنز این کارتون ها را گرفتید و بهشون خندیدید جزو گیک های دنیای دنیای نرم افزار هستید. کارتون ها رو به ترتیب بامزگی و تخصص قرار دادم. آخرین تصویر واقعا یک شاهکار است!





چهارشنبه، آذر ۱۸، ۱۳۸۸

این هفته: Red Hat یا CentOS

پشتیبانی تجاری برای CentOS از طرف شرکت OpenLogic می تواند مشتریان بالقوه Red Hat را به آغوش توزیع آزاد لینوکس بکشاند. با این وجود مدل اشتراک و پشتیبانی Red Hat همانند گذشته برای بسیاری از شرکت ها یک برتری متقاعد کننده است.
یک خبر خوش برای کاربران CentOS – حداقل در ایالات متحده: برای پشتیبانی حرفه ای از کپی Red Hat، کاربران می توانند به OpenLogic مراجعه کنند. عرضه کننده رده محصولات اوپن سورس از برنامه های هماهنگ و گواهی شده (ویکو: بسیاری از شرکت ها برای آنکه به کاربران اطمینان دهند که محصولشان روی توزیع خاصی از لینوکس کار می کند یک گواهی برای آن اجرا روی آن توزیع صادر می کنند. از معروفترین این گواهی ها می توان به certification اجرا روی RHEL و SLES اشاره کرد)، این توزیع لینوکس را به سرپرستی پذیرفت. قرارداد سرویس دو سطحی یک دسترسی سریع برای پشتیبانی فنی را عرضه می کند. علاوه بر این، آنها کاربران را در مقابل هرگونه ادعای حقوقی اشخاص ثالث که ممکن است از استفاده CentOS پدید آید محافظت می کنند. با قیمت 500 دلار در سال برای یک سرور، این پشتیبانی باید برای شرکت های کوچک تر نیز قابل پرداخت باشد.
CentOS یک راه حل برای افرادی است که نمی خواهند از پایداری و نیرومندی Red Hat Linux Enterprise چشمپوشی کنند، با این حال علاقه ندارند خود را به مدل اشتراک Red Hat وابسته کنند. این موضوع می تواند به سادگی دلایل مالی داشته باشد، اما همچنین یک انتخاب برای کاربرانی است که خود دارای تخصص کافی برای تنظیم و نگهداری یک چنین سیستم لینوکسی هستند. CentOS از سورس RHEL ساخته می شود و از دید باینری با الگوی خود سازگار است. همچنین توسعه دهندگان آن همانند RHEL برای کاربران هفت سال بروزرسانی های امنیتی را فراهم می کنند. این یک دلیل قانع کننده برای مدیران سیستمی است که دوست ندارند هر دو سال یک بار سیستم خود را از نو برپا کنند.
CentOS تنها کپی Red Hat نیست. همچنین Scientific Linux نزد یک گروه متفاوت از مخاطبین محبوب است. OpenLogic نیز تنها سرویس دهنده ای نیست که برای CentOS پشتیبانی فراهم می کند. برای مثال در کشورهای آلمانی زبان Credativ شریک OpenLogic با مرکز پشتیبانی اوپن سورس خود این کار را انجام می دهد. اما Credativ هیچ گونه گارانتی در صورت وقوع ادعاهای حقوقی ارایه نمی دهد، کاری که OpenLogic انجام می دهد.
در ضمن Red Hat در مقابل پروژه هایی مثل CentOS و Scientific Linux خونسرد عمل می کند. حتی خبر عرضه پشتیبانی از طرف OpenLogic احتمالا تغییری در رویه Red Hat ایجاد نخواهد کرد. ارزش مدل اشتراک Red Hat ، آنگونه که خود کلاه قرمزی ها استدلال می کنند، خیلی در خود نرم افزار(که سورس آن به صورت آزاد در دسترس است) نیست، بلکه در قابلیت های مدیرتی مثل شبکه Red Hat، در حمایت از طرف خود تولید کننده و همچنین در گواهی Red Hat برای پلاتفرم های مشخص و برنامه عرضه شده توسط سایر شرکت هاست.
CentOS و شرکا به وضوح یک خلا را پر می کنند. هر کس که Red Hat برایش یک شماره بزرگ (گران) باشد، به گزینه های آزاد دیگر می چسبد. به علاوه این کپی ها دامنه مشتریان بالقوه Red Hat را افزایش می دهند: وقتی که نیاز به پشتیبانی افزایش یابد یا موضوع گواهیRed Hat در میان باشد، جابجایی از CentOS به RHEL به سادگی صورت می گیرد. اما همه کاربران عمده CentOS به مشتریان Red Hat تبدیل نخواهند شد. کسانی که پشتیبانی یا قابلیت های تجاری را نیاز ندارند، اما می خواهند از Red Hat روی بسیاری از سیستم ها استفاده کنند می توانند با CentOS در پول زیادی صرفه جویی کنند.
دقیقا همین جا روی دیگر سکه خود را نشان می دهد. نه تنها Reh Hat در توسعه کرنل نقش تعیین کننده ای بازی می کند، این توزیع کننده همچنین اسپانسر بسیاری از پروژه های اوپن سورس است – در این بین Fedora که پیشتاز عرضه ویژگی های جدید است – که در سیستم عامل آزاد جریان دارند. اگر به این دید نگاه کنیم تعداد کمتر مشتریان Red Hat به معنی پول کمتر برای نرم افزار آزاد و در نهایت نو آوری کمتر است.
به همین دلیل به طور مشخص همه مشتریان بزرگ و دارای تخصص کافی محصول با قیمت مناسب تر را انتخاب نمی کنند. به عنوان مثال آمازون به صورت مصصم برای سرورهای بیشمار خود از Reh Hat استفاده می کند و این کار را از یک مدت طولانی قبل انجام می دهد. فروشگاه آنلاین اجازه می دهد ازطریق سازمانی پول در پروژه های اوپن سورس جریان داشته باشد، حتی وقتی که در سایه تخصص خود آنچنان به پشتیبانی Red Hat وابسته نیست.
اما برای CentOS پشتیبانی از توزیع توسط OpenLogic به هر حال باعث گسترش شناخت از این محصول و این خود باعث افزایش کاربران و امکان استفاده می شود. در اکوسیستم بزرگ اوپن سورس برای همه فضا وجود دارد.

ترجمه مقاله Die Woche: Red Hat oder CentOS