<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های SReza S</title>
        <link>https://virgool.io/feed/@srezas</link>
        <description>داشجوی علوم کامپیوترم و به فضای اوپن‌سورس، ماشین‌لرنینگ و بیت‌کوین علاقه‌مندم.</description>
        <language>fa</language>
        <pubDate>2026-06-10 15:10:10</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/147828/avatar/rzJEHt.jpeg?height=120&amp;width=120</url>
            <title>SReza S</title>
            <link>https://virgool.io/@srezas</link>
        </image>

                    <item>
                <title>راهنمای گام به گام نصب LaTeX و xepersian در لینوکس</title>
                <link>https://virgool.io/@srezas/%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85-%D9%86%D8%B5%D8%A8-latex-%D9%88-xepersian-%D8%AF%D8%B1-%D9%84%DB%8C%D9%86%D9%88%DA%A9%D8%B3-imb6eyffuoc6</link>
                <description>نصب لاتک و زیپرشن۱. دانلود فایل iso نرم‌افزار texlive از https://ctan.net/systems/texlive/Images۲. ماونت کردن(mount) فایل iso با دستور:sudo mount -o loop ~/Downloads/texlive.iso /media/iso۳. نصب texlive با دستورsudo /media/iso/install-tl۴. افزودن برنامه‌های نصب شده به متغیرهای محلی با اجرای دستور زیر در ترمینال(بصورت یکجا کپی و اجرا کنید)echo &#039;# Add TexLive to PATH, MANPATH, and INFOPATH
export PATH=&amp;quot/usr/local/texlive/2024/bin/x86_64-linux:$PATH&amp;quot
export MANPATH=&amp;quot/usr/local/texlive/2024/texmf-dist/doc/man:$MANPATH&amp;quot
export INFOPATH=&amp;quot/usr/local/texlive/2024/texmf-dist/doc/info:$INFOPATH&amp;quot&#039; &gt;&gt; ~/.bashrc۵. دانلود فایل zip پکیج xepersian از https://ctan.org/pkg/xepersian۶. نصب xepersian با دستورunzip -d `kpsewhich --var-value TEXMFLOCAL` ~/Downloads/xepersian.zipحالا لاتک و زیپرشن آماده استفاده هستند. توجه داشته باشید برای گرفتن خروجی پی‌دی‌اف از فایل تک زیپرشن باید از دستور xelatex بصورت زیر استفاده کنید:xelatex your-file.texراه‌اندازی نرم‌افزار Visual Studio Code برای کار با لاتک۱. دانلود فایل نصبی .deb نرم‌افزار Visual Studio Code از آدرس https://code.visualstudio.com۲. نصب با دستورsudo apt install ~/Download/code.deb۳. نرم افزار را باز کرده و در منوی سمت راست Extensions افزونه‌ی Latex Workshop را جستجو و نصب کنید.۴. تنظیمات را باز کنید و عبارت    Latex: Recipes    را جستجو کنید و بر روی    Edit in settings.json    کلیک کنید.۵. عبارت زیر را به ابتدای لیست بیاورید{
    &amp;quotname&amp;quot: &amp;quotlatexmk (xelatex)&amp;quot,
    &amp;quottools&amp;quot: [
        &amp;quotxelatexmk&amp;quot
    ]
},    (این برای استفاده از xelatex بصورت پیشفرض است)حالا در visual studio code خروجی PDF لاتک با هر تغییر بصورت خودکار تولید و ذخیره می‌شود.برای مشاهده قابلیت‌های افزونه نصب شده، ویدئوی یوتیوبی زیر را ببینید: https://www.youtube.com/watch?v=triTgcyF_IA نظر به کمبود منابع فارسی برای نصب لاتک در لینوکس، بر خودم لازم دیدم پس از سعی و خطاهای بسیار تجربیاتم را در این پست به اشتراک بگذارم. امیدوارم این راهنما براتون مفید واقع شده باشد.آدرس بیت‌کوینی برای ارسال دونیشن: bc1qsnfs9alfadfqv0hgc7j6duga8jqqryn4apl8w2</description>
                <category>SReza S</category>
                <author>SReza S</author>
                <pubDate>Sun, 14 Apr 2024 18:25:34 +0330</pubDate>
            </item>
                    <item>
                <title>کیف‌پول سرد چیه؟</title>
                <link>https://virgool.io/@srezas/cold-wallet-kydqttysmuvl</link>
                <description>کیف‌پول سرد¹ به کیف‌پولی گفته می‌شه که به اینترنت و دنیای بیرون دسترسی نداره. پس هک و ویروسی نمی‌شه و از امنیت بالایی برخوردار هست.اما استفاده از این راهکار برای نگه‌داری مقادیر کم، مصداق حمل یک گاوصندوق بجای کیف‌پول توی جیبتونه! درنتیجه بهتره از این راهکار برای نگه‌داری مقادیر زیادی از بیت‌‌کوین‌هایی استفاده بشه که زیاد مورد استفاده قرار نمی‌گیره(مثلا این یک روش خوب برای نگهداری پس‌انداز بیت‌کوینی هست)هدف این مقاله توضیح کارکرد کیف‌پول سرد و نمایش چند نمونه از پیاده‌سازی اون به زبان ساده هست؛ اما به‌اندازهٔ توانم سعی کردم چیزی رو جا نندازم.‏BIP چیه؟این موضوع ارتباط زیادی به بحث اصلی نداره، اما این مقاله براساس BIP ها نوشته شده و در ادامه به چند ‌BIP اشاره می‌شه.از اونجایی که بیت‌کوین یک شبکهٔ غیرمتمرکز هست² تصمیم‌گیری‌هاش به دست یک شخص یا گروه خاص نیست؛ بلکه هر فردی می‌تونه در پیش‌رفتش مشارکت داشته باشه،مشارکتی که مورد تأیید بقیه افراد هم باشهباتوجه به گستردگی شبکه، برای جلوگیری از آشفتگی، این پیشنهادات یا ایده ها در قالب یک متن مرتب و قالب‌بندی‌شده به نام Bitcoin Improvement Proposal یا به اختصار BIP در میاد و در جای‌عمومی به‌نام مخزن گیت‌هاب BIP ها³ در معرض دید قرار می‌گیره تا درنهایت، اگر مورد تأیید عموم بود، پیاده‌سازی بشه و مورد استفاده قرار بگیره.باتوجه به گستردگی شبکه، برای جلوگیری از آشفتگی،این پیشنهادات یا ایده ها در قالب یک متن مرتب و قالب‌بندی‌شده به نام Bitcoin Improvement Proposal یا به اختصار BIP در میاد و در جای‌عمومی به‌نام مخزن گیت‌هاب BIP ها³ در معرض دید قرار می‌گیره تا درنهایت، اگر مورد تأیید عموم بود، پیاده‌سازی بشه و مورد استفاده قرار بگیره.قالب‌بندی‌شده به نام Bitcoin Improvement Proposal یا به اختصار BIP در میاد و در جای‌عمومی به‌نام مخزن گیت‌هاب BIP ها³ در معرض دید قرار می‌گیره تا درنهایت، اگر مورد تأیید عموم بود، پیاده‌سازی بشه و مورد استفاده قرار بگیره.این BIP ها از شماره ۱ شروع شدن و در حال حاضر شمارهٔ آخرین BIP‏، ۳۸۶ هست.کیف‌پول‌ها چطور کار می‌کنن؟کیف‌پول های بیت‌کوینی متشکل از دو قسمت اصلی به‌نام کلیدخصوصی⁴ و کلیدعمومی⁵ هستن...کلیدخصوصیدر اولین‌قدم برای ساخت کیف‌پول، باید یک کلید‌خصوصی که عددی بین ۱ تا ۲ به‌توان ۲۵۶ هست انتخاب کنیم. شاید باورش سخت باشه، اما در اینجا این عدد تنها چیز مورد نیاز برای دسترسی به بیت‌کوین‌های درون کیف‌پول هست⁶.اما بد به دلتون راه ندید!این عدد تقریبا برابر با ۱۰ به‌توان ۷۷ هست و تعداد اتم‌های موجود در جهان قابل روئیت برابر با ۱۰ به توان ۸۰ هست!کتاب Mastering Bitcoin⁷اگر هنوز به امنیت کلیدخصوصی ایمان نیاوردین:اگر به تعداد اتم‌های موجود در یک گرم از هیدروژن مایع، در سطح کل ایران دونه‌های برف بباره، تا ارتفاع ۴۵۰۰ متری از سطح زمین از برف پوشیده می‌شه!شیمی ۱فرایند تولید کلید خصوصی در پشت‌پرده، هنگام ساخت کیف‌پول، توسط نرم‌افزار انجام می‌شه اما حتی می‌تونید با انداختن یک سکه یا تاس، به دفعات زیاد، یک کلیدخصوصی منحصربه‌فرد بسازید!نمونه ساختن کلیدخصوصی با انداختن تاس یا سکه در کیف‌پول Blue Wallet. به این صورت که تاس یا سکه‌تون رو می‌اندازید و نتیجه رو اینجا انتخاب می‌کنیدکلید‌عمومیبعد از انتخاب کلید‌خصوصی عملاً صاحب یک کیف‌پول می‌شیم، اما برای دریافت بیت‌کوین روی کیف‌پول باید از کلیدخصوصی‌مون یک کلیدعمومی یا آدرس بسازیم⁸.کلیدهای عمومی، امروزه به روش سلسله مراتبی⁹-¹⁰ ساخته می‌شن.نمایی از نحوه کارکرد والت‌های سلسله مراتبیهمونطور که در شکل نمایش داده شده؛ از کلیدخصوصی یک کلیدعمومی رئیس ساخته می‌شه و سپس به صورت سلسله مراتبی کلیدهای عمومیِ جدید ساخته می‌شه و نکته جالب‌توجه، این هست که در هر مرحله برای ساخت کلیدهای عمومی جدید، فقط و فقط به کلیدعمومیِ والد نیازه.درضمن، فرایند ساخت کلیدعمومی، فرایندی یک‌طرفه هست؛ یعنی از کلیدخصوصی، کلیدعمومی بدست میاد اما نمی‌شه از کلیدعمومی، کلیدخصوصی رو بدست آورد. پس با خیال راحت می‌تونیم کلیدهای عمومی‌مون رو برای دریافت بیت‌کوین به اشتراک بگذاریم.انواع آدرس‌ها در شبکه بیت‌‌کویندرحال حاضر شبکهٔ بیت‌کوین از سه نوع آدرس پشتیبانی می‌کنه که هرکدوم از این آدرس‌ها کلیدعمومی رئیس مختص خودشون رو دارن. این کلیدهای عمومی رئیس به ترتیب XPUB و YPUB و ZPUB نام دارند¹⁰.‏¹⁰XPUB: آدرس‌های P2PKH¹²‏این‌نوع آدرس‌ها در شبکه بیت‌کوین قدیمی‌ترین هستن و همیشه با 1 شروع می‌شننمونه: 15e15hWo6CShMgbAfo8c2Ykj4C6BLq6Not‏¹⁰YPUB: آدرس‌های P2SH¹³این نوع آدرس‌ها قابلیت شرط‌گذاری¹⁴ دارن و نسبت به آدرس‌های قبلی، تقریبا ۲۶٪ هزینه‌ی کمتری برای دریافت بیت‌کوین نیاز دارن و همیشه با 3 شروع می‌شن.نمونه: 35PBEaofpUeH8VnnNSorM1QZsadrZoQp4N‏¹⁰ZPUB: آدرس‌های P2WPKH¹⁵این نوع آدرس‌ها در آپدیت سگویت سال ۲۰۱۷ اضافه شدن.این آدرس‌ها نسبت به نوع قبلی ۱۶٪ هزینهٔ کمتری دارن و این باعث شده کم‌هزینه‌ترین آدرس حال حاضر باشن و نسبت به بقیه بیش‌تر به کار برده بشن.این آدرس‌ها همیشه با bc1q شروع می‌شن.نمونه: bc1q42lja79elem0anu8q8s3h2n687re9jax556pccآدرس‌های تپروتی هم زیر مجموعه این نوع آدرس‌ها هستن و با bc1p شروع می‌شن.نمونه: bc1pmzfrwwndsqmk5yh69yjr5lfgfg4ev8c0tsc06eپیاده‌سازی کیف‌پول سرددر حال‌حاضر دستگاه‌های زیادی مانند کلدکارت، لجر و ... مثل آب‌خوردن برامون کیف‌پول سرد می‌سازن اما در شرایط فعلی، جدا از دسترسی محدود به این ابزار در ایران؛ در خیلی از موارد برای رسیدن به دستمون از دست چندتا واسط عبور می‌کنن. درنتیجه ممکنه در وسطای راه دستکاری بشن، کلید خصوصی‌شون لو بره یا حتی کپی برابر اصل باشن!پس با این شرایط برای اکثر ماها خرید و استفاده از این‌ها کار عاقلانه ای نیست و بهتره کیف‌پول سردمون رو، خودمون بسازیم.برای ساختن کیف‌پول سرد دو راه داریم: سخت افزار مختص به کیف‌پول سرد رو خودمون سرهم کنیم: طبیعتا این روش دانش فنی بیش‌تری می‌طلبه و ممکنه ارزون‌تر باشه؛ اما در عوض قرار نیست امنیت بیش‌تری رو در مقایسه با مورد دومِ صحیح پیاده‌سازی شده بهمون بده.با استفاده از موبایل، لپتاپ یا ... و نصب نرم‌افزارهای کیف‌پول بسازیم‌اش: این روش هم آسون‌تره و هم اگه درست پیاده‌سازی بشه، امنیتی مشابه مورد اول داره؛  اما در مقابل ممکنه گرون‌تر باشه. ما روش دوم رو در پیش می‌گیریم اما اگر درمورد روش اول کنجکاوید، این لینک‌ها خدمتتون: راهنمای آموزشی پروژه seed signer‏¹⁶ و ویدئوی یوتیوب ضیا صدر در این‌باره¹⁷برای ساخت و استفاده از کیف‌پول سرد باید ابتدا کلید خصوصی‌مون رو در یک دستگاه امن و آفلاین مثل موبایل یا لپتاپ بسازیم و نگه‌داریم. سپس از کلیدخصوصی، کلیدهای عمومی رئیس رو بدست بیاریم و به دستگاه آنلاینمون(معمولا موبایل شخصی) انتقال بدیم.دستگاه آنلاین کارش ساخت آدرس‌های جدید، ساخت تراکنش خام(در ادامه می‌بینیم)، ارسال تراکنش به شبکهٔ بیت‌کوین و از همه مهم‌تر نمایش موجودی و وضعیت کیف‌پول سردمون هست. به همین دلیل اسمش رو کیف‌پول ناظر¹⁸ می‌گذاریم.نحوه ارسال یا دریافت تراکنش با کیف‌پول سردیک تراکنش، به زبان ساده، از سه بخش تشکیل شده: ۱- ورودی¹⁹: شامل آدرس‌های مبدا هست. ۲- خروجی²⁰: شامل آدرس‌های مقصد و مقدار دریافتی هرکدام هست. ۳- امضاء²¹: شامل یک امضای دیجیتال به‌منظور اثبات مالکیت بیت‌کوین های ارسالی هست.نمونه یک تراکنش واقعی در کتاب Bitcoin And Cryptocurrency Technologies‏²⁶فرضاً شما می‌خواید ۳ تا بیت‌کوین به کیف‌پول سرد من ارسال کنید.پس من از طریق کیف‌پول ناظرم، یک آدرس می‌سازم و در اختیار شما می‌گذارم.شما ابتدا در قسمت ورودی تراکنش، آدرس خودتون که حاوی ۳.۵ بیت‌کوین هست رو وارد می‌کنید.سپس در قسمت خروجی تراکنش، آدرس من رو وارد می‌کنید و ۳ بیت‌کوین بهش اختصاص می‌دید و تراکنش رو امضا می‌کنید. پس ۰/۵ بیت‌کوین چی شد؟ خب چون واسهٔ این مقدار، آدرس دریافت کننده ای مشخص نکردید؛ به عنوان کارمزد ارسال تراکنش²⁴ پرداخت شد!حالا من می‌خوام از این ۳ تا بیت‌کوینم، ۲تاش رو به دوستم بدم.برای این منظور، آدرسی که باهاش از شما ۳ بیت‌کوین دریافت کردم رو در قسمت ورودی وارد می‌کنم.در قسمت خروجی، هم آدرس دوستم رو وارد می‌کنم و بهش ۲ بیت‌کوین اختصاص میدم و هم آدرس خودم²² رو وارد می‌کنم و ۰/۵ بیت‌کوین بهش اختصاص می‌دم.نصف باقی‌مانده بیت‌کوین هم به عنوان کارمزد پرداخت می‌شه.اما از اونجایی که کیف‌پول من به اینترنت دسترسی نداره؛ دوتا مشکل اساسی سر راهمون هست:کیف‌پولم نمی‌دونه روی چه آدرسی ۳ تا بیت‌کوین دریافت کرده. در حقیقت اصلاً روحشم از دریافت ۳ تا بیت‌کوین خبر نداره!کیف‌پولم نمی‌تونه تراکنشی که ساخته رو ارسال کنه؛ چون به اینترنت دسترسی نداره.درعوض کیف‌پول ناظرم به اینترنت متصله؛ اما اون هم چون به کلیدخصوصی دسترسی نداره نمی‌تونه تراکنش رو امضا کنه.حالا راهکار چیه؟طبق روال، برای دریافت بیت‌کوین با استفاده از کیف‌پول ناظر یک آدرس جدید می‌سازم و بیت‌کوین دریافت می‌کنم. چون کیف‌پول ناظر به اینترنت دسترسی داره سریعاً ۳ بیت‌کوین دریافت شده رو نمایش می‌ده.با استفاده از کیف‌پول ناظر، تراکنش خام(بدون امضاء²¹) می‌سازم. این تراکنش خام اسمش Partially Signed Bitcoin Transaction یا به اختصار PSBT هست²³.تراکنش خام رو به کیف‌پول سرد که به کلید‌خصوصی دسترسی داره ارسال می‌کنم و با استفاده از کلید‌خصوصی امضاش می‌کنم.تراکنش امضاء شده رو از کیف‌پول سرد به کیف‌پول ناظر ارسال می‌کنم و سپس با استفاده از اینترنت به شبکه بیت‌کوین می‌فرستم!۴ مرحلهٔ ارسال تراکنش با کیف‌پول سرد توصیه های امنیتیِ راه‌اندازی کیف‌پول سرداز دستگاه مدنظر، فقط و فقط بعنوان کیف‌پول سرد استفاده کنید.قبل از شروع کار، از ویروسی نبودن دستگاه اطمینان حاصل کنید ویا اگر مقدوره یک دستگاه نو برای این منظور تهیه کنید(مشخصات حداقلی کار رو راه می‌اندازه)تاجای ممکن دسترسی به اینترنت رو برای دستگاه سخت یا غیرممکن کنید.قبل از نصب نرم‌افزار کیف‌پول امضاء²¹ اونو بررسی کنید.دستگاه رو در جای امنی مانند گاوصندوق نگه‌‌دارید.توجه داشته باشید در خیلی از مواقع، برای سرعت بالاتر، سیستم عامل یک فایل رو کاملا پاک نمی‌کنه؛ بلکه فقط مخفیش می‌کنه.بدلیل نبود اینترنت، بهترین راه برای انتقال فایل‌ها استفاده از فلش USB هست. قبل از اتصال فلش، از ویروسی نبودنش اطمینان حاصل کنید.برای حفظ ناشناسی در دستگاه آنلاینتون از Tor یا ‌Node شخصی استفاده کنید.(نظرات شما در کامنت)خب قبل از شروع مثال‌های عملی، به چند نکته زیر توجه کنید:دستگاه‌هایی که برای کیف‌پول ناظر و سرد انتخاب می‌کنید باید(نه اینکه اجباراً ولی اکیداً تأکیداً!) مجهز به دوربین باشن تا با اسکن کیوآر کد(QR-Code) بتونید تراکنش‌هارو بینشون جابجا کنید.اگه می‌تونید، یک دستگاه نو برای این منظور تهیه کنید وگرنه حتما ویروس کشی و فرمتش کنید.در ادامه با استفاده از نرم‌افزارهای Blue Wallet و Electrum Wallet، روی موبایل و لپتاپ کیف‌پول سرد رو پیاده‌سازی می‌کنیم؛ اما با توجه به توضیحات بالا، خودتون هم می‌تونید نرم‌افزارهایی که این قابلیت رو دارن شناسایی و استفاده کنید. نرم‌افزاری که برای کیف‌پول سرد استفاده می‌شه باید قابلیت تولید کلیدهای عمومی رئیس و قابلیت امضای تراکنش‌های خام PSBT رو داشته باشه. درضمن سعی کنید از نرم‌افزارهای تست‌شده و معروف که ترجیحاً متن‌باز²⁵ هستن استفاده کنید.نرم‌افزارهایی که در ادامه برای ساختن کیف‌پول سرد به کار می‌بریم، هم قابلیت تولید کیف‌پول سرد دارن و هم کیف‌پول ناظر؛ اما اجباری نیست این دو کیف‌پول، یک نرم‌افزار باشن. مثلا می‌شه برای ساخت کیف‌پول سرد از Electrum Wallet روی لپتاپ و برای ساخت کیف‌پول ناظر از Blue Wallet روی موبایل استفاده کرد!پیاده‌سازی روی ‌‌موبایل با Blue Walletلینک تصاویر این بخش با کیفیت بالا: imgur.com/a/3Gvswjpتصاویر گرفته شده از کیف‌پول سرد با آبی کم‌رنگ و تصاویر گرفته شده از کیف‌پول ناظر با قرمز کم‌رنگ شماره‌گذاری شدن.کیفیت بالا: i.imgur.com/Zbe0nMa.pngنرم‌افزار ‌‌Blue Wallet رو از سایت اصلی دانلود کردیم و امضاش²¹ رو هم بررسی کردیم و موبایل هم کاملاً آفلاین هست. برای ساخت کیف‌پول سرد و ناظر طبق تصاویر، به ترتیب، از راست به چپ پیش می‌ریم. در ابتدا هنوز درون نرم‌افزار کیف‌پولی ایجاد نکردیم. برای ایجادش، توی صفحهٔ اصلی روی گزینهٔ Add now کلیک می‌کنیمدر این قسمت ابتدا یک اسم برای کیف‌پولمون انتخاب می‌کنیم.گزینهٔ اول ‌‌Bitcoin رو انتخاب می‌کنیم.برای ساخت کیف‌پول جدید روی گزینهٔ ‌Create کلیک می‌کنیم. اگر از قبل کیف‌پولی داریم هم می‌تونیم از گزینهٔ زیرش یعنی Import Wallet استفاده کنیم.در صفحهٔ جدید ۱۲ کلمه‌ی بازیابی کیف‌پول نمایش داده می‌شه. این کلمات رو به ترتیب یادداشت کرده و در جایی امن نگه می‌داریم.و در تصویر ۴ کیف‌پول سردمون رو می‌بینید که ساخته شده.کیفیت بالا: i.imgur.com/OiAFaqv.pngحالا باید با کلید‌عمومی رئیس، یک کیف‌پول ناظر بسازیم:برای ساخت کیف‌پول ناظر، در موبایل آنلاین مجددا در صفحهٔ اول روی Add now کلیک می‌کنیم.در این قسمت ابتدا یک اسم برای کیف‌پولمون انتخاب می‌کنیم.گزینهٔ اول ‌‌Bitcoin رو انتخاب می‌کنیم.روی گزینهٔ Import wallet کلیک می‌کنیم.در این قسمت می‌تونیم ۱۲ تا کلمه یا کلید‌عمومی رئیس رو وارد کنیم تا نرم‌افزار خودش شناسایی و بازیابیش کنه.همچنین می‌تونیم از این گزینه برای اسکن کیوآر کد استفاده کنیم.حالا بریم تا از کیف‌پول سردمون کلید‌عمومی رئیس رو بگیریم و برگردیم تا اسکنش کنیمکیفیت بالا: i.imgur.com/OMHjqKN.pngداخل کیف‌پول سرد روی سه‌نقطه بالای صفحه کلیک می‌کنیم.از این گزینه برای دریافت XPUB(در حقیقت ZPUB هست و این کیف‌پول فقط همین رو در اختیارمون می‌گذاره) استفاده می‌کنیم.در این قسمت کلیدعمومی رئیسمون رو به صورت کیوآر کد نمایش میده تا اسکنش کنیم.با کلیک روی متن کلیدعمومی رئیس هم می‌تونیم کپی‌اش کنیم اما در اینجا بخاطر عدم اتصال دو دستگاه؛ این گزینه کاربرد زیادی نداره.کیفیت بالا: i.imgur.com/VEd1ULe.pngدر تصویر ۱۱ به کیف‌پول ناظرمون بر می‌گردیم و کیوآر کد رو اسکن می‌کنیم و همونطور که می‌بینید در تصویر ۱۲ کیف‌پول ناظرمون ساخته شده و موجودیش رو هم به‌درستی نمایش داده‌شده!کیفیت بالا: i.imgur.com/ubb15lo.pngبرای ساخت آدرس در کیف‌پول ناظر، به‌راحتی روی گزینهٔ Receive کلیک می‌کنیم! اما حالا بیاین ببینیم چطور باید یک تراکنش بسازیم... در اولین مرحله، در کیف‌پول ناظر روی گزینهٔ Send کلیک ‌می‌کنیم.فقط برای اولین بار برای ارسال تراکنش این پیغام نمایش داده می‌شه که می‌پرسه: «آیا می‌خوای قابلیت ساخت تراکنش به صورت آفلاین رو فعال سازی کنی؟». در جوابش گزینهٔ بله(OK) رو انتخاب می‌کنیم.در صفحهٔ ۱۵ باید جزئیات تراکنش رو مشخص کنیم. در اولین مرحله می‌تونیم از این گزینه واحد بیت‌کوین رو تغییر بدیم. در حالت پیش‌فرض این روی یک واحد کامل بیت‌کوین هست ولی ما می‌خوایم مقدار کمی بیت‌‌کوین ارسال کنیم، پس واحد ساتوشی(SAT) رو انتخاب می‌کنیم که یک صد میلیونیوم بیت‌کوین هست!در این قسمت مقدار ۱۰۰۰ ساتوشی رو انتخاب می‌کنیم.در این‌جا آدرس مقصد رو به صورت دستی جای‌‌گذاری یا با استفاده از گزینهٔ ‌Scan می‌تونیم آدرس رو اسکن بکنیم.این قسمت صرفاً یک یادداشت اختیاری هست که در بخش تاریخچه نشون داده خواهد شد.از اینجا می‌تونیم مقدار کارمزد‌ ارسال تراکنش رو مشخص کنیم. در این نمونه، کمترین مقدار که یک ساتوشی به اضای هر بایت هست انتخاب شده. هرچه این مقدار بیشتر باشه، تراکنش سریع‌تر تأیید میشه.در پایان روی گزینهٔ ارسال کلیک می‌کنیم.در این قسمت کیوآر کد تراکنش امضا نشده(PSBT) نمایش داده می‌شه که در ادامه با استفاده از کیف‌پول سردمون امضاش می‌کنیمهمچنین می‌تونیم با استفاده از این گزینه، تراکنش PSBT رو به صورت فایل ذخیره کنیم تا هرزمانی که خواستیم امضاء و ارسالش بکنیم(تا زمانی که آدرس ذکر شده در بخش ورودی تراکنش حاوی مقدار بیت‌کوین قید شده در تراکنش باشه؛ این ‌‌تراکنش PSBT قابل استفاده هست)با این گزینه هم می‌تونیم متن تراکنش PSBT رو کپی کنیم؛ اما در اینجا بخاطر عدم اتصال دو دستگاهمون این گزینه کاربرد زیادی نداره.کیفیت بالا: i.imgur.com/PhsPZ44.pngحالا به کیف‌پول سردمون می‌آییم تا تراکنش PSBT رو با کلید خصوصی‌مون امضاء کنیم:روی گزینهٔ Send کلیک می‌کنیم.روی سه‌نقطه بالای صفحهٔ بازشدهٔ ۱۸ کلیک می‌کنیم.گزینهٔ ‌Sign a transaction رو انتخاب می‌کنیم و کیوآر کد تراکنش PSBT رو از داخل کیف‌پول ناظر اسکن ‌می‌کنیم.در صفحهٔ جدید ۲۰، تراکنش امضاء شده به صورت کیوآر کد و متن، داخل کادر سبزرنگ، نمایش داده می‌شه. همچنین اگه صفحه رو پایین‌تر بکشیم گزینهٔ ذخیره تراکنش به صورت فایل هم موجوده.کیفیت بالا: i.imgur.com/0VcDHwW.pngحالا فقط مونده تراکنش رو با استفاده از کیف‌پول ناظر و اینترنت، به شبکه بیت‌کوین ارسال کنیم:در کیف‌پول ناظر روی گزینهٔ Send کلیک می‌کنیم.این دفعه برای گرفتن تراکنش امضاء شده روی سه نقطه بالای صفحه کلیک می‌کنیم.در منوی باز شده از این گزینه به‌منظور وارد کردن فایل تراکنش امضاء شده می‌تونیم استفاده کنیم.از این گزینه هم می‌تونیم برای اسکن کردن کیوآر کد تراکنش استفاده کنیم.پیاده‌سازی روی ‌‌لپتاپ با Electrum Walletلینک تصاویر این بخش با کیفیت بالا: imgur.com/a/3Gvswjpتصاویر گرفته شده از کیف‌پول سرد با آبی کم‌رنگ و تصاویر گرفته شده از کیف‌پول ناظر با قرمز کم‌رنگ شماره‌گذاری شدن.کیفیت بالا: imgur.com/6MsppGM.pngابتدا کیف‌پول Electrum رو از سایت اصلی‌اش دانلود می‌کنیم و طبق راهنمای داخل خود سایت امضاءش رو بررسی و در نهایت روی دستگاه آفلاین(کیف‌پول سرد) و آنلاین(کیف‌پول ناظر) نصبش می‌کنیم.هنگام اجرای نرم‌افزار، فقط برای اولین‌بار این پیغام رو می‌بینید که می‌پرسه: «می‌خواید از چه سروری استفاده کنید؟» این صفحه رو به صورت پیش‌فرض باقی می‌گذاریم و روی دکمه Next کلیک می‌کنیم.اینجا باید یک اسم برای کیف‌پولمون انتخاب کنیم یا اگر از پیش یک کیف‌پول ساختیم فایلش رو با زدن دکمه ی Choose... انتخاب کنیم.بعد از انتخاب نام برای کیف‌پول، دکمه Next رو می‌زنیم.در این پنجره جدید گزینهٔ اول رو برای ساختن کیف‌پول ساده انتخاب ‌می‌کنیم.دکمه ی Next رو می‌زنیم.لینک باکیفت: imgur.com/jaLB9nD.pngدر پنجره جدید، این گزینه رو برای ساختن یک کیف‌پول جدید انتخاب ‌می‌کنیم.از این گزینه هم می‌تونیم برای بازگردانی یک کیف‌پول از قبل ساخته شده استفاده کنیم.دکمه ی Next رو می‌زنیم.در این بخش، ۱۲ کلمه ی بازیابی(کلید خصوصی) کیف‌پول رو بهمون نمایش میده که باید به ترتیب یادداشت و در جای امنی ذخیره اش کنیم.دکمه ی Next رو می‌زنیم.اینجا در پنجره ۶، باید ۱۲ کلمه رو به ترتیب وارد کنیم تا از درستی چیزی که نوشتیم مطمئن بشیم.دکمه ی Next رو می‌زنیم.در این قسمت باید یک رمزعبور امن برای دسترسی به کیف‌پول وارد و برای اطمینان از درستی رمز وارد شده یکبار دیگه تکرارش کنیم.دکمه ی Next رو می‌زنیم.لینک باکیفت: imgur.com/1svw6tO.pngکیف‌پول سردمون ساخته شد.در اینجا می‌گه: «برای حفظ امنیتتون بهتره همیشه آخرین نسخه نرم‌افزار رو نصب داشته باشید. آیا می‌خواید در صورت وجود نسخه جدیدی از نرم‌افزار بهتون اطلاع بدیم؟» ماهم گزینهٔ بله رو انتخاب می‌کنیم اما از اونجایی که این کیف‌پول به اینترنت دسترسی نخواهد داشت عملا این کار بی‌فایده هست. اما اگر می‌خواید به این توصیه عمل کنید، باید هر از چندگاهی وبسایت کیف‌پول رو چک کنید تا اگر نسخه جدیدی موجود بود؛ دانلود و امضاش رو بررسی کنید، با فلش انتقالش بدید و نصبش کنید.این دایره قرمز پایین صفحه هم یعنی این کیف‌پول به اینترنت دسترسی نداره.لینک باکیفت: imgur.com/oAQZNNV.pngحالا می‌خوایم روی دستگاه آنلاین دیگه ای با استفاده از نرم‌افزار ‌Electrum، کیف‌پول ناظر رو هم راه‌اندازی کنیم.مجددا نرم‌افزار رو با در نظر گرفتن توصیه‌های امنیتی نصب و اجرا می‌کنیم. در این قسمت اسمی برای کیف‌پول ناظر انتخاب می‌کنیم یا اگر از قبل ساختیم، با گزینهٔ Choose... فایلش رو انتخاب می‌کنیم.گزینهٔ اول رو برای ساختن کیف‌پول عادی انتخاب می‌کنیم.دکمه ی Next رو می‌زنیم.گزینهٔ سوم رو برای وارد کردن یک کلیدعمومی رئیس انتخاب می‌کنیم.دکمه ی Next رو می‌زنیم.لینک باکیفت: imgur.com/wZdIKam.pngحالا می‌خوایم کلید‌عمومی رئیس رو از کیف‌پول سردی که در مرحلهٔ اول ساختیم بگیریم و وارد کنیم:در کیف‌پول سرد، وارد سربرگ Wallet می‌شیم و گزینهٔ اول Information رو انتخاب می‌کنیم.در این قسمتِ پنجرهٔ جدید، کلیدعمومی رئیس نشون داده شده که می‌تونیم با دو گزینهٔ پایین صفحه، کپی‌اش کنیم یا پنجره کیوآر کد اش رو باز کنیم.لینک باکیفت: imgur.com/BWhQwse.pngبه کیف‌پول ناظرمون بر می‌گردیم تا کلیدعمومی رئیس رو وارد کنیم:از این دو گزینه برای اسکن کیوآر کد یا انتخاب فایل متنی حاوی کلیدعمومی رئیس استفاده می‌کنیم.دکمه ی Next رو می‌زنیم.کیف‌پول ناظر با موفقیت ساخته شد و پیغامی که نمایش داده شده می‌گه: «کیف‌پولی که ساختید، فقط یک کیف‌پول ناظر هست و نمی‌تونید باهاش بیت‌کوین خرج کنید. لطفا از داشتن ۱۲ کلمه بازیابی‌تون اطمینان حاصل کنید» و ماهم روی دکمه OK کلیک می‌کنیم.در ابتداءِ ساختن کیف‌پول ناظر، می‌بینید که در این قسمت، کیف‌پول درحال گرفتن اطلاعات تراکنش‌ها و موجودی از اینترنت هست.در نهایت در صفحهٔ ۱۶ اطلاعات تراکنش‌ها و موجودی نمایش داده می‌شه.لینک باکیفت: imgur.com/OilX2S1.pngبرای دریافت بیت‌کوین فقط کافیه وارد قسمت Receive بشیم. اما حالا می‌خوایم مرحله به مرحله نحوهٔ ساختن و ارسال تراکنش با استفاده از نرم‌افزار Electrum رو ببینیم:وارد بخش Send می‌شیم.در این قسمت آدرس مقصد تراکنش رو وارد ‌می‌کنیم.در این بخشِ اختیاری، می‌تونیم یک یادداشت برای تراکنش بنویسیم.در این قسمت مقدار بیت‌کوینی که قرار هست ارسال کنیم رو وارد می‌کنیم(واحد بیت‌کوین در این کیف‌پول به صورت پیش‌فرض mBTC یا یک‌هزارم بیت‌کوین هست. اگه بخواین می‌تونید واسه تغییرش به مسیرTools &gt; Preferences &gt; Base unit مراجعه کنید)روی دکمه ی Pay... کلیک می‌کنیم.در این قسمت مقدار کارمزدی که می خوایم برای ارسال تراکنش پرداخت کنیم رو انتخاب می‌کنیم.در نهایت روی گزینهٔ ‌‌Send کلیک می‌کنیم.لینک باکیفت: imgur.com/eUvwjb1.pngدر پنجرهٔ باز شده، ریز اطلاعات تراکنش خام ‌PSBT مثل ورودی‌ها و خروجی‌ها بهمون نشون داده می‌شه. حالا باید این تراکنش رو به کیف‌پول سرد که حاوی کلید‌ خصوصی‌مون هست ارسال و در اونجا امضاء کنیم.برای ارسال تراکنش PSBT روی گزینهٔ Export کلیک می‌کنیم. همونطور که می‌بینید سه راهِ کپی در بریده دان، نمایش کیوآر کد و ذخیره در فایل، در اختیارمون گذاشته می‌شه.لینک باکیفت: imgur.com/hM1MPON.pngبرای گرفتن تراکنش PSBT از کیف‌پول ناظر، وارد کیف‌پول سرد می‌شیم:وارد سربرگ Tools می‌شیم.وارد قسمت Load transaction می‌شیم و از طریق فایل یا جای‌گذاری و یا اسکن کیوآر کد، تراکنش رو دریافت می‌کنیم.در پنجرهٔ جدید مجددا اطلاعات تراکنش نمایش داده می‌شه و بعد از بررسی کامل، برای امضای تراکنش روی دکمه ی ‌Sign کلیک می‌کنیم.الان تراکنش در حالت امضاء شده قرار گرفته و مجدداً با کلیک روی دکمه ی Export باید اون رو به کیف‌پول ناظر بفرستیم تا از طریق اینترنت به شبکهٔ بیت‌کوین ارسالش کنیم.لینک باکیفت: imgur.com/L7Kb9WG.pngدر کیف‌پول ناظر مجددا وارد سربرگ ‌Tools می‌شیم.از طریق گزینهٔ Load transaction یکی از راه‌های دریافت تراکنش رو انتخاب و تراکنش امضاء شده رو از کیف‌پول سرد دریافت می‌کنیمدر پنجره باز شده مجددا ریز اطلاعات تراکنش رو می‌بینیم. اگر مورد تأیید بود، برای ارسال، روی دکمهٔbroadcast کلیک می‌کنیم.لینک باکیفت: imgur.com/vvDvgTp.pngخب دوستان خسته نباشید! الان دیگه کاملا با یکی از امن‌ترین روش‌های ذخیرهٔ بیت‌کوین آشنا شدید!نه فقط بیت‌کوین بلکه هر رمزارزی²⁷ که از امکانات ذکر شده پشتیبانی کنه رو می‌تونید به این روش ذخیره کنید.حالا می‌بینید که ارسال بیت‌کوین به کیف‌پول سرد تا چه‌اندازه آسون‌تر از ارسال بیت‌کوین از کیف‌پول سرد هست! پس فهمیدیم که به‌کاربردن این روش نه برای استفاده روزمره، بلکه ذخیره سازی مناسبه!اگر به این فضا علاقه‌مندید توصیه می‌کنم از همون BIP ها و لینک‌هایی که ذکر شده استارت مطالعه رو بزنید. باشد که رستگار شوید!‏Masahiro Hara سازنده‌ی  کیوآر کددونیشن:bc1qsnfs9alfadfqv0hgc7j6duga8jqqryn4apl8w2‏Cold Walletدر حقیقت بیت‌کوین متشکل از شبکه‌ای از node ها هست که به صورت P2P(نقطه به نقطه یا Point To Point) به هم متصل هستند.آدرس مخزن گیت‌هاب BIP ها‏Private Key‏Public Keyبرای امنیت مافوق زیاد می‌تونیم کیف‌پول های چندامضایی بسازیم که برای دسترسی بهشون به چندتا کلید خصوصی نیازه.کتاب Mastering Bitcoinدر حقیقت نمی‌شه از کلید‌عمومی مستقیماً به‌عنوان یک آدرس استفاده کرد. مثلا برای ساخت آدرس‌های ‌P2PKH باید ابتدا کلیدعمومی رو یکبار با SHA-256 و RIPEMD-160 هش و سپس بصورت BASE-58 رمزنگاری کنیم.‏Hierarchical Deterministic Wallet(HD Wallet)کلیدهای عمومی رئیس تحت‌عنوان مدیریت حساب‌کاربری در کیف‌پول‌ها به صورت مفصل در BIP-43 و BIP-44(XPUB) و BIP-49(YPUB) و BIP-89(YPUB) توضیح داده‌شدن.در قدیم از هر کلیدخصوصی تنها یک کلیدعمومی ساخته می‌شد. اما در BIP-32 روش HD Wallet مطرح شد که بهمون امکان ساخت کلیدهای عمومی بسیار زیادی با استفاده از یک کلیدخصوصی رو میده.‏Pay To Public Key Hash‏Pay To Script Hashهمونطور که از اسم این آدرس‌ها معلومه؛ این آدرس‌ها از هش Script ساخته میشن و این امکان رو بهمون میدن تا با استفاده از Script های بیت‌کوین شرط‌هایی مثل &quot;صاحب کلید عمومی بعد از فلان مقدار زمان، اگر یک رمز از پیش تأیین شده رو، روکنه می‌تونه این مقدار بیت‌کوین رو خرج کنه&quot;‏Pay To Witness Public Key Hashپی دی اف راهنمای آموزشی پروژه seed signerویدئوی ضیا صدر درباره معرفی seed signer‏Watch Only Wallet‏Input‏Output‏Signature یا به اختصار Sig، یک روش امن برای تایید اصالت یا مالکیت یک محتوای دیجیتال هست. در این مقاله و این مقاله، ام‌سی سعید این موضوع رو به‌خوبی توضیح میده.اسم این آدرس‌ Change Address هست و می‌تونه یکی از همون آدرس‌های وارد شده در قسمت ورودی تراکنش باشه؛ اما برای ارتقاع حریم‌خصوصی بهتره از آدرس جدیدی استفاده بشه. برای مطالعه بیشتر درمورد حریم خصوصی مقاله‌های شماره ۱، شماره ۲، شماره ۳ و شماره ۴ سامورایی والت رو بخونید.‏PSBT ها در BIP-174 مطرح شدن.‏Transaction Fee (در بازنگری نهایی، این موارد اضافه شدن. درنتیجه در انتهای لیست قرار گرفتن. از این بابت عذر می‌خوام)‏Open Sourceدوره یوتیوبی جادی از روی کتاب دانشگاه استنفورد Bitcoin and cryptocurrency technologies‏Shit Coin</description>
                <category>SReza S</category>
                <author>SReza S</author>
                <pubDate>Mon, 07 Mar 2022 22:37:53 +0330</pubDate>
            </item>
                    <item>
                <title>سریعترین روش کپی فایل با ویندوز (تو سه سوت از پروژه node بکاپ بگیر)</title>
                <link>https://virgool.io/@srezas/%D8%B3%D8%B1%DB%8C%D8%B9%D8%AA%D8%B1%DB%8C%D9%86-%D8%B1%D9%88%D8%B4-%DA%A9%D9%BE%DB%8C-%D9%81%D8%A7%DB%8C%D9%84-%D8%A8%D8%A7-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-%D8%AA%D9%88-%D8%B3%D9%87-%D8%B3%D9%88%D8%AA-%D8%A7%D8%B2-nodemodules-%D8%A8%DA%A9%D8%A7%D9%BE-%D8%A8%DA%AF%DB%8C%D8%B1-dfq7xexicx8c</link>
                <description>سلام. روی واژه ی سریعترین تعصبی ندارم ولی بهتون اعتماد میدم از سرعت و قابلیت های این دستور کامند لاینی شگفت زده بشید...آشنایی ?اسم دستور robocopy هست که بوسیله CMD ویندوز اجرا میشهپارامتر اول مسیر مبدا هست (اگر مسیر پوشه شامل کاراکتر space هم میشه باید مسیر رو بین دوتا علامت &quot; قرار بدین. مثلا &quot;D:\my folder&quot;)پارامتر دوم مسیر مقصد هست (به همون ترتیب بالا فلان فلان...)پارامتر سوم فایل/فایل‌ها ی مودنظر هست که البته توجه داشته باشید اگه خالی باشه یعنی میخواین همه فایل هارو کپی کنیداز پارامتر سوم به بعد هم اپشن های اضافی وارد میشنrobocopy &lt;source&gt; &lt;destination&gt; [&lt;file&gt;] [&lt;options&gt;]به عنوان مثال برای کپی کردن فایلی به اسم yearly-report.mov از مسیر c:\reports به آدرس d:\reports دستور زیر رو میزنیمrobocopy c:\reports d:\reports yearly-report.movآپشن ها ⚙️این دستور آپشن های خیلی زیادی داره که توی این لینک قابل مشاهده هست. ولی خب ما واسه کارهای روزمره به چندتا اپشن بیشتر نیاز نداریم که من مهم هاش رو براتون ترجمه میکنم/sزیر پوشه هارو هم کپی میکنه و اگر زیرپوشه خالی باشه نادیده گرفته میشه/eزیرپوشه هارو هم کپی میکنه و براش مهم نیست که پوشه خالی باشه یا نه/lev:_به اندازه ی _ مرحله از پوشه های داخلی رو کپی میکنه/bفایل هارو در به صورت بازگشت پذیر کپی میکنه/movفایل هارو بعد از کپی کردن پاک میکنه یا به اصلاح انتقال میده/moveفایل ها و پوشه هارو بعد از کپی کردن پاک میکنه یا به اصلاح انتقال میده/mt:_به کمک _ thread فایل هارو به صورت multi thread کپی میکنه. به صورت پیشفرض هم _ هشت thread هست/xf:_مانع کپی فایل هایی با نام _ میشه/xdمانع کپی پوشه هایی با نام _ میشه/max:_مانع کپی فایل های بزرگتر از _ بایت میشه/min:_مانع کپی فایل های کوچکتر از _ بایت میشههمونطور که گفتم تعداد آپشن ها خیلی خیلی زیاد هستن ولی من مهم هاشو گلچین کردم و مهم‌تر هاش رو ضخیم کردم ?برای بکاپ گرفتن از پروژه ها هم دستور /xd خیلی کار آمد هست؛ مثلا با استاده از این دستور میتونید مانع کپی پوشه node_modules بشین.مثلا من برای با استفاده از دستور زیر از پروژه هام که بعضاً ریکتی بود و node_modules سنگینی داشت بکاپ گرفتم:robocopy D:\projects H:\backups /e /xf node_modules /move /mt</description>
                <category>SReza S</category>
                <author>SReza S</author>
                <pubDate>Wed, 04 Nov 2020 17:57:01 +0330</pubDate>
            </item>
                    <item>
                <title>ریکت - ارتقاع پرفرمنس با جلوگیری از بارگیری بیهوده صفحات</title>
                <link>https://virgool.io/@srezas/upgrade-react-performance-2-f5hvwp4o5jza</link>
                <description>با استفاده از Route و مقدار دهی path برای ساخت مسیر های اپلیکیشنتون&lt;BrowserRouter&gt;
   &lt;Route path=&amp;quot/ask&amp;quot component={AskPage} /&gt;
&lt;/BrowserRouter&gt;با اولین بارگذاری سایت، تمام صفحه های نام برده شده از این طریق، دانلود میشن و با ورود بهشون دیگه درخواستی برای گرفتن محتوای اون صفحه ارسال نمیشه.در اپلیکیشن ها یا کامپوننت های کوچک این مورد مشکلی به وجود نمیاره ولی فرض کنید اگر اپلیکیشن ما بزرگ باشه و داخل هر صحفه چند WebApi صدا زده بشه؛ برای بارگیری اولیه سایت چقدر زمان گرفته میشه! کمااینکه مخاطب ممکنه به هیچکدوم از صفحات بارگیری شده نیازی نداشته باشه!!در ادامه بهترین روش برطرف کردن این ایراد رو بررسی میکینم...پـروژه اسـتارترپـک در یـک نـگاه :) https://gist.github.com/srezasm/1bf58886aecf04f002b4710d9f9cdee5 1. ابتدا کامپوننت AskPage رو به صورت دیفالت اکسپورت میکنیم:2. در App.js بجای ایمپورت معمولی، کامپوننت AskPage رو با استفاده از فانکشن lazy ایمپورت میکینم:توجه داشته باشید که این عبارت باید در انتهای بقیه ایمپورت ها قرار بگیره. در غیر این صورت ESLint  بهمون گیر میده!بعد اعمال تغیرات بالا ریکت تلاش میکنه AskPage رو طبق معمول در اولین بارگذاری صحفه بارگیری کنه ولی چون React.lazy این اجازه رو نمیده خطای زیر برگشت داده میشه:3. با توجه به ارور بالا Route مربوط به کامپوننت AskPage رو تغیر میدیمبا استفاده از کامپوننت React.Suspense از بارگیری کامپوننت به محض اجرای سایت جلوگیری میکنیم.اتریبیوت fallback به ما اجازه میده در هنگام لود یک کامپوننت رو نمایش بدیم که در این مثال متن Loading... نمایش داده میشه.در آخر هم کامپوننت AskPage فراخوانی میکنیم.پـروژه بعد از تغـیرات :) https://gist.github.com/srezasm/8f4b5dc5f5c7d1e362b83a503df3dc12 تسـت عملکـرد پروژه :)با اجرای پروژه فقط یک لینک که مارو به ادرس /ask هدایت میکنه قابل روئیت هست:و وقتی روی لینک کلیک میکنیم...لودینگ به نمایش در میاد و سپس ...یک درخواست از نوع GET محتویات کامپوننت AskPage رو میگیره و صفحه بروزرسانی میشهحالا بیاین یک نگاه به هدر و پریویو درخواست بندازیمدرخواست گت موفقیت آمیز با مقدار بازگشتی از نوع javascriptمحتویات فایل jsx کامپایل شده به js به همراه مقداری اطلاعات دیگهدر آخر مجددا یاد آوری میکنم؛ این مثال فقط جنبه ی نمایشی داره و همچین کاری برای لود اطلاعات کامپوننت کوچکی مثل AskPage بیهوده هست و چه بهتر که بلافاصله بعد از بارگذاری صفحه اطلاعاتش دانلود بشه!ممکنه از این مقاله ها هم خوشتون بیاد :) https://virgool.io/JavaScript8/%D8%A7%D9%86%D9%BE%DB%8C%D8%A7%D9%85npm-%D8%AF%D8%B1-1500-%DA%A9%D9%84%D9%85%D9%87-htiagsi9cnvf  https://virgool.io/@srezas/upgrade-react-performance-khoyidl1xij6  https://virgool.io/@srezas/js-tips-wp9tbm6u9xt6  https://virgool.io/@mhmda_83/15-%DA%A9%D9%84%DB%8C%D8%AF-%D9%85%DB%8C%D8%A7%D9%86%D8%A8%D8%B1-vscode-hzenvzw4zw1y منبع: کتاب Asp.net Core 3 and React از انتشارات فوق العاده Packt</description>
                <category>SReza S</category>
                <author>SReza S</author>
                <pubDate>Sun, 13 Sep 2020 16:24:27 +0430</pubDate>
            </item>
                    <item>
                <title>حرفه ای javascript کد بزن</title>
                <link>https://virgool.io/@srezas/js-tips-wp9tbm6u9xt6</link>
                <description>یادگیری نکات هیجان انگیز جدید در رابطه با یک زبان برنامه نویسی جزو کار های روزانه یک برنامه نویس پویا هست...در ادامه با نکاتی آشنا میشیم که کد جاوااسکریپمون رو کوتاه تر، حرفه ای تر و چه بسا خواناتر میکنه؛ بیاین در این مقاله خودمون رو یک قدم به حرفه ای بودن در زبان js نزدیک کنیم...1. Filter unique value https://gist.github.com/srezasm/ece88ce14f2f7a74815e422670b4a135 2. Convert to boolean https://gist.github.com/srezasm/30f98415ea14829f4a8eb45bbb964b0e 3. Convert to string https://gist.github.com/srezasm/0711ddc76bbdb5c79c467f476ec87ce1 4. Convert to int https://gist.github.com/srezasm/4222c98e7fd26d7ff2978c0256340f0f 5. Convert float to int https://gist.github.com/srezasm/c178663a5554c6f7280f8bd53d556d37 6. Remove last digits https://gist.github.com/srezasm/279f610b3c4d5dfa05ca24e0a5d1cc16 7. Truncate an array https://gist.github.com/srezasm/2d5884d01a8f9c9ea39fc73a98d8dcc5 8. Last item in array https://gist.github.com/srezasm/c3bef007701c93772ba9932bc2a019fe سپاس از شما که تا اینجای کار با من همراه بودین.ممنون میشم اگر دیگر مقاله های آموزشی من در زمینه برنامه نویسی و ... رو هم مشاهده کنید ? https://virgool.io/@srezas/open-windows-terminal-here-b4iqkrklnveu  https://coderlife.ir/upgrade-react-performance-khoyidl1xij6  https://virgool.io/@srezas/dark-mode-rz8qydhvfsoc مـنـبــع: https://www.instagram.com/javascriptmastery</description>
                <category>SReza S</category>
                <author>SReza S</author>
                <pubDate>Sun, 06 Sep 2020 18:36:31 +0430</pubDate>
            </item>
                    <item>
                <title>تم تاریک برای اپلیکیشن های پرکاربرد</title>
                <link>https://virgool.io/@srezas/dark-mode-rz8qydhvfsoc</link>
                <description>میدونم که خیلیا مثل من علاقه شدیدی به تم دارک(دارک مود) دارن پس بر این تصمیم شدم که مقاله ی آموزشی ای برای تاریک کردن تم برنامه های پر کاربرد بنویسم.ویندوز 10 وارد setting ویندوز میشیمبه بخش personalization میریماز قسمت choose your color گزینه ی Dark رو انتخاب میکنیممرورگر هاافزونه Dark Reader که توسط مرورگر های محبوب پشتیبانی میشه یکی از بهترین گزینه ها برای تاریک کردن تم تمامی صفحات وب هست و از لینک های زیر میتونین روی مرورگرتون نصبش کنین.Google ChromefirefoxSafariEdgeاین افزونه یکسری شخصی سازی ها هم داره که مال من به این شکل هست: دانلود منیجر IDMتم تاریک به تازگی به IDM اومده(تا جایی که من اطلاع دارم) و برای اعمالش لازمه که نسخه بروزش رو نصب کنین.از من نشنیده بگیرین ولی اگر نگران کرکش هستین توی سایت سافت98 اخرین نسخه به همراه کرکش موجوده.حالا که نرم افزار Internet Download Manager رو به صورت قانونی روی سیسمتون راه اندازی کردین از منوی View گزیه ی Dark Mode Support رو بزنین:تلگراماگه الان که دارین این مقاله رو میخونین هنوز شبکه های اجتماعی خارجی غیر قانونی نشده؛ تا وقتی که قراره بشه لا اقل از تم دارکش لذت ببریم.احتمالا مستحضرید تا بحال برای تلگرام تم های خیلی زیادی متشر شده که برای اندروید در چنل AndroidThemes و برای ویندوز هم در چنل themes قرار داره ولی من Yandex Dark رو خیلی میپسندم.ویژوال استودیو کد Vs Codeاین ادیتور خفن چون متن باز یا open source هست برای هر بخشش افزونه های زیادی داره که مشخصا قالبش هم از این قائده مستثنی نیست. تنها کاری که باید بکنید اینه که با ctrl+shift+X بخش مربوط به اکستنشن هارو باز کنین و عبارت theme رو جستجو کنید.از بین این تم ها بنظر من پر نصب ترینش بهترینش هم هست و اسمش Atom One Dark Theme هست و با نصبش خود به خود روی ویرایشگر اعمال میشه ولی برای امتحان کردن بقیه تم ها هم میتونید با زدن میانبر ctrl+shift+P عبارت color theme رو وارد کنین و بقیه تم هارو هم امتحان کنید.حالا که حرف از تم شد افزونه ی Material Icon Theme هم ظاهر زیبایی به قسمت فایل های ادیتور میده ?نرم افزار Foxit Readerاین نرم افزار محبوب که برای خواندن کتاب های الکترونیکی هست هم مشمول طرح تاریک سازی اپلیکیشن ها میشه?برای تنظیم تم تاریک برای خود نرم افزار (صرفا حاشیه های صفحه) وارد تب File میشیم و از منوی سمت چپ گزینه ی Change Skin رو انتخاب میکنیم.ولی اگر به دنبال تاریک کردن خود کتاب الکترونیکی هم هستین مسیر زیر رو دنبال کنید:تب Fileگزینه ی Preferences از منوی سمت چپدر قسمت Accessibility (به صورت پیشفرض توی نوار سمت چپ انتخاب شده) گزینه ی Custom Color رو انتخاب میکنیمحالا برای تغیر رنگ پس زمینه ی کتاب الکترونیکی روی کادر رنگی جلوی عبارت Page Background کلیک میکنیم تا پنجره ی انتخاب رنگ دلخواه برامون باز بشهبه همین ترتیب مرحله بالا برای تغیر رنگ متن هم روی کادر رنگی جلوی عبارت Document Text کلیک میکنیممن تنظیمات رنگ فوق رو با تم دارک Visual Studio Code هماهنگ کردم و رنگ هارو به این صورت انتخاب کردم:Page BackgroundDocument Textو نتیجه ی کار هم این شده:خب سپاس از شما که مقاله ی منو رو خوندید و اگر از مطالبش لذت بردین بلایکید و حتما با دوستانتون هم به اشتراگ بگذارید ??خیلی خوشحال میشم اگر نرم افزار دیگه ای هم مدنظرتون هست توی قسمت نظرات عنوان کنید تا به این مقاله اضافه کنم.تا درودی دیگر بدرود</description>
                <category>SReza S</category>
                <author>SReza S</author>
                <pubDate>Mon, 31 Aug 2020 13:43:25 +0430</pubDate>
            </item>
                    <item>
                <title>ریکت - ارتقاع پرفرمنس با جلوگیری از رندر بیهوده کامپوننت ها</title>
                <link>https://virgool.io/@srezas/upgrade-react-performance-khoyidl1xij6</link>
                <description>یک کامپوننت ریکتی زمانی rerender (تازه سازی) میشه که state یا prop (پراپرتی) هاش تغیر کنن و همچنین در نظر داشته باشید که فرزندها هم هنگام تازه سازی کامپوننت پدر تازه سازی میشن پس در نتیجه تغیر یک استیت یا پراپ میتونه برامون گرون تموم بشه اگر کامپوننت پدر شامل تعداد زیادی فرزند دارای تعداد  زیادی فرزند باشه که هرکدوم تعداد زیادی المنت رو برمیگردونن یا ...برای بررسی عملی این موضوع خیلی سریع یک پروژه ریکت میسازیمالبته شما میتونید نسازید و فقط آموزش رو دنبال کنیدصد البته اگرم از جریان تازه سازی شدن کامپوننت فرزند همراه با کامپوننت پدر سر در میارید یکراست به قسمت برطرف کردن مشکل و راهنمای مصرف بریدشگفتا... اگر میخواین بدونین چطور ویندوز ترمینال رو به این صورت باز کنین یه سری به آموزشش توی لینک زیر بزنید ? https://vrgl.ir/A4WC7بسیار عالی حالا پروژه رو با visual studio code باز میکنیم و کامپوننت Image.jsx رو با محتوای زیر میسازیماگر شما کامپوننت هارو به صورت کلاسی هم بنویسید هیچ اشکالی ندارهبا این اوصاف به اضای هر بار رندر شدن این کامپوننت یک دفعه عبارت rendering this component توی پنجره کنسول مرورگر نوشته میشهحالا نیاز داریم که کامپوننت Image رو جایی فراخوانی کنیم؛ پس به سراغ App.js میریم و تغیرات زیر رو اعمال میکنیمخب این کامپوننت نقش یک سایت دانلودی رو برامون بازی میکنه و صد البته برای پیشبرد مثالمون یک استیت به اسم count داره که با هربار کلیک روی لینکمون یکی به مقدارش اضافه میشه. پس با هربار تغیر در استیت، این کامپوننت یکبار رندر میشهخب بیاین باهم این پروژه رو تست کنیم و به نتیجه های جالب برسیم:خب همونطور که انتظار میرفت بعد رندر شدن کامپوننت Image پیغامی که تنظیم کرده بودیم توی پنجره کنسول قابل دیدن هست.حالا بیاین (گول بخوریم و) روی لینک پایین صفحه کلیک کنیم تا یکی به مقدار استیت count اضافه بشهمیبینید که با هربار کلیک روی لینک نه تنها (چندتا تبلیغ بهمون نشون میده) کامپوننت والد (App) دوباره رندر میشه و عبارت I just showed you some adds رو مینویسه بلکه کامپوننت فرزند (Image) رو هم یکبار دیگه رندر میکنه (چون همونطور که توی قسمت قبل دیدیم با هر بار رندر شدنش عبارت rendering this component نوشته میشه)برطرف کردن این مشکلبه کامپوننت فرزند برید و فانکشن memo رو از پکیج react واکشی کنیدimport { memo } from &#039;react&#039;;و حالا به اصطلاح این فانکشن memo رو دور کامپوننت میپیچیم:دادام.. حالا دیگه با همین کار ساده از rerender شدن کامپوننت فرزند همراه با والدش جلوگیری میکنیمدرحقیقت فانکشن memo تظمین میکنه که کامپوننتمون فقط با تغیر پراپرتیش دوباره رندر بشهراهنمای مصرفخب پس حالا که به این راحتیاس بریم و همه ی کامپوننت هامون رو توی فانکشن ممو بپیچیم دیگه؟ نخیر! ممو ی عزیز هم از نظر پرفرمنسی برای خودش جایگاهی داره و اگر کامپوننتمون قرار نباشه کار نسبتا سنگینی انجام بده نه تنها استفاده از ممو کار بیهوده ای هست بلکه باری رو هم از نظر پرفرمنسی روی دوش سایتمون میزاره. پس در نتیجه باید از ممو با احتیاط و تحت شرایط زیر استفاده بشهکامپوننت والد بازدهی یکسانی در اضای مجموعه ای از مقادیر دریافتی(پراپرتی ها) دارهکامپوننت والد زیاد رندر میشهکامپوننت قراره تعداد زیادی المنت ها و کامپوننت های زیر مجموعه رو برگشت بدهعملیات زمان بری توی کامپوننت اجرا میشه مثل استفاده از Api و ...منبع: کتاب Asp.net Core 3 and React از انتشارات فوق العاده Packtمطالعه ی عمیق تر موضوع: https://reactjs.org/docs/hooks-state.html  https://reactjs.org/docs/react-api.html#reactmemo </description>
                <category>SReza S</category>
                <author>SReza S</author>
                <pubDate>Tue, 25 Aug 2020 21:54:17 +0430</pubDate>
            </item>
                    <item>
                <title>راحت ترین روش دسترسی به windows terminal!</title>
                <link>https://virgool.io/@srezas/open-windows-terminal-here-b4iqkrklnveu</link>
                <description>حتما خیلیاتون درمورد windows terminal شنیدید که مدت زیادی هم نیست که نسخه نهایی (preview) اش در اومده و داخل فروشگاه مایکروسافت در دسترس هست.اگر تا حالا نصبش نکردین حتما و حتما نصبش کنید و از قابلیت های جذابش استفاده کنیدپس بی درنگ میریم سراغ اضافه کردن قابلیت Open Terminal Here به منوی راست کلیکدر حالت عادی برای اضافه کردن همچین قابلیت هایی به صورت دستی باید رجیستری ویندوز رو دستکاری کنیم ولی شخصی در گیت هاب برای راحت تر شدن کار ما اسکریپتی نوشته که همه این کار هارو به صورت خودکار انجام میده و تنها کاری که ما باید بکنیم آماده کردن پیش نیاز ها هست :)1. نرم افزار windows terminal رو از فروشگاه مایکروسافت دانلود میکنیم2. به ریپوزیتوری گیت هاب اسکریپ میریم و روی گزینه دانلود فایل زیپ پروژه کلیک میکنیماگه صحفه گیت ها شما تاریک نبود نگران نباشید. من افزونه ی Dark Reader رو روی کرومم دارم که اگر طرفدار تم دارک هستین بهتون اکیدا پیشنهادش میکنم3. حالا نیاز داریم که برای اجرای این اسکریپت PowerShell 7 رو روی سیستممون نصب کنیماگر کاربر ویندوز هستین این لینک رو دانلود کنین وگرنه نسخه مدنظرتون رو توی لیست پایین پیدا کنید.لیست لینک های دانلود: https://github.com/PowerShell/PowerShell/releases/tag/v7.0.3⛔️ توجه کنید که پاورشل پیشفرض روی ویندوز با اینی که باید نصب کنیم فرق داره!! ⛔️ 4. خب حالا PowerShell 7 رو به صورت Run As Administrator باز کنین و به ادرس پوشه ای که فایل زیپ اسکریپت رو اکسترکت کردین بریندستور باز کردن یک ادرس با PowerShell:cd [folder name]                                                                                                                                                                    cd D:\windowsterminal-shell-master\5. حالا که به پوشه مدنظر رفتیم دوتا راه داریم. اگر نسخه های قبل از preview این اپلیکیشن (windows terminal) رو نصب کردین باید برای اجرای اسکریپت این دستور رو اجرا کنید:./install.ps1ولی اگر نسخه ی پریویو به بعد رو نصب کردین باید این دستور رو اجرا کنید:./install.ps1 -prereleaseنحوه حذف کردن این آپشن هاحذف نسخه های قبل از پریویو این دستور رو میطلبه:./uninstall.ps1و حذف نسخه پریویو هم این دستور:./uninstall.ps1 -prereleaseتنظیم نحوه نمایش Open Windows Terminal Hereاگر دنبال تنظیم نحوه نمایش این اپشن ها هستین سازنده این اسکریپت سه تا گزینه برای اینکار تدارک دیده1. حالت default که به صورت پیشفرض نصب میشه و نیازی به دستور اضافه ای نداره 2. حالت mini که دیگه نمیشه داخلش مشخص کرد کدوم ترمینال رو در قالب windows terminal باز کنیمنحوه نصبش:   قبل از پریویو:./install.ps1 mini    پریویو:./install.ps1 mini -prerelease3. حالت flat که همه ترمینال هایی که داخل windows terminal کانفیگ کردیم رو یکراست به منو ی راست کلیکمون اضافه میکنهنحوه نصبش:   قبل از پریویو:./install.ps1 flat    پریویو:./install.ps1 flat -prereleaseمنابع:https://github.com/microsoft/terminalhttps://github.com/lextm/windowsterminal-shellhttps://github.com/lextm/windowsterminal-shell/issues/33https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-7https://github.com/PowerShell/PowerShell/releases/tag/v7.0.3</description>
                <category>SReza S</category>
                <author>SReza S</author>
                <pubDate>Fri, 14 Aug 2020 07:20:27 +0430</pubDate>
            </item>
                    <item>
                <title>راحت ترین راه فشرده سازی فایل در Visual studio</title>
                <link>https://virgool.io/@srezas/visual-studio-minification-t3ulfziemdry</link>
                <description>سلام دوستان گلم. خواستم با یک افزونه خفنی که خودم خیلی باهاش حال کردم آشناتون کنم...حتما خیلیاتون موقع پابلیش پروژه روی هاست یا قبل ترش به فکر یک راه حل مناسب و صد البته راحت برای فشرده سازی فایل کتابخونه (library) هایی که داخل پروژتون استفاده کردین افتادین.خب وقتش رسیده با وبسایت های magnifier و اضافه کردن دستی فایل ? خداحافظی گرمی داشته باشین چون برای اینکار یک راه حل خیلی ساده و منطقی وجود داره...1. ویژوال استودیو تون رو باز کنید و از سربرگ Extensions زیرمجموعه ی Manage Extensions رو انتخاب کنید2. به بخش Online داخل پنجره ی باز شده برید3. عبارت Bundler &amp; Minifier رو جستجو کرده و روی دکمه ی دانلود کلیک کنید4. حالا تنها کاری که مونده اینکه Visual Studio رو ببندید و منتظر عملیات modify بمونید و دوباره بازش کنین!از این به بعد میتونید داخل Solution Explorer روی فایل هایی با پسوند های js, css, html ... راست کلیک کنید و روی گزینه ی Bundler &amp; Minifier و سپس Re-bundle File کلیک کنید یا بعد از سلکت فایل موردنظرتون دکمه های میانبر Shift+Alt+F رو بفشارید ?حالا خبر خوب اینکه به لطف Visual Studio عزیز فایل فشرده شده زیرمجموعه ی فایل اصلی میشه ?و خبر خوب تر اینکه بعد از ویرایش فایل اصلی، فایل فشرده هم ویرایش میشه! ?اگر با این مقاله حال کردین حال دوستاتون رو هم خوب کنیندر آخر ممنون میشم که به اینستاگرام و گیتهاب بنده هم سری بزنید ?</description>
                <category>SReza S</category>
                <author>SReza S</author>
                <pubDate>Wed, 11 Mar 2020 14:08:10 +0330</pubDate>
            </item>
            </channel>
</rss>