بایگانی برچسب: s

راهنمای شروع و پیشرفت و حرفه ای شدن در زبان برنامه نویسی پایتون

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

شروع ایده اصلی

در مورد پایتون کتاب و راهنما خیلی خیلی زیاده. اگر با چیزهایی مثل کتاب های خوندنی راحتتر هستین به نظرم «یاد گرفتن پایتون به روش سخت» منبع کاملا خوبیه؛ بخصوص بخش های آزاد و آنلاینش برای یادگیری اولیه کاملا کافیه. اگر اهل ویدئو باشین و متن و تمرین حل کردن با استاد هم دوره یادگیری برنامه نویسی با پایتون یا ترجمه ما ازش در گوتو کلس به اسم دوره یادگیری فارسی برنامه نویسی با پایتون گوتوکلس گزینه خوبیه. اگر زبان بلدین منطقا انگیسی خوندن بهتره. یادتون باشه در این بخش دارین خیلی مقدماتی درکی از یک زبان برنامه نویسی و شکلش پیدا می کنین. لازم نیست مته به خشخاش بذارین و لازم هم نیست برنامه نویس بزرگی بشین. نکته اینه که با مفهوم برنامه نویسی آشنا بشین و دستورزبان و مفاهیم پایه ای پایتون رو درک کنین؛ که بسیار هم ساده هستن!

در این مرحله اگر از یک زبان برنامه نویسی دیگه میاین و در حال حاضر زبون خودتون رو بلدین، پیشنهاد می کنم به شکل عمومی دنبال python tutorial بگردین و چند تا رو باز کنین و اونی که دوست دارین رو کامل بخونین. اینجوری خیلی زود سینتکس جذاب پایتون رو یاد می گیرین و می تونین برین مرحله بعدی.

نکته: بعضی ها در اولین برخورد با پایتون با یک سورپریز بزرگ روبرو می شن: پایتون از { و } برای مشخص کردن بلوک ها استفاده نمی کنه و به راحتی از اسپیس یا تب برای اینکار کمک میگیره. گفته می شه اولین شروع هر کس که از زبان دیگه اومده به پایتون، با یک فرار همراهه و بار دوم احوالپرسی از پایتون است که عاشق این زبون ساده و کم ادعا می شه (:

پنج نکته برای دوری

جان سونمز پنج نکته رو می گه که باید ازش دوری کنین و یکی از اصلی ترین مراجع این مطلب هم اونو تکرار می کنه و من کی باشم که تکرارشون نکنم؟

  1. کتاب ها رو از اول تا آخر نخونین. در شروع کتاب ها رو از اول تا آخر نخونین. ما بخش کمی از کتاب ها رو یادمون می مونه و فقط کتاب خوندن بخش زیادی از انرژی شما رو می گیره. کتاب مال وقتی است که شما موضوعات رو بلدین و می خواین توش عمیق بشین.
  2. بدون برنامه تو بحث شیرجه نزنین. آدم ها رو به دلایل مختلف جو می گیره. یکهو می خوان خدای چیزی بشن و یک عالمه کتاب دانلود می کنن و شایدم دو تا ادیتور برنامه نویسی و عضو یکسری کانال و فروم و میلینگ لیست می شن و هی چیز می خونن و فیلم می‌بینن. این اشتیاق معمولا به همین سرعت هم فروکش می‌کنه. بدونین برای چی وارد بحث شدین و می خواین به کجا برسین و می خواین باهاش چیکار کنین.
  3. حوزه خودتون رو مشخص کنین. دنیا وسیعه! حتی برنامه نویسی هم خیلی وسیعه و شاید براتون جالب باشه که حتی پایتون هم خیلی وسیعه! بهتره شما بدونین در چه حوزه ای می خواین کار کنین و از اون شروع به یادگیری کنین. اگر می خواین اپ تحت وب درست کنین لازم نیست با numpy شروع کنین و اگر می خواین محاسبات انجام بدین شروع کردن یا اصرار روی scikit اشتباهه. از یک جا شروع کنین و توش پیش برین.
  4. دو (یا بیشتر!) چیز رو همزمان یاد نگیرین. این اشتباه با مورد ۲ شباهت‌هایی داره. آدم ها یکهو می خوان «هکر» بشن و شروع می کنن شبکه و سیستم عامل و برنامه نویسی و انگلیسی و آلمانی و روسی و نقد فیلم و ادبیات کلاسیک رو با هم خوندن و یاد گرفتن. از یک جا شروع کنین و وقتی در حد معقولی پیش رفتین برین سراغ چیز بعدی. این مساله حتی داخل پایتون هم صدق می کنه. اگر دارین جنگو یاد می گیرین نیازی نیست همزمان شروع به خوندن فلسک هم بکنین. یکی رو پیش برین در حد معقول و بعد فرصت برای بعدی هست.
  5. بدون تجربه کردن پیش نرین. بعضی چیزها برای آدم ها لذت بخشه. من از دیدن فیلم بازی شطرنج خیلی خوشم می یاد و در نتیجه شش ماه فیلم دیدم بدون اینکه بازی کنم؛ هیچ پیشرفتی هم نداشتم. حتما حین تئوری با عمل هم برخورد داشته باشین.

شروع عملی پایتون

این مساله ممکنه با بخش اول که عنوانش «شروع اصلی» بود پیش بره. برای اینکار لازمه اول پایتون رو نصب کنین و چند برنامه خیلی خیلی ساده باهاش بنویسین. راه انداختن محیط توسعه یکی از قدم های مهم در یادگرفتن است؛ و اتفاقا گاهی سخت. خودتون رو با محیط کامندلاین و خط فرمان پایتون عادت بدین.

پایتون دو نسخه خیلی فعال داره که کمی با هم فرق دارن؛ پایتون نسخه دو و پایتون نسخه ۳. در این مورد همیشه ما رو دست می ندازن و ما هم باهاشون می خندیم. جدای از خنده شما اگر مردد هستین، پایتون ۳ رو یاد بگیرین.

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

یک پروزه عملی بردارین

حالا باید تا حدی بدونین که کجا ایستادین و دنبال چی هستین. اگر دنبال وب هستین یک پروژه عملی برای خودتون تعریف کنین و با چیزی مثل جنگو شروعش کنین. درگیر اسم و اینها نباشین. پروژه رو تعریف و شروع کنین. شاید خیلی زود پاکش کردین! اصلا مهم نیست. مثلا یک سیستم رای گیری آنلاین. یا سیستم حسابداری شخصی. یا دفترچه تلفن دوستاتون. یا فهرست کتاب ها و اینکه چی خوندین و چی قرض دادین یا هر چیز دیگه یا یه سیستم وبلاگ شخصی یا صورت غذاهایی که پختین و روش پختش. شایدم یک برنامه مخصوص تنظیم کردن قرار ملاقات. موضوع خیلی مهم نیست. مهم اینه که خیلی زود چیزهایی که یاد میگیرین به شکل عملی در یک جایی استفاده بشه. اگر با جنگو کار می کنین کتاب Two Scoops of Django توصیه می‌شه. من خودم اخیرا به توصیه خودتون اینو خوندم و خوب بود برام. در این مرحله چیزهایی که یاد می گیرین رو نسبتا عمیق کنین. حوزه شما مشخص شده و باید حرفه ای تر بشین توش. اگر مثلا یادگیری ماشینی رو برداشتین یک مساله واقعی تعریف کنین و سعی کنین قدم به قدم حلش کنین. شاید مثلا تشخیص سگ از گربه قدم اول باشه و تشخیص طبقه بندی یک وبلاگ قدم دوم. شایدم علاقمند به یک اپلیکیشن دسکتاپ باشین. بازم امکانش هست. مهم اینه که حوزه خودتون رو کشف کنین و بدونین که در کدوم خط دارین پیش می رین.

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

حالا عمیق بشین

شما درک از زبان دارین و می تونین باهاش کار کنین درسته؟ حالا وقتشه که حرفه ای بشین و بهتر از هر کس زبان رو درک کنین. حداقل بهتر از ۸۰٪ آدم‌های دیگه. این بخش‌ها مهمترین اجزای داکیومنتهای رسمی پایتون هستن برای خونده شدن توسط کسی که می خواد زبان رو به تسخیر خودش در بیاره: 1, 2, 3, 4, 5, 6.1, 6.2, 26.4 و 27.3.

یک تمرین فوق العاده برای بهتر کردن دانش جدید و تثبیت کردنش اینه که کدهای قبلی رو ریفکتور کنین؛ بازنویسی کد برای بهتر کردنش بدون تغییر در خروجی ها.

پیشرفت کنین

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

  • کتاب Fluent Python
  • کتاب Effective Python

نکته پایانی

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

منابعی برای نگاه کردن

شروع سری جدید دوره آموزش پایتون مقدماتی

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

معلومه که اگر مخاطب من هستین با کد تخفیف JadiFollowers که برام درست کردن ۴۰٪ تخفیف می‌گیرین و معلومه که من به حق یادگیری همگانی اعتقاد دارم و اگر کسی هست که واقعا نمی تونه هزینه کلاس ها رو بده، کافیه به من ایمیل بزنه تا رایگان به دوره اضافه اش کنم؛ jadijadi@gmail.

آموزش راه اندازی استارتاپ بستون ۹ تا ۱۲: کریسمس مبارک! حالا سیستم واقعا کار می کنه و شما هم می‌تونین کاربر/توسعه دهنده‌اش باشین

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

امروز بعد از کمی مرتب کردن پروژه، اون رو در دامین بستون آی آر آپلود خواهیم کرد. قسمت های قبلی رو از اینجا ببینین.

بستون ۹ – فراهم کردن امکان رجیستر شدن یوزرها

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

بستون ۱۰ – کمی بهینه سازی کد و اچ تی ام ال و کلاینت

در این قسمت دستی به سر و گوش اچ تی ام ال می کشیم و یه کوچولو کد کلاینت رو بهتر می کنیم تا آماده آپلود کردن روی سرور باشیم

بستون ۱۱ – آماده کردن کرد پروژه برای آپلود

کد تقریبا آماده استفاده عملی است ولی بذارین اول با یک برنامه کیفیت کد رو زیر نظر بگیریم که مطمئن باشیم خوش خط می‌نویسیم و بعد بریم سراغ به روز رسانی ریدمی و ریکوارمنتس. با ما باشین که به زودی کد هوا خواهد شد!

بستون ۱۲ – دپلوی کردن سیستم روی دامین و استفاده «واقعی»

در این شماره به سرور وصل می‌شیم و سرویس رو واقعا آپلود می کنیم روش و از کامند لاین اولین خرج هامون رو «واقعا» ثب می کنیم.

پروژه بستون ۵ تا ۸: حالا هم یوزرها رو می‌شنایسم، هم دستورات کامند لاین برای ذخیره اطلاعات داریم

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

بستون ۵ – کمی مرتب و تمیز سازی پروژه و گذاشتنش روی گیت هاب

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

قسمت ششم پروژه بستون – آشنایی مقدماتی با ویوها، نوشتن ساده‌ترین ویو و ایده لاگین

در قسمت ششم شروع می کنیم به راه انداختن وب سرویس‌های واقعی‌مون. اولین قدم آشنا شدن با مفهوم ویو در MVC است و نوشتن یک دونه خیلی خیلی ساده اش. همچنین توی این شماره در مورد شیوه ای که می خوایم برای شناسایی یوزر استفاده کنیم حرف می‌زنیم

بستون ۷ – اضافه کردن توکن به یوزر و نوشتن اولین وب سرویس عملیاتی

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

بستون ۸ – نوشتن وب سرویس دوم از طریق کپی پیست: ذخیره درآمدهایی که نداریم

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

در یوتوب:

در آپارات:

شروع پروژه بستون؛ ویدئوهای تمام مراحل راه اندازی یک سیستم حساب کتاب شخصی با جنگو، لینوکس، گیت و هر چیزی که پیش بیاد

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

این شد که ایده رو شروع کردم. در این چهار قسمت اول من سیستم رو عملا راه می ندازم و استفاده می کنم. ایده نهایی چیزی است برای نگه داشتن دخل و خرج یک آدم و سعی می کنیم خیلی زود جایی آپلودش کنیم و اضافه کردن یوزر رو درست کنیم که اگر شما هم خواستین بتونین دخل و خرجتون رو روش نگه دارین. من طرفدرا سیستم هایی هستم که برای خودم درست می کنم و بقیه هم می تونن ازش استفاده کنن و شاید روزی به کمی پول هم برسه (:

قسمت اول پروژه بستون: شروع ساخت یک سیستم نگهداری خرج و دخل شخصی با جنگو، گیت، ویرچوال انو،‌ لینوکس

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

قسمت دوم پروژه بستون: ستاپ کردن پروژه و اپ جنگو،‌ اضافه کردن اولین یوزر و دیتابیس و اولین کامیت گیت

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

قسمت سوم: ساختن مدل خرج و ثبت اولین خرج

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

قسمت چهارم: ساختن مدل دخل و اضافه کردن اولین درآمد زمستان از طریق گویی ادمین جنگو

حالا بذارین سری به گویی بزنیم و بعد از درست کردن مدل خرج و مایگریت کردن دیتابیس به مدل جدید، ۱۲۲هزار تومنی که پولدارتر شدیم رو توی سیستم داخل کنیم.

در ادامه…

معلومه که از پیشنهادها بسیار استقبال می شه همینطور از دونیشن و پخش ویدئوها در هر جایی آزاد است و تشویق می شه یا هر چیز دیگه.. آهان یادم اومد.. شروع کردم این تیکه رو نوشتن که بگم ۱) پیشنهادی دارین بدین و ۲) اگر کسی لوگویی رو طرح بزنه پروژه ای رو لوگودار کرده

لینک ها روی یوتوب:
قسمت اول از سری بستون روی یوتوب
قسمت دوم از سری بستون روی یوتوب
قسمت سوم از سری بستون روی یوتوب
قسمت چهارم از سری بستون روی یوتوب

لینک ویدئوها روی آپارات:
قسمت اول از سری بستون روی آپارات
قسمت دوم از سری بستون روی آپارات
قسمت سوم از سری بستون روی آپارات
قسمت چهارم از سری بستون روی آپارات

بازی شب یلدار ای نتورک، هک و شیوه های پاسخگویی به مشکلات امنیتی

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

مساله اینه که بازی شب یلدای ای نتورک هم دقیقا اشتباه بازی سنگ کاغذ قیچی دلیون رو داره. این بازی هم کلاینت ساید است با متغیری به بامزگی winnings که مشخصه می‌کنه چند بار برنده شدین و ریکوئست هایی که بعد از یک تابع encrypt به سرور خبر می‌دن شما چی برنده شدین. این مساله رو سه چهار نفر از دوستان با ایمیل بهم گفتن و به شکل‌های مختلفی هم تونسته بودن مساله رو حل کنن.

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

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

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

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

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

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