بایگانی دسته: رایانه و اینترنت

چطور نخستین دنبال‌کنندگان اینستاگرام را دریافت کنیم؟

اینستاگرام یک شبکه اجتماعی بسیار خوب برای بازاریابی، ارائه محصول و در نهایت اشتراک‌گذاری تصاویریه که به شناخت بهتر شما یا برندتون کمک می‌کنه. قرار نبود چنین مطلبی بنویسم چون فکر می‌کردم خیلی از راه‌های تضمینی که در اینترنت وجود دارند، بعد مدتی ممکنه اسپم تشخیص داده بشن و خوب نباشن. اما خب، یکی از این راه‌ها رو تستی رفتم و باید بگم که نتیجه گرفتم 🙂 در کمتر از ۲۴ ساعت دنبال‌کنندگان صفحه‌ای که برای آزمایش ساخته بودم، به ۱۶ رسید.

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

ساخت صفحه

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

تکمیل مشخصات

اولین قدم برای این که صفحه شما بتونه دنبال‌کننده دریافت کنه، اینه که مشخصاتش کامل باشه. در واقع شما به این موارد نیاز دارید:

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

قرار دادن پست

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

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

به دنبالِ دنبال‌کننده گشتن …

خب شما دنبال‌کنندگان خودتون رو میخواید درست؟ اینجا جاییه که من فرمولش رو به شما می‌گم. اول از همه ببینیم که دنبال‌کننده (فالوئر/Follower) کیه؟ شخصیه که بخاطر محتوایی که شما تولید می‌کنید میاد و پیج رو دنبال می‌کنه. حالا وقتی محتوا کمه یا محتوا نداریم چطور می‌تونیم دنبال‌‌کننده جذب کنیم؟ برای پاسخ به این سوال، من سه احتمال زیر رو براتون توضیح میدم:

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

حالا تا اینجا آمدیم، بیایید فرمول تضمینی دریافت نخستین دنبال‌کننده‌ها رو بررسی کنیم 🙂 این که چطوری به دست میان و ما باید چه کار کنیم. حقیقتش، کار سختی نیست و حوصله میخواد. شاید هم بد نباشه که این وسط، اتوماسیونی صورت بگیره (احتمالا آموزش نوشتن ابزار اتوماسیونش هم به زودی منتشر کنم 😁).

مرحله اول: پیدا کردن تیک‌های آبی

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

  • مشخص کردن حوزه کاری: در یک سناریو خیالی، فرض کنیم صفحه ما در حوزه موسیقی فعاله و موسیقیش محدود به ایران نیست. اولین کاری که باید بکنیم چیه؟ این که افرادی رو پیدا کنیم که در حوزه موسیقی فعالن و شهرت بین‌الملل دارند. مثلا گروهی مثل Metallica (طبیعتا با توجه به سبک کاری خودمون و سلیقمون میتونه عوض بشه) یک گروه فوق مشهوره و چند میلیون دنبال‌کننده داره. یک لیست از این افراد تهیه می‌کنیم.
  • دنبال کردن افراد لیست: الان کار ما راحت شده. افراد درون لیست رو یک به یک دنبال می‌کنم.
  • دنبال کردن دنبال‌کنندگان و دنبال‌شوندگان: این مورد بسیار مهمه، در بین دنبال‌کنندگان و دنبال‌شوندگان همون تیک‌های آبی، باید دنبال باقی تیک‌های آبی باشید! مثلا در یک گروه موسیقی ممکنه اعضاش هم خودشون تیک آبی داشته باشند. پس بهتره که فالوشون کنیم 🙂

تا اینجای بحث خوبه؟ نه؟ کار راحتی نیست ولی سخت هم نیست. به شما ایده کلی میده که این روش چطور کار می‌کنه. حالا باید بریم سراغ مرحله دوم 🙂

مرحله دوم: تکرار این عملیات به مدت چند روز

تیک‌های آبی رو فالو کردید؟ بسیار هم عالیه. زاکربرگ به شما افتخار می‌کنه. حالا نوبت اینه که همه رو آنفالو کنیم (و خیر، شما مسخره پدر اینستاگرام نیستید و این روشیه که ما پیش می‌گیریم) و دوباره فالو کنیم.

این حرکت رو بهتره ۲ الی ۳ روز ادامه بدیم. احتمالا روز دوم متوجه خواهید شد که یک عده شما رو فالو کردند و معمولا عددش هم خوبه (برای من حدود ۱۶ نفر در یک روز بود که واقعا رقم خوبیه!). به این شیوه میشه در حدود ۳ روز، نزدیک به پنجاه نفر به دنبال‌کنندگان اضافه کرد. برای شروع، خوبه؛ نیست؟

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

نکات مهم در این روش

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

  • بیش از ۱۰۰ صفحه رو در روز دنبال نکنید. اینستاگرام ممکنه رفتار فالو-آنفالو رو به شکل اسپم و یا «فعالیت مشکوک» تشخیص بده و حساب شما رو ببنده.
  • سعی کنید این روش رو بیش از حد ادامه ندید. ممکنه در آینده این روش دیگه جواب نباشه و شما طبیعتا سرد می‌شید نسبت به ادامه فعالیت.
  • سعی کنید در صفحاتی که دنبال می‌کنید لایک بزنید، کامنت بذارید و … . این هم به اون صفحه و هم به اینستاگرام نشون میده که شما واقعا فعالیت ارگانیک دارید و فعالیتتون رباتی نیست.
  • در نهایت، بگم که روش‌های افزایش فالوئر زیادند اما تضمینی نیستند. یک زمانی، صرف فالو کردن افراد در اینستاگرام کافی بود. یادمه که در هشتگ‌ها می‌شد چرخید و تعداد زیادی رو فالو کرد و اونها اصطلاحا «بک» می‌دادند. اما الان این روش کاملا منسوخ شده. روشی هم که در این مطلب پوشش دادم احتمالا به زودی منسوخ میشه پس تا معتبره، سعی کنید ازش استفاده کنید و حالشو ببرید 😁

جمع‌بندی

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

و در آخر، ممنونم از این بابت که وقت گذاشتید و مطلب من رو خوندید. شما هم اگر روش خوبی برای اینستاگرام مارکتینگ دارید، ممنون میشم با من به اشتراک بذارید 🙂

Share

بفرمایید ماحی تازه. یا رساله‌ای در باب صفحات جعلی و فیشینگ.

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

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

فیشینگ و راه‌های مبارزه با آن

سناریوی یک حمله فیشینگ

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

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

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

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

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

نقاط ضعف ما در حملات فیشینگ

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

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

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

ماسک مناسب برای ویروس فیشینگ

در این بخش از مطلب، صرفا راهکارهایی که باعث شدن خودم تا الان کمتر مورد این حملات قرار بگیرم رو در اختیارتون میذارم. طبیعتا این راهکارها می‌تونن در طول زمان کم‌تر شن یا کلا دیگه معتبر نباشن. اما برای امروز (۱۷ خرداد ۱۴۰۰) کاملا کار می‌کنند.

  • چک کردن HTTPS محل‌هایی که دیتا وارد می‌کنیم (این راهکار الان هم اعتبار زیادی نداره، چرا که ماحی‌گیر می‌تونه به سادگی بره سراغ این که از Let’s encrypt یک گواهی SSL بگیره)
  • چک کردن آدرس وبسایت با آدرس‌های معتبر (مثلا gmail صفحه ورودش mail.google.com/login خواهد بود، چیزی جز این احتمالا حقیقی نیست. البته دامین گوگل بسته به منطقه و VPN شما می‌تونه متفاوت باشه)
  • چک کردن اسامی، آدرس‌ها و وبسایت‌ها در اینترنت و درآوردن سوابقشون (حتی دایرکتوری‌هایی برای این قضایا ساخته شدند)
  • وارد کردن اطلاعات غلط اگر به درگاه یا صفحه لاگین مشکوکیم (چرا که معمولا وقتی اطلاعات رو غلط وارد کنیم، صفحه به صفحه واقعی ری‌دایرکت میشه، اینطوری به ماحی‌گیرا هم آدرس غلط دادیم)
  • اطلاع‌رسانی در باب این تیپ دزدی‌ها به بقیه 🙂

در کل، اگر حواسمون نباشه احتمال این که سرمون کلاه بره خیلی خیلی زیاده. حواستون باشه که با چک کردن یک سری موارد ساده، به سادگی می‌تونیم از شر دزد و … در امان باشیم.

جمع‌بندی

در نهایت، ازتون بابت این که مطلب رو خوندید تشکر می‌کنم. دوم، امیدوارم این سلسله مطالب به دردتون خورده باشه. سوم، شما چه راهکاری برای جلوگیری از فیشینگ دارید؟ 🙂

Share

مهندسی اجتماعی و نکاتی که باید به آنها توجه کنید.

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

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

اتصال نقاط، ساده‌ترین روش مهندسی اجتماعی

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

درسته که بلاک‌ها و تراکنش‌ها رمز شدند و ما روی حریم خصوصی این نوع ارز حساب ویژه باز کردیم، اما یادتون باشه که مردم نقطه‌ها رو به هم وصل می‌کنن.

حالا، بیاییم ببینیم که این «نقطه»ها چین؟ ما چطور می‌تونیم به هم وصلشون کنیم؟ چرا اتصال نقاط مهمه و … . اول از همه، بیایید صرفا چندتا نقطه رو ببینیم:

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

حالا این داده‌ها رو داریم. چطور می‌تونیم ازش به اطلاعات بدرد بخوری برسیم؟ خب کاری نداره. بیایید در وصل کردن نقطه‌ها با من همراه شید و ببینید چقدر ترسناکه 🙂

وقتی گفتم «من فلانی هستم» احتمالا به اسم شناسنامه‌ایم، لقبم، اسم مستعارم یا یکی تو این مایه‌ها اشاره کردم. وقتی گفتم سال ۹۳ رفتم دانشگاه، شخص می‌تونه حدس بزنه که من از اکثریتی بودم که ۱۸ سالگی رفتند دانشگاه پس احتمالا متولد ۷۵ باشم، اما بعضی وقتا (برای آقایان) دانشگاه رفتن بعد از خدمت سربازی اتفاق می‌افته، پس اینجا بهتره که در نظر بگیرید که رنج تاریخ تولد بین ۷۳ تا ۷۵ بوده.

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

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

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

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

اتصال نقطه‌های مختلف به هم، این شرایط رو فراهم می‌کنه

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

این رو در نظر داشته باشید. حالا بیایید بریم سراغ راه‌هایی که مهندسی اجتماعی می‌تونه حتی راحتتر هم باشه. من بهش میگم «مهندسی اجتماعی تعاملی».

مهندسی اجتماعی تعاملی

در مهندسی اجتماعی تعاملی، هکر اتفاقا آدم ناامن و زاغ‌سیاه‌چوب‌زنی نیست! بلکه دقیقا یکیه که با شما تعامل داره. این تعامل به روش‌های زیر می‌تونه انجام شه:

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

حالا این‌ها هرکدوم چطور کار می‌کنن؟ بسیار هم خوب. بیایید در ادامه بررسیشون کنیم.

ساخت حساب‌کاربری و کسب شهرت در شبکه‌های اجتماعی

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

مشکل اصلی، زمانی رخ میده که این روش، میشه وسیله‌ای برای اقدامات بعدی. مثل چی؟ مثل انتشار خبرهای جعلی و یا کلاهبرداری و سوءاستفاده‌های متعدد از افراد. همین الان از افرادی که شناخته‌شدگی خوبی در دنیا دارند (مثل خواننده‌ها، بازیگران، فوتبالیست‌ها و …) خبرهایی مثل آزار جنسی یا ایجاد مزاحمت کم نیست! فلذا بهتره که حواسمون جمع باشه که چه کسانی رو مشهور می‌کنیم و چرا.

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

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

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

روش‌های کسب اطلاعات هم می‌تونن به خودی خود جالب باشن. در ادامه بعضیاشون رو لیست می‌کنم :

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

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

انتشار اخبار جعلی

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

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

درخواست کمک‌های نقدی

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

ساخت صفحات جعلی

در مورد این یکی هم، به زودی خواهم نوشت. فقط عبارت «ماحی گیری» یا Phishing رو در ذهنتون داشته باشید.

چطور از مهندسی اجتماعی در امان بمونیم؟

خب بذارید راحت بهتون بگم آدم فضول، آدم زاغ‌سیاه‌چوب‌زن، عین ویروس کروناست. نمیشه ازش در رفت، فقط میشه ریسکش رو کاهش داد. در ادامه، در مورد کاهش ریسکش کمی راهکار بهتون ارائه میدم 🙂

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

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

Share

توسعه عملیات، مدیریت سیستم، استقرار و یکپارچگی

در دنیای امروزی، بخش بسیار بزرگی از بیزنس و همچنین توسعه نرم‌افزار مرتبط به توسعه عملیات (Dev Ops)، مدیریت سیستم (System Administration) و همچنین استقرار و یکپارچگی ادامه‌دار (CI/CD) میشه. شاید حتی مهم‌تر از اصل نرم‌افزار، رسیدگی به این موضوعات باشه. در این پست، قراره که با هم بررسی کنیم چطور میتونیم در پایان روز، به خودمون بگیم DevOps Engineer؟ و چه چیزایی باید بلد باشیم؟ 🙂

مدیریت سیستم یاد بگیرید

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

  • یادگیری لینوکس. عموم شرکت‌ها در دنیا در حال حاضر، سرورهای لینوکسی دارند. بلد بودن لینوکس، یک «باید» در یادگیری دواپس محسوب میشه. یادگیری لینوکس اصلا سخت نیست. کافیه یک توزیع خاص (مثل اوبونتو) رو نصب کنید و باهاش بازی کنید. کم کم دستتون میاد که چی به چیه. بعد از این ماجرا، میتونید یک سرور اجاره کنید و چیزایی که یاد گرفتید رو روش تست کنید.
  • آشنایی با وب‌سرورها. وب‌سرورها، نرم‌افزارهایی هستند که به شما امکان نمایش نرم‌افزار و محتوای تولیدی از طریق پروتکل HTTP رو میدن. در دنیای امروز اکثریت قریب به اتفاق کسب و کارهای کوچک و حتی بزرگ، از NGINX استفاده می‌کنن. پس بد نیست بعد از این که لینوکس یاد گرفتید، روی سرور یا ماشین مجازی لینوکسیتون یک وب‌سرور نصب کنید و سعی کنید یک صفحه استاتیک باهاش نمایش بدید.
  • آشنایی با شبکه. گرچه معمولا این مورد رو باید اول از همه بیاریم، اما من شخصا معتقدم که یادگیری لینوکس در بحث مدیریت سیستم به هرچیزی ارجحه. اما از این موضوع که بگذریم، چرا شبکه؟ شبکه پایه و اساس دواپسه. شما بدون بلد بودن شبکه، تقریبا هیچ کاری نمی‌تونید بکنید. اما چه حد شبکه بلد بودن خوبه؟ دقت کنید که اینجا قرار نیست ما نیروی آی‌تی یک سازمان باشیم، پس فقط کافیه که پایه‌های شبکه، آی‌پی و بعضی پروتکل‌های مرسوم (SSH, FTP, HTTP, SMTP و …) رو بدونیم و بدونیم که هرکدوم چطور و کجا کار می‌کنند.
  • آشنایی با فایروال و تامین امنیت شبکه. فکر کنم عنوان خودش گویاست. در لینوکس، ما معمولا از iptables یا اینترفیس‌هایی که براش ساخته میشن (مثلا اوبونتو UFW و دبیان apparmor رو دارند) استفاده می‌کنیم. این خیلی مهمه که شما بعنوان مدیر سیستم، در جریان باشید که چه چیزایی از بیرون در دسترسه و این حجم از دسترسی، چقدر میتونه آسیب‌زا باشه.

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

اما در بسیاری از شرکت‌ها یک سری سناریو خاص وجود داره که این‌ها رو میتونیم با هم بررسی کنیم، گرچه قرار نیست همه موارد رو با هم یاد بگیریم، اما چیزایی که به نظرم ممکنه وجود داشته باشند رو در اینجا بررسی می‌کنم.

  • استفاده از یک ابر خصوصی به جای چندین سرور عمومی. این مورد، مورد خوب و امنیه. گذشته از این که باعث میشه خیلی از موارد (مثل دیتابیس و …) از بیرون در دسترس عموم قرار نگیرند، هزینه‌ها رو هم پایین میاره. فقط حواستون باشه که در این مورد، معمولا چند چیز اتفاق می‌افته که باید بلد باشید:
    • استفاده از لود بالانسر : لود بالانسرهای مرسوم مثل haproxy میتونن نقطه شروع خوبی باشن. البته این هم در نظر داشته باشید که معمولا ارائه‌دهندگان سرویس‌های ابری؛ خودشون هم لود بالانسینگ رو انجام میدن.
    • استفاده از سیستم‌های مانیتورینگ : طبیعتا شما برای این که ببینید هرکجا چه اتفاقاتی می‌افته، نیاز به یک سیستم مانیتورینگ خوب دارید. در حال حاضر سرویس‌هایی مثل prometheus و zabbix وجود دارند. همچنین میتونید اینها رو به grafana و امثالهم متصل کنید و به شکل زیبایی، اونها رو ویژوالایز کنید.
  • استفاده از نرم‌افزارهای بیلد شده به صورت سفارشی. گرچه این مورد رو شخصا درک نمی‌کنم (چون نسبت به نرم‌افزاری که از کانال رسمی – مثل مخزن‌های توزیع لینوکستون – نصب می‌کنید ممکنه امنیت و پایداری کمتری نشون بدن) اما برخی سازمان‌ها ممکنه وب‌سرور، کامپایلر یا مفسر یا حتی کرنل رو خودشون از نو بیلد کرده باشن. پس یادتون باشه این مورد هم تا حدی یاد بگیرید که اگر نیاز به بیلد مجدد شد گیر نکنید 😁

در مورد مدیریت سیستم به قدر کافی یاد گرفتیم، دیگه چی می‌مونه؟ نظر من رو بخواید الان وقتشه که یک سری ابزار رو با هم بررسی کنیم. توجه کنید که ابزارهایی که در این بخش ازشون حرف می‌زنم، ابزارهایی هستند که خودم باهاشون تجربه کار دارم. فلذا اگر ابزاری از قلم افتاده، در بخش نظرات در مورد ابزارهای مورد نظر خودتون صحبت کنید. من خوشحال میشم 🙂

ابزارهایی که باید یاد بگیرید

وب‌سرور

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

  • در بسیاری از توزیع‌ها، وجود داره. در حدی که خیلی از توزیع‌های سروری رو وقتی نصب کنید؛ ممکنه همراهش نصب شده باشه.
  • پیکربندی به شدت ساده‌ای داره (و خب کاش حداقل نیاز نبود ته هر خط پیکربندی شما یک سمی‌کالن بذاری)
  • ابزارهای جانبی بسیار خوبی مثل python3-certbot-nginx براش ساخته شده که امکان SSL و … گرفتن برای دامنه خاص و زیردامنه‌ها و … رو به شدت ساده می‌کنه.
  • تقریبا برای هرکاری یه آموزشی ازش هست!

ابزارهای CI/CD

خب ابزارهای CI/CD چی هستند؟ به صورت کلی، این ابزارها اینجان که کار استقرار (Deploy) و یکپارچگی (Integration) هرآپدیت با نسخه قبلی رو اتوماتیک انجام میدن. ابزارهای زیادی برای این کار وجود دارند من جمله Travis CI, Jenkins و البته معروف‌ترینشون Gitlab CI/CD (حداقل در ایران).

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

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

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

این ابزار معمولا چیه؟ خب ابزارهای زیادی براش هست و من تجربه‌م استفاده از prometheus بوده. پرومتئوس یک سری ابزار خاص داره که بهش میگن exporter. شما روی هر قسمتی که نیاز دارید (مثلا nginx یا خود سرور که بهش میگن node یا هرچیزی از این قبیل) یک اکسپورتر نصب کنید و نتایج آنالیزها رو اینجا ببینید.

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

ابزارهای ذخیره‌سازی

خب، این هم یه چیزی که شاید کمتر ازش با خبر بوده باشید :). در دنیای امروز تقریبا کسی نیست که رو همون سروری که نرم‌افزارش هست، فایل ذخیره کنه. پس چی کار می‌کنن؟ هیچی، اونجاهایی که جزء دنیا حساب میشن؛ معمولا از Amazon AWS استفاده می‌کنن و پارتیشن S3 دریافت می‌کنن. S3 یعنی Simple Storage Solution (سه تا S) و خب این حقیقت وجود داره که راهکار بهتریه. چرا؟ چون شما برای ذخیره‌سازی صرفا هارد نیاز داری و نه پردازنده یا رم زیاد.

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

یک راه دیگه هم داشتن سرور با حجم بالای هارددیسک (در ابعاد ترابایت) میتونه باشه. بعد از اون شما نیاز دارید تا یک نمونه S3 روی اون مستقر کنید. برای این کار میتونید از ابزاری مثل minio بهره بگیرید.

ابزارهای ارکستراسیون

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

علتش اینه که این نرم‌افزارها به عبارتی Orchestrate میشن (فارغ از بحث CDN و …) یعنی از یک نرم‌افزار و همچنین دیتابیسشون (البته دیتابیس Cache و نه دیتابیس‌های اصلی) بیش از یک نمونه در حال اجراست. برای شما سوال نشده که اینا چطور هندل میشن؟ خب جواب اینه که ابزارهای ارکستراسیون استفاده میشه.

از بین این ابزارها میشه به Docker Swarm و Kubernetes و Ansible اشاره کرد. طبق تجربه با Ansible به شما بگم که شما تنظیماتی که نیاز دارید رو مشابه CI/CD در یک سری فایل پیکربندی (انسیبل بهشون میگه استوری) می‌نویسید و مجموعه‌ای از استوری‌ها رو در یک namespace قرار می‌دید. مثلا فرض کنید همین وبلاگ کجاها قراره باشه، من یه namespace به اسم haghiri75 میسازم و اطلاعات استقرار رو بهش میدم.

با ابزارهای ارکستراسیون، آماده‌سازی و پیاده‌سازی سناریوهای سرور و یا ابر خصوصی به شدت ساده‌تر و سریع‌تر خواهد شد.

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

برنامه‌نویسی یاد بگیرید

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

پایتون، از چیزایی که باید بلد باشید!

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

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

یک زبان سیستمی

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

زبانی که سازمان ازش استفاده می‌کنه

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

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

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

امیدوارم مطلب مفیدی بوده باشه، در نهایت هم سال نوتون پیشاپیش مبارک 🙂

Share

کاپریس لینوکس نسخه ۱.۰ پایدار «اتمورا» ریلیز شد.

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

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

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

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

گرچه خود این هم چند روزی وقت گرفت ازم (و در نسخه‌های جدیدتر کمی بهبود یافت) اما ارزشش رو داشت.

بعد از اون، به سرم زد که کمی به BSD ها نزدیکش کنم. به همین خاطر APT که سیستم نصب بسته‌های دبیانه رو نگه داشتم، سیستم pkgsrc که یک سیستم مدیریت پورت در NetBSD عه (و تقریبا روی هر سیستم‌عامل دیگری هم امکان اجرا شدن داره، البته با کمی انگولک شدن) رو برای این توزیع پیاده‌سازی کردم.

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

و خب به همین شکل، این قضیه پیشرفته و پیشرفته‌تر شد تا رسید به کاپریسی که ۱ آگوست ۲۰۲۰ معادل ۱۰ مرداد ۱۳۹۹ منتشر شد.

لینک در وبگاه خبری اصلی

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

http://capricelinux.org/2020/08/01/Caprice-Linux-1.0-STABLE-release-notes.html

 

Share

به روز رسانی اوبونتو از نسخه های LTS به STS

توزیع اوبونتو، معمولا در دونسخه ارائه میشه. نسخه های «پشتیبانی طولانی مدت» یا همون LTS (مخفف Long Term Support ) که اگر اشتباه نکنم هر کدوم تا پنج سال، پشتیبانی دریافت میکنند. این پشتیبانی به معنای پشتیبانی از سمت کنونیکال (شرکت سازنده این توزیع)، دریافت آپدیت های امنیتی و همچنین به روز شدن مستندات توزیع است.

نسخه های STS که طبق روتین ارائه اوبونتو هر شش ماه یه بار میان، قبلا دو سال پشتیبانی می‌شدند ولی مثل این که الان این پشتیبانی کمتر شده و همون شش ماه (یا یک سال، دقیقا نمیدونم و یادم نیست) پشتیبانی رو دریافت میکنن. این نسخه ها به قول معروف «روی لبه تکنولوژی حرکت میکنند» و معمولا تکنولوژی های جدیدی رو در خودشون جای دادن.

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

فرض کنیم شما آخرین اوبونتوی LTS (در حال حاضر ۱۸.۰۴ ) رو نصب کردید و میخواهید به STS جدید (در حال حاضر ۱۹.۰۴) به‌روز رسانی کنید. برای این کار، نیاز به چند مرحله داریم. اول لازمه که update-manager رو نصب کنیم :

sudo apt install update-manager-core

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

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

/etc/update-manager/release-upgrades

سپس در این فایل، شما احتمالا این خط رو می‌بینید :

Prompt=lts

با تغییر مقدار متغیر prompt به normal ، شما به آپدیت منیجر گفتید که در نسخه های STS به دنبال ریلیز جدید بگرده. بعد از این که عبارت lts رو با normal جایگزین کردید، کافیه فایل رو ذخیره کرده، ببندید و در ترمینال تایپ کنید :

do-release-upgrade

و جایی هم نیاز به پسورد داشته باشید، این دستور ازتون دریافتش خواهد کرد.

این راه حلی بود که خودم دقیقا استفاده کردم برای آپدیت به ۱۹.۰۴. نمیدونم قبلتر کسی در وب فارسی توضیحش داده یا نه، ولی خب امیدوارم که به کارتون بیاد 🙂

Share

چگونه در سطح سخت افزار، عدد تصادفی تولید کنیم؟

تولید عدد تصادفی، یکی از کارهاییه که در برنامه نویسی بسیار نیازش داریم. برای چه منظورهایی؟ برای مثال فرض کنید میخواهیم یک شبکه عصبی طراحی کنیم و وزن‌های ما باید تصادفی باشن. به همین خاطر، ما از عدد های تصادفی برای تولید وزن استفاده میکنیم. در سطح نرم افزار، تولید عدد تصادفی بسیار آسونه. مثلا در پایتون ما میتونیم به این شکل عدد تصادفی تولید کنیم (راهی غیر از numpy هم هست، ولی من اکثرا از این روش استفاده میکنم) :

from numpy import random 

random.seed(1) 

print(random.random((1, 1)))

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

خب، طراحی مدار ما به شکل زیره :

ما اومدیم چهار فلیپ فلاپ D رو به هم متصل کردیم. سپس، دو بیت کم ارزش در اتصال این زنجیره را با یک XNOR با هم مقایسه کردیم و یک پالس ساعت هم به مدار وارد کردیم.

وقتی که دو بیت کم ارزش صفر باشن، خروجی XNOR ما یک میشه. یعنی Q در فلیپ فلاپ پر ارزش (سمت چپ ترین)، برابر با یک خواهد شد. در پالس بعدی این اتفاق برای فلیپ فلاپ بعدی میفته، این اتفاق تا جایی میفته که نتیجه مقایسه، صفر میشه و فلیپ فلاپ پر ارزش مقدارش تغییر میکنه، به این شکل، دقیقا ترتیب اعدادی که در این Ring Counter داریم به هم میریزه و اعداد «شبه‌تصادفی» تولید میشن.

این هم از شبیه‌سازی این مدار :

همونطور که در ویدئو مشخصه، داره به صورت رندم عددهای چهاربیتی تولید میکنه.

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

Share

راهنمای یک صفحه‌ای برای علاقمندان به رشته کامپیوتر

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

کمی تاریخ

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

فلسفه و ریاضیات

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

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

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

منطق

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

منطقی که ارسطو بنیان گذاشته، یک منطق صفر و یکی به حساب میاد. بذارید اینطوری بگم؛ با منطق ارسطویی میشه اینطور گفت :

علی از احمد قدبلندتره. احمد از حسن قد بلند تر. پس علی از حسن هم قدبلندتره

و در این مورد، منطق ارسطویی کاملا کار میکنه. مثلا ریاضیاتیش میشه :

اگر x آنگاه y ، اگر y آنگاه p -> اگر x آنگاه p

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

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

وقتی همه چیز مکانیکی شد

 

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

آقایی که در تصویر می‌بینید «چارلز بابیج» یک ریاضی‌دان و مهندس انگلیسی بود. ایشون ایده «موتور تحلیلی» رو مطرح کرد که چیزی بود شبیه کامپیوترهای امروز. برنامه پذیر و قابلیت حل تعداد زیادی مساله در زمانی کم. اما، کار ایشون مشکلاتی داشت. ایشون سعی داشت همه چیز رو مکانیکی پیاده کنه و زمانی که این ایده رو مطرح کرد ماشین های مکانیکی هنوز اونقدر پیشرفته نبودن. و مشکل دوم رو بالاتر اشاره کردم، ایشون مدعی بوده که بدون جبر بول هم میتونه کامپیوتر رو پیاده کنه و کامپیوتری بسازه که با مبنای ده کار کنه (چیزی که هنوز هم نشده 🙂 ) .

اما ماشین های مکانیکی کم کم به سمت جبر بول و محاسبات آماری رفتن. یک بار دیگه این تصویر رو با هم ببینیم:

این تصویر، تصویری از یک ماشین «شرط بندی» است که در نیوزلند نصب شده بوده. عملکرد مکانیکی برای محاسبات آماری مربوط به شرط بندی روی مسابقه اسبها داشته.

اما مکانیک کافی نبود، لازم بود اما کافی نبود. پس به عصر «الکترومکانیک» باید سفری کوتاه داشته باشیم!

همه چیز از یک رله شروع شد

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

کامپیوتر Z4 آلمانی که در دهه ۳۰ ساخته شد و خیلی هم به کمک ارتش آلمان در جنگ دوم جهانی اومد. اما مطمئنا یک نابغه خوش ذوق دیگر در طرف انگلیسی وجود داره که بتونه از ساز و کار این ماشین، سردربیاره!

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

شروع بازی تقلید!

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

آقایی که در تصویر می‌بینید «آلن تورینگ» انگلیسی، این کار رو کرد. رمز آلمانیها موسوم به «انیگما» رو شکست و به این ترتیب قهرمان جنگی شد. اما کارش به همینجا ختم نشد و در دهه ۵۰ میلادی ایده «تفکر در رایانه» و «هوش مصنوعی» رو مطرح کرد که تا امروز هم مطالعه روی این موضوعات، ادامه داره. این شخص به معنای واقعی، نابغه و خوش ذوق بوده.

ترانزیستور و عصر سیلیکون

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

کامپیوتر چیست؟ کامپیوتر کیست؟

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

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

در تصویر بالا هم، عکسی از اپراتورهای کامپیوتر انیاک (در امریکا) رو می‌بینید که هم باید به نرم افزار مسلط می‌بودن و هم سخت افزارش.

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

کامپیوتر چطور داده رو پردازش میکنه؟

برگردیم به همون جبر بول. ما یه سری وسیله (یا بهتر بگم نمایش الکترونیکی!) از عملیات بولی داریم که بهشون میگن «دروازه منطقی» یا همون گیت. گیتها به این شکل هستند :

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

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

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

خب، فکر کنم به اندازه کافی اون چیزایی که میخواستم رو پوشش دادم، امیدوارم اگر قصد کامپیوتر خوندن دارید، شیرینی و زیبایی این رشته رو قبل از ورود به دانشگاه درک کنید و وقتی واردش می‌شید، لذت ببرید 🙂

Share

نصب و راه اندازی KTechLab برای پروژه های الکترونیک

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

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

در نتیجه جست و جو، به KTechLab رسیدم. گرچه اسمش برام آشنا بود ولی هیچوقت ازش استفاده نکرده بودم. گفتم که بهتره الان به دنبالش باشم و ازش کمی (حتی شده آزمایشی) استفاده کنم. شاید، نتیجه‌ای که خواستم رو گرفتم. خب، خوشبختانه این نرم افزار اون چیزایی که میخواستم رو داشت. این هم تصویری از محیطش :

و الان یک سوال پیش میاد :

چطور نصبش کنیم؟

من اسمش رو جست و جو کردم و به وبسایتش رسیدم (لینک) و بعد سورس کدش رو دانلود کردم. اما فهمیدم که برای نصبش نیاز به cmake دارم، پس اون رو نصب کردم :


کد   
sudo apt install cmake

و بعد از نصب این، کمی گشتم تا ببینم چه پیش‌نیازهایی داره، سپس اونا رو نصب کردم :


کد   
sudo apt install git kdelibs5-dev kdevplatform-dev qt4-dev-tools cmake libglib2.0-dev

بعد از نصب، فایل فشرده حاوی سورس کد رو از حالت فشرده درآوردم، درون پوشه سورس یک پوشه به اسم build ساختم و به ترتیب این سه دستور رو زدم :


کد   
cmake ..
make
sudo make install

و در آخر، دیدم که KTechLab به لیست نرم افزارهای نصب شده اضافه شده.

در آینده، در مورد این که این نرم افزار چطوره و کجاها به درد میخوره، بیشتر خواهم نوشت. امیدوارم این پست مفید واقع شده باشه، موفق باشید 🙂

Share

امنیت حسابهای اجتماعی

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

همونطوری که می‌بینید، توییتر میگه یک باگ پیدا کردن که باعث شده یک سری پسوردها، بدون این که ماسک بشن، لاگ شدن. یعنی چی؟

فرض کنیم ما یک پسورد میسازیم، پسورد ما موقعی که داریم وارد میکنیم یک چیزی مثل MySecurePassword@123456 عه. این پسورد تقریبا تمام فاکتورهای یک پسورد امن رو داره. ولی اگر به صورت Plain Text بخوایم ذخیره‌ش کنیم این که جای خود، یک میلیون کارکتر دیگر هم داشته باشه احتمال لو رفتنش بسیار بالاست. (داخل پرانتز عرض کنم خدمت آقای علیرضا شیرازی، مدیریت محترم بلاگفا که تا چند سال پیش هم همینطوری پسورد ها رو نگهداری میکرد، جای این که در توییتر و … ملت رو بخاطر مواخذه کردنتون بلاک کنید، پاسخ میدادید که چرا اینطور بود! چون همون موقع هم بسیاری از اسکریپت های مدیریت محتوا پسوردها رو ماسک می‌کردن!).
حالا بخوایم MySecurePassword@123456 رو در دیتابیسی ذخیره کنیم باید چه کنیم؟ باید از «هش» و الگوریتم های مربوطه استفاده کنیم. مثلا الگوریتم MD5 (لینک جهت مطالعه). حالا این عبارت نسبتا سخت رو من با کمک ابزارهایی که دم دستم بود به MD5 هش میکنم و نتیجه میشه :

23b7618b2a23e171e6cda057a9736423

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

کد   
post '/welcome' do
 begin 
  params[:user][:password] == params[:user][:password_again]
  user = User.create(:username => params[:user][:username], :password => Digest::MD5.hexdigest(params[:user][:password]))
  redirect to("/welcome")
 rescue
  redirect to("/signup_error")
 end
end

و این یعنی ذخیره ایمن پسورد در یک دیتابیس (در اینجا از دیتابیس های مونگو استفاده کردم). و حالا اگر اون قسمتی که مربوط به هش کردن پسورد نمیشد رو، در کد قرار میدادم چه میشد؟ وقتی قرار بود Query بزنم مثلا به یوزر mamad و پسوردش 1125 بود، اینطور بر میگردوند :

کد   
{
"username":"mamad", 
"password":"1125"
}

و مثلا اگر شما قرار بود با API ای که من برای عضوگیری سرویس نوشتم کار کنید (مثلا لاگین کردن به وسیله سرویس من در اپلیکیشن، بازی یا سیستم حضور غیاب و … )، پسوردها رو به سادگی میتونستید ببینید. اما چیزی که الان بر میگرده اینه :

کد   
{"username":"mamad","password":"c21002f464c5fc5bee3b98ced83963b8"}

و خب شما نمیتونید به پسورد دسترسی پیدا کنید، مگر این که ابزار یا دیکشنری مربوط به شکستن این الگوریتم رو داشته باشید. البته معمول هم نیست شما JSON مربوط به اطلاعات کاربران رو برگردونید! چون باز هم دیتای کاربر به خطر میفته.

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

 

Share