چگونه به شکل امن گذرواژه‌ها را ذخیره کنیم؟

جواب خلاصه: از bcrypt استفاده کنید.   چرا از MD5، SHA-1، SHA256، SHA512، SHA-3 و … استفاده نکنیم؟ تمام الگوریتم‌های نامبرده، توابع هش ِ (به انگلیسی: hash function) همه‌منظوره هستند که طراحی شده‌اند تا حجم عظیمی از داده‌ها را در کم‌ترین زمان ممکن خلاصه‌سازی کنند. [مترجم: به طور مثال، یک رشته‌ی متنی بزرگ را به […]

اهمیت رمزنگاری

مقاله‌ی زیر ترجمه‌ی من از نوشته‌ی بروس اشنایر (Bruce Schneier)، متخصص رمزنگاری، امنیت رایانه و حریم خصوصی و نویسنده‌ی اهل ایالات متحده آمریکا است و در سال ۲۰۱۶ در قالب مقاله‌ای در وب‌سایت شخصی او منتشر شده‌است.   با نفوذ همه‌گیر کامپیوتر‌ها و شبکه‌های کامپیوتری در دنیای امروز، سخت است که در اهمیت رمزنگاری اغراق کنیم. […]

از تغییر نترسیم – به مناسبت خریده‌شدن گیت‌هاب توسط مایکروسافت

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

جاوااسکریپت: شیء انتخاب‌ها (options object) چیست؟

در جاوااسکریپت، اشیاء ِ انتخاب‌ها (که از این پس به آن‌ها options objects می‌گوییم) یک الگوی ِ معمول برای ِ فرستادن ِ آرگومان‌ها به یک تابع هستند. این مقاله به شرح ِ چگونگی ِ کار ِ آن‌ها و نیز دلیل ِ این که استفاده از آن‌ها باعث ِ افزایش ِ خوانایی ِ کد ِ شما می‌شود، می‌پردازد. options object چیست؟ یک […]

جاوااسکریپت: بررسی ِ این که آیا یک متغیر تعریف شده است یا نه

در جاوااسکریپت یک متغیر تعریف شده است «اگر و فقط اگر» حین ِ دسترسی به آن خطای ِ ReferenceError تولید نشود. راه ِ معمولی که خیلی‌ها برای ِ بررسی ِ تعریف شده بودن ِ یک متغیر استفاده می‌کنن، به شکل ِ زیر است: typeof variableName !== ‘undefined’ عبارت ِ بولین ِ بالا در دو حالت مقدار ِ false خواهد داشت: متغیر […]

جاوا‌اسکریپت: بررسی وجود یک ویژگی در شئ

برای این کار سه روش معمول وجود داره که به ترتیب اونارو بررسی می‌کنیم: روش خسته: استفاده از خاصیت undefined انجام این کار به لطف یک رفتار خاص و البته جالب جاوا‌اسکریپت خیلی راحت انجام می‌شه: اگه یک ویژگی در شیئ موجود نباشه، مقدار undefined برای اون بر‌می‌گرده. مثلا: const objA = { propA: ‘A property!’, propB: ‘B […]

ترفند پایتونی: بروزرسانی پکیج‌هاي pip در اوبونتو

متاسفانه هنوز دستوری برای بروزرسانی تمام بسته‌های pip وجود نداره؛ و برای این کار باید هر بسته رو جداگونه بروزرسانی کرد. (گرچه این امکان به عنوان یه درخواست برای تیم توسعه pip در حال بررسیه و شاید بزودی به pip اضافه بشه) دستوری که من برای این کار (در اوبونتو) ازش استفاده می‌کنم و ممکنه به […]

args* و kwargs** در پایتون

args* به ما این امکان رو میده که به جای تعداد ثابتی ورودی یه تابع بتونه تعداد متغیری ورودی بگیره. برای مثال تابع زیر رو در نظر بگیرید: def my_sum(a, b): return a + b my_sum(2, 3) # 5 این تابع دو تا عدد رو باهم جمع می‌کنه و همیشه دو تا ورودی می‌گیره و اگه […]

فشرده‌سازی تصاویر JPEG با خط فرمان لینوکس

قانون نانوشته‌ای هست که میگه برای انجام هرکاری یه روش به سبک ترمینال لینوکسی وجود داره! فشرده‌سازی تصاویر JPEG هم از این قاعده مستثنی نیست. با افزایش کیفیتِ دوربینِ گجت‌های تکنولوژیِ مختلف، خیلی اوقات نیاز داریم تا کیفیت عکس‌هایی که با این وسایل گرفتیمو کاهش بدیم؛ حالا چه این نیاز بخاطر ارسال راحتتر اون تصویر به […]