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

چگونه رمز موفقیت میدجرنی شکسته شد؟ نخستین دیدار با مانی ۴

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

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

تاریخچه مانی

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

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

اون موقع خیلی راضی نبودم و بیشتر میخواستم، اما حقیقتا ابزار آزاد و متن‌باز خوب دیگری در دسترس نبود که بخوام روی اون کار کنم تا این که با Latent Diffusion آشنا شدم که تصاویر قشنگ‌تر و بهتری تولید می‌کرد اما اون هم هنوز خیلی جای کار داشت.

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

ظهور Stable Diffusion

اوضاع در حدود مردادماه امسال، خیلی عوض شد. یک‌باره شرکتی به اسم Stability AI (لینک) تصمیم گرفت یک مدل تولید تصویر متن‌باز ارائه کنه به اسم Stable Diffusion که خب این خودش می‌تونست یک نقطه عطف در تولید تصویر و در کل اثر هنری به کمک هوش مصنوعی محسوب بشه.

وقتی این مدل منتشر شد، مجددا مشکلی وجود داشت اون هم این بود که فاین‌تیون کردن این مدل، منابع زیادی میخواست تا این که نسخه یک و نیم این مدل، منتشر شد (لینک) که دقیقا همراهش، یک یا چند برنامه‌نویس باحال دیگر هم بودند که تکنولوژی Dream Booth گوگل رو با کمک Stable Diffusion پیاده کرده بودند. اینجا بود که فاین‌تیون کردن این ماجرا، به سادگی امکان‌پذیر بود.

اما به خوبی Midjourney نبود…

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

البته این نگرانی من نبود، عمدتا نگرانی افرادی بود که به عنوان «مشتری» سراغ این پروژه می‌آمدند و میخواستند از این پروژه استفاده تجاری کنند و خب ظاهرا نُرمی در بین هموطنانمون وجود داره که با علم به این که کجا زندگی می‌کنیم و با چه امکاناتی چی توسعه می‌دیم؛ همچنان انتظار دارند در حد و اندازه غول‌ها ظاهر بشیم 🙂

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

چگونه رمز موفقیت میدجرنی شکسته شد؟

خارجی‌ها یه اصطلاح جالبی دارند. وقتی میخوان ببینن چیزی چطور کار می‌کنه میگن Let’s look under the hood یا «بذار یه نگاه به زیر کاپوت بندازیم». اما مشکل اینجاست که میدجرنی کاپوتش جوش داده شده. پس چطور میشه فهمید اون زیر چه خبره؟

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

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

میدجرنی یک مدل نیست، چند مدله!

خب یکی از چیزهایی که در مورد میدجرنی خیلی جالبه اینه که همیشه در آپدیت‌هاش مدعی میشه که اضافه کردن یک کلمه یا عبارت جدید (مثلا Double Exposure) در متون ورودی می‌تونه نتیجه‌های جدیدتر و بهتری برای شما تولید کنه.

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

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

ترکیب چند مدل با هم و نتایج آن‌ها

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

حالا اگر این مدل‌ها ساختار مشابهی داشته باشند، این امکان وجود داره که اون‌ها رو با هم ترکیب کنیم و نتیجه‌های بهتری بگیریم. خب کاری که کردم این بود که اول از همه مانی رو با Open Journey و یکی دو مدل دیگه ترکیب کنم (و اسم این مدل رو new_mann_e_2 گذاشتم) و بعد یک سری مقایسه با openjourney انجام دادم.

اما حالا نیاز بود که کمی از خوبی‌های میدجرنی رو هم اینجا داشته باشیم 😁 پس حالا چه کردم؟ هیچی. آمدم و وزن‌های مانی جدید و اوپن‌جرنی رو با هم ترکیب کردم.

نتایج آزمایش‌ها

متن‌های ورودی همونطوری که مشخصه یک منظره (در سبک wasteland و cyberpunk) یک چهره (در سبک و سیاق نقاشانی چون Alphonse Mucha) و یک وسیله نقلیه (نقاشی فانتزی) بودند و مقدار seed (که تعیین‌کنندگی خوبی در جزییان نقاشی داره) در هر سه تصویر، یکی نگه داشته شد.

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

فاین تیون کردن مانی با داده‌های شما

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

اما مانی رو میشه به کمک Dream Booth فاین‌تیون کرد و احتمالا بعدتر در مورد اون هم خواهم نوشت. ولی اگر شما ایده یا دیتایی دارید، می‌تونید به من بگید تا در نسخه ۴ اضافه کنم و مدل بهتری در نهایت ارائه کنم.

جمع‌بندی و سخن آخر

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

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

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

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

یادتان هم نره که یادگیری مستمر به بهبود زندگی شما در هر شرایطی کمک می‌کنه و همیشه شما رو می‌تونه به شخص بهتری تبدیل کنه ✌️

Share

چرا گولنگ زبان مناسب شما نیست؟

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

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

چطور برای پروژه خود یک زبان یا فرمورک مناسب انتخاب کنیم؟

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

جمعیت توسعه‌دهندگان

مهم‌ترین فاکتور در انتخاب زبان و فرمورک برنامه‌نویسی، دقیقا جمعیت توسعه‌دهندگان اونه. می‌پرسید چرا؟ چون اگر امروز خودتون کد رو بزنید، طبیعتا وقتی بیشتر با جنبه بیزنسی کارتون مواجه شید، وقت کمتری برای کد زدن خواهید داشت و نیازمند بزرگ‌تر کردن تیم توسعه استارتاپتون هستید. پس از این جهت نیاز دارید که این مورد رو حتما در نظر بگیرید. دقت کنید که Go از سال ۲۰۰۹ عرضه عمومی شده و چندین ساله که داره بعنوان یک ابزار توسعه وب دیده میشه (که تعداد این سال‌ها به انگشتای دست هم نمی‌رسه).

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

تعداد کتابخانه‌ها و ابزارهای توسعه

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

مقیاس‌پذیری

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

سهولت استقرار

قبل‌تر در همین وبلاگ در مورد مهندسین DevOps توضیح داده بودم (لینک) و خب یه حقیقت تلخ در مورد این عزیزان اینه که نیروهای گرانقیمتی هستند. وقتی شما از ابزاری مثل Go یا حتی پایتون برای توسعه محصولتون استفاده کنید، احتمالا بعد مدتی نیاز دارید که برای استقرار و … محصول، از یک مهندس DevOps کمک بگیرید. این نیاز ممکنه از لحظه استقرار MVP با شما باشه تا وقتی که محصولتون رو بازسازی و ری‌فکتور می‌کنید. در صورتی که برای مثال یک پروژه Laravel ای رو می‌تونید به سادگی روی یک هاست سی‌پنل، میزبانی کنید.

و تیر آخر: زمان توسعه محصول!

در قسمت اول به این موضوع اشاره کردم ولی لازمه که دوباره هم اشاره بشه. چرا که این بخش به بخش کدنویسی و تست (و کلا کارهای برنامه‌نویسانه) محدود نیست و لازمه که موارد دیگر مثل استراتژی ورود به بازار، ارائه بتاهای عمومی و … هم در نظر بگیرید. متاسفانه Go در این مورد بازندست چرا که ابزارهایی به کاملی و خوبی جنگو، ریلز یا لاراول نداره. تنها راه‌حلی که بتونید با Go با سرعت زیادی به این مرحله برسید؛ اینه که چند توسعه‌دهنده حرفه‌ای استخدام کنید که خب هزینه‌هاتون رو شدیدا افزایش می‌ده.

جمع‌بندی

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

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

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

Share

چگونه در ده دقیقه، یک فراجستجوگر بسازیم؟

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

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

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

آشنایی با searx

خب searx یک نرم‌افزار آزاده که هدفش، بهبود تجربه جست و جوی افراد در اینترنته. این نرم‌افزار، به دو صورت قابل دسترسیه. اول این که تعدادی نمونه عمومی داره (لینک نمونه‌های عمومی در اینجا قرار گرفته) و هم به صورت «خودمیزبان» یا همون self-hosted. متد خودمیزبان یعنی شما به عنوان کاربر، می‌تونید به صورت رایگان یا با پرداخت پول (بسته به مدل کسب و کار و توسعه اون پروژه خاص)، اون نرم‌افزار رو روی هاست یا سرور مورد نظر خودتون نصب کنید.

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

ساخت فراجستجوگر

برای ساخت فراجستجوگر خودمون، نیاز به موارد زیر داریم:

  • سرور لینوکسی. من شخصا از اوبونتو ۱۸.۰۴ استفاده کردم. برای پردازش بهتر نتایج و نخوردن به مشکل تحریم و …؛ بهتره که سرور داخل ایران هم نباشه. به همین خاطر، من از سرور هلند استفاده کردم (کشور محل قرارگیری سرور، کاملا به خودتون بستگی داره).
  • یک دامنه یا زیردامنه. برای این پروژه من از searx[dot]haghiri75[dot]com استفاده کردم.
  • کمی آشنایی به کارهای سروری. اگر آشنایی خاصی ندارید هم مهم نیست! در حد لزوم در این مطلب یاد می‌گیرید 😁

آماده‌سازی سرور

وقتی سرور رو از ارائه‌دهنده سرور تحویل گرفتیم (با فرض اوبونتو/دبیان بودنش) نیازه تا اول لیست بسته‌های اون رو کمی به روز کنیم:

sudo apt update

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

sudo apt full-upgrade

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

sudo apt install nginx python3-certbot-nginx docker.io

خب ببینیم این بسته‌ها برای چین؟

  • nginx: این بسته، وب‌سرور یا همون کارساز وب ماست. چیزی که باعث میشه ما بتونیم بدون مشکل، یک وبسایت یا نرم‌افزار تحت وب رو استفاده کنیم.
  • python3-certbot-nginx: از این بسته استفاده خواهیم کرد تا یک گواهی SSL برای وبسایت خودمون بگیریم.
  • docker.io: داکر یک سیستم کانتینرییزشنه. در واقع نرم‌افزارها رو داخل بسته‌های کوچولو قرار می‌ده و همه ملزوماتشون اونجاست. فقط تنها موردی که داره، اینه که از هسته سیستم عامل استفاده می‌کنه برای مدیریت فرایندها (در واقع تفاوتش با ماشین مجازی همینه).

حالا ما سرور رو آماده کردیم. گام بعدی چیه؟

آماده‌سازی دامنه

برای آماده‌سازی دامنه، کافیه که یک رکورد A با IP سرور مورد نظر ایجاد کنید. البته در بعضی موارد از CNAME هم میشه استفاده کرد اما اینجا چون سرور از وبسایت جدا بود، یک A تعریف شد. بعد از این که رکورد رو تعریف کردیم، باید ۵ تا ۱۰ دقیقه صبر کنیم تا عموم DNS Server های اینترنت، بشناسنمون. بعدش می‌تونیم به کارمون ادامه بدیم.

حالا ۱۰ دقیقه گذشت و یک قهوه هم خوردیم و آماده‌ایم که مرحله بعدی رو انجام بدیم.

دریافت گواهی SSL

خب دریافت گواهی SSL هم بسیار ساده‌ست. کافیه این دستور رو در سرور اجرا کنید (و دامنه من رو با دامنه خودتون عوض کنید):

sudo certbot -d searx.haghiri75.com --nginx

در این مرحله شما باید آدرس ایمیلتون رو وارد کنید و به چند سوال هم پاسخ بدید. در کل همه‌چیز با یک wizard اتفاق میفته و نیازی نیست که زحمت زیادی بکشید. فقط یک نکته مهم رو اینجا باید بهش دقت کنیم. اون نکته اینه که certbot اینجا خودش nginx رو استارت می‌زنه. در مرحله بعدی، نیاز داریم که به این مهم توجه کنیم.

راه‌اندازی داکر و نصب فراجستجوگر

خب اول از همه کاربر خودمون (که در اینجا فرض می‌گیریم نام کاربریش هم Ubuntu ئه) رو به گروه داکر اضافه می‌کنیم:

sudo usermod -aG docker ubuntu

بعدش کافیه یک بار از نشست SSH خارج شیم و دوباره به سرور SSH بزنیم. دقت داشته باشید که این بخش الزامی نیست؛ ولی اگر شما این کار رو نکنید بعدا در استفاده از داکر، نیازمند دسترسی ریشه خواهید بود. نگران دسترسی ریشه هم نباشید چون با sudo قابل حله.

بعد از این مورد، ایمیج searx رو از رجیستری داکر دریافت می‌کنیم:

docker pull searx/searx

خب در حال حاضر، اتفاق خاصی می‌افته؟ خیر. فقط تصویری که searx روی اون نصب شده، روی سرور ما دانلود شده.

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

mkdir searx
cd searx
docker run --rm -d -v ${PWD}/searx:/etc/searx -p 8080:8080 -e BASE_URL=http://localhost:8080/ searx/searx

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

اما صبر کنید! هنوز نمی‌تونیم بهش دسترسی پیدا کنیم. پس چه کنیم؟

پراکسی معکوس برای دسترسی به محتوا

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

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

sudo nano /etc/nginx/sites-enabled/default

و سپس دنبال دامینمون بگردیم (در نانو با ctrl + W میشه). بعد از این که دامینمون رو پیدا کردیم کافیه بخش location / رو پیدا کنیم (معمولا دو سه خط پایین‌تر از دامین و تنظیماتشه) و سپس به این شکل درش بیاریم:

location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                # try_files $uri $uri/ =404;
                proxy_pass http://localhost:8080;
        }

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

sudo systemctl restart nginx

استفاده از فراجستجوگر شخصی

سخن آخر

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

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

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



Share

هرآنچه باید در مورد خودروهای خودران بدانید!

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

ابتدا که بحث خودروهای خودران خیلی مطرح شد، سال ۲۰۱۴ بود و تسلا قابلیت «خلبان خودکار» (یا البته بهتره در این مورد خاص، بگیم راننده خودکار) رو برای خودروهاش معرفی کرد. اگر می‌خواهید در مورد اتوپایلت تسلا بیشتر بدونید هم می‌تونید این لینک رو مطالعه کنید. ابتدا خیلی برام سوال بود که چطور میشه یک وسیله نقلیه مثل یک خودرو، کامیون و …؛ خودران باشه و نیازی به هیچ اپراتوری نداشته باشه. مثلا یکی از چیزایی که به ذهن من (و احتمالا خیلی‌های دیگه) می‌رسه، بینایی ماشین باشه. این درسته اما همه‌ش نیست.

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

هوش مصنوعی چطور یاد می‌گیره رانندگی کنه؟

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

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

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

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

خودروهای خودران چه داده‌ای نیاز دارند؟

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

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

داده‌های علائم راهنمایی و رانندگی

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

تصویر مسیر

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

زاویه فرمان، میزان فشار روی پدال گاز و دفعات و شدت فشرده شدن ترمز

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

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

فاصله

خودروهای خودران، علاوه بر تعداد زیادی دوربین، تعداد خوبی سنسور هم برای تشخیص فواصل دارند. این سنسورها یا از نوع LiDAR (یا Light detection and ranging) یا فراصوت (Ultrasonic) یا حتی RADAR (که مخفف Radio detection and ranging است) یا ترکیبی از این موارد هستند. با استفاده از این سنسورها، فاصله از موانع، عابرین پیاده، خودروهای دیگر و … ثبت و ضبط میشه و بعدا به مدل هوش‌مصنوعی ما می‌تونه کمک بده که اینجا چه خبر بوده و در موقعیت مشابه، چه تصمیماتی باید اتخاذ کنه.

موارد دیگر

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

قوانین استفاده از خودروهای خودران

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

در حال حاضر، هیچ کشوری «خودروی ۱۰۰٪ بدون راننده» رو نمی‌پذیره و حتی خودروهایی که «بدون حضور راننده» به حرکت درمیان، نیازمند این هستند که توسط اپراتور کنترل بشن. این مورد، برای اینه که خودروها بدون هیچ راننده و کنترلی ممکنه موجب تصادف و آسیب به سایر خودروها، ساختمان‌ها و افراد بشن.

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

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

جمع‌بندی و سخن آخر

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

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

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

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

Share

داستان برنامه‌نویس شدن من – قسمت دوم

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

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

ورود به دانشگاه

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

خلاصه شد سال ۹۲ و ما از شهر بندرعباس به تهران برگشتیم. اون سال، سال پیش‌دانشگاهی من بود (و بد نیست این داستانکم رو هم پیرامونش بخونید) و اون سال، یک تصمیم بزرگ هم گرفتم. تصمیمم این شد که جبیر به جای این که مبتنی بر اوبونتو (یک توزیع از گنو/لینوکس)، یک نسخه شخصی‌سازی‌شده از FreeBSD باشه. از همین رو، شروع کردم به رفتن به IRC های مختلف، سوال پرسیدن و مستندات خوندن. بعد از چندین ماه مطالعه، وضعیت اینترنت خونه و خودم تا حد خوبی پایدار شد و بعد شروع کردم به انجام تغییرات روی کد FreeBSD.

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

داستان برنامه‌نویس شدن من - محمدرضا حقیریشرکت در لاگ‌ها و رویدادها و آخر و عاقبت پروژه جبیر

حضور در تهران و دانشجو شدن، به من کمک کرد که وارد جامعه بشم و در رویدادهای نرم‌افزار آزاد و متن‌باز و سایر رویدادها (مثل PyCon و …) شرکت کنم. اولین رویدادی که شرکت کردم، رویدادی بود به اسم «جامعه رایانش ابری آزاد». در اون رویداد با KVM و Docker آشنا شدم و تا حد زیادی هم دانشم در زمینه Containerها و مجازی‌سازی تا حد خوبی بالا رفت.

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

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

داستان برنامه‌نویس شدن من - محمدرضا حقیری

یادگیری روبی، ورود به حوزه سخت‌افزار و دیگر هیچ!

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

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

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

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

خلاصه این مورد هم گذشت و رسیدیم به شهریور ۹۶. یعنی جایی که من خیلی جدی و رسمی وارد بازار کار شدم.

داستان برنامه‌نویس شدن من - محمدرضا حقیری

ورود به بازار کار

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

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

سخن آخر

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

موفق باشید 🙂

 

Share

همه چیز درباره توییتر

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

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

قدم‌های اول: ساخت حساب کاربری و ستاپ پروفایل

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

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

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

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

برویم ایمپرشن بگیریم!

آشنایی با مفاهیم مرتبط با تجزیه و تحلیل توییتر

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

اما اگر حوصله رفتن به صفحه دیگری ندارید و دوست دارید که بعد از خوندن این مطلب، به صفحات دیگر مراجعه کنید و بخونیدشون، ایرادی نداره. من اینجا به شما به طور خلاصه میگم. ایمپرشن، یعنی تعداد دفعاتی که توییتر شما بازدید گرفته! مثلا اگر ایمپرشن ۳۰۰۰ داریم، یعنی ۳۰۰۰ بار توییت دیده شده. بدون اهمیت دادن به این که چندبار لایک خورده یا ریتوییت شده. برای این منظور، مفهومی داریم به اسم engagement که نشون می‌ده ملت چقدر با توییت تعامل داشتند. مثلا اگر تویت من ۳۰۰ تا لایک خورده و ۲۰ بار ریتوییت شده و ۱۴ نفر بهش پاسخ دادند، ۳۳۴ تا انگیجمنت دریافت کرده.

اهمیت ایمپرشن و انگیجمنت

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

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

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

ایمپرشن گرفتن در دو خط

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

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

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

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

با دیگران ارتباط داشته باشید

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

توییت‌ها را کوتاه نگه دارید

حقیقت اینجاست که علیرغم امکان رشته‌توییت‌نویسی و همچنین ۲۸۰ کرکتری که توییتر به ازای هر توییت در اختیارتون قرار می‌ده، هیچ توییتی که بیش از ۱۰۰ کرکتر داشته باشه شانس خوبی برای دیده شدن نداره. توییت‌هایی که شانس دیده شدن دارند معمولا بین ۷۰ تا ۱۰۰ کرکتر هستند. مگر در موارد و حالات خاص که بعدتر به اونها می‌پردازیم.

لینک‌ها را هم‌رسانی کنید

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

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

خسیس نباشید

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

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

ساعت اوج خودتون رو بشناسید

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

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

هم‌چنین، تعداد زیادی از کارمندان هستند که از ۱۲ تا ۲ ظهر – که معمولا تایم ناهار و نماز ادارات محسوب میشه – سوشال رو چک می‌کنند. پس این زمان هم زمان مناسبی میشه برای توییت کردن و به دست آوردن قشر خوبی از مخاطبین.

ارزش تولید کنید

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

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

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

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

توییتر را اینستاگرام کنید 😂

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

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

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

ویدئو به اشتراک بذارید

در حساب‌های شخصی شما می‌تونید ویدئوهای تا ۲ دقیقه و ۲۰ ثانیه به اشتراک بذارید. این قضیه رو از خودتون دریغ نکنید. اگر ساز می‌زنید، اگر صدای خوبی دارید، اگر کار خفنی کردید حتما ویدئوش رو با بقیه به اشتراک بذارید. بذارید افراد بدونن که با اشخاص واقعی سر و کار دارند.

ریتوییت بخواهید

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

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

گندش را درنیاورید 😂

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

بین توییت‌ها فاصله زمانی مناسب را رعایت کنید

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

سوال بپرسید

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

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

واضح حرف بزنید

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

از کلمات قدرتمند استفاده کنید

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

از اسامی بزرگ حرف بزنید

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

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

بازیافت کنید 🙂

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

جمع‌بندی

برندسازی کار آسانی نیست. اما کار سختی هم نیست. بیش از این که کار پرزحمتی باشه، یک کار نیازمند دقت و ریزبینی زیاده. دقت کنید که در دنیایی زندگی می‌کنیم که هرکسی تلاش داره برند خودش رو بسازه. اما تعداد کمی هستند که واقعا موفق میشن برند درستی از خودشون به جا بذارن. بسیاری از افراد حتی در میان فرایند برندسازی خودشون سرد میشن و به روش‌های نامعمولی روی میارن که خودشون رو بکنن در چشم دیگران. آن هم با ایده هر عمومیتی خوب است یا Any publicity is good publicity.

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

هم‌چنین بخوانید

Share

مهندسی اجتماعی – هوشمندی متن‌باز (OSINT)، خبرسازی

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

هوشمندی متن‌باز (OSINT)

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

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

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

توییتر

چند وقت پیش، در توییتر بحثی به نام «ابر کلمات» داغ بود. افرادی که دسترسی به API توییتر داشتند، برای افراد این ابر کلمات رو میساختند. اما من از اونجایی که حوصله نداشتم با توییتر نامه‌نگاری کنم، دنبال ابزاری بودم که حداقل توییت‌های حساب‌های حفاظت‌نشده رو به سادگی بتونه استخراج کنه. اونجا بود که با ابزار twint آشنا شدم (لینک). ابزار twint یا twitter intelligence ابزاریه که به شما کمک می‌کنه به سادگی در توییتر بچرخید و مثلا توییت‌های یک شخص رو استخراج کنید.

برای مثال، برای این که ۱۰۰ توییت آخر ریاست جمهوری آمریکا رو استخراج کنیم، کافیه دستور تویینت رو به این شکل اجرا کنیم:

twint -u potus --limit 100 -o potus.json --json

به این شکل، ما به سادگی به ۱۰۰ توییت آخر اون حساب کاربری دسترسی داریم.

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

twint -s "گرانی موز" --near Tehran --limit 1000

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

اینستاگرام

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

البته، اینستاگرام الگوریتم‌های عجیب و غریب زیاد داره و جدیدا APIش هم کمی سخت‌گیر تر شده. ابزاری که برای اینستاگرام پیدا کردم، اسمش هست Osintgram (لینک) و این ابزار رو متاسفانه فرصت نشده که تست کنم هنوز. اما، یک ویدئوی خوب از کانال NetworkChuck براش پیدا کردم که می‌تونید اینجا ببینیدش.

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

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

خبرسازی

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

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

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

چطور بفهمیم که قربانی خبرسازی نشدیم؟

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

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

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

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

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

همچنین بخوانید

Share