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

شاید حدود ۱۰ سال پیش، وقتی به تازگی وارد ۱۲ سالگی شده بودم، شروع به ساخت وبلاگ در یکی از قدیمی ترین سرویس های وبلاگدهی فارسی، یعنی بلاگفا کردم. بلاگفایی که تا همین یکی دو سال پیش، به معنای واقعی از پرترافیک ترین وبسایت های فارسی به شمار میرفت.
دقیقا همان روزها، بلاگفا در صفحه اصلیش، دست کم دو تبلیغ نشان میداد، اخبارش و وبلاگ های بروز شده را لیست می‌کرد و گهگاه در شکل خبرهای فوری، امکانات حذف یا اضافه شده به سیستمش رو اطلاع رسانی می‌کرد. به این شکل مثلا فهمیدیم که مدتی 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

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

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

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

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

ایده هایی که در ذهن خودم هستن اینان :

  • پیاده سازی یه دستگاه ساده با استفاده از میکروکنترلرهایی که توی بازار موجودند، و روبرو شدن با چالش هایی مثل مطالعه معماری، برنامه نویسی برای ریزپردازنده، طراحی مدارهای واسط و … .
  • پیاده سازی یه دستگاه ساده با استفاده از آردوینو و ماژول هاش
  • پیاده سازی یک دستگاه ساده IoT طور با استفاده از Cubieboard یا رزبری
  • و …

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

Share

پروژه گاه‌شمار

خب، من در گروه های تلگرامی این پیام رو میذاشتم :

دوستی مدتی پیش (که خیلی هم ازش نگذشته ) یک چالش رو بعنوان تمرین برنامه نویسی پیشنهاد داد، و اون هم نوشتن یک API بود برای دریافت ساعت و تاریخ.
من هم وارد این چالش شدم و یک API با روبی و سیناترا نوشتم، روی گیتهاب هم قرارش دادم ولی الان دپلویش کردم که اگر شما هم خواستید بتونید ازش استفاده کنید :
https://gahshomar-api.herokuapp.com/

خب، این هم پروژه ای بود که محسن بعنوان تمرین خواست که ما یه API بنویسیم، من هم این رو با Sinatra نوشتم و الان دپلوی شده و در دسترسه! امیدوارم ازش لذت ببرید 🙂

Share

رضایت و نارضایتی، از دربستی های موبایلی

uber-login-signup

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

 

 

 

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

بیایید توییت های بیشتری رو بررسی کنیم و ببینیم که مردم دیگه از چه چیزی توی این سرویس ناراضی هستند :

خب، این توییت نارضایتی از قیمته. شاید الگوریتم قیمت گذاری تغییر کرده که بازی رو برد-برد کنه. مثلا شده که مسیری رو با ۱۴ هزار تومن رفتم، و موقع برگشت (که ساعت ترافیک دار بوده) هزینه رفته روی ۱۵ یا ۱۶ هزار تومن. البته هنوز مطمئن نیستم که این بخاطر موقعیت من در مبدا برگشت بوده، یا بخاطر ترافیک زیاد.  

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

 

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

و اما … در کل، میزان رضایت بیشتره یا نارضایتی؟

به عنوان یک کاربر سرویس، شخصا بیشتر ناراضیم تا راضی. چرا که :

  1. در ساعتای شلوغ و پرترافیک، کم پیش میاد که با همون بار اول درخواست اسنپ دادن، ماشینی پیدا شه که اکسپت کنه.
  2. راننده های نزدیک، زودتر پیام رو دریافت نمیکنن، و نتیجه میشه این که راننده ای که در میدان نور (تقاطع کاشانی – ستاری) حضور داره، مسافری رو از شهر زیبا (منتهی علیه غربی کاشانی 😐 ) رو اکسپت کنه و این خودش معطلی برای مسافر هست
  3. خیلی از مشکلات کلاسیک مردم با راننده ها حل نشده. یک نمونش راه بلد بودن هست، نمونه دیگرش پرچونگی و پرحرفی راننده ها، که اگر هشتگی مثل «راننده»، «مسافر کش» یا «راننده تاکسی» رو در توییتر سرچ کنید، میرسید به این مشکلات.

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

ریشه مشکل کجاست؟ چاره چیه؟!

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

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

با اصلاح مواردی که در این متن گفته شد، میشه تا حد زیادی به مشکلات رسیدگی کرد. آموزش درست راننده و مسافر، داشتن یک نرم افزار User-friendly تر و با UX بهتر و … همش میتونه به بهتر شدن و افزایش میزان رضایت مشتری، کمک کنه!

در آخر هم ممنونم که این پست بلند و بالای من رو خوندید! در مورد Uber هم در تصویر اول متن بگم که همینطوری خواستم بذارم، چون مشابهش رو برای اسنپ پیدا نکردم 😀 

موفق باشید 🙂

Share

دوستی با محصول جدید اتودسک

اکثرا میدونیم که شبیه سازی و استفاده از بردهای آردوینو و AVR و … ، برای کاربران لینوکس خیلی مشکله. حتی شبیه سازی ساده مدارهای الکتریکی و الکترونیکی هم مشکلیه که اکثرا کاربران لینوکس باهاش روبرو هستند. اما امروز، میخوام ابزاری رو معرفی کنم، که هم رایگانه و هم تحت وب. به شما امکان کد زدن روی آردوینو و تست کردن مدارهای مجتمع، ساختن مدارهای دیجیتال و آنالوگ رو میده.

شرکت اتودسک که پیش تر با محصولاتی مثل اتوکد و مایا شناخته شده بود، الان اومده محصولی به اسم 123D Circuits رو ارائه کرده که با ساختن یک اکانت و عضویت درش، میتونید به راحتی آزمایشات الکترونیکی خودتون رو انجام بدید.

این هم نمونه مداری که بستم، یک آی سی 7408 هست که داره دو ورودی رو با هم AND میکنه :

کافیه روی start simulation کلیک کنید و بعد با کلید ها بازی کنید تا تغییرات توی ولت متر و LED قرمز رنگ روی برد بورد رو شاهد باشید.

Share