سخت‌تر از یتیمی…

أَشَدُّ مِنْ يُتْمِ الْيَتِيمِ الَّذِي انْقَطَعَ عَنْ أُمِّهِ وَ أَبِيهِ يُتْمُ يَتِيمٍ انْقَطَعَ عَنْ إِمَامِهِ وَ لَا يَقْدِرُ عَلَى الْوُصُولِ إِلَيْهِ وَ لَا يَدْرِي كَيْفَ حُكْمُهُ فِيمَا يُبْتَلَى بِهِ مِنْ شَرَائِعِ دِينِهِ

سخت تر از یتیم جدا شده از مادر و پدر، یتیمی است که از امامش جدا شده و توانایی دستیابی به وی را ندارد. و حکم امامش را درباره مسائل دینی مورد ابتلا نمی‌داند…

چگونه در 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 یعنی اگر کاربر متن را تغییر داد آن تنظیم هم تغییر کند) قرار می‌گیرد.

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

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

 

ویندوز 3.1 فارسی!

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

مدتی بود که یک نسخه از ویندوز 3.1 فارسی را پیدا کرده بودم؛ برای منی که نسخه‌ی قدیمی‌تر از پارسا 99 (که غیر رسمی هم هست) ندیده بودم جالب بود و تصمیم گرفتم تا آن را روی QEMU نصب کنم. ادامه‌ی مطلب

دوره آموزشی اینترنت اشیاء با محوریت آردوینو

اینترنت اشیاء چیست؟

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

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

اینترنت اشیاء

آردوینو چیست؟

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

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

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

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

شروع به یادگیری، ساخت و توسعه ایده‌ها و حتی ساخت دستگاه‌های تجاری با آردوینو بسیار شیرین‌تر است 🙂

از آنجایی که آردوینو پروژه‌ای آزاد است، هر کسی می‌تواند آردوینو را به دلخواه خودش سفارشی‌سازی کرده و یا حتی آردوینوی خودش را بسازد! آردوینو در حال حاضر پرطرفدارترین بُرد توسعه‌ی الکترونیکی دنیاست و میلیون‌ها کاربر از سراسر دنیا از استفاده‌ی آن لذت می‌برند و از نظر سخت‌افزاری و نرم‌افزاری آن را توسعه می‌دهند.

چرا این دوره آموزشی را طراحی کردم؟

بیش از 7 سال از شروع فعالیت من در دنیای الکترونیک می‌گذرد. در طی این سال‌ها پروژه‌های مختلفی را برای مشتریان طراحی کردم و نسخه پیش‌تولید (پروتوتایپ) بعضی از آن‌ها را در وب‌سایتم برای شما به اشتراک گذاشته‌ام. یادگیری من در این سال‌ها از طریق منابع مختلف و معتبری مانند Adafruit و Sparkfun انجام شده و در حین ساخت پروژه‌ها تجربیات زیادی را هنگام بروزرسانی و ارتقای دستگاه‌هایم کسب کردم.

بسیاری از دوستان را دیده‌ام که قصد شروع یادگیری الکترونیک با آردوینو را دارند یا دنبال منبع آموزشی‌ای هستند تا دانش خود را در رابطه با اینترنت اشیاء و انواع روش‌های ساخت این دستگاه‌ها افزایش دهند. این افراد از نبود منبعی مطمئن و جامع برای یادگیری اینترنت اشیاء و آردوینو در بین منابع فارسی گله دارند. این مسئله باعث شد تا در طی یک سال گذشته تجربیات خودم را در یک مجموعه آموزشی 20 قسمتی با عنوان «مجموعه آموزشی اینترنت اشیاء با محوریت آردوینو» آماده و به شما دوستان عرضه کنم:

مجموعه اینترنت اشیاء با آردوینو

همین حالا توی دوره ثبت‌نام کن ✅

ادامه‌ی مطلب

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

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

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

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

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