1 2 3 |
Properties.Settings.Default[settingName] = Properties.Settings.Default.Properties[settingName].DefaultValue; Properties.Settings.Default.Save(); |
1 2 3 |
Properties.Settings.Default[settingName] = Properties.Settings.Default.Properties[settingName].DefaultValue; Properties.Settings.Default.Save(); |
در حالت عادی یک سرور به گونهای تنظیم شده است که ارتباطات عادی HTTP را روی پورت 80 و HTTPS را روی پورت 443 ارائه دهد؛ مرورگرهای وب هم با همین پیشفرض کار میکنند و به همین دلیل اغلب اوقات آدرس وبسایتها چیزی شبیه به example.ir دیده میشود، نه example.ir:80 و نه https://example.ir:443 (در حالی که هر دو به یک آدرس اشاره دارند).
اما گاهی نیاز داریم تا از چند پورت در کنار هم استفاده کنیم و پورت HTTPS ما غیر از 443 باشد؛ در این صورت میتوانیم به صورت زیر عمل کنیم (سرور Ubuntu 22.04 LTS – آپاچی 2.4 و LetsEncrypt-CertBot):
ابتدا تنظیمات سایت در آپاچی را باز میکنیم:
1 |
sudo nano /etc/apache2/sites-enabled/000-default.conf |
حالا این بخش را به تنظیمات فعلی اضافه میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
... <IfModule mod_ssl.c> <VirtualHost *:446> ServerName example.ir DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/letsencrypt/live/example.ir/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.ir/privkey.pem </VirtualHost> </IfModule> ... |
سپس تنظیمات پورتها را باز میکنیم:
1 |
sudo nano /etc/apache2/ports.conf |
پورت دلخواهمان را در آن قرار میدهیم:
1 2 3 4 5 6 7 8 9 |
Listen 80 #Our Normal Port <IfModule ssl_module> Listen 470 </IfModule> <IfModule mod_gnutls.c> Listen 470 </IfModule> |
در انتها آپاچی را ریاستارت میکنیم:
1 |
sudo service apache2 restart |
تنظیمات یا Settings در پروژههای سیشارپ لیستی از متغیرها هستند که علاوه بر تنظیم اولیه، در صورت تغییر در حین برنامه به صورت ماندگار ذخیره میشوند و با بستن برنامه از بین نمیروند؛ به همین دلیل روشی سریع و آسان برای ذخیره تنظیمات کوچک برنامه هستند.
گاهی اوقات لازم است در (مثلا یک فرم ثبتنام) برنامه چند TextBox را طوری نمایش دهیم که چند متغیر در آنها دیده شود و کاربر بتواند آنها را ویرایش کند. همانطور که میدانید در رابط گرافیکی WPF مفهومی به نام BIND یا متصل کردن وجود دارد که به کمک آن بدون کدنویسی اضافه میتوان متغیرهایی را به عنوان محتوای یک عنصر قرار داد؛ برای اینکه یک Setting را در عنصر قرار دهیم کافیست این ویژگی را به Window اضافه کنیم:
1 |
xmlns:properties="clr-namespace:NAMESPC.Properties" |
دقت کنید که به جای NAMESPC نام namespace پروژه خودتان را قرار دهید.
حالا یک Source به نام properties:Settings.Default داریم که میتوانیم آن را bind کنیم؛ مثلا:
1 |
<TextBox x:Name="txt_address" Text="{Binding Source={x:Static properties:Settings.Default}, Path=set_serverAddress, Mode=TwoWay}"/> |
در Path نام تنظیم و در Mode حالت ارتباطی (که TwoWay یعنی اگر کاربر متن را تغییر داد آن تنظیم هم تغییر کند) قرار میگیرد.
دقت کنید که در صورتی که ارتباط دو طرفه استفاده میکنید حتما با دستور:
1 |
Properties.Settings.Default.Save(); |
از ذخیره شدن تنظیمات مطمئن شوید.
یکی از سرگرمیهای من، گشتن در بین آثار باستانی(!) به جا مانده از نرم افزارها و سیستم عاملهای قدیمی و بررسی امکانات و رابط کاربری آنهاست. در این بین گاهی چیزهایی پیدا میکنم که برایم بسیار جالب است. به طور مثال چند سال پیش چند نسخه سیستمعامل فارسی شده پیدا کردم که برای حدود 25 سال پیش هستند و در مورد نسخههای فارسی مک او اس کلاسیک که روی شبیهساز نصب کردم اینجا و اینجا نوشتم.
مدتی بود که یک نسخه از ویندوز 3.1 فارسی را پیدا کرده بودم؛ برای منی که نسخهی قدیمیتر از پارسا 99 (که غیر رسمی هم هست) ندیده بودم جالب بود و تصمیم گرفتم تا آن را روی QEMU نصب کنم. ادامهی مطلب
دستگاههای الکترونیکی هر روز در حال پیشرفت بیشتر هستند و بهکارگیری آنها در عرصههای مختلف زندگی، رویای ارتباط خودکار دستگاههای مختلف با یکدیگر در بستر اینترنت اشیاء را روز به روز به واقعیت نزدیکتر میکند. امروزه فعالیتهای مختلف مانند مشاغل و فرایندهای کنترلی، تولیدی، پایش و خدمات با استفاده از اینترنت اشیاء در حال متحول شدن است.
اینترنت اشیاء مفهومی در دنیای فناوری است که بر مبنای آن دستگاهها و اجزاء زندگی انسان، به طور هوشمندانه و بدون دخالت انسان اطلاعات موردنیاز برای فعالیت بهتر را از دستگاههای دیگر در شبکه دریافت کرده و با آنها به اشتراک میگذارد.
امروزه برنامهنویسی برای کامپیوتر فعالیتی بسیار شیرین است و دلیل آن این است که هر فرد مشتاقی میتواند با زبانها و محیطهای توسعه نرمافزار مختلف به سرعت برنامهای نوشته و اجرا کند؛ اما اوضاع در دنیای الکترونیک متفاوت است.
اجرای یک برنامه روی سختافزار ابتدا نیازمند انتخاب و خرید قطعاتی مانند پردازنده، صرف زمان برای ساخت مدار الکترونیکی و سپس برنامهنویسی با زبان مشخص آن پردازنده است.
اما آردوینو، یک پروژه سختافزاری و نرمافزاریِ رایگان است که به علاقهمندان الکترونیک کمک میکند تا در زمانی بسیار کوتاه ایدههای خود را به اجرا در بیاورند. آردوینو از یک محیط توسعه نرم افزار مناسب و مدارهای الکترونیکی آمادهبهکار تشکیل شده است.
آردوینو برای شما مدارهای آماده به کاری ساخته که میتوانید با زبانی مشترک روی همهشان برنامه بنویسید و از پایههای دیجیتالی میکروکنترلرهای آنها برای کارهای مختلفی استفاده کنید. علاوه بر این، ثبت برنامهها روی پردازنده دیگر نیازمند خرید دستگاههای پروگرمر نیست و این فرایند به سادگی توسط خودِ آردوینو انجام میگردد.
شروع به یادگیری، ساخت و توسعه ایدهها و حتی ساخت دستگاههای تجاری با آردوینو بسیار شیرینتر است 🙂
از آنجایی که آردوینو پروژهای آزاد است، هر کسی میتواند آردوینو را به دلخواه خودش سفارشیسازی کرده و یا حتی آردوینوی خودش را بسازد! آردوینو در حال حاضر پرطرفدارترین بُرد توسعهی الکترونیکی دنیاست و میلیونها کاربر از سراسر دنیا از استفادهی آن لذت میبرند و از نظر سختافزاری و نرمافزاری آن را توسعه میدهند.
بیش از 7 سال از شروع فعالیت من در دنیای الکترونیک میگذرد. در طی این سالها پروژههای مختلفی را برای مشتریان طراحی کردم و نسخه پیشتولید (پروتوتایپ) بعضی از آنها را در وبسایتم برای شما به اشتراک گذاشتهام. یادگیری من در این سالها از طریق منابع مختلف و معتبری مانند Adafruit و Sparkfun انجام شده و در حین ساخت پروژهها تجربیات زیادی را هنگام بروزرسانی و ارتقای دستگاههایم کسب کردم.
بسیاری از دوستان را دیدهام که قصد شروع یادگیری الکترونیک با آردوینو را دارند یا دنبال منبع آموزشیای هستند تا دانش خود را در رابطه با اینترنت اشیاء و انواع روشهای ساخت این دستگاهها افزایش دهند. این افراد از نبود منبعی مطمئن و جامع برای یادگیری اینترنت اشیاء و آردوینو در بین منابع فارسی گله دارند. این مسئله باعث شد تا در طی یک سال گذشته تجربیات خودم را در یک مجموعه آموزشی 20 قسمتی با عنوان «مجموعه آموزشی اینترنت اشیاء با محوریت آردوینو» آماده و به شما دوستان عرضه کنم:
اگر مثل من حال و حوصله طراحی مدار منطقی ندارید، با استفاده از سایت www.32×8.com میتوانید با وارد کردن جدول صحت متغیرها یا جدول کارنو، معادله مربوطه و مدار منطقی PAL آن را با استفاده از گیتهای AND و OR مشاهده کنید.
همچنین سایت tma.main.jp تمامی این فعالیتها را همراه با چند قابلیت دیگر (مثل تبدیل تابع به جمع مینترم یا ضرب ماکسترم) انجام میدهد.
گاهی اوقات نیاز داریم تا بدانیم پرونده php ای که در حال اجراست از کجا دارد اجرا میشود؟ یا میخواهیم یکی از پروندهها را باز کنیم و باید آدرس مطلق (Absolute) وارد کنیم نه نسبی (Relative)؛ به کمک دستور dirname(__FILE__) میتوانیم آدرس پوشه فعلی را در یک String تحویل بگیریم. مثلا اینجا نیاز داشتم تا آدرس یک فونت را داشته باشم تا در تابع imagettftext استفاده کنم:
1 2 |
// Set Path to Font File $font_path = dirname(__FILE__) . '/BTitrBd.ttf'; |
چند روز پیش برای مستقیم سازی مالکیت سهام عدالت در سامانه سجام ثبت نام کردم؛ برای احراز هویت اطلاعات نیاز به مراجعه حضوری به دفاتر منتخب بود. با توجه به اوضاع کرونایی جهان فرصت نمی شد تا برای احراز هویت اقدام کنم اما امروز فرصت شد. بد نیست به صورت خلاصه نگاهی به فرآیند دریافت کد بورسی بیندازیم:
1- قدم اول این است که در سامانه سجام ثبت نام کنید. به sejam.ir مراجعه کنید و ثبت نام را بزنید. به طور کلی آماده ورود هرگونه اطلاعات بی ربط و با ربطی باشید ?? (احتمالا هدف از دریافت اینهمه اطلاعات غیرضروری مثل کد و نام شعبه و نوع حساب بانکیتان مبارزه با پولشویی است! اما ما که در سامانه های مهم تر از این با اطلاعات کمتری ثبت نام کردیم و اتفاقی نیفتاد…)
در نهایت پس از پرداخت هزینه ۱۰ هزار تومانی، یک کد پیگیری برای شما پیامک می شود که باید آن را برای مرحله ۲ استفاده کنید:
مرتضی رستگار گرامی، كد پيگيري شما در سامانه سجام
xxxxxxxxxx مي باشد، لطفا با همراه داشتن مدارك شناسايي به مراكز منتخب احراز هويت سجام مراجعه و فرايند سجامي شدن خود را تكميل نماييد.
www.sejam.ir
شرکت سپرده گذاری مرکزی
گاهی اوقات تابعی (یا همان متد = method) از داخل تابعهای مختلفی اجرا میشود و در هنگام خطاگیری آدم میماند که این تابع اصلا از کجا الان صدا زده شد؟!
با استفاده از کد زیر میتوانید بفهمید که اسم تابعی که تابع را صدا زده چیست:
1 2 3 4 5 6 |
using System.Diagnostics; . . . StackTrace stackTrace = new StackTrace(); MessageBox.Show(stackTrace.GetFrame(1).GetMethod().Name); |
یکی از دوستان میخواست به وسیلهی تلفن اندرویدیش از راه دور به رایانهاش متصل باشد و کنترلش کند. از قبل با VNC کار نکرده بودم ولی مطمئن بودم که باید ساده باشد 🙂 و بود:
1- ویندوزتان را فرستنده کنید:
یکی از سادهترین و مشهورترین نرم افزار های VNC، جفت نرم افزارِ VNC Connect و VNC Viewer از شرکت RealVNC هستند که از وبسایت این شرکت هم قابل دریافتند اما پولیاند و بهتر است مثل بچهی آدم از یکی از سایتهای ایرانی دانلودشان کنیم 😁. برای اینکه بتوانید از روی دستگاه دیگر به رایانهتان متصل شوید؛ نرم افزار VNC Connect را دریافت و روی ویندوز نصب کنید. برای استفادهی عادی نیازی به هیچ تنظیم خاصی وجود ندارد.
پس از نصب میبایستی شماره سریال آن را وارد کنید که طبق راهنمای نصب برنامهی سریالساز را باز کرده و در حالی که باز است، شماره سریال ایجاد شده را در ویانسی کانکت وارد کنید. حالا محیطی شبیه به این را خواهید دید:
در سمت چپ آدرس IP شما به عنوان راه اتصال به رایانه نمایش داده میشود. اگر به چند شبکه مختلف متصل باشید با زدن Other ways to connect میتوانید آنها را نیز مشاهده نمایید.
سوال: چرا با خاموش و روشن کردن مودم دیگر نمیتوانم به VNC ام وصل شوم؟ ادامهی مطلب