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

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

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

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

آخرین مطالب
مطالب پربحث‌تر

Partition Table Structure

سلام
با بسته شدن wordpress.com احساس کردم بهتره این مطلب رو که چند سال پیش گذاشته بودم، دوباره توی وبلاگ جدید پست کنم.

یه نموداری رو درست کردم که ساختار پارتیشن‌بندی هارد رو در حالت‌های مختلف نشون بده. مخصصوصاً برای کسایی که میخوان لینوکس نصب کنن(اونم رو یه هاردی که ویندوز یا دیتا روش هست) درک کردن ساختار partition table خیلی کمک میکنه. متأسفانه حتی خیلی از لینوکس‌کارهای نسبتاً باتجربه هم ساختار Partition Table هارد رو درست درک نکردن و فرق بین Primary و Logical و Extended رو نمیدونن(حتی بعضی‌ها فرق بین Extended با فرمت ext3 رو نمیدونن). توصیه می‌کنم به این نمودار حسابی دقت کنید و برید توی بهرش تا ساختار Partition Table هارد رو درک کنید، چون زیربنای پارتیشن‌بندی درست همین هست، اگه اینو یاد بگیرید با هر ابزاری که دم دستتون باشه می‌تونید پارتیشن‌بندی کنید.





این مستطیل‌های افقی که می‌بینید(یازده تا) که از هم جدا هستن، هر کدوم یه هارد هستن، در واقع چند مثال از حالت‌های مختلف پارتیشن‌بندی هستن.
پارتیشن Extended ظرفی برای پارتیشن‌های Logical هست. در واقع Extended یه پارتیشن مجازی هست یعنی ما نمی‌تونیم ازش مستقیماً برای ذخیره‌سازی دیتا استفاده کنیم. در واقع ما فقط از پارتیشن‌های Primary و Logical برای ذخیره‌سازی دیتا استفاده می‌کنیم.
هر هارد حداکثر یک پارتیشن Extended میتونه داشته باشه(یعنی یا یدونه یا هیچی). و حداکثر 3 پارتیشن Primary میتونه داشته باشه(و حداقل هم یکی). البته اگه Extended (و در نتیجه Logical) نداشته باشید می‌تونید 4 تا Primary هم داشته باشید. اما هر تعداد Logical ها محدودیت نداره، به شرطی که یدونه Extended داشته باشیم، اونوقت هر تعداد که خواستیم می‌تونیم داخلش Logical بذاریم.
اگه هارد رو به یه اداره یا شرکت تجاری تشبیه کنیم، پارتیشن(های) Primary مثل مدیر(های) شرکت هستن، و پارتیشن Extended رو میشه به محل کار کل کارمندان شرکت تشبیه کرد که هر پارتیشن Logical مثل یکی از کارمندان شرکت هستن.
فرمت‌های مختلف پارتیشن مثل fat و fat32 و ntfs و ext2 و ext3 و reiserfs و... ربطی به نوع پارتیشن(Primary و Logical و Extended) نداره، یعنی یه پارتیشن چه Logical باشه چه Primary میتونه هر فرمتی(مثل ext3 و ext4 و fat32) داشته باشه. این فرمت‌ها نحوهٔ ذخیره‌سازی دیتا روی پارتیشن رو مشخص می‌کنن(پارتیشن Extended هم که گفتم مجازی هست و مستقیماً برای ذخیره‌سازی دیتا استفاده نمیشه پس براش فرمت تعریف نمیشه)
به قول فلاسفه نوع پارتیشن، خاصیت ذاتی پارتیشن هست(نمی‌تونه تغییر پیدا کنه). اما فرمت پارتیشن خاصیت عرضی هست(می‌تونه تغییر کنه).
یه پارتیشن رو میشه به راحتی فرمت کرد و فرمتش رو تغییر داد، ولی یه پارتیشن Logical رو نمیشه به Primary تبدیل کرد! یا بالعکس!
نکتهٔ آخر اینکه در روش اسم‌گذاری لینوکس، اسامی sda1 و sda2 و sda3 برای پارتیشن‌های Primary رزرو شده، یعنی اگه یدونه Primary هم داشته باشید، پارتیشن بعدی(که باید Extended باشه) اسمش sda4 هست و Logical های داخلش اسامی sda5 و sda6 و... دارن.
دیگه بیشتر از این فکر نمی‌کنم نیاز به توضیح داشته باشه. ولی باز اگه جای مبهمی بود بگید.
موفق باشید

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

دیروز جشن انتشار اوبونتو 12.04 در تهران برگذار شد.
نسبتاً خوب بود و خوش گذشت. از دوست عزیزم دانیال بهزادی و بقیهٔ دوستانی که کمک کردن تشکر می‌کنم.


چون قرار بود کارگاه برنامه‌نویسی باشه، پرزنت آماده نکرده بودم. همونجا بهم گفتن که کنفرانس هست، یه چیزی سریع نوشتم و ارائه دادم و بعدش هم سوال و جواب.
الآن فایل‌ش رو تکمیلش کردم و آپ کردم:

PDF

ODP

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

بالاخره بعد از ماه‌ها تأخیر، به این نتیجه رسیدم که باید 2.0 رو منتشر کنم.
علت تأخیر هم به مشغله برمی‌گشت و هم به تغییرات کلی که نمی‌دونستم کی تموم میشه و کی آمادهٔ استفاده میشه.
البته آخرین کدهام در github موجود بود و کاربران می‌تونستن تست کنن.

روش دانلود و نصب دقیقاً مثل نسخهٔ 1.9 هست، ولی برای یادآوری باز می‌نویسم


برای دانلود سورس، ۳ تا راه دارید:

۱- آخرین آرشیو سورس رو از سورس‌فورج دانلود کنید
http://sourceforge.net/projects/starcal/files/starcal2/2.0

۲- آخرین کدها رو توسط git از github دانلود کنید. یعنی اول git رو نصب کنید و بعد این دستور:
git clone git://github.com/ilius/starcal2.git

۳- اگه نمی‌خواید git رو نصب کنید، می تونید snapshot آخرین کدها رو بصورت یک آرشیو دانلو کنید. این آدرس رو در مرورگر باز کنید:
https://github.com/ilius/starcal2
روی دکمهٔ Downloads در سمت راست کلیک کنید و بعد دکمهٔ Download az zip یا Download az tar.gz رو بزنید



بعد از دانلود سورس، به پوشهٔ سورس cd کنید و بسته به توزیع‌تون یکی از چند دستور رو اجرا کنید (تاکید می‌کنم فقط یکی رو)
‎$ sudo ./install-debian
‎$ ./install-archlinux
‎$ sudo ./install-suse
‎$ sudo ./install-fedora
دقت کنید که این اسکریپت‌ها، اول پکیج مخصوص توزیع شما رو می‌سازن و بعد سعی می‌کنن پکیج ساخته‌شده رو نصب کنن. در آخر هم پکیج رو توی دایرکتوری جاری کپی می‌کنن که اگه خواستید مثلاً برای دیگران آپلود کنید، یا خودتون دستی نصب کنید (اگه اسکریپت نتونست نصبش کنه)
در اوبونتو/دبیان، بهتره قبل از اجرای اسکریپت install-debian، پکیج gdebi رو نصب کنید، چون اگه gdebi نداشته باشید، اسکریپت سعی می‌کنه با dpkg نصب کنه و ممکنه مشکل پکیج‌های پیش‌نیاز پیش بیاد

برای راحتی کاربران، پکیج deb این نسخه رو هم توی سورس‌فورج گذاشتم

اگه از ArchLinux استفاده می‌کنید، با نصب پکیج starcal-git از AUR، آخرین کدها که در github هست، نصب خواهد شد (لازم نیست سورس برنامه رو به روش‌هایی که در بالا گفته شد دانلود کنید)

اگه توزیع‌تون هیچ کدوم اینها (دبیان‌بیسد، آرچ، فدورا و سوزه) نیست، از دستور زیر استفاده کنید که شبیه make install هست و فایل‌ها رو در /usr/local/ کپی می‌کنه.
‎$ sudo ./install



اما تغییراتی که نسبت به 1.9 داشته:


۱- رویدادها، بجای «روزهای دلخواه»
اون چیزی که تحت عنوان Custom Days یا روزهای دلخواه وجود داشت، کلاً حذف شده. و مفهوم رویداد جایگزینش شده که انواع مختلفی داره و خیلی انعطاف‌پذیر و کامل هست. در واقع این مهم‌ترین تغییر برنامه در این نسخه هست و نتیجهٔ چند سال تحقیق و توسعه هست.

از طریق منوی برنامه یا نوارابزار، پنجرهٔ «مدیریت رویدادها» رو باز کنید
اولین چیزی که می‌بینید «گروه‌های رویدادها» هستن. اگه با تقویم گوگل کار کرده باشید، مفهوم «گروه رویدادها» در استارکل، شبیه مفهوم Calendar در تقویم گوگل هست. در واقع پوشه‌ای از رویدادها (اگه رویدادها رو شبیه فایل در نظر بگیریم). که البته یک گروه خودش نمی‌تونه شامل یک گروه دیگه باشه.
هر گروه خودش انواعی داره. و هر رویداد هم انواعی.
بهتره به منوهای این پنجره و منوی راست کلیک هر گروه، نگاه کنید. فعلاً قصد ندارم یک help کامل در مورد رویدادها بنویسم چون واقعاً خیلی مفصله. ولی رابط گرافیکی، به مرور زمان همه چیز رو براتون روشن می‌کنه.

متاسفانه به دلایل فنی (تفاوت ساختار رویدادها در استارکل و تقویم گوگل) هنوز امکان سینک با گوگل فراهم نیست. ولی در آینده احتمالاً با در نظر گرفتن محدودیت‌هایی (در مورد رویدادهای تکرارشونده) این امکان فراهم میشه.

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

با توجه به اینکه برنامه در حال توسعه و تغییر هست و هنوز کاملا پایدار نشده، توصیه می‌کنم هر چند وقت یک بار «صادر کردن» به JSON رو انجام بدید و فایل‌هاش رو نگه دارید تا در صورت بروز مشکل بتونید دوباره import یا وارد کنید.

در ضمن، اون «روزهای دلخواه» که در ورژن‌های قبلی تعریف کرده بودید، خود به خود import خواهند شد و به «رویدادهای سالیانه» تبدیل خواهند شد.

یک سری رویدادهایی که برای همهٔ ممکنه جالب/مفید باشه، مثل رویدادهای ویکی‌پدیا فارسی، تاریخ ایران، تاریخ اسلام، و سال کشف عناصر شیمیایی، در یک مخزن جدا در github هست
https://github.com/ilius/starcal2
که می‌تونید دانلود کنید و تک‌تک فایل‌های json رو وارد (import) کنید در پنجرهٔ مدیریت رویدادها (یک نمونه اسکرین‌شات از تاریخ ایران در پنجرهٔ خط زمان گذاشتم)




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

تقویم هفتگی

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

شخصی‌سازی (۱)

شخصی‌سازی (۲)

شخصی‌سازی (۳)

شخصی‌سازی (۴)




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



اسکرول موس: جابجا شدن در زمان
اسکرول موس + کنترل: تغییر مقیاس
کلید راست و چپ: جابجا شدن در زمان
کلید فاصله یا Home: رفتن به لحظهٔ جاری (بعنوان نقطهٔ وسط)
کلیک پایین: متوقف کردن حرکت در زمان (که بصورت انیمیشنی و smooth انجام میشه)
کلید Esc یا q: بستن پنجره

راست‌کلیک روی هر رویداد هم یک منو باز می‌کنه که می‌تونید ویرایش یا حذفش کنید

نکتهٔ پیشرفته‌تر: در مورد نوع رویداد «کار» علامت‌هایی در اطرافش نشون داده میشه که اجازه می‌ده رویداد رو بصورت ویژوال ادیت کنید (شبیه resize یا move کردن پنجره‌ها)


رنگ‌هایی که در این پنجره استفاده میشه، تابع رنگ‌هایی هست که در «ترجیحات -> ظاهر» تعریف کردید. ولی ممکنه در آینده یک قسمت مجزا برای تنظیمات خط زمان اضافه بشه.


خط زمان



۵- فارسی‌تر شدن
مثلاً در هر جایی که یک «ورودی عددی» دارید (یا SpinButton برای برنامه‌نویس‌ها)، اگه دقت کرده باشید، قبلاً عددها انگیسی بود و حتی برای تایپ اعداد باید کیبوردتون روی انگلیسی می‌بود. ولی الأن اون مشکلات برطرف شده. نه توسط Gtk بلکه توسط خودم.


۶- غیرفعال شدن رابط گرافیکی Qt
به دلیل تغییرات خیلی زیادی که در رابط گرافیکی انجام دادم، نتونستم رابط Qt رو همگام با Gtk جلو ببرم، و به همین دلیل فعلاً غیرفعالش کردم. امیدوارم بعداً فرصت کنم کاملش کنم

۷- استفاده از app indicator بجای tray icon در اوبونتو

۸- و طبق معمول هر سال، آپدیت کردن مناسبت‌های ایران، و ماه‌های هجری قمری (البته با چند ماه تاخیر انجام شد)
و باز هم مقدار زیادی تمیزکاری، بهبود خیلی زیاد design و البته رفع تعدادی باگ.


سازگاری
تا جایی که شده سعی کردم سازگاری با نسخه‌های گذشته (1.9) رو حفظ کنم
با این حال بعضی از تنظیمات جزئی مثل اندازهٔ حاشیهٔ تقویم یا شکل مکان‌نما، به مقادیر پیش‌فرض برمی‌گرده و اگه خواستید دوباره باید تنظیم کنید.
اگه آخرین نسخه‌ای که امتحان کردید، 1.5 بوده (1.9 رو اجرا نکردید) یک پنجره برای import کردن تنظیمات در اولین اجرا ظاهر خواهد شد.


دوستانی که می‌خوان با گزارش باگ‌ها، به توسعهٔ برنامه کمک کنن، بد نیست که برنامه رو در ترمینال اجرا کنن (دستور starcal2) تا ارورهای احتمالی رو ببینن (و بتونن برای من پیست کنن).
گرچه خیلی از ارورها در این فایل لوگ میشه:
‎ ~/.starcal2/log/error
ولی تضمینی هم وجود نداره که همه‌شون لوگ بشه



و در نهایت، اگه خواستید Donate کنید:
بانک ملت، شمارهٔ حساب 3249590307
شمارهٔ کارت:
‎6104 3370 3338 9055
به نام: سعید رسولی


موفق باشید

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