در جاوا اسکریپت برای انجام کارهای مختلف، روشهای گوناگونی وجود دارند. در این نوشته به روشهای متفاوتی میپردازیم که میتوان یک آرایه را در جاوا اسکریپت Clone کرد.
از زمانی که استاندارد ES6 معرفی شده است؛ عملگر Spread پراستفادهترین گزینه محسوب میشود. این روش ساختار خلاصهای دارد و در مواردی که از کتابخانهای مانند React و Redux استفاده میکنید بسیار مفید خواهد بود:
نکته: در این روش امکان کپی آرایههای چندبعدی وجود ندارد و مقادیر آرایه/شیء به جای کپی «با مقدار» (By Value) با روش «با ارجاع» (by Reference) کپی میشود. بنابراین کد زیر صحیح است:
اما کد زیر درست نیست:
با توجه به رواج برنامهنویسی تابعی در این روزها، این روش احتمالاً از کمترین اقبال برخوردار است. در هر صورت این روش چه به صورت محض یا غیر محض، و چه به صورت اعلانی یا دستوری کار خود را به انجام میرساند.
نکته: این روش آرایههای چندبعدی را به طور امنی کپی نمیکند. از آنجا که در این روش از عملگر = استفاده میشود، اشیا/آرایهها به جای روش «با مقدار» به صورت «با ارجاع» انتساب خواهند یافت.
کد زیر صحیح است:
اما کد زیر نادرست است:
همان مطالبی که در مورد قبل در خصوص حلقه ()for گفتیم، در مورد این روش نیز صدق میکند:
نکته: در این روش نیز اشیا/آرایهها به جای «با مقدار» به صورت «با ارجاع» انتساب مییابند.
کد زیر صحیح است:
کد زیر صحیح نیست:
امروزه و در روزگار مدرن با تابع map سر و کار داریم. ریشههای این تابع به ریاضیات بازمیگردد، چون «نگاشت» (map) به مفهوم تبدیل یک مجموعه به نوع دیگری از مجموعه، در عین حفظ ساختار گفته میشود. به زبان ساده Array.map هر بار یک آرایه با طول یکسان بازگشت میدهد.
برای دوبل کردن یک فهرست اعداد میتوان از map به همراه double استفاده کرد:
از آنجا که مقاله ما در مورد کلون کردن است، برای ایجاد کپی تکراری از یک آرایه کافی است آن عنصر را در یک فراخوانی map بازگشت دهیم.
اگر دوست دارید این توضیح را به زبان ریاضیاتی بشنوید، باید بگوییم که تابع زیر:
(x) => x
یک تابع همانی است که هر پارامتری به آن داده شود آن را بازگشت میدهد. بنابراین (map(identity موجب کلون شدن یک آرایه میشود.
نکته: در این روش نیز اشیا/آرایهها به جای روش «با مقدار» به صورت «با ارجاع» انتساب خواهند یافت.

این تابع دقیقاً مانند map یک آرایه بازگشت میدهد؛ اما تضمینی وجود ندارد که آرایه بازگشتی طول مشابهی داشته باشد. برای نمونه در کد زیر اگر اعداد زوج را فیلتر کنیم چه اتفاقی میافتد؟
آرایه ورودی طولی برابر با 3 دارد؛ اما طول آرایه حاصل 1 است. اگر گزاره فیلتر شما همواره مقدار true بازگشت دهد، همیشه یک کپی تکراری از آرایه اصلی به دست میآورید:
هر عنصر که تست را بگذراند، در خروجی آرایه بازگشت مییابد.
نکته: در این روش نیز اشیا/آرایهها به جای روش «با مقدار» به صورت «با ارجاع» انتساب مییابند.
با این که این روش برای کلون کردن یک آرایه چندان مناسب نیست؛ اما برای این که فهرستمان کامل باشد این گزینه را معرفی میکنیم. واقعیت این است که reduce قویتر از آن است که صرفاً برای کلون کردن یک آرایه استفاده شود:
Reduce همچنان که روی یک لیست حلقهای تعریف میکند، یک مقدار اولیه را تبدیل میکند. در این روش مقدار اولیه یک آرایه خالی است که آن را با به تدریج با عناصر لیست پر میکنیم. این آرایه باید از تابع بازگشت پیدا کند تا در تکرار بعدی استفاده شود.
نکته: در این روش نیز اشیا/آرایهها به جای روش «با مقدار» به صورت «با ارجاع» انتساب مییابند.
Slice یک کپی سطحی از یک آرایه بر مبنای اندیس آغازین/انتهایی ارائه شده بازمیگرداند. اگر 3 عنصر نخست را بخواهیم به صورت زیر عمل میکنیم:
اگر بخواهیم همه عناصر را داشته باشیم، باید هیچ پارامتری ندهیم:
نکته: این روش یک کپی سطحی ایجاد میکند و از این رو در این روش نیز اشیا/آرایهها به جای روش «با مقدار» به صورت «با ارجاع» انتساب مییابند.
JSON.stringify یک شیء را به صورت یک رشته درمیآورد. JSON.parse یک رشته را به صورت یک شیء درمیآورد. ترکیب کردن آنها باعث میشود که یک شیء به یک رشته تبدیل شود. سپس این فرایند معکوس شود تا یک ساختار داده کاملاً جدید ایجاد شود.
نکته: این روش برای کپی کردن عمیق اشیا/آرایههای تودرتو به روش امن مناسب است.
concat آرایهها را با مقادیر و یا دیگر آرایهها ترکیب میکند.
اگر هیچ چیز ارائه نشود یا یک آرایه خالی داده شود، یک کپی سطحی بازگشت مییابد:
نکته: در این روش نیز اشیا/آرایهها به جای روش «با مقدار» به صورت «با ارجاع» انتساب مییابند.
این روش موجب میشود که هر شیء تکرارپذیر به یک آرایه تبدیل شود. با ارائه یک آرایه، یک کپی سطحی از آن بازگشت مییابد.
نکته: در این روش نیز اشیا/آرایهها به جای روش «با مقدار» به صورت «با ارجاع» انتساب مییابند.
امیدواریم از مطالعه این مطلب لذت برده باشید. در این مقاله تلاش کردیم روشهای مختلف کلون کردن آرایه را در یک گام توضیح دهیم. با این وجود، اگر بخواهید از ترکیب متدها و تکنیکهای مختلف استفاده کنید، بدیهی است که روشهای بسیار بیشتری وجود دارد.
https://blog.faradars.org/how-to-clone-an-array-in-javascript/
در این راهنمای مقدماتی با روش تشخیص وجود چند کلمه درون یک رشته متنی (String) آشنا میشویم. بدین منظور الگوریتمهای یافتن کلیدواژه در یک رشته را در زبان جاوا طراحی و بررسی خواهیم کرد.
فرض کنید رشته زیر را داریم:
وظیفه ما این است که ببینیم آیا inputString شامل کلمات hello و Baeldung است یا خیر؛ بنابراین کلیدواژههای خود را در یک آرایه قرار میدهیم:
به علاوه، ترتیب کلمات نیز مهم نیست و نوع مطابقت با در نظر گرفتن حروف کوچک/بزرگ است.
در آغاز، روش استفاده از متد ()String.contains برای رسیدن به هدف خود را بررسی میکنیم. به این منظور باید حلقهای روی آرایه کلیدواژهها تعریف کنیم و رخداد هر آیتم را درون inputString بررسی کنیم:
متد ()contains در صورتی مقدار true بازگشت میدهد که رشته inputString شامل آیتم مفروض باشد. هنگامی که هیچ کدام از کلیدواژهها درون رشته نباشد، میتوانیم فرایند کار را متوقف کرده و بیدرنگ مقدار false بازگشت دهیم. علیرغم این واقعیت که نیاز به نوشتن کد بیشتر وجود دارد، این راهحل برای کاربردهای ساده سریع است.
همانند راهحل مطرح شده در بخش قبلی میتوان اندیسهای کلیدواژهها را با استفاده از متد ()String.indexOf نیز بررسی کرد. به این منظور باید یک متد داشته باشیم که inputString و فهرستی از کلیدواژهها را بپذیرد.
متد ()indexOf اندیس هر واژه را درون inputString بازگشت میدهد. هنگامی که کلمه مورد نظر در متن نباشد، اندیس برابر با 1- خواهد بود.
روش دیگری که برای نیل به مقصود مطرح شده در ابتدای این مطلب میتوان به خدمت گرفت، استفاده از «عبارتهای منظم» (Regular Expressions) برای تطبیق کلمهها است. به این منظور از کلاس Pattern استفاده میکنیم.
ابتدا عبارت رشتهای را تعریف میکنیم. از آنجا که باید دو کلیدواژه را تطبیق دهم، ابتدا باید قاعده regex را با دو چشمانداز بسازیم:
در مورد کاربرد عمومی میتوان از کد زیر استفاده کرد:
سپس از متد ()matcher برای پیدا کردن رخدادهای کلیدواژه استفاده میکنیم:
اما عبارتهای منظم هزینه عملیاتی بالایی دارند اگر بخواهیم به دنبال چند واژه بگردیم، عملکرد این راهحل ممکن است بهینه نباشد.
روش دیگری که بررسی میکنیم API مربوط به Stream در جاوا 8 است. اما قبل از آن باید مقداری تبدیل جزئی روی دادههای اولیه خود اجرا کنیم:
اینک نوبت آن رسیده است که از Stream API استفاده کنیم:
عملیات فوق در صورتی مقدار true بازگشت میدهد که رشته ورودی شامل همه کلیدواژهها باشد. به طور جایگزین میتوان از متد ()containsAll فریمورک Collections برای رسیدن به نتیجه مطلوب نیز استفاده کرد:
با این وجود، این متد صرفاً در مورد کلمات کامل عمل میکند. بنابراین تنها در صورتی میتواند کلیدواژههای مورد نظر را پیدا کند که در متن مربوطه با فاصله از کلمات دیگر جدا شده باشند.
الگوریتم Aho-Corasick به بیان ساده برای جستجوی متن با چند کلیدواژه طراحی شده است. پیچیدگی زمانی این الگوریتم (O(n ارتباطی با تعداد کلیدواژههایی که جستجو میشوند و یا طول متنی که قرار است جستجو شود ندارد.
ابتدا باید وابستگی الگوریتم Aho-Corasick را در فایل pom.xml خود ذکر کنیم:
سپس درخت پیشوندی (Trie) را با آرایهای از کلمات کلیدواژهها میسازیم. به این منظور از ساختار داده Trie استفاده میکنیم:
پس از آن متد parser را با متن inputString فراخوانی میکنیم که میخواهیم کلیدواژهها را در آن بیابیم و نتایج را در مجموعه emits ذخیره میکنیم:
در نهایت اگر نتایج خود را پرینت کنیم:
در مورد هر کلیدواژه موقعیت آغازین کلیدواژه در متن، موقعیت انتهایی و خود کلیدواژه را خواهیم دید:
در نهایت پیادهسازی کامل به صورت زیر خواهد بود:
در این مثال، ما تنها به دنبال کلمات کامل هستیم. اما اگر بخواهیم نه تنها inputString بلکه helloBaeldung را نیز تطبیق بدهیم، باید خصوصیت ()onlyWholeWords را از محاسبات سازنده Trie حذف کنیم.
به علاوه به خاطر داشته باشید که ما عناصر تکراری را نیز از مجموعه emits حذف کردهایم، چون ممکن است چند مورد مطابقت از کلیدواژه یکسان وجود داشته باشند.
در این مقاله با روشهای مختلف یافتن چند کلیدواژه در یک رشته در زبان برنامهنویسی آشنا شدیم. به علاوه مثالهایی را با استفاده از JDK مرکزی و همچنین کتابخانه Aho-Corasick ارائه کردیم. برای مشاهده کدهای کامل این مقاله میتوانید به این ریپوی گیتهاب (+) مراجعه کنید.
https://blog.faradars.org/check-if-a-string-contains-multiple-keywords-in-java/
در زبانهای برنامهنویسی مختلف از حلقهها برای تکرار یک بلوک خاصی از کد استفاده میشود. در این راهنما با روش ایجاد حلقه for در زبان برنامه نویسی ++C با ارائه مثال آشنا میشویم. اجرای حلقهها تا زمانی که شرط خاصی برقرار بشود ادامه مییابد. سه نوع حلقه در زبان برنامهنویسی ++C وجود دارند:
برای مطالعه قسمت قبلی این مجموعه مطلب آموزشی میتوانید روی لینک زیر کلیک کنید:
در قطعه کد زیر ساختار کلی یک حلقه for در ++C ارائه شده است:
در کد فوق تنها جزء testExpression اجباری است.
Enter a positive integer: 5 Factorial of 5 = 120
در این برنامه از کاربر خواسته میشود که یک عدد صحیح مثبت وارد کند که در متغیر n ذخیره میشود. فرض کنید کاربر مقدار 5 را وارد میکند. طرز کار عملی حلقه for چنین خواهد بود:
در برنامه فوق متغیر i در خارج از حلقه for استفاده نمیشود. در چنین مواردی بهتراست این متغیر را درون حلقه for (در گزاره مقداردهی) اعلان کنیم.
برای مطالعه قسمت بعدی این مجموعه مطلب آموزشی میتوانید روی لینک زیر کلیک کنید:
آدرس دهی لایه ۳ شبکه، یکی از وظایف اصلی لایه شبکه محسوب میشود. آدرسهای این شبکه همواره منطقی هستند، یعنی آدرسهایی بر مبنای نرمافزار هستند و میتوان با پیکربندی مناسب آنها را تغییر داد.
آدرس شبکه معمولاً به یک میزبان یا گره و یا سرور اشاره میکند. همچنین آدرس میتواند نشان دهنده کل یک شبکه باشد. آدرس شبکه همواره روی کارت اینترفیس آن پیکربندی میشود و عموماً روی آدرسهای MAC سیستم مورد نگاشت قرار میگیرد. آدرسهای MAC در واقع آدرسهای سختافزاری یا آدرسهای لایه 2 ماشین هستند که برای ارتباط در لایه 2 استفاده میشوند.
انواع مختلفی از آدرسهای شبکه با عناوین IP ،IPX و AppleTalk وجود دارند که البته در این نوشته صرفاً IP را برسی میکنیم، چون تنها گزینهای است که عملاً امروزه استفاده میشود.
آدرسدهی IP سازوکاری برای ایجاد تمایز بین میزبانها و شبکه فراهم میسازد. از آنجا که آدرسهای IP به روش سلسله مراتبی تخصیص مییابند، میزبان همواره تحت شبکه خاصی قرار میگیرد. میزبانی که نیاز به ارتباط با خارج از subnet خود دارد، میبایست آدرس شبکه مقصد را که بسته یا دادهها به آنجا ارسال میشوند بداند.
میزبانها در subnet-های مختلف به سازوکاری برای یافتن موقعیت همدیگر نیاز دارند. این کار از طریق DNS صورت میگیرد. DNS سروری است که آدرس لایه 3 میزبان ریموت را که روی نام دامنه یا FQDN تنظیم شده است ارائه میکند. هنگامی که یک میزبان آدرس لایه 3 (یعنی آدرس IP) را از میزبان ریموت اخذ میکند، همه بستههایش را به «گیتوی» (Gateway) آن ارسال میکند. گیتوی روتری است که اطلاعات موردنیاز برای مسیریابی بستهها به سمت میزبان مقصد را در اختیار دارد.
روترها از جدولهای مسیریابی بهره میگیرند که حاوی اطلاعاتی در مورد روش رسیدن به شبکه هستند. روترها به محض دریافت یک درخواست فوروارد کردن، بستهها را به hop (روتر مجاور) در مسیر مقصد فوروارد میکنند. روتر بعدی در طول مسیر نیز همین کار را تکرار میکند تا این که بستههای داده به مقصد خود برسند.
آدرس شبکه میتواند یکی از حالتهای زیر را داشته باشد:
روتر هرگز به صورت پیشفرض ترافیک را به روش Broadcast فوروارد نمیکند. ترافیک Multicast از تدابیر خاصی استفاده میکند، چون غالباً یک جریان ویدئویی یا صورتی با اولویتبندی بالا است. Anycast حالتی شبیه به Unicast دارد؛ به جز این در صورت وجود چند مقصد، بستهها به نزدیکترین مقصد تحویل میشوند.
منبع: فرادرس
ویژوال استودیو کد یک IDE از محصولات مایکروسافت و همزمان یکی از بهترین ویرایشگرهای رایگان متن حال حاضر است. این IDE مجموعه کاملی از سهولت نسبی استفاده و عملکرد را ترکیب کرده است که به عنوان یک اپلیکیشن Electron کاملاً شگفتانگیز است. به جز مواردی که ذکر کردیم، یکی از دلایلی که افراد عاشق VS Code میشوند، قابلیت توسعهپذیری آن است. ویژوال استودیو کد نیز مانند اغلب ویرایشگرهای متنی دیگر تعداد بالایی افزونه دارد که به سفارشیسازی رفتار آن کمک میکنند. بدین ترتیب میتوان طرز کار و ظاهر VS Code را تا حدود زیادی تغییر داد. برای نمونه میتوان Vim یا key binding-های به سبک Emcas را به آن اضافه کرد. ما در ادامه چند مورد معدود از فهرست پرشمار افزونههای ویژوال استودیو کد را معرفی میکنیم. اما قبل از آن باید با روش نصب افزونههای VS Code آشنا شویم.
در صورتی که با روش نصب افزونههای ویژوال استودیو کد آشنا نیستید، نگران نباشید چون فرایند بسیار آسانی دارد. روی آیکون Extensions در سمت چپ صفحه کلیک کنید. این پنجمین آیکون است که درست زیر آیکون Debug قرار دارد.
در ادامه نام کامل یا بخشی از نام آن اکستنشن که میخواهید نصب کنید را وارد کنید. روی نامی که میبینید کلیک کنید تا خلاصهای راجع به افزونه بخوانید و سپس روی آیکون Install کلیک کنید تا نصب شود.

Visual Studio IntelliCode (+) که از سوی بخش DevLabs مایکروسافت توسعه یافته، اکستنشنی است که هوش مصنوعی را در جهت کمک به کدنویسی به VS Code آورده است. این افزونه در حال حاضر از زبانهای پایتون، جاوا اسکریپت/تایپاسکریپت و جاوا پشتیبانی میکند.
اگر IntelliCode را قبلاً در ویژوال استودیو یا ویژوال استودیو کد نصب کرده باشید، احتمالاً میدانید که عملکرد آن به چه صورت است. تنها تفاوت در اینجا آن است که این افزونه اساساً هوشمندتر از حالتی است که تصور میکنید. اکستنشن مورد بحث همچنان در مراحل ابتدایی توسعه خود قرار دارد و با این حال عملکرد کاملاً جالبی دارد. در مراحل بعدی توسعه ممکن است شاهد این باشیم که این افزونه به صورت یک قابلیت داخلی VS Code عرضه شود.

اغلب افرادی که از یک ویرایشگر متنی استفاده میکنند، به طور مرتب تغییراتی در تنظیمات آن ایجاد میکنند. برخی دیگر نیز پا را فراتر میگذارند و ویرایشگر خود را طوری سفارشیسازی میکنند که با سبک نگارش شخصیشان متناسب باشد. اگر به طور مکرر کارهایتان را روی بیش از یک سیستم انجام میدهید، اعمال این اصلاحها به صورت مداوم کار خستهکنندهای خواهد بود.
اکستنشن Settings Sync (+) به حل این مشکل کمک میکند. این افزونه با کمک گرفتن از یک GitHub Gist ساده، تنظیمات VS Code شما را روی سیستمهای مختلف همگامسازی میکند. این موارد شامل انواع اکستنشنهای نصب شده و پیکربندی آنها نیز میشود و از این رو با استفاده از این افزونه، همه پیکربندیهای شما به صورت پرتابل درمیآیند. در صورتی که تغییراتی روی یک سیستم ایجاد کنید، میتوانید با همگامسازی تنظیمات، آنها را روی سیستمهای دیگر نیز مشاهده کنید.
البته همگامسازی تنظیمات ممکن است چند دقیقه طول بکشد؛ اما پس از طی این مدت دیگر لازم نیست در مورد ایجاد تغییرات و اصلاحهای مختلف نگران نباشید. دستورالعملهای راهاندازی این افزونه در بخش معرفی اکستنشن در VS Code ارائه شده است. همچنین اگر به راهنمایی بیشتری نیاز دارید، میتوانید از مطلب زیر استفاده کنید:

اگر از ویژوال استودیو کد برای ویرایش فایلهای شخصی یا سیستمی استفاده میکنید، اکستنشن Path Intellisense (+) میتواند کمک زیادی به شما بکند. این افزونه به طور خلاصه امکان تکمیل کردن با سبک Intellisense را برای نام فایلها میسر میسازد و بدین ترتیب میتوانید به سادگی نام مسیرهای طولانی فایل را بدون نیاز به کامیت کردن در حافظه وارد کنید.
این افزونه کارکرد نسبتاً سادهای دارد؛ اما چند گزینه پیکربندی نیز وجود دارند. برای نمونه میتوان انتخاب کرد که علامت / پس از نامهای دایرکتوری اضافه شود یا نشود. گزینههای دیگر شامل این هستند که آیا نام فایل در گزارههای ایمپورت ذکر شود یا نه و یا این که میتوانید انواع خاصی از فایلها را نادیده بگیرید.

اکستنشن Task Explorer (+) کارکردهای اجرای وظیفه به سبک IDE را به ویژوال استودیو کد اضافه میکند. این وضعیت به طور عمده شامل ساخت وظایفی برای پروژه کنونی است، اما شامل Bash، پایتون و دیگر اسکریپتها نیز میشود.
Task Explorer از تعداد نسبتاً زیادی از ابزارهای استاندارد Build پشتیبانی میکند. این موارد شامل NPM ،Grunt ،Gulp ،Ant ،Make و خود ویژوال استودیو کد میشود. این افزونه قابلیت سفارشیسازی دارد و امکان سفارشی ساختن مسیر هر اجراکننده وظیفه و زبان اسکریپتنویسی را میدهد. این موارد در صورتی که چند نسخه از هر کدام از این موارد نصب شده باشد و شما بخواهید از یک نسخه خاص استفاده کنید، مفید خواهد بود.

ویژوال استودیو کد به صورت پیشفرض پس از نصب، به قابلیت یکپارچهسازی Git مجهز است و از این رو ممکن است نیاز مطلقی به این افزونه نداشته باشید. با این وجود، GitLens (+) چندین قابلیت اضافه کرده است که به بصریسازی، ناوبری و درک تاریخچه گیت پروژه کمک میکند.
GitLens علاوه بر ویژگیهای دیگری که دارد یک قابلیت قدرتمند برای نمایش تفاوتها در پنجره جداگانه (split diff) ارائه میکند که به بصریسازی تفاوتهای بیت کامیت ها و شاخهها (Branches) کمک میکند. این افزونه امکان جستجو تاریخچه کامیت پروژهها، جستجوی نویسندگان، فایلها، پیامهای کامیت و موارد دیگر را نیز ارائه میکند.
ویژگیهای دیگر شامل «هیتمپ» (Heat Map) در حاشیه پنجره ویژوال استودیو کد است که به ما امکان میدهد به آسانی ببینیم که در یک فایل مفروض بخش عمده کار در کجا صورت گرفته است. برای جمعبندی در مورد این اکستنشن باید اضافه کرد که اگر در پروژه خود تمرکز زیادی روی Git دارید، حتماً باید آن را دست کم یک بار امتحان کنید.

اگر یک توسعهدهنده فرانتاند هستید و به خصوص اگر دوست دارید از یک سبک نگارشی خاص پیروی کنید، افزونه Prettier (+) این نیاز شما را به بهترین وجه تأمین میکند. این افزونه به صورت خودکار کدهای جاوا اسکریپت، تایپاسکریپت و CSS را با استفاده از ابزارهای مرتبط قالببندی کد برای هر زبان قالببندی میکند.
Prettier کدی را که نوشتهاید میگیرد و آن را با پیروی از یک سری راهنماهای قالببندی برای شما بازنویسی میکند. این اکستنشن دارای گزینههای مختلفی است و میتوانید بسته به نیازهای خود آن را پیکربندی کنید، اما میتوانید از آن به همراه ابزارهای eslint یا tslint نیز استفاده کنید تا مطمئن شوید که از پیکربندی بندی linting خود پیروی میکند.

Bracket Pair Colorizer (+) افزونهای است که نامش آن را به خوبی توصیف میکند. این افزونه به صورت خودکار کاراکترهای خاصی را در کد رنگی میکند تا مشخص شود که یک بخش خاص از کد در سلسلهمراتب خود در چه سطحی قرار دارد. این اکستنشن به صورت پیشفرض از چند زبان پشتیبانی میکند و این فهرست آن قدر بزرگ هست که مطمئن باشید زبان مورد نظر شما نیز در آن جای دارد.
به صورت پیشفرض کاراکترهای ()، []، و {}با همدیگر تطبیق پیدا میکنند؛ اما میتوانید کاراکترهای براکت دیگر را نیز بر حسب نیاز اضافه کنید. این نوع از افزونهها معمولاً مورد تنفر یا عشق شدید کاربران قرار دارند، اما گر مطمئن نیستید که آن را دوست دارید یا نه، بهتر است دست کم یک بار امتحانش کنید.

آیا تاکنون کنجکاو بودهاید که چه مقدار زمان برای کار روی یک قطعه کد صرف کردهاید؟ آیا تاکنون خواستهاید بدانید که بهترین زمان برنامهنویسی بهینه شما چه زمان از روز یا کدام روز هفته بوده است؟ اگر تا به حال مشتاق بودهاید که پاسخ این سؤالها یا هر معیار زمانی دیگر را بدانید، بهتر است از اکستنشن Code Time (+) استفاده کنید.
افزونه Code Time فعالیت شما در ویژوال استودیو کد را اندازهگیری میکند و در مورد این فعالیتها و همچنین معیارهای دیگر به شما گزارش میکند. شما میتوانید معیارهای آنی را در نوار وضعیت ببینید و برای مشاهده موارد بیشتر، یک داشبورد نیز درون ویرایشگر ارائه شده است.
میتوان Code Time را طوری تنظیم کرد که در مورد فعالیتهای فوق گزارشهای هفتگی به شما ارائه کند. همچنین یکپارچهسازی آن با تقویم گوگل باعث میشود که به صورت خودکار بهترین زمانهای برنامهنویسی خود را بدانید و در آن زمانها به کار بپردازید و دیگر اجازه ندهید که این زمانها در جلسههای کاری به هدر بروند.

شما چه یک توسعهدهنده فرانتاند وب باشید و یا فردی باشید که به صورت عمده روی سرور کار میکنید، احتمالاً با مواردی مواجه شدهاید که باید یک REST API را تست میکردید. برخی افزونههای مرورگر و کلی ابزار دیگر برای این منظور وجود دارند، اما اگر اغلب زمان خود را در یک ویرایشگر متنی صرف میکنید، آیا بهتر نیست که کلاینت را نیز در همین جا داشته باشید؟
افزونه REST Client (+) افزونه نسبتاً سادهای است که کار خود را به نحو احسن انجام میدهد. با استفاده از این افزونه میتوان یک درخواست HTTP و همچنین دستورهای cURL ارسال کرد. برای احراز هویت، این افزونه از روشهای احراز هویت مقدماتی، احراز هویت digest، گواهی کلاینت SSL و موارد مشابه پشتیبانی میکند.
اکستنشنهایی که در این مطلب معرفی کردیم، تنها گوشه کوچکی از دنیای گسترده افزونههای VS Code را تشکیل میدهند. به خصوص اگر به تازگی با ویژوال استودیو کد آشنا شدهاید، افزونههای زیادی وجود دارند که میتوانید امتحان کنید. البته ما در این نوشته از اکستنشنهایی که اختصاص به یک زبان خاص داشتند اجتناب کردیم که میتوانید با کمی جستجو آنها را پیدا کنید. شما چه در زبان جاوا اسکریپت و چه در ++C یا Go یا زبانهای دیگر کدنویسی کنید، افزونههایی وجود دارند که به تسهیل کارهای شما کمک میکنند.