دورهمی های کدماژول، قسمت هفتم
موضوع: بیتکوین و بلاکچین💰
مهمان گفتگو: آقای کیهان علیزاده
زمان برگزاری: پنجشنبه (یکم شهریور)، ساعت ۱۰
فردا شب ساعت 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
5 اکستنشن کاربردی که احتمالا از اونها بی خبری😄
به کمک این اکستنشن میتونید کامنت های رنگی بر اساس شرایط کدتون بنویسید.
با استفاده از این اکستنشن میتونید کلاس های استایلی خودتون رو با یک سرچ ساده پیدا، و به محل نوشته شده اون استایل برید.
زمانی که پکیج یا هر چیز دیگه ای رو ایمپورت کنید، این اکستنشن حجم فایل ایمپورت شده رو به صورت بایت به شما نمایش میده.
با استفاده از این اکستنشن، خطاهای تایپ اسکریپت رو میتونید به صورت خوانا تری مشاهده و ببینید.
این اکستنشن به ما کمک میکنه لورم اپیسوم های فارسی بنویسیم. فقط کافیه عبارت plorem رو در ادیتور تایپ کنیم.
#extentions
@CodeModule
1⃣ Better Comments
به کمک این اکستنشن میتونید کامنت های رنگی بر اساس شرایط کدتون بنویسید.
2⃣ CSS Peak
با استفاده از این اکستنشن میتونید کلاس های استایلی خودتون رو با یک سرچ ساده پیدا، و به محل نوشته شده اون استایل برید.
3⃣ Import Cost
زمانی که پکیج یا هر چیز دیگه ای رو ایمپورت کنید، این اکستنشن حجم فایل ایمپورت شده رو به صورت بایت به شما نمایش میده.
4⃣ Pretty TypeScript Error
با استفاده از این اکستنشن، خطاهای تایپ اسکریپت رو میتونید به صورت خوانا تری مشاهده و ببینید.
5⃣ Persian Lorem
این اکستنشن به ما کمک میکنه لورم اپیسوم های فارسی بنویسیم. فقط کافیه عبارت plorem رو در ادیتور تایپ کنیم.
#extentions
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡11🔥6👌5
علتش چیه؟ 😠
چند وقت پیش داشتم الگوریتم مرتب سازی insertion رو پیاده سازی میکردم و برام سوال شد، چجوری میتونم سرعت مرتب سازی رو بیشتر کنم (در حد کنجکاوی). در هنگام پیادهسازی الگوریتم مرتبسازی Insertion Sort در جاوااسکریپت، معمولاً این الگوریتم به صورت زیر نوشته میشه:
در اینجا، زمان اجرای الگوریتم با استفاده از console.time() و console.timeEnd() اندازهگیری میشه. معمولاً زمان اجرای این کد بین ۱۰ تا ۱۵ میلیثانیه متغیر هست. به این صورت:
حالا اگر خروجی آرایه رو به یک رشته تبدیل کنیم و سپس اون رو برگردونیم:
خروجی:
با انجام این تغییر، زمان اجرای الگوریتم به صورت چشمگیری کاهش پیدا میکنه و بین ۸ تا ۱۰ میلیثانیه متغیر میشه.
سوال اصلی اما اینجاست:
چرا تبدیل آرایه به رشته باعث کاهش زمان اجرای الگوریتم مرتبسازی Insertion میشه؟ آیا این تغییرات قابل توجه هستن و باید در برنامه هایی که میسازیم نگران چنین تفاوتهای جزئی ای باشیم؟
#nodejs #array
@CodeModule
چند وقت پیش داشتم الگوریتم مرتب سازی insertion رو پیاده سازی میکردم و برام سوال شد، چجوری میتونم سرعت مرتب سازی رو بیشتر کنم (در حد کنجکاوی). در هنگام پیادهسازی الگوریتم مرتبسازی Insertion Sort در جاوااسکریپت، معمولاً این الگوریتم به صورت زیر نوشته میشه:
function insertionSort(arr) {
for (let i = 1; i < arr.length; i = i + 1) {
let cE = arr[i];
let j = i;
while (j > 0 && arr[j - 1] > cE) {
arr[j] = arr[j - 1];
j = j - 1;
}
arr[j] = cE;
}
return arr;
}
console.time();
const uArray = [20, 10, 4, 51, 0, 0xd3, 0x42, 0.4, 0.00002, 0x2];
const sArray = insertionSort(uArray);
console.log("Sorted array:", sArray);
console.timeEnd();
در اینجا، زمان اجرای الگوریتم با استفاده از console.time() و console.timeEnd() اندازهگیری میشه. معمولاً زمان اجرای این کد بین ۱۰ تا ۱۵ میلیثانیه متغیر هست. به این صورت:
Sorted array: [ 0, 0.00002, 0.4, 2, 4, 10, 20, 51, 66, 211 ]
default: 10.793ms
حالا اگر خروجی آرایه رو به یک رشته تبدیل کنیم و سپس اون رو برگردونیم:
return String(arr);
خروجی:
Sorted array: 0,0.00002,0.4,2,4,10,20,51,66,211
default: 8.899ms
با انجام این تغییر، زمان اجرای الگوریتم به صورت چشمگیری کاهش پیدا میکنه و بین ۸ تا ۱۰ میلیثانیه متغیر میشه.
سوال اصلی اما اینجاست:
چرا تبدیل آرایه به رشته باعث کاهش زمان اجرای الگوریتم مرتبسازی Insertion میشه؟ آیا این تغییرات قابل توجه هستن و باید در برنامه هایی که میسازیم نگران چنین تفاوتهای جزئی ای باشیم؟
#nodejs #array
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤🔥2
با استفاده از navigator در جاوااسکریپت، چه کارهایی میتونیم انجام بدیم؟ 🪐
تشخیص نوع دستگاه و سیستمعامل کاربر:
با استفاده از navigator.userAgent میتونیم نوع دستگاه و سیستمعامل کاربر رو تشخیص، و محتوای سایت یا اپلیکیشن رو بر اساس اون تنظیم کنیم.
دسترسی به اطلاعات شبکه (Network Information API):
از navigator.connection میتونین برای دریافت اطلاعات شبکه کاربر مثل نوع ارتباط (WiFi, 4G) و سرعت اون استفاده کنیم.
تشخیص وضعیت آنلاین/آفلاین بودن کاربر:
با استفاده از navigator.onLine میتونیم وضعیت آنلاین یا آفلاین بودن کاربر رو بررسی کنیم و تجربه کاربری رو بهبود ببخشیم.
استفاده از Web Share API برای به اشتراک گذاری محتوا:
با استفاده از navigator.share میتونیم امکان اشتراکگذاری محتوا رو در دستگاههای موبایل فراهم کنیم.
دسترسی به باتری دستگاه (Battery Status API):
با استفاده از navigator.getBattery میتونیم اطلاعاتی مثل سطح باتری و وضعیت شارژ رو دریافت کنید.
#navigator #javascript
@CodeModule
تشخیص نوع دستگاه و سیستمعامل کاربر:
با استفاده از navigator.userAgent میتونیم نوع دستگاه و سیستمعامل کاربر رو تشخیص، و محتوای سایت یا اپلیکیشن رو بر اساس اون تنظیم کنیم.
const userAgent = navigator.userAgent.toLowerCase();
if (userAgent.includes('iphone')) {
console.log('User is on an iPhone');
} else if (userAgent.includes('android')) {
console.log('User is on an Android device');
}
دسترسی به اطلاعات شبکه (Network Information API):
از navigator.connection میتونین برای دریافت اطلاعات شبکه کاربر مثل نوع ارتباط (WiFi, 4G) و سرعت اون استفاده کنیم.
const connection = navigator.connection navigator.mozConnection navigator.webkitConnection;
if (connection) {
console.log('Effective connection type:', connection.effectiveType);
console.log('Downlink speed:', connection.downlink, 'Mbps');
}
تشخیص وضعیت آنلاین/آفلاین بودن کاربر:
با استفاده از navigator.onLine میتونیم وضعیت آنلاین یا آفلاین بودن کاربر رو بررسی کنیم و تجربه کاربری رو بهبود ببخشیم.
if (navigator.onLine) {
console.log('User is online');
} else {
console.log('User is offline');
}
استفاده از Web Share API برای به اشتراک گذاری محتوا:
با استفاده از navigator.share میتونیم امکان اشتراکگذاری محتوا رو در دستگاههای موبایل فراهم کنیم.
const shareData = {
title: 'Example Page',
text: 'Check out this cool page!',
url: 'https://example.com'
};
navigator.share(shareData).then(() => {
console.log('Content shared successfully');
}).catch(err => {
console.error('Error sharing content:', err);
});
دسترسی به باتری دستگاه (Battery Status API):
با استفاده از navigator.getBattery میتونیم اطلاعاتی مثل سطح باتری و وضعیت شارژ رو دریافت کنید.
avigator.getBattery().then(battery => {
console.log('Battery level:', battery.level * 100 + '%');
console.log('Charging:', battery.charging ? 'Yes' : 'No');
});
#navigator #javascript
@CodeModule
Please open Telegram to view this post
VIEW IN TELEGRAM
👌43🔥7❤🔥4💔4
Code Module | کد ماژول
با استفاده از navigator در جاوااسکریپت، چه کارهایی میتونیم انجام بدیم؟ 🪐 تشخیص نوع دستگاه و سیستمعامل کاربر: با استفاده از navigator.userAgent میتونیم نوع دستگاه و سیستمعامل کاربر رو تشخیص، و محتوای سایت یا اپلیکیشن رو بر اساس اون تنظیم کنیم. const userAgent…
میبینم که یکی قلبش شکسته، احتمالا نمیدونسته جاوااسکریپت اینقدر کاربرد داره 😞
حالا فارغ از بحث فان، این حجم از ریکشن و حمایت هایی که میکنید، واقعا در شأن شما ماژولیتیای گل نیست و انتظار بیشتری میره.
با این که هیچ توقعی از شما ممبر عزیز ندارم، ولی کد ماژول جزو تک توک چنلایی هست که تن به هر محتوایی نمیده، تبلیغ نمیزاره و برای ممبراش احترام قائله.
این وسط داری رد میشی پست رو میخونی، حداقل یه ریکشن بزن تا یه قوت قلبی نویسنده پست بگیره.
نه فقط کد ماژول، هر چنلی که سرش به تنش بی ارزه.
حقیقتا یکم ناراحتم سر این مسأله، با این که بازم میگم توقعی نیست ولی جز خودم چنلهای دیگه ای هم میبینم که به این مشکل دچار هستن.
یکم سعی کنید بیشتر هوای ما تولید محتوا کننده هارو داشته باشید 🙏🏻💙
حالا فارغ از بحث فان، این حجم از ریکشن و حمایت هایی که میکنید، واقعا در شأن شما ماژولیتیای گل نیست و انتظار بیشتری میره.
با این که هیچ توقعی از شما ممبر عزیز ندارم، ولی کد ماژول جزو تک توک چنلایی هست که تن به هر محتوایی نمیده، تبلیغ نمیزاره و برای ممبراش احترام قائله.
این وسط داری رد میشی پست رو میخونی، حداقل یه ریکشن بزن تا یه قوت قلبی نویسنده پست بگیره.
نه فقط کد ماژول، هر چنلی که سرش به تنش بی ارزه.
حقیقتا یکم ناراحتم سر این مسأله، با این که بازم میگم توقعی نیست ولی جز خودم چنلهای دیگه ای هم میبینم که به این مشکل دچار هستن.
یکم سعی کنید بیشتر هوای ما تولید محتوا کننده هارو داشته باشید 🙏🏻💙
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥65⚡4💔1