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

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

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

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

نصب داکر روی اوبونتو ‎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» و انتخاب شبکه، آن را یکبار «غیرفعال» و دوباره «فعال» کنید:

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

تعویض DNS با nmtui

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

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

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

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

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

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

 

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

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

 

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

همانطور که می‌دانید سی‌شارپ مفهومی به نام 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. حالا هرجا لازم شد اینطوری دستورات را به صف اضافه می‌کنیم:

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

چگونه در Apache روی یک پورت متفاوت SSL را فعال کنیم؟

در حالت عادی یک سرور به گونه‌ای تنظیم شده است که ارتباطات عادی HTTP را روی پورت 80 و HTTPS را روی پورت 443 ارائه دهد؛ مرورگرهای وب هم با همین پیش‌فرض کار می‌کنند و به همین دلیل اغلب اوقات آدرس وبسایت‌ها چیزی شبیه به example.ir دیده می‌شود، نه example.ir:80 و نه https://example.ir:443 (در حالی که هر دو به یک آدرس اشاره دارند).

اما گاهی نیاز داریم تا از چند پورت در کنار هم استفاده کنیم و پورت HTTPS ما غیر از 443 باشد؛ در این صورت می‌توانیم به صورت زیر عمل کنیم (سرور Ubuntu 22.04 LTS – آپاچی 2.4 و LetsEncrypt-CertBot):

ابتدا تنظیمات سایت در آپاچی را باز می‌کنیم:

حالا این بخش را به تنظیمات فعلی اضافه می‌کنیم:

 

سپس تنظیمات پورت‌ها را باز می‌کنیم:

پورت دلخواهمان را در آن قرار می‌دهیم:

 

در انتها آپاچی را ری‌استارت می‌کنیم:

چگونه یک Setting را در عنصر WPF نمایش دهیم (Bind)؟

تنظیمات یا Settings در پروژه‌های سی‌شارپ لیستی از متغیرها هستند که علاوه بر تنظیم اولیه، در صورت تغییر در حین برنامه به صورت ماندگار ذخیره می‌شوند و با بستن برنامه از بین نمی‌روند؛ به همین دلیل روشی سریع و آسان برای ذخیره تنظیمات کوچک برنامه هستند.

گاهی اوقات لازم است در (مثلا یک فرم ثبت‌نام) برنامه چند TextBox را طوری نمایش دهیم که چند متغیر در آن‌ها دیده شود و کاربر بتواند آن‌ها را ویرایش کند. همانطور که می‌دانید در رابط گرافیکی WPF مفهومی به نام BIND یا متصل کردن وجود دارد که به کمک آن بدون کدنویسی اضافه می‌توان متغیرهایی را به عنوان محتوای یک عنصر قرار داد؛ برای اینکه یک Setting را در عنصر قرار دهیم کافیست این ویژگی را به Window اضافه کنیم:

دقت کنید که به جای NAMESPC نام namespace پروژه خودتان را قرار دهید.

حالا یک Source به نام properties:Settings.Default داریم که می‌توانیم آن را bind کنیم؛ مثلا:

در Path نام تنظیم و در Mode حالت ارتباطی (که TwoWay یعنی اگر کاربر متن را تغییر داد آن تنظیم هم تغییر کند) قرار می‌گیرد.

دقت کنید که در صورتی که ارتباط دو طرفه استفاده می‌کنید حتما با دستور:

از ذخیره شدن تنظیمات مطمئن شوید.

 

رسم مدار منطقی خودکار آنلاین از روی جدول کارنو

اگر مثل من حال و حوصله طراحی مدار منطقی ندارید، با استفاده از سایت www.32×8.com می‌توانید با وارد کردن جدول صحت متغیرها یا جدول کارنو، معادله مربوطه و مدار منطقی PAL آن را با استفاده از گیت‌های AND و OR مشاهده کنید.

همچنین سایت tma.main.jp تمامی این فعالیت‌ها را همراه با چند قابلیت دیگر (مثل تبدیل تابع به جمع مینترم یا ضرب ماکسترم) انجام می‌دهد.

چگونه در php آدرس پوشه فعلی را به دست بیاوریم؟

گاهی اوقات نیاز داریم تا بدانیم پرونده php ای که در حال اجراست از کجا دارد اجرا می‌شود؟ یا می‌خواهیم یکی از پرونده‌ها را باز کنیم و باید آدرس مطلق (Absolute) وارد کنیم نه نسبی (Relative)؛ به کمک دستور dirname(__FILE__)‎ می‌توانیم آدرس پوشه فعلی را در یک String تحویل بگیریم. مثلا اینجا نیاز داشتم تا آدرس یک فونت را داشته باشم تا در تابع imagettftext استفاده کنم:

 

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

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

1- قدم اول این است که در سامانه سجام ثبت نام کنید. به sejam.ir مراجعه کنید و ثبت نام را بزنید. به طور کلی آماده ورود هرگونه اطلاعات بی ربط و با ربطی باشید ?? (احتمالا هدف از دریافت اینهمه اطلاعات غیرضروری مثل کد و نام شعبه و نوع حساب بانکیتان مبارزه با پولشویی است! اما ما که در سامانه های مهم تر از این با اطلاعات کمتری ثبت نام کردیم و اتفاقی نیفتاد…)

در نهایت پس از پرداخت هزینه ۱۰ هزار تومانی، یک کد پیگیری برای شما پیامک می شود که باید آن را برای مرحله ۲ استفاده کنید:

مرتضی رستگار گرامی، كد پيگيري شما در سامانه سجام
xxxxxxxxxx مي باشد، لطفا با همراه داشتن مدارك شناسايي به مراكز منتخب احراز هويت سجام مراجعه و فرايند سجامي شدن خود را تكميل نماييد.
www.sejam.ir
شرکت سپرده گذاری مرکزی

ادامه‌ی مطلب