با رقیب جدید Next.js آشنا بشید! 💀
در بین فریمورک های توانمند جهت توسعه پروژه های فول استک، RedwoodJS به عنوان یک فریمورک نسبتا جدید و با یک چارچوب منسجم، شکاف بین بک اند و فرانت اند رو کمتر میکنه. RedwoodJS که با تمرکز بر تجربه و بهرهوری دولوپر ها توسعه داده شده، بهطور یکپارچه با فناوریهای محبوبی مثل React، GraphQL و Prisma ترکیب میشه تا توسعه پروژه هارو سادهتر کنه.
ویژگی های محبوب این فریمورک چیه؟
1⃣ یکپارچه سازی Full-Stack: یک ساختار "monorepo" رو ارائه میده که هم کد فرانت اند و هم کد بک اند رو در یک ریپازیتوری واحد نگه میداره. این رویکرد استقرار و نسخهسازی رو ساده میکنه و در عین حال یکپارچگی در سراسر برنامه رو تشویق میکنه.
2⃣ GraphQL API: این فریمورک از GraphQL برای query و دستکاری داده ها استفاده میکنه که امکان تعامل داده های انعطاف پذیر و کارآمد رو، فراهم میکنه. این با پشتیبانی داخلی Redwood برای تولید و مدیریت اسکیما های GraphQL تکمیل میشه.
3⃣ Prisma ORM: برای مدیریت دیتابیس، Prisma رو یکپارچه میکنه.
به صورت کلی RedwoodJS به عنوان یک فریمورک قدرتمند برای دولوپر هایی که به دنبال ساده سازی توسعه full-stack هستن، با تأکید بر بهره وری و قابلیت نگهداری برجسته هست. با ترکیب React، GraphQL و Prisma در یک بسته منسجم، فرآیند توسعه رو ساده کرده و از بهترین شیوه ها استفاده میکنه. برای کسب اطلاعات بیشتر به داکیومنتش مراجعه کنید.
#redwoodjs
@CodeModule
در بین فریمورک های توانمند جهت توسعه پروژه های فول استک، RedwoodJS به عنوان یک فریمورک نسبتا جدید و با یک چارچوب منسجم، شکاف بین بک اند و فرانت اند رو کمتر میکنه. RedwoodJS که با تمرکز بر تجربه و بهرهوری دولوپر ها توسعه داده شده، بهطور یکپارچه با فناوریهای محبوبی مثل React، GraphQL و Prisma ترکیب میشه تا توسعه پروژه هارو سادهتر کنه.
ویژگی های محبوب این فریمورک چیه؟
به صورت کلی RedwoodJS به عنوان یک فریمورک قدرتمند برای دولوپر هایی که به دنبال ساده سازی توسعه full-stack هستن، با تأکید بر بهره وری و قابلیت نگهداری برجسته هست. با ترکیب React، GraphQL و Prisma در یک بسته منسجم، فرآیند توسعه رو ساده کرده و از بهترین شیوه ها استفاده میکنه. برای کسب اطلاعات بیشتر به داکیومنتش مراجعه کنید.
#redwoodjs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12⚡2
واحد های اندازه گیری svh , dvh , vh و تفاوت هاشون در css 🔵
🔵 در CSS، واحدهای اندازهگیری
1️⃣ vh (Viewport Height) :
این واحد به معنای 1 درصد از ارتفاع نمای دید (viewport) هست. به عنوان مثال، 100vh برابر با 100 درصد از ارتفاع نمای دیده.و اگر کاربر اندازه پنجره مرورگر رو تغییر بده، اندازههای مبتنی بر
2️⃣ dvh (Dynamic Viewport Height) :
این واحد مشابه
3️⃣ svh (Small Viewport Height) :
این واحد هم به ارتفاع نمای دید مربوط میشه، اما به ارتفاع کوچکترین حالت نمای دید اشاره داره. این به این معناست که
‼️ تفاوتهای این واحد های اندازه گیری :
تغییرات داینامیک:
✅ و برای طراحیهای واکنشگرا و بهینهسازی تجربه کاربری در دستگاههای موبایل، استفاده از
این واحدها به شما کمک میکنن تا تجربه کاربری بهتری رو در دستگاههای مختلف فراهم کنید.
#css #styling
@CodeModule
dvh
، svh
و vh
به ترتیب به معنای "درصد ارتفاع نمای دید" (viewport height) هستن، اما هر کدوم کاربرد و رفتار خاص خودشون رو دارن.این واحد به معنای 1 درصد از ارتفاع نمای دید (viewport) هست. به عنوان مثال، 100vh برابر با 100 درصد از ارتفاع نمای دیده.و اگر کاربر اندازه پنجره مرورگر رو تغییر بده، اندازههای مبتنی بر
vh
نیز به طور اتوماتیک تغییر میکنه.این واحد مشابه
vh
هست، اما به طور خاص برای نمای داینامیک طراحی شده. به این معنی که dvh
به تغییرات ارتفاع نمای دید در حین نمایش محتوای پویا (مثل کیبورد موبایل) حساسه. به عنوان مثال، اگر کیبورد در دستگاههای موبایل باز بشه، dvh
ممکنه کمتر از vh
باشه چون ارتفاع قابل مشاهده کاهش پیدا میکنه.این واحد هم به ارتفاع نمای دید مربوط میشه، اما به ارتفاع کوچکترین حالت نمای دید اشاره داره. این به این معناست که
svh
همیشه برابر با کمترین ارتفاع نمای دیده که میتونه در هر زمان وجود داشته باشه. به عنوان مثال، اگه کاربر کیبورد رو باز کنه، svh
ممکنه به اندازهای کاهش پیدا کنه که فقط ارتفاع کوچکترین حالت رو نشون بده.تغییرات داینامیک:
dvh
و svh
به تغییرات دینامیک در صفحه (مثل باز شدن کیبورد) حساستر هستند، در حالی که vh
ثابته.dvh
و svh
میتونه مفیدتر باشه.این واحدها به شما کمک میکنن تا تجربه کاربری بهتری رو در دستگاههای مختلف فراهم کنید.
#css #styling
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20⚡5
چقدر از Turbo Repo اطلاعات دارید؟ 🤔
Turbo Repo یک ابزار مدرن و قدرتمند برای مدیریت و توسعه چندین پروژه در یک مخزن مشترک (Monorepo) هست. با استفاده از Turbo Repo میتونید پروژههای مختلفی مثل فرانتاند، بکاند، و بستههای مشترک رو در یک ساختار Monorepo قرار بدید و بهطور همزمان روی اونها کار کنید.
ویژگیها و مزایای Turbo Repo⬇️
🔵 مدیریت بهینه وابستگیها: Turbo Repo با مدیریت خودکار وابستگیها بین پروژهها، اطمینان میده که تنها بخشهایی تغییر داده شدن دوباره ساخته بشن. این ویژگی میتونه زمان بیلد رو به شدت کاهش بده.
🔵 کَش کردن بیلدها: یکی از ویژگیهای برجسته Turbo Repo استفاده از کش هوشمند برای ذخیره و بازیابی نتایج بیلد هست. این کار باعث میشه در صورت تغییرات کوچک در کد، نیازی به بیلد کامل پروژه نباشه و فرآیند سریعتر انجام بشه.
🔵 پشتیبانی از ابزارهای مختلف: Turbo Repo با بسیاری از ابزارهای توسعه مثل Webpack، Babel، و TypeScript به خوبی کار میکنه و قابلیت ادغام با CI/CD های مختلف رو داره.
🔵 کار تیمی: با استفاده از Turbo Repo، تیمها میتونن به صورت همزمان روی چندین پروژه کار کنن و تغییرات رو به صورت هماهنگ در مخزن Monorepo مدیریت کنن.
🔵 مونوریپوهای مقیاسپذیر: Turbo Repo به دولوپرا کمک میکنه تا یک Monorepo بزرگ و پیچیده رو با کارایی بالا مدیریت کنن. این ابزار بهخصوص برای تیمهایی که روی پروژههای بزرگ و چند بخشی کار میکنن، مفیده.
به طور کلی Turbo Repo یک ابزار قدرتمند هست که میتونه به تیمها در مدیریت پیچیدگیهای پروژههای بزرگ کمک کنه و دولوپرا رو قادر میسازه، تا با کارایی بیشتر و بهینهتری کد نویسی کنن. برای کسب اطلاعات بیشتر به داکیومنتش مراجعه کنید.
Document🌐
#turboRepo
@CodeModule
Turbo Repo یک ابزار مدرن و قدرتمند برای مدیریت و توسعه چندین پروژه در یک مخزن مشترک (Monorepo) هست. با استفاده از Turbo Repo میتونید پروژههای مختلفی مثل فرانتاند، بکاند، و بستههای مشترک رو در یک ساختار Monorepo قرار بدید و بهطور همزمان روی اونها کار کنید.
ویژگیها و مزایای Turbo Repo
به طور کلی Turbo Repo یک ابزار قدرتمند هست که میتونه به تیمها در مدیریت پیچیدگیهای پروژههای بزرگ کمک کنه و دولوپرا رو قادر میسازه، تا با کارایی بیشتر و بهینهتری کد نویسی کنن. برای کسب اطلاعات بیشتر به داکیومنتش مراجعه کنید.
Document
#turboRepo
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11
با ماژول Readline ورودی هارو مدیریت کن! 😐
ماژول «readline» در Node.js یک ابزار قدرتمند و همه کاره هست که فرایند خوندن ورودی، مثل ورودی استاندارد فرآیند ها («process.stdin») رو مدیریت میکنه. این ماژول یک رابط برای خوندن دادهها در یک خط و زمان فراهم میکنه و اون رو برای ساخت برنامههای کامندلاین، درخواستهای تعاملی و سایر برنامههای ورودی محور بسیار مفید میکنه.
چطور از این ماژول استفاده کنیم؟🤔
یکی از رایج ترین استفاده ها از ماژول readline، اینه که پرامت های کاربر رو مدیریت کنه و این کار رو میشه با استفاده از متد "question" انجام داد.
در این مثال، برنامه از کاربر اسمش رو میپرسه و سپس به او سلام میکنه. متد «rl.close()» برای بستن رابط پس از تکمیل فراخوانی میشه.
یا مثلا ما یک فایل داریم و میخوایم خط به خط اون رو بررسی کنیم.
میتونیم با استفاده از متد "createInterface" این کار رو انجام بدیم:
ما در مثال بالا خط به خط فایل داده شده رو بررسی میکنیم که آیا، «keyword» داده شده در فایل هست یا خیر.
به صورت کلی با استفاده از ماژول «readline»، دولوپر ها میتونن به راحتی ورودی کاربر رو مدیریت کنن، دادهها رو validate کنن، و تجربیات تعاملی رو مستقیماً از کامند لاین ایجاد کنن. برای کسب اطلاعات بیشتر به داکیومنت این ماژول مراجعه کنید.
#nodejs
@CodeModule
ماژول «readline» در Node.js یک ابزار قدرتمند و همه کاره هست که فرایند خوندن ورودی، مثل ورودی استاندارد فرآیند ها («process.stdin») رو مدیریت میکنه. این ماژول یک رابط برای خوندن دادهها در یک خط و زمان فراهم میکنه و اون رو برای ساخت برنامههای کامندلاین، درخواستهای تعاملی و سایر برنامههای ورودی محور بسیار مفید میکنه.
چطور از این ماژول استفاده کنیم؟
یکی از رایج ترین استفاده ها از ماژول readline، اینه که پرامت های کاربر رو مدیریت کنه و این کار رو میشه با استفاده از متد "question" انجام داد.
rl.question('What is your name? ', (answer) => {
console.log(`Hello, ${answer}!`);
rl.close();
});
در این مثال، برنامه از کاربر اسمش رو میپرسه و سپس به او سلام میکنه. متد «rl.close()» برای بستن رابط پس از تکمیل فراخوانی میشه.
یا مثلا ما یک فایل داریم و میخوایم خط به خط اون رو بررسی کنیم.
میتونیم با استفاده از متد "createInterface" این کار رو انجام بدیم:
let f = false;
const stream = fs.createReadStream(filePath, { encoding: 'utf8' });
const rl = createInterface({ input: stream });
rl.on('line', (line) => {
if (f) {
return;
}
if (line.includes(keyword)) {
f = true;
rl.close();
stream.destroy();
resolve(true);
}
});
ما در مثال بالا خط به خط فایل داده شده رو بررسی میکنیم که آیا، «keyword» داده شده در فایل هست یا خیر.
به صورت کلی با استفاده از ماژول «readline»، دولوپر ها میتونن به راحتی ورودی کاربر رو مدیریت کنن، دادهها رو validate کنن، و تجربیات تعاملی رو مستقیماً از کامند لاین ایجاد کنن. برای کسب اطلاعات بیشتر به داکیومنت این ماژول مراجعه کنید.
#nodejs
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡9🔥2
دورهمی های کدماژول، قسمت هفتم
موضوع: بیتکوین و بلاکچین💰
مهمان گفتگو: آقای کیهان علیزاده
زمان برگزاری: پنجشنبه (یکم شهریور)، ساعت ۱۰
فردا شب ساعت 10 این گفتگو و دورهمی رو از دست ندید(لینک میت رأس ساعت قرار میگیره)
@CodeModule
موضوع: بیتکوین و بلاکچین
مهمان گفتگو: آقای کیهان علیزاده
زمان برگزاری: پنجشنبه (یکم شهریور)، ساعت ۱۰
بیتکوین و بلاکچین، همیشه در شبکه های اجتماعی و اینترنت این واژگان رو شنیدیم و معمولا بیشتر با مطالبی مربوط به قیمت و بازار همراه بوده. توی این میتینگ کمی فنی تر و عمیق تر به تکنولوژی بلاکچین، نحوه عملکردش و مشکلاتی که حل میکنه با محوریت بیتکوین میپردازیم، و تمام ابهامات شما رو بر طرف میکنیم.
فردا شب ساعت 10 این گفتگو و دورهمی رو از دست ندید(لینک میت رأس ساعت قرار میگیره)
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥14❤🔥3
با کتابخانه Ammo.js آشنا بشید 😎
Ammo.js یک کتابخانه فیزیک سهبعدیه که به زبان جاوااسکریپت نوشته شده و بر اساس Bullet Physics Engine، که یک موتور فیزیک مشهور و قدرتمنده، توسعه داده شده.
این کتابخانه به دولوپرا این امکان رو میده که فیزیک واقعگرایانه رو به بازیها و برنامههای سهبعدی شون اضافه کنن. Ammo.js به ویژه برای پروژههای وب و بازیهای تحت وب طراحی شده و به راحتی میتونه با کتابخانههایی مثل Three.js و Babylon.js ترکیب بشه.
ویژگیهای خاص کتابخانه Ammo.js⬇️
◀️ فیزیک واقعگرایانه: Ammo.js از الگوریتمهای پیشرفتهای برای شبیهسازی فیزیک استفاده میکنه که شامل برخوردها، گرانش، و داینامیک اجسامه.
◀️ پشتیبانی از اشکال مختلف: این کتابخانه میتونه با اشکال هندسی مختلف (مثل مکعب، کره، و ...) کار کنه و همچنین از اشکال پیچیدهتر هم پشتیبانی میکنه.
◀️ سیستم برخورد: Ammo.js دارای یک سیستم برخورد قویه که میتونه چندین جسم رو به طور همزمان مدیریت کنه و برخوردهارو به دقت شبیهسازی کنه.
◀️ داینامیک اجسام: این کتابخانه امکان شبیهسازی داینامیک اجسام سخت و نرم رو فراهم میکنه، به طوری که میشه رفتارهای مختلفی رو برای اجسام مختلف تعریف کرد.
◀️ سازگاری با وب: Ammo.js به راحتی با مرورگرها کار میکنه و میتونه در پروژههای تحت وب بدون نیاز به نصب نرمافزار اضافی استفاده شه.
◀️ توسعهی بازیهای سهبعدی: در کنار کتابخانههایی مثل Three.js میتونه برای ایجاد بازیهای سهبعدی با فیزیک واقعگرایانه مورد استفاده قرار بگیره.
کتابخانه Ammo.js با ویژگیهایی مثل شبیهسازی دقیق برخوردها، پشتیبانی از انواع اشکال، و قابلیت ادغام آسون با باقی کتابخانهها، گزینهای عالی برای ایجاد بازیها و برنامههای تعاملیه. با توجه به مزایای متعددش، از جمله عملکرد بالا و پشتیبانی از جامعه، Ammo.js میتونه به عنوان یک انتخاب مناسب برای هر توسعهدهندهای که به دنبال افزودن فیزیک به پروژههای خود هست، در نظر گرفته بشه.
برای یادگیری این کتابخانه میتونید به داکیومنتش مراجعه کنید.
Document🌕
#js #library
@CodeModule
Ammo.js یک کتابخانه فیزیک سهبعدیه که به زبان جاوااسکریپت نوشته شده و بر اساس Bullet Physics Engine، که یک موتور فیزیک مشهور و قدرتمنده، توسعه داده شده.
این کتابخانه به دولوپرا این امکان رو میده که فیزیک واقعگرایانه رو به بازیها و برنامههای سهبعدی شون اضافه کنن. Ammo.js به ویژه برای پروژههای وب و بازیهای تحت وب طراحی شده و به راحتی میتونه با کتابخانههایی مثل Three.js و Babylon.js ترکیب بشه.
ویژگیهای خاص کتابخانه Ammo.js
کتابخانه Ammo.js با ویژگیهایی مثل شبیهسازی دقیق برخوردها، پشتیبانی از انواع اشکال، و قابلیت ادغام آسون با باقی کتابخانهها، گزینهای عالی برای ایجاد بازیها و برنامههای تعاملیه. با توجه به مزایای متعددش، از جمله عملکرد بالا و پشتیبانی از جامعه، Ammo.js میتونه به عنوان یک انتخاب مناسب برای هر توسعهدهندهای که به دنبال افزودن فیزیک به پروژههای خود هست، در نظر گرفته بشه.
برای یادگیری این کتابخانه میتونید به داکیومنتش مراجعه کنید.
Document
#js #library
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16⚡5
با Drizzle ORM آشنا بشید! 🦦
Drizzle ORM یک ORM سبک و ایمن برای Node.js و TypeScript هست که در جامعه دولوپر ها، به سرعت درحال محبوب شدنه. این ORM برای ارائه یک تجربه یکپارچه طراحی شده و به دلیل سادگی، عملکرد و تمرکز قوی بر روی یکپارچه سازی TypeScript، متمایز هست.
ویژگیها و امکانات Drizzle ORM⬇️
تایپاسکریپت-محور: Drizzle ORM به طور کامل از تایپاسکریپت پشتیبانی میکنه. این ویژگی به دولوپرا کمک میکنه تا در زمان توسعه، خطاهای تایپی و منطقی رو به حداقل برسونن.
انعطافپذیری و سادهسازی: این ORM با تمرکز بر سادگی طراحی شده و به دولوپرا این امکان رو میده تا به راحتی با پایگاههای داده کار کننن، بدون اینکه نیاز به یادگیری دستورات پیچیده SQL یا مفاهیم پیچیده ORM داشته باشن.
پشتیبانی از چندین پایگاه داده: Drizzle ORM از چندین سیستم مدیریت پایگاه داده SQL محبوب مثل PostgreSQL، MySQL، SQLite و ... پشتیبانی میکنه.
کارایی بالا: Drizzle ORM به دلیل سادگی و بهینهسازیهای داخلیش، عملکرد بسیار بالایی داره و برای برنامههای بزرگ و کوچیک مناسب هست.
کاملاً اوپنسورس: Drizzle ORM یک پروژه اوپنسورسه و توسط جامعه دولوپرا پشتیبانی و توسعه داده میشه.
این ویژگیها Drizzle ORM رو به یک گزینه جذاب برای دولوپرایی تبدیل میکنه که به دنبال یک ORM سبک و تایپاسکریپت-محور برای پروژههای خود هستن. برای کسب اطلاعات بیشتر به داکیومنتش مراجعه کنید.
#drizzle
@CodeModule
Drizzle ORM یک ORM سبک و ایمن برای Node.js و TypeScript هست که در جامعه دولوپر ها، به سرعت درحال محبوب شدنه. این ORM برای ارائه یک تجربه یکپارچه طراحی شده و به دلیل سادگی، عملکرد و تمرکز قوی بر روی یکپارچه سازی TypeScript، متمایز هست.
ویژگیها و امکانات Drizzle ORM
تایپاسکریپت-محور: Drizzle ORM به طور کامل از تایپاسکریپت پشتیبانی میکنه. این ویژگی به دولوپرا کمک میکنه تا در زمان توسعه، خطاهای تایپی و منطقی رو به حداقل برسونن.
انعطافپذیری و سادهسازی: این ORM با تمرکز بر سادگی طراحی شده و به دولوپرا این امکان رو میده تا به راحتی با پایگاههای داده کار کننن، بدون اینکه نیاز به یادگیری دستورات پیچیده SQL یا مفاهیم پیچیده ORM داشته باشن.
پشتیبانی از چندین پایگاه داده: Drizzle ORM از چندین سیستم مدیریت پایگاه داده SQL محبوب مثل PostgreSQL، MySQL، SQLite و ... پشتیبانی میکنه.
کارایی بالا: Drizzle ORM به دلیل سادگی و بهینهسازیهای داخلیش، عملکرد بسیار بالایی داره و برای برنامههای بزرگ و کوچیک مناسب هست.
کاملاً اوپنسورس: Drizzle ORM یک پروژه اوپنسورسه و توسط جامعه دولوپرا پشتیبانی و توسعه داده میشه.
این ویژگیها Drizzle ORM رو به یک گزینه جذاب برای دولوپرایی تبدیل میکنه که به دنبال یک ORM سبک و تایپاسکریپت-محور برای پروژههای خود هستن. برای کسب اطلاعات بیشتر به داکیومنتش مراجعه کنید.
#drizzle
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12⚡3
خروجی کد بالا؟😄
Anonymous Quiz
6%
7
9%
8
20%
10
28%
11
36%
نمیدونم، رو آیکون لامپ کلیک میکنم تا متوجه بشم💡
⚡13🔥2
درود
میخواستم یه Matlab خدمتتون عرض کنم🦦
من این زندگی Ruby شما نمیخوام. شاید فکر کنید من Sql هستم ولی نه من میخوام توی دلتون Java کنم و به خاطر شما با همه Django دعوا کنم.
بقیه Go میخورن دخالت کنن و باور کنید Rust میگم.
قبول کنید لطفا به Python میوفتم :))
#fun
@CodeModule
میخواستم یه Matlab خدمتتون عرض کنم
من این زندگی Ruby شما نمیخوام. شاید فکر کنید من Sql هستم ولی نه من میخوام توی دلتون Java کنم و به خاطر شما با همه Django دعوا کنم.
بقیه Go میخورن دخالت کنن و باور کنید Rust میگم.
قبول کنید لطفا به Python میوفتم :))
چیزی نگید یه برنامه نویس عاشق شده ... 🚶🏻
#fun
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
😁27👌3
Array indexing چیست؟🚀
Array indexing تکنیکیه که برای دسترسی به المنت ها در یک آرایه بر اساس موقعیت یا ایندکس اونها استفاده میشه. همونطور که میدونید هر المنت در یک آرایه با ایندکس خود مشخص میشه که نشون دهنده موقعیت اون نسبت به المنت اول هست. ایندکسینگ امکان دسترسی موثر و مستقیم به هر المنت در آرایه رو فراهم میکنه که برای کارهای محاسباتی مختلف ضروری هست. به عنوان مثال یک آرایه یک بعدی رو در نظر بگیرید:
در این آرایه 5 عنصر وجود داره که در مکان های حافظه به هم پیوسته ذخیره میشن. ایندکس المنت اول 0، المنت دوم 1 و... هست. و همونطور که میدونید برای دسترسی مثلا به المنت سوم آرایه باید اینکار رو انجام بدیم:
از اونجا که ایندکسینگ از صفر شروع میشه در واقع ایندکس دوم به المنت سوم اشاره داره. اما میدونستید میشه هر کدوم از این هارو محاسبه کرد؟
موقعیت هر المنت در یک آرایه یک بعدی رو میشه با استفاده از یک فرمول ساده محاسبه کرد. این فرمول آدرس پایه آرایه، ایندکس المنت و اندازه هر المنت در حافظه رو محاسبه میکنه( توجه داشته باشید فقط برای آرایه های یک بعدی جوابه)
به عنوان مثال، اگر آدرس پایه آرایهA هزار باشه و هر عدد صحیح 4 بایت حافظه اشغال کنه، آدرس المنت در ایندکس دوم میشه:
بنابراین، المنت در ایندکس 2 در حافظه به آدرس 1008 ذخیره میشه.
محاسبه آدرس المنت چند بعدی⬇️
اما این ها برای آرایه های یک بعدی بود و برای آرایه های چند بعدی مساعل پیچیده تر میشه، چون باید چندین ایندکس رو در نظر بگیرید. با این حال، فرآیند رو میشه به صورت انتراعی توضیح داد. به عنوان مثال فرمول کلی ما در آرایه های یک بعدی اینه: ( فرمول بالایی هم هست اما این جامع تره)
به صورت خلاصه معنی این فرمول یعنی این:
- B: آدرس پایه آرایه است.
- W: اندازه هر المنت در بایت.
- i: ایندکس المنت.
- L_B(lower bound): به کوچکترین یا مقدار ایندکس اولیه ای که المنت آرایه از اون ایندکس شروع میشه اشاره داره. ( به صورت دیفالت 0 هست که در نظر گرفته نمیشه)
#array
@CodeModule
Array indexing تکنیکیه که برای دسترسی به المنت ها در یک آرایه بر اساس موقعیت یا ایندکس اونها استفاده میشه. همونطور که میدونید هر المنت در یک آرایه با ایندکس خود مشخص میشه که نشون دهنده موقعیت اون نسبت به المنت اول هست. ایندکسینگ امکان دسترسی موثر و مستقیم به هر المنت در آرایه رو فراهم میکنه که برای کارهای محاسباتی مختلف ضروری هست. به عنوان مثال یک آرایه یک بعدی رو در نظر بگیرید:
int A[5] ={10, 20, 30, 40, 50}
در این آرایه 5 عنصر وجود داره که در مکان های حافظه به هم پیوسته ذخیره میشن. ایندکس المنت اول 0، المنت دوم 1 و... هست. و همونطور که میدونید برای دسترسی مثلا به المنت سوم آرایه باید اینکار رو انجام بدیم:
A[2] = 30;
از اونجا که ایندکسینگ از صفر شروع میشه در واقع ایندکس دوم به المنت سوم اشاره داره. اما میدونستید میشه هر کدوم از این هارو محاسبه کرد؟
موقعیت هر المنت در یک آرایه یک بعدی رو میشه با استفاده از یک فرمول ساده محاسبه کرد. این فرمول آدرس پایه آرایه، ایندکس المنت و اندازه هر المنت در حافظه رو محاسبه میکنه( توجه داشته باشید فقط برای آرایه های یک بعدی جوابه)
Address of A[i] = Base Address + (i * Size of each element)
به عنوان مثال، اگر آدرس پایه آرایهA هزار باشه و هر عدد صحیح 4 بایت حافظه اشغال کنه، آدرس المنت در ایندکس دوم میشه:
Address of A[2] = 1000 + (2 * 4) = 1008
بنابراین، المنت در ایندکس 2 در حافظه به آدرس 1008 ذخیره میشه.
محاسبه آدرس المنت چند بعدی
اما این ها برای آرایه های یک بعدی بود و برای آرایه های چند بعدی مساعل پیچیده تر میشه، چون باید چندین ایندکس رو در نظر بگیرید. با این حال، فرآیند رو میشه به صورت انتراعی توضیح داد. به عنوان مثال فرمول کلی ما در آرایه های یک بعدی اینه: ( فرمول بالایی هم هست اما این جامع تره)
Address of A[i] = B + W * (i - L_B)
به صورت خلاصه معنی این فرمول یعنی این:
- B: آدرس پایه آرایه است.
- W: اندازه هر المنت در بایت.
- i: ایندکس المنت.
- L_B(lower bound): به کوچکترین یا مقدار ایندکس اولیه ای که المنت آرایه از اون ایندکس شروع میشه اشاره داره. ( به صورت دیفالت 0 هست که در نظر گرفته نمیشه)
برای اینکه پست زیادی طولانی نشه، ادامه مطالب رو در تلگراف برای شما عزیزان آماده کردیم🙂
#array
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14⚡4
اگه برای تمرین و کدنویسی دنبال ui خاصی میگردید، این طرح فیگما رو به هیچ وجه از دست ندید 💀
🔵 Link
#figma
@CodeModule
#figma
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡19
از پلتفرم Hasura چقدر اطلاعات دارید؟🤔
Hasura یک پلتفرم برای ساخت و مدیریت APIهای GraphQL هست و به شما اجازه میده بهسرعت و بهراحتی APIهای مبتنی بر دیتابیس برای پروژههاتون ایجاد کنید.
برخی از ویژگی های Hasura⬇️
🔵 سرعت بالا: Hasura برای ایجاد API های GraphQL با سرعت بالا طراحی شده. با استفاده از Hasura، میتونید بدون نیاز به نوشتن کدهای طولانی، API های GraphQL قدرتمندی رو در کمترین زمان ممکن ایجاد کنید.
🔵 پشتیبانی از دیتابیس های مختلف: Hasura با اکثر دیتابیس های رایج مثل PostgreSQL و MySQL سازگار هست و به شما این امکان رو میده که به راحتی با این دیتابیس ها کار کنید و از اونها استفاده کنید.
🔵 امنیت: Hasura از جمله سرویس هایی هست که به دلیل امنیت بالاش، برای دولوپرا بسیار جذاب هست. به عنوان مثال، Hasura از JWT برای احراز هویت و سطوح دسترسی مختلف استفاده می کنه و به شما این امکان رو میده که تعیین کنید کدوم کاربرا به چه داده هایی دسترسی دارن.
🔵 قابلیت انتقال پذیری: Hasura امکان انتقال پذیری بین بیشتر سکوهای ابری رو فراهم می کنه و به شما این امکان رو میده که پروژههاتون رو به راحتی از یک سکو به سکو دیگه منتقل کنید.
🔵 مستندات کامل: Hasura مستندات و داکیومنت کاملی داره و به شما کمک می کنه تا به راحتی با این سرویس کار کنید و از اون، بهترین استفاده رو ببرید.
به طور کلی، Hasura یک سرویس قابل اعتماد، امن و سریع هست که به توسعه دولوپرا اجازه میده بدون نیاز به نوشتن کدهای طولانی، API های GraphQL قدرتمندی رو ایجاد کنن. برای کسب اطلاعات بیشتر به داکیومنتش مراجعه کنید.
#hasura
@CodeModule
Hasura یک پلتفرم برای ساخت و مدیریت APIهای GraphQL هست و به شما اجازه میده بهسرعت و بهراحتی APIهای مبتنی بر دیتابیس برای پروژههاتون ایجاد کنید.
برخی از ویژگی های Hasura
به طور کلی، Hasura یک سرویس قابل اعتماد، امن و سریع هست که به توسعه دولوپرا اجازه میده بدون نیاز به نوشتن کدهای طولانی، API های GraphQL قدرتمندی رو ایجاد کنن. برای کسب اطلاعات بیشتر به داکیومنتش مراجعه کنید.
#hasura
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡8🔥4
با پکیج «ms» تایم رو بهتر تنظیم کن!⏳
پکیج
از این پکیج چه استفاده ای میشه؟
استفاده اولیه از پکیج ms، تبدیل فرمت های زمانی قابل خوندن توسط انسان به میلی ثانیه و بالعکس هست. این میتونه به ویژه در سناریوهایی که نیاز به تنظیم زمان، فواصل یا تاخیر دارید، یا زمانی که با کتابخانه ها یا APIهایی کار میکنید که به زمان بر حسب میلی ثانیه نیاز دارن، مفید باشه. به عنوان مثال:
فانکشن
به صورت کلی پکیج
#ms
@CodeModule
پکیج
ms
یک ابزار سبک و محبوب برای Node.js هست که روشی ساده برای کار با زمان ارائه میده. این رشتههای زمانی قابل خوندن برای انسان، مانند «2 روز» یا «5 ساعت» رو به میلیثانیه تبدیل میکنه، و برای دولوپر هایی که نیاز به مدیریت فواصل زمانی در برنامههای خود دارن، بسیار راحت هست. «ms» با کمترین ردپایی و سهولت استفاده، به راهحلی برای مدیریت زمان در پروژههای مختلف Node.js تبدیل شده.از این پکیج چه استفاده ای میشه؟
استفاده اولیه از پکیج ms، تبدیل فرمت های زمانی قابل خوندن توسط انسان به میلی ثانیه و بالعکس هست. این میتونه به ویژه در سناریوهایی که نیاز به تنظیم زمان، فواصل یا تاخیر دارید، یا زمانی که با کتابخانه ها یا APIهایی کار میکنید که به زمان بر حسب میلی ثانیه نیاز دارن، مفید باشه. به عنوان مثال:
const ms = require('ms');
// Convert human-readable time to milliseconds
console.log(ms('2 days')); // 172800000
console.log(ms('10h')); // 36000000
console.log(ms('1m')); // 60000
console.log(ms('5s')); // 5000
// Convert milliseconds to human-readable time
console.log(ms(172800000)); // '2 days'
console.log(ms(36000000)); // '10h'
console.log(ms(60000)); // '1m'
console.log(ms(5000)); // '5s'
فانکشن
ms
به طور هوشمند استرینگ هایی مانند "2d"، "1h"، "5m" یا حتی "1y" رو تفسیر میکنه و اون ها رو به معادل های میلی ثانیه ای و برعکس تبدیل میکنه. به صورت کلی پکیج
ms
یک ابزار ساده و در عین حال قدرتمند هست که نحوه کار دولوپر ها با زمان در Node.js رو بهبود میبخشه. با فعال کردن تبدیل آسون بین قالبهای زمانی قابل خوندن توسط انسان و میلیثانیه، فرآیند تنظیم و مدیریت عملیات مبتنی بر زمان در برنامههای شما رو ساده میکنه. برای کسب اطلاعات بیشتر به داکیومنت این پکیج مراجعه کنید.#ms
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
npm
npm: ms
Tiny millisecond conversion utility. Latest version: 2.1.3, last published: 4 years ago. Start using ms in your project by running `npm i ms`. There are 9554 other projects in the npm registry using ms.
🔥13⚡4
با انواع Window Manager ها در لینوکس آشنا بشید 🪴
در واقع Window Manager ها در لینوکس نرمافزارهایی هستن که نحوهی نمایش و مدیریت پنجرهها (window) هارو در محیط دسکتاپ کنترل میکنن.
این نرم افزارها میتونن بهتنهایی یا بهعنوان بخشی از یک محیط دسکتاپ کامل (مثل GNOME یا KDE) عمل کنن. ویندو منیجر ها به دو دستهی اصلی تقسیم میشن: Tiling و Floating.
‼️ Window Manager های Tiling
ویندو منیجر های Tiling بهطور خودکار پنجرهها رو در صفحه بهصورت کاشیکاری (tiling) مرتب میکنن. این نوع از ویندو منیجر ها معمولاً برای کاربرایی که به کار با صفحهکلید تسلط دارن و نیاز به مدیریت بهینهی فضا دارن، مناسبن و همچنین به سریع تر شدن کار شما کمک میکنن. ویندو منیجر های tiling از جمله : i3 و Sway و Awesome و Xmonad و ...
✅ مزایای Tiling Window Managers:
◀️ استفاده بهینه از فضا: پنجرهها بهطور خودکار در فضای صفحه مرتب میشن و هیچ فضایی هدر نمیره.
◀️ افزایش بهرهوری: با استفاده از کلیدهای میانبر، کاربرا میتونن سریعتر بین پنجرهها جابجا بشن.
‼️ Window Manager های Floating
ویندو منیجر های Floating اجازه میدن که پنجرهها آزادانه در صفحه حرکت کنن و اندازهی اونا تغییر کنه. این نوع ویندو منیجر برای کاربرایی که ترجیح میدن پنجرهها رو بهصورت آزادانه مرتب کنن، مناسبه.ویندو منیجر های floating از جمله : Openbox و Fluxbox و Metacity
✅ مزایای Floating Window Managers:
◀️ سادهتر و شهودیتر: کاربرا میتونن پنجرهها رو به هر جایی که میخوان بکشن و اندازهی اونا رو تغییر بدن.
◀️ تنوع در چیدمان: کاربرا میتونن چیدمان دلخواه خودشونو ایجاد کنن و از فضای صفحه بهطور دلخواه استفاده کنن.
◀️ سازگاری با برنامههای گرافیکی: بسیاری از برنامههای گرافیکی بهتر با ویندو منیجر های Floating کار میکنن.
در کل انتخاب بین Tiling و Floating Window Managers بستگی به نیازها و عادات کاری کاربر داره. اگر کاربری به دنبال بهرهوری بالا و استفادهی بهینه از فضای صفحه است، ممکنه Tiling Manager مناسبتر باشه. اما اگر کاربر ترجیح میده که کنترل بیشتری بر روی چیدمان پنجرهها داشته باشه، Floating Manager گزینهی بهتری خواهد بود.
#linux #windowmanager
@CodeModule
در واقع Window Manager ها در لینوکس نرمافزارهایی هستن که نحوهی نمایش و مدیریت پنجرهها (window) هارو در محیط دسکتاپ کنترل میکنن.
این نرم افزارها میتونن بهتنهایی یا بهعنوان بخشی از یک محیط دسکتاپ کامل (مثل GNOME یا KDE) عمل کنن. ویندو منیجر ها به دو دستهی اصلی تقسیم میشن: Tiling و Floating.
ویندو منیجر های Tiling بهطور خودکار پنجرهها رو در صفحه بهصورت کاشیکاری (tiling) مرتب میکنن. این نوع از ویندو منیجر ها معمولاً برای کاربرایی که به کار با صفحهکلید تسلط دارن و نیاز به مدیریت بهینهی فضا دارن، مناسبن و همچنین به سریع تر شدن کار شما کمک میکنن. ویندو منیجر های tiling از جمله : i3 و Sway و Awesome و Xmonad و ...
ویندو منیجر های Floating اجازه میدن که پنجرهها آزادانه در صفحه حرکت کنن و اندازهی اونا تغییر کنه. این نوع ویندو منیجر برای کاربرایی که ترجیح میدن پنجرهها رو بهصورت آزادانه مرتب کنن، مناسبه.ویندو منیجر های floating از جمله : Openbox و Fluxbox و Metacity
در کل انتخاب بین Tiling و Floating Window Managers بستگی به نیازها و عادات کاری کاربر داره. اگر کاربری به دنبال بهرهوری بالا و استفادهی بهینه از فضای صفحه است، ممکنه Tiling Manager مناسبتر باشه. اما اگر کاربر ترجیح میده که کنترل بیشتری بر روی چیدمان پنجرهها داشته باشه، Floating Manager گزینهی بهتری خواهد بود.
#linux #windowmanager
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13⚡3
با graphql-yoga آشنا بشید! 🦦
«graphql-yoga» یک سرور GraphQL اوپن سورس هست که هدف اون ساده کردن فرآیند ساخت GraphQL API در Node.js هست. این برنامه با تمرکز بر تجربه ساده سازی توسعه طراحی شده، و محیطی با ویژگیهای کامل و در عین حال آسون برای استفاده هم برای مبتدیان و هم برای دولوپر های با تجربه فراهم میکنه.
چه استفاده ای از این ابزار میشه؟
«graphql-yoga» برای ساخت APIهای GraphQL منعطف و قدرتمند بدون پیچیدگی راه اندازی یک سرور سفارشی عالی هست. این بر روی کتابخانه محبوب «graphql-js» ساخته شده که سازگاری با مشخصات GraphQL رو تضمین میکنه. یکی از ویژگی های برجسته اون سادگیش هست. تنها با چند خط کد، میتونید یک سرور GraphQL قوی و آماده برای رسیدگی به query ها راه اندازی کنید.
«graphql-yoga» یک انتخاب عالی برای دولوپر ها هست که به دنبال ساخت سریع و کارآمد API GraphQL در Node.js هستن. سهولت استفاده، همراه با ویژگیهای قدرتمند و انعطافپذیری، اون رو به یک راهحل مناسب برای پروژههای کوچک و برنامههای کاربردی در مقیاس بزرگ تبدیل میکنه. برای کسب اطلاعات بیشتر به داکیومنت این ابزار مراجعه کنید.
#graphql_yoga
@CodeModule
«graphql-yoga» یک سرور GraphQL اوپن سورس هست که هدف اون ساده کردن فرآیند ساخت GraphQL API در Node.js هست. این برنامه با تمرکز بر تجربه ساده سازی توسعه طراحی شده، و محیطی با ویژگیهای کامل و در عین حال آسون برای استفاده هم برای مبتدیان و هم برای دولوپر های با تجربه فراهم میکنه.
چه استفاده ای از این ابزار میشه؟
«graphql-yoga» برای ساخت APIهای GraphQL منعطف و قدرتمند بدون پیچیدگی راه اندازی یک سرور سفارشی عالی هست. این بر روی کتابخانه محبوب «graphql-js» ساخته شده که سازگاری با مشخصات GraphQL رو تضمین میکنه. یکی از ویژگی های برجسته اون سادگیش هست. تنها با چند خط کد، میتونید یک سرور GraphQL قوی و آماده برای رسیدگی به query ها راه اندازی کنید.
«graphql-yoga» یک انتخاب عالی برای دولوپر ها هست که به دنبال ساخت سریع و کارآمد API GraphQL در Node.js هستن. سهولت استفاده، همراه با ویژگیهای قدرتمند و انعطافپذیری، اون رو به یک راهحل مناسب برای پروژههای کوچک و برنامههای کاربردی در مقیاس بزرگ تبدیل میکنه. برای کسب اطلاعات بیشتر به داکیومنت این ابزار مراجعه کنید.
#graphql_yoga
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡10🔥7