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

بررسی وضعیت شغلی برنامه نویسان و مدیر سیستم‌های ایران سال ۹۵

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

نظرسنجی به مدت یک ماه ادامه خواهد داشت و بعد درست مثل پارسال،‌ نتایج خام و تحلیل به شکل عمومی منتشر می شن.

نتایج پارسال رو اینجا ببینین و از آدرس پرسشنامه امسال برای امسال جواب بدین تا بدونیم چیکاره هستیم. معلومه که بهترین مشارکت ما در بهتر شدن وضعیت برنامه نویس ها اینه که اطلاعات رو دقیق تکمیل کنیم و از بقیه هم بخوایم اینکار رو بکنن. لینک برای به اشتراک گذاشتن اینه: http://bit.ly/irprogrammers و البته لینک مستقیم روی گوگل داکز هم اینجاست:

https://docs.google.com/forms/d/e/1FAIpQLSdntC_H6ySUvW9iQwn-cFmQCEb6vdX0e0MgIr7XscHeZXA31Q/viewform

یا می شه با متنی مثل این به اشتراکش گذاشت:

تحقیق سالانه وضعیت کار و حقوق برنامه نویس ها و مدیرسیستم‌های ایران بهمون دید می ده و نتایجش کاملا آزاده. مشارکت کنید http://bit.ly/irprogrammers

برای شرکت در نظرسنجی وضعیت شغلی برنامه نویسها و مدیرسیستم های سال ۹۵ اینجا کلیک کنید و نتایج رو از همین وبلاگ دنبال کنید خیلی هم خوبه اگر تبلیغش کنین توی جاهای دیگه تا نتایج دقیق تری داشته باشیم.

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

مشکل کلاودفلر چی بود و ما باید چیکار کنیم

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

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

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

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

این مساله به خاطر باگ موسوم به Buffer Overrun ایجاد شده بود. باگی که در زبان های سی و سی پلاس پلاس برنامه نویس موظف به مواظب بودن در موردش است و در نتیجه بارها و بارها اشتباها از زیر دست تست ها در می ره و باعث مشکلات امنیتی بزرگ می شه. این باگ اینطوری کار می کنه که یک متغیر از جای تعیین شده برای خودش بیرون می زنه و با بقیه حافظه قاطی می شه! کد زیر دقیقا خطی است که باعث شد کلاودفلر دچار مشکل بشه:

if ( ++p == pe )
    goto _test_eof;

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

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

چه باید کرد

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

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

بهترین نکته؟ شفافیت کلاودفلر که حتی کدهای مشکل دار رو هم نشونمون داد (:

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

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

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

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

در این مرحله اگر از یک زبان برنامه نویسی دیگه میاین و در حال حاضر زبون خودتون رو بلدین، پیشنهاد می کنم به شکل عمومی دنبال 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.

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

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

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

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

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

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

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

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

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

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

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