پرسش به صورت خصوصی

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

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

در واقع خانم/آقای پرسش‌گر این انتظار رو از من داره که:

  1. متن کامنتش رو بخونم.
  2. در مورد سؤالش فکر کنم.
  3. پاسخ پرسشش رو تایپ کنم.
  4. وارد حساب ایمیلم بشم.
  5. پاسخی که از قبل تایپ کردم رو به همراه ایمیلش که در اینباکس وبلاگم هست کپی/پیست (Copy/Paste) کنم و دکمه ارسال رو بزنم!
  6. در آینده به شبهات احتمالی این فرد با ایمیل پاسخ بدم.

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

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


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

جمله دومم به این خاطر هست که بارها این مدل از درخواست‌ها حتی با کلمات ساده‌ای مثل «لطفا» و یا «بی‌زحمت» هم همراه نبوده!

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

باگ صده شمسی در همین نزدیکی‌ها

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

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

همین مسئله باعث به وجود اومدن باگ سال ۲۰۰۰ شد. برخی برنامه‌ها تصور می‌کردند که ۲۰۰۰ همان ۱۹۰۰ هست و بلعکس! و اینطوری شد که مشکلات زیادی در سراسر دنیا به وجود اومد.

حالا پس از گذشت حدود ۱۶ سال از این اتفاق اولین نشانه‌های ظهور باگی که من اون رو «باگ صده شمسی» نام گذاری کردم در حال رخ دادن است.

باگ صده شمسی در همین نزدیکی‌ها 1400 bug

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

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

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

مرحله اول از چالش ATmega16A

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

برای آغاز این کار نیاز به تهیه لوازم اولیه داشتم. با توجه به محتوای درون کتاب‌های دانشگاهی، مشاوره با دوستان و آشنایان و… به لیست زیر رسیدم:

  • پروگرامر
  • میکروکنترولر مدل ATmega16A
  • آداپتور
  • برد بورد
  • هویه و سیم لحیم
  • ولت‌متر و اهم‌متر
  • سیم سوسماری
  • سیم رابط برد بورد
  • سیم لخت‌کن
  • سیم چین
  • LED رنگی ۳ ولت
  • مقاوت
  • کلید
  • جعبه ابزار

تهیه لیست فوق حدود ۱۶۰ هزار تومان هزینه داشت.

پروگرامر وسیله‌ای است که با استفاده از اون میشه کدهایی که در نرم افزار CodeVision نوشته‌ایم رو به میکروکنترولرمون (در این مورد ATmega16A) انتقال بدیم. خوشبختانه کار با پروگرامر رو با پرسیدن چند سؤال ساده از فروشنده یاد گرفتم!

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

بعد از اینکه فهمیدم چطوری میشه یک میکروکنترولر رو برنامه نویسی کرد (در واقع فهمیدم که چطوری میشه کدها رو بهش انتقال داد!) نوبت این بود که اولین برنامه آزمایشیم رو بنویسم.

برنامه‌ای برای روشن و خاموش کردن یک LED نوشتم و بعد از انتقال کدهای برنامه به ATmega16A مدار رو بر روی برد بوردم بستم و در نهایت مدار رو به منبع انرژی وصل کردم واتفاقی که افتاد این بود که…
“هیچ اتفاقی نیفتاد!”

خیلی برام عجیب بود که همه چیز منطقی طراحی شده ولی LED روشن نشده. پس از کمی تلاش و تغییر مدار باز هم اتفاق عجیب‌تری افتاد! این بار کل پایه‌ای میکروکنترولر روشن بودند و عمل delay هم اتفاق نمی‌افتاد!

با کمی جستجو متوجه شدیم که جریان زیادی به میکروکنترولر و برد بورد دادیم و هر دوتای اونا رو سوزوندیم! همینطور متوجه شدیم که برای کم کردن جریان باید از همون فرمول دبیرستان یعنی V = I x R استفاده کرد!

خب فهمیدن این موضوع برای ما قیمتی معادل سوزوندن یه برد بورد و میکروکنترولر داشت ولی فکر کنم کاملاً ارزشش رو داشت!

چالش جدید من در جنگل – ATmega16A

چند وقتی هست که حسابی وسوسه شدم تا به سراغ برنامه نویسی میکروکنترولرها برم. این وسوسه یک علاقه شخصی برای آرما و یک دید تجاری برای علیرضا مؤید احمدی به عنوان مدیر عامل جنگل هست.

به همین خاطر یک چالش تازه را در جنگل استارت زدم. من باید بتونم تا پایان سال آینده (سال ۱۳۹۵ شمسی) به این توانایی‌ها برسم:

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

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

میکروکنترولری که در این مدت باهاش کار خواهم کرد ATmega16A نام دارد و برنامه‌های درونش رو هم با محیط CodeVision و به زبان C خواهم نوشت.

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

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