وبلاگ سعید رسولی

بخور، بخواب، کد بزن

بخور، بخواب، کد بزن

گنو/لینوکس، پایتون، زندگی

مطالب پربحث‌تر

به طور همزمان، نسخهٔ 2.4.2 و نسخهٔ 3.0.0 منتشر شدند


به دلیل تغییرات کلی و اساسی در نسخهٔ 3 ، خط توسعهٔ 2.4 تا زمان پایدار شدن نسخهٔ 3 ادامه پیدا می‌کند
همینطور کسانی که از توزیع‌های قدیمی لینوکس استفاده می‌کنند و فعلاً امکان استفاده از نسخهٔ 3 را ندارند می‌توانند از 2.4.2 استفاده کنند

لینک‌های دانلود 3.0.0

لینک‌های دانلود 3.0.1

Source Code - starcal-3.0.1.tar.gz
Debian/Ubuntu - starcal3_3.0.1-1_all.deb
OpenSUSE - starcal3-3.0.1-1.noarch-openSUSE.rpm


تذکر: اگر پکیج دبیان را در اوبونتو نصب می‌کنید، قبل از اجرای برنامه، این دستور را اجرا کنید:

sudo apt-get install 'gir1.2-appindicator3*'


لینک‌های دانلود 2.4.2

starcal2_2.4.2-1_all.deb

Source Code - 2.4.2.tar.gz



تغییرات نسخهٔ 2.4.2 نسبت به 2.4.1
    رفع یک باگ در تقویم جلالی
    رفع مشکل نصاب آرچ‌لینوکس توسط « امیر کریمی »
    اضافه شدن گزینهٔ (ترجیحات -> ظاهر -> نماد وضعیت -> اندازهٔ ثابت)، مورد نیاز در Xubuntu
    رفع باگ در پنجرهٔ شخصی‌سازی که تغییرات بر روی « کنترل‌کنندهٔ پنجره » اعمال نمی‌شد
    اصلاح صفحهٔ خانگی برنامه (به گیت‌هاب)


و اما تغییرات نسخهٔ 3.0.0 نسبت به 2.4.2

۱- مهاجرت از Gtk2 به Gtk3
تا به حال از فریم‌ورک PyGTK برای رابط گرافیکی استفاده می‌کردیم، که مبتنی بر Gtk2 است و با وجود پایداری فوق‌العاده، توسعهٔ آن متوقف شده است و هرگز به سمت Gtk3 و/یا پایتون ۳ نخواهد رفت
در این نسخه بطور کامل به فریم‌ورک PyGI یا python gobject introspection مهاجرت کردیم که مبتنی بر Gtk3 است و آینده را در دست دارد
این پروژه وابستگی چندانی به پایتون ندارد و در تمام زبان‌های محبوب پیاده‌سازی شده است

۲- مهاجرت از پایتون 2.7 به پایتون 3
مهاجرت به پایتون 3 راحت نبود، ولی راحت‌تر از مهاجرت به Gtk3 بود
و چون PyGI به خوبی در پایتون ۳ پشتیبانی می‌شود، تصمیم گرفتم که همزمان به پایتون ۳ هم مهاجرت کنم
توسعه و تست‌های من با پایتون 3.4.3 انجام شده است، ولی احتمالاً با ورژن‌های قبل و بعد پایتون 3 هم سازگار است


۳- استفادهٔ حداکثر از فرمت JSON به جای سایر فرمت‌ها
برای تقریباً تمام فایل‌های تنظیمات برنامه و همینطور افزونه‌ها به فرمت json سوییچ کردم
این یکی از دلایلی است که نسخه‌ٔ 3 با نسخهٔ 2.4 سازگار نیست، یعنی پوشهٔ تنظیمات آن جداست
اما نگران نباشید، تنظیماتی که بر روی نسخه‌های قبل انجام داده‌اید به راحتی import خواهند شد

۴- تغییر فرمت و ساختار ذخیره‌سازی رویدادها
در این نسخه برای ذخیره‌سازی دیتای رویدادها از ترکیب فرمت JSON و BSON با ساختار hash-based شبیه به git استفاده می‌شود
این تغییر، در نسخه‌های بعد (تا چند سال آینده) بسیار مفید خواهد بود
ولی بخاطر شکستن سازگاری مجبور بودم این تغییر را در 3.0.0 انجام دهم (در نسخه‌های بعد سازگاری حفظ خواهد شد)

از دید کاربر، فعلاً تنها نکته این است که وابستگی به پکیج python3-bson اضافه شده است
از دید یک برنامه‌نویس می‌توان به این نکته اشاره کرد که فرمت bson در دیتابیس محبوب MongoDB هم استفاده می‌شود




بخاطر تغییرات ذکر شده در بند ۳ و ۴، در اولین اجرای این نسخهٔ، یک پنجره با عنوان StarCalendar 3.x - First Run باز می‌شود که به شما اجازه می‌دهد تنظیمات و دیتای نسخهٔ 2.4 را به نسخهٔ 3.0 وارد (import) کنید
با زدن دکمهٔ OK کار import کردن شروع می‌شود. اگر رویداهای زیادی داشته باشید، ممکن است این کار چند دقیقه طول بکشد

اگر هم قبلاً نسخهٔ 2 را نداشته‌اید، فقط کافیست زبان برنامه را انتخاب کنید. در این صورت حتماً زبان Persian را انتخاب کنید چون بعضی از تنظیمات بومی دیگر هم بطور پیش‌فرض از روی زبان اولیه تعیین می‌شود

در هر دو صورت، بعد از OK کردن و اتمام کار و بسته شدن این پنجره، برنامه اجرا می‌شود






سایر تغییرات:

۵- اضافه شدن « رویداد ماهیانه »
رویدادی که در یک بازهٔ چند ماهه یا چند ساله، در یک روز خاصی از ماه و از ساعت خاصی تا ساعت خاصی تکرار می‌شود

۶- اضافه شدن آیکون‌های SVG سبک اوبونتو برای « نماد وضعیت » توسط دانیال بهزادی
دوست عزیزم دانیال بهزادی حدوداً ۸ ماه پیش این را بصورت یک pull request در github اضافه کرد
ولی بخاطر اینکه در برنچ master فقط رفع باگ‌ها انجام می‌شوند و از آن زمان، نسخهٔ جدیدی هم منتشر نشد، نتوانستم زودتر آن را در انتشارهای برنامه قرار دهم


۷- اضافه شدن event lock
بخاطر ساختار ذخیره‌سازی رویدادها، اگر همزمان دو پروسه از starcal 3 در حال اجرا باشند، و هر دو در رویدادها تغییراتی ایجاد کنند، دیتای رویدادها دچار مشکل خواهد شد
به همین دلیل یک lock file اضافه شده است، که پروسهٔ دوم نتواند در رویدادها تغییری ایجاد کند، بلکه فقط بتواند آنها را بخواند
وابستگی به پکیج python3-psutil بخاطر این قابلیت است


۸- استفاده‌ٔ بیشتر از فرمت SVG
باز هم فرمت SVG در کدنویسی گرافیک برنامه (مثلاً آیکون Drag & Drop و check box های پنجرهٔ مدیریت رویدادها) به دادم رسید
و مهاجرت کامل و بی‌نقص به Gtk3 را برایم امکان‌پذیر کرد

۹- حدف سازگاری با نسخهٔ 1.5.3
برای تمیزتر شدن کد و افزایش بازدهی، سازگاری با نسخهٔ 1.5.3 و یا قبل از آن، بطور کامل حذف شد

۱۰- رفع مشکل پخش صدای اذان
متأسفانه باز هم قابلیت پخش صدای اذان (توسط پلاگین اوقات شرعی) مشکل داشت، و در صورت باز نبودن پنجرهٔ اصلی، فایل صوتی پخش نمی‌شد
با تست‌های خودم، این مشکل در این نسخه برطرف شده است

۱۱- و طبق معمول، تعدادی تغییرات و بهبودهای جزئی، رفع باگ‌های کوچک، و مقدار زیادی تمیزکاری در کد


نکاتی در مورد پکیج برنامه:

۱- کاربران اوبونتو اگر پکیج دبیان را دانلود و نصب می‌کنند، قبل از اجرای برنامه این دستور را بزنند:


sudo apt-get install 'gir1.2-appindicator3*'



۲- کاربران openSUSE با دانلود پکیج سورس و با اجرای این دستور:

sudo ./install-suse

می‌توانند برنامه را نصب کنند

کاربران ArachLinux هم از این دستور برای نصب استفاده کنند:

./install-archlinux

و کاربران فدورا از این دستور:

sudo ./install-fedora


۳- پکیج نسخهٔ 3 جدای از پکیج نسخهٔ 2.4 است، بنابراین می‌توانید نسخهٔ 3.0 و نسخهٔ 2.4 را همزمان نصب داشته باشید و همزمان استفاده کنید، و هیچ تضادی با هم نخواهند داشت


۴- کاربران توزیع‌هایی مثل Slackware و Gentoo که سورس برنامه را دانلود کرده و مستقیماً اجرا می‌کنند، و یا با اسکریپت install نصب می‌کنند، مجبورند پکیج‌های مورد نیاز برنامه را دستی نصب کنند
اسم پکیج‌های موردنیاز در دبیان به این صورت است (نام پکیج‌های مربوط به توزیع خودتان را با کمک گوگل پیدا کنید):
python3-gi
python3-gi-cairo
python3-httplib2
python3-psutil
python3-bson
و این پکیج‌ها هم برای بعضی قابلیت‌های برنامه موردنیاز هستند:
python3-dateutil
python3-igraph
python3-gnomevfs


۱۰ نظر موافقین ۰ مخالفین ۰ ۰۸ دی ۹۴ ، ۱۵:۱۹
سعید رسولی

یک عبارت از یک آماردان قرن بیستم آمریکایی به نام Frederick Mosteller‎ دیدم که احساس کردم ارزش یک پست وبلاگ رو داره:

‏«دروغ گفتن با آمار راحته، دروغ گفتن بدون آمار راحت‌تره.»

"It is easy to lie with statistics; it is easier to lie without them."

۰ نظر موافقین ۰ مخالفین ۰ ۲۳ ارديبهشت ۹۴ ، ۰۷:۱۷
سعید رسولی

اگه توی کنفرانس پایتون که این جمعه برگذار میشه ثبت‌نام نکردید، ظاهرا هنوز می‌تونید ثبت‌نام کنید

http://myevent.ir/pycon

نوشته ثبت‌نام فوق‌العاده تا دهم (یعنی روز قبلش) ولی اگه می‌خواید بیاید همین الآن ثبت‌نام کنید :)

۰ نظر موافقین ۰ مخالفین ۰ ۰۸ ارديبهشت ۹۴ ، ۰۹:۲۱
سعید رسولی

این متن The Zen of Python هست که با import this به شما نشون داده میشه و فلسفه و شعار و خط مشی کلی پایتون رو نشون میده.

نمی‌دونم ترجمهٔ خوبی از این متن شده یا نه، برای همین خودم دوباره ترجمه کردم با عنوان «سرلوحهٔ پایتون»

من این متن رو (به انگلیسی) چاپ کردم و دیوار اتاقم چسبوندم


The Zen of Python, by Tim Peters


Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren't special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you're Dutch.

Now is better than never.

Although never is often better than *right* now.

If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let's do more of those!

سرلوحهٔ پایتون، نوشتهٔ Tim Peters


زیبا بهتر از زشت است.

صریح بهتر از ضمنی است.

ساده بهتر از پیچیده است.

پیچیده بهتر از بغرنج (غیر قابل فهم) است.

هموار بهتر از تودرتو است.

کم‌پشت بهتر از متراکم است.

خوانایی اهمیت دارد.

حالت‌های خاص آنقدر خاص نیستند که قواعد را بخاطرشان زیر پا بگذاریم.

گرچه عملی بودن بر ناب بودن غلبه می‌کند.

ارورها هرگز نباید بطور پنهان رد شوند.

مگر آنکه صریحا (توسط کاربر) پنهان شده باشند.

در برخورد با ابهام، وسوسهٔ حدس زدن را رد کنید.

برای هر کار باید یک -- و ترجیحاً فقط یک -- راه واضح وجود داشته باشد.

گرچه آن راه ممکن است در ابتدا واضح نباشد، مگر اینکه شما هلندی باشید.

«الآن» بهتر از «هرگز» است.

گرچه «هرگز» معمولاً بهتر از «همین الآن» است.

اگر پیاده‌سازی یک ایده، توضیح دادنش سخت است، ایدهٔ بدی است.

اگر پیاده‌سازی یک ایده، توضیح دادنش آسان است، ممکن است ایدهٔ خوبی باشد.

استفاده از فضاهای نامی ایدهٔ فوق‌العاده خوبی است -- بیایید از آنها بیشتر استفاده کنیم!

۱ نظر موافقین ۰ مخالفین ۰ ۰۴ ارديبهشت ۹۴ ، ۱۷:۲۸
سعید رسولی

سلام و عید نوروز مبارک :)


این فایل‌های سمیناری هست که در ۲۵ اسفند ۱۳۹۳ در لاگ اصفهان در مورد «مجوزهای آزاد نرم‌افزاری» دادم:

Download PDF

Download ODP


و این هم متن کامل دیالوگی که در بهمن سال ۱۳۸۷ با ریچارد استالمن داشتم و سوال‌‌هایی که پرسیدم و جواب‌هایی که داد:

me-rms-emails.pdf

(اون موقع انگلیسی‌م ضعیف بود!)


اون ترجمه‌ای که از متن ویدئوی اعلامیه انتشار GPLv3 کرده بودم نیاز به ویرایش داره، و بعدا می‌ذارم.


۲ نظر موافقین ۱ مخالفین ۰ ۲۹ اسفند ۹۳ ، ۱۹:۵۲
سعید رسولی

استارکلندر 2.4.1 منتشر شد

starcal2_2.4.1-1_all.deb

starcal2-2.4.1-1.noarch-openSUSE.rpm

Github Release


در این نسخه چند باگ برطرف شد از جمله:

ارور در کد منطقهٔ زمانی که در شرایط خاصی پیش میومد

عدم ذخیره کردن تنظیمات پنجرهٔ «شخصی‌سازی» که در شرایط خیلی خاصی پیش میومد و فقط توسط یک کاربر گزارش شده بود

توی پکیج دبیان/اوبونتو، مقدار Installed Size اشتباه بود (هزار برابر نشون میداد)

توی اسکریپت install-suse هم اروری مربوط به فایل desktop داده میشه که رفع شد

و یکی دو باگ جزئی دیگه که شاید کسی متوجهش نشده باشه

۹ نظر موافقین ۱ مخالفین ۰ ۱۶ بهمن ۹۳ ، ۲۳:۱۴
سعید رسولی

حدود ۸ سال پیش اولین شعرم رو نوشتم که شاید نمی‌شد اسمش رو شعر گذاشت

حال و هوای امروز اهواز من رو دوباره یاد اون شعر انداخت و چون شعر ضعیفی بود تصمیم گرفتم بازنویسی‌ش کنم

که نتیجه‌ش شد این:

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

کویر است و شن و طوفان

شبی تار و بسی سوزان

به سانِ سردی قلبم

کویر است و شب است و غفلتِ یاران

که در چادر پناهی بهرِ خود جویند و می‌دانم که تا پایانِ شب هرگز نپایند

چرا آن خرسِ کوچک* در میان شب نهان است؟

چگونه راهِ خود را بازیابم؟

منم با این زبانِ خشک و عطشان

و چشمانی که شد آماجِ شن‌ها

نه بُگشودن توانم چشم‌ها را

نه با بستن امیدِ راه جُستن

منم با این دهانِ پر ز شن‌ها

که نتوانم به یاران هین بگویم

کویر است و هراس و شکّ و تردید

من این قصّه سرانجامش ندانم

کویر است و شن و طوفان

و این شعری که پایانش ندانم

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

*صورت فلکی خرس کوچک (دب اصغر) که ستارهٔ قطبی جزئی از آن است

۱ نظر موافقین ۱ مخالفین ۰ ۱۰ بهمن ۹۳ ، ۱۸:۰۵
سعید رسولی

این یکی از عجیب‌ترین و خنده‌دارترین ارورهای پایتون هست که تا به حال بهش برخورد کردم:

(البته فقط توی پایتون ۲)

UnboundLocalError: local variable 'IndexError' referenced before assignment


و این کدی هست که اون ارور رو توی پایتون 2.7 تولید می‌کنه:

def func1():
    l = []
    d = {}
    try:
        l[0]
    except IndexError:
        print 'list item not found'
    try:
        d['a'][0]
    except KeyError, IndexError:
        print 'dict item not found'
func1()


این هم متن کامل ارور:

Traceback (most recent call last):
  File "funny-python-error.py", line 18, in <module>
    func1()
  File "funny-python-error.py", line 10, in func1
    except IndexError:
UnboundLocalError: local variable 'IndexError' referenced before assignment



اما چه چیزی باعث ایجاد این ارور شده؟ این خط:

    except KeyError, IndexError:

که از لحاظ سینتکسی درسته(توی پایتون ۲)، ولی از لحاظ منطقی کاملاً اشتباهه. و باید تغییر کنه به:

    except (KeyError, IndexError):


چون بدون پرانتزها (که tuple ایجاد می‌کنه)، علامت ویرگول به معنای as هست(که as توی 2.6 اضافه شده)، پس این دو خط معادل هم هستن:

    except KeyError, IndexError:
    except KeyError as IndexError:


که باعث میشه شیء درونی IndexError بازنویسی بشه و اتفاقات عجیب و غریب بیفته. در واقع من هنوز نمی‌دونم چرا حتی قبل از بازنویسی‌ش هم IndexError توی اون تابع ناشناخته‌س. اون ارور کذایی قبل از رسیدن به این خط داده میشه. فقط می‌دونم که اشیاء درونی پایتون از جمله IndexError نباید بازنویسی بشن، حتی اگه پایتون این اجازه رو بهمون بده


مثلاً هستن برنامه‌نویس‌هایی که متغیرهایی به اسم id یا type یا str تعریف می‌کنن که خیلی کار بدیه و باعث ایجاد مشکلات غیرمنتظره میشه. باید حداقل یه underline اول اسم این متغیرها بذاریم که با اشیاء و توابع درونی پایتون قاتی نشه.


نکتهٔ بعدی اینکه سینتکس

except KeyError as e:

توی پایتون 2.6 اضافه شده، ولی اون سینتکس قبلی

except KeyError, e:

بخاطر سازگاری، توی 2.6 و 2.7 هم پشتیبانی میشه. ولی بخاطر ابهامی که داره (که اینجور مشکلات هم نتیجهٔ این ابهام هست) توی پایتون ۳ پشتیبانی نمیشه.


یعنی توی پایتون 2.6 و 2.7 و 3 می‌تونید این‌ها رو بنویسید:

except KeyError as e:
except (KeyError, IndexError):
except (KeyError, IndexError) as e:


این رو توی پایتون 2 می‌تونید بنویسید ولی توی پایتون 3 نمی‌تونید بنویسید:

except KeyError, e:

در نتیجه اون ارور عجیب و غریب احتمالاً توی پایتون ۳ دیده نمیشه (مگه به دلیل دیگه‌ای)


۴ نظر موافقین ۰ مخالفین ۰ ۱۵ دی ۹۳ ، ۱۶:۰۷
سعید رسولی

انتشار استارکلندر 2.4.0


دانلود:

starcal-2.4.0.tar.gz

starcal2-2.4.0-1.noarch-openSUSE.rpm

starcal2_2.4.0-1_all.deb


Github Release


تغییرات نسبت به نسخهٔ 2.3.4


۱- کاهش زمان لازم برای شروع شدن برنامه

اصطلاحاً Laziness (تنبلی) برنامه به حداکثر خودش رسیده. اون ماژول‌ها و کدهایی که برای شروع کار برنامه لازم نیستن، در شروع برنامه، لود نمیشن و هر موقع که بهشون نیاز شد لود میشن.

میزان کاهش این مدت زمان، کاملاً بستگی به تنظیمات شما، تعداد رویدادها و ... داره. ممکنه بین ۲۰ تا ۶۰ درصد کاهش پیدا کنه.

امیدوارم کاربرانی که از زمان اجرای برنامه شکایت می‌کردن راضی شده باشن :)


۲- کاهش زمان باز شدن پنجرهٔ مدیریت رویدادها برای اولین بار

در پنجرهٔ مدیریت رویدادها، درخت رویدادها بطور کامل نمایش داده میشد که اگه تعداد رویدادهای شما زیاد بود، تشکیل این درخت در رابط گرافیکی، که در اولین باز کردن «این پنجره» انجام میشد، زمان زیادی طول می‌کشید. ضمن اینکه RAM زیادی هم اشغال می‌کرد.

در این ورژن، رویدادهای داخل یک گروه غیرفعال، در درخت لود نمیشه و نمایش داده نمیشه، مگه اینکه اون گروه رو فعال کنید.

چون فرض میشه کاربر معمولاً نیازی به ویرایش محتویات یک گروه غیرفعال نداره. اگر هم داره، می‌تونه اون رو فعال و دوباره غیرفعال کنه. با غیرفعال کردن گروه، محتویاتش در درخت، ناپدید *نمیشه*. چون هدف اصلی، کاهش زمان اولین باز شدن پنجره بود.


۳- نماد وضعیت

اصطلاح انگلیسی Tray Icon که ترجمهٔ خوبی به فارسی نداشت، به اصطلاح کلی‌تر و دقیق‌تر Status Icon تغییر کرد که ترجمه میشه به «نماد وضعیت»

یعنی دیگه کلمهٔ Tray در هیچ‌جای برنامه (نه رابط گرافیکی، نه کد) دیده نمیشه.

همینطور مسیر فایل‌های svg آیکون‌ها تغییر کرده و از پوشهٔ pixmaps به پوشهٔ مجزای status-icons جابجا شدن.

به همین خاطر، «نماد وضعیت» به حالت پیش‌فرض برمی‌گرده و اگه چیز دیگه‌ای (از بین آیکون‌های svg خود برنامه) گذاشته بودید، باید دوباره تغییر بدید.


۴- کپی یک رخداد (Occurence) از یک رویداد تکرارشونده

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

هنوز این قابلیت در برنامه وجود نداره که برای هر رخداد/نمونه از یک رویداد تکرارشونده، بشه یادداشت یا متن مجزا اضافه کرد یا حتی یک Occurence رو جدا (exclude) کرد از رویداد اصلی. ولی با این قابلیت کپی رخداد/نمونه که اضافه شده، فعلاً تا حدی میشه این‌گونه نیازها رو برآورده کرد.


۵- رفع مشکل پخش صدای اذان در افزونهٔ اوقات شرعی

در نسخه‌های قبل بخاطر اینکه برای زمان‌بندی پخش فایل صوتی، از ماژول gobject و تابع timeout_add استفاده می‌شد، اگه در حال اجرای استارکل، کامپیوترتون رو suspend می‌کردید، زمان پخش صوت با مشکل مواجه میشد.

به همین خاطر من به ماژول threading خود پایتون سوییچ کردم و این مشکل بطور کلی حل شد. الآن میشه گفت زمان پخش فایل اذان (و پیش‌اذان) دقیق هست.


۶- راست‌به‌چپ و مختصات منوها

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

در این نسخه، مختصات منوها کلاً بهبود پیدا کرده، مخصوصاً برای فارسی.


۷- تغییر صفحهٔ خانگی برنامه به گیت‌هاب

مدت‌ها بود آخرین کدهای برنامه روی github بود، ولی بخاطر تاریخچه و عمومیت سورس‌فورج، آرشیو انتشارهای برنامه رو توی سورس‌فورج هم می‌گذاشتم.

ولی بالأخره دست از سورس‌فورج برداشتیم و صفحهٔ خانگی پروژه رو تغییر دادیم به:

ilius.github.io/starcal


۸- بروزرسانی ماه‌های قمری و مناسبت‌ها طبق تقویم رسمی ۱۳۹۴

طبق معمول هر سال، مطابق با تقویم رسمی سالانهٔ ایران (که ۳-۴ ماه مونده به نوروز، توسط مؤسسهٔ ژئوفیزیک دانشگاه تهران منتشر میشه)، دیتای مربوط به طول ماه‌های قمری، و همینطور تغییراتی که در مناسبت‌های رسمی کشور داده شده بود، در استارکلندر هم آپدیت و اعمال شد.


۹- تغییر در نیازمندی‌های برنامه و سایر تغییرات

نیازمندی به پکیج pytz کلاً برداشته شد و دیگه از pytz استفاده نمی‌کنیم

این نصب برنامه رو راحت‌تر و سریع‌تر می‌کنه، چون این پکیج، دیتای مناطق زمانی رو در خودش داره و حدود ۴۶۰ کیلوبایت حجم داره (حجم کل استارکل کمتر از ۶۰۰ کیلوبایته)

در این نسخه، این کتابخونه با کدی جایگزین شده که از دیتای مناطق زمانی که توی خود گنو/لینوکس هست استفاده می‌کنه.

در نتیجه این نسخه با ویندوز سازگار نخواهد بود

سعی می‌کنم در نسخه‌های بعد، سازگاری با ویندوز رو هم به این کد اضافه کنم


ضمناً، نیازمندی اختیاری به کتابخونه python-dateutil هم اضافه شده که فقط برای صدور به iCalendar یا ics استفاده میشه. و بدون نصب این کتابخونه هم، برنامه اجرا میشه و کار می‌کنه.


و خب طبق معمول باگ‌هایی که پیدا شدن رو برطرف کردم و تمیزکاری‌هایی در کد انجام دادم


۱۲ نظر موافقین ۰ مخالفین ۰ ۳۰ آذر ۹۳ ، ۱۷:۲۰
سعید رسولی

تغییرات نسبت به نسخهٔ 2.3.3

اضافه شدن اسکریپت install-ubuntu برای کاربران اوبونتو

رفع چند باگ در اسکریپت‌های نصب، خط زمان و پلاگین اوقات شرعی

 

نکات انتشار و لینک‌های دانلود

۱۶ نظر موافقین ۲ مخالفین ۰ ۱۹ خرداد ۹۳ ، ۲۲:۴۷
سعید رسولی