Forwarded from LearnPOV | لرن پی او وی
💎 بررسی tree shaking در جاوااسکریپت 💎
درواقع Tree Shaking در جاوااسکریپت یک تکنیک بهینهسازیه که کدهای استفاده نشده رو از باندل نهایی حذف میکنه و به طور خاص با ماژولهای ES6 کار میکنه که از دستورهای
با کاهش حجم باندل با حذف کدهای اضافی و استفادهنشده، حجم فایل نهایی کاهش پیدا میکنه و بارگذاری صفحات سریعتر میشه و همچنین باعث میشه تا منابع سیستم کمتر مصرف بشن.
نحوه کار Tree Shaking ⚒️
درواقع Tree shaking تنها با ماژولهای ES6 کار میکند، زیرا این ماژولها به طور ایستا وابستگیهای خود را مشخص میکنند ( برای درک بهتر این مقاله رو بخونید ). هنگامی که از کدهای
- Minification and Dead Code Elimination: tree shaking معمولاً همراه با ابزارهای minification مانند UglifyJS یا Terser استفاده میشود. این ابزارها به فشردهسازی کد و حذف کدهای مرده کمک میکنند، اما tree shaking فراتر از حذف کدهای مرده عمل میکند و کدهای وابسته به ماژولهای غیرضروری را نیز از بین میبرد.
برای اجرای tree shaking در Webpack، باید حالت production را فعال کنید تا Webpack کدهای غیرضروری را به طور خودکار حذف کند. این کار باعث میشود که باندل نهایی حاوی تنها کدهایی باشد که واقعاً در برنامه استفاده شدهاند.
### مثال:
در یک پروژه که از کتابخانههای بزرگ مانند lodash یا moment.js استفاده میشود، بدون tree shaking کل کتابخانه در باندل قرار میگیرد. اما با tree shaking، تنها توابعی که واقعاً استفاده شدهاند در باندل نهایی قرار میگیرند و بقیه حذف میشوند.
این تکنیک به ویژه برای پروژههای بزرگ و سنگین مفید است، زیرا میتواند تأثیر زیادی بر روی کارایی و حجم باندل داشته باشد
۰ابزارهای رایج:
Webpack: از نسخه 2 به بعد، Webpack از Tree Shaking پشتیبانی میکند و میتوان آن را به راحتی با تنظیم حالت تولید (production) فعال کرد.
Rollup: Rollup نیز یکی دیگر از ابزارهایی است که به طور خاص برای Tree Shaking بهینه شده است.
درواقع Tree Shaking در جاوااسکریپت یک تکنیک بهینهسازیه که کدهای استفاده نشده رو از باندل نهایی حذف میکنه و به طور خاص با ماژولهای ES6 کار میکنه که از دستورهای
import و export برای مدیریت وابستگیها استفاده میکنند.هدف اصلی tree shaking اینه که فقط کدی که واقعاً در برنامه استفاده میشود در باندل نهایی باقی بماند و کدهای اضافی حذف شوند 💥چه مزایایی داره Tree Shaking ؟ 🚀
با کاهش حجم باندل با حذف کدهای اضافی و استفادهنشده، حجم فایل نهایی کاهش پیدا میکنه و بارگذاری صفحات سریعتر میشه و همچنین باعث میشه تا منابع سیستم کمتر مصرف بشن.
نحوه کار Tree Shaking ⚒️
درواقع Tree shaking تنها با ماژولهای ES6 کار میکند، زیرا این ماژولها به طور ایستا وابستگیهای خود را مشخص میکنند ( برای درک بهتر این مقاله رو بخونید ). هنگامی که از کدهای
import و export استفاده میشود، ابزارهایی مانند Webpack میتونن بفهمند کدوم بخش از کد مورد استفاده قرار نمیگیره و آنها را حذف کنند.نکته ای که وجود داره اینه که جاوااسکریپت به تنهایی نمیتونه tree shaking رو فعال کنه و bundlerهایی مثل webpack و rollup انجام میشه !
- Minification and Dead Code Elimination: tree shaking معمولاً همراه با ابزارهای minification مانند UglifyJS یا Terser استفاده میشود. این ابزارها به فشردهسازی کد و حذف کدهای مرده کمک میکنند، اما tree shaking فراتر از حذف کدهای مرده عمل میکند و کدهای وابسته به ماژولهای غیرضروری را نیز از بین میبرد.
برای اجرای tree shaking در Webpack، باید حالت production را فعال کنید تا Webpack کدهای غیرضروری را به طور خودکار حذف کند. این کار باعث میشود که باندل نهایی حاوی تنها کدهایی باشد که واقعاً در برنامه استفاده شدهاند.
### مثال:
در یک پروژه که از کتابخانههای بزرگ مانند lodash یا moment.js استفاده میشود، بدون tree shaking کل کتابخانه در باندل قرار میگیرد. اما با tree shaking، تنها توابعی که واقعاً استفاده شدهاند در باندل نهایی قرار میگیرند و بقیه حذف میشوند.
این تکنیک به ویژه برای پروژههای بزرگ و سنگین مفید است، زیرا میتواند تأثیر زیادی بر روی کارایی و حجم باندل داشته باشد
۰ابزارهای رایج:
Webpack: از نسخه 2 به بعد، Webpack از Tree Shaking پشتیبانی میکند و میتوان آن را به راحتی با تنظیم حالت تولید (production) فعال کرد.
Rollup: Rollup نیز یکی دیگر از ابزارهایی است که به طور خاص برای Tree Shaking بهینه شده است.
Forwarded from DevTwitter | توییت برنامه نویسی
Forwarded from LearnPOV | لرن پی او وی
امروز قراره تو پست جدید مبحث tree-shaking رو در جاوااسکریپت بررسی بکنیم و بببینیم چیه و به چه دردی میخوره
منتظرش باشید پست جدید ساعت ۵ و ۴۰ دقیقه منتشر میشه 🚀❤️
منتظرش باشید پست جدید ساعت ۵ و ۴۰ دقیقه منتشر میشه 🚀❤️
Forwarded from محتوای آزاد سهراب
کیدیای پلاسما ۶.۲ با شعار
عرضه شد.
🔗 https://kde.org/announcements/plasma/6/6.2.0/
توی این نسخه میتونید ترجمه های نصفه و نیمه من و بچههارو ببینید :))) البته داریم سعی میکنیم پلاسما رو کامل تر ترجمه کنیم.
@SohrabContents
«بیاید خلاق باشیم»
عرضه شد.
توی این نسخه میتونید ترجمه های نصفه و نیمه من و بچههارو ببینید :))) البته داریم سعی میکنیم پلاسما رو کامل تر ترجمه کنیم.
@SohrabContents
Please open Telegram to view this post
VIEW IN TELEGRAM
KDE Community
Plasma 6.2
Plasma becomes a friendlier, more accessible and smarter environment
Forwarded from ⚝
GitHub
GitHub - visioncortex/vtracer: Raster to Vector Graphics Converter
Raster to Vector Graphics Converter. Contribute to visioncortex/vtracer development by creating an account on GitHub.
visioncortex.org/vtracer
GitHub.com/visioncortex/vtracer
نرمافزار آزاد مبدّل تصاویر شطرنجی (raster) به تصاویر برداری (vector) در نسخههای خطّ فرمان، کتابخانهٔ راست، پایتون و همچنین برنامهٔ تحت وب:
#FLOSS #graphics #tool #vector #raster #معرفی
@amiria703_channel
GitHub.com/visioncortex/vtracer
نرمافزار آزاد مبدّل تصاویر شطرنجی (raster) به تصاویر برداری (vector) در نسخههای خطّ فرمان، کتابخانهٔ راست، پایتون و همچنین برنامهٔ تحت وب:
#FLOSS #graphics #tool #vector #raster #معرفی
@amiria703_channel
Forwarded from LearnPOV | لرن پی او وی
Forwarded from پروگرمرزمیم (Mehan Alavimajd)
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from LearnPOV | لرن پی او وی
Forwarded from GenX
This media is not supported in your browser
VIEW IN TELEGRAM
🔹 معرفی کارگاه : Ideation & Tagline
🔹 در این کارگاه، محمدجواد ابوطالبی در مورد چگونگی پیدا کردن و ارزیابی ایدهها، گامهای اولیه برای درک نیازهای بازار، نحوه نوشتن تگلاین برای ایده، روشهای معرفی اون و همچنین ترندهای روز حوزه هوش مصنوعی مولد صحبت خواهد کرد.
🔹 این کارگاه به شما کمک میکنه تا اولین گامها رو برای کشف یک ایده مناسب در حوزه هوش مصنوعی مولد بردارید و به سوالاتتون در زمینه ایدهپردازی و ارزیابی اون پاسخ میده.
🗓 جمعه ۲۰ مهرماه | آنلاین
🔴 لینک شرکت در جلسه، روز پنجشنبه برای ثبتنام کنندگان ایمیل میشه
🌐 ثبت نام در کارگاههای جنیکس : genx.build
✅ Telegram | ✅ twitter | Linkedin |✅ Instagram
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from CleverDevs (Mammad)
یکی از بچه های ایرانی خفن تو حوزه هوش مصنوعی یه چنل یوتوب زده و آموزش های جالبی برای استفاده از هوش مصنوعی و ابزار های مربوط به اون تولید میکنه
اگه میخواید تو این حوزه هم چیزایی بلد باشید یه سر به یوتوبش بزنید
https://www.youtube.com/@AIPulse24
#ai
@CleverDevs - @CleverDevsGp
اگه میخواید تو این حوزه هم چیزایی بلد باشید یه سر به یوتوبش بزنید
https://www.youtube.com/@AIPulse24
#ai
@CleverDevs - @CleverDevsGp
Forwarded from IRCF | اینترنت آزاد برای همه
نمیدانم چرا وزیر ارتباطات بهجای واژههای گویا و آشنای سانسور و فیلترینگ که جایگاه ویژهای در فرهنگ ما دارند، از عبارت نامانوس «مدیریت هوشمند» استفاده میکند.
سانسور و فیلتر خیلی زیباتر هم هستند!
🔍 ircf.space
@ircfspace
سانسور و فیلتر خیلی زیباتر هم هستند!
🔍 ircf.space
@ircfspace
Forwarded from ⚝
تو دنیایی که نوبل «فیزیک» به پیشگام «هوش مصنوعی» داده میشه، حرفی از عدم ارتباط باد معده و شقیقه نزنید.
#fun #news #science
@amiria703_channel
#fun #news #science
@amiria703_channel
Forwarded from DevTwitter | توییت برنامه نویسی
ذات فرانتاند به طرز وحشتناکی پیچیدهست. اینو زمانی متوجه میشید که بخواید یه تیکه از کد یه باندلر مثل ESbuild یا Rollup رو بخونید. یا بخواید درباره الگوریتمهای Virtual DOM توی مثلا ریکت یا Vue بخونید. فکر میکنید سادهاس چون فقط یه تیکه از رنگ دادن به دکمه رو توی فرانت دیدید.
@DevTwitter | <Yasha/>
@DevTwitter | <Yasha/>
Forwarded from Gopher Academy
در کامپایل کردن برنامههای Go با استفاده از فلگ
### فلگهای پرکاربرد:
1. **
حذف جدول سمبلها (symbol table) از باینری نهایی، که باعث کاهش حجم فایل اجرایی میشود.
-w
حذف اطلاعات اشکالزدایی DWARF از باینری. این کار باعث میشود برنامه اجرایی سبکتر شود اما دیباگ کردن آن مشکلتر باشد.
3.
این فلگ به شما اجازه میدهد که مقادیر متغیرهای رشتهای را در زمان کامپایل تغییر دهید. به طور معمول از این گزینه برای تنظیم اطلاعات نسخه یا بیلد در باینری استفاده میشود.
- مثال:
4. **
این فلگ برای تعیین لینککننده خارجی (external linker) استفاده میشود. معمولاً در پروژههایی که با زبانهای دیگر لینک میشوند، مانند C، استفاده میشود.
- مثال:
5. **
این فلگ مشخص میکند که لینکدهی چگونه انجام شود. حالتهای مختلفی وجود دارد:
-
لینکدهی به صورت داخلی (پیشفرض Go).
-
لینکدهی به وسیله لینکک-buildid=<id>*
7. **
به طور پیشفرض Go اطلاعات DWARF را فشرده میکند. با این فلگ میتوانید فشردهسازی ر-Bعال کنید.
8. **
این فلگ با
### استفاده ترکیبی:
شما میتوانید چندین فلگ را با هم ترکیب کنید. برای مثال:
این دستورات کنترل دقیقی بر نحوه ساخت و لینکدهی برنامه ارائه میدهند و بهینهسازیهای مختلفی را ممکن میسازند، مانند کاهش حجم فایل یا تنظیم اطلاعات خاص در زمان ساخت.
برای حذف سمبلها (مثل اطلاعات اشکالزدایی یا سمبلهای بلااستفاده) در یک برنامه Golang، میتوانید از فلگهای خاصی هنگام کامپایل استفاده کنید. به عنوان مثال:
اینجا:
- فلگ
- فلگ
➖➖➖➖➖➖➖➖
👑 @gopher_academy
-ldflags، میتوان فلگهای مختلفی را برای کنترل نحوه لینکدهی (linking) استفاده کرد. فلگهایی که شما اشاره کردید (-s و -w) به طور خاص برای حذف اطلاعات اضافی مانند جدول سمبلها و دادههای اشکالزدایی هستند. در ادامه فلگهای دیگری که میتوان با -ldflags استفاده کرد را لیست میکنم:### فلگهای پرکاربرد:
1. **
-s**:حذف جدول سمبلها (symbol table) از باینری نهایی، که باعث کاهش حجم فایل اجرایی میشود.
-w
-w: حذف اطلاعات اشکالزدایی DWARF از باینری. این کار باعث میشود برنامه اجرایی سبکتر شود اما دیباگ کردن آن مشکلتر باشد.
3.
-X <path/name>=<value>**: این فلگ به شما اجازه میدهد که مقادیر متغیرهای رشتهای را در زمان کامپایل تغییر دهید. به طور معمول از این گزینه برای تنظیم اطلاعات نسخه یا بیلد در باینری استفاده میشود.
- مثال:
go build -ldflags="-X 'main.version=1.0.0'"4. **
-extld=<linker>**: این فلگ برای تعیین لینککننده خارجی (external linker) استفاده میشود. معمولاً در پروژههایی که با زبانهای دیگر لینک میشوند، مانند C، استفاده میشود.
- مثال:
go build -ldflags="-extld=gcc"5. **
-linkmode=<mode>**:این فلگ مشخص میکند که لینکدهی چگونه انجام شود. حالتهای مختلفی وجود دارد:
-
internal: لینکدهی به صورت داخلی (پیشفرض Go).
-
external: لینکدهی به وسیله لینکک-buildid=<id>*
-buildid=<id>**: برای تنظیم build ID که به صورت پیشفرض توسط Go ایجاد میشود، استفاده میشود.7. **
-compressdwarf=false**: به طور پیشفرض Go اطلاعات DWARF را فشرده میکند. با این فلگ میتوانید فشردهسازی ر-Bعال کنید.
8. **
-B**:این فلگ با
-B در هنگام لینک کردن استفاده میشود تا از بازسازی باین-o <output-file>**-o <output-file>**: برای تعیین نام فایل اجرایی خروجی استفاده میشود.### استفاده ترکیبی:
شما میتوانید چندین فلگ را با هم ترکیب کنید. برای مثال:
go build -ldflags="-s -w -X 'main.version=1.0.0' -extld=gcc"
این دستورات کنترل دقیقی بر نحوه ساخت و لینکدهی برنامه ارائه میدهند و بهینهسازیهای مختلفی را ممکن میسازند، مانند کاهش حجم فایل یا تنظیم اطلاعات خاص در زمان ساخت.
برای حذف سمبلها (مثل اطلاعات اشکالزدایی یا سمبلهای بلااستفاده) در یک برنامه Golang، میتوانید از فلگهای خاصی هنگام کامپایل استفاده کنید. به عنوان مثال:
go build -ldflags="-s -w"
اینجا:
- فلگ
-s جدول سمبلها را حذف میکند.- فلگ
-w اطلاعات اشکالزدایی DWARF را حذف میکند.➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Linuxor ?
توی رقابت عادلانه، فیلتر شکن سازا همیشه از فیلتر شکن خراب کن ها جلو ترن، این شبیه همون قضیه دزد و پلیسه که اگه روزی پلیس بتونه به حدی برسه که هیچ دزدی ازش جلو نزنه، در واقع ماشین تورینگ رو زیر سوال برده.
این یعنی تا زمانی که اینترنت ملی نشده، همیشه میشه یه فیلتر شکن ساخت که کار کنه !
🐧 @Linuxor
این یعنی تا زمانی که اینترنت ملی نشده، همیشه میشه یه فیلتر شکن ساخت که کار کنه !
🐧 @Linuxor
Forwarded from Sadra Codes
+ I'm a nerd. I use C++.
- Show me how.
+Ok.
- Show me how.
+Ok.
for (int c=0; c<10; c++){}Forwarded from DevTwitter | توییت برنامه نویسی
این مقاله جالب در مورد ده تا سوال راجع به promise ها توی جاوااسکریپت هست
https://medium.com/frontend-canteen/can-you-answer-this-senior-level-javascript-promise-interview-question-69f7b6ffc2e7
سطح سوالات بالاس و تقریبا سوالات مصاحبهس همشون
@DevTwitter | <ممد کاکل به سر/>
https://medium.com/frontend-canteen/can-you-answer-this-senior-level-javascript-promise-interview-question-69f7b6ffc2e7
سطح سوالات بالاس و تقریبا سوالات مصاحبهس همشون
@DevTwitter | <ممد کاکل به سر/>