مطلبی که در یکی از گروه های اینترنتی خواندم و جای تامل دارد:
از پریشب قاچاقی زندهام. مرگم را دیدم و پذیرفتم و متراکمترین دو ثانیهی عمرم را تجربه کردم. نیمهشب با دوچرخه از دانشگاه برمیگشتم. باران نرمی میبارید و من هم با آهنگ بهار ویوالدی در گوش حسابی در عالم خودم غرق بودم و با سرعت نسبتا زیادی سرخوشانه پا میزدم. در چهارراهی که چراغ برای ما سبز و برای دیگران قرمز بود ترمز نزدم. ماشین پرسرعتی که میآمد انگار نه من را دید و نه چراغ قرمز را. دیگر دیر بود.
با آخرین قدرتم سرعت گرفتم و راننده هم روی ترمز کوبید تا به هم نخوریم. کافی نبود و ماشین به یکی دو سانتیمتر از چرخ عقب دوچرخهام خورد. خودم و دوچرخهام چند متر پرتاب شدیم و به پشت روی کول پشتیام به زمین خوردم. ماشین هم در حال ترمز و کشیده شدن روی زمین میآمد که از رویم رد شود. چرخ سمت راستش از روی سرم. و چرخ سمت چپش از روی پاهایم. در دو ثانیهای که روی هوا بودم و بعدش منتظر رد شدن ماشین و مردن انگار تمام زندگیام مثل فیلمی روی دور سرعت از پیش چشمم میگذشت. یک صدا هم میگفت انگار قرار نبود الان بمیرم.
دریغی نبود جز از دست رفتن فرصت ملاقات با یکی از خوبان روزگار در اردیبهشت پیش رو. یک صدا هم میگفت مرگ چه راحت است. انگار چند سطح جدید از آگاهی فعال شده بود. گویی همهی زندگیام در خواب بودم و تازه بیدار شدهام. بدنم در اوج هشیاری و کارآیی و سرعت میخواست زنده بماند، دلم در آرامشی غیرقابل انتظار مرگ را میپذیرفت و ذهنم در همان دو ثانیه میخواست زندگیام را مرور و ارزشمند را از بیارزش غربال کند. وصف آنچه در آن دو ثانیه گذشت و چگالیِ عواطف و افکار و احوالش ناممکن است. شبیه وصف دیدن برای نابینا. چرخ ماشین در فاصله یکی-دوسانتیمتری چشمم ایستاد. مرگ را پذیرفته بودم اما نمردم. عضلاتم چنان منقبض بود که میلرزید، اما از اینکه زنده مانده بودم چنان متعجب و خوشحال بودم که بعد از چند ثانیه بهت سنگین شروع کردم به بلند خندیدن. پیرمرد هم که مطمئن نبود من را کشته یا نه و سریع از ماشین بیرون آمده بود از اینکه دید جلوی چرخهای ماشینش زندهام و میخندم شروع کرد به خندیدن و اشک ریختن.
اگر فناوری ترمز ماشین گرانقیمتش قدیمیتر بود یا چند صدم ثانیه دیرتر بر ترمز میکوبید، مرگم حتمی بود. یا اگر با زاویهی متفاوتی به زمین میخوردم و بدنم گرم نبود، مرگ یا نقص عضوم قطعی بود. پشتم به دعای مادرم و خوبان زندگیام گرم بود که کول پشتیام نگذاشته بود سرم به زمین بخورد و مثل هندوانه بترکد. بدنم هم سالم بود و بیخراش. هر چه میگفتم سالمم پیرمرد باورش نمیشد. چند دقیقه طول کشید قانعش کنم که حالم خوب است. آدرنالینراش چنان از نظر فیزیکی و عاطفی زنده و هایام کرده بود که اصرارش برای گزارش به پلیس یا پرداخت جریمه و رساندنم به خانه را هم نپذیرفتم. چقدر باید شکرگزاری میکردم برای این تجربهی نزدیکبهمرگ و زندگیساز بدون نقص عضو و هزینه. چقدر هر نفس لذتبخش و ارزشمند شده بود و حیف بود در اداره پلیس تباه شود.
سجده شکر زندگی زیر همان باران و وسط همان خیابان انتخاب دلچسبتری بود. پیادهروی مسیر برگشت به خانه گزینهی دلپذیرتری بود، حتی با کشاندن دوچرخهی اوراق. مهابت و غرابت تجربه چنان بود که هضمش ساعتها زمان میخواست، چنانکه تا صبح نگذاشت بخوابم. حتی شک کردم نکند مردهام و مثل فیلم «دیگران» به اشتباه فکر میکنم زندهام. تا وقتی به خانه نرسیدم، با صاحبخانهام مفصل حرف نزدم، گریه شادیاش را از شنیدن ماجرا ندیدم و با خانواده و دوستانم با تلفن حرف نزدم، هنوز مطمئن نشده بودم همان زندگی قبل از مرگ است. از پریشب همهی زندگیام رنگ و معنای دیگری گرفته. انگار زندگی چهارده اینچ به سینمای سهبعدی دالبی تبدیل شده. درست مثل تولد دوباره. همهی بهرهها و تجربهها اضافه بر سهمم و قاچاقی است و قدردانستیتر و شکرکردنیتر.
هر ساعت فرصتی اضافی است برای لذت و نیکی و زندگی غربالشدهتر. انگار عزیزانم را بیشتر میشناسم و دوست دارم و از زندگیهای قاچاقی آنها هم راضیترم. ارزش و ضرورت ادای حق هر لحظهی حیات چنان روشنتر شده که یک ماه زندگی هم فرصت زیادی به نظر میرسد. زندگیای که بند یک اشتباه کوچک نکردن از دیگران است و اصلا معلوم نیست چند ساعت دیگر ادامه داشته باشد. همهی لذتها و تجربهها از پریشب انگار برای اولین بار است و شاید آخرین بار. کاش میشد این حال و توجه را دائمی کرد. فراموشی نمیگذارد.
میخواهم به ادارهی پلیس بروم و ویدیوی این پرتاب سینمایی و توقف ماشین بیخ صورت و بدنم را از آرشیو دوربینهایشان بگیرم تا بتوانم چند وقت یک بار آن دو ثانیه را دوباره تماشا و تجربه کنم و کمتر فراموش کنم که قاچاقی زندهام. کاش بدون چنین تجربهای شما هم مدام چنین حالی داشته باشید. قاچاقی زندگی و تجربه و نیکی کنید. گویی که اولین و آخرین بار است.
function httpGet(url) {
return new Promise(
function (resolve, reject) {
var request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (this.status === 200) {
// Success
resolve(this.response);
} else {
// Something went wrong (404 etc.)
reject(new Error(this.statusText));
}
}
request.onerror = function () {
reject(new Error(
'XMLHttpRequest Error: '+this.statusText));
};
request.open('GET', url);
request.send();
});
}
مطلب زیر توسط یک گروه اینترنتی برام ایمیل شده بود گفتم تو وبلاگ بزارم تا هروقت دیدمش تلنگری برام باشه
-------------------------------------------------------------
آیا من دُزدم ...؟!
آیا ما دزدیم. ..؟!
راننده خط، بیتوجه به صف مسافران که در زیر باران منتظر ماشین بودند، کنار خیابون داد میزد:
«دربـــــــــــــــــست...»
نگاه معنیدار و اعتراضهای گاه و بیگاه مسافران،
هم راننده رو کلافه کرده بود و هم ما رو.
بهخاطر همین من و یک خانم و دو آقای دیگه با همدیگه، ماشین رو با کرایه ۶۰۰۰ تومن دربست گرفتیم، که برای هر مسافر نفری ۱۵۰۰ تومن میافتاد، درحالی که کرایه خط فقط ۵۵۰ تومن بود.
به هر ترتیب سوار تاکسی شدیم و راننده شروع کرد از مشکلات ماشین و گیرنیومدن لاستیک و بنزین آزاد زدن صحبت کردن و ...
کنار راننده مرد جوانی نشسته بود که انگار از خیس شدن زیر بارون دل خوشی نداشت.
راننده تاکسی: برادرخانمم یه وام ۶ میلیون تومنی میخواست بگیره مجبور شد ماشینش رو بذاره به عنوان وثیقه.
بنده خدا الان خورده به مشکل، دارند ماشینش رو مصادره میکنند.
یه عده دزد دارند میلیارد میلیارد اختلاس میکنند کسی هم خبردار نمیشه، اون وقت این جوون رو ببین چجوری سر میدوونند!
مسافر: نوش جونش!
راننده (نگاه متعجب): نوش جون کی؟
مسافر: نوش جون کسی که ۳۰۰۰ میلیارد تومن خورده!
راننده (با لحن عصبی آمیخته به تمسخر): نکنه اون بابا فامیل شما بوده؟
مسافر: نه! فامیل من نبوده اما یکی بوده مثل همین مردم، مثل شما!
مگه این یارو از مریخ اومده اختلاس کرده؟ یا اون مدیر بانک از اورانوس به ریاست رسیده بوده؟
راننده: نه آقا جان اونا از ما بهتروناند!
من برای یک جفت لاستیک باید ۳ روز برم تعاونی،
اون وقت اون ۳۰۰۰ میلیارد تومن رو میخوره یه آبم روش..!
مسافر: خب آقا جان راضی نیستی نخر!
راننده (با صدای بلند): چرا نامربوط میگی مرد حسابی؟ مجبورم بخرم ! لاستیک نخرم پس چجوری با ماشین کار کنم ؟
مسافر: وقتی شما که دستت به هیچ جا بند نیست و یه راننده عادی هستی، وقتی میبینی بارندگی شده و مسافر مجبوره زود برسه به مقصد، میای ماشینی که باید تو خط کار کنه رو دربست میکنی...
راننده پرید وسط حرف طرف که:
آقا راضی نبودی سوار نمیشدی!
مسافر (با خونسردی): میبینی؟ من الان دقیقاً حال تو رو دارم، وقتی داشتی لاستیک ماشین میخریدی...
مرد حسابی فکر کردی ما که الان سوار ماشین تو شدیم و ۳ برابر کرایه رو داریم میدیم راضی هستیم؟
ما هم مجبوریم سوار شیم!
وقتی تو به عنوان یه شهروند عادی اینجوری سواستفاده میکنی، از مدیر یه بانک که میلیاردها تومن سرمایه زیر دستشه چه انتظاری داری؟
اون هم یکی مثل تو در مقیاس بالاتر.
راننده آچمز شده بود و سرش تو فرمون بود ...
مسافر که حالا کاملاً دست بالا رو داشت با خونسردی ادامه داد:
دزدی، دزدیه ... البته منظورم با شما نیستا ...
ولی خدا وکیلی چنددرصد از مردم ما اون کاری که بهشون سپرده شده رو خوب انجام میدن؟
که انتظار دارند یه مدیر بانک کارش رو خوب انجام بده؟
منتهی وقتی اونا وجدان کاری ندارند کسی بویی نمیبره، اما گندکاری یه مدیر بانک رو همه میفهمند!
برادر من تو خودت رو اصلاح کن تا اون مدیر بانک جرأت همچین خلافی رو نداشته باشه.
اینجور موقع ها معلوم میشه اگه ما هم آب گیرمون بیاد شناگر ماهری هستیم!
راننده که گوشاش تو اون هوای سرد از شدت خجالت حسابی سرخ شده بود گفت:
چی بگم والا...!
من اولین نفری بودم که تو مسیر باید پیاده میشدم
و طبیعتاً طبق قرار اجباری با راننده باید ۱۵۰۰ تومن کرایه میدادم.
وقتی خواستم پیاده شم یه اسکناس ۲۰۰۰ تومنی به راننده دادم.
راننده گفت ۵۰ تومنی دارید؟
با تعجب گفتم: بله دارم و دست کردم تو کیفم و یه سکه ۵۰ تومنی به راننده دادم.
راننده هم یک اسکناس ۱۰۰۰ تومنی و یک اسکناس ۵۰۰ تومنی بهم برگردوند و گفت: به سلامت!
همونطور که با نگاهم تاکسی رو که تو هوای بارونی مهآلود حرکت میکرد رو دنبال میکردم، چترم رو باز کردم و پولا رو تو کیفم گذاشتم ...
آروم شروع کردم به قدم زدن و با خودم فکر میکردم:
یعنی من هم باید خودم رو اصلاح کنم...!؟
دزدی فقط دزدی های کلان نیست!
دزدی از همان صد تومان و دویست تومان شروع می شود
همه ما در ذهن خود ایستاده ایم تا دیگران اصلاح شوند یا شاید قهرمانی بیاید و همه را اصلاح نماید...
sudo fuser 8001/tcp
با اجرای دستور بالا در لینوکس می توانید شماره فرایندی که از پورت 8001 دارد استفاده می کند را بدست آورید
تابع MATCH: برای بدست آوردن شماره سطر دارنده یک مقدار در یک ستون
مثال کد زیر شماره سطری را در ستون A بر می گرداند که دارای مقدار 5 باشد
=MATCH(5,A:A,0)
تابع ADDRESS: برای بدست آوردن آدرس یک خانه با مشخص کردن سطر و ستون
ADDRESS(row_num,column_num,abs_num,a1,sheet_text)
مثال: کد زیر مقدار $C$2 را بر می گرداند
=ADDRESS(2,3)
تابع INDIRECT: برای بدست آوردن مقدار درون یک آدرس (که بصورت رشته مشخص شده است)
INDIRECT(ref_text,a1)
مثال: فرض کنید در خانه A5 مقدار 6 قرار دارد و در خانه B6 مقدار 10. کد زیر مقدار 10 را بر می گرداند
= INDIRECT("B"& $A$5)
=SUM(INDIRECT("A1:A10"))
تابع OFFSET: برای بدست آوردن مقدار یک سلول یا مقادیر یک آرایه که در یک موقعیت نسبت به آدرس داده شده قرار دارند
OFFSET(reference,rows,cols,height,width)
مثال: دستور زیر مقدار سلول F5 را بر می گرداند
=OFFSET(C3,2,3,1,1)
یعنی مقدار یک سلول که 2 سطر و 3 ستون با سلول C3 فاصله دارد را برگردان
مثال:دستور زیر حاصلجمع رنج C2:E4 را بر می گرداند
=SUM(OFFSET(C3:E5,-1,0,3,3))
یعنی جمع مقادیر یک رنج 3*3 که یک سطر بالاتر از رنج C3:E5 باشد
------------------------------
چند مثال:
کد زیر میانگین 10 عدد بزرگ در رنج A1:A60 را بر می گرداند (البته توجه داشته باشید که به توجه به اینکه تابع ROW(1:10) یک array formula است به جای فشردن Enter باید Ctrl+Shift+Enter را بفشارید
=AVERAGE(LARGE(A1:A60,ROW(1:10)))
حال اگر سطری بین سطر 1 تا 10 اضافه کنید اکسل بصورت خودکار فرمول را به زیر تبدیل خواهد کرد:
=AVERAGE(LARGE(A1:A60,ROW(1:11)))
و این یعنی میانگین 11 عدد بزرگ در رنج A1 تا A60. برای جلوگیری از این مشکل بهتر است فرمول را به صورت زیر بنویسید:
=AVERAGE(LARGE(A1:A60,ROW(INDIRECT("1:10"))))
مقاله جامعی درباره array formula را می توانید اینجا بخوانید
برای نمایش اطلاعات در هنگام اجرای یک پرس و جو در SQL Server با استفاده از دستورات زیر می توانید چگونگی اجرای Query و مدت زمان اجرای هر مرحله را ببینید:
SET STATISTICS IO ON
SET STATISTICS TIME ON
rodeo چیزی است شبیه IPython notebook اما سبکتر و به نظر من باحالتر
برای تصب و استفاده
pip install rodeo
rodeo .
Unicode استانداردی است که نگاشتی بین تمامی کاراکترها با اعداد فراهم کرده است (البته این تعریف فنی نیست و فقط برای ارائه درکی از موضوع بیان شده)
آنچه برای کامپیوتر قابل فهم است بایت است و نه کاراکترهای رشته. قوانین تبدیل کاراکترهای یک رشته به بایت را encoding می گویند. دو نوع encoding متداول عبارتند از ASCII و Unicode.
Unicode Encoding می تواند UTF-8 یا UTF-16 و یا UTF-32 باشد (هنگام ذخیره یک فایل در notepad ویندور، منظور از unicode همان UTF-16 است)
َASCII برای هر کاراکتر یک بایت درنظر می گیرد (هر کاراکتر به عنوان یک عدد بین 0 تا 127 در 7 بیت ذخیره می شود- بیت علامت همیشه 0 است)
UTF-32 برای هر کاراکتر 4 بایت در نظر می گیرد (هر کاراکتر به عنوان یک عدد بین 00000000 - 0010FFFF در 21 بیت ذخیره می شود - 11 بیت اول همیشه 0 است)
UTF-16 برای هر کاراکتر 2 یا 4 بایت در نظر می گیرد (اگر عدد مربوط به کاراکتر بین 00000000 - 0000FFFF باشد در 2 بایت و اگر بین 00010000 - 0010FFFF باشد در 4 بایت ذخیره می شود)
UTF-8 برای هر کاراکتر می تواند 1 تا 4 بایت در نظر بگیرد (اگر عدد مربوط به کاراکتر بین 00000000 - 0000007F باشد همانند اسکی در یک بایت و اگر بین 00000080 - 000007FF باشد در 2 بایت و اگر بین 00000800 - 0000FFFF باشد در 3 بایت و اگر بین 00010000 - 001FFFFF باشد در 4 بایت) - در جدول زیر دو ردیف دیگر هم برای UTF-8 قرار دارد که خارج از محدوده یونیکد قرار می گیرند ولی از لحاظ تئوری UTF-8 قابلیت استفاده از آن برای پوشش همه اعداد قرار گرفته بین 0 تا 2^31 را دارد
Unicode | UTF-32 |
---|---|
00000000 - 0010FFFF |
00000000-000xxxxx-xxxxxxxx-xxxxxxxx |
Unicode | UTF-16 |
---|---|
00000000 - 0000FFFF | xxxxxxxx-xxxxxxxx |
00010000 - 0010FFFF | 110110yy-yyxxxxxx 110111xx-xxxxxxxx |
Unicode | UTF-8 |
---|---|
00000000 - 0000007F | 0xxxxxxxx |
00000080 - 000007FF | 110xxxxx 10xxxxxx |
00000800 - 0000FFFF | 1110xxxx 10xxxxxx 10xxxxxx |
00010000 - 001FFFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
00200000 - 03FFFFFF* | 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
04000000 - 7FFFFFFF* | 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
مقاله ای در سایت مستندات پایتون دیدم که با زبان بسیار ساده به معرفی یونیکد پرداخته است.
در این پست چند نکته بسیار مختصر از مقاله را یاداشت کرده ام ولی خواندن کل مقاله را به علاقه مندان توصیه می کنم
UTF-8 یکی از متداول ترین encodingها است. UTF مختصر شده Unicode Transformation Format است و عدد 8 در آن یعنی از اعداد 8 بیتی (1 بایتی) در این encoding استفاده شده است و شامل قوانین زیر می شود:
اگر code point کمتر از 128 بود همانند ASCII Encoding هر بایت معادل همان code point خواهد بود اما اگر code point بزرگتر از 127 بود (بر خلاف ASCII که قابل تبدیل code point های بیشتر از 127 به بایت را ندارد) به توالی از 2 یا 3 یا 4 بایت تبدیل می شود که هر بایت آن عددی بین 128 تا 255 است