Forwarded from Code Module | کد ماژول (genix)
Forwarded from Python Hints
بگذارید هرکس به آیین خودش باشد.
زنان را گرامی بدارید.
فرودستان را دریابید.
اجازه دهید هرکسی به تکلم قبیلهی خویش سخن بگوید.
آدمی تنها در مقام خویش به منزلت خواهد رسید.
۷ آبان روز بزرگداشت کوروش کبیر، همایون باد.
زنان را گرامی بدارید.
فرودستان را دریابید.
اجازه دهید هرکسی به تکلم قبیلهی خویش سخن بگوید.
آدمی تنها در مقام خویش به منزلت خواهد رسید.
۷ آبان روز بزرگداشت کوروش کبیر، همایون باد.
Forwarded from DevTwitter | توییت برنامه نویسی
چند هفته پیش یک یک ابزار جدید و رایگان از گوگل به اسم NotebookLM را معرفی کردم که میشه باهاش علاوه بر اینکه سوال و جواب بپرسید راجع به فایل هاتون یک فایل صوتی یا یکجور پادکست هم درست کنید که خیلی جالبه. الان هم توی Twitter این ابزار کلی trend شده.
حالا کمپانی Meta اومده یک ورژن اپن سورس این ابزار را داده به اسم NotebookLlama. میتونید فایل های pdf را در ۴ مرحله به پادکست صوتی تبدیل کنید.
مرحله 1: پیشپردازش PDF: با استفاده از مدل Llama-3.2-1B-Instruct، فایلهای PDF را پیشپردازش کرده و آن را به صورت فایل .txt ذخیره کنید.
مرحله 2: نگارش transcript: با استفاده از مدل Llama-3.1-70B-Instruct، رونوشت پادکست را از متن بنویسید.
مرحله 3: بازنویسی دراماتیک: با استفاده از مدل Llama-3.1-8B-Instruct، رونوشت را دراماتیکتر کنید.
مرحله 4: تبدیل متن به گفتار: با استفاده از parler-tts/parler-tts-mini-v1 و bark/suno، یک پادکست گفتگو محور تولید کنید.
https://github.com/meta-llama/llama-recipes/tree/main/recipes/quickstart/NotebookLlama
@DevTwitter | <Mehdi Allahyari/>
حالا کمپانی Meta اومده یک ورژن اپن سورس این ابزار را داده به اسم NotebookLlama. میتونید فایل های pdf را در ۴ مرحله به پادکست صوتی تبدیل کنید.
مرحله 1: پیشپردازش PDF: با استفاده از مدل Llama-3.2-1B-Instruct، فایلهای PDF را پیشپردازش کرده و آن را به صورت فایل .txt ذخیره کنید.
مرحله 2: نگارش transcript: با استفاده از مدل Llama-3.1-70B-Instruct، رونوشت پادکست را از متن بنویسید.
مرحله 3: بازنویسی دراماتیک: با استفاده از مدل Llama-3.1-8B-Instruct، رونوشت را دراماتیکتر کنید.
مرحله 4: تبدیل متن به گفتار: با استفاده از parler-tts/parler-tts-mini-v1 و bark/suno، یک پادکست گفتگو محور تولید کنید.
https://github.com/meta-llama/llama-recipes/tree/main/recipes/quickstart/NotebookLlama
@DevTwitter | <Mehdi Allahyari/>
Forwarded from Yasha
Forwarded from DevTwitter | توییت برنامه نویسی
Forwarded from DevTwitter | توییت برنامه نویسی
اون قدیما که asp form بازارش داغ بود؛ منم کار میکردم.
رفته بودم یه شرکت گفت تخصصت چیه؟
گفتم asp form.
یهو یکی از دستشویی شرکت داد زد سلامتی دِرَگ اَند دِراپی ها
<سفیر ایران در مریخ/>
@DevTwitter
رفته بودم یه شرکت گفت تخصصت چیه؟
گفتم asp form.
یهو یکی از دستشویی شرکت داد زد سلامتی دِرَگ اَند دِراپی ها
<سفیر ایران در مریخ/>
@DevTwitter
Forwarded from Gopher Academy
🔵 عنوان مقاله
Using Go Embed
🟢 خلاصه مقاله:
مقاله توجه را به قابلیت مهمی در زبان برنامهنویسی Go با نام `go:embed` معطوف میکند که از نسخه 1.16 موجود است. این دستورالعمل امکان ضمیمه کردن فایلهای استاتیک و حتی پوشههای کامل را درون باینریها فراهم میکند. به جای ذخیرهسازی فایلها و دایرکتوریهای مورد نیاز برنامه به صورت جداگانه، `go:embed` این امکان را میدهد که محتویات مورد نظر را مستقیماً درون ساختار (`struct`) خود برنامه ضمیمه کنید.
با استفاده از این قابلیت، برنامهنویسان میتوانند از کاراکترهای وایلدکارد برای اضافه کردن فایلها استفاده کنند و به تعبیه مستقیم دایرکتوریها در اپلیکیشن پردازند، که در نتیجه مدیریت فایلها را سادهتر میکند و بهینگی برنامه را افزایش میدهد. این رویکرد میتواند به خصوص برای توزیع نرمافزارهای تحت وب و اپلیکیشنهای مبتنی بر GUI که نیازمند منابع خارجی همچون تصاویر، قالبها و فایلهای سبک هستند، مفید واقع شود.
🟣لینک مقاله:
https://golangweekly.com/link/160758/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Using Go Embed
🟢 خلاصه مقاله:
مقاله توجه را به قابلیت مهمی در زبان برنامهنویسی Go با نام `go:embed` معطوف میکند که از نسخه 1.16 موجود است. این دستورالعمل امکان ضمیمه کردن فایلهای استاتیک و حتی پوشههای کامل را درون باینریها فراهم میکند. به جای ذخیرهسازی فایلها و دایرکتوریهای مورد نیاز برنامه به صورت جداگانه، `go:embed` این امکان را میدهد که محتویات مورد نظر را مستقیماً درون ساختار (`struct`) خود برنامه ضمیمه کنید.
با استفاده از این قابلیت، برنامهنویسان میتوانند از کاراکترهای وایلدکارد برای اضافه کردن فایلها استفاده کنند و به تعبیه مستقیم دایرکتوریها در اپلیکیشن پردازند، که در نتیجه مدیریت فایلها را سادهتر میکند و بهینگی برنامه را افزایش میدهد. این رویکرد میتواند به خصوص برای توزیع نرمافزارهای تحت وب و اپلیکیشنهای مبتنی بر GUI که نیازمند منابع خارجی همچون تصاویر، قالبها و فایلهای سبک هستند، مفید واقع شود.
🟣لینک مقاله:
https://golangweekly.com/link/160758/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Bytesizego
Using Go Embed
The go:embed feature simplifies the inclusion of static assets in your Go applications. By embedding files and directories at compile time, you can create more portable and self-contained binaries.
Forwarded from LearnPOV | لرن پی او وی
This media is not supported in your browser
VIEW IN TELEGRAM
🔸 چند وقت پیش وبسایت MagicUI رو بهتون معرفی کردم که کلی کامپوننت های تعمالی و انیمیشنی خفن آماده داشت
🔸 حالا یه سایت پیدا کردم که بیش از 100 تا کامپوننت آماده انیمیشنی و تعاملی خفن داره که بر پایه tailwindcss, framer-motion و ... ساخته شدن و خودم تقریبا همشون رو دیدم و واقعا جذاب و خفن بودن
🔸 بهتون پیشنهاد میکنم حتما یه سری بهش بزنید، سبک کامپوننت هاشم با MagicUI متفاوته و یسری کامپوننت های متقاوت تر هم داره که میتونید خلاصش رو توی ویدیو همین پست ببینید
🌐 مشاهده وبسایت
امیدوارم از این مطلب لذت برده باشید، با ریاکشنای خودتون بهمون انرژی بدید ❤️🔥
🔸 حالا یه سایت پیدا کردم که بیش از 100 تا کامپوننت آماده انیمیشنی و تعاملی خفن داره که بر پایه tailwindcss, framer-motion و ... ساخته شدن و خودم تقریبا همشون رو دیدم و واقعا جذاب و خفن بودن
🔸 بهتون پیشنهاد میکنم حتما یه سری بهش بزنید، سبک کامپوننت هاشم با MagicUI متفاوته و یسری کامپوننت های متقاوت تر هم داره که میتونید خلاصش رو توی ویدیو همین پست ببینید
🌐 مشاهده وبسایت
راستی یه دکمه گیتهابم داره که خیلی خفنه لینکشو میزارم ببینیید 🔻
🚀 GitHub Button
#️⃣ #tools #component
⭐ 𝗖𝗛𝗔𝗡𝗡𝗘𝗟 | 𝗚𝗥𝗢𝗨𝗣
Forwarded from DevTwitter | توییت برنامه نویسی
فوت و فن مدیریت امنیت:
برای سازمانها و شرکتهای کوچک تامین هزینه برای خرید تجهیزاتی مانند hashtag#waf بسیار بالا بوده و بعضا با مقاومت مدیران روبرو میشه.
پیشنهاد میشه از ابزار open source برای اینکار استفاده کنید و در ادامه با ارائه گزارش لاگهای فعالیت و رفع مخاطرات و تصویر سازی سناریو های ممکن مدیران را از ریسک نبود تجهیز مطلوب آگاه کنیم.
ابزار bunkerweb رو برای waf داشته باشید
https://github.com/bunkerity/bunkerweb
@DevTwitter | <Peyman khodabandeh/>
برای سازمانها و شرکتهای کوچک تامین هزینه برای خرید تجهیزاتی مانند hashtag#waf بسیار بالا بوده و بعضا با مقاومت مدیران روبرو میشه.
پیشنهاد میشه از ابزار open source برای اینکار استفاده کنید و در ادامه با ارائه گزارش لاگهای فعالیت و رفع مخاطرات و تصویر سازی سناریو های ممکن مدیران را از ریسک نبود تجهیز مطلوب آگاه کنیم.
ابزار bunkerweb رو برای waf داشته باشید
https://github.com/bunkerity/bunkerweb
@DevTwitter | <Peyman khodabandeh/>
Forwarded from Yasha
This media is not supported in your browser
VIEW IN TELEGRAM
مسابقات المپیک فناوری
Forwarded from LearnPOV | لرن پی او وی
من از این برنامه استفاده میکنم که هر بیست دقیقه یکبار صفحه رو ازم میگیره که برم یه دوری بزنم و بشینم:
https://slgobinath.github.io/SafeEyes/
https://slgobinath.github.io/SafeEyes/
Forwarded from Armon technical logs (armon Taheri)
X (formerly Twitter)
Hooman (@MyMazinLife) on X
میانسالی دوران عجیب و متفاوتی از زندگی است. مدتها است در فکرم است از چیزهای که در ذهنم و احساسم میگذره بنویسم. بعد با خودم فکر میکنم الان شاید وقتش نباشه. این تویت باشه اینجا، برای اینکه یادم بمونه که به تدریج زیرش بنویسم. شاید بقیه هم تشویقش شدند بنویسند…
Forwarded from Laravel News
Creating a CLI Application With Laravel and Docker https://laravel-news.com/creating-a-cli-app-with-laravel-and-docker
Laravel News
Creating a CLI Application With Laravel and Docker - Laravel News
While Laravel is traditionally used to create web applications, some applications need robust CLI commands that you can run via Docker in production environments. Learn how to configure your Docker image to run the Artisan CLI, which will give you a foundation…
Forwarded from Laravel News
Laravel Herd Adds Native MongoDB Support https://laravel-news.com/laravel-herd-adds-native-mongodb-support
Laravel News
Laravel Herd Adds Native MongoDB Support - Laravel News
Laravel Herd has added native MongoDB support, making it super easy to integrate MongoDB into your Laravel applications.
Forwarded from Syntax | سینتکس (𝙰𝚖𝚒𝚛𝚑𝚘𝚜𝚜𝚎𝚒𝚗)
This media is not supported in your browser
VIEW IN TELEGRAM
😂😔
#fun
#fun
Forwarded from Gopher Academy
✍️Amir NiloofariAmir Niloofari
آشنایی با Garbage Collector در Go
: مدیریت حافظه کارآمد برای نرمافزارها با کارایی بالا - قسمت ۱
همانطور که در پست قبل اشاره شد یکی از تمایزهای کلیدی Go، جمع آوری زباله همزمان(Concurrent Garbage collector) آن است که به طور هدفمند برای محیط های ابری و سرورهای مدرن ساخته شده است.
با Go، توسعهدهندگان میتوانند برنامههایی با کارایی بالا بسازند و در عین حال مدیریت حافظه را به یک جمعآوری زباله بسیار بهینه و کم تأخیر بسپارند.
در این پست قرار است نگاهی عمیقتر به دلیل متمایز شدن Go’s GC و نحوه عملکرد آن بیندازیم:
- الگوریتم Mark-and-Sweep همزمان:
Go از فرآیند جمعآوری زباله Mark-and-Sweep استفاده میکند که همزمان با برنامه اجرا میشود. در مرحله Mark، لایو آبجکتها (آبجکتی که حداقل یک مرجع به آن وجود دارد) شناسایی و علامت گذاری می شوند. سپس در مرحله Sweep حافظه را برای آبجکتهایی که دیگر به آنها ارجاع داده نمی شود اختصاص می دهد. زیبایی این فرآیند این است که به موازات اجرای برنامه اتفاق میافتد که برای ساخت برنامههای حساس به عملکرد مانند سرورهای وب یا سیستمهای توزیع شده که در آن وقفهها میتوانند مستقیماً بر تاخیر (latency) تاثیر بگذارند، بسیار مهم است.
- تأخیر کم:
GC Go برای سناریوهای Low latency بهینه شده است که این برای برنامه هایی که نیاز به زمان پاسخ سریع دارند، مانند سیستم های بلادرنگ یا API هایی که حجم زیادی از ترافیک را مدیریت می کنند، ایده آل است. جمعآوری زباله به گونهای طراحی شده است که مکثها را به حداقل میرساند و حجم کاری خود را در چندین هسته CPU توزیع میکند و عملکرد برنامه را صاف و بدون وقفه نگه میدارد.
- الگوریتم علامت گذاری سه رنگ(Tricolor Marking):
اگر بخواهیم پشت پرده عملکرد زبان گو در مدیریت آبجکتها را ببینیم از الگوریتم علامت گذاری سه رنگ برای مدیریت کارآمد چرخه عمر اشیا استفاده می کند.
آبجکتها به عنوان سفید (غیرقابل دسترسی)، خاکستری (قابل دسترسی اما به طور کامل کاوش نشده)، یا سیاه (کاملا قابل دسترسی و کاوش شده) طبقه بندی می شوند. این رویکرد تضمین میکند که آبجکتها زنده به درستی علامتگذاری میشوند، در حالی که آبجکتها غیرقابل دسترس کنار گذاشته میشوند، حفظ حافظه غیر ضروری را کاهش میدهد و استفاده کارآمدتر از حافظه را تضمین میکند.
- نوشتن موانع برای اصلاحات حافظه ایمن:
Go در مرحله علامتگذاری از write barriers استفاده میکند تا هنگام تغییر آبجکتها در حافظه، دقت را حفظ کند.
این موانع بهعنوان نقاط بازرسی عمل میکنند و اطمینان میدهند که جمعآورنده زباله از تغییرات در ارجاعات آبجکتها حتی زمانی که برنامه هنوز در حال اجرا است، آگاه است.
این مکانیسم از Memory corruption جلوگیری می کند (هنگامی که محتویات یک مکان حافظه به دلیل رفتار برنامهای که از قصد برنامهنویس اصلی یا سازههای برنامه/زبان فراتر میرود، تغییر میکند.) و تضمین می کند که آبجکتها زنده به اشتباه جابجا نمی شوند و کل سیستم را انعطاف پذیرتر و پاسخگوتر می کند.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
آشنایی با Garbage Collector در Go
: مدیریت حافظه کارآمد برای نرمافزارها با کارایی بالا - قسمت ۱
همانطور که در پست قبل اشاره شد یکی از تمایزهای کلیدی Go، جمع آوری زباله همزمان(Concurrent Garbage collector) آن است که به طور هدفمند برای محیط های ابری و سرورهای مدرن ساخته شده است.
با Go، توسعهدهندگان میتوانند برنامههایی با کارایی بالا بسازند و در عین حال مدیریت حافظه را به یک جمعآوری زباله بسیار بهینه و کم تأخیر بسپارند.
در این پست قرار است نگاهی عمیقتر به دلیل متمایز شدن Go’s GC و نحوه عملکرد آن بیندازیم:
- الگوریتم Mark-and-Sweep همزمان:
Go از فرآیند جمعآوری زباله Mark-and-Sweep استفاده میکند که همزمان با برنامه اجرا میشود. در مرحله Mark، لایو آبجکتها (آبجکتی که حداقل یک مرجع به آن وجود دارد) شناسایی و علامت گذاری می شوند. سپس در مرحله Sweep حافظه را برای آبجکتهایی که دیگر به آنها ارجاع داده نمی شود اختصاص می دهد. زیبایی این فرآیند این است که به موازات اجرای برنامه اتفاق میافتد که برای ساخت برنامههای حساس به عملکرد مانند سرورهای وب یا سیستمهای توزیع شده که در آن وقفهها میتوانند مستقیماً بر تاخیر (latency) تاثیر بگذارند، بسیار مهم است.
- تأخیر کم:
GC Go برای سناریوهای Low latency بهینه شده است که این برای برنامه هایی که نیاز به زمان پاسخ سریع دارند، مانند سیستم های بلادرنگ یا API هایی که حجم زیادی از ترافیک را مدیریت می کنند، ایده آل است. جمعآوری زباله به گونهای طراحی شده است که مکثها را به حداقل میرساند و حجم کاری خود را در چندین هسته CPU توزیع میکند و عملکرد برنامه را صاف و بدون وقفه نگه میدارد.
- الگوریتم علامت گذاری سه رنگ(Tricolor Marking):
اگر بخواهیم پشت پرده عملکرد زبان گو در مدیریت آبجکتها را ببینیم از الگوریتم علامت گذاری سه رنگ برای مدیریت کارآمد چرخه عمر اشیا استفاده می کند.
آبجکتها به عنوان سفید (غیرقابل دسترسی)، خاکستری (قابل دسترسی اما به طور کامل کاوش نشده)، یا سیاه (کاملا قابل دسترسی و کاوش شده) طبقه بندی می شوند. این رویکرد تضمین میکند که آبجکتها زنده به درستی علامتگذاری میشوند، در حالی که آبجکتها غیرقابل دسترس کنار گذاشته میشوند، حفظ حافظه غیر ضروری را کاهش میدهد و استفاده کارآمدتر از حافظه را تضمین میکند.
- نوشتن موانع برای اصلاحات حافظه ایمن:
Go در مرحله علامتگذاری از write barriers استفاده میکند تا هنگام تغییر آبجکتها در حافظه، دقت را حفظ کند.
این موانع بهعنوان نقاط بازرسی عمل میکنند و اطمینان میدهند که جمعآورنده زباله از تغییرات در ارجاعات آبجکتها حتی زمانی که برنامه هنوز در حال اجرا است، آگاه است.
این مکانیسم از Memory corruption جلوگیری می کند (هنگامی که محتویات یک مکان حافظه به دلیل رفتار برنامهای که از قصد برنامهنویس اصلی یا سازههای برنامه/زبان فراتر میرود، تغییر میکند.) و تضمین می کند که آبجکتها زنده به اشتباه جابجا نمی شوند و کل سیستم را انعطاف پذیرتر و پاسخگوتر می کند.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Gopher Academy
آشنایی با Garbage Collector در Go: مدیریت حافظه کارآمد برای نرمافزارها با کارایی بالا - قسمت ۲
میتوانید قسمت ۱ را در پست قبلی مطالعه کنید. ادامه:
- جمع آوری زباله قابل تنظیم:
یکی از ویژگی های برجسته Go، جمع آوری زباله قابل تنظیم آن است. توسعهدهندگان میتوانند فرکانس GC را با استفاده از متغیر محیطی «GOGC» تنظیم کنند، که تعداد دفعات کار جمعآور زباله را نسبت به رشد پشته کنترل میکند.
مقدار پیش فرض 100 است، به این معنی که GC پس از دو برابر شدن اندازه پشته فعال می شود. افزایش مقدار «GOGC» فرکانس جمعآوری زباله را کاهش میدهد، مصرف حافظه را با وقفههای کمتر عوض میکند، در حالی که کاهش آن باعث میشود GC بیشتر اجرا شود و کنترل دقیقتری بر استفاده از حافظه تضمین میکند.
export GOGC=200 // رشد پشته را افزایش می دهد و باعث می شود GC کمتر اجرا شود
- Escape Analysis برای تخصیص پشته در مقابل هیپ:
کامپایلر Go از تحلیل گریز استفاده میکند، که تعیین میکند متغیرها میتوانند در کدام ساختار داده stack یا heap تخصیص داده شوند. متغیرهایی که از محدوده خود "فرار" نمی کنند (مانند متغیرهای محلی در یک تابع) به صورت پشته ای تخصیص داده می شوند که سریعتر است و از جمع آوری زباله به طور کلی جلوگیری می کند. از سوی دیگر، تخصیص هیپ توسط جمع کننده زباله ردیابی می شود و تحلیل فرار استفاده غیر ضروری از هیپ را به حداقل می رساند و مدیریت حافظه را برای بسیاری از برنامه ها بهینه می کند.
- Profiling and Monitoring عملکرد GC:
Go ابزارهای قوی برای نظارت و بهینه سازی عملکرد GC فراهم می کند. بسته «زمان اجرا» به توسعه دهندگان اجازه می دهد تا آمار دقیق GC را ردیابی کنند، در حالی که "pprof" پروفایل CPU و حافظه را برای شناسایی و رفع تنگناهای عملکرد ارائه می دهد. این به ویژه برای برنامههایی با تنظیمات دقیق که نیاز به کار در مقیاس یا زیر بار سنگین دارند، ارزشمند است و این امکان را میدهد الگوهای استفاده از حافظه را مشخص کرد و رفتار برنامه را بهینه نمود.
- کارایی حافظه در Go:
ترکیبی از جمعآوری همزمان زباله، Escape Analysis و موانع نوشتن تضمین میکند که Go در مدیریت حافظه بسیار کارآمد است، و آن را به یک انتخاب قدرتمند برای سیستمهای بکاند، میکروسرویسها و سرورهای با توان بالا تبدیل میکند.
چه در حال ساخت یک برنامه بومی ابری یا یک API با کارایی بالا باشید، GC به شما آرامش می دهد که مدیریت حافظه بدون نیاز به مداخله دستی بهینه شده است.
در نتیجه، جمعآوری زباله Go یکی از جذابیتهای این زبان برای توسعه سیستمهای پیشرفته و توزیعشده مدرن است که به توسعه دهنده این امکان را می دهد بدون نگرانی در مورد مدیریت حافظه سطح پایین، بر روی ساخت برنامه های مقیاس پذیر و با کارایی بالا تمرکز کند. با گزینههای تنظیم دقیق، ابزارهای پروفایل قوی و حداقل وقفهها، GC Go تضمین میکند که حافظه به صورتی کارآمد به گونهای که برای توسعهدهنده شفاف باشد، مدیریت میشود.
اگر با Go کار میکنید، زمانی را صرف درک نحوه عملکرد جمعکننده زباله آن کنید این میتواند به شما در تصمیمگیری بهتر در مورد عملکرد، مقیاسپذیری و بهینهسازی حافظه کمک کند.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
میتوانید قسمت ۱ را در پست قبلی مطالعه کنید. ادامه:
- جمع آوری زباله قابل تنظیم:
یکی از ویژگی های برجسته Go، جمع آوری زباله قابل تنظیم آن است. توسعهدهندگان میتوانند فرکانس GC را با استفاده از متغیر محیطی «GOGC» تنظیم کنند، که تعداد دفعات کار جمعآور زباله را نسبت به رشد پشته کنترل میکند.
مقدار پیش فرض 100 است، به این معنی که GC پس از دو برابر شدن اندازه پشته فعال می شود. افزایش مقدار «GOGC» فرکانس جمعآوری زباله را کاهش میدهد، مصرف حافظه را با وقفههای کمتر عوض میکند، در حالی که کاهش آن باعث میشود GC بیشتر اجرا شود و کنترل دقیقتری بر استفاده از حافظه تضمین میکند.
export GOGC=200 // رشد پشته را افزایش می دهد و باعث می شود GC کمتر اجرا شود
- Escape Analysis برای تخصیص پشته در مقابل هیپ:
کامپایلر Go از تحلیل گریز استفاده میکند، که تعیین میکند متغیرها میتوانند در کدام ساختار داده stack یا heap تخصیص داده شوند. متغیرهایی که از محدوده خود "فرار" نمی کنند (مانند متغیرهای محلی در یک تابع) به صورت پشته ای تخصیص داده می شوند که سریعتر است و از جمع آوری زباله به طور کلی جلوگیری می کند. از سوی دیگر، تخصیص هیپ توسط جمع کننده زباله ردیابی می شود و تحلیل فرار استفاده غیر ضروری از هیپ را به حداقل می رساند و مدیریت حافظه را برای بسیاری از برنامه ها بهینه می کند.
- Profiling and Monitoring عملکرد GC:
Go ابزارهای قوی برای نظارت و بهینه سازی عملکرد GC فراهم می کند. بسته «زمان اجرا» به توسعه دهندگان اجازه می دهد تا آمار دقیق GC را ردیابی کنند، در حالی که "pprof" پروفایل CPU و حافظه را برای شناسایی و رفع تنگناهای عملکرد ارائه می دهد. این به ویژه برای برنامههایی با تنظیمات دقیق که نیاز به کار در مقیاس یا زیر بار سنگین دارند، ارزشمند است و این امکان را میدهد الگوهای استفاده از حافظه را مشخص کرد و رفتار برنامه را بهینه نمود.
- کارایی حافظه در Go:
ترکیبی از جمعآوری همزمان زباله، Escape Analysis و موانع نوشتن تضمین میکند که Go در مدیریت حافظه بسیار کارآمد است، و آن را به یک انتخاب قدرتمند برای سیستمهای بکاند، میکروسرویسها و سرورهای با توان بالا تبدیل میکند.
چه در حال ساخت یک برنامه بومی ابری یا یک API با کارایی بالا باشید، GC به شما آرامش می دهد که مدیریت حافظه بدون نیاز به مداخله دستی بهینه شده است.
در نتیجه، جمعآوری زباله Go یکی از جذابیتهای این زبان برای توسعه سیستمهای پیشرفته و توزیعشده مدرن است که به توسعه دهنده این امکان را می دهد بدون نگرانی در مورد مدیریت حافظه سطح پایین، بر روی ساخت برنامه های مقیاس پذیر و با کارایی بالا تمرکز کند. با گزینههای تنظیم دقیق، ابزارهای پروفایل قوی و حداقل وقفهها، GC Go تضمین میکند که حافظه به صورتی کارآمد به گونهای که برای توسعهدهنده شفاف باشد، مدیریت میشود.
اگر با Go کار میکنید، زمانی را صرف درک نحوه عملکرد جمعکننده زباله آن کنید این میتواند به شما در تصمیمگیری بهتر در مورد عملکرد، مقیاسپذیری و بهینهسازی حافظه کمک کند.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Forwarded from Linuxor ?
این پروژه هم باحال بود با Go یه برنامه تحت وب نوشتن که از طریق LAN فایل هارو بشه جابجا کرد
https://github.com/aziis98/mup
🐧 @Linuxor
https://github.com/aziis98/mup
🐧 @Linuxor