همه نوشته‌ها

چطور فایل‌ها و آدرس‌های دریافتی را برای ویروس یا بدافزار بررسی کنیم؟

چطور فایل‌ها و آدرس‌های دریافتی را برای ویروس یا بدافزار بررسی کنیم؟

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

لیست APIهای ساخت ایران

لیست APIهای ساخت ایران

این یک نوشته کوتاه برای معرفی لیست API های ارائه شده توسط سایت‌های ایرانی است. حدود ۳ سال پیش من این لیست رو در گیت‌هاب درست کردم و از اون موقع با کمک ۱۹ نفر دیگه یک لیست بلند و بالا از سایت‌های ایرانی که API ارائه می‌کنند رو به صورت دسته‌بندی شده توسعه دادیم. روی مخزن پروژه تا حالا بیشتر از ۱۶۰ تغییر انجام شده و یکی از ویژگی‌هاش اینه که در یک نگاه می‌تونید API مورد نظرتون رو در دسته‌بندی مشخص ببینید و از وضعیت بهای ارائه اون API (اینکه آیا رایگان یا غیررایگان است) هم مطلع بشین.

شرکت‌های بزرگ ارائه‌دهنده خدمات آنلاین چه حقوقی برای ما قائل هستند؟

شرکت‌های بزرگ ارائه‌دهنده خدمات آنلاین چه حقوقی برای ما قائل هستند؟

بزرگترین دروغ در وب بزرگترین دروغ در وب اینه که «من قوانین را خوانده‌ام و با آن‌ها موافقم». چند بار شده موقع ثبت‌نام در سایتی، تیک خواندن قوانین را بزنیم بدون اینکه یک کلمه از اون قوانین رو خونده باشیم؟ اهمیت اطلاع از قوانین سایت‌ها با خوندن شرایط و قوانین سایت‌ها (Terms of Service) می‌تونیم جواب پرسش‌هایی مثل موارد زیر رو بدیم: آیا مالکیت اطلاعاتی که در یک وب سایت درج می‌کنیم با ماست؟ سایت چه تغییراتی در اطلاعات ما می‌تونه بده و آیا می‌تونه اون‌ها رو بفروشه؟ اگر اطلاعات ما دچار مشکل بشن سایت چه مسئولیتی داره؟ سایت چه متادیتایی از ما ذخیره می‌کنه و از اون‌ها چطور استفاده خواهد کرد؟ در حوزه حریم شخصی سایت چه وضعیتی داره و به چه شکلی از اطلاعات ما محافظت می‌کنه؟ … جالبه بدونید در بعضی از قوانین سایت‌ها موارد عجیبی هم ذکر شده مثلاً سایت indeed.

سوال مهم در توسعه نرم‌افزار: آیا مشکل درستی را حل می‌کنیم؟

سوال مهم در توسعه نرم‌افزار: آیا مشکل درستی را حل می‌کنیم؟

خواندن این نوشته کوتاه باعث شد من هم کمی درباره اهمیت پرسیدن اینکه آیا مشکل درستی را حل می‌کنیم بنویسم. مشابه صحبتی که آقای Hemel به درستی اشاره کرده بود اغلب اوقات یا در حال پرسیدن هستیم (تا دیدگاه نسبت به مساله را با دیدگاه مدیر محصول/ مدیر پروژه/کارفرما هماهنگ کنیم) یا در حال اجرای تصمیمات تصویب شده (وظایف برنامه‌نویسی) هستیم. رفع مشکل درست = دریافت ارزش درست وظایف تعریف شده در یک پروژه نرم‌افزاری قرار است به تولید یک امکان جدید یا رفع مشکلات موجود محصول کمک کند.

خروجی اکسل، کابوس حریم شخصی و امنیت اطلاعات

خروجی اکسل، کابوس حریم شخصی و امنیت اطلاعات

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

چطور بفهمیم چه اطلاعاتی از ما در سایت‌ها هک شده و لو رفته است؟

چطور بفهمیم چه اطلاعاتی از ما در سایت‌ها هک شده و لو رفته است؟

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

چرا حریم شخصی در زندگی آنلاین مهم است؟

چرا حریم شخصی در زندگی آنلاین مهم است؟

من که چیزی برای پنهان کردن ندارم وقتی از شنود غیرقانونی و نقض حریم شخصی آنلاین صحبت می‌شه (مثل کاری که سرویس‌های اطلاعاتی دولت آمریکا یا سایر دولت‌ها انجام می‌دن) یک عده استدلال می‌کنند که ما کاری نمی‌کنیم. چهار تا جوک و کلیپ برای هم می‌فرستیم. خب بیان ببینن. مگه چی می‌شه؟ این استدلال بر این پایه استوار شده که «چیزی برای پنهان کردن نداریم». در این پست کوتاه بر اساس گفته‌های کتاب Permanent Record از ادوارد اسنودن (کارمند سابق سیا و پیمانکار آژانس امنیت ملی آمریکا که جاسوسی گسترده NSA در دنیا رو افشا کرد) درباره دو دلیل صحبت می‌کنیم که چرا این استدلال اشتباهه.

تجربه من از بازی مینمالیسم: تمرین ساده‌زیستی

تجربه من از بازی مینمالیسم: تمرین ساده‌زیستی

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

برای ۹۹

برای ۹۹

این چند کلمه شاید کوتاه‌ترین نوشته‌ای باشه که تا حالا نوشتم. بیشتر شبیه یک یادآوری است برای اینکه در ۹۹ قراره درباره چند مساله مهم صحبت کنیم. شاید آخرش یکی از این بحران‌ها یا مدیریت بحران‌ها، امان نده و نشه که کارهای نیمه‌تمام رو تمام کنیم ولی خب تا هستیم به اندازه توانی که داریم می‌تونیم تلاش کنیم. به خاطر سلامتی خودتون و بقیه توی خونه بمونید. روحیه رو حفظ کنید.

میخ آخر بر تابوت اینترنت ایران زده شد، حالا چی؟ - قسمت اول

میخ آخر بر تابوت اینترنت ایران زده شد، حالا چی؟ - قسمت اول

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

چطور کمتر فحش دریافت کنیم یا هنر نوشتن پیام خطای خوب

چطور کمتر فحش دریافت کنیم یا هنر نوشتن پیام خطای خوب

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

چطور انتشار یک پکیج nuget را اتوماتیک کنیم؟

چطور انتشار یک پکیج nuget را اتوماتیک کنیم؟

nuget (با تلفظ نیوگت) در واقع package manager برای .NET است. در این پست درباره انتشار اتوماتیک کتابخانه‌های اپن‌سورس در قالب پکیج nuget با کمک سرویس AppVeyor صحبت می‌کنیم. گام اول: دریافت کلید API برای انتشار اتوماتیک پکیج‌ها در سایت nuget ابتدا باید یک کلید API دریافت کنید. برای این کار بعد از ثبت‌نام و ورود به بخش API Keys بروید و یک کلید ایجاد کنید. توجه کنید که مقدار کلید را پس از ایجاد حتماً کپی کنید چون دوباره به شما نمایش داده نمی‌شود و اگر آن را در اختیار نداشته باشید مجبورید یا یک کلید تازه بسازید یا کلید موجود را regenerate کنید.

آیا کدهای شما به کامنت نیاز دارند؟

آیا کدهای شما به کامنت نیاز دارند؟

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

تست برای تست

تست برای تست

مساله برای تست کردن اجزای کد، Unit Test می‌نویسیم. اما برای تست کردن کد خود تست‌ها چه کنیم؟ این مساله چه زمانی ایجاد می‌شه؟ وقتی که تست‌ها رو بعد از نوشتن کد اصلی بخواهیم اضافه کنیم. در واقع اگر به روش‌هایی نظیر TDD استفاده کنیم و تست‌ها رو قبل از نوشتن کد اصلی نوشته باشیم احتمال مشکل در تست‌ها به شدت پایین میاد. اما وقتی یک Legacy Code داریم که احتمالاً تستی هم نداره، این مساله خیلی جدیه.

اعلام خاتمه و شکست پروژه Bugg.ir + درس‌هایی که آموختم

اعلام خاتمه و شکست پروژه Bugg.ir + درس‌هایی که آموختم

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