وبلاگ جدید

2014/03/30

سلام
باوردم نمیشه ۴ سال از آخرین پست‌م توی این وبلاگ می‌گذره!

باید وبلاگ جدیدم رو همون موقع معرفی می‌کردم (نمی‌دونم چی شد که یادم رفت)

http://saeedgnu.blog.ir

بیشتر بخاطر سریع بودن و پایتونی بودن و مسدود نبودن به blog.ir سوییچ کردم

گرچه نرم‌افزاری که تولید کردن و استفاده می‌کنن برای دیگران قابل دسترس نیست، و اشکالاتی هم داره. ولی فعلاً گزینهٔ بهتری ندارم.


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


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 فقط و فقط از تقویم میلادی پشتیبانی می‌کنه، دی حالی‌که خود استارکلندر بصورت کاملاً هوشمند، مناسبت‌ها رو به تفکیک جلالی/میلادی/قمری برای هر سالی (از سال ۰ تا بی‌نهایت!!) براتون نشون میده!! حتی در سال‌های قبل از رخ دادن یک رویداد تاریخی، متن مناسبتش رو نشون میده!! :D

۵- ارتباط با سایر برنامه‌های تقویم
اگه 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 هست.

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

موفق باشید


GNU/Linux Chart

2009/09/29

سلام

سعی کردم اجزاء مهم سیستم‌عامل گنو/لینوکس ارتباطشون با همدیگه رو توی یه نمودار نمایش بدم.

با کلیک روی عکس، سایز بزرگ رو ببینید.

احتمالأ می‌تونید حدس بزنید که با Inkscape درستش کردم. فایل svg ش رو می‌تونید از اینجا دانلود کنید. بعد از دانلود پسوند png رو ازش بردارید و پسوند svgz بدید! (چون وردپرس فرمت svg یا svgz رو برای آپلود قبول نمی‌کنه، مجبور شدم پسوندش رو عوض کنم!)

اولش می‌خواستم نمودار رو بصورت حلقه‌ای درست کنم (قبلاً هم یدونه ساده‌ترش رو بصورت حلقه‌ای درست کردم) ولی دیدم نمیشه یعنی خیلی سخته!

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


Nintendo , Tsubasa

2009/09/17

اجرای بازی‌های نینتندو در گنو/لینوکس (به همراه راهنمایی برای علاقه‌مندان به بازی کاپتان سوباسا)

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


اجرای یک نرم‌افزار خاص با زبان فارسی

2009/07/07

خیلی از نرم‌افزارهای معروف هستن که بصورت چندزبانه طراحی شدن، یعنی میشه با اضافه کردن فایلهای ترجمه، زبانی که توی رابط گرافیکی برنامه استفاده میشه رو تغییر داد. این فایلهای ترجمه توی گنو/لینوکس معمولاً پسوند mo دارن، البته بعد از کامپایل، اما قبل از کامپایل فایلهایی با پسوند po هستن که فایل‌های متنی ساده(و عموماً بصورت UTF-8) هستن که میشه توسط یه ویرایشگر ساده هم اونا رو درست کرد، بعد به فایلهای mo کامپایل شده و نصب میشن و به این ترتیب پشتیبانی از اون زبان، به اون نرم‌افزار اضافه میشه و اگه زبان سیستم رو تغییر بدید، زبان interface اون نرم‌افزار هم تغییر میکنه. یعنی اگه موقع لاگین به گنوم یا KDE زبان سیستم رو به فارسی تغییر بدید، تمام نرم‌افزارهایی که پشتیبانی از فارسی بهشون اضافه شده، خود به خود فارسی میشن.

اما شما ممکنه بخواید فقط یه نرم‌افزار خاص interface ش فارسی بشه، نه کل سیستم(شامل گنوم یا kde و تمام نرم‌افزارها). اکثر نرم‌افزارهایی هم که بصورت چندزبانه طراحی شدن(یعنی با فایل‌های ترجمه میشه فارسی‌شون کرد) امکان تغییر زبان از طریق خود نرم‌افزار رو ندارن. در واقع معدود نرم‌افزارهایی هستن که این قابلیت رو اشته باشن، مثل دیکشنری xFarDic یا همین StarCalendar خودمون که توی تنظیماتش گزینه‌ای برای تغییر زبان داره(البته برای اعمال شدن باید برنامه ری‌استارت بشه). پس برای باقی نرم‌افزارها چیکار باید کنیم. مثلاً میخوایم فقط Evolution یا مثلاً StarDict محیطش فارسی بشه، اما نه کل سیستم. راهش خیلی ساده‌س. یه ترمینال باز کنید و توش بنویسید LANG=fa_IR.UTF-8 بعد یه فاصله(space) بزنید و بعدش دستور همون نرم‌افزار رو بنویسید(مثلاً evolution یا stardict یا هر چی). تمام.

یا اینکه بنویسید export LANG=fa_IR.UTF-8 و اینتر و بعدش دستور اون نرم‌افزار.

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

ناتیلوس(مدیر فایل گنوم) و gedit و مجموعهٔ OpenOffice.Org و خیلی نرم‌افزارهای دیگه هم همینطور هستن.

بعضی از نرم‌افزارها هم که فقط در یک پنجره میتونن اجرا بشن. مثل StatDict و xFarDic و MDic و… البته منظورم اونهایی هستن که موقع اجرا چک می‌کنن که آیا یک پروسهٔ دیگه در حال اجرای این برنامه هست یا نه. وگرنه بعضی نرم‌افزارها(مثل StarCalendar خودمون) اصلاً چک نمیکنن و میشه چند بار همزمان اجرا کرد و مستقل از هم باشن(بر خلاف فایرفاکس و ناتیلوس و…). پس تا اینجا نرم‌افزارها رو به سه دسته تقسیم کردیم.

از بحث اصلی دور نشیم. منظورم این بود که بعضی از نرم‌افزارها برای اینکه با interface فارسی اجراشون کنیم، باید تمام پنجره‌های مربوط به اون نرم‌افزار که در حال اجرا هست رو ببندیم.

پس این کد می‌تونه برای فارسی کردن Evolution به کار بره:

killall evolution

LANG=fa_IR.UTF-8 evolution

یا اینطوری:

killall evolution

export LANG=fa_IR.UTF-8

evolution

(خط اول برای اینکه مطمئن بشیم در حال اجرا نیست)

که برای راحتی کار خودتون، میتونید این دو سه خط رو توی یه اسکریپت کوچیک قرار بدید و مثلاً در مسیر usr/bin/evolution-fa/ قرار بدید و هر وقت خواستید دستور evolution-fa رو اجرا کنید، تا مستقل از زبان کل سیستم، Evolution رو بصورت فارسی داشته باشید.

اما تمام اینها به شرطی هست که language-pack فارسی به سیستمتون اضافه شده باشه و فایلهای ترجمهٔ Evolution هم نصب شده باشه. خلاصه‌ش اینکه اگه از گنوم و یکی از توزیع‌های مبتنی بر دبیان(مثل اوبونتو) استفاده می‌کنید، این پکیج‌ها رو نصب کنید:

language-pack-fa

language-pack-fa-base

language-pack-gnome-fa

language-pack-gnome-fa-base

البته نصب این پکیج‌ها شرط کافی هست، اما شرط لازم نیست! شاید بعداً در این مورد بیشتر نوشتم.

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

یکی از کاربران گنو/لینوکس با اسم مستعار 417 جدیداً تعدادی از اپلیکیشن‌های گنوم رو ترجمه کرده بود(یا ترجمه‌های موجود رو تکمیل کرده بود)

خودم هم چند وقتی هست که دارم ترجمهٔ Evolution (و گاها بعضی اپلیکیشن‌های دیگه) رو تکمیل می‌کنم. که خب ان‌شاءالله بعداً درباره‌ش می‌نویسم و فایل‌هاش رو براتون آپلود می‌کنم.

موفق باشید


Time Format of GNOME Clock

2009/05/28

مقدمه:

یکی از ویژگی‌های محیط گرافیکی گنوم اینه که همهٔ امکاناتش جلوی چشم نیستن، حتی بعضیاش تا حدودی پنهان هستن. این هم می‌تونه عیب باشه، هم حسن، حالا بحثم این نیست. شاید بعداً در مورد ویژگی‌های مختلف گنوم و KDE بحث کردم. اما به هر حال کشف امکانات مخفی گنوم، میتونه خیلی جالب و هیجان‌انگیز باشه :-D

ابزار gconf-editor یه ابزار واقعاً کامل برای تنظیمات مختلف گنوم هست، که خیلی از اون امکانات مخفی گنوم رو برای ما آشکار میکنه. قبلاً یه مقاله‌ای در مورد auto thumbnailing در گنوم نوشتم که توسط همین ابزار بود. جدیداً هم به یه نکتهٔ جالب پی بردم که موضوع همین مطلب هست:

تغییر فرمت تاریخ و زمان، در اپلت ساعت گنوم

دستور gconf-editor رو داخل ترمینال(یا با Alt+F2 و باز شدن run application) تایپ کنید تا پنجرهٔ Configuation Editor باز بشه. یه نمودار درختی می‌بینید که شبیه فایل‌سیستم یا همون سیستم پوشه دایرکتوری هست. حالا باید مسیر مربوط به تنظیمات ساعت گنوم رو پیدا کنید. از منوی Edit گزینهٔ Find رو انتخاب کنید(یا کنترل+F بزنید) و بنویسید ClockApplet و اون تیک دوم(saerch also in key values) رو علامت بزنید و دکمهٔ Find رو بزنید. احتمالا دو تا مورد براتون پیدا میکنه. یکی

/apps/panel/default_setup/applets/clock/bonobo_iid

و یکی هم چیزی شبیه این

/apps/panel/applets/applet_2/bonobo_iid

(شایدم شماره‌ش فرق داشته باشه)

مورد اول همونطور که از اسمش پیداست مربوط به بعضی تنظیمات پیش‌فرض اپلت ساعت گنوم هست، که ما فعلاً با این کاری نداریم(اون چیزی که میخوام بگم توی این نیست)

شما روی مورد دوم کلیک کنید. بعد سمت چپ، از توی اون نمودار درختی، زیرشاخهٔ prefs رو انتخاب کنید، تا در نهایت به این مسیر برسید:

/apps/panel/applets/applet_2/bonobo_iid /prefs

حالا برید سمت راست و پارامتر هفتم یعنی format رو ویرایش کنید و بنویسید custom (روش دبل کلیک کنید و تاپ کنید custom و اینتر) حالا برید سراغ پارامتر دوم یعنی پارامتر custom_format و اون رو ویرایش کنید و هر چی خواستید بذارید. مثلاً من گذاشتم:

%Y/%m/%d – %T

که در نتیجه اپلت ساع گنوم همچین چیزی رو نشون میده:

2009/05/28 – 05:47:50

اینجا شما باید با فرمت زمان و تارخ آشنا باشید. اگه برنامه‌نویس باشید شاید تابع strftime رو دیده باشید. مخصوصاً برنامه‌نویسان وب و PHP حتماً باید با این چیزا آشنا باشن. اگه هم به خط فرمان گنو/لینوکس(یا کلاً یونیکس) علاقه داشته باشید، حتماً دستور date و فرمت‌های مختلفی که میشه بهش داد به دردتون می‌خوره.

مثلاً دستور زیر توی ترمینال:

date +%Y-%m-%d

یه همچین خروجی رو به شما میده:

2009-05-28

که مخصوصاً توی اسکریپت‌نویسی bash ممکنه به درد بخوره.

یا مثلاً دستور

date «+Date: %Y/%m/%d Time: %T»

یه همچین خروجی رو میده:

Date: 2009/05/28 Time: 06:04:55

بطور خلاصه:

عبارت Y% نماد سال هست. و y% فقط دو رقم سمت راستش هست(مثلاً 09 بجای2009)

عبارت m% نماد شمارهٔ ماه(در سال) هست

عبارت d% نماد شمارهٔ روز(در ماه) هست

عبارت D% خلاصهٔ تاریخ هست(سه تای قبلی) مثلاً 05/28/09

عبارت T% نماد زمان بصوت کامل(ساعت:دقیقه:ثانیه) هست

عبارت A% نماد اسم روز در هفته هست(مثلاً Thursday) و a% خلاصه‌ش(مثلاً Thu)

بقیه‌ش رو دیگه خواستید توی منوال دستور date بخونید(man date)

راستی توی gconf-editor اون مسیر

/apps/panel/applets/applet_2/bonobo_iid

رو می‌تونید bookmark کنید(منوی Bookmark گزینهٔ Add Bookmark) که اگه بعداً دوباره خواستید فرمتش رو تغییر بدید راحت پیداش کنید.

اینم یه اسکرین‌شات بعنوان خلاصهٔ کل این بحث:

نکتهٔ آخر این که اون کار رو(که با gconf-editor انجام دادیم)، می‌تونیم از طریق ترمینال و با مستقیماً با دستور gconftool هم انجام بدیم:

gconftool -s /apps/panel/applets/applet_2/prefs/custom_format -t string «%Y/%m/%d – %T»

موفق باشید


دنبال‌کردن

هر نوشتهٔ تازه‌ای را در نامه‌دان خود دریافت نمایید.