درک برنامه نویسی قسمت ۰۲۰ تا ۰۲۳ – ای پی آی ها

در سری درک برنامه نویسی چهار قسمت جدید داریم؛ چهار قسمت مهم! اگر مفهوم ای پی آی براتون مبهم بوده، الان وقتشه با اون ابهام خداحافظی کنین!

در قسمت های بعدی، چند ای پی آل در کامند لاین کال می کنیم و بعد می ریم سراغ برنامه نویسی و در نهایت برنامه ای می نویسیم که توش اگر قیمت بیت کوین از قیمت مورد نظر ما کمتر شد، یک اسمس بهمون بده و خبر بده!

آپدیت: در حین ضبط این ویدئوکست بیت کوین هی گرون و گرونتر شد.. الان بیت کوین ۶۱۰۰ دلاره! «الان یا الان؟»

درک برنامه نویسی، API ها در چهار قسمت؛ در یوتوب: ۱، ۲، ۳، ۴ و در آپارات: : ۱، ۲، ۳، ۴

بیست و دو:

https://www.aparat.com/v/XY3AP

بیست و سه:

https://www.aparat.com/v/7BUTz

بستون ۳۵ – امکان ادیت خرج ها و درآمدهای قدیمی

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

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

ویدئوهای جدید «درک برنامه نویسی»: حل دو مساله اویلر و معرفی آی‌پایتون نوت بوک

سه ویدئوی جدید از سری درک برنامه نویسی رو منتشر کردم. توشون دو تا از مسائل پروژه اویلر رو حل می کنیم و در عین حال وسطش یاد می گیریم از یکی از ابزارهای دیتا ساینتیست‌های پایتونی به اسم «آی پایتون (ژوپیتر) نوت بوک» استفاده کنیم: سری ویدئوهای آموزش برنامه نویسی درک برنامه نویسی روی آپارات و ویدئوهای آزاد و رایگان آموزشی درک برنامه نویسی روی یوتوب

شروع سری ویدئوهای «درک برنامه نویسی»

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

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

در این سری اولش مروری بسیار سریع داریم به چند پایه اصلی برنامه نویسی و بعد سریعا می ریم سراغ حل چند مساله و بعدش حتی کارهای عملی روزمره. در حال حاضر ده قسمت از درک برنامه نویسی روی آپارات و یوتوب منتشر شده و اولین برنامه معقولمون رو نوشته ایم.

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

چیزهایی که منو در ادامه راه قوی نگه می دارن:

  • شنیدن نقدها و اصلاحات
  • مشترک شدن شما در کانال های یوتوب و آپارات
  • پخش شدن فایل ها

مثل همیشه، ویدئوها آزاد هستن و هر استفاده ای که دوست دارین می تونین ازشون بکنین (:

کتابی برای لذت بردن از برنامه نویسی رقابتی: Competetive Programmers Handbook

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

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

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

دانلود پی دی اف کتاب دم دستی برنامه نویسان رقابتی

محدودیت ها در شرکت های نرم افزاری و راه های مقابله

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

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

با اینها باید چیکار کرد؟ هانی استعفا داده. بقیه کار کردن. من الان در شرکت جدیدم با مک کار می کنم چون نیاز شرکت است ولی مثلا تو شرکتی که دوربین کار گذاشتن، استعفام رو همون روز دادم. اینجا دو جور جواب می شه داد:

انتخاب های شخصی هر فرد

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

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

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

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

انتخاب های گروهی

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

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

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


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

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

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

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

حالا مشکل چی بوده؟

  • بعضی ها یکهو نتونستن از اپ مشهورترین سایت شطرنج یعنی چس دات کام بازی کنن

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

  • کسانی که مشکل دارن همه سعی میکنن بازی جدید شروع کنن
  • کسانی که مشکل دارن همه روی دیوایس های آی او اس هستن

بعد از چند قدم دیگه این گزاره اضافه می شه:

  • کسانی که مشکل دارن همه آیپدهای قدیمی دارن

هنوز حدس خیلی سخته. ولی دو گزاره مستقل از تحقیقات مستقیم که بدم احتمالا بعضی هاتون می تونین حدس بزنین مشکل چیه:

  • آیپدهای قدیمی ۳۲ بیتی بودن
  • برای شروع بازی، شماره سریال یونیک بازی به دستگاه ارسال می شه و توی هر حرکت استفاده می شه

بازم گزاره لازمه؟

  • تعداد بازی های سایت به ۲ میلیارد و ۱۴۷ میلیون و ۴۳۸ هزار و ۶۴۷ بازی رسیده، یعنی ۲ به توان ۳۱ منفی یک

امیدوارم تا الان حدس زده باشین، متغیری که کد بازی رو نگه می داره در آیپد ۳۲ بیتی است و حالا شماره بازی بزرگتر از ظرفیت حافظه شده و برنامه به هم می ریزه. یک کد که برنامه نویس سالها قبل پیش بینی نکرده بودش و الان باعث ۴۸ ساعت اختلال و کلی ترابل شوتینگ شده تا بشه این گزاره ها رو کنار هم گذاشت.

موقع برنامه نویسی به آینده فکر کنین و از اون مهمتر موقع ترابل شوتینگ، بیخودی به اطراف تیر نزنین. موقع عیب یابی باید مشکل رو تشخیص بدین و دقیق تعریف کنین. اینطوری مشکل خود به خود حل می شه. در واقع مشکل این بود که «حالا که بازی ها از ۲ به توان ۳۱ گذشته، روی آیپدهایی که ۳۲ بیت دارن دیگه نمی تونیم بازی جدید بسازیم». برم ببینم فردا با این ذهنیت می تونم مشکل امروز اون ۴ تا سرور رو حل کنم یا نه.

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

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