اگر با Nodejs کار میکنید قطعا اسم Deno رو هم به عنوان یک Runtime رقیب میشناسید.
به تازگی نسخه 1.28 این Runtime منتشر شد.
حالا چنل یوتیوب رسمی Deno در یک لایو استریم قرار هست راجع به ویژگی های جدید این نسخه صحبت کنن
https://www.youtube.com/live/5tUDSrnHFPk?si=xg5BpMhSti4PlbMl
به تازگی نسخه 1.28 این Runtime منتشر شد.
حالا چنل یوتیوب رسمی Deno در یک لایو استریم قرار هست راجع به ویژگی های جدید این نسخه صحبت کنن
https://www.youtube.com/live/5tUDSrnHFPk?si=xg5BpMhSti4PlbMl
YouTube
Deno Sessions: 1.38 is the biggest update ever 🤯
Kevin invites Bartek to go over all the new features in 1.38 — making a documentation static site with `deno doc`, hot module replacement, improved Node/npm compatibility, and way way more. You don't want to miss it.
Table of Contents
02:22 Demo of `deno…
Table of Contents
02:22 Demo of `deno…
👍1
نسخه LTS جدید برای NodeJs منتشر شد.
بزودی لیستی از ویژگی های این نسخه در اینجا خواهم گذاشت.
اگر هم دوست دارید میتونید خودتون برید بخونید.
https://nodejs.org/en/blog/release/v20.9.0
بزودی لیستی از ویژگی های این نسخه در اینجا خواهم گذاشت.
اگر هم دوست دارید میتونید خودتون برید بخونید.
https://nodejs.org/en/blog/release/v20.9.0
nodejs.org
Node.js — Node.js v20.9.0 (LTS)
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and noscripts.
👍1
یکی از مشکلاتی که Node داشت و Deno سعی بر حل آن بود امنیت اجرای پکیج های 3rd party بود که اگر پکیجی بخواهد کارهایی از قبیل دسترسی به network یا خواندن و نوشتن دیتا روی disk انجام دهد شما باید به عنوان developer تایید کنید و اجازه دسترسی بدهید.
و حالا در Node 20 LTS شاهد این موضوع هستیم که تیم توسعه دهنده این ويژگی رو به صورت آزمایشی در Node پیاده سازی کردند که باعث امیدواری زیادی هست.
به صورت معمول استفاده کنید همه چیز طبق روال قدیم اجرا خواهد شد.
ولی اگر بخواهید از این ویژگی استفاده کنید حتما باید برنامه خود را با flag
اجرا کنید.
حال برای دادن مجوز های لازم به برنامه میتوانید از این کامند استفاده کنید تا برنامه شما دسترسی به خواندن فایل داشته باشد.
و حالا در Node 20 LTS شاهد این موضوع هستیم که تیم توسعه دهنده این ويژگی رو به صورت آزمایشی در Node پیاده سازی کردند که باعث امیدواری زیادی هست.
// fileread.jsحالا شما اگر فایل fileread.js رو اگر با کامند
import { readFileSync } from "fs";
const content = readFileSync("myfile.txt");
console.log(content);
node fileread.js
به صورت معمول استفاده کنید همه چیز طبق روال قدیم اجرا خواهد شد.
ولی اگر بخواهید از این ویژگی استفاده کنید حتما باید برنامه خود را با flag
--experimental-permission
اجرا کنید.
node --experimental-permission fileread.jsحالا با اجرای fileread با این flag شما با ارور زیر مواجهه خواهید شد که در بخش توضیحات ارور میگه برنامه شما در حال تلاش برای خواندن فایل از روی دیسک است و دسترسی به خواندن فایل از روی سیستم نیاز است.
node --experimental-permission fileread.js
node:internal/modules/cjs/loader:178
const result = internalModuleStat(filename);
^
Error: Access to this API has been restricted
at node:internal/main/run_main_module:23:47 {
code: 'ERR_ACCESS_DENIED',
permission: 'FileSystemRead',
resource: '/home/imanhpr/Desktop/sandbox/nod/fileread.js'
}
Node.js v20.9.0
حال برای دادن مجوز های لازم به برنامه میتوانید از این کامند استفاده کنید تا برنامه شما دسترسی به خواندن فایل داشته باشد.
node --experimental-permission --allow-fs-read='*' fileread.jsاین ویژگی امنیت پروژه های شما رو تا حدود زیادی بالاتر میبرد و به پکیج های نصب شده توسط npm اجازه ارسال اطلاعات بدون دسترسی نمیدهد و درصورتی که پکیج مخربی نصب کنید به سرعت متوجه خواهید شد.
👍7
یکی دیگر از قابلیت های بسیار خفن Node 20 LTS که باز هم الهام گرفته از Deno هست، ایجاد Single executable applications هست. یعنی دیگر شما نیازی نیست که حتما node روی سیستم نصب داشته باشید برای اجرای برنامه های nodejs و میتونید با ایجاد یک فایل executable ( به عنوان مثال فایل های .exe در ویندوز ) برنامه خودتون رو به راحتی منتشر کنید.
البته این ویژگی نیز دوباره به صورت Experimental اومده و هنوز خیلی محدودیت هایی دارد ولی خب در آینده یکی به عنوان یک ویژگی خیلی خوب node میشه ازش نام برد. در حال حاظر فقط میتوان به صورت پیشفرض از Std خود node استفاده کرد یعنی دسترسی به پکیج های npm به صورت پیش فرض نداریم ( میتونیم اضافه کنیم و در پست های بعدی آموزشش رو حتما خواهم گذاشت)
اگر خودتون دوست دارید جزیات بیشتر رو ببینید اینجا میتونید برسی کنید.
https://nodejs.org/api/single-executable-applications.html#single-executable-applications
البته این ویژگی نیز دوباره به صورت Experimental اومده و هنوز خیلی محدودیت هایی دارد ولی خب در آینده یکی به عنوان یک ویژگی خیلی خوب node میشه ازش نام برد. در حال حاظر فقط میتوان به صورت پیشفرض از Std خود node استفاده کرد یعنی دسترسی به پکیج های npm به صورت پیش فرض نداریم ( میتونیم اضافه کنیم و در پست های بعدی آموزشش رو حتما خواهم گذاشت)
اگر خودتون دوست دارید جزیات بیشتر رو ببینید اینجا میتونید برسی کنید.
https://nodejs.org/api/single-executable-applications.html#single-executable-applications
👍4
Node Master
یکی دیگر از قابلیت های بسیار خفن Node 20 LTS که باز هم الهام گرفته از Deno هست، ایجاد Single executable applications هست. یعنی دیگر شما نیازی نیست که حتما node روی سیستم نصب داشته باشید برای اجرای برنامه های nodejs و میتونید با ایجاد یک فایل executable ( به…
آموزش ویدیویی حتما راجع به این میزارم براتون.
موفق باشید همگی👍
موفق باشید همگی👍
👍2
Node Master
نسخه LTS جدید برای NodeJs منتشر شد. بزودی لیستی از ویژگی های این نسخه در اینجا خواهم گذاشت. اگر هم دوست دارید میتونید خودتون برید بخونید. https://nodejs.org/en/blog/release/v20.9.0
تغییر دیگری که در NodeJs 20 LTS شاهد هستیم Stable شدن Test runner خود Node هست که بنظرم خیلی بهتر از پکیجی مثل Jest هست. البته vitest خیلی قوی عمل کرده من خودم vitest رو داخل چند پروژه استفاده کردم و واقعا قدرتمند بود. این دو پکیج رو در حال حاظر نمیتونم مقایسه کنم ولی در آینده قطعا از Test Runner خود Node در یک پروژه استفاده خواهم کرد.
اگر قصد یادگیری unit test نوشتن دارید پیشنهاد میکنم یا از vitest یا همین پکیج استفاده کنید و سمت jest نرید چون مشکلات خیلی زیادی داره و ممکنه ساعت ها اذیت کنه شما رو مخصوصا با type noscript.
به عنوان مثال فایل main.js
استفاده کنید.
استفاده کنید
در آینده درمورد نوشتن تست و تکنیک های unit test نوشتن قطعا صحبت خواهیم کرد.
اگر قصد یادگیری unit test نوشتن دارید پیشنهاد میکنم یا از vitest یا همین پکیج استفاده کنید و سمت jest نرید چون مشکلات خیلی زیادی داره و ممکنه ساعت ها اذیت کنه شما رو مخصوصا با type noscript.
به عنوان مثال فایل main.js
export function sum(input) {
return input + 2;
}
export function minus(input) {
return input - 2;
}
حال تست های مربوط به خودمون رو داخل فایل زیر قرار میدهیم. test/main.spec.jsimport assert from "assert";برای اجرای تست ها میتوانید از flag
import { describe, test } from "node:test";
import { sum } from "../main.js";
describe("Check Sum Function.", () => {
test("Sum 2 + 2 = 4", () => {
const result = sum(2);
assert.strictEqual(result, 4);
});
test("Sum 4 + 2 == 6", () => {
const result = sum(4);
assert.strictEqual(result, 3);
});
});
--test
استفاده کنید.
node --testدر صورتی که میخواهید Test coverage بگیرید میتوانید از flag
--experimental-test-coverage
استفاده کنید
node --test --experimental-test-coverageکلا میتوان درمورد تست ساعت ها میتوان بدون وقفه صحبت کردن و نوشتن تست خوب از نوشتن اصل برنامه کار سخت تری هست. و اگر قصد مهاجرت دارید یکی از skill هایی که قطعا از شما انتظار میرود توانایی نوشتن تست های خیلی خوب میباشد.
در آینده درمورد نوشتن تست و تکنیک های unit test نوشتن قطعا صحبت خواهیم کرد.
👍3
راستی برای دیدن code snippet ها به شکل مناسب حتما تلگرام خودتون رو آپدیت کنید رفقا.
👍3
Node Master pinned «راستی برای دیدن code snippet ها به شکل مناسب حتما تلگرام خودتون رو آپدیت کنید رفقا.»
آیا با Deno و Bun هم آشنایی دارید؟
Anonymous Poll
18%
با Bun آشنایی دارم
5%
با Deno آشنایی دارم
31%
با هردو آشنایی دارم
45%
با هیچ کدام آشنایی ندارم
👍2
#include <iostream>
int main()
{
std::cout << "Let The Performance Begin!\n";
return 0;
}
به عنوان برنامه نویس BackEnd شما صرفا نباید یک framework developer باشید. باید به درجه ای برسید که بیت به بیت دیتایی که دارید کار باهاش انجام میدید رو بشمارید.
برای رسیدن به همچین سطحی که برای بهینه کردن در حد Bit و Byte صرفا فقط کد زدن و یاد گرفتن زبان و فریمورک جدید کافی نیست. باید در مسیری قدم بزاری که این روزا کمتر آدمایی قدم میزارن. یعنی باید با عینک علمی تر و حتی شاید خننده دار باشه ولی فلسفی تر نگاه کرد.
یک سری کلمات پایه ای وجود داره که نقطه شروع برای رسیدن به همچین نقطه ای هست. این کلمات رو در مطالب من زیاد خواهید دید و هرکدوم رو در تایم مناسب توضیح میدم.
کلا ذات هر سیستم نرم افزاری بسیار بسیار شکننده هست. برای این که نرم افزار ما از این شکنندگی خارج شود باید ( تاکید میکنم باید ) این نکات رو بدونیم.
یک نکته ای هم بگم که شما میتونید تا ابد یک framework developer باشید با درامد خیلی عالی در کشور های تاپ دنیا و هیجی از این نکات هم ندونید.
این فقط عطش یادگیری هست که مثل بنزین در این مسیر به شما انرژی میده که رو به جلو قدم بردارید.
یک سری از موضوعاتی که در این مورد ساعت ها خواهیم وقت گذاشت از این قبیل هستند :
- Compile time vs Runtime
- Dynamic typing vs. static typing
- Strong and weak typing
- Runtime errors vs compile time errors
- Compile time and Runtime Polymorphism
همین الان چند بار در این لیست کوتاه که تیتر وار اشاره کردم کلمه Runtime و Compile time چند بار تکرار شد که اهمیت بالای این موضوع رو نشون میده.
وقتی که بتونید کدتون رو با این عینک که چه تاثیری در Runtime یا Compiletime برنامه میتونه داشته باشه فارغ از زبان برنامه نویسی ببینید.
خودتون اون روز متوجه حرف من خواهید شد که چه تاثیری در استایل کد زدن شما خواهد داشت.
الان حضور ذهن ندارم ولی از این دسته موضوعات کم نیست و این که باهم عمیق به هرکدوم نگاه میکنیم.
دونستن این جنس نکات اعتماد به نفستون رو در مصاحبه بالا میبره و حتی میتونید شخص مصاحبه کننده رو به چالش بکشونید.
صرفا اینجا خوشم نمیاد یک تیکه کد بزارم بگم این فلان کار رو میکنه و تمام.
اینجا عمیق همیشه دوتا سوال رو برسی میکنیم.
۱.چیست؟
۲.چرا؟
#TIP
👍8
