️ CodeNight | آموزش برنامه نویسی
875 subscribers
8 photos
1 file
70 links
🚀 کدنایت | آموزش برنامه‌نویسی از صفر تا صد
گولنگ، جاوااسکریپت، نودجی اس، وب، اپلیکیشن و الگوریتم
🧑🏻‍💻 آموزش پروژه‌محور و رایگان
🤖آموزش هوش مصنوعی و vibe coding و Ai engineering

💻 مناسب مبتدی تا پیشرفته
🌐 codenight.ir
Download Telegram
🔥 دوره NestJS 🔥

به عنوان فصل های جدید در دوره ی NestJS مایگریش ها در TypeORMیک پروژه فروشگاهی با MySQL و Sequelize طراحی و توسعه داده میشود

https://codenight.ir/courses/nest-js

کانال عمومی کدنایت: @codenight_ir
تخفیف با ظرفیت محدود ۲۰ نفر برای دوستانی که نتونستن توی بوت کمپ شرکت کنن

https://codenight.ir/courses/nest-js
چالش اصلیت از وقتی شروع میشه که فکر میکنی همه چیز رو بلدی!
🔥7👍4
اگر قصد ثبت نام در بوت‌کمپ رو داشتید هزینه دوره هایی که قبلا تهیه کردید از هزینه بوت کمپ کم خواهد✅

و برای این کار هم فردا ساعت ۸ شب به بعد از طریق اینستاگرام یا واتسپ میتونید پیام بدید.
👍1
آپدیت های جدید دوره نست جی اس بارگذاری شد
مقایسه سرعت بین SQL، NoSQL، و Key-Value Storage می‌تونه خیلی مهم باشه، چون هر کدوم برای سناریوهای خاصی بهینه‌سازی شدن. بیایید این رو به طور جزئی‌تر بررسی کنیم:


1️⃣. SQL Databases

▪︎ سرعت خواندن/نوشتن:

خواندن: سرعت خواندن داده‌ها در دیتابیس‌های SQL بستگی به پیچیدگی پرس‌وجو (query)، تعداد جداول مرتبط، و ایندکس‌هایی که روی داده‌ها قرار دادی داره.
وقتی داده‌ها ایندکس بشن، سرعت خواندن می‌تونه خیلی خوب باشه. اما پرس‌وجوهای پیچیده و جداول بزرگ ممکنه سرعت رو کاهش بدن.

نوشتن: دیتابیس SQLی به دلیل پیروی از اصول ACID، ممکنه تو عملیات نوشتن کمی کندتر باشه، چون باید از یکپارچگی داده‌ها مطمئن بشه. همچنین، وقتی تعداد نوشتن‌ها زیاد باشه یا نیاز به قفل کردن جداول باشه، سرعت نوشتن ممکنه پایین بیاد.

▪︎ عملکرد بهینه: وقتی نیاز به تراکنش‌های پیچیده و یکپارچگی داده‌ها داری، SQL می‌تونه بهترین انتخاب باشه، حتی اگر کمی از سرعت کم کنه.


2️⃣. NoSQL Databases

سرعت خواندن/نوشتن:

خواندن: بسته به نوع دیتابیس NoSQLی، سرعت خواندن می‌تونه بسیار سریع باشه. به عنوان مثال، در دیتابیس‌های Document-based مثل MongoDB، دسترسی به داده‌ها سریع‌تره چون معمولاً ساختار داده‌ها به صورت مسطح و سندی ذخیره میشه و نیاز به جداول مرتبط نیست.

نوشتن: به دلیل ساختار انعطاف‌پذیر و عدم نیاز به رعایت دقیق اصول ACID، سرعت نوشتن در NoSQL بالاست. این پایگاه داده‌ها به گونه‌ای طراحی شدن که بتونن حجم بزرگی از داده‌ها رو به سرعت پردازش کنن.

▪︎ عملکرد بهینه: وقتی حجم داده‌ها زیاده و نیاز داری که عملیات نوشتن و خواندن سریع انجام بشه (مثلاً در برنامه‌های real-time)، NoSQL بهترین انتخابه.


3️⃣. Key-Value Storage

▪︎ سرعت خواندن/نوشتن:

خواندن: دسترسی به داده‌ها در Key-Value Storage فوق‌العاده سریعه چون داده‌ها بر اساس کلید ذخیره میشن و به سادگی می‌تونی مقدار مورد نظرت رو با استفاده از کلید پیدا کنی. این پایگاه داده‌ها برای دسترسی‌های مکرر و فوری بهینه‌سازی شدن.

نوشتن: عملیات نوشتن هم به دلیل سادگی ساختار داده‌ها و عدم نیاز به پیچیدگی‌های رابطه‌ای خیلی سریع انجام میشه.

▪︎ عملکرد بهینه: وقتی نیاز به دسترسی بسیار سریع به داده‌ها داری (مثل کشینگ یا مدیریت session)، یه Key-Value Storage انتخابی عالیه.


جمع‌بندی در مورد سرعت:

• دیتابیس SQLی: سرعت خوبی داره ولی در پرس‌وجوهای پیچیده یا با نوشتن های زیاد ممکنه کند بشه.

• دیتابیس NoSQLی: سرعت بالاست و برای مقیاس‌پذیری و مدیریت داده‌های بزرگ بهینه شده.

• دیتابیس Key-Valueی: سریع‌ترین انتخاب برای عملیات ساده و دسترسی فوری به داده‌ها.


⚠️⚠️⚠️توجه⚠️⚠️⚠️

هر کدوم از این دیتابیس‌ها بر اساس نیاز پروژه و نوع داده‌هایی که داری، می‌تونن بهترین عملکرد رو ارائه بدن.
اگر به عملکرد بسیار سریع نیاز داری و ساختار داده‌ها ساده است، Key-Value عالیه. ولی برای تراکنش‌های پیچیده و یکپارچگی داده‌ها، SQL ممکنه کمی کندتر باشه اما قابل اطمینان‌تره.


کانال کدنایت :

https://t.me/codenight_ir
❤4👍4🔥1
گرف کیوال یا GraphQL چیست ؟

@codenight_ir
@codenight_ir
@codenight_ir



👇👇👇
‏

GraphQL یه زبان کوئری برای API‌هاست که توسط فیسبوک توسعه داده شده. ⚒
برخلاف REST که در اون هر endpoint یک منبع مشخص رو برمی‌گردونه، توی GraphQL تو می‌تونی دقیقاً مشخص کنی چه داده‌ای رو نیاز داری و سرور فقط همون داده رو برمی‌گردونه. ♻️

به زبون ساده تر توی REST API، هر endpoint معمولاً به یک منبع خاص اشاره می‌کنه و وقتی به اون آدرس درخواست می‌فرستی، یک ساختار دادهٔ ثابت برمی‌گرده. به عبارت دیگه، تو به عنوان فرانت دولوپر✌🏻 کنترل زیادی روی شکل و محتوای داده‌ای که دریافت می‌کنی نداری اگه به داده‌های بیشتری یا کمتری نیاز داشته باشی، باید به endpointهای مختلفی درخواست بفرستی یا کل داده رو دریافت کنی و بخش‌های اضافه رو نادیده بگیری.🤷🏻‍♀️🤷🏻
اما در GraphQL، تو می‌تونی دقیقاً مشخص کنی که چه فیلدها و داده‌هایی رو نیاز داری. به جای داشتن چندین endpoint، فقط یک endpoint مشترک وجود داره و تو با نوشتن یک کوئری مشخص می‌کنی که کدوم بخش‌های داده رو می‌خوای.


برای مثال فرض کن یه سرویس کاربری داری:👇🏻👇🏻👇🏻👇🏻

در REST:
برای دریافت اطلاعات کاربر باید به /users/1 درخواست بزنی و ممکنه همه اطلاعات کاربر برگرده، مثل نام، ایمیل، آدرس، شماره تلفن و غیره، حتی اگه فقط به نام و ایمیل نیاز داشته باشی.
اگه بخوای پست‌های کاربر رو هم بگیری، باید یک درخواست جدا به /users/1/posts بفرستی.

در GraphQL:
می‌تونی یک کوئری بنویسی که فقط نام و ایمیل کاربر رو برگردونه.🔥
همچنین می‌تونی در همون کوئری درخواست کنی که لیست پست‌های کاربر رو هم برات بیاره.

{
user(id: 1) {
name
email
posts {
title
content
}
}
}

نتیجه: سرور دقیقاً همون داده‌هایی رو برمی‌گردونه که درخواست کردی، نه بیشتر و نه کمتر.😎


👍🏻 مزایا graphql

1. دریافت داده دقیق

2. کاهش over-fetching و under-fetching

‏3. Documentation بهتر: اسکیمای GraphQL به طور اتوماتیک داکیومنت ایجاد می‌کنه که نشون می‌ده چه داده‌هایی در API موجوده و کلاینت چطور می‌تونه بهشون دسترسی پیدا کنه.

4. یک endpoint برای همه درخواست‌ها


👎🏻معایب:

1. پیچیدگی: اگه تازه‌کاری، ممکنه یادگیری GraphQL در ابتدا یه کم گیج‌کننده باشه، مخصوصا اگه به REST عادت کرده باشی.

2. کاهش سرعت در درخواست‌های بزرگ:
گاهی اوقات درخواست‌های پیچیده‌ای که کلی داده از سرور می‌گیرن، می‌تونن بار سنگینی روی سرور بذارن و سرعت رو کاهش بدن.

3. عدم پشتیبانی از Caching به‌صورت پیش‌فرض:
بر خلاف REST که می‌تونی به‌راحتی نتایج رو کش کنی، تو GraphQL باید بیشتر حواست باشه که چطور نتایج رو کش کنی تا درخواست‌ها تکراری نشه و سرور زیر بار نره.

4. نیاز به تنظیمات و امنیت بیشتر:
به دلیل اینکه GraphQL خیلی انعطاف‌پذیره، باید حواست به مسائل امنیتی باشه و مطمئن بشی که کاربران به داده‌هایی که نباید دسترسی داشته باشن، دسترسی پیدا نمی‌کنن.


به طور کلی، انتخاب بین GraphQL و REST بستگی به نیازهای پروژه‌ات داره. اگه انعطاف‌پذیری و امکان تعریف دقیق داده‌ها مهمه، GraphQL می‌تونه انتخاب خوبی باشه، اما اگه سادگی و کارایی بیشتر مد نظرته، REST ممکنه مناسب‌تر باشه.

کانال آموزشی کدنایت :
@codenight_ir
❤2👍1
🔺با چند Utility Type پرکاربرد تایپ‌اسکریپت آشنا بشیم

ـ Utility Type ها چند تایپ درونی تایپ‌اسکریپت هستن که کمک می‌کنن راحت‌تر و سریع‌تر تایپ‌های خاص و پیچیده‌تری بسازیم

- برای مثال، یک Utility Type داریم به اسم ReturnType که کمک می‌کنه یک تایپ جدید از نوع خروجی یک تابع داشته باشیم

- تایپ‌اسکریپت بیشتر از ۲۰ تا Utility Type درونی داره که توی این مقاله می‌خوایم با اونها آشنا بشیم. قسمت اول:

https://codenight.ir/blogs/7-typescript-tricks

پ.ن:‌ از سوال‌های پرتکرار مصاحبه‌هاست 💯
👍1
استخدام توسعه دهنده نودجی اس در مجموعه یکتا هوش ایرسا:

محل کار اصفهان، اصفهان

امکان دورکاری


 مهارت های مورد نیاز: 

تسلط به JavaScript، TypeScript و Node.js

تسلط به مفاهیم مبتنی بر Rest Api

آشنایی با کتابخانه ها و فریم ورک های محبوب مانند Express & Nest.js

دارای تجربه در استفاده از MongoDB و PostgreSQL و سیستم Caching

 


 موارد زیر امتیاز محسوب میشود: 

کار با Docker & K8S

آشنایی با سیستم عامل های لینوکس یا یونیکس

توانایی کار با Git

آشنایی با حوزه DevOps و CI/CD

تسلط به زبان انگلیسی


حقوق پیشنهادی :
14 - 20 میلیون تومان

👇👇👇
لینک آگهی

https://jobvision.ir/jobs/job-detail/851060?ReferrerJobPosition=8&row=1&pageSize=30&keyword=برنامه%20نویس%20node.js&searchId=386088953763464938
#انگیزشی

hard work beats talent when talent doesn't work hard


پشت کار و سخت کار کردن میتونه خیلی بهتر از استعداد باشه 😉


کانال آموزشی کدنایت 👇👇

@codenight_ir
@codenight_ir
@codenight_ir
👍6👎2
#نکته ‼️
هر روز یه نکته :

مطالعه کدهای دیگران 📖
کدهای نوشته شده توسط دیگر برنامه نویس ها را مطالعه کنید تا با انواع روش‌های مختلف حل مسئله و ساختار و ابزار ها آشنا بشید
❤5👍1
‏HTTP چیه؟🌐

‌‏HTTP‏، که مخفف HyperText Transfer Protocol هست، یه پروتکل ارتباطی بین مرورگر و سروره.
این پروتکل به مرورگر اجازه می‌ده تا درخواست‌هایی مثل دریافت اطلاعات یه صفحه وب رو به سرور بفرسته و سرور هم جوابش رو با برگردوندن اون اطلاعات (مثل کد HTML، CSS، جاوااسکریپت و ...) می‌ده. به عبارت دیگه، HTTP شبیه به یه نامه‌رسانه که پیام‌های شما رو بین مرورگر و سرور جا به جا می‌کنه📨

اما یه مشکل بزرگ توی HTTP وجود داره؛ همه اطلاعاتی که رد و بدل می‌شه، به صورت متن ساده (plain text) هست. یعنی اگر کسی توی مسیر این نامه‌ها رو ببینه، می‌تونه راحت پیام‌های شما رو بخونه. مثلاً اگر یه کاربر در حال ورود به حساب کاربری خودش باشه و از HTTP استفاده کنه، اگه یه هکر🥷 اون وسط باشه، می‌تونه رمز عبور و اطلاعات شخصی رو ببینه.


‏HTTPS‏ چیه؟

اینجاست که HTTPS وارد می‌شه! HTTPS مخفف HyperText Transfer Protocol Secure هست و تفاوت اصلیش با HTTP اینه که اطلاعاتی که رد و بدل می‌شن، رمزنگاری شده🔐 (encrypted) هستن. این یعنی حتی اگر یه هکر توی مسیر باشه و پیام‌ها رو ببینه، نمی‌تونه اون‌ها رو بخونه چون همه چیز به صورت رمزنگاری شده هست.

برای اینکه HTTPS رو برای اپلیکیشن خودمون فعال کنیم، باید یه سری کارا انجام بدیم:

- گواهینامه SSL/TLS تهیه کنیم📄: این یه فایل دیجیتال هست که به سرور اجازه می‌ده تا اطلاعات رو رمزنگاری کنه. می‌تونید گواهینامه SSL رو از مراکز معتبری مثل Let's Encrypt به رایگان بگیرید.

- گواهینامه رو روی سرور نصب کنیم🖥: بعد از اینکه گواهینامه رو گرفتید، باید اونو روی سرورتون نصب کنید. این کار بسته به نوع سرور و وب‌سرور (مثل Apache، Nginx، و...) ممکنه یه کم فرق کنه.

- پیکربندی سرور برای استفاده از HTTPS🔧: باید سرور رو تنظیم کنیم که فقط از HTTPS استفاده کنه و درخواست‌های HTTP رو به HTTPS منتقل کنه. این کار هم به نوع وب‌سرور بستگی داره.

وقتی این مراحل رو انجام دادید، سایت یا اپلیکیشن شما امن‌تر می‌شه و کاربران می‌تونن با خیال راحت ازش استفاده کنن.

کانال آموزشی کدنایت :👇👇

@codenight_ir
@codenight_ir
@codenight_ir
👍4🔥2
#نکته ‼️
هر روز یه نکته :

عملگرایی 📖
من یک برنامه‌نویسم.
برنامه‌نویسی رو دوست دارم و موثرترین راهی که برای بهتر کردن کد میشناسم اینه که خودم بنویسمش.

«Robert C. Martin, Clean Architecture»

کانال آموزشی کدنایت:

@codenight_ir
@codenight_ir
@codenight_ir
❤3👍2
#نکته ‼️
هر روز یه نکته :

عدم قطعیت 📖
علم با اثبات درستی گزاره ها کار نمی‌کند، بلکه با نادرستی آن ها سر و کار دارد.

«Robert C. Martin, Clean Architecture»


کانال آموزشی کدنایت:

@codenight_ir
@codenight_ir
@codenight_ir
👍3
#نکته ‼️
هر روز یه نکته :

دوراندیشی 📖
معمار توانا سیستم را قابل فهم، قابل نگهداری، توسعه پذیر و با قابلیت اجرا و راه-اندازیِ سریع، راحت و کم هزینه می‌سازد .
هدف نهایی کاهش هزینه ها در طول چرخه حیات و افزایش بازدهی توسعه دهندگان است.
«Robert C. Martin, Clean Architecture»


کانال آموزشی کدنایت:

@codenight_ir
@codenight_ir
@codenight_ir
👍1
#نکته ‼️
هر روز یه نکته :

چابکی 📖
کدام تصمیم نسنجیده است؟
تصمیماتی که نیازمندی های کسب و کار و کاربرد های سیستم را نادیده می‌گیرند.

از جمله انتخاب فریم‌ورک، دیتابیس، وب سرور، کتاب‌خانه های کاربردی، تزریق وابستگی ها و ...

یک معمار توانا به چنین تصمیماتی تکیه نمیکند.
او بدون این که رود توسعه نرم افزار را دچار اختلال کند، چنین تصمیماتی را در آخرین لحظه ممکن اتخاذ می کند.

«Robert C. Martin, Clean Architecture»


کانال آموزشی کدنایت:

@codenight_ir
@codenight_ir
@codenight_ir
👍1
#نکته ‼️
هر روز یه نکته :

تمرکز و کار عمیق 📖
برخلاف آنچه انتظار می‌رود، مشغول انجام کاری بودن لذت بخش تر از فراغت از آن است.

چرا که هدف مندی، بازخورد محور بودن، چالش ها و موارد مشابه ما را مشتاق می کنند تا درگیر کار شویم، بیشتر تمرکز کنیم و خود را تمام و کمال وقف آن کنیم.

این درحالیست که وقت های آزاد ساختار مشخصی ندارند و برای لذت بردن از آن ها به تلاش و برنامه ریزی بیشتری نیاز است.

«Cal Newport, Deep Work: Rules for Focused Success in a Distracted World»


کانال آموزشی کدنایت:

@codenight_ir
@codenight_ir
@codenight_ir
👍3❤1
وقتی داری با Node.js کار می‌کنی و می‌خوای پکیج‌هایی که پروژه‌ات بهشون نیاز داره رو نصب کنی، معمولاً از npm i یا npm install استفاده می‌کنی. ولی یه روش دیگه هم برای این کار وجود داره: npm ci.
اما تفاوت npm i و npm ci چیه؟


‏`npm i` (یا `npm install`)

این دستور برای نصب پکیج‌ها استفاده میشه. وقتی شما این دستور رو اجرا می‌کنید، npm به فایل package.json نگاه می‌کنه و تمام پکیج‌های مورد نیاز رو نصب می‌کنه. اگر شما یک پکیج‌ جدید اضافه کرده باشید یا نسخه جدیدی از یک پکیج‌ موجود باشه، اینجا همه چیز به‌روز می‌شه. به عبارت دیگه، npm i برای نصب و به‌روزرسانی بسته‌هاست.

‏`npm ci`
حالا npm ci یک کمی متفاوت عمل می‌کنه. این دستور برای مواقعی استفاده می‌شه که شما می‌خواهید یک محیط دقیقاً مشابه با محیطی که قبلاً ساخته شده رو داشته باشید. این دستور به فایل package-lock.json نگاه می‌کنه و فقط پکیج‌هایی رو نصب می‌کنه که دقیقاً در این فایل مشخص شدن. بنابراین اگر شما در حال کار روی یک پروژه تیمی هستید و می‌خواهید مطمئن بشید که همه اعضای تیم دقیقاً از نسخه‌های شما استفاده می‌کنن، npm ci انتخاب بهتریه.


خلاصه:
‏- `npm i`: نصب و به‌روزرسانی بسته‌ها.
‏- npm ci: نصب بسته‌ها بر اساس فایل package-lock.json برای اطمینان از همسانی نسخه‌ها.

کانال آموزشی کدنایت:

@codenight_ir
@codenight_ir
@codenight_ir
👌8👍1👏1
#نکته ‼️
هر روز یه نکته :

قاطعیت📖
من عاشق دلخور کردن مردمم، چون به نظرم افرادی که به راحتی به دل میگیرن رو باید دلخور کرد!

«Linus Torvalds»


کانال آموزشی کدنایت:

@codenight_ir
@codenight_ir
@codenight_ir
#نکته ‼️
هر روز یه نکته :

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

«Linus Torvalds»


کانال آموزشی کدنایت:

@codenight_ir
@codenight_ir
@codenight_ir
👍1