نصب و راه اندازی 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

چگونه بازی‌ساز شویم؟

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

در سال ۹۶، حدود دو ماه در استودیویی مشغول کار شدم، بعنوان «آهنگساز» برای بازی کامپیوتری. اول که قرار بود کار آهنگسازی و دیزاین صدا به واسطه کامپیوتر رو براشون انجام بدم. یعنی طراحی ساندترک های بازی (موسیقی متن) و طراحی ساند افکت (صداهایی که می‌شنویم، مثل باد، صدای دستگاههای عجیب و غریب آخرالزمانی یا صدای هیولا و … ) ولی کم کم بخاطر کمبود نیرویی که به کار صدا وارد باشه، رُل «صدا گذار» هم به من داده شد. حالا دیگه صرفا کسی که کل روز وقتش پشت FL باشه نبودم و باید در یونیتی انجین کد میزدم و Sound Object و … وارد میکردم و با میکسرهای یونیتی بازی میکردم. برای من سخت بود چون اولا که به من گفته نشده بود قراره صداگذاری کنم، دوما زبان یونیتی سی شارپه و من هم چندان دل خوشی ازش ندارم. پس به شدت سعی میکردم تن ندم و از زیرش دربرم (حتی نیروی کمکی هم با خودم برده بودم 😀 ). ولی باگ قضیه این نبود. باگی که در این سیستم بود فراتر از این ماجراها بود. که در این مطلب قراره در موردش توضیح بدم!

از کجا شروع کنیم؟

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

ایده خام

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

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

نویسندگی و بسط ایده

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

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

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

شروع به ساخت و کارگردانی

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

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

پس‌تولید

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

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

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

یک کلام، برای بازی ساز شدن باید چه کار کنیم؟

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

 

 

 

 

Share

فرمول شهرت (چگونه در دو دقیقه مشهور شویم)

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

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

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

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

  1. ایجاد کانال تلگرام با یک اسم و آیدی مسخره (اسم و آیدی مسخره خودش به خودی خود میتونه مخاطب رو به کانال شما بکشونه)، برای انتخاب اسم یا آیدی هم روشی هست به اسم «احمقانه ترین ایده ممکن». وارد جزییات نمیشم میتونید در پستهای قدیمی تر تشریح این موضوع رو ببینید
  2. انتخاب عکس مناسب کانال! در زمان فیسبوک مردم کمی خلاق تر (و شاید با حوصله تر) بودن، یک مربع در paint درست می‌کردن، و با بدترین فونت ممکن اسم پیج رو درونش مینوشتن. اما الان اکثر کانالها عکس یک کمدین معروف، یا یک ویدئویی که در اینترنت ترند شده رو بعنوان عکس کانال انتخاب میکنند.
  3. تولید محتوای مناسب!!! این هم از اون مواردیه که واقعا نمیشه بهش گفت «مناسب» ولی خب، از اونجایی که قراره با این ترفند به شهرت برسیم، محتوامون هم باید مناسب باشه. یکی از راهها، کپی کردن مطلبه. مثلا شخصی جوکی برای شما ارسال کرده، شما سریعا متن جوک رو کپی میکنید و در کانالتون میذارید (به همراه آیدی کانال) ، یا تشریف می‌برید توییتر و توییت های «فیو استار» (توییت هایی که بیش از یک حد خاصی فیو خوردن و دست به دست شدن، ژانر خاصی رو پدید آوردن و …) رو کپی میکنید در کانال خودتون! یا از همون جوکها و اصطلاحات قدیمی فیسبوک کپی برداری میکنید! بهرحال محتوای اورجینال ، زیر صفر 🙂
  4. و در آخر، برای این که در راه سخت شهرت موفق باشید، فقط میتونم بگم «تا میتونید اسپم کنید». یعنی چی؟ یعنی یک ایموجی 😕 در کانالتون قرار بدید بعد این رو به همه گروه ها فوروارد کنید! یا نه، کمی پیشرفته تر عمل کنید! یک شایعه بی‌اساس (مثل فولان ویروس که توسط یک گروه تروریستی در خرما و زیتون وارد ایران شده) یا یک خبر مرتبط با یک کشور دیگه (مثلا آفریقای جنوبی) رو در گروههایی که میدونید این چیزا رو دوست دارند (عموما هم گروه های خونوادگی 🙂 ) فوروارد کنید و منتظر رشد چشمگیر بازدید و عضوهای کانال خودتون باشید!

اگر اون چهاربند رو رعایت کنید می‌تونم با تقریب درستی بگم ظرف دو یا سه هفته میتونید به ۴-۵ هزار عضو برای کانال خودتون برسید، و اون موقع احتمال زیاد با توجه به تعداد اعضا، می‌تونید تبلیغ هم بگیرید و حتی کسب درآمد هم بکنید!

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

موفق باشید 🙂

Share

مرگ وبلاگ نویسی، گشت و گذاری در سرویس های وبلاگ فارسی

شاید حدود ۱۰ سال پیش، وقتی به تازگی وارد ۱۲ سالگی شده بودم، شروع به ساخت وبلاگ در یکی از قدیمی ترین سرویس های وبلاگدهی فارسی، یعنی بلاگفا کردم. بلاگفایی که تا همین یکی دو سال پیش، به معنای واقعی از پرترافیک ترین وبسایت های فارسی به شمار میرفت.
دقیقا همان روزها، بلاگفا در صفحه اصلیش، دست کم دو تبلیغ نشان میداد، اخبارش و وبلاگ های بروز شده را لیست می‌کرد و گهگاه در شکل خبرهای فوری، امکانات حذف یا اضافه شده به سیستمش رو اطلاع رسانی می‌کرد. به این شکل مثلا فهمیدیم که مدتی blogfa.ir هم در دسترسه، و هر وبلاگی که شما بسازید هم در زیردامنه blogfa.com و هم blogfa.ir قرار میگیره.
البته، آن روزها پرشین بلاگ (قدیمی ترین سیستم بلاگدهی فارسی) و بلاگ اسکای و … هم رونق زیادی داشتند. در واقع، هرکس که میتونست هزینه های یک سرویس بلاگدهی (بخاطر سرور و منابع بالایی که نیاز داره و … ) رو تامین کنه و دانشی از برنامه نویسی وب داشت، یک سیستم بلاگدهی بالا میاورد. اما اونهایی که خیلی مطرح بودند، همین بلاگفا و بلاگ اسکای و پرشین بلاگ بودند.
دوستانی هم بودند که ترجیح میدادند – علیرغم فیلترینگ – از سرویس هایی مثل وردپرس یا بلاگر استفاده کنند، و ما هم با سختی و زحمت هایی که اون زمان برای عبور از سد داشتیم، وبلاگ ها رو میخوندیم و گهگداری هم اینتراکشنی داشتیم.

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

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

Share

تجربه هایی از یک پروژه – StrongPC

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

اولین قدمها

همیشه اولین قدمها مهم ترین قدم ها در شکل گیری یک ایده یا پروژه هستند، چیزایی که باعث میشن شما بیش از پیش علاقمند به تحقیق و توسعه بشید و بیش از پیش؛ کار کنید. اولین قدم های پروژه هم از اینجا زده شد : طراحی یک کامپیوتر ساده. دوست عزیزی، کتابی با عنوان But How Do it know رو بهم داده بود که معماری کامپیوتر رو خیلی ساده توضیح میداد و چیزایی که من از کتاب یاد گرفتم، همه‌ش در این پروژه ساده پیاده شد. یادگیری معماری کامپیوتر با اون کتاب، نه تنها کمک کرد که این پروژه ساخته بشه، بلکه در درسهای مدار منطقی؛ معماری، ریزپردازنده، الکترونیک دیجیتال و حتی زبان ماشین هم کمک بسزایی به من کرد. در سال ۲۰۱۶ بود (طبق چیزی که از وبسایت StrongPC هم بر میاد ، ژوئن ۲۰۱۶) که پروژه StrongPC با اسم LadyBug استارت خورد و خب این اولین دیزاینی هست که برای پروژه انجام شده. و حتی دیزاین رو صفحه اول وبسایت هم قرار دادم :

 

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

هدف پروژه

شاید هدفی مثل «تولید کامپیوتر» یا حتی تولید بخشی از اون، اون هم در ایران کمی دور از ذهن باشه. گرچه نشدنی نیست ولی خب کمی دورتر از چیزی هست که الان داریم. شاید خب این که یکی از ایده هایی که هزاران بار پیاده شدند رو برای بار ۱۰۰۱م پیاده کنیم، یک اپ آندروید بزنیم و روز دوم سقوط کنیم و بعد ۴ سال توی لینکدین بنویسیم «دارای سابقه ۶۲ استارتاپ شکست خورده» ، بسیار ساده تر باشه. اما بهرحال عقیده شخصی من اینه که «مطالعات و کارهای آکادمیک» همیشه نیازن. این ها نباشن، اون ها (استارتاپ ها و …) هم نیستند. هدف پروژه هم مطلقا چیزی مثل تولید CPU نیست چون مطمئنا بازار قوی ای مثل اینتل نخواهد داشت. ولی یک «معماری آزاد» میتونه داشته باشه که خب این خودش به خودی خود، قابل قبول و خوبه! و این «معماری آزاد» میتونه بیاد روی FPGA و … اجرا بشه. یه جورایی هدف پروژه این شد که بشه یک مرجع آکادمیک یا بهتر بگم «بستری برای یادگیری».

دستاورد پروژه؟

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

چرا باید ادامه پیدا کنه؟

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

Share

کد هایم را دزدیده بود، آقای قاضی…!

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

services_operating_procedures

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

حدود سال ۲۰۱۰ بود که من یک iPod Touch خریدم و همون موقع ها، وارد وبسایت های مرتبط با محصولات Apple شدم. دوستان زیادی اونجا پیدا کردم و با خیلی از اون دوستان، دوستی من تا الان ادامه داشته. ولی خب چیزهایی هم دیدم که واقعا باعث شاخ در آوردن من شد. اگر اشتباه نکنم حدودای سال ۲۰۱۲ بود که iPhone 4S معرفی شد و چیزی که این گوشی رو متمایز میکرد؛ دستیار صوتی Siri بود که میتونست جوابهای دقیق و درستی بده. همون موقع ها، کاربران زیادی بر آن شدن که این اپ رو برای نسخه های قدیمی تر iOS هم پورت کنن. یک روزی از همین روزها یکی از کاربران ایرانی مدعی شد که این کار رو کرده (لینک) و خب مدتها با این حرف داشت برای خودش ارزش و اعتبار میخرید و حتی لینک Donation هم گذاشته بود که یک شب، یک لینکی در فرومی منتشر شد که بله، این آقا دزدی کرده! کار کار خودش نبوده و به اسم خودش در کرده. این اولین بار بود که با «دزدی» اثر نرم افزاری روبرو شدم. اون موقع به شدت ناراحت شدم؛ ناراحتی من از اون هکری که واقعا سیری رو تونسته بود پورت کنه شاید حتی بیشتر شد.

حالا در همون سالها، من پروژه جبیر رو راه اندازی کردم. پروژه ای که علیرغم خیلی از حواشی ای که داشت؛ کلی هم دوست جدید، کلی تجربه و کلی بار علمی و عملی برای من داشت. جبیر چی بود؟ اوایل یک اوبونتوی کاستوم شده (و صد البته Rebrand شده) و بعد ها هم یک FreeBSD کاستوم شده و Rebrand شده. این پروژه رو من در یکی دوتا از فروم های اپلی هم معرفی کردم و خب به «دزدی» و «جا زدن کار دیگران به اسم خود» محکوم شدم. در صورتی که لایسنس هایی که این دو نرم افزار، یعنی اوبونتو و FreeBSD بر اساس اون منتشر میشن؛ دقیقا به من این اجازه رو میدن که rebrand کنم و به عنوان یک محصول جدید به بازار ارائه بدم. در صورتی که درمورد اون Siri پورت شده (و خیلی از کارهایی که تو کامیونیتی فارسی اپل رخ میده) چنین چیزی صدق نمیکنه.

33-122-598-08البته هنوز این اتفاقات رو نتونسته بودم هضم کنم؛ که فهمیدم گروه «آشیانه» معروف هم چنین کاری میکنه، لینوکس رو میکنه توی جعبه و به اسم فایروال میفروشه. این کمی برام منطقی تر به نظر رسید؛ حداقل کمی وقت میذاشتن و یه حداقل پیکربندی ای ارائه میدادن. ولی باز هم داشتند خلاف لایسنس (GPL ) پیش میرفتند، سورس کد و خیلی چیزهای دیگه رو از دید کاربر مخفی میکردند. همین باعث شد که بیش از پیش سعی کنم انسان بهتری حداقل در این آشفته بازار نرم افزار در ایران باشم. حداقل دزدی نکنم یا اگر از کار شخص دیگری استفاده کردم، بهش کردیت بدم.

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

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

Share

میکروکنترلرها، طراحی و پیاده سازی – ریلیز شد!

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

سرفصل های کتاب :

فصل اول : میکروکنترل چیست؟
در این فصل کلیت یک میکروکنترلر و این که چه بخش هایی درونش به کار رفته، توضیح داده شده.

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

فصل سوم : عملیات محاسباتی
در این فصل در مورد انجام عملیات ریاضی در مبنای دو صحبت شده.

فصل چهارم : عملیات منطقی
در این فصل در مورد جبر بول و نحوه انجام عملیات بولین صحبت شده.

فصل پنجم : مدارهای منطقی
اینجا، اومدیم و یه سری گیت های پایه رو بررسی کردیم. همینطور در مورد گیت های مادر صحبت کردیم.

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

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

فصل هشتم : حافظه
اینجا رسیدیم به مدارهای ترتیبی و حافظه ای، در اینجا لچ S-R رو ساختیم، در مورد لچ Active High و Active Low توضیح دادیم.

فصل نهم : رجیستر فایل
اینجا چندین رجیستر رو چیدیم کنار هم و یک رجیستر فایل طراحی کردیم.

فصل دهم : معماری کامپیوتر
اینجا با کلیت معماری کامپیوتر و مفاهیم تئوری قضیه آشنا شدیم. چیزایی که لازمه برای یادگیری معماری بلد بود رو آوردیم اینجا.

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

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

فصل سیزدهم : واحد محاسبه و منطق
در این فصل، واحد محاسبه و منطقی برای کامپیوتر خودمون طراحی کردیم، و در مورد Instruction Code ها تصمیم گیری کردیم.

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

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

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

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

برای دانلود PDF هم میتونید از این لینک استفاده کنید.

Share

سلول های دیجیتال!

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

در حقیقت، چیزی که اینجا برای ما صفر و یک میسازه، الکتریسیته نیست. بلکه پروتئین ها هستند. در واقع شما دو نوع پروتئین دارید، که یکی نماینده صفر منطقی و دیگری نماینده یک منطقی به حساب میاد. حالا یکم دقیق تر پیش بریم، اگر ویدئو رو ببینید، خواهید دید که ساختار DNA یک نوع باکتری به اسم E.coli (با تلفظ ایکولای) مثل یک گیت NOR هست. یعنی همه منطق های موجود رو میشه با استفاده از این DNA طراحی کرد! نکته جالب تر و شگفت آورتر قضیه هم اینجاست که دانشگاه MIT پلتفرمی به اسم سلوکد منتشر کرده که شما با مراجعه بهش، میتونید کد Verilog بنویسید و تحلیل DNA ایش رو ببینید! و از همه جالبتر اینه که MIT کدهای نوشته شده شما رو، روی سلول های زنده تست میکنه!

تست سلوکد

خب برای این که این پلتفرم دوست داشتنی رو تست کنم، نشستم و یک معکوس کننده یا گیت NOT رو با Verilog HDL نوشتم :

کد   
module NOT(output out, input in);
 always@(in)
   begin
   case({in})
   1'b0: {out} = 1'b1;
   1'b1: {out} = 1'b0;
   endcase
  end
endmodule

بعد از این که روی دکمه Run کلیک کردم (البته یادتون باشه که قبلش تعدادی DNA Sequence رو به عنوان ورودی و خروجی انتخاب کنید تا تحلیل های درست و بهتری تحویل بگیرید) ، شروع کرد به تحلیل کردن. حالا نتایج رو با هم می بینیم!

شکل گیت NOT به صورت قسمتی از DNA :

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

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

inverter_wiring_agrn

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

و آخرین چیزی که توجهم رو به خودش جلب کرد، نمودار زیستی ای بود که در خروجی قرار داشت و عملکرد گیت رو به صورت کاملا زیستی تحلیل میکرد :

inverter_A000_xfer_model_P1_PhlF

و البته یک ساختار گیتی دیگر هم داره، که «جنس» ورودی خروجی ها، همون پروتئین هایی که نماینده صفر و یک منطقی هستند رو برای ما مشخص میکنه :

inverter_A000_wiring_grn

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

موفق باشید 🙂

Share

ساخت یک کلاک ساده با آی‌سی 555

وقتی که داشتم در مورد آی‌سی 555 و کاربردهاش تحقیق میکردم یک مثال ساده به چشمم خورد : چشمک زن با LED . خیلی از چشمک زن هایی که در اینترنت بودند رو تست کردم و ساختم و دیدم که کار بکن نیستن که نیستن! تا این که دیدم Ben Eater (کسی که یک کامپیوتر برد بوردی هشت بیتی ساخته) ، یک مدار Clock ساخته. یکی از کاربردهای Clock این هست که مدارهای ما رو در لحظات خاص فعال و در لحظات خاص غیرفعال میکنه. همچنین، مدارهایی داریم که میتونن چند تا کلاک رو هندل کنن و یا نیاز دارن دو تا کلاک داشته باشن که برعکس هم کار میکنن. کلاکی که بن ایتر طراحی کرده به قدر کافی خوب و مناسب هست، اما من یک فیچر (اگر بتونیم بهش بگیم فیچر 🤔) بهش اضافه کردم و محصول نهایی شد این :

timerهمانطوری که در شکل می بینید، خروجی کلاک درجای خودش به یک LED زرد متصل شده. و یک مدار ترانزیستوری هم بهش اضافه شده که حالا میخوایم بررسی کنیم اون چیه؟ اگر با NPN ها آشنا باشید میدونید که وقتی جریان در Base برقراره، امکان حرکت الکترونها از Collector به سمت Emitter هم فراهم میشه. یعنی در این مدار زمانی که خروجی ای که به اسم CLK مشخص شده، روشنه، جریان به راحتی از Collector میره به Emitter و اون LED قرمز که با CLK~ مشخص شده، خاموش میشه. زمانی که جریانی در Base ترانزیستور ما نیست، نتیجتا جلوی حرکت جریان از Collector به Emitter گرفته میشه و جریان به CLK~ میره. این به این معناست که زمانی که نیاز داریم کلاکمون برعکس بزنه، میتونیم از اون خروجی مدار استفاده کنیم! حالا یک سوال هست، و اون هم اینه که …

555 چطور کار میکنه؟

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

در نهایت هم یک فیلم کوتاه از مداری که من ساختم ببینیم :

timer

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

Share