تبدیل اعداد عربی به رومی

۱. این سیستم نمایش اعدادی که امروز استفاده می‌کنیم به سیستم هندو-عربی معروفه. تا قبل از قرن ۱۴(حدودن) که این سیستم کاملن فراگیر بشه، در جهان غرب هنوز از سیستم رومی استفاده می‌کردن. منظورم همون ایکس و آی هاییه که روی یه سری ساعتا دیده می‌شن.

۲. اعداد رومی به این صورت کار می‌کنن که برای اعداد ۱ و ۵ و ۱۰ و ۵۰ و ۱۰۰ و ۵۰۰ و الخ، از یه سری نماد استفاده می‌کنن. ۱ می‌شه I، و پنج رو با V نشون می‌دن. بعد برای این که مثلن عدد هفت داشته باشیم،‌ یه پنج و دو تا یک رو باید بذاریم کنار هم: VII. البته یه سری قواعد جزیی تر هم داره که توی صفحه‌ ویکیپدیای اعداد رومی می‌تونین ببینین.

۳. یه روز از حوصله سر رفتگی و ۲ ساعت فراغت، به سرم زد کدی بنویسم که یه عدد بگیره و معادل رومی اون رو تولید کنه. حاصل رو گذاشتم روی گیتهابم. فعلن واسه اعداد کوچکتر از ۱۰۰۰ کار می کنه و بسط دادنشم زیاد سخت نیست. با پایتون ۳ نوشته شده. از هیچ لایبرری خاصی هم استفاده نکردم. کلن هم با همون مهارتای پایه‌ی برنامه نویسی انجام شده کار. شاید البته بشه جور بهتری هم انجام داد این کارو ولی چون هدفم سرگرمی بود و نه رفع نیاز، دنبال نمونه‌های مشابهش نگشتم.

در مدح کتاب نصفه خوندن

۱. یکی دو هفته‌ی اخیر کتاب اسپینوزای خیابان مارکت رو می‌خوندم. ۳ ۴ تا داستان اول رو با شوق خوندم ولی ناامید شدم. چندتا داستان دیگه‌ش رو هم خوندم و در آخر تصمیم گرفتم ۳ تا داستان آخرش رو نخونم و برم کتاب بعدی. اما چرا؟

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

۳. ولی چرا؟ واقعن چرا باید وقتمون رو پای چیزی هدر بدیم که یقین داریم بده؟ فقط چون یه درصد احتمالش هست که بعد از ۴۰۰ صفحه کتاب حوصله سر بر، نویسنده یهو منقلب بشه و دو صفحه جالب بهمون هدیه بده؟ نمی صرفه واقعن. مثلن احمد شاملو یه چهره برجسته توی ادبیات ایرانه. من امسال کتاب روزنامه‌ی سفر‌ میمنت‌اثر ایالات متفرقه‌ی امریغ رو ازش شروع کردم به خوندن. واقعن ده صفحه هم نتونستم تحمل کنم. حالا بیام به خودم بگم که نه، شاملو خیلی شخص مهمیه. چه حاصل؟ عمر رفته برنمی‌گرده. این همه‌ دارم می‌نویسم که بگم واقعن مطالعه‌ هم بعضی وقتا رفتار‌های نه چندان منطقی توی ما ایجاد می‌کنه و باید ازشون اجتناب کرد. استادی داشتم که شاید تاثیر گذار ترین توصیه رو به من – و همکلاسی هام – کرد اوایل دانشجوییم: هیچ کتابی ارزش این رو نداره که از اول تا آخرش رو بخونیم. آدم باید فقط اون قسمت از کتاب رو بخونه که واقعن بهش نیاز داره. هرچند که خیلی ساده‌س اما واقعن خیلی‌هامون بهش توجه نمی‌کنیم. مثلن چند نفر رو دیدین که تصمیم گرفتن جاوا یاد بگیرن،‌ بعد با وجود این که مثلن مفهوم متغیر‌ها یا حلقه‌ها رو درک کردن، میان فصل متغیر یا حلقه‌ی جاوای دایتل رو  واو به واو می‌خونن،‌بعد از مطالب تکراری خسته می‌شن و کلن قید جاوا – یا در خوشبینانه ترین حالت اون کتاب – رو می زنن. جسارت چشم بستن به ۴۰۰ صفحه از یه کتاب ۶۰۰ صفحه‌ای رو داشتن چیزیه که به ما واقعن توی پیشرفت کمک می‌کنه.

تب یا اسپیس؟ درآمد اونایی که اسپیس رو ترجیح می‌دن بیشتره

۱. این مطلب رو یکی دو جا دیدم این اواخر که پر آب و تاب ترینش توی فاسبایت بود: برنامه‌نویس‌هایی که اسپیس رو به تب ترجیح می‌دن، درآمد بیشتری دارن، تقریبن ۸ درصد. درظاهر شاید جذاب به نظر بیاد ولی در باطن یقینن غلطه.

تب یا اسپیس

۲. اتفاق خیلی رایجی که رخ می‌ده اینه که ما موقع بررسی یک مسئله، درواقع داریم اون فاکتوری که دوست داریم رو در نظر می‌گیریم، ولی از چیزایی که غیر مستقیم توی مسئله دخیلن، چشم پوشی می‌کنیم (از روی بی حواسی یا با نیت شوم؟؟؟؟). مثلن اینجا اومدن دیدن کدوم برنامه نویس از چی استفاده می‌کنه‌(تب یا اسپیس) و چقدر درآمد داره. همین. ولی اگر درست به قضیه نگاه کنیم، واقعن این سوال پرسیدن غلطه. کلی فاکتور مهم دارن نادیده گرفته می‌شن.

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

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

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

پیاده سازی بلاک چین

من چند وقتی رو سر بلاک چین مطالعه کردم و به جاهایی باحالی رسیدم. این وسط یه مشکلی که موقع مطالعه داشتم این بود که کد ساده ای نبود که بتونم اجرا کنم و حداقل یه دمو ساده ببینم یا چیزی مثل این. به یکی دو مورد رسیدم که با کد بلاک چین رو توضیح داده بودن. کد یکی از اونا رو کش رفتم ؛) یکم باحاش ور رفتم و کاری کردم که صرفن توی ترمینال بشه ازش یه خروجی قابل درک گرفت. گذاشتمش روی گیت‌هاب. اگر به بلاک چین علاقه دارید برید ببینیدش: یک بلاک چین ساده با پایتون. اگر نظری درمورد بهتر کردنش هم دارید برام به آدرس resa.keshavarz در جیمیل ارسال کنید(به املای آدرس لطفن دقت کنید) تا ازش بتونیم یه چیز ساده و قابل درک برای آدمای علاقه مند دربیاریم. این جا موند: این بلاک چین ساده با پایتون نوشته شده. چیز خاصی هم نباید براش نصب کنید. برای درکشم صرفن یه ایده‌ی کلی از تکنولوژی بلاک چین و کمی دانش برنامه نویسی و همینطور یه آگاهی سطحی از هش ها کفایت می‌کنه. یه سری توضیحات هم به انگلیسی اونجا هست. ساده نوشته شده که قابل درک باشه. اگر سوالی هم بود با همون آدرس بالا برام بفرستید. همین.

بلاک چین تکنولوژی پشت بیت کوین

قبلن هم توی بلاگ درمورد بلاک چین نوشته بودم. مثل مطلب بلاک چین چیه و چجوری کار می‌کنه و همینطور مطلب چرا بیت کوین مهمه که درمورد بیتکوین، یعنی اولین محصول مبتنی بر بلاک چین.

پایتون دو و سه در آناکوندا

۱. موقع نصب آناکوندا دو تا گزینه هست: آناکوندا برای پایتون ۲ و آناکوندا برای پایتون ۳. من خودم با پایتون سه بیشتر سر و کار دارم اما گاهی ممکنه پیش بیاد که آدم به پایتون ۲ هم نیاز داشته باشه‌(پیش اومد دیروز). نصب دوباره‌ی اناکوندا کار جالبی نبود برام. کمی گشتم و به این راه حل رسیدم:

conda create -n py36 python=3.6 anaconda

با این دستور می‌شه یه محیط مجازی (virtual environment) جدا ساخت و نسخه‌ی پایتون دلخواه رو توش نصب کرد. py36 اسم این محیط مجازیه و می‌تونه هر اسمی باشه(احتمالن باید یکسری قواعد اسم گزاری توش رعایت شه، مثلن با عدد شروع نشه و توش فاصله نباشه و…). python=3.6 مشخص می‌کنه که از چه ورژنی از پایتون توی این محیط مجازی قراره استفاده بشه. می‌تونه مثلن ۲.۷ باشه این مقدار‌(چیزی که من نیاز داشتم.)
برای استفاده از این محیط مجازی هم کافیه عبارت زیر رو توی ترمینال بزنید:

source activate py36

 

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

 

۲.  پروژه‌ی آناکوندا یکی از چیزای خیلی باحال دنیای پایتونه. آناکوندا همه‌ی (تقریبن همه) ماژول های پایتون رو – مخصوصن اونهایی که توی علم داده – کاربرد دارن رو یکجا جمع کرده و آدم رو از نصب های مکرر و پیدا نشدن پکیج ها و اینجور چیزای حوصله سربر خلاص می‌کنه. یک سری ابزار دیگه هم می ده مثل یه نوت بوک که باهاش می‌شه توی مرورگر کد نوشت. خیلی چیز باحالیه در کل. البته این نوت بوک (ژوپیتر) جدا هم قابل دسترسه اما خب توی آناکوندا هم هست. معرفی آناکوندا بمونه برای بعد.

بهترین زبان برنامه نویسی برای شروع

۱. برنامه نویسی شغل جذابیه. توانایی خلق کردن چیزیه که خیلی ها دوسش دارن و توی دنیای برنامه نویسی، خلق کردن رو به بهترین شکل می‌شه دید. اما مسیر برنامه نویس شدن چجوریه؟ به کی می‌شه گفت برنامه نویس؟ چیکار باید کرد برای برنامه نویس شدن. این اولین مطلبه درمورد برنامه نویس شدن. احتمالن ادامه دار هم باشه. این مطلب منحصرا درمورد انتخاب زبان برنامه نویسی صحبت می‌کنم. اگر قبلن با یه زبان برنامه نویسی کار کردین و چیزای مقدماتی رو می‌دونین، می‌تونین بند ۲ رو نخونید.

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

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

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

۵. مطالب بعدی حدس می زنم یکی انتخاب فیلد مناسب باشه‌(وب یا موبایل یا چیز دیگه؟) و شاید درمورد انتخاب زبان مناسب برای هر فیلد بنویسم.‌(همه کار رو با یه زبان نمی شه کرد.) همینطور درمورد چیزای دیگه ای که یه برنامه نویس باید بدونه(گیت، دیتابیس و هزار چیز احتمالی دیگه). امیدوارم خوب دربیاد از گل و مفید باشه.

بلاک چین چیه و چجوری کار می کنه

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

بلاک چین تکنولوژی پشت بیت کوین

بلاک چین

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

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

 

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

زبان کند و آسون جاوا

۱. وقتی توی وب جستجو کنید درباره‌ زبان برنامه‌نویسی جاوا، به دو تا مطلب خیلی جالب درموردش می‌رسید: اول این که جاوا زبان برنامه نویسی آسونیه و دوم این که زبان جاوا کنده. این مطالب تقریبن توی هر معرفی ای که از جاوا دیدم، بهشون اشاره شده بود. البته جستجو های من درمورد جاوا بیشترش حدود دو یا سه سال پیش بود ولی فکر نکنم تغییر زیادی رخ داده باشه این چند سال. ولی نکته‌ی جالب اینجاست: زبان برنامه نویسی جاوا، نه زبان کندی حساب می‌شه و نه آسون.

جاوا: ساده و کند

۲. این که جاوا کند و کم سرعته درواقع زمانی درست بوده. بخاطر این که برنامه های نوشته شده به زبان جاوا، روی ماشین مجازی جاوا اجرا می‌شدن، سرعتشون نسبتن کم بود(نسبت به زبان مثلن سی، خیلی کم بود). ماشین مجازی جاوا یه خلاقیت خیلی باحال بوده اون زمان. این امکان رو می‌داده که برنامه ها فقط یه بار نوشته بشن و کامپایل بشن و همه جا، روی هر سیستم و سیستم عاملی اجرا بشن. اضافه شدن یه لایه‌ی نرم‌افزاری که بین برنامه‌ی نوشته شده و سیستم عامل قرار می‌گرفت، باعث می‌شد برنامه‌های جاوایی کند‌تر باشن. این قضیه توی نسخه‌های اولیه‌ی جاوا خیلی شدید بود ولی از تقریبن جاوای ۱.۴ به بعد خیلی خیلی کم و کمتر شد کندی جاوا و مثلن اگر امروز برید و بنچ مارک‌هایی از جاوا رو ببینید می‌بینید که سرعتش اونقدرهام پایین نیست.

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

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

چرا بیت کوین مهم حساب می‌شه

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

بیت کوین - پول دیجیتال - بلاک چین

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

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

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

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

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

۷. بیت کوین امنه. یعنی دزدی توش تقریبن غیر ممکنه. دلیل اصلی هم اینه که هیچ فردی با قدرت و نفوذ بالا ، توی دنیای بیت کوین وجود نداره. هیچ تصمیم گیرنده‌ای نیست که بتونه با یه تصمیم شخصی، بیت کوین بوجود بیاره یا مصادره کنه یا امثال‌ این ها. از طرف دیگه، مثل ریال و دلار، نمی‌شه بیت کوین تقلبی چاپ(!) کرد. تقلب کردن توی بیت کوین تقریبن غیر ممکنه.

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

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

 

 

امنیت و جنگو

۱. از زبان برنامه نویسی پایتون نوشته بودم و اینکه چرا دوستش دارم. یکی از دلایلی که پایتون رو دوست دارم اینه که توی شاخه‌های مختلفی کاربرد داره، یکیش توسعه وب. فریمورک جنگو یکی از فریم‌ورک‌های معروف پایتونیه که سایتای معروفی مثل اینستاگرم و پینترست هم ازش استفاده می‌کنن.

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

امنیت وب - پایتون و جنگو - پایکان

۳. پایکان یه اجتماع سالانه(!) س که هر سال برگزار می‌شه و برنامه‌نویس‌ها و علاقه‌مندهای پایتونی رو دور هم جمع می‌کنه. توی پایکان ۲۰۱۷ ارائه‌ی خیلی خوبی دیدم به اسم آشنایی با توسعه‌‌ی وب امن با پایتون و جنگو. توی این ارائه‌ي سه ساعته،‌ آقایی به نام  جیمز بنت درمورد نکات و تهدیدات امنیتی رایج و حتی غیر رایج حرف می‌زنه و یک سری راه حل هم (خیلی مختصر) ارائه می‌ده. البته که اینجا بیشتر تمرکز روی جنگو هست، اما به نظرم برای هر دولوپری با هر زبان برنامه‌نویسی‌ای، دونستن این مطالب( حد اقل خود تهدید‌ها) می‌تونه مفید باشه. برنامه نویس خوب شدن کار سختیه. نه که جادویی در کار باشه. لازمه‌ش اینه که از کنار هیچ چیز ساده رد نشه آدم. در کنار این ویدیو که درباره یه موضوع خاصه، کتاب 97 چیز که هر برنامه نویس باید بدونه هم می‌تونه برای هربرنامه‌نویسی مفید باشه.

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

 

 

  •  امنیت وجهه‌های متفاوتی داره. اینجا از پیاده سازی امنیت توسط برنامه‌نویس حرف زده شد. رعایت نکات ایمنی(خنده دار شد) توی فعالیت‌های روزمره هم یقینن چیز مهمیه. توی مطلب احتیاط شرط عقله، یه سری راه برای امن موندن از خطرات احتمالی دنیای دیجیتال ارائه شده. مفیده.