#پولطلا

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

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

البته این که یک شوخی بود، اما مسئله‌ی پول بی پشتوانه و تورم و نتایج مخرب آن بر فرهنگ جامعه‌ی مظلوم ما همیشه برای من یک سوال بود. همیشه از خودم می‌پرسیدم چرا نرخ تورم انقدر بالاست، چرا بانک‌ها وام‌هایی با سود بالا می‌دهند و با اینکه می‌دانم ربا برای جامعه مضر (و به همین دلیل حرام) است، وقتی بارها شنیده‌ایم که کسی پول قرض کرده و کالایی خریده و تنها چند ماه بعد کلّی سود کرده (و طبیعتا قرض دهنده ضرر)، چطور کسی را ترغیب به قرض الحسنه کنیم و مگر انسان کاسبکار قبول می‌کند و در این شرایط نمی‌شود و این نامردی نیست که «اِن»قدر اعتبار خرید را به کسی قرض بدهیم و بعداً «اِن منهای یک»قدر اعتبار تحویل بگیریم؟ این که کمتر از اصل پول است و آیا می‌شود توجیه شرعی برای ربا در این پیچ حساس تاریخی درست کرد (!) و طبیعی است که نمی‌شود و یک جای کار می‌لنگد و…؛ تا اینکه روزی متوجه شدم پشتوانه پول ما طلا نیست! در واقع پشتوانه پول هیچ کشوری طلا نیست و این اتفاق حدود ۵۰-۶۰ سال پیش رخ داده و در حال حاضر چیزهای ناپایداری مثل تراز تجاری و… به عنوان پشتوانه‌ی پول کشورها استفاده می‌شود که به نظرم خیلی عجیب است. بماند که چرا اینطور شد و چرا نمی‌شود به آن وضعیت برگشت…

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

ادامه‌ی مطلب

چگونه در CSS فقط به عناصر RTL استایل بدهیم؟

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

در این حالت می‌توانیم مانند مثال زیر که برای کلاس table است، حالت خاص را در ادامه‌ی ذکر نام Class آن عنصر ذکر کنیم:

دقت کنید که direction ممکن است به صورت “direction: rtl” و یا “direction:rtl” نوشته شود، پس نوشتن هر دو حالت برای جلوگیری از مشکل در آینده توصیه می‌شود (چرا واقعا خودش تشخیص نمیده؟ 🤔)

انتخاب به عنوان دانشجوی فناور برتر ۱۴۰۱ دانشگاه شهاب دانش

به نقل از shdu.ac.ir:

طی جلسه ای از پژوهشگران و فناوران برتر دانشگاه شهاب دانش تقدیر شد.

در این جلسه که با حضور اعضاء هیأت رئیسه ، مدیر پژوهش ، مدیر فناوری و ارتباط با صنعت و مشاوره فناوری دانشگاه همراه بود از پژوهشگران و فناوران برتر دانشگاه شهاب دانش در سال ۱۴۰۱ تقدیر شد.

 

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

همچنین در بخش دانشجویی آقای مهندس رستگار به عنوان فناور برتر و خانم مهندس نجف لو به عنوان پژوهشگر برتر انتخاب شدند.

در ادامه تقدیر نامه و هدایا‌ی برگزیدگان توسط ریاست ،معاون فناوری و اعضاء هیأت رئیسه به ایشان اهدا شد.

نصب داکر روی اوبونتو ‎22.04 LTS

همانطور که می‌دانید (یا شایدم نمی‌دانید 😁) مخزن اصلی سرویس Docker ایران و تعدادی از کشورهای دیگر را تحریم کرده و امکان نصب مستقیم از آن وجود ندارد؛ با این حال کسی با این مسخره‌بازی‌ها نمی‌تواند جلوی ماها را بگیرد ?. من دو روش برای رفع این مشکل پیدا کرده‌ام:

  1. استفاده از مخزن‌های آینه (یا موازی یا همان Mirror): با گشتن mirrorهای سرور داکر می‌توان چیزهای خوبی پیدا کرد؛ مثلا اینجا مخزن خودش را با آموزش قدم به قدم ارائه داده.
  2. استفاده از سرویس «شکن»: «شکن» نام یک سامانه دورزننده‌ی سایت‌های تحریم شده است که از طریق DNS «فقط» سایت‌های تحریم شده را دور زده و مثل سایت‌های عادی ارائه می‌دهد. پیش از این یک نسخه غیررسمی برای ویندوز آن را ساخته بودم اما اینجا لینوکس است و کار به همین راحتی نیست! مخصوصا اگر رابط گرافیکی‌ای در دسترس نباشد (مثل سرورها)…

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

تعویض DNS با nmtui

1- ابتدا وارد nmtui شوید:

2- گزینه «Edit a connection» را انتخاب کنید:

3- اتصال موردنظر (که معمولا همان تک گزینه‌ی زیرمجموعه Ethernetهاست) را انتخاب کنید، به سمت راست بروید و Edit را انتخاب کنید:

4- بخش «IPv4 CONFIGURATION» را «show» کنید، به بخش «DNS servers» بروید و DNSهای شکن را «Add» کنید. در نهایت از پایین صفحه «OK» را بزنید و به صفحه قبلی برگردید:

5- حالا برای اعمال تغییرات:

اگر به صورت مستقیم به دستگاه متصل هستید به صفحه اصلی برگردید و با وارد شدن به بخش «Activate a connection» و انتخاب شبکه، آن را یکبار «غیرفعال» و دوباره «فعال» کنید:

هشدار: اگر از راه دور به دستگاه وصلید، روش بالا باعث می‌شود که اتصال شما قطع شده و دیگر شبکه‌ای در کار نیست که بخواهید از طریق آن، آن را وصل کنید (شنیدید میگن یکی بر سر شاخه بُن می‌بُرید؟ 😂)! در این حالت مرحله آخر روش nmcli را ببینید.

تعویض DNS با nmcli

1- ابتدا لیست ارتباطات شبکه را گرفته و UID شبکه مورد نظر را کپی می‌کنیم:

2- حالا dnsهای شکن را تنظیم می‌کنیم:

3- می‌توانیم دریافت dns خودکار را خاموش کنیم (برای من خیلی فرقی نداشت):

4- حالا باید شبکه را خاموش و دوباره روشن کنیم. برای اینکه به مشکل قبل نخوریم می‌توانیم از دستور زیر استفاده کنیم:

یا از طریق دستور زیر شبکه را ریست می‌کنیم:

ارتباط SSH قطع شده و بعد از چند ثانیه دوباره قادر به ارتباط خواهیم بود…

برای اطمینان از تنظیم DNS، می‌توان دستور زیر را اجرا کرد:

 

تبدیل متن به هش کد MD5 در جاوااسکریپت

گاهی اوقات لازم داریم تا متغیرهای ورودی در یک فرم را کمی دستکاری کنیم؛ مثلا رمز عبور دریافتی از کاربر را تبدیل به یک رمز برگشت‌ناپذیر کنیم که MD5 یکی از معروف‌ترین آنهاست. جاوا اسکریپت به صورت پیشفرض دستوری برای این کار ندارد اما با افزودن این تابع به کدها می‌توانید این قابلیت را اضافه کنید:

 

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

دستگاه نوبت‌دهی بی‌سیم تحت شبکه

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

 

پاییز

هوا بدجوری بوی پاییز می‌دهد. دوباره یاد پاییز و مهر و مدرسه افتاده‌ام، به خصوص شهید قدوسی و سال آخرش!

یاد اتاق SQR و ربات و ماجراهایش…

نمی‌دانم چرا غیر از یکی دو صحنه که از دستم در حال کدنویسی گرفتم صحنه‌ی دیگری از خودم در این فیلم ضبط نکردم 😐

چطور در سی‌شارپ صف اجرای دستورات بسازیم؟

همانطور که می‌دانید سی‌شارپ مفهومی به نام Queue یا صف دارد که می‌توان آن را برای انواع متغیرها ساخت، در آن مورد جدیدی Enqueue کرد و سپس در یک چرخه تک تک Dequeue کرده و استفاده کرد؛ ساختار آن به صورت FIFO است.

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

یکی از انواع متغیر در سی‌شارپ Action است. در توضیح آن آمده:

Encapsulates a method that has no parameters and does not return a value

یک متدی که پارامتری ندارد و مقداری را برنمی‌گرداند را در خود ذخیره می‌کند

حقیقا از اینکه دیدم سی‌شارپ چنین قابلیتی دارد هم به شدت تعجب کردم هم خوشحال شدم (سی یاد بگیر! با تو باید const char*‎ رو هم دستی به char*‎ تبدیل کنم! 😐). با کمی تلاش این فرمول به دست آمد:

  1. اول یک صف از نوع Action بسازید:
  2. یک BackgroundWorker می‌سازیم تا همیشه بررسی کند که آیا دستوری در صف وجود دارد؟ و اگر وجود داشت اجرا کند:
  3. حالا هرجا لازم شد اینطوری دستورات را به صف اضافه می‌کنیم:

    می‌بینید که دستورات یک به یک اجرا می‌شوند.