🔵 عنوان مقاله
Feluda: A Tool to Analyze the Licences of Dependencies
🟢 خلاصه مقاله:
این مقاله به معرفی پروژهای میپردازد که با استفاده از زبان برنامهنویسی Rust انجام شده است، اما برای پردازش وابستگیهای پروژههای Go، Rust یا Node.js قابل استفاده است. این ابزار قادر به ارائه گزارشی در مورد محدودیتهای احتمالی مربوط به مجوزهای نرمافزاری یا نمایش یک رابط کاربری مبتنی بر متن موسوم به "TUI" است. گزارش یا رابط TUI به کاربران امکان میدهد تا درک بهتری از جنبههای حقوقی و مجوزهای مرتبط با کتابخانهها و ماژولهای مورد استفاده در پروژههای نرمافزاری خود به دست آورند. استفاده از این ابزار میتواند به توسعهدهندگان کمک کند تا از پیچیدگیهای قانونی اجتناب کنند و تصمیمگیریهای آگاهانهتری در مورد انتخاب مجوزها و کتابخانهها داشته باشند.
🟣لینک مقاله:
https://golangweekly.com/link/165347/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Feluda: A Tool to Analyze the Licences of Dependencies
🟢 خلاصه مقاله:
این مقاله به معرفی پروژهای میپردازد که با استفاده از زبان برنامهنویسی Rust انجام شده است، اما برای پردازش وابستگیهای پروژههای Go، Rust یا Node.js قابل استفاده است. این ابزار قادر به ارائه گزارشی در مورد محدودیتهای احتمالی مربوط به مجوزهای نرمافزاری یا نمایش یک رابط کاربری مبتنی بر متن موسوم به "TUI" است. گزارش یا رابط TUI به کاربران امکان میدهد تا درک بهتری از جنبههای حقوقی و مجوزهای مرتبط با کتابخانهها و ماژولهای مورد استفاده در پروژههای نرمافزاری خود به دست آورند. استفاده از این ابزار میتواند به توسعهدهندگان کمک کند تا از پیچیدگیهای قانونی اجتناب کنند و تصمیمگیریهای آگاهانهتری در مورد انتخاب مجوزها و کتابخانهها داشته باشند.
🟣لینک مقاله:
https://golangweekly.com/link/165347/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - anistark/feluda: Detect license usage restrictions in your project!
Detect license usage restrictions in your project! - anistark/feluda
Gopher Academy
describe two categories of Go types:👆🏾 ➖➖➖➖➖➖➖➖ 👑 @gopher_academy
در زبان Go، انواع دادهها را میتوان به دو دسته تقسیم کرد:
### 1. انواعی که در یک بلوک حافظه ذخیره میشوند (Solo Direct Value Part)
این دسته شامل boolean، عددی، اشارهگر، struct، array و unsafe pointer است. مقدار این انواع بهصورت مستقیم در حافظه ذخیره میشود، به این معنی که مقدار آنها در همان متغیر قرار دارد و به بخش دیگری از حافظه ارجاع نمیدهد.
### 2. انواعی که در چندین بلوک حافظه ذخیره میشوند (Direct Part → Underlying Part)
این دسته شامل slice، map، channel، function، interface و string است. مقدار واقعی این دادهها در یک بخش دیگر از حافظه ذخیره میشود و متغیر تنها یک ارجاع (reference) به آن مقدار دارد.
بهعنوانمثال، یک slice شامل سه بخش است:
- pointer (به آرایهای که دادهها را ذخیره میکند)
- length (تعداد عناصر)
- capacity (ظرفیت آرایه)
هنگامی که شما یک slice را به متغیر دیگری اختصاص میدهید، تنها ارجاع کپی میشود، نه دادههای داخل آن. این رفتار در مورد
مزیت این ساختار این است که میتواند از مدیریت حافظه بهینهتر پشتیبانی کند، اما در عوض نیازمند کنترل دقیقتر هنگام اشتراکگذاری دادهها میان بخشهای مختلف برنامه است.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
### 1. انواعی که در یک بلوک حافظه ذخیره میشوند (Solo Direct Value Part)
این دسته شامل boolean، عددی، اشارهگر، struct، array و unsafe pointer است. مقدار این انواع بهصورت مستقیم در حافظه ذخیره میشود، به این معنی که مقدار آنها در همان متغیر قرار دارد و به بخش دیگری از حافظه ارجاع نمیدهد.
### 2. انواعی که در چندین بلوک حافظه ذخیره میشوند (Direct Part → Underlying Part)
این دسته شامل slice، map، channel، function، interface و string است. مقدار واقعی این دادهها در یک بخش دیگر از حافظه ذخیره میشود و متغیر تنها یک ارجاع (reference) به آن مقدار دارد.
بهعنوانمثال، یک slice شامل سه بخش است:
- pointer (به آرایهای که دادهها را ذخیره میکند)
- length (تعداد عناصر)
- capacity (ظرفیت آرایه)
هنگامی که شما یک slice را به متغیر دیگری اختصاص میدهید، تنها ارجاع کپی میشود، نه دادههای داخل آن. این رفتار در مورد
map`، `channel`، `string
و سایر انواع این دسته نیز صدق میکند. مزیت این ساختار این است که میتواند از مدیریت حافظه بهینهتر پشتیبانی کند، اما در عوض نیازمند کنترل دقیقتر هنگام اشتراکگذاری دادهها میان بخشهای مختلف برنامه است.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
👍2💘1
➖➖➖➖➖➖➖➖
🔵 دنیای بلاکچین و ارز های دیجیتال
🔴 @Blockchain_labdon
🟢 حوزه های تحت پوشش
(Bitcoin,
Ethereum,
Altcoins,
Blockchain,
Policy & Regulations,
NFTs,
DeFi)
➖➖➖➖➖➖➖➖
🔵 مهندسی نرم افزار
🔴 @software_labdon
🟢 حوزه های تحت پوشش
(Engineering,
Architecture,
Design,
Testing,
Security ,
QA)
➖➖➖➖➖➖➖➖
🔵 لینوکس- از توزیعها تا ترفندهای امنیتی
🔴 @linux_labdon
🟢 حوزه های تحت پوشش
(Linux Distributions,
Open Source Software,
Security Tips ,
New Releases & Features)
➖➖➖➖➖➖➖➖
🔵 دوآپـس - ابزارها و روندهای جدید
🔴 @devops_labdon
🟢 حوزه های تحت پوشش
(CI/CD Pipelines,
Cloud Infrastructure,
Containerization & Orchestration,
Monitoring & Performance,
Infrastructure as Code,
Security in DevOps)
🔵 دنیای بلاکچین و ارز های دیجیتال
🔴 @Blockchain_labdon
🟢 حوزه های تحت پوشش
(Bitcoin,
Ethereum,
Altcoins,
Blockchain,
Policy & Regulations,
NFTs,
DeFi)
➖➖➖➖➖➖➖➖
🔵 مهندسی نرم افزار
🔴 @software_labdon
🟢 حوزه های تحت پوشش
(Engineering,
Architecture,
Design,
Testing,
Security ,
QA)
➖➖➖➖➖➖➖➖
🔵 لینوکس- از توزیعها تا ترفندهای امنیتی
🔴 @linux_labdon
🟢 حوزه های تحت پوشش
(Linux Distributions,
Open Source Software,
Security Tips ,
New Releases & Features)
➖➖➖➖➖➖➖➖
🔵 دوآپـس - ابزارها و روندهای جدید
🔴 @devops_labdon
🟢 حوزه های تحت پوشش
(CI/CD Pipelines,
Cloud Infrastructure,
Containerization & Orchestration,
Monitoring & Performance,
Infrastructure as Code,
Security in DevOps)
🔵 عنوان مقاله
go-taskflow: A Taskflow-Like DAG Task Execution Framework
🟢 خلاصه مقاله:
مقالهای که مد نظر است به بررسی و توصیف یک چارچوبی عمومی برای زبان برنامهنویسی Go پرداخته است که برای مدیریت وابستگی در کارهای همزمان ساخته شده است. این چارچوب به شکلی طراحی شده که قادر است فعالیتهای موازی را بر اساس وظایف مشخص شامل تعاملات پیچیده وابستگی انجام دهد. هدف اصلی از توسعه این چارچوب، بهبود بهرهوری در برنامههایی است که نیاز به اجرای همزمان چندین عملیات دارند، بطوری که هر وظیفه میتواند به شکل مستقل و با در نظر گرفتن وابستگیهای معین با دیگر وظایف، پیش برود. با استفاده از این چارچوب، توسعهدهندگان میتوانند کاراییهای برنامههای خود را بهبود بخشیده و اتکا به مدیریت دستی وابستگیها را کاهش دهند. این چارچوب همچنین پیادهسازیهای معمولاً پیچیده در مدیریت همزمانی را بهبود میبخشد و بستری انعطافپذیر برای توسعه نرمافزار فراهم میآورد.
🟣لینک مقاله:
https://golangweekly.com/link/165667/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go-taskflow: A Taskflow-Like DAG Task Execution Framework
🟢 خلاصه مقاله:
مقالهای که مد نظر است به بررسی و توصیف یک چارچوبی عمومی برای زبان برنامهنویسی Go پرداخته است که برای مدیریت وابستگی در کارهای همزمان ساخته شده است. این چارچوب به شکلی طراحی شده که قادر است فعالیتهای موازی را بر اساس وظایف مشخص شامل تعاملات پیچیده وابستگی انجام دهد. هدف اصلی از توسعه این چارچوب، بهبود بهرهوری در برنامههایی است که نیاز به اجرای همزمان چندین عملیات دارند، بطوری که هر وظیفه میتواند به شکل مستقل و با در نظر گرفتن وابستگیهای معین با دیگر وظایف، پیش برود. با استفاده از این چارچوب، توسعهدهندگان میتوانند کاراییهای برنامههای خود را بهبود بخشیده و اتکا به مدیریت دستی وابستگیها را کاهش دهند. این چارچوب همچنین پیادهسازیهای معمولاً پیچیده در مدیریت همزمانی را بهبود میبخشد و بستری انعطافپذیر برای توسعه نرمافزار فراهم میآورد.
🟣لینک مقاله:
https://golangweekly.com/link/165667/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - noneback/go-taskflow: A pure go General-purpose Task-parallel Programming Framework with integrated visualizer and profiler
A pure go General-purpose Task-parallel Programming Framework with integrated visualizer and profiler - noneback/go-taskflow
👍2
🔵 عنوان مقاله
Reduce Your Apache Kafka Costs + Ops Burden With WarpStream
🟢 خلاصه مقاله:
مقاله مورد بحث به معرفی WarpStream میپردازد، یک تکنولوژی که هزینههای استفاده از Kafka را با کاهش نیاز به دیسکها و هزینههای شبکه بینمنطقهای بیش از 80 درصد کاهش میدهد. این تکنولوژی قابل اجرا در ابر خصوصی است و دادهها در بستر ذخیرهسازی اشیاء مشتری ذخیره میشوند، بنابراین دادههای خام هرگز محیط شما را ترک نمیکنند. WarpStream همچنین قابلیت اتوماتیک نگهداری و اسکیلگیری خودکار را بدون نیاز به اپراتور یا تنظیمات اضافی دارا میباشد، نقطه قوتی که مدیریت دادهها و برنامهها را به شدت ساده و کم هزینه میکند. این نوآوریها در مهندسی و معماری ابری میتواند به طور قابل توجهی بر بهرهوری و صرفهجویی در هزینههای مرتبط با پردازش داده تأثیر بگذارد.
🟣لینک مقاله:
https://golangweekly.com/link/165640/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Reduce Your Apache Kafka Costs + Ops Burden With WarpStream
🟢 خلاصه مقاله:
مقاله مورد بحث به معرفی WarpStream میپردازد، یک تکنولوژی که هزینههای استفاده از Kafka را با کاهش نیاز به دیسکها و هزینههای شبکه بینمنطقهای بیش از 80 درصد کاهش میدهد. این تکنولوژی قابل اجرا در ابر خصوصی است و دادهها در بستر ذخیرهسازی اشیاء مشتری ذخیره میشوند، بنابراین دادههای خام هرگز محیط شما را ترک نمیکنند. WarpStream همچنین قابلیت اتوماتیک نگهداری و اسکیلگیری خودکار را بدون نیاز به اپراتور یا تنظیمات اضافی دارا میباشد، نقطه قوتی که مدیریت دادهها و برنامهها را به شدت ساده و کم هزینه میکند. این نوآوریها در مهندسی و معماری ابری میتواند به طور قابل توجهی بر بهرهوری و صرفهجویی در هزینههای مرتبط با پردازش داده تأثیر بگذارد.
🟣لینک مقاله:
https://golangweekly.com/link/165640/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Warpstream
Bring Your Own Cloud - Diskless Apache Kafka-Compatible Data Streaming
WarpStream's BYOC deployment model gives you the security and data sovereignty benefits of self hosting, but without any of the management hassle.
👍2❤1🎉1
🔵 عنوان مقاله
Go Slice Gotchas
🟢 خلاصه مقاله:
مقالهای که به بررسی ساختار دادهای به نام "اسلایس" میپردازد، نشان میدهد که این ساختار مشابه سایر ساختارهای ظرفیتگسترشپذیر دینامیک دارای پیچیدگیها و نکات خاص خود است. نویسنده در این متن تلاش کرده است تا لیستی از اشتباهات رایجی که خود بارها مرتکب شده را برشمارد تا خوانندگان بتوانند از آنها پرهیز کنند. این اشتباهات شامل نادیدهگرفتن قواعد خاص مدیریت حافظه، نحوه افزایش ظرفیت اسلایسها، و تأثیر عملیات مختلف بر روی امنیت و کارایی برنامه است. هدف از این مقاله علاوه بر ارائه راهنماییهای فنی، افزایش آگاهی و پرورش مهارتهای برنامهنویسان در کار با اسلایسها و جلوگیری از تکرار اشتباهات متداول است.
🟣لینک مقاله:
https://golangweekly.com/link/165652/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Go Slice Gotchas
🟢 خلاصه مقاله:
مقالهای که به بررسی ساختار دادهای به نام "اسلایس" میپردازد، نشان میدهد که این ساختار مشابه سایر ساختارهای ظرفیتگسترشپذیر دینامیک دارای پیچیدگیها و نکات خاص خود است. نویسنده در این متن تلاش کرده است تا لیستی از اشتباهات رایجی که خود بارها مرتکب شده را برشمارد تا خوانندگان بتوانند از آنها پرهیز کنند. این اشتباهات شامل نادیدهگرفتن قواعد خاص مدیریت حافظه، نحوه افزایش ظرفیت اسلایسها، و تأثیر عملیات مختلف بر روی امنیت و کارایی برنامه است. هدف از این مقاله علاوه بر ارائه راهنماییهای فنی، افزایش آگاهی و پرورش مهارتهای برنامهنویسان در کار با اسلایسها و جلوگیری از تکرار اشتباهات متداول است.
🟣لینک مقاله:
https://golangweekly.com/link/165652/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Redowan's Reflections
Go slice gotchas
Just like any other dynamically growable container structure, Go slices come with a few
gotchas. I don’t always remember all the rules I need to be aware of. So this is an attempt
to list some of the most common mistakes I’ve made at least once.
Slices are…
gotchas. I don’t always remember all the rules I need to be aware of. So this is an attempt
to list some of the most common mistakes I’ve made at least once.
Slices are…
👍3❤1
🔵 عنوان مقاله
sturdyc: Caching Library with Advanced Concurrency Features
🟢 خلاصه مقاله:
مقاله "A sturdy gopher shielding data sources from rapidly incoming requests" به بررسی یک راهکار مؤثر برای جلوگیری از بارگذاری بیش از حد و حملات اصطلاحاً cache stampede در سیستمهای با حجم ترافیک بالا میپردازد. رویکرد مورد بحث در این مقاله، استفاده از خواندنهای غیربلاککننده و نوشتنهای شارد شده است که کمینه کردن تداخل قفلها را هدف قرار داده و در نتیجه، افزایش کارایی و پایداری سیستم هنگام مواجهه با درخواستهای متعدد و سریع را به دنبال دارد. با استفاده از این روش، سیستمها میتوانند دادهها را مدیریت و در برابر بارهای ناگهانی وزیاد محافظت نمایند. این روش برای زیرساختهایی که نیازمند حجم بالایی از تراکنشهای داده هستند، ایدهآل است.
🟣لینک مقاله:
https://golangweekly.com/link/165666/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
sturdyc: Caching Library with Advanced Concurrency Features
🟢 خلاصه مقاله:
مقاله "A sturdy gopher shielding data sources from rapidly incoming requests" به بررسی یک راهکار مؤثر برای جلوگیری از بارگذاری بیش از حد و حملات اصطلاحاً cache stampede در سیستمهای با حجم ترافیک بالا میپردازد. رویکرد مورد بحث در این مقاله، استفاده از خواندنهای غیربلاککننده و نوشتنهای شارد شده است که کمینه کردن تداخل قفلها را هدف قرار داده و در نتیجه، افزایش کارایی و پایداری سیستم هنگام مواجهه با درخواستهای متعدد و سریع را به دنبال دارد. با استفاده از این روش، سیستمها میتوانند دادهها را مدیریت و در برابر بارهای ناگهانی وزیاد محافظت نمایند. این روش برای زیرساختهایی که نیازمند حجم بالایی از تراکنشهای داده هستند، ایدهآل است.
🟣لینک مقاله:
https://golangweekly.com/link/165666/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - viccon/sturdyc: A caching library with advanced concurrency features designed to make I/O heavy applications robust and…
A caching library with advanced concurrency features designed to make I/O heavy applications robust and highly performant - viccon/sturdyc
👇توصیههای کلی و کوتاه و مختصر برای زبان برنامهنویسی Go که یادگیری خالی از لطف نیست
https://go-proverbs.github.io
➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
https://go-proverbs.github.io
➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
👍4🍾1💋1
Forwarded from Gopher Academy
🎯 چندتا پست در مورد ویژگی های جدید گولنگ 1.24 اینجاست می تونید بخونید👇
🔵 https://t.me/gopher_academy/3557
🔵 https://t.me/gopher_academy/3556
🔵 https://t.me/gopher_academy/3555
🔵 https://t.me/gopher_academy/3554
🔵 https://t.me/gopher_academy/3553
🔵 https://t.me/gopher_academy/3581
🔵 https://t.me/gopher_academy/3582
➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
🔵 https://t.me/gopher_academy/3557
🔵 https://t.me/gopher_academy/3556
🔵 https://t.me/gopher_academy/3555
🔵 https://t.me/gopher_academy/3554
🔵 https://t.me/gopher_academy/3553
🔵 https://t.me/gopher_academy/3581
🔵 https://t.me/gopher_academy/3582
➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
🔥1🎉1🏆1
سپندارمذگان، روز گرامیداشت زن، زمین و مادر بر همهٔ ایرانیان خجسته باد.
💚🤍❤️
➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
💚🤍❤️
یکی از جشنهای ایران باستان است که در ۵ اسفند گاهشمار یزدگردی و ۲۹ بهمن گاهشمار خورشیدی برای گرامیداشت زن، زمین و مادر برگزار میشود.[۱] این جشن ریشه در شاهنشاهی هخامنشی دارد.[۲] ابوریحان بیرونی در آثارالباقیه آوردهاست که ایرانیان باستان، پنجم اسفند را روز بزرگداشت زن و زمین میدانستند
➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
❤16✍1
Gopher Academy
### ۲. مزایای SwissTable:
- سرعت بیشتر: SwissTable با استفاده از تکنیکهای بهینهسازی مانند SIMD (Single Instruction, Multiple Data) و cache-friendly data structures**، سرعت عملیاتهای درج، حذف و جستجو در `map` را افزایش میدهد.
- سرعت بیشتر: SwissTable با استفاده از تکنیکهای بهینهسازی مانند SIMD (Single Instruction, Multiple Data) و cache-friendly data structures**، سرعت عملیاتهای درج، حذف و جستجو در `map` را افزایش میدهد.
SIMD مخفف Single Instruction, Multiple Data
(یک دستورالعمل، چندین داده) است. این یک تکنیک پردازشی است که در معماری کامپیوتر استفاده میشود و به پردازنده اجازه میدهد تا یک عملیات را همزمان روی چندین داده اجرا کند. این کار باعث افزایش کارایی و سرعت پردازش، به ویژه در عملیاتهای موازی مانند محاسبات برداری یا ماتریسی، میشود.
### توضیح بیشتر:
- Single Instruction:
یک دستورالعمل واحد به پردازنده داده میشود.
- Multiple Data:
این دستورالعمل به طور همزمان روی چندین داده (مثلاً چندین عنصر در یک آرایه) اعمال میشود.
### مثال:
فرض کنید میخواهید چهار عدد را با هم جمع کنید. در حالت عادی، پردازنده باید چهار بار عملیات جمع را انجام دهد. اما با استفاده از SIMD، میتوانید این چهار عدد را به صورت موازی و در یک عملیات جمع کنید.
### کاربرد SIMD در SwissTable:
در SwissTable، از SIMD برای بهینهسازی عملیاتهایی مانند جستجو، درج و حذف استفاده میشود. به این صورت:
- جستجو: با استفاده از SIMD، میتوان چندین کلید را به طور همزمان بررسی کرد و سرعت جستجو را افزایش داد.
- درج و حذف: عملیاتهای مرتبط با مدیریت دادهها نیز میتوانند به صورت موازی انجام شوند.
### مزایای SIMD:
1. سرعت بیشتر: انجام عملیاتها به صورت موازی باعث کاهش زمان اجرا میشود.
2. بهینهسازی مصرف انرژی: با کاهش تعداد دستورالعملها، انرژی کمتری مصرف میشود.
3. کارایی بالا: به ویژه در عملیاتهای تکراری و محاسبات سنگین، کارایی سیستم افزایش مییابد.
### معایب SIMD:
1. پیچیدگی: برنامهنویسی با SIMD نیاز به دانش خاص و توجه به جزئیات دارد.
2. وابستگی به سختافزار: برای استفاده از SIMD، پردازنده باید از این قابلیت پشتیبانی کند.
در کل، SIMD یک تکنیک قدرتمند برای افزایش سرعت و کارایی در عملیاتهای موازی است و در SwissTable نیز از آن برای بهبود عملکرد
➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
(یک دستورالعمل، چندین داده) است. این یک تکنیک پردازشی است که در معماری کامپیوتر استفاده میشود و به پردازنده اجازه میدهد تا یک عملیات را همزمان روی چندین داده اجرا کند. این کار باعث افزایش کارایی و سرعت پردازش، به ویژه در عملیاتهای موازی مانند محاسبات برداری یا ماتریسی، میشود.
### توضیح بیشتر:
- Single Instruction:
یک دستورالعمل واحد به پردازنده داده میشود.
- Multiple Data:
این دستورالعمل به طور همزمان روی چندین داده (مثلاً چندین عنصر در یک آرایه) اعمال میشود.
### مثال:
فرض کنید میخواهید چهار عدد را با هم جمع کنید. در حالت عادی، پردازنده باید چهار بار عملیات جمع را انجام دهد. اما با استفاده از SIMD، میتوانید این چهار عدد را به صورت موازی و در یک عملیات جمع کنید.
### کاربرد SIMD در SwissTable:
در SwissTable، از SIMD برای بهینهسازی عملیاتهایی مانند جستجو، درج و حذف استفاده میشود. به این صورت:
- جستجو: با استفاده از SIMD، میتوان چندین کلید را به طور همزمان بررسی کرد و سرعت جستجو را افزایش داد.
- درج و حذف: عملیاتهای مرتبط با مدیریت دادهها نیز میتوانند به صورت موازی انجام شوند.
### مزایای SIMD:
1. سرعت بیشتر: انجام عملیاتها به صورت موازی باعث کاهش زمان اجرا میشود.
2. بهینهسازی مصرف انرژی: با کاهش تعداد دستورالعملها، انرژی کمتری مصرف میشود.
3. کارایی بالا: به ویژه در عملیاتهای تکراری و محاسبات سنگین، کارایی سیستم افزایش مییابد.
### معایب SIMD:
1. پیچیدگی: برنامهنویسی با SIMD نیاز به دانش خاص و توجه به جزئیات دارد.
2. وابستگی به سختافزار: برای استفاده از SIMD، پردازنده باید از این قابلیت پشتیبانی کند.
در کل، SIMD یک تکنیک قدرتمند برای افزایش سرعت و کارایی در عملیاتهای موازی است و در SwissTable نیز از آن برای بهبود عملکرد
map
استفاده شده است.➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
Telegram
Labdon
Bardia invites you to add the folder “Labdon”, which includes 8 chats.
❤4👍1
اگر میخواید در مورد swiss map ها اطلاعات بیشتر داشته باشید این رفرنس ها به شما کمک می کندد
https://www.dolthub.com/blog/2023-03-28-swiss-map/
https://www.youtube.com/watch?v=JZE3_0qvrMg
https://abseil.io/about/design/swisstables
https://www.youtube.com/watch?v=ncHmEUmJZf4
http://graphics.stanford.edu/~seander/bithacks.html##ValueInWord
https://aras-p.info/blog/2016/08/09/More-Hash-Function-Tests/
https://lemire.me/blog/2016/06/27/a-fast-alternative-to-the-modulo-reduction/
➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
https://www.dolthub.com/blog/2023-03-28-swiss-map/
https://www.youtube.com/watch?v=JZE3_0qvrMg
https://abseil.io/about/design/swisstables
https://www.youtube.com/watch?v=ncHmEUmJZf4
http://graphics.stanford.edu/~seander/bithacks.html##ValueInWord
https://aras-p.info/blog/2016/08/09/More-Hash-Function-Tests/
https://lemire.me/blog/2016/06/27/a-fast-alternative-to-the-modulo-reduction/
➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
✍2🏆1
Forwarded from Software Engineer Labdon
با پیشرفت روزافزون کدنویسی با هوش مصنوعی، مهندسان نرمافزار باید تواناییهای زیر را داشته باشند:
۱- توانایی بررسی سریع و دقیق کد نوشته شده توسط هوش مصنوعی
۲- توانایی توصیف مشکلات بهصورت واضح و کامل
۳- توانایی انجام همزمان چند کار و تغییر سریع بین زمینههای مختلف
خوب است که از حالا این مهارتها را تمرین کنید!
<Mehdi Allahyari/>
۱- توانایی بررسی سریع و دقیق کد نوشته شده توسط هوش مصنوعی
۲- توانایی توصیف مشکلات بهصورت واضح و کامل
۳- توانایی انجام همزمان چند کار و تغییر سریع بین زمینههای مختلف
خوب است که از حالا این مهارتها را تمرین کنید!
<Mehdi Allahyari/>
👍4👏1🎉1
Forwarded from omid trade 360
🔵 عنوان مقاله
JIO Platforms collaborates with Polygon Labs (1 minute read)
🟢 خلاصه مقاله:
JIO Platforms، یکی از بزرگترین اپراتورهای تلفن همراه در هند، با شرکت Polygon شراکت کرده است تا با استفاده از راهکارهای بلاک چین ارائه شده توسط Polygon، قابلیتهای Web3 را به خدمات خود اضافه کند. هدف از این شراکت این است که تجربههای دیجیتالی نوآورانه و بهبود یافتهای را برای بیش از 450 میلیون مشتری JIO فراهم آورد. این اقدام به منظور تقویت پیشرفتهای تکنولوژیک و استفاده از فرصتهای پیشرو در عرصه جدید وب (Web3) انجام میگیرد و به JIO این امکان را میدهد که از مزایای بلاک چین، شامل امنیت و شفافیت بیشتر در خدمات دیجیتالی خود بهرهمند شود. انتظار میرود این همکاری بتواند نقش مهمی در توسعه تجارت دیجیتالی در هند ایفا کند و پیشگام در پیادهسازی تکنولوژیهای نوین در این کشور شود.
🟣لینک مقاله:
https://polygon.technology/blog/jio-platforms-ltd-is-collaborating-with-polygon-labs-to-bring-web3-capabilities-to-450-million-jio-users?&utm_source=tldrcrypto
➖➖➖➖➖➖➖➖
👑 @Blockchain_labdon
JIO Platforms collaborates with Polygon Labs (1 minute read)
🟢 خلاصه مقاله:
JIO Platforms، یکی از بزرگترین اپراتورهای تلفن همراه در هند، با شرکت Polygon شراکت کرده است تا با استفاده از راهکارهای بلاک چین ارائه شده توسط Polygon، قابلیتهای Web3 را به خدمات خود اضافه کند. هدف از این شراکت این است که تجربههای دیجیتالی نوآورانه و بهبود یافتهای را برای بیش از 450 میلیون مشتری JIO فراهم آورد. این اقدام به منظور تقویت پیشرفتهای تکنولوژیک و استفاده از فرصتهای پیشرو در عرصه جدید وب (Web3) انجام میگیرد و به JIO این امکان را میدهد که از مزایای بلاک چین، شامل امنیت و شفافیت بیشتر در خدمات دیجیتالی خود بهرهمند شود. انتظار میرود این همکاری بتواند نقش مهمی در توسعه تجارت دیجیتالی در هند ایفا کند و پیشگام در پیادهسازی تکنولوژیهای نوین در این کشور شود.
🟣لینک مقاله:
https://polygon.technology/blog/jio-platforms-ltd-is-collaborating-with-polygon-labs-to-bring-web3-capabilities-to-450-million-jio-users?&utm_source=tldrcrypto
➖➖➖➖➖➖➖➖
👑 @Blockchain_labdon
polygon.technology
Jio Platforms Ltd. is collaborating with Polygon Labs to Bring Web3 Capabilities to 450+ Million Jio Users
Jio Platforms Ltd. (JPL) a multinational technology company and a subsidiary of Reliance Industries Limited, has entered a strategic partnership with Polygon Labs, the developer arm of Polygon Protocols for its Web3 and blockchain debut in India.
👍1👏1
در Go (یا Golang)، گوروتینها (goroutines) واحدهای سبکوزنی هستند که به صورت همزمان (concurrent) اجرا میشوند. هر گوروتین به طور مستقل اجرا میشود و مدیریت آنها توسط زمانبند (scheduler) زبان Go انجام میگیرد.
وقتی شما یک مکانیزم ریکاوری (recovery mechanism) در گوروتین اصلی (main goroutine) قرار میدهید، این مکانیزم فقط برای خطاهایی که در همان گوروتین اصلی رخ میدهند، عمل میکند. این مکانیزم به طور خودکار روی گوروتینهای فرزند (child goroutines) تأثیری ندارد. دلیل این موضوع به شرح زیر است:
---
### ۱. گوروتینها مستقل هستند:
هر گوروتین یک واحد اجرایی مستقل است. اگر یک گوروتین فرزند دچار panic شود، این panic فقط روی همان گوروتین تأثیر میگذارد و به گوروتینهای دیگر (از جمله گوروتین اصلی) سرایت نمیکند. بنابراین، مکانیزم ریکاوری که در گوروتین اصلی قرار دادهاید، نمیتواند panic گوروتینهای فرزند را بگیرد.
---
### ۲. panic و recover در Go:
- `panic`:
باعث توقف اجرای برنامه در گوروتین فعلی میشود و اگر recover نشود، کل برنامه را متوقف میکند.
- `recover`:
فقط panicهایی را میتواند بگیرد که در همان گوروتین رخ دادهاند. اگر panic در یک گوروتین فرزند رخ دهد و در آن گوروتین recover نشود، panic به گوروتین اصلی منتقل نمیشود و باعث crash برنامه میشود.
---
### ۳. مثال برای درک بهتر:
#### خروجی:
#### توضیح:
- panic در گوروتین فرزند رخ داده است.
- مکانیزم ریکاوری در گوروتین اصلی (
- برنامه crash میکند، زیرا panic در گوروتین فرزند recover نشده است.
---
### ۴. چگونه panic گوروتینهای فرزند را recover کنیم؟
برای اینکه panic گوروتینهای فرزند را بگیرید، باید در هر گوروتین فرزند یک مکانیزم ریکاوری قرار دهید. به این ترتیب، هر گوروتین به طور مستقل panic خود را مدیریت میکند.
#### مثال اصلاحشده:
#### خروجی:
#### توضیح:
- panic در گوروتین فرزند رخ داده است.
- مکانیزم ریکاوری در گوروتین فرزند panic را گرفته و برنامه crash نمیکند.
- گوروتین اصلی به کار خود ادامه میدهد.
---
### ۵. نکات مهم:
- هر گوروتین باید به طور مستقل panic خود را مدیریت کند.
- اگر panic در یک گوروتین فرزند recover نشود، کل برنامه crash میکند.
- برای جلوگیری از crash برنامه، حتماً در هر گوروتین فرزند یک مکانیزم ریکاوری قرار دهید.
---
### جمعبندی:
مکانیزم ریکاوری که در گوروتین اصلی قرار میدهید، فقط panicهای همان گوروتین را میگیرد و روی گوروتینهای فرزند تأثیری ندارد. برای مدیریت panic در گوروتینهای فرزند، باید در هر گوروتین فرزند یک مکانیزم ریکاوری جداگانه قرار دهید. این کار باعث میشود برنامه شما در برابر خطاها مقاومتر شود و crash نکند.
➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
وقتی شما یک مکانیزم ریکاوری (recovery mechanism) در گوروتین اصلی (main goroutine) قرار میدهید، این مکانیزم فقط برای خطاهایی که در همان گوروتین اصلی رخ میدهند، عمل میکند. این مکانیزم به طور خودکار روی گوروتینهای فرزند (child goroutines) تأثیری ندارد. دلیل این موضوع به شرح زیر است:
---
### ۱. گوروتینها مستقل هستند:
هر گوروتین یک واحد اجرایی مستقل است. اگر یک گوروتین فرزند دچار panic شود، این panic فقط روی همان گوروتین تأثیر میگذارد و به گوروتینهای دیگر (از جمله گوروتین اصلی) سرایت نمیکند. بنابراین، مکانیزم ریکاوری که در گوروتین اصلی قرار دادهاید، نمیتواند panic گوروتینهای فرزند را بگیرد.
---
### ۲. panic و recover در Go:
- `panic`:
باعث توقف اجرای برنامه در گوروتین فعلی میشود و اگر recover نشود، کل برنامه را متوقف میکند.
- `recover`:
فقط panicهایی را میتواند بگیرد که در همان گوروتین رخ دادهاند. اگر panic در یک گوروتین فرزند رخ دهد و در آن گوروتین recover نشود، panic به گوروتین اصلی منتقل نمیشود و باعث crash برنامه میشود.
---
### ۳. مثال برای درک بهتر:
package main
import (
"fmt"
"time"
)
func main() {
// مکانیزم ریکاوری در گوروتین اصلی
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered in main goroutine:", r)
}
}()
// ایجاد یک گوروتین فرزند
go func() {
fmt.Println("Child goroutine started")
panic("Something went wrong in child goroutine!") // panic در گوروتین فرزند
}()
// منتظر بمانید تا گوروتین فرزند اجرا شود
time.Sleep(1 * time.Second)
fmt.Println("Main goroutine finished")
}
#### خروجی:
Child goroutine started
panic: Something went wrong in child goroutine!
goroutine 6 [running]:
main.main.func2()
/path/to/file.go:14 +0x95
created by main.main
/path/to/file.go:12 +0x4c
#### توضیح:
- panic در گوروتین فرزند رخ داده است.
- مکانیزم ریکاوری در گوروتین اصلی (
main
) هیچ تأثیری روی panic گوروتین فرزند ندارد.- برنامه crash میکند، زیرا panic در گوروتین فرزند recover نشده است.
---
### ۴. چگونه panic گوروتینهای فرزند را recover کنیم؟
برای اینکه panic گوروتینهای فرزند را بگیرید، باید در هر گوروتین فرزند یک مکانیزم ریکاوری قرار دهید. به این ترتیب، هر گوروتین به طور مستقل panic خود را مدیریت میکند.
#### مثال اصلاحشده:
package main
import (
"fmt"
"time"
)
func main() {
// مکانیزم ریکاوری در گوروتین اصلی
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered in main goroutine:", r)
}
}()
// ایجاد یک گوروتین فرزند با مکانیزم ریکاوری
go func() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered in child goroutine:", r)
}
}()
fmt.Println("Child goroutine started")
panic("Something went wrong in child goroutine!") // panic در گوروتین فرزند
}()
// منتظر بمانید تا گوروتین فرزند اجرا شود
time.Sleep(1 * time.Second)
fmt.Println("Main goroutine finished")
}
#### خروجی:
Child goroutine started
Recovered in child goroutine: Something went wrong in child goroutine!
Main goroutine finished
#### توضیح:
- panic در گوروتین فرزند رخ داده است.
- مکانیزم ریکاوری در گوروتین فرزند panic را گرفته و برنامه crash نمیکند.
- گوروتین اصلی به کار خود ادامه میدهد.
---
### ۵. نکات مهم:
- هر گوروتین باید به طور مستقل panic خود را مدیریت کند.
- اگر panic در یک گوروتین فرزند recover نشود، کل برنامه crash میکند.
- برای جلوگیری از crash برنامه، حتماً در هر گوروتین فرزند یک مکانیزم ریکاوری قرار دهید.
---
### جمعبندی:
مکانیزم ریکاوری که در گوروتین اصلی قرار میدهید، فقط panicهای همان گوروتین را میگیرد و روی گوروتینهای فرزند تأثیری ندارد. برای مدیریت panic در گوروتینهای فرزند، باید در هر گوروتین فرزند یک مکانیزم ریکاوری جداگانه قرار دهید. این کار باعث میشود برنامه شما در برابر خطاها مقاومتر شود و crash نکند.
➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
❤3👌3👍2🎉1
https://antonz.org/go-concurrency/
antonz.org
Gist of Go: Concurrency
Interactive book on concurrent programming with many exercises.
➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
antonz.org
Gist of Go: Concurrency
Interactive book on concurrent programming with many exercises.
➖➖➖➖➖➖➖➖
https://t.me/addlist/KpzXaiSpKENkMGM0
👍3
📢 اگر تلگرام پرمیوم دارید، کانال ما رو Boost کنید ! 🚀
با Boost کردن کانال، به رشد و دیده شدن ما بیشتر کمک کنید💙
https://t.me/boost/gopher_academy
با Boost کردن کانال، به رشد و دیده شدن ما بیشتر کمک کنید💙
https://t.me/boost/gopher_academy
🍾4