Shared posts

11 Sep 10:55

من"ها": از کرایه تاکسی تا انتخاب روحانی

by مهدی
صیح جمعه بود. رفتم سوار تاکسی های خطی (...) - ولیعصر شوم. یک تاکسی بیشتر نبود. من هم قرار داشتم و عجله. تا رسیدم راننده که مرد میانسالی بود گفت:
- باید وایسی تا پر شه ها! نگی پنج دقیقه بعد بیایم بریم!
با تعجب گفتم:
- بله آقا. خب طبیعی ه. خط ه. باید وایسم پر شه دیگه.
گفت:
آخه یه خانمه الان کلی بلبشو درست کرد. بیست دقیقه وایساد کسی نیومد داد و هوار راه انداخت که تا کسی وایسیم؟ وقت من ارزش داره. و اینا. انگار وقت ما از توی جوب پیدا شده که خالی راه بیفتیم!
نخواستم وارد بحث بیشتر شوم. گفتم:
- نه دیگه. حق با شما بوده. باید وایساد تا پر شه.
چند دقیقه ای  کنار تاکسی ایستادم تا کسی بیاید. که آمد. دختری جوان بود و نشست جلو. و بعدتر خانم میانسالی. تا رسید گفت:
- ا؟ یه نفر دیگه میخاد؟ اه!
سر تکان دادم.
دوباره چند دقیقه بعد زیر لب گفت:
- خب اومدیم کسی نیومد! باید تا شب وایسیم؟
خواستم جواب بدهم. اما حوصله نداشتم. دوباره سر تکان دادم.
ده دقیقه ای ایستادیم اما نفر سوم نیامد. و بعد قضیه پیچیده تر شد: دو نفر خانم دیگر با هم آمدند! حالا باید چه میکردیم؟ یا باید یکی از ما از نوبتش انصراف میداد و آن دو خانم مینشستند و ماشین میرفت، یا اینکه باید باز می ایستادیم تا یک تک نفری بیاید. ظاهرن هیچکدام از ما حاضر نبود چنین کاری کند و از حقش بگذرد. کار گره خورده بود و ماشین و راننده و ما همه گیر کرده بودیم.
چند دقیقه بعد، وضع بدتر هم شد: یک تاکسی دوم هم آمد! دو مسافر خانم آخر رسیده که چاره ای نداشتند رفتند و سوار ماشین دوم شدند و منتظر شدند ببینند چه میشود. خانمی که بیتاب بود و نفر سوم بود، رو به من کرد و گفت:
- بیایید بریم سوار اون ماشین بشیم و بریم.
تا این را گفت و به سمت تاکسی دوم رفت، دختری که نفر دوم بود به اعتراض پیاده شد و گفت:
- خانم کجا؟! من جلوتر از شمام! من و این آقا باید سوار شیم!
قضیه خیلی پیچیده شده بود. یک گره کور درست شده بود. هیچکس نه میخواست کرایه نفر اضافه را بپردازد و نه میخواست از حق جلوتر بودن خودش بگذرد چون باید برایش هزینه ای میپرداخت (منتظر ماندن بیشتر در گرما برای مدتی نامعلوم).
در اینجا راننده ماشین دوم وارد صحنه شد و گفت:
- خب بی زحمت اون کرایه نفر چهارم رو دنگی بدین به راننده تا برین.
ما به هم نگاه کردیم. و سری به علامت مثبت تکان دادیم و سوار شدیم و تاکسی رفت. گره باز شد.
 
***
 
این موقعیت ظاهرن ساده، برای من دانشجوی جامعه شناسی، موقعیت معنادار و خاصی بود:
تمام قراردادهای اجتماعی و هنجارهای مربوط به این موقعیت (سوار تاکسی شدن) - که در شرایط عادی تسهیلگر بودند- در روز تعطیل و این موقعیت خاص، نه تنها کمکی به باز شدن گره نمیکردند که گره را کورتر کرده بودند: حق مبتنی بر تقدم در صف، حق راننده ی خطی برای پر شدن ماشین ش در ابتدای خط و حق مسافران برای پرداخت کرایه ی مصوب و نه بیشتر.
 
در چنین وضعیتی چه چیزی میتواند گره را باز کند؟ اخلاق. اخلاق به عنوان روغن روابط اجتماعی و چرخ دنده های تعامل. اخلاق به معنای اعم: گذشت از حق خود به نفع دیگری. در نظر گرفتن دیگری. اما این متغیر غایب بود. هیچکس اخلاقی عمل نمیکرد. نه مسافران، نه راننده ها. همه تمام "حق مبتنی بر قرارداد اجتماعی" خود را به صورت تمام و کمال مطالبه میکردند. همه بیشترین سود را میخواستند و به کمتر از آن رضایت نمیدادند: مسافران به استفاده از نوبت و تقدمشان، به سریع تر رسیدن و رانندگان به تمام کرایه با چهار مسافر.
 
این مثالی از وضعیت کلی بخش ها و لحظه های قابل توجهی از جامعه ی ماست: آمارها و تحقیقات نشان میدهند که اخلاق در بسیاری ابعاد و حوزه های جامعه در حال افول است. جامعه ی خاص گرای فردگرا. جامعه ی روز به روز خودخواه تر. جامعه ای که دارد از حالت یک ما" خارج میشود و به توده ای انبوه از "من"ها تبدیل میشود که فقط در کنار هم قرار گرفته اند و بس. و قراردادهای اجتماعی نمیتوانند به تنهایی از پس چنین شبکه های پیچیده ی روابطی بربیایند. آن هم در جامعه ای که خود آن قراردادها از استحکام جدی برخوردار نیستند و به راحتی دور زده می شوند (به حرکت خانم نفر سوم که میخواست با دعوت از من، خانم نفر دوم را دور بزند و خودش سوار ماشین شود توجه کنید.)
 
اما در این میانه یک راه دیگر نیز وجود داشت: پیدا کردن راه حلی میانه. راه حلی که نه سود همه ی کنشگران و بازیگران در صحنه، که بخشی از آن را تأمین کند. یک بازی "تقریبا" برد - برد. اما نه کاملاً. پیشنهاد راننده ی دوم چنین موقعیتی بود: جایی که هر کدام از ما نه یک کرایه ی کامل اضافه (باخت کامل) که یک کرایه ی یک سومی باخت نسبی) را پرداختیم اما یک سود قابل توجه (زودتر به مقصد رسیدن و پایان انتظار) را به دست آوردیم. راننده هم که به تمام آنچه میخواست رسید.

این پیشنهاد میانه را میتوان در سطح کلان نیز دید: جایی که مثلاً در انتخابات اخیر، هاشمی و خاتمی و بسیاری از روشنفکران از یکسو و حاکمیت از سوی دیگر، با انتخاب راه حل میانه - که نه انتخاب خاتمی و هاشمی (باخت برای حاکمیت؟) و نه انتخاب جلیلی (باخت اصلاح طلبان و بخشهای مهمی از جامعه) - بلکه انتخاب "روحانی" بود، گره را باز کرد. یک بازی تقریباً برد - برد.
 
***
 
وقتی در چنین موقعیتی قرار گرفتم، حس کردم چقدر چیزهایی که خوانده ایم واقعاً به درد میخورد: آزمایشهای نقض کننده گارفینکل، نظریه بازی (Game Theory)، نظریه مبادله و خیلی چیزهای دیگری که از استادان دیده و نادیده مان آموختیم. و باز طعم و لذت دانشجوی جامعه شناسی بودن را احساس کردم. جای درستی آمده ام.
 
 
 
پانوشت یک: به نظرم جامعه شناسی که بالکل تلویزیون نگاه نکند، ماهی یک بار اتوبوس سوار نشود، بوی عرق کارگرهای فصلی سر میدان را نشناسد، توی فشار مترو ماهی یک بار غرغرهای مردم را نشنیده باشد، نداند که اخیراً تاکسی خطی انقلاب تا خانه شان چقدر نرخش گران شده، جامعه شناس این جامعه نیست. و در واقع شاید بشود گفت که "جامعه"شناس نیست. هر چقدر هم با کمالات، هر چقدر هم خلاق، هر چقدر هم پر مطالعه. برای من، بخش مهمی از جامعه شناسی، «میدان» است. به معنای اعم. جامعه شناسی که ارتباطش با میدان قطع شده باشد، در بهترین حالت، یک نظریه پرداز اجتماعی است. یک فیلسوف اجتماعی. یک متفکر اجتماعی. اما نه «جامعه شناس».
 
پانوشت دو: این چند وقت عجیب حس میکنم ذهنم قبراق است. گاهی خودم تعجب و حتی وحشت میکنم که چطور هر چیز کوچکی را میگیرد و ورز میدهد. همیشه اینطور نمیماند. حس میکنم ذهنم به اوج کارایی اش رسیده یا نزدیک شده. این هم خوب است و هم بد. خوب است چون چنین امکان غنیمتی پیدا کرده و بد است چون تولیدی ندارم. چون هنوز نتواستم خودم را در موقعیت تولید قرار دهم. این یعنی هرز رفتن. این یعنی بالاترین سرمایه سوزی. این مغز قبراق، همیشه اینطور نمی ماند. باید زودتر زمینه سازی ها را تمام کنم و به کارش بگیرم..
27 Mar 06:35

همه چیز در یونیکس، یک فایل است

by محمود

نویسنده مهمان، امیررضا قادری: به کرّات شنیده‌اید که گفته می‌شود «همه چیز در یونیکس، یک فایل است». خیلی‌ها از چنین عبارتی استفاده می‌کنند بدون اینکه دقیقا با معنی آن آشنا باشند. خیلی‌ها حتی شاید ندانند که وقتی از «فایل» صحبت می‌کنیم، منظورمان چه چیزی است! در این نوشته سعی خواهیم کرد با زبانی ساده این مفاهیم را توضیح دهیم و شما را با میزان اهمیت فلسفه‌ی «همه چیز در یونیکس، یک فایل است» آشنا کنیم.

من در نوشته‌هام دوست دارم که از مفاهیم سطح پایین شروع کرده، و به اقتضای مطلب، به مفاهیم سطح بالاتر بپردازم. پس بیایید از پایین به بالا حرکت کنیم:

عملیات I/O چیست؟ ارتباط CPU‌ با دنیای خارج. همین!

منظورمان از دنیای خارج، هر منبعی است که CPU‌ به آن دسترسی مستقیم نداشته باشد. برای مثال هارد دیسک، ماوس، کیبورد، مودم، پرینتر، کارت شبکه، و… خود واژه‌ی I/O‌ هم کوتاه شده‌ی واژه‌ی Input/Output یا «ورودی/خروجی» است. از آنجایی که CPU به حافظه‌ی اصلی (RAM) و حافظه‌های داخلی خودش مانند Register ها و حافظه‌ی Cache دسترسی مستقیم دارد، ارتباط با این منابع جزو I/O به حساب نمی‌آید.

فایل چیست؟

فایل در واقع چیزی بیشتر از یک مجموعه Byte های کنار هم چیده شده نیست. «قالب» (Format) یک فایل، مشخص کننده شیوه‌ی چینش این Byte ها در کنار یکدیگر است. به زبانی دیگر، Format یک فایل مشخص می‌کند که Byte ها باید چگونه در کنار یکدیگر قرار گیرند تا بیانگر داده‌ایی قابل فهم و به دردبخور باشند. مثلا Format یک فایل متنی با یک فایل صوتی متفاوت است. با اینکه هردوی آن ها چیزی بیشتر از Byte‌ های کنار هم چیده شده نیستند، اما برنامه‌ی ویرایشگر متن شما نمی‌تواند با یک فایل صوتی کار کند چرا که Format آن برایش قابل فهم نیست. ارتباط با یک فایل (خواندن و نوشتن روی آن)، از طریق برقراری جریانی از Byte ها با آن فایل صورت می‌گیرد.

منظورمان از «جریان» چیست؟

در مطالب مربوط به برنامه‌نویسی، ‌از عبارت «جریان» ( Stream ) بسیار استفاده ‌می‌شود: جریانی از بایت‌ها، جریانی از اعداد، جریانی از رشته‌ها، جریانی از کدها و … در اغلب اوقات می‌توانید مفهوم عبارت «جریان» در این گونه از مطالب را همانند جریان آبی که در یک رود جاریست در نظر بگیرید! بنابراین وقتی می‌گوییم جریانی از Byte‌ ها، عین این که مسیری مانند یک رود داشته باشیم ولی به جای جاری کردن آب در آن، دنباله‌ایی از Byte‌ ها را در آن جاری کنیم.

مثلا وقتی قرار است داده ایی را به یک فایل منتقل کنیم، میتوانید در ذهن خود اینطور تصور کنید که مسیری را به طرف آن فایل ایجاد نموده‌ایم و Byte ها را به طور متوالی و پشت سرهم در این مسیر سرازیر کرده‌ایم. آن فایل هم همانند حوضچه‌ای است که در انتهای این مسیر قرار دارد و با جریانی از Byte‌ ها که به طرف آن سرازیر کرده‌ایم در حال پر شدن است.

Everything-is-a-file

همه چیز در یونیکس، یک فایل است!

هر سیستم عامل باید به نحوی امکان انجام I/O را برای پروسه‌ها فراهم نماید. تا قبل از یونیکس، روش واحدی برای انجام I/O‌ در سیستم عامل‌ها وجود نداشت. هر منبع I/O ممکن بود به رابط (API) خاص خودش برای ارتباط با سیستم عامل نیاز داشته باشد. برای مثال، ممکن بود نوشتن یک فایل متنی در هارد دیسک و فرستادن همان فایل به پرینتر به دو رابط کاملا متفاوت نیاز داشته باشد.

یونیکس برای یکپارچه‌سازی و ساده‌تر شدن اعمال I/O،  تمام منابع I/O را به صورت فایل در نظر میگیرد. به این ترتیب می توان از یک مجموعه API  واحد برای ارتباط با طیف وسیعی از منابع I/O بهره برد. در این شیوه، کرنل منابع مختلف I/O مانند هارد دیسک، کیبورد، پرینتر، و… را به شکل یک فایل،  و از طریق «توصیف‌گر فایل» (File descriptor) در اختیار پروسه‌ها قرار می‌دهد.

توصیف‌گر فایل یا File descriptor چیست؟

هنگامی که پروسه‌ای‌ خواهان ارتباط با یک فایل است، کرنل آن فایل را در حافظه باز میکند و توسط یک File descriptor ارتباط بین پروسه‌ی درخواست کننده و فایل مورد نظر را برقرار می‌سازد. File descriptor (که از این بعد با نام FD ‌از آن یاد خواهیم کرد) ‌ در واقع یک عدد صحیح (integer)  است که به عنوان یک شاخص، برای هر یک از فایل‌های باز شده در حافظه در نظر گرفته می‌شود.

در هر لحظه ممکن است هزاران فایل باز شده وجود داشته باشند که هر کدام به کمک FD خاص خودشان قابل شناسایی هستند. کرنل از FD برای انتقال اطلاعات استفاده میکند: وقتی پروسه‌ایی میخواهد اطلاعات جدیدی را در یک فایل بنویسد، این اطلاعات را به FD آن فایل (شماره مخصوص آن فایل) ارسال میکند. کرنل از روی این شماره تشخیص میدهد که باید این اطلاعات را به کدام فایل منتقل نماید. همچنین هنگام خواندن از فایل نیز، کرنل از طریق همین شماره تشخیص میدهد که اطلاعات خوانده شده از فایل را باید به کدام پروسه منتقل کند. به این ترتیب کرنل تصمیم میگیرد که جریان Byte ها را به کدام سمت سرازیر نماید.

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

FD های استاندارد

جدای از اینکه یک پروسه در طول پردازش خود درخواست I/O داشته باشد یا نه، کرنل به طور پیش‌فرض سه FD با شماره‌های زیر را برای تمام پروسه‌ها ایجاد خواهد کرد:

    شماره‌ی ۰ :  ورودی استاندارد (stdin)

    شماره‌ی ۱ : خروجی استاندارد (stdout)

    شماره‌ی ۲ : جریان استاندارد خطا (stderr)

این سه FD استاندارد که برای تمام پروسه‌ها ساخته می‌شوند، این امکان را فراهم می‌کنند که بتوانیم با خود پروسه‌ها نیز همانند فایل برخورد کنیم! مثلا اگر می‌خواهیم اطلاعاتی را به آن پروسه انتقال دهیم، باید داده‌ها را به ورودی استاندارد آن پروسه ارسال کنیم. بنابراین «پروسه‌ی ارسال‌کننده»، می‌تواند «پروسه‌ی مقصد» را درست همانند یک فایل تصور ‌کند. با داشتن چنین قابلیتی، می‌توان علاوه بر منابع I/O، با منابع نرم افزاری مانند Socket ها، Pipe ها و بسیاری از منابع دیگر هم همانند یک فایل برخورد کنیم.

 جمع بندی

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

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

23 Mar 09:02

یکهو نگن جادی لال بود؛ ارمیا یعنی خواسته مردم برای حق ترکیب و انتخاب

by جادی
همید

جادی عالیه!‏

چیز خوبی پخش نخواهد شد

توی توییت‌ها می‌بینم که ارمیا برنده شده – یعنی خودم ندیدم. البته نگاه نکردنم از باکلاسی نیست، از تنبلی و نداشتن امکانات است وگرنه قسمت به قسمت رو با تکرار نگاه می کردم چون جالبه. اصلا هم درک نمی‌کنم کسایی که می گن دوست ندارنش رو. این برنامه ها با کلی تحقیق و تجربه درست شده که جالب باشه و اگر کسی براش جالب نیست یعنی یا جهش ژنتیک داشته یا اصولا اهل چیزهای جالب نیست؛ که اشکالی هم نداره (:

به هرحال…

من دو سه قسمت رو دیدم فقط، یکبار هم به امیرحسین رای دادم. به خاطر اون سبیل و تیپ بامزه ژیگولوهای دهه ۴۰ی که زده بود. از ارمیا هم بدم می‌اومد چون از کسی که این مدلی باشه و عشوه‌های اون مدلی بیاد خوشم نمی‌یاد. من یکبار به امیرحسین رای دادم برای تیپ و سبیل و خط ریش خنده دارش و از ارمیا بدم می اومد برای عشوه‌های مشهور به شتری‌اش و به نظرم کاملا هم درست رای دادم. این هم یک مسابقه «انتخاب بهترین صدا» نیست بلکه مسابقه اینه که «شما دوست دارین قسمت بعدی کیا هنوز تو مسابقه باشن» (به جز قسمت آخر که مسابقه «دوست دارین کی برنده بشه» است). جدا هم اگر این اگر مسابقه بهترین صدا بود اصولا من نباید توش حق رای می‌داشتم چون هیچ تخصصی در این باب ندارم.

اما حرفم اینها نیست. حرفم اینه که با اینکه من ازش خوشم نمی‌یاد، ارمیا برنده خاصیه. ارمیا برنده خاصیه چون اسلام خودش رو داره؛ پشت صحنه موهاش معلومه، جلوی صحنه زیر لباس دکولته‌اش یقه اسکی می پوشه و روسری‌اش رو هم به فرم کلاه شنا رو سرش محکم می کنه. تو اسلامش هم مشکلی با این نداره که آواز بخونه و اون عشوه‌های – از نظر من کریه – رو بیاد. ارمیا برنده می شه چون این یک مسابقه «بهترین صدا» نیست بلکه مسابقه اینه که «چی دوست دارین ببینین» و ظاهرا اکثریت ایران دوست داشته ببینه که یک نفر با نسخه خودش از اسلام، راحته.

رای عمومی به ارمیا برای من جالبه چون اینجوری می بینمش که آدم ها دارن می گن اگر کسی حق داره یک نسخه جرح و تعدیل شده از اسلام بسازه و به عنوان نسخه رسمی و غیرقابل تغییر یا پرسش با شلاق و زندان و تلویزیون و مدرسه و ممنوعیت از دانشگاه و گزینش اداره و … به همه اجبارش کنه خب ما هم خودمون عقلمون می رسه که به شیوه ای که درست میدونیم مسلمون باشیم و این به نظرم قابل توجه‌ترین جنبه برنده شدن ارمیا است. ارمیا آدم‌ها رو به هیجان آورده چون داره نشون می‌ده که هر کس حق داره قرائت و ترکیب خاص خودش از دین رو داشته باشه و خیلی هم معقوله که مستقل از صدا و هر چیزی، رای مردمی که می خوان «انتخاب» داشته باشن،‌ ارمیا باشه چون هم خودش ترکیبی از اسلامی که دوست داره رو انتخاب کرده و هم حجابش انتخاب خودشه. راستش من خوشحالم که ارمیا برنده شده و اینو چیز خیلی مثبتی می‌بینم و نشونه‌ای از رشد عمومی؛ هرچند که خودم رای‌ام هنوز با افتخار به تیپ ژیگولویی دهه ۴۰ی امیرحسینه (:

به اشتراک بگذارید FacebookTwitteremailFriendFeedRSS