StarCalendar 1.5.0

2010/02/24
اینم ورژن 1.5.0
http://sourceforge.net/projects/starcal/files

تغییرات:

۱- اضافه کردن اپلت گنوم
فعلا توی پکیج اصلی برنامه قرار دادم، ولی بعدا باید توی یه پکیج جدا قرار بدم(شاید توی ورژن 2.0.0)
بعض از دوستان شاکی بودن که چرا بصورت اپلت نیست! و چرا فقط شمارهٔ ماه رو نشون میده.
من یکی دو ماه پیش این اپلت گنوم رو نوشتم ولی هنوز منتشر نکرده بودم. یکی از اهدافم برای انتشار ورژن 1.5.0 راضی کردن این دوستان بود.
در مورد نمایش ساعت/تاریخ هم: توی حالت tray icon محدودیت‌هایی وجود داره، اون امکان «نمایش ساعت رقمی در tray» توی KDE کار نمی‌کنه، توی گنوم هم نیاز کتابخانه EggTrayIcon داره که این کتابخونه خیلی قدیمیه و دیگه فکر کنم توی مخازن توزیع‌های جدید نیست، ولی من ماژول ۳۲ بیتی(i386) مربوط به EggTrayIcon رو همراه برنامه قرار دارم(برای پایتون 2.4 و 2.5 و 2.6)، ولی خب برای x86_64 دیگه کار نمی‌کرد! مگه اینکه پکیج‌هایی جدایی برای i386 و x86_64 بیرون می‌دادم…
اما توی اپلت گنوم، دیگه این مشکل وجود نداره و اون «نمایش ساعت رقمی در tray» بخوبی کار می‌کنه و می‌تونید تاریخ/زمان رو با هر فرمت دلخواهی ببینید(که فرمتش هم توی قسمت ترجیحات->پیشرفته قابل تنظیم هست)

۲- اضافه کردن اپلت پلاسما
یا به قول KDE کارها، پلاسموید یا همون Widget. که با PyQt نوشتم(بدیهی هست که نمی‌شد با PyGTK نوشت!). و چون به کیوت هم آشنا نبودم، برام کار سختی بود! (البته الآن کم و بیش با کیوت آشنا هستم) حتی مشکل KDE هم دارم یعنی توی این توزیع اصلی‌م (اوبونتو) KDE ندارم(یعنی خیلی قدیمیه) و برای کار کردن روی پلاسموید باید سیستم رو ری‌استارت کنم و برم توی اوپن‌سوزه!!این پسلاسموید هنوز خیلی ناپایدار هست و ممکنه باعث crash بشه(ممکنه پنجرهٔ Add Widget کرش کنه) و حتی ممکنه پکیج پلاسموید نصب نشه!! نمی‌دونم علتش چیه! شاید مشکل از برنامهٔ من باشه و شاید هم بخاطر باگ توی Python-PlasmaScript یا خود پلاسما باشه! اما متاسفانه هیچ ارور مشخصی (که بشه برنامه رو باهاش debug کرد) تحویل ما نمی‌ده و من این رو یک اشکال در KDE می‌دونم! به هر حال سعی می‌کنم بهفمم اشکال برنامه از چی هست.
در ضمن، روی پنل KDE هم مشکل size داره که سعی می‌کنم برطرف کنم.
و اما این هم پکیج پلاسموید:

که با این دستور باید نصبش کنید(البته بعد از نصب پکیج اصلی deb یا rpm):

plasmapkg -i starcal-1.5.0.plasmoid

در ضمن با کاربر خودتون هم این دستور رو اجرا کنید(نه با کاربر root)
و نکته بعد اینکه، نیاز به KDE 4.3 یا بالاتر داره.
امیدوارم مشکلی در نصب و اجراش پیش نیاد!

۳- اضافه شدن گزینهٔ «تنظیم زمان سیستم» به راست‌کلیک tray یا اپلت.
با انتخاب این گزینه، ازتون پسورد می‌پرسه و دیالوگی رو باز می‌کنه که با اون می‌تونید زمان یا تاریخ سیستم رو دستی تنظیم کنید، و تا به کمک NTP مستقیم از طریق اینترنت ست می‌کنه. اما تاکید می‌کنم، این ساعت سیستم شما رو با اینترنت Sync نمی‌کنه! بلکه فقط یک بار ساعت رو از اینترنت می‌گیره و ست می‌کنه. در واقع این یک رابط گرافیکی برای دو دستور date و ntpdate هست، دستور date که روی همهٔ سیستم‌های گنو/لینوکس هست، اما دستور ntpdate ممکنه توی توزیع شما بطور پیش‌فرض نصب نباشه و نیاز داشته باشه که خودتون نصبش کنید.

۴- آپدیت کردن مناسبت‌ها و طول ماه‌های قمری برای سال ۱۳۸۹
تقویم رسمی کشور که هر سال توسط مؤسسه ژئوفیزیک دانشگاه تهران منتشر میشه، اخیرأ برای سال ۱۳۸۹ منتشر شد

و مطالعه‌ش کردم و طول ماه‌های قمری رو آپدیت کردم(تا تاریخ قمری در سال آتی کاملا مطابق با تقویم رسمی کشور باشه)
و مناسبت‌ها رو هم کلأ چک کردم. تعداد زیادی مناسبت حذف شده بود(از جمله چند تا از «روز جهانی …» ها!!) و تعداد کمی مناسبت هم اضافه شده بود. که من این مناسبت‌های حذف شده رو، به همراه مناسبت‌هایی که خودم قبلی اضافه کرده بودم(مثل بعضی وقایع لینوکسی!!) منتقل کردم به پلاگین‌های جدید. پس در این ورژن دو پلاگین اضافه شده:

مناسبت‌های میلادی (سایر)
مناسبت‌های میلادی که توسط مؤلف برنامه اضافه شده‌اند و در تقویم رسمی ایران نیست. و یا به تازگی از تقویم رسمی ایران حذف شده‌اند.

مناسبت‌های هجری شمسی (سایر)
مناسبت‌های هجری شمسی که توسط مؤلف برنامه اضافه شده‌اند و در تقویم رسمی ایران نیست. و یا به تازگی از تقویم رسمی ایران حذف شده‌اند.

دو سه مورد هم اشکال توی پلاگین‌های مناسبت‌ها وجود داشت که برطرف کردم.

۵- یک سری تغییرات درونی در برنامه: ماژولار شدن محاسبات برنامه، یعنی محاسبات مربوط به جلالی، میلادی و قمری، هر کدوم بصورت یک ماژول تعریف شدن. همینطور تقویم جولی هم بعنوان یک ماژول اضافه شده. و همینطور تقویم عبری! البته تقویم عبری هنوز پشتیبانی کاملی ازش نمیشه(و شاید هم هیچ‌وقت نشه) به دلیل اینکه توی تقویم عبری، سال‌های کبیسه بجای ۱۲ ماه، ۱۳ ماه دارن!!! ولی برنامه من برای سال‌های ۱۲ ماهه نوشته شده. مگه اینکه تغییرات زیادی توی برنامه بدم و کمی هم باعث کثیف شدن کد و کاهش performance میشه.

۶- بازم طبق معمول، مقداری تمیزکاری و رفع چند باگ. البته شاید باگ‌هایی هم اضافه شده باشه! که به تدریج با گزارش‌دادن‌های شما برطرف میشه.

نکته آخر اینکه، از مدتی قبل کار روی starcal2 رو شروع کردم. یعنی ورژن 2.0.0 قراره بصورت یه پکیج با اسم دیگه‌ای باشه که همزمان با ورژن پایدار قابل استفاده باشه. و خودم هم این دو ورژن (۱ و ۲) رو بصورت موازی توسعه می‌دم. چون دارم تغییرات کلی توی ورژن ۲ (که قراره بعداً منتشر بشه) ایجاد می‌کنم. اما اینکه چه وقتی منتشر میشه، خودمم هم نمی‌دونم! شاید چند ماه دیگه!

موفق باشید

=-=-=-=-=
Powered by Bilbo Blogger

Advertisements

StarCalendar 1.4.0

2009/12/05
سلام
بالأخره بعد از ماه‌ها فاصله، تصمیم گرفتم که StarCalendar 1.4.0 رو منتشر کنم!:D

واقعیت اینه که در این چند ماه سرعت توسعهٔ برنامه نسبت به قبل خیلی کمتر شده بود! از طرفی تغییراتی که ایجاد می‌کردم معمولاً یا رفع باگ بود یا تغییرات خیلی کلی نبودن. به همین دلیل انتشار این ورژن رو این‌قدر به تاخیر انداختم! البته نقشه‌های زیادی برای این برنامه کشیده بودم و کشیدم و می‌خوام تغییرات خیلی کلی و مهمی ایجاد کنم، اما اکثرشون رو هنوز موفق نشدم انجام بدم. با این حال مهمترین تغییراتی (که به ذهنم میاد) در این نسخه نسبت که ورژن قبلی یعنی 1.3.6 دادم از این قبیل هست:

۱- تغییرات کلی در نحوهٔ sizing پنجرهٔ اصلی
حتماً می‌دونید که قبلاً برای تغییر ارتفاع پنجرهٔ اصلی باید به تنظیمات برنامه می‌رفتید و ارتفاع پنجره رو بصورت عدد (بر حسب پیسکل) وارد می‌کردید. و از طریق گزینهٔ «تغییر اندازه» یا Resize از منوی اصلی، فقط می‌شد عرض پنجره رو تغییر داد. از طرفی حل این مشکل اصلاً ساده نبود چون در حین استفاده از برنامه و تغییر روز سلکت شده (همون سلولی که دورش خط کشیده شده) احتمالاً متن پایینی پنجره (مربوط به مناسبت‌ها و روزهای دلخواه و…) تغییر می‌کرد و بنابراین ارتفاع پنجره تغییر می‌کرد.از طرفی من نمی‌خواستم که اندازهٔ پنجره بیخودی بزرگ بشه (و یک ارتفاع ثابتی برای اون باکس پایینی اختصاص داده بشه) و نمی‌خواستم که برای دیدن کل متن هم نیاز به اسکرول یا تغییر دستی ارتفاع پنجره داشته باشه. خلاصه بعد از کلی فکر کردن و ور رفتن با PyGTK یک راه‌حل نسبتاً قابل‌قبول پیدا کردم و در این ورژن شما شاهد اون خواهید بود. اگه به گوشهٔ راست پایین پنجره نکته کنید، کنار اون آیکون status bar (که برای تغییر اندازهٔ پنجره به کار میره) دو تا آیکون جدید هم اضافه شده. سمت راستی یک فلش رو به پایی هست که اگه موس رو روش ببرید نوشته docked lower box (که من ترجمهٔ‌ خوبی براش پیدا نکردم) اگه اون دکمه رو بزنید (و به حالت فعال دربیاد)، جعبهٔ پایینی (که متن مناسبت‌ها و روزهای دلخواه و… رو توش نوشته) تبدیل به یک پنجرهٔ مجزا میشه!! بله یک پنجرهٔ جدا از پنجرهٔ اصلی برنامه. این پنجره کاملاً تابع و مطیع پنجرهٔ اصلی هست! یعنی با جابجا کردن پنجرهٔ اصلی (یا تغییر ارتفاعش)، این پنجره هم جابجا میشه و با تغییر عرض پنجرهٔ اصلی، این پنجره هم عرضش (و در نتیجه ارتفاعش) تغییر می‌کنه، انگار که کاملاً بهش چسبیده! اگه اون دکمه رو دوباره فشار بدید دوباره به همون حالت قبلی برمی‌گرده که یه expander هست که می‌تونید اون رو ببینید یا باز کنید.
سمت چپ اون دکمه، یه دکمهٔ ضامن‌دار دیگه (toggle button) هست که آیکونش یک فلش رو به بالا هست. اگه موس رو روش ببرید نوشته «ثابت ماندن ارتفاع تقویم» که معناش کاملا مشخصه. اگه اون دکمه در حالت فعال قرار بگیره، ارتفاع ویدجت اصلی تقویم (که روزها و هفته‌ها توش دیده میشه) ثابت می‌مونه و با تغییر ارتفاع پنجره، تغییر نمی‌کنه. و بالعکس یعنی اگه این دکمه در حالت غیرفعال باشه، با تغییر ارتفاع پنجره، ارتفاع ویدجت اصلی تقویم تغییر می‌کنه.
با این دو دکمه خودتون باید ور برید تا منظورم رو خوب متوجه بشید. شما با این دو آپشن (گزینه) می‌تونید رفتار sizing پنجره رو مطابق سلیقهٔ خودتون تنظیم کنید. که این دو گزینه با هم مناسبت دارن، یعنی منطقی این هست که هر دو فعال یا هر دو غیرفعال باشن.

۲- کنترل‌کننده‌های پنجره
همون دکمه‌های Close و Minimize و Maximize که گوشهٔ بیشتر پنجره‌ها (توی همهٔ محیطهای دسکتاپ در همهٔ سیستم‌عامل‌ها) هست. یعنی بجای اینکه Metacity یا KWin این دکمه‌ها رو برای پنجره بسازن، من خودم اون‌ها رو ساختم! البته دکمهٔ Maximize هنوز تعریف نشده. ولی دکمهٔ Close هست و دکمهٔ Minimize هم اگه پنجره در حالت Skip Taskbar نباشه هست (گزینه‌ای به اسم «پنجره در نواروظیفه» در ترجیحات). حالا چرا اینکارو کردم؟ بخاطر اینکه نیاز داشتم! یعنی اینطوری می‌تونستم بهتر پنجرهٔ برنامه رو مدیریت کنم. آیکون‌هاش هم شبیه MacOSX هست (در واقع از آیکون‌های تم T-ish-Ubuntulooks استفاده کردم) چون خودم خیلی از این مدل خوشم میاد!:D البته دیکتاتوری نیست چون برنامه آزاد هست و شما خودتون می‌تونید تغییرش بدید. مثلاً می‌تونید فایل آیکون‌هاش رو با آیکون‌های دیگه‌ای جایگزین کنید. دوست داشتم خود برنامه بتونه این آیکون‌ها رو بسته به تم (و حتی window manager) تشخیص بده ولی فعلاً راه درست و حسابی براش پیدا نکردم.
در ضمن اگه می‌خواید پنجرهٔ اصلی، کوچیک باقی بمونه (و شبیه ویدجت‌های دسکتاپ بشه) می‌تونید کنترل‌کننده‌های پنجره رو غیرفعال کنید: ترجیحات ⬅ عمومی ⬅ نمایش کنترل‌کننده‌های پنجره.

۳- منوی راست کلیک روی label های سال و ماه
کلمهٔ label چون ترجمهٔ رایج و شناخته‌شده‌ای نداره از همین اصطلاح label استفاده می‌کنم.
توی پنجرهٔ اصلی، زیر نوارابزار (toolbar) تعدادی label هست که سال و ماه رو بر حسب تقویم‌های فعال (جلالی، میلادی، قمری) نشون میده. اگه روی یکی از این label ها راست‌کلیک کنید، یک منو باز میشه که می تونید سال/ماه رو تغییر بدید. این امکان مخصوصاً در مورد تقویم‌های غیرپیش‌فرض مفید هست چون دکمه‌هایی برای تغییر مستقیم اون‌ها توی پنجره تعبیه نشده (که با این قابلیت نیازی هم نیست و پنجره هم ساده‌تر و جم‌وجورتر میشه. حتی می‌تونید دکمه‌های مربوط که تقویم پیش‌فرض که احتمالاً جلالی هست رو حذف کنید). مثلاً اگه تقویم‌های فعال شما «جلالی، میلادی و قمری» با همین ترتیب باشن، شما می‌تونید مستقیماً سال یا ماه میلادی و قمری رو تغییر بدید، حتی خود جلالی (که بطور پیش‌فرض دکمه‌هایی برای تغییر سال/ماه براش وجود داره). با این کار دیگه کمتر نیاز پیدا می‌کنید تا از دیالوگ «انتخاب تاریخ» استفاده کنید. و راحت‌تر می‌تونید زمان رو مرور کنید!

۴- پشتیبانی از پلاگین‌های واقعی!
توی ورژن قبلی، اسم افزونه یا Plugin توی ترجیحات برنامه اومده بود، اما این اسم فقط یک مقدمه بود برای پیاده‌سازی پلاگین‌های واقعی! یعنی اون موقع، اون پلاگین‌ها پلاگین نبودن چون قابلی تفکیک از خود برنامه نبودن. و نمیشد پلاگین‌هایی رو به برنامه اضافه کرد. اما این قابلیت در این ورژن کاملاً فرآهم شده و میشه گفت که واقعاً پشتیبانی از پلاگین به برنامه اضافه شده. پلاگین‌های پیش‌فرض برنامه توی پوشهٔ

/usr/share/starcal/plugins/

قرار دارن. غیر از این پوشه، پوشهٔ

~/.starcal/plugins/

هم برای لود شدن پلاگین‌ها اسکن میشه. شما می‌تونید پلاگین‌هایی (با فرمت‌هایی خاص) رو به یکی از این دو پوشه کپی کنید تا در اجرای بعدی برنامه فعال بشه. از چند فرمت/نوع برای پلاگین‌ها پشتیبانی میشه. یکیش فرمت درونی (builtin) خود برنامه هست که ازش برای ذخیره‌سازی منابست‌های جلالی/میلادی/قمری و همینطور اوقات شرعی (بصورت دیتابیس) استفاده کردم که می‌تونید فایل‌هاشون رو نگاه کنید (اگه می‌خواید از فرمتش سردربیارید و خودتون برای برنامه پلاگین بنویسید و ما رو خوشحال کنید!). از جمله تعطیلات که توی این ورژن، تعطیلات رسمی ایران بصورت یه پلاگین تعریف شده!! این پلاگین کارش اینه که رنگ شماره‌ٔ روزهای تعطیل رو تغییر میده!! (نه اینکه یک متن رو در پایین پنجره نمایش بده!) پس ممکنه در آینده پلاگین‌هایی برای تعطیلات رسمی سایر کشورها هم نوشته بشه. گرچه همین الآن هم از چنین پلاگین‌هایی پشتیبانی میشه فقط وقت نکردم این کارو انجام بدم (برای تعطیلات سایر کشورها، پلاگین بنویسم)
غیر از اینها، از پلاگین‌ها external هم پشتیبانی میشه. یعنی پلاگین‌هایی که خودشون یه برنامه به زبان پایتون هستن (یا با C و ++C نوشته شدن و بصورت ماژول پایتون دراومدن). که البته باید ضوابط در نوشتن این پلاگین‌ها رعایت بشه. هنوز هیچ پلاگینی از این نوع به همراه برنامه قرار نگرفته. ولی دارم روی نوشتن یک پلاگین اوقات شرعی کار می‌کنم که برای هر شهری اوقات شرعی رو خودش حساب کنه!

در ضمن پشتیبانی از فایل‌های ics یا iCalendar هم بصورت پلاگین اضافه شده. این فرمت خیلی مشهور و رایج هست. می تونید فایل‌های ics رو توی یکی از اون دو پوشهٔ پلاگین‌ها کپی کنید تا در اجرای بعدی برنامه، به لیست پلاگین‌ها اضافه بشه)
البته این کار رو خیلی عجله‌ای انجام دادم و پشتیبانی از ics هنوز خیلی ناقص هست که سعی می‌کنم به تدریج کامل‌تر بشه.
فایل‌های ics رو احتمالاً توی اینترنت خیلی زیاد هستن و با جستجو در گوگل می‌تونید پیدا کنید. مثلاً اینجا توی سایت موزیلا، تعطیلات رسمی خیلی کشورها رو با فرمت ics گذاشته (جالب اینکه ایران رو هم داره، هم بصورت فارسی و هم انگلیسی ). اگه یکی از اینا رو دانلود کنید و توی پوشهٔ پلاگین‌های استارکلندر کپی کنید، متن توضیح مربوط به اون روزهای تعطیل (در اون کشور خاص) زیر تقویم نشون داده میشه (البته رنگ شمارهٔ ماه عوض نمیشه چون بصورت یک پلاگین متنی عادی تعریف شده!).
نکتهٔ دیگه اینکه شما نیاز ندارید فایل ics تعطیلات رسمی ایران رو دانلود کنید و به استارکلندر اضافه کنید، چون اون فقط برای همین چند سال اخیر کار می‌کنه، چون ics فقط و فقط از تقویم میلادی پشتیبانی می‌کنه، دی حالی‌که خود استارکلندر بصورت کاملاً هوشمند، مناسبت‌ها رو به تفکیک جلالی/میلادی/قمری برای هر سالی (از سال ۰ تا بی‌نهایت!!) براتون نشون میده!! حتی در سال‌های قبل از رخ دادن یک رویداد تاریخی، متن مناسبتش رو نشون میده!! 😀

۵- ارتباط با سایر برنامه‌های تقویم
اگه Evolution گنوم یا Sunbird موزیلا رو نصب کنید، گزینه‌هایی به منوی راست‌کلیک روز اضافه میشه و می‌تونید اون روز رو مستقیماً در اون برنامه باز کنید. با دبل‌کلیک روی روز هم همین کار با Evolution انجام میشه (البته به شرطی که نصب باشه). می‌خواسم این کار رو با KOrganizer هم انجام بدم (تا دوستان KDE کار هم خوشحال بشن) اما فعلاً راهش رو پیدا نکردم!
و همونطور که عرض کردم این ورژن از استارکلندر از فایل‌های ics بصورت پلاگین پشتیبانی می‌کنه. پس اگه از یکی از اپلیکیشن‌های معروف تقویم استفاده می‌کنید که قابلیت اکسپورت (صدور) به iCalendar یا همون ics رو داره، کافیه ics حاصل رو در پوشهٔ پلاگین‌های استارکلندر

~/.starcal/plugins

کپی کنید تا در اجرای بعدی استارکلندر، فعال بشه.
فرمت ics خیلی معروف هست و اپلیکیشن‌های زیادی ازش استفاده می‌کنن. Sunbird و KOrganizer قابلیت export به ics رو دارن. Evolution هم خودش از فرمت ics برای ذخیره‌سازی استفاده می‌کنه. کافیه به پوشهٔ

~/.evolution/calendar/local

برید و از داخل یکی از زیرپوشه‌هاش فایل calendar.ics رو بردارید.

۶- نمایش زمان/تاریخ در tray (یا Notification Area)
برید به قسمت ترجیحات ⬅ عمومی ⬅ نمایش ساعت رقمی …
بقیه‌ش دیگه مشخصه!

این ساعت دیجیتال (رقمی) از فرمت زمان/تاریخ پشتیبانی می‌کنه. یعنی می‌تونید براش تعیین کنید که چه چیزی رو نشون بده. اگه با دستور date توی خط فرمان آشنا باشید، منظورم رو بهتر می‌فهمید. برای تنظیم فرمتش برید به: ترجیحات ⬅ پیشرفته ⬅ فرمت ساعت رقمی …
البته این این ساعت دیجیتال توی KDE دیده نمی‌شه. هنوز نتونستم علتش رو پیدا کنم. شاید KDE از آیکون غیرمربعی (که عرضش بیشتر از ارتفاع پنل هست) برای Notification Area پشتیبانی نمی‌کنه.
اگه از افکت‌های دسکتاپ استفاده می‌کنید (مثل compiz یا افکت‌های خود گنوم و KDE4)، و به عبارت دقیق‌تر اگه گرافیک شما composited باشه، این ساعت دیجیتال، شفافیت (transparency) نداشته و یک زمینهٔ سفید خواهد داشت (این اشکال رو سعی می‌کنم در آینده حل کنم). رنگ متنش هم که در هر حال سیاه هست.
اگه می‌خواید بگید رنگ زمینه و رنگ متنش با تم دسکتاپ شما هماهنگ نیست، خب حق دارید! سعی می‌کنم در آینده کاری کنم که خودش رنگ زمینه و متن پنل رو تشخیص بده تا فضای رنگی دسکتاپ شما هماهنگ بشه… یا حداقل به عنوان یک گزینه در تنظیمات قرارش بدم.

۷- پشتیبانی از Drag و Drop
ترجمه‌ش میشه «کشیدن و رها کردن» ولی ما همون می‌گیم Drag و Drop
یک سلول از ویدجت تقویم (که نماد یک روز هست و شمارهٔ ماه‌‌ها توش نوشته شده) رو می‌تونید بگیرید و بکشید و بندازید توی یه ویدجت editable text یعنی مثلاً یه ادیتور یا واژه پرداز یا هر جایی که بتونید چیزی رو تایپ کنید یا متنی رو paste کنید. با Drag و Drop اون سلول، تاریخ اون روز بصورت میلادی (و ارقام انگلیسی) paste میشه. چرا میلادی و انگلیسی؟ چون هدفم این بود که بتونه با سایر اپلیکیشن‌ها ارتباط برقرار کنه، مثلاً می‌تونید به داخل تقویم گنوم drop کنید، و بالعکس (از تقویم گنوم drag و به استارکلندر drop کنید) تا به همون روز سوییچ کنه.
وگرنه قبلاً هم قابلیت «کپی تاریخ» وجود داشت که بر حسب تقویم پیش‌فرض هست (احتمالاً جلالی برای شما) و از ارقام فارسی هم استفاده می‌کنه. اگه در حال تایپ یک نوشته، می‌خواید تاریخ جلالی رو (با ارقام فارسی) درج کنید، کافیه از tray گزینهٔ «کپی تاریخ» رو بزنید و توی متن خودتون paste کنید.
در ضمن قابلیت «کپی زمان» هم به این ورژن اضافه شده. دو گزینهٔ «کپی تاریخ» و «کپی زمان» به منوی راست کلیک آیکون tray اضافه شده. (گزینهٔ «کپی تاریخ» توی راست کلیک هر روز هم که قبلاً بود)

۸- انحنای گوشه‌های مکان‌نما
گِرد شدن گوشه‌های مکان نما، شاید اولین تغییری باشه که در نگاه اول، توجه رو جلب می‌کنه!
فکر می‌کنم این باعث میشه کمی به زیبایی تقویم اضافه بشه. گرچه برای زیبا شدن تقویم باید تغییرات مهم‌تری رو در آینده انجام بدم (مثل پشتیبانی از تم‌های مختلف و تصویر زمینهٔ سلول و طیف رنگی و شفافیت واقعی و…)

۹- تغییر وبسایت یا home page پروژه به سورس‌فورج (starcal.sourceforge.net)
با تعطیل شدن ospdev.net (که خیلی من رو ناراحت کرد) مجبور شدم این کارو انجام بدم. البته sourceforge هم خیلی خوبه (و معروف‌تر و معتبرتره) دوست داشتم پروژه‌هام توی هر دوی این هاست‌ها موجود باشه، ولی هاست اصلی برنامه همون ospdev خودمون باشه چون ساده‌تر و سریع‌تر بود و من باهاش راحت‌تر بودم و ضمناً ایرانی هم بود.
متأسفانه آقای بهرام سیادی تنها موندن و پشتیبانی مالی از ایشون نشد و مجبور شدن سایت رو تعطیل کنن! کاش کمکی از دست من برمی‌اومد!
همین‌جا از آقای سیادتی بسیار تشکر می‌کنم که توی این دو سال این همه وقت گذاشتن و زحمت کشیدن و ۷۰۰۰ دلار هم هزینه کردن!

۱۰- طبق معمول، رفع تعدادی باگ (از جمله چند باگ خیلی مهم) و مقداری بهینه‌سازی و تمیزکاری کد، و تغییرات دیگه‌ای که بیشترشون یادم نیست…

در این ورژن هم مثل ورژن‌های قبلی، پکیج deb و rpm ساختم تا کاربران اکثر توزیع‌های گنو/لینوکس به راحتی بتونن نصب کنن. فقط از کاربران Archlinux و Chakra معذرت می‌خوام چون آرچ ندارم و فعلاً هم بلد نیستم پکیج آرچ بسازم. ولی این دوستان هم می‌تونن پکیج rpm یا deb رو extract کنن و بصورت دستی نصب و اجرا کنن.
بعضی‌ها می‌پرسن «سورس برنامه رو از کجا بگیریم؟ چرا پکیج سورس قرار ندادی؟».
جواب اینه که این برنامه با پایتون نوشته شده و سورس توی همهٔ پکیج‌ها (rpm و deb) هست. پس دیگه دلیلی وجود نداشت که پکیج جدایی مخصوص سورس آپلود کنم!

حتماً می‌دونید که این برنامه تحت مجوز GNU GPL هست، البته قسمت‌هایی‌ش هم GNU LGPL هست.

نکتهٔ آخر اینکه اگه می‌خواهید خبر انتشار این ورژن رو جایی منتشر کنید، بهتره به‌جای کپی کردن این متن، به همین صفحه (در وبلاگ خودم) لینک بدید، چون ممکنه این متن رو در آینده تغییر بدم و اصلاح یا تکمیل کنم. این یک خواهش هست.

موفق باشید


Virtual Box -> Windows -> SunCalendar & StarCalendar

2009/05/27

سلام

اول لینک این مطلبی که دوست عزیزم نوشتن رو بذارم: بهترین تقویم‌ها برای ویندوز و لینوکس

خیلی وقت بود که ویندوز درپیت رو از روی هاردم پاک کرده بودم. یعنی واقعاً هم نیاز خاصی نداشتم. فقط گاهی وقتا هوس می‌کردم یه برنامهٔ ویندوزی رو با wine توی اوبونتو اجرا کنم، ولی بعضی وقتا اجرا میشد بعضی وقتا هم نمیشد،‌ حالا بگذریم که جدیدأ wine شکل و قیافهٔ برنامه رو به هم می‌ریزه، گاهی نمیشه نوشته‌هاش رو خوند. به هر حال امیدوارم این مشکلات wine در آینده حل بشه. شایدم راه‌حلی داشته باشه و من بلد نیستم.

حالا بگذریم. به فکرم افتاد که ماشین مجازی بزنم. محض کنجکاوی هم که شده یه Virtual Box توی اوبونتو نصب کردم و بعدش هم ویندوز xp رو براش تعریف کردم و سیدی xp رو گذاشتم و از طریق Virtual Box بوت کردم و روی یه پارتیشن مجازی نصب کردم. خلاصه موفق شدم ویندوز رو از توی اوبونتو اجرا کنم. تا حالا همچین تجربه‌ای نداشتم، یعنی زیاد هم دنبالش نبودم(فقط اون اوایل توی اوپن‌سوزه با ماشین مجازی XEN سر و کله زدم ولی موفقیتی حاصل نشد). تازه این مخازن اوبونتو(6 تا DVD) رو فقط برای ابونتو 8.10 داشتم.

خلاصه ویندوز xp از طریق Virtual Box اومد بالا. جالب بود که توی ویندوز(Virtual Box) صدا هم داشت، یعنی صداهای خود ویندوز و برنامه‌هاش، از توی اوبونتو شنیده میشد. فقط مشکل این بود که اون پارتیشن مجازی ویندوز مثلاً root/.VirtualBox/VDI/win_xp.vdi/ رو نمیشد توی اوبونتو مونت کرد و خوند یا نوشت. حتی folder sharing ش هم کار نمی‌کرد!(یعنی من نتونستم). برای همین برای انتقال دیتا به ویندوز مجبور شدم فایل iso بسازم(با دستور genisoimage) و بعنوان سیدی معرفی کنم به Virtual Box تا توی ویندوز مونت کنه(ویندوز فکر می‌کنه سیدی توی سیدی‌رام گذاشتیم!) یعنی مجبور شدم کلک بزنم! کاش میشد همون پارتیشن مجازی(که پسوند vdi داره) مثل فایل iso (یا مثل یه loop device دیگه) مونت کرد. یا یه loop device رو بعنوان پارتیشن ویندوز به Virtual Box معرفی کرد. اصلاً نمی‌دونم اون فرمت vdi چی هست؟!

خلاصه SunCalendar رو توی ویندوز نصب کردم(که با wine نتونسته بودم اجراش کنم). بعدش به ذهنم رسید که StarCalendar رو هم میشه به زور توی ویندوز اجرا کرد(مثل بقیهٔ برنامه‌های PyGTK) یعنی قبلاً روی لپ‌تاپ رفیقم که ویستا داشت StarCalendar و همینطور PyGlossary رو اجرا کرده بودم. ولی اجراشون دردسر داره. باید GTK و Python و PyGTK و PyGObject و چند تا کتابخونهٔ دیگه رو توی ویندوز نصب کنیم(که مجموعاً بیشتر از 20 مگ میشه، تازه باید ورژن‌هاشون هماهنگ باشه) و بعد متغیر PATH ویندوز رو تغییر بدیم و خلاصه سخته! ولی چون قبلاً تجربهٔ این کارها رو داشتم در عرض چند دقیقه پیش‌نیازهاش رو نصب کردم و بعد StarCalendar رو توی ویندوز xp اجرا کردم، اولش دو سه تا مشکل فنی پیش اومد ولی اونم با اصلاح کد پایتون برطرف کردم و این شد مثلاً پورت کردن StarCalendar به ویندوز! عکسش رو می‌تونید این زیر ببینید.

البته بازم میگم شما بهتره هوس نکنید که StarCalendar رو توی ویندوز اجرا کنید چون دردسر داره، توی ویندوز بهتره از SunCalendar استفاده کنید.

قبلاً سعی کرده بودم که PyGlossary رو با همهٔ پیش‌نیازهاش توی یه فایل exe خلاصه کنم که راحت توی ویندوز نصب و اجرا بشه، یکم با py2exe ور رفتم ولی موفق نشدم. بعدشم بی‌خیال شدم گفتم ولش کن. هر کاربر ویندوز که واقعاً بهش نیاز داشت فوقش یه سیدی لایو(مثلاً اوبونتو یا پارسیکس) بذاره بیاد استفاده کنه. چرا من خودم رو علاف ویندوز کنم؟!

این بار هم که با ماشین مجازی، ویندوز رو نصب کردم یکی برای کنجکاوی بود یکی هم برای مواقع خاص که به یه برنامهٔ نیاز دارم ولی با wine اجرا نمیشه، از ماشین مجازی استفاده کنم.

روز به روز گنو/لینوکسی‌تر باشید

و موفق باشید

=-=-=-=-=
Powered by Bilbo Blogger


هنوز زنده‌ام

2009/05/25

سلام

اگه می‌بینید وبلاگ رو آپدیت نمی‌کنم، علتش اینه که مشغولم. حالا بگذریم که زیادم اهل وبلاگ‌نویسی نیستم! ولی راستش بدجوری سرگرم برنامه‌نویسی و کارهای دیگه هستم.

از یه طرف یه پروژهٔ سفارشی دارم برای یه تیم تحقیقاتی با عنوان «مینی بیو رآکتور» (رآکتور زیستی کوچک)، تعجب نکنید! این برنامه رابطی برای برقراری ارتباط با یک دستگاهی هست با همین نام(مینی بیو رآکتور) که اختراع چند متخصص ایرانی توی دانشگاه تهران هست. پای من وقتی به این داستان کشیده شد که رفیق برنامه‌نویسم(VB کار حرفه‌ای و کاربر ویندوز که قبلاً یه خورده با گنو/لینوکس کار کرده) توی سایت دانشگاه دید دارم با اوبونتو کار می‌کنم(کدنویسی می‌کنم) بعدش یه سوالایی ازم کرد و بعدش پیشنهاد همچین برنامه‌ای رو بهم داد، بعداً فهمیدم پروژهٔ خیلی گنده و خفنی هست و رفیقم هم خودش مدیر تیم برنامه‌نویسی‌ش بوده. حالا شاید بعداً یکم بیشتر در موردش نوشتم. ولی کلاً توی این پروژه می‌خوام قدرت گنو/لینوکس و پایتون رو به دیگران نشون بدم! در ضمن قرار شده بصورت اوپن‌سورس کار کنم(بجز قسمت کوچیکی از برنامه که محرمانه هست) یعنی خودم خواستم که اوپن‌سورس کار کنم.

از یه طرف هم روی اون تقویم starcal کار می‌ کنم که داره خیلی خفن میشه(هم کامل میشه، هم به جاهای پیچیده و سختش رسیده)، نسخهٔ 1.3.5 رو هم که آپلود کردم تغییرات زیادی دادم، از جمله بهینه‌سازی‌های اساسی توی مختصات نقاط، که باعث شده تنظیماتش با تنظیمات ورژن‌های قبلی ناسازگار باشه(البته نگران نباشید، شما آپدیت کنید، بچه‌م خودش ردیفش میکنه!). ولی اون تغییرات کلی و بنیادین که ان‌شاءالله قراره توی ورژن 1.4 تکمیل بشه در مورد همون «افزودن روز دلخواه» هست(که شاید به bookmark یا «نشانه» تغییر نام بدم) قراره شدیداً کامل و انعطاف‌پذیرتر بشه(حتی انعطاف‌پذیرتر از تقویم Evolution) توی این ورژنی که آپلود کردم(1.3.5) فقط رابط گرافیکیش(اونم نه کامل) بصورت نمایشی(demo) قرار گرفته. حالا ان‌شاءااله ورژن 1.4 که اومد مفصل در مورد تغییرات و امکانات اضافه‌شده می‌نویسم.

حالا که حرف از Evolution شد: خداییش عجب چیــــــــــــزیه این Evolution !!! عجب برنامهٔ کامل و قدرمتندی هست! بی‌شباهت به یه سیستم‌عامل نیست! خداییش ناول چه کارها که نمیکنه! اون از ابزار کامل YaST که قدرتمندترین و کامل‌ترین ابزار گرافیکی مدیریت سیستم هست، اونم از اوپن‌سوزه که جزو بهترین و محبوب‌ترین توزیع‌های گنو/لینوکس هست(البته جدیداً اوبونتو محبوب‌تر شده). اون از پروژهٔ مونو. اینم از Evolution که هم یه Mail Client هست، هم Feed Reader هست، هم تقویم و Task و Reminder و یادداشت‌نویسی و کلی چیز دیگه داره!! جالبه بدونید Evolution جزئی از گنوم هست(البته من تعصبی روی بحث گنوم و KDE ندارم. ولی خداییش Korginizer هم چیز توپیه). جالب‌تر اینکه ظاهرا ً Evolution و گنوم با هم مچ هستن، آخه اون روزهای خاص(Appoinment ها یا همون کارها) که توی Evolution تعریف می‌کنیم، توی اپلت تقویم گنوم هم نشون میده! خیلی جالبه! قصد دارم حتماً بین Evolution و StarCalendar خودم ارتباط برقرار کنم، مثلاً بتونه این روزهای خاص رو از تنظیماتش import و export کنه.

مدتی هم هست(یکی دو ماهی میشه) که به کمک Evolution فید می‌خونم. اگرچه زیاد نمی‌رسم وبلاگ‌ بروبچ رو بخونم، حتی جدیداً به فروم‌های گنو/لینوکسی(تکنوتاکس ابونونتو-ایران) هم کمتر سر می‌زنم. اما فید شیش‌هفت تا از بچه‌های گنو/لینوکس‌کار رو اضافه کردم به Evolution و گاهی اوقات سرگرم فیدخونی میشم.

اگرچه به تلویزیون علاقهٔ چندانی ندارم، ولی این روزا کارتون فوتبالیست‌ها رو نگاه می‌کنم(سعی می کنم ساعت 6 حتماً پای تلویزیون حاضر بشم). از بچگی عاشق این کارتون بودم، اون قدیما هم که با میکرو بازی می‌کردم عاشق بازی فوتبالیست‌ها بودم(هم ژاپنی‌ش رو خیلی بازی کردم هم انگلیسی‌ش رو). بازی‌ش پر از خلاقیت بود(اصلاً سرعتی نبود بلکه شدیداً استراتژیک بود). یادش به خیر، چه خاطراتی با این کارتون و بازی دارم(با چه علاقه‌ای می‌نشستم رمزهای پیچیدهٔ ژاپنی رو می‌نوشتم). قیافهٔ کلمات ژاپنی رو یاد گرفتم(شوت و پاس و دریبل و…، به علاوهٔ اسم بازیکن‌های معروف مثل سوبا و کاکرو و تارو و واکی‌بایاشی و واکاشی‌مازو و…) با اینکه نمی‌تونستم این کلمات رو بخونم(ژاپنی بلد نبودم) ولی از شکل و قیافهٔ حروفش می‌فهمیدم کدوم کدومه.

آدم وقتی بچه‌س آرزو می‌کنه زود بزرگ بشه، وقتی بزرگ می‌شه گاهی وقتی با خودش میگه کاش می‌شد برگردم به دوران بچه‌گی!

کاش یه بازی آزاد(اوپن‌سورس) تحت گنو/لینوکس برای فوتبالیست‌ها موجود بود! فایل نینتندو اش رو که دانلود کردم نتونستم اجرا کنم، اگه کسی تونسته این بازی رو توی گنو/لینوکس اجرا کنه، بگه.

خب دیگه فعلاً بسه. سعی می‌کنم بیشتر وبلاگ رو آپدیت کنم. فید وبلاگ که اون بغل هست، راستی اگه می‌خواید از ورژن‌های جدید starcal هم مطلع بشید می‌تونید از این فید rss استفاده کنید.

موفق باشید


StarCalendar 1.0.0

2009/03/12

سلام
بالأخره اون تقویمی که وعده داده بودم، اولین ورژنش رو آپلود کردم. یکم دیر شد ولی عوضش چیز توپی شده. امیدورام به درد دوستان بخوره.
در ضمن پیشاپیش عید نوروز رو هم تبریک میگم. این برنامه هم عیدی ما به لینوکس‌کارها
http://ospdev.net/projects/starcal
و اما تغییراتی که نسبت به اپلت تقویم جلالی(برای گنوم) ایجاد کردم:

1- این برنامه بصورت اپلت نیست(که وابسته به window manager باشه) بلکه بصورت پنجره‌ای اجرا میشه پس علاوه بر گنوم، در KDE و سایر محیطهای گرافیکی هم اجرا میشه. در ضمن آیکونش به system tray هم اضافه میشه(چه توی گنوم و چه KDE) و اون گوشه هم روز ماه رو(بعنوان ایکون tray) نشون میده(مثل همون اپلت گنوم). در ضمن توی ویندوز هم اجراش کردم ولی اجراش توی ویندوز یه خورده دردسر داره(باید پایتون و GTK و PyGTK و یه سری کتابخونهٔ دیگه نصب بشه که مجموعاً حدود 20 مگ میشه)

2- پشتیبانی از تقویم هجری قمری اضافه شد. تاریخ‌های قمری در این چند سال اخیر(1384 تا 1388) وقیق هستن، یعنی کاملاً مطابق با تقویم‌های چاپی(و تقویم رسمی ایران) هست(در حالیکه هیچ برنامهٔ تقویم نیست که اینطور باشه، همشون ممکنه یک روز در تاریخپ قمری خطا داشته باشن، مگه اینکه فقط برای یک سال نوشته شده باشن). اما تاریخ‌های قمری در خارج از این سالها(قبل از 1384 و بعد از 1388) ممکنه حداکثر یک روز خطا داشته باشه.

3- تغییرات و بهینه‌سازی‌هایی در ظاهر برنامه، از جمله درشت کردن فونتها(برای خوانایی بیشتر) و تغییر رنگ‌ها. همینطور در تنظیمات برنامه میتونید هر کدوم از سه نوع تقویم(شمسی، میلادی و قمری) رو غیرفعال(یا دوباره فعال) کنید و یا فونتها و رنگ‌های نمایش داده شده رو به سلیقهٔ خودتون تغییر بدید.

4- جدا کردن دیتابیس مناسبت‌ها بعنوان مناسبت‌های شمسی، مناسبت‌های قمری و مناسبت‌های میلادی. در نتیجه این مناسبت‌ها برای تمام سالها نمایش داده میشه(نه فقط برای سالهای 1386 تا 1388). یه سری اشکالاتی هم که در دیتابیس مناسبت‌ها بود رفع شد و مناسبت‌های جدیدی هم اضافه شد.
میتونید در تنظیمات برنامه نمایش یا عدم نمایش مناسبت‌ها رو تنظیم کنید.

5- پشتیبانی از کیبورد. یعنی شما علاوه بر اینکه با کلیک موس میتونید بین روزهای مختلف جابجا بشید، با کلیدهای چهار جهت اصلی کیبورد هم میتونید این کارو انجام بدید، همینطور با زدن دکمهٔ Space یا دکمهٔ Home امروز رو سلکت کنید(مثل زدن دکمهٔ «امروز» با موس).

6- پشتیبانی همزمان از فارسی و انگلیسی. یعنی توی تنظیمات برنامه می‌تونید زبان کل برنامه رو انتخاب کنید(این هیچ ارتباطی به تقویم شمسی یا میلادی نداره). برای اینکه زبان جدید کاملاً اعمال بشه، بعد از زدن دکمهٔ اعمال(Apply) باید یه بار از برنامه خارج بشید(دکمهٔ Quit برنامه یا دکمه Q کیبورد) و دوباره برنامه رو اجرا کنید.
قصد دارم به زودی ترجمهٔ عربی رو هم تکمیل کنم.
اگه بسته‌های language-pack فارسی روی سیستمتون نصب نباشه، برنامه راست به چپ نمیشه و بعضی دکمه‌ها هم(که دکمه‌های پیش‌فرض خود GTK هستن) فارسی نخواهند شد(اگرچه بیشتر برنامه فارسی میشه). برای اینکه کل(100٪) برنامه فارسی بشه و راست به چپ هم نشون بده، باید این چند تا پکیج رو روی سیستم نصب کنید:
language-pack-fa-base
language-pack-fa
language-pack-gnome-fa-base
language-pack-gnome-fa
البته این مال اوبونتو هست، برای توزیع‌های دیگه نمیدونم. توی اوبونتو 8.10 این پکیج‌های بطور پیش‌فرض نیست ولی توی dvd خود اوبونتو 8.10 هست، اگه دارید به مخازن اضافه کنید اگه هم ندارید و نصب کنید. یا از مخازن اینترنت استفاده کنید یا دستی دانلود کنید و نصب کنید.

اینم عکس دسکتاپم که این برنامه و قسمتهای مختلفش رو نشون میده:

screenshot-saeedgnu-starcal-100


شیءگرایی (قسمت اول)

2009/02/06

اکثر کسایی توی برنامه‌نویسی تازه‌کار هستن، فکر می‌کنن که شیءگرایی چیز خیلی پیچیده‌ای هست. ولی کل مفهوم شیءگرایی رو میشه در یه کلمه خلاصه کرد: «بسته‌بندی»! تعجب نکنید. مفهومش به همین سادگیه.
منظورم فقط بسته‌بندی چیزهایی که می‌خریم نیست. مثلاً همین کیفی که دستمون می‌گیریم یه وسیله‌ای برای بسته‌بندی و دسته‌بندی اشیاء هست. حتی کیسهٔ سطل زباله…
یکم فکر کنید، چرا ما توی زندگی روزمره میایم اشیاء مختلف رو در یک مجموعه‌ای قرار میدیم و دسته‌بندی می‌کنیم؟ برای اینکه جابحجایی و انتقالش از یه مکان به مکان دیگه راحت‌تر بشه. برای اینکه راحت‌تر بتونه بین افراد مختلف دست به دست بشه(مثلاً خرید و فروش بشه). برای اینکه اشیاء داخلش گم و گور نشن یا با اشیاء مشابه خوشون قاتی نشن. و در نهایت برای اینکه راحت‌تر دور انداخته بشه.
در برنامه‌نویسی هم همینطور هست. فلسفهٔ شیءگرایی در برنامه‌نویسی، دسته‌بندی داده‌ها یا به قول بعضی‌ها کپسوله‌سازی داده(Data Encapulization) هست. ببینیم داده‌هایی که ما در برنامه‌نویسی داریم چیا هستن. کوچیکترینشون بیت(bit) هست، بعد از بایت که سنگ‌بنای تمام اجزاء بزرگتر هست. یه مرحله بالاتر متغیرها هستن، با هر نوعی مثل int یا float یا char یا…(در بعضی زبانهای اسکریپتی بعضی اشیاء سطح‌بالاتر هم بعنوان انواع داده‌های درونی تعریف شدن). به موازات متغیرها، توابع رو داریم. یه سطح بالاتر ساختمان‌ها(structure ها) هستن که شامل تعدادی متغیر هستن. و یه سطح بالاتر اشیاء هستن.
هر متغیر شامل تعدادی بایت هست. هر ساختمان شامل تعدادی متغیر هست(که دور هم پیچیده شدن و بسته‌بندی شدن). و هر شیء شامل تعدادی متغیر(یا اصطلاحاً data field) و تعدادی تابع(و اصطلاحاً متد) هست، که البته میشه یک شیء رو متناظر با یک(یا چند) ساختمان و تعدادی تابع(متد) دونست. البته هر کدوم از متغیرهای(data field های) یک شیء، خودش میتونه یه شیء باشه.
اون اوایل که داشتم مفاهیم شیءگرایی رو یاد می‌گرفتم(اون موقع با جاوا یاد می‌گرفتم)، خیلی باهاش مشکل داشتم، چون هیچ جا شیءگرایی رو زیاد ساده و قابل فهم توضیح نمی‌دادن.
مثلاً اولش فرق کلاس رو با شیء نمی‌فهمیدم، بعد از کلی کلنجار رفتم فهمیدم که «یک شیء نمونه‌ای از یه کلاس هست». یه کلاس مجموعه‌ای از متغیرها و متدها(توابع شیءگرا) هست که مجموعه‌ای از اشیاء رو تعریف می‌کنه. و یه شیء یکی از اعضای این مجموعه‌ای از اشیاء هست که توسط یه کلاس تعریف میشه. فرضاً ما «کلاس اتومبیل» داریم، اما «اتومبیل فلانی» یه شیء هست، و یه نمونه از «کلاس اتومبیل».
میشه تقریباً تمام مفاهیم شیءگرایی رو با مفهوم شیء در زندگی روزمره متناظر(و تشبیه) کرد. مثلاً متغیرهای یک شیء(یا همون فیلدهای داده‌ای شیء)، متناظر با خواص و اجزاء مختلف یک شیء مادی هست(در زندگی روزمره). متدهای(توابع) یک شیء هم متاظر با کارهایی هست که میشه با یک شیء مادی انجام داد. مثلاً یه شیء خودکار در نظر بگیرید. یدونه سر داره(یک متغیر)، یه نوک داره(یه متغیر)، یه رنگ براش تعریف شده(یه متغیر). براش نوشتن تعریف شده، یعنی میشه باهاش نوشت(یه متد)، میشه سرش رو برداشت(یه متد)، و میشه سرش رو گذاشت(یه متد) و در نهایت میشه دورش انداخت(یه متد).
بعضی متدها بین تمام اشیاء مشترک هستن(مثل متد سازنده و متد مخرب). بعضی متدها بین طیف وسیعی از اشیاء مشترک هستن، و بعضی هم فقط در اشیاء خاصی تعریف میشن.
تا اینجا رو داشته باشید تاب بعد…


PyGlossary-2009.2.3

2009/02/04

سلام
خب من برگشتم. با نسخهٔ جدیدی از PyGlossary
ospdev.net/projects/glossary-pywork
تغییرات این نسخه:

1- رفع یه اشکال خیلی بزرگ(یه اشتباه لپی) توی نوشتن دیتابیس‌های MDic که باعث میشد اصلاً معانی کلمات ذخیره نشه و بجاش دوباره خود کلمات ذخیره بشه!! این جور سوتی‌ها از من جای تعجب نداره! کلاً یه خورده(بیشتر از یه خورده) آدم حواس‌پرتی هستم! حالا این که چیزی نیست. من اولش یه چند ماهی توی رابط گرافیکی برنامه بجای کلمهٔ Convert نوشته بود بودم Covnert (توی label همون تب اول) !! اون ورژنی هم که الآن توی softpedia هست همین اشکال رو داره(حالا بهشون میگم آپدیت کنن). خلاصه حسابی آبروم رفت! :دی

2- اضافه کردن امکان Reverse کردن در خط فرمان(قبلاً میشه توی خط فرمان Convert کرد) فقط بنویسید
pyglossary --help
تا طرز استفاده از رابط خط فرمان برنامه رو ببینید.

3- اضافه کردن ProgressBar به رابط خط فرمان برنامه، برای معکوس کردن دیتابیس‌ها. و همینطور تبدیل کردن دیتابیس‌هایی که بیشتر طول میکشن مثل خوندن از BGL و نوشتن MDic. خداییش ProgressBar ش خیلی باحال شده حتماً ببینید(یه دیتابیس رو reverse کنید یا یه دیتابیس BGL رو تبدیل کنید). البته از کتابخونهٔ python-progressbar (که تحت LGPL هم هست) استفاده کردم و خودم ننوشتم، من فقط یه تغییراتی توش انجام دادم و توی برنامهٰ‌م استفاده کردم.

pyglossary-terminal

4- اعمال شدن تنظیمات برنامه در رابط خط فرمان. یعنی همون تنظیماتی که در رابط گرافیکی هست، در رابط خط فرمان هم در نظر گرفته میشه. مثل sort کردن یا حذف تگ‌ها بعد از خوندن دیتابیس، یا تنظیمات مختلف Reverse (مثل حداقل درصد ربط و حداکثر تعداد نتایج و…)
می‌تونید تنظیمات برنامه رو از رابط گرافیکی برنامه(تب Preferences) تغییر بدید، یا فایل pyglossary. رو (توی پوشهٔ خانگی) دستی ویرایش کنید.

5- رفع یک اشکال در خوندن از StarDict (اگه کلمات دیتابیس ورودی sort نشده بودند، بعضی کلمات رو نادیده می‌گرفت). با این اصلاح فکر می‌کنم دیگه پشتیبانی از فرمت StarDict کامل کامل شده باشه. دیگه گمون نمی‌کنم نیازی به ماژول خارجی باشه(که خیلی هم کند هست) ولی باز محض احتیاط ماژول خارجی stardict reader رو حذف نکردم.

6- پشتیبانی از پلاگین! یعنی تابع خوندن و نوشتن یه فرمت که توی فایل جدا(توی پوشهٔ src/plugins) نوشته شده(بصورت نه لزوماً شیءگرا)، توسط موتور درونی برنامه (یعنی کلاس Glossary) خونده میشه و به کلاس Glossary پیوند می‌خوره. اگه میخواید خودتون یه فرمت جدید به PyGlossary اضافه کنید، این امکان برنامه کارتون رو راحت میکنه. اگه می‌خواید یه پلاگین بنویسید، فایل src/plugins/testformat.py رو بخونید(یک مثال ساده هست) تا ساختار یه پلاگین برنامه رو متوجه بشید. البته باید از ساختار فایل فرمتی که میخواید اضافه کنید هم اطلاع داشته باشید(اون دیگه بستگی به فرمتش داره).

7- و رفع چند تا اشکال که یادم نیست. و طبق معمول مقداری تمیزکاری و بهینه‌سازی.