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 استفاده کنید.

موفق باشید


جشن انتشار و معرفی اوبونتو ۹.۰۴

2009/05/07

جشن انتشار و معرفی اوبونتو ۹.۰۴

زمان: پنج‌شنبه ۱۷ اردیبهشت از ساعت ۹ الی ۱۴

مکان: تهران – خیابان شریعتی – پایین تر از خیابان شهیدبهشتی – خ. اندیشه اصلی – خ. اندیشه پنجم شرقی – خانه معلم. تلفن: ۸۸۴۴۹۲۱۰

خب مراسم خوبی بود. خوشحال شدم که خیلی از دوستان رو از نزدیک دیدم، آقای مهدی حسن‌پور، آقای بهرام سیادتی(مدیر سایت OSPDev)، دوست عزیزم آقای مهرداد مومنی، آقای ناصر غانم‌زاده، آقای سعید زبردست…

در ضمن با شرکت داتک هم آشنا شدیم. و خوشحال شدیم از اینکه بیشتر کارشون بر اساس نرم‌افزار آزاد هست و فقط ۳۰ درصد سرورهاشون ویندوزی هست، بقیه‌شون از FreeBSD و گنو/لینوکس و سولاریس استفاده می‌کنن. کارومندانشون هم برای محیط توسعه‌شون اصرار دارن از اوبونتو استفاده کنن. جدیداً هم که داتک از انجمن کاربران ایران اوبونتو حمایت میکنه.

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

فقط حیف که هیچ حرفی از پایتون نشد(اما کلی در مورد ++C صحبت شد). بهتر بود یکم هم در مورد زبانهای برنامه‌نویسی صحبت بشه. همینطور درمورد نرم‌افزار آزاد هم یه بحثی میشد خوب بود. ولی افسوس که وقت خیلی کم بود(کمتر از ۵ ساعت) و مطلب زیاد(گر بریزی بحر را در کوزه‌ای…). انشاالله در جشن بعدی، وقتش بیشتر باشه.

در ضمن مسیرش هم یکم برام سخت یود. ولی در مجموع خوب بود.

من که عکس نگرفتم(یادم رفت باتری دوربین دیجیتالم رو شارژ کنم! در ضمن دوستان دوربین‌های خیلی بهتری داشتن). ایشالا دوستان عکس‌های مراسم رو توی وبلاگ یا سایتشون یا غیره میذارن.

اونجا که کسی ما رو نمی‌شناخت. ولی آخر مراسم رفتم خودم رو به مهرداد معرفی کردم و یه سلام علیکی کردیم!

به امید اینکه مراسم انتشارهای بعدی بهتر و بهتر باشه(و به امید دیدار دوستان در جشن انتشار اوبونتو 9.10)

در ضمن این پست رو(مثل چند تا پست قبلی) با Bilbo می‌فرستم(که مهرداد توی جشن معرفی کرد). ایشالا که مهرداد هم این برنامه رو کامل و کاملتر کنه(ما که خیلی بهش نیاز داریم).

خداحافظ


نشت نشا، یا همان فرار مغزها

2009/04/26

سلام

(قرار نیست که تمام نوشته‌های وبلاگم در حوزهٔ کامپیوتر باشد!)

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

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

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

به همهٔ دوستان پیشنهاد می‌کنم این کتاب را بخرند و مطالعه کنند.

نشت نشا (جستاری در پدیده‌ی فرار مغزها)

مؤلف: رضا امیرخانی (http://amirkhani.ir و http://www.ermia.ir)

ناشر: موسسهٔ انتشارات قدیانی

چاپ دهم: ۱۳۸۶ (چاپ اول: ۱۳۸۰)

قیمت: ۱۰۰۰ تومان

فهرست مطالب:

۰- نشت نشا! (پیش درآمد)

۱- روابط علی (نشت نشا، یک مسألهٔ کلان)

۲- کانون توطئه… (نمونه‌هایی از نگاه رایج خرد غیرمسأله‌ای به پدیده‌ی نشت نشا)

۳- در زمین که می‌کاریم؟ (با این کاشت و داشت و برداشت، نشت نشا یک امر طبیعی است)

۴- علم بومی… (تنها راه آب‌بندی نشت نشا)

۵- متدولوژی (نمونه‌ای از ترجمه‌ی ناموفق علم)

۶- باز هم متدلوژی (باز دست مریزاد به اهل ترجمه‌ی روش)

۷- علوم انسانی (عقب‌ماندگی جدی‌تر در علوم انساتی)

۸- علم و زنده‌گی! (آیا غربی‌ها علم بومی دارند؟)

۹- رپ یا انصار؟ (نمونه‌ای از نگاه بومی فراموش‌شده)

۱۰- زنده‌گی و علم! (مقدار مجاز فاصله‌ی شهر تا دانش‌گاه چه‌قدر باید باشد؟)

۱۱- نتایج دروغین نظام آموزشی (تنگ‌چشمان نظر به میوه کنند!)

۱۲- چه نباید کرد؟ (فرار مغزها به فرموده متوقف نمی‌شود!)

۱۳- تکریم (سازو‌کار تکریم درست)

۱۴- ارزیابی مستمر و حقیقی… (تنها سازو‌کار تکریم درست…)

۱۵- چه باید کرد (دو راه‌برد بلندمدت و میان‌مدت)

۱۶- سخن آخر (نجوایی با اهالی نشت نشا)

۱۷- مؤخره


Kilo, Mega, Giga…

2009/04/13

سلام

احتمالاً تا حالا شده یه هارد یا فلش بخرید! و احتمالاً بعد از خریدن و وصل کردن به کامپیوتر یه نگاهی به حجمش هم انداختید که مثلاً بجای هارد 120 یه هارد 60 گیگ بهتون نداده باشن! البته اگه اینقدرا اختلاف داشته باشه که می‌فهمید. ولی اگه بجای 120 گیگ 112 گیگ باشه ممکنه متوجه نشید، یا اینکه زیاد اهمیت ندید. یا وقتی که بجای یه فلش 8 گیگ یه فلش 7.4 گیگ تحویل بگیرید. یا خلاصه تقریباً 7 درصد کمتر از چیزی باشه که انتظار دارید! ممکنه هم این سوال براتون پیش اومده باشه که «پس بقیه‌ش چی شده؟». آیا شرکت سازنده به شما دروغ گفته یا کم‌فروشی کرده؟! یا اون جنس تقلبی هست؟! یا فروشنده‌ها و دلال‌ها وسط راه چند یه خورده‌ش رو کش رفتن؟!! پس علتش چیه؟!

دلیل خیلی دلیل ساده‌ای داره. در یک جمله بخاطر تفاوت 1000 با 1024 هست. در دنیای کامپیوتر کیلو معمولاً به معنای 1024 هست(نه 1000) و مگا هم 1024 کیلو. گیگا هم 1024 مگا، ترا هم 1024 گیگا…

اما ظاهرأ سازنده‌های حافظه، از این قاعده پیروی نمی‌کنن و بجای 1024 همون 1000 در نظر می‌گیرن. نمی‌دونم چرا. دلیل فنی داره یا دلیل اقتصادی(برای نفع خودشون)؟ ولی با یه حساب سرانگشتی میشه فهمید که حدوداً 7 درصد کمتر از چیزی میشه که ما انتظار داریم(و حجم اسمی اون هارد یا فلش هست). بصورت دقیق‌تر حجم واقعی میشه 0.9313 برابر حجم اسمی. حالا اگه تونستید خودتون این حساب سرانگشتی رو انجام بدید و عدد دقیقترش رو بهم بگید؟! 😀


Partition Table Structure

2009/04/09

سلام

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

چند ماه پیش می‌خواستم به یه بنده خدایی پارتیشن‌بندی رو درست و حسابی یاد بدم، برای همین یه نموداری رو درست کردم که ساختار پارتیشن‌بندی هارد رو در حالت‌های مختلف نشون بده. مخصصوصاً برای کسایی که میخوان لینوکس نصب کنن(اونم رو یه هاردی که ویندوز یا دیتا روش هست) درک کردن ساختار 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 رزرو شده(البته Extended هم نوعی Primary هست)، یعنی اگه یدونه Primary هم داشته باشید(غیر از خود Extended)، پارتیشن بعدی(که باید Extended باشه) sda2 هست و Logical های داخلش اسامی sda5 و sda6 و… دارن.(یعنی پارتیشن‌هایی به اسم sda3 و sda4 وجود نداره)

دیگه بیشتر از این فکر نمی‌کنم نیاز به توضیح داشته باشه. ولی باز اگه جای مبهمی بود بگید.

موفق باشید


multi-layering

2009/03/22
سلام
اول عید نوروز رو دوباره تبریک میگم
بعدشم میخوام مطلبی رو بذارم که خیلی وقت پیش تایپ کردم ولی وقت نشد توی وبلاگم بذارم.

چندلایه‌ای بودن:

یکی از دلایلی که من عاشق لینوکس هستم همین چندلایه‌ای بودنش هست. حالا این چی هست؟ یه مفهوم کلی هست که خیلی جاها مصداق پیدا میکنه، حالا ما که بحثمون در حوزهٔ کامپیوتر هست، بازم خیلی مصادیق میتونیم براش پیدا کنیم. اونقدر مفهومش ساده‌س که ترجیه با چند تا مثال بیانش کنم.

مثلاً معروفترین نرم‌افزار پارتیشن‌بند چی هست؟ معلومه دیگه partition magic ویندوز. اما همین پارتیشن‌بند معروف و قدرتمند رو فقط بصورت گرافیکی میشه استفاده کرد. یعنی اگه بخواید تحت داس پارتیشن‌بندی کنید مجبورید از همون ابزار مزخرف fdisk داس استفاده کنید. اما توی لینوکس قضیه خیلی فرق داره، ابزار تجت ترمینال parted قدرتش به اندازهٔ ابزار گرافیکی GParted هست، حتی شاید بیشتر باشه چون اصولاً GParted یه رابط گرافیکی برای parted هست. اما این تنها رابط گرافیکی نیست که برای parted نوشته شده. QTParted و VisParted و از همه باحال‌تر YaST Partitioner هم هستن. پس شما در هر محیطی که باشید(ترمینال، گرافیکی و GTK رو داشته باشید یا QT رو، یا هیچ کدوم رو نداشته باشید از VisParted استفاده کنید، مثل لینوکس لایو 54 مگابایتی Parted Magic) همه جا قدرت ابزار Parterd رو خواهید داشت. (نکتهٔ دیگه اینکه YaST Partitioner و کلاً ابزارهای YaST هم رابط مبتنی بر GTK دارن هم رابط مبتنی بر QT هم حتی رابط مبتنی بر ncurses که توی ترمینال اجرا بشه). خیلی نرم‌افزارهای تحت ترمینال هستن که ابزار قدرمتندی هستن، ولی چون کار کردن با ترمینال(و به خاطر سپردن کلی اوپشن و آرگومان) برای همه راحت نیست(محبوبیت ابزارهای گرافیکی رو نداره) یه عده ای اومدن برای اون ابزار قدرتمند تحت ترمینال، رابط گرافیکی نوشتن. پس این برنامهٔ گرافیکی دو لایه داره، لایهٔ بالاییرابط گرافیکی وابسته هست، و لایهٔ پایینی موتور درونی و رابط سادهٔ تحت ترمینال. لایهٔ بالایی به لایهٔ پایینی وابسته هست، اما لایهٔ پایینی به لایهٔ بالایی وابسته نیست و میتونه مستقل کار خودش رو انجام بده. پس میشه لایهٔ بالایی رو عوض کرد (یه رابط گرافیکی دیگه برای برنامه استفاده کرد). در ضمن کسی که یک رابط گرافیکی رو می‌نویسه، دیگه با جزئیات موتور درونی برنامه کاری نداره و با اونها سر و کله نمی‌زنه، و فقط تمرکز خودش رو روی رابط گرافیکی می‌ذاره.

شاید اصطلاح Abstraction layer یا «لایهٔ تجرید» رو خونده یا شنیده باشید. اگه به ویکی پدیا مراجعه کنید:

An abstraction layer (or abstraction level) is a way of hiding the implementation details of a particular set of functionality.

In computer science, an abstraction level is a generalization of a model or algorithm, away from any specific implementation.

یک لایهٔ تجرید (یا سطح تجرید) راهی است برای پنهان کردن جزئیات پیاده‌سازی مجموعهٔ خاصی از وظایف(عملکردها).

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

بازم ترجیه میدم با مثال مطلب رو روشن کنم. یه مثال واضحش فایل‌سیستم‌ها هستن، با به زبان ساده‌تر، فرمت‌های پارتیشن‌های هارد(یا فلش). هر فایل‌سیستم یک abstraction layer هست برای خوندن و نوشتن دیتاهای هارد. مثلاً شما وقتی یه فایل رو از یه پارتیشن به یه پارتیشن دیگه(یا به همون پارتیشن) کپی می‌کنید، کاری دارید که فرمت پارتیشن مبدا و مقصد چی هست؟! اصلاً ازتون نمی‌پرسه که «با چه فرمتی بخونم؟» و «با چه فرمتی بنویسم؟» چه برسه به اینکه بخواد جزئیات نحوهٔ خوندن از و نوشتن روی هارد رو ازتون بپرسه. برای هر فایل‌سیستم سری کارها (مثل خوندن یک فایل، ایجاد یک فایل یا دایرکتوری جدید، گرفتن لیست محتویات یک دایرکتوری، گرفتن مشخصات یک فایل و…) تعریف شده، که وقتی یک کاربر(یا برنامه) درخواست یکی از این کارها رو به کرنل میده، کرنل(بعد از بررسی مجوزها) اون کار رو بسته به نوع فایل‌سیستم انجام میده، و اون کاربر(یا برنامه) دیگه به جزئیاتش کاری نداره.
همینطور درایورهای سخت‌افزاری هر کدوم یک abstraction layer هستن برای ارتباط با اون سخت افزار.(احتمالاً اصطلاح Hardware Abstraction Layer یا به اختصار HAL رو شنیدید)

همینطور مفهوم Database abstraction layer هم شبیه دو نمونهٔ قبلی هستن.
کتابخانه‌ها(Library ها) هم هر کدوم رو میشه یک abstraction layer تصور کرد(مثل GTK و QT). حتی هر کدوم از زبانهای برنامه‌نویسی. گفتم یه مفهوم خیلی کلی هست که میشه همه جا مصادیقش رو پیدا کرد!

وقتی abstraction layer اینقدر کاربرد و مصداق داره، پس میشه انتظار داشت هر سیستم‌عامل کلی از این abstraction layer ها داشته باشه.
به قول ویکی پدیا:

A typical vision of a computer architecture as a series of abstraction layers: hardware, firmware, assembler, kernel, operating system and applications

Computer_abstraction_layers.svg

هر سیستم‌عامل از یه سیستم چند لایه تشکیل شده. و حتی قسمتهای مختلف یک سیستم‌عامل. اما این قضیه بین سیستم‌عامل‌های مختلف کم و زیاد داره. توی ویندوز کمتر هست و توی یونیکس و لینوکس خیلی بیشتر. مثلاً شما ویندوز بدون گرافیک نمی‌تونید داشته باشید. یا نمی‌تونید محیط گرافیکی ویندوز رو عوض کنید. و توی ویندوز(بر خلاف لینوکس) کرنل به محیط گرافیکی وابسته هست. اما توی لینوکس ما یه چیزی داریم به اسم X Window System که رابط بین کرنل و محیطهای گرافیکی مختلف(Window Manager ها مثل گنوم و KDE) هست و در واقع یک abstraction layer. یا مثلاً توی لینوکس Shell های مختلف(مثل bash و sh و tcsh و…) هر کدوم بصورت یک برنامهٔ جدا و مستقل تعریف شدن که میشه توی ترمینال‌های مختلف اجرا کرد(مثل ترمینال‌های 1 تا 6 و یا terminal emulator هایی مثل gnome-terminal یا konsole یا xterm یا…). اما توی ویندوز حتی شل(که همون داس باشه) از ترمینال جدا نیست و نمیشه تفکیک کرد.(مثلاً نمیشه از شر اون پنجرهٔ کامند زشت خلاص شد. اصلاً خط فرمان ویندوز درپیت نه ظاهر داره نه باطن!)

فکر می‌کنم دیگه واضح شده باشه.

راستی از اونجایی که من از این ساختار چندلایه‌ای بودن خیلی خوشم اومد، سعی کردم برنامهٔ خودم یعنی PyGlossary رو هم دو لایه‌ای کنم. یعنی موتور دورنیش مستقل از رابط گرافیکیش باشه. و یه رابط سادهٔ مبتنی بر خط فرمان براش نوشتم(جدیداً ProgressBar متنی هم براش گذاشتم) که بشه هم با رابط GTK ازش استفاده کرد هم با رابط خط فرمان. رابط گرافیکیش که همینطوری باز میشه(با کلیک روی آیکونش یا اجرای دستورش بدون هیچ اوپشن و آرگومانی). اما برای رابط خط فرمانش کافیه بنویسید:
pyglossary --help
البته فعلاً با رابط خط فرمانش فقط میشه Convert و Reverse کرد(نه Edit).
من خودم این PyGlossary رو توی ویندوز هم اجرا کردم، ولی چون dependency هاش برای ویندوز زیاد هست(python و gtk و python-gtk و python-cairo و چند تا library دیگه که مجموعاً بالای 20 مگ میشه) اجرای رابط گرافیکیش توی ویندوز یه خورده سخته. بنابراین رابط مبتنی بر خط فرمانش میتونه به درد کاربران ویندوز بخوره، چون فقط یه مفسر پایتون میخواد. البته هنوز خوندن از bgl ش برای ویندوز کار نمیکنه(یه کد ++C باید جدا برای ویندوز کامپایل بشه). اما کاربران ویندوز میتونن باهاش مثلاً از دیتابیس Tabfile (مثلاً دیتابیس ساختهٔ خودشون) به StarDict تبدیل کنن(یا بالعکس) و در نتیجه دیتابیس استاردیکت رو ویرایش کنن، البته بصورت غیر مستقیم(با واسطهٔ Tabfile یا xFarDic).

من چون از اول انشام زیاد خوب نبوده، بلد نیستم چطوری بحث رو شروع کنم و خاتمه بدم! پس فعلاً خداحافظ