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

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

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

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

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

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

تب یا اسپیس

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

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

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

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

هاست رایگان پایتون

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

هاست پایتون رایگان

۲. اینجا چندتا سرویس که این امکان رو می‌دن که بدون هزینه کردن یه سایت پایتونی راه بندازیم، می ذارم:
۲.۱. PythonAnyWhere: این سرویس یه شما امکان انتخاب ورژن پایتون رو‌ می‌ده. بعدشم یه ترمینال لینوکس در اختیارتون می‌‌ذاره که می‌تونین باهاش هر پکیچ پایتونی که خواستین رو نصب کنید. من باهاش جنگو نصب و تست کردم و رضایت بخش هم بود. راستی گیت هم داره و راحتترین راه انتقال فایلای پروژه بهش واسط قرار دادن گیت لب و گیتهابه. البته از SSH هم می‌تونین استفاده کنید. با هر اکانت می‌شه یه سایت راه اندازی کرد که البته یه سری محدودیت داره و اگر از حد خاصی(که چندان هم بالا نیست) بیشتر باشه استفاده از سایت، باید اکانت پریمیوم بخرین که از ۵ دلار در ماه شروع می‌شه.

۲.۲. OpenShift : اوپن شیفت رو ردهت ارائه می‌ده. یه ترمینال سنت او اس دراختیارتون می‌ذاره. از محدودیت‌هاش چیز زیادی نمی‌دونم ولی گویا سرویس نسبتن خوبی می‌ده و به همین دلیل متقاضی هم زیاد داره. بخاطر همین بعد از ثبت نام یه مدتی باید منتظر بمونید توی صف. من پارسال که ثبت نام کردم حدودن یه ماه طول کشید اکانتم اکتیو بشه و وقتی هم که ۳ ماه ازش استفاده نکردم همه چیزو پس گرفتن‌ که بدن به یکی دیگه ؛) اینم بگم که به ایران سرویس نمی‌ده و باید از اون فیـلتر شکن استفاده کنید.

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

۲.۴. Bitnami, FriHost, WikiWikiWeb:این سه تا هم هستن که البته هر سه فقط پایتون نسخه ۲ رو ساپورت می‌کنن و شاید نشه زیاد روشون حساب کرد (البته من خودم شخصن همیشه پایتون ۳ رو ترجیح می‌دم و تا مجبور نشم سراغ پایتون ۲ نمی‌رم، شاید برای کسی که ۲ رو ترجیح می‌ده هنوز گزینه خوبی باشه.)

 

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

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

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

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

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

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

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

conda create -n py36 python=3.6 anaconda

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

source activate py36

 

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

امنیت و جنگو

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

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

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

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

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

 

 

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

اتم: ادیتور دوست داشتنی

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

نرم افزار ویرایشگر اتم

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

۳. اتم رو خیلی دوست دارم. یه ادیتور ساده با کلی ویژگی خوب. اولین خوبیش اینه که – مخصوصن توی پروسه یادگیری- مجبور میکنه برنامه نویس رو که همه چیز رو خودش بنویسه. البته یه سری کمک می کنه ها. ولی خب اینا اسمشون کمکه، نه این که بیاد کل کار رو از رو دوش برنامه نویس برداره.

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

 

چرا پایتون؟

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

لوگو زبان برنامه نویسی پایتون

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

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

۴. کد‌های زیر رو نگاه کنید:

پایتون در مقابل سی و جاوا

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

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

 

  •  درواقع تلفظ درست اسم این زبان می‌شه پایثان. ث هم به صورت تلفظ عربیش منظورمه. ولی خب از اونجایی که این صامت توی زبان فارسی زیاد رایج نیست به ت بسنده شده. پس تلفظ معقول می‌شه پایتان. ولی خوب یا بد پایتون رایج تره و اینجا هم یکی درمیون از هردو اسم استفاده کردم که یکی به میخ و یکی به نعل خورده باشه.