Node Master – Telegram
Node Master
1.03K subscribers
24 photos
2 files
156 links
Group Chat: @nodemastergp
Admin: @napoleon_n1
Download Telegram
یک خبر دارم براتون درمورد #NodeJS که وب سایت رسمی این Runtime محبوب در حال Redesign توسط تیم رسمی Node هست و میتونید از طریق این pull request آپدیت های مربوط به این موضوع رو دنبال کنید.
https://github.com/nodejs/nodejs.org/pull/6353

البته میتونید از این لینک هم دمو این وب سایت جدید برای #NodeJS رو مشاهده کنید.
https://nodejs-j7xn7o05q-openjs.vercel.app/en
👍13
سلام دوستان ارادت.
من به تازگی یک مصاحبه شغلی برای #NodeJS به صورت ریموت رفتم. بهم یک تمرین دادند و اون رو حل کردم. مصاحبه #NestJS میخواستن ولی من از استک زیر استفاده کردم و offer رو گرفتم.
NestJS + Fastify + Mikro-Orm + Postgres
راجع بیشتر تایم مصاحبه هم داشتیم درمورد تست نوشتن و تست ها صحبت میکردیم.
اگر دنبال کار میگردین و تجربه ندارید میتونید برید کد های این ریپو رو بخونید نمونه سوالی که در مصاحبه ازتون میپرسن رو ببینید و سعی کنید خودتون حل کنید تا شاید بتونه بهتون کمک کنه.
نکته جالب این هست که docker-compose که نوشته بودم روز مصاحبه بخاطر migration دیتابیس کار نمیکرد و من این رو چک نکرده بودم. با این وجود offer رو گرفتم. من این قسمت رو هم درست نمیکنم تا که یک وقت فکر نکنید همه چی طبق برنامه پیش میره. گاهی پیش میاد همچین اشتباهاتی ولی خب با مصاحبه کننده ها راجع بهش صحبت کردیم و تاثیر منفی نداشت.

به ریپو دست نزدم و دقیقا همون کدی که ارایه دادم رو گذاشتم فقط README رو آپدیت کردم که اگر دوست داشتید پروژه رو بیارید بالا و البته این کد ۲ روز کمتر وقت گذاشته شده و خیلی کارا رو میشد بهتر انجام داد و اتفاقا راجع به این موضوع هم صحبت شد. یعنی شما نیازی نیست کدی که میزنید صدرصد عالی باشه. کد خوب بزنید و بدونید که چطور میشه این کد رو بهتر کرد. چون درمورد یک سری پترن ها ازم سوال شد که پروژه رو تمیز کنیم.

سوالات مهمی که ازم پرسیده شد.
- به صورت کلی Circular Dependency چیست و چطور باید باهاش مواجهه شد.
درمورد راه حلش در NestJs توضیح دادم و به صورت کلی راجع این مشکل در زبان های برنامه نویسی توضیح دادم که معمولا یک کد top level ایجاد میکنم. لینک زیر راه حل مناسب در NestJS هست ولی درکل Circular Dependency یک نوع Anti Pattern هست و میتونه نشونه کد بد باشه. راجع به این موضوع عمیق باید صحبت کرد.
https://docs.nestjs.com/fundamentals/circular-dependency
- در تست ها چرا database fake ایجاد کردی و mock نکردی.
به این دلیل که من بیشتر تست های integration هدفم بود و unit test به همراه behiver test زمان بر بود. اینجا شما باید درمورد رویکرد های کلی تست نویسی مثل Testing Diamond و Testing Pyramid بدونید. لینک زیر مقاله خوبیه.
https://www.linkedin.com/pulse/pyramid-diamond-honeycomb-trophy-find-testing-strategy-fits/

- پترن Repository چطور میتونه باعث بشه کدت تمیز تر بشه؟
میتونیم DAO درست کنیم و وابستگی خودمون رو به ORM ها و به لایه data persistence حذف کنیم. این پترن خیلی در Java Spring Boot مرسوم هست به نوعی کمک به Repository پترن میکنه. این لینک میتونه بهتون کمک کنه.
https://www.digitalocean.com/community/tutorials/dao-design-pattern

اگر یکم تازه کار تر هستید تست های این پروژه رو نگاه کنید. سوال هم داشتید بپرسید اگر جایی حس میکنید تکنیکی کد من رو میتونست بهتر کنه خوشحال میشم بهم بگید.

راستی Star ⭐️ فراموش نشه :)
https://github.com/imanhpr/nest-assignment
👍34
سلام دوستان ارادت روزتون بخیر باشه.
اگر دقت کرده باشید مدتی هست کم فعالیت شده اینجا. این روزا به دلیل یک سری اتفاق ها و تغییرات خیلی زیاد در زندگیم وقت نمیکنم محتوا آموزشی تولید کنم و براتون بزارم. خوشبختانه کارام خیلی جلو رفته و همه چی داره خوب پیش میره.
خواستم بهتون بگم بین یک هفته یا حداکثر تا بعد از عید پست آموزشی در چنل نداریم. خوشبختانه در این چند ماه موضوعات مختلفی درمورد #NodeJS صحبت کردیم و یک TODO لیست کامل از موضوعاتی که دوست داریم عمیق تر بشیم رو داریم.
بهتون این قول رو میدم که بعد از این دوره محدود به #NodeJS نیستیم و سعی میکنیم خیلی از زاویه CS به موضوعات نگاه کنیم. یعنی به سمت هدف اصلی خودمون حرکت کنیم.
این مدت که کمتر بودم یک سری برنامه ها رو چیدم و جلو بردم که بتونم کیفیت بهتری این کار رو ادامه بدم. قطعا بعد از این دوره که فعالیت ندارم ویدیو آموزشی با کیفیت خوب و عمیق خواهیم داشت. خواستم بهتون بگم لطفا از چنل left ندین چون قوی تر ادامه میدیم باهم.
داخل گروه همچنان فعال هستم صحبت میکنیم. خیلی خیلی از تک تک شما دوستان متشکر هستم که در مرحله یک این کامینیوتی کوچک و خوبی که داریم همراه بودین و حمایت و تشویق کردین❤️. حالا نوبت به مرحله دو هست که با هم وارد بشیم.

بزودی با محتوا بهتر میبینمتون 😃❤️

ایمان هستم داداش کوچیک همه شما موفق باشید ❤️
👍29
Node Master
سلام دوستان ارادت روزتون بخیر باشه. اگر دقت کرده باشید مدتی هست کم فعالیت شده اینجا. این روزا به دلیل یک سری اتفاق ها و تغییرات خیلی زیاد در زندگیم وقت نمیکنم محتوا آموزشی تولید کنم و براتون بزارم. خوشبختانه کارام خیلی جلو رفته و همه چی داره خوب پیش میره.…
راستی دوستان یادم رفت بگم.
اگر انتقادی یا پیشنهادی دارید.
واقعا ممنون میشم اینجا کامنت بزارید بگید برای بهتر شدن.

و این که اگر موضوع خاصی هم دوست دارید راجع بهش مطلب بخونید و یاد بگیرید اینجا حتما بگید تا داخل برنامه بزاریم برسیش کنیم با هم یاد بگیریم.

موفق باشید❤️
👍11
سلام و درود و ارادت‌.
امیدوارم هرجا هستید حالتون خوب و شاد باشید.
روز آخر سال هست گفتم هم بهتون تبریک بگم هم تعطیلات خوبی داشته باشید.
هم یک آپدیت بدم که یک سری کارا بردم جلو تا بتونیم باهمدیگه چیزای بیشتری یاد بگیریم.
واقعا این کامینیوتی کوچکی که با هم تشکیل دادیم و رو خیلی دوست دارم و قطعا در سال جدید فعالیت ها خیلی قوی تر و بیشتری خواهیم داشت.

امیدوارم هرجا هستید حال دلتون خوب و سلامت باشید❤️

ایمان هستم کوچیک شما ارادت❤️
👍28
سلام دوستان و ارادت.
خلاصه ویدیو :
- من برگشتم
- تست میکروفون جدیدم.
- جاوا اسکریپت و Node رو عمیق تر میشیم.
- مفاهیم Cs رو حتما شروع میکنیم.
- کمی گپ خودمونی.

امیدوارم هرجا هستید حالتون خوب باشه و تعطیلات خوبی رو گذرونده باشید. کم کم وقتشه با هم آماده بشیم برا سال جدید. امیدوارم همگی موفق باشید رفقا❤️
کوچیک شما ایمان هستم❤️

https://youtu.be/c526-vDCJOo?si=S-JyYvzZQJ3y3KtE
👍16
قطعا همگی با Template Engine هایی مثل Pug, Handlebars و EJS آشنایی دارید. هرکسی با توجه به سلیقه ای که داره از یکی از اینها استفاده میکنه. من خودم استایل EJS رو به دلیل سادگی و نزدیک بودن به خود #JavaScript خیلی دوست دارم. حالا یک Template Engine جدیدتر داریم به اسم ETA که شباهت خیلی زیادی به EJS داره و با #Deno و #Browser هم سازگار هست و البته حجم کمتری داره و از EJS هم سریعتر هست.

اگر دوست دارید میتونید یک نگاهی بهش بندازید.
https://eta.js.org/
#NodeJS
👍18
سلام دوستان ارادت.
امروز آپدیت جدید 20.12 LTS که به تازگی برای #NodeJS منتشر شده رو باهم برسی میکنیم.

به نسبت این آپدیت تغییرات بیشتری از آپدیت های قبلی مثل 20.11 و 20.12 داشته و چنتا حرکت خوب هم بلاخره از Node درمورد single exec app ها دیدیم.

در بخش آخر هم قسمت هایی از آپدیت رو با مثال و کد برسی میکنیم.

https://youtu.be/RvUo_Ms9irI?si=2nz7wvS79c8VpIvs

این اولین ویدیو فنی من هست ممنون میشم ببینید و نظر خودتون رو بهم بگید تا بتونم ویدیو ها بهتری بزارم.

موفق باشید❤️👍
👍18
Node Master
#Update #News
امروز آپدیت جدید برای #BunJS یعنی 1.1 منتشر شد. بزرگترین خبر مربوط به این آپدیت اضافه شدن ساپورت برای #Windows هست. کلی ویژگی های جدید دیگه بوده و کلی بهبود برای سازگاری بهتر با API مربوط به #NodeJS انجام گرفته.
درکل امسال قراره تابستون خیلی داغی 🔥 برای کامینیوتی #BackEnd و #JavaScript داشته باشیم باتوجه به این که #Deno داره خودش رو برای نسخه ۲ آماده میکنه و در یک ماه آینده ظاهرا باید انتظار منتشر شدن نسخه 22 LTS برای #NodeJS باشیم و ببینیم آیا میتونه #BunJS که مدعی این هست که جای #NodeJS در سال 2024 میخواد بگیره میرسه یا نه؟

https://twitter.com/bunjavanoscript/status/1732945030007099510

باتوجه به Drama های پیش اومده و کل کل بین runtime های مختلف شاهد رقابت خیلی سنگین تری بنظرم امسال هستیم به طوری که این رقابت داره تبدیل به مبارزه UFC میشه 🥊.

نظر شخصی :
به شخصه با #BunJS در حال حاظر حال نمیکنم به دلایل زیر
- سال گذشته حاشیه و Drama در کامینیوتی زیاد ایجاد شد و بخشیش از طرف #BunJS بود.
- هنوز بنظرم خیلی فاصله داره تا بگیم production ready هست. ( همه چیز سرعت نیست و stability بنظرم خیلی مهم تره )

این وسط #Deno میانه روی کرده و آروم و بی سر صدای اضافه خودش رو بهتر کرده و با حرکت آخرش یعنی jsr.io به نظر من خیلی جایگاه بهتری داره ( برای من ). تنها مشکلی که به نظرم داره کامینیوتی کوچیکش هست که برای پروژه زدن یکم کار رو سخت میکنه.

و این که #NodeJS که عنوان Rocket Turtle 🚀 🐢 رو یدک میکشه هم سال قبل با توجه به آپدیت هایی که داد به صورت جدی اعلام کرد که قصد نداره بازار رو به راحتی تسلیم کنه و کنار بکشه به طوری که به صورت مرتب شاهد improvement هستیم.
👍23
سلام دوستان
ما توی تیممون نیاز به یک شخص داریم که قسمتی از کار رو برامون پروژه ای انجام بده
پروژه هم بک اندی هستش و نیاز داریم ای پی ای هایی که نوشته میشه به یک پنل آماده متصل کنه
مواردی که لازمه برای انجام این پروژه تسلط داشته باشید
nestjs
mongodb
redis
socketio
react
دوستانی که مایل به همکاری هستن راه های ارتباطی :
ehsan@raychat.io
@ehsan_younesi

بخش فرصت های شغلی هم میتونید چک کنید.

https://raychat.io

#Work
👍2
سلام دوستان ارادت.
چند روز پیش یک توییت زدم که برام عجیب بود حتی برنامه نویس هایی با چند سال سابقه چه #Frontend و چه#Backend با مفهوم Serialization و Deserialization آشنایی ندارند و باز خورد جالبی گرفت.
https://twitter.com/imanhpr_media/status/1774890856622809175
تصمیم گرفتم درمورد این موضوع یک ویدیو بسازم و باهم عمیق این موضوع رو یاد بگیریم و برسی کنیم.
در این ویدیو نوع داده String رو عمیق برسی میکنیم بعد به خود Serialization و Deserialization میرسیم و در نهایت با توضیح درمورد Encoding و Decoding و ارتباط این ۳ موضوع با هم عمیق صحبت میکنیم.

بیشتر در این ویدیو از زاویه #CS به مسله نگاه میکنیم ولی به طوری که بتونیم در development هم استفاده کنیم. یک سری best practices و optimization صحبت میکنیم و کد میزنیم.
ویدیو بعدی هم ادامه این ویدیو هست و بیشتر development و مثال هست که یکی از سایت های داخلی با توجه به مفاهیمی که اینجا یاد میگیرم برسی میکنیم.

چه تازه کار باشید و چه veteran developer دونستن اینجور مفاهیم به شما کمک میکنه که تو مصاحبه ها هم اعتماد به نفس خیلی بیشتری داشته باشید و درکل بهتر باشید.
👍9
Node Master
سلام دوستان ارادت. امروز آپدیت جدید 20.12 LTS که به تازگی برای #NodeJS منتشر شده رو باهم برسی میکنیم. به نسبت این آپدیت تغییرات بیشتری از آپدیت های قبلی مثل 20.11 و 20.12 داشته و چنتا حرکت خوب هم بلاخره از Node درمورد single exec app ها دیدیم. در بخش آخر…
این پست برای دوستانی هست که این ویدیو آپدیت 20.12 LTS مربوط به #NodeJS رو ندیند.

اگر در برنامه خودتون نیاز دارید که hash یک دیتا رو داشته باشیم فقط یک stream api برای این کار وجود داشت که استفاده از این api برای payload های کوچیک overhead زیادی داره و اما برای فایل های بزرگ واقعا api خوبی هست.
import { createHash } from "node:crypto";
const data = "this is my data";

const sha1 = createHash("SHA1");

const hexDigest = sha1.update(data).digest("hex");

console.log(hexDigest);

اما با این API جدید که در اختیار ما قرار گرفته overhead خیلی کمتری روی runtime داره و برای payload های کوچیک قطعا سریعتر و بهتر هست.
import { hash } from "node:crypto";

const data = "this is my data";
const hexDigest = hash("SHA1", data, "hex");


و این که ظاهرا مشکل type هم که در ویدیو گفته بودم فیکس شده. چون پکیج @types/node از تایم رکورد ویدیو از 20.12.2 به 20.12.5 آپدیت شده.

#Update
👍10
واقعا از همه شما دوستان متشکرم بابت حمایتتون و لطف زیادی که به من داشتین.
همزمان چنل تلگرام شدیم ۷۰۰ نفر و یوتیوب هم شدیم ۲۰۰ نفر و این خیلی برای من با ارزشه.
امیدوارم همگی موفق باشید و این که واقعا خیلی خیلی خوشحالم که تونستم مفید باشم.

کوچیک شما ایمان ❤️

راستی رفقای جدید. ما یک گروه برای صحبت کردن درمورد نکات فنی برای کمک به همدیگه داریم. خوشحال میشیم جوین بشید.

https://news.1rj.ru/str/nodemastergp
👍16
چند مدتی هست #Deno ورژن 1.42 منتشر شده و در این ورژن jsr.io رو به عنوان repo اصلی برای package های 3rd party خودش قرار داده و این بزرگترین حرکت این آپدیت بوده.
بزودی باهم این ویژگی برسی عمیق میکنیم.
https://deno.com/blog/v1.42
#Update
👍4
بلاخره وقت پیدا کردم یکم کتاب بخونم تا با همدیگه دوباره موضوعات عمیق رو برسی کنیم.
همین اول راه این رو پیدا کردم. که توییت کردم.
https://twitter.com/imanhpr_media/status/1778104041865711766?t=uKyyZV5Oo9j6HwO5Q6DWHQ&s=19
👍3
جایزه Turing award سال 2023 هم مشخص شد. آقای Avi Wigderson به خاطر سال ها تحقیق درمورد الگوریتم های ایجاد داده های random . این مقاله به نظرم جالب اومد دوست داشتید مطالعه کنید.

شاید براتون عجیب بیاد که به عنوان مثال کد زیر خیلی ساده باشه.
import { randomBytes } from "node:crypto";

const buf = randomBytes(8)

ولی این جایزه که معادل جایزه نوبل هست و مبلغ یک میلیون دلار هم شامل میشه برای پشت پرده این کد به ظاهر ساده هست که دهه ها تلاش شده.
#News
https://www.newscientist.com/article/2425914-mathematician-wins-turing-award-for-harnessing-randomness/
👍13
Node Master
https://youtu.be/53J2n0zpcys
سلام رفقا ارادت. امروز در این ویدیو در ادامه مبحث Serialization and Deserialization قرار شده بود که باهم یک وب سایت داخلی رو چک کنیم. در این ویدیو باهم وب سایت digikala.com رو برسی میکنیم و یک بهینه سازی کوچک انجام میدیم و البته با یک encoding جدید به اسم unicode-escape آشنا میشیم و تاثیرش رو در api response ها به شکل مستقیم میبینیم به طوری که به طرز چشمگیری میتونیم حجم ترافیک مصرفی اینترنت کاربر و کلا ترافیک شبکه رو به طرز خیلی زیادی کاهش بدیم با همین تکنیک ساده!

ممنونم از digikala که فرصت همچین یادگیری و کنجکاوی برای ما فراهم کرد.

https://youtu.be/aPCqfRjf4BM
👍11