🔵 عنوان مقاله
Go Allocations Explorer Extension for VSCode
🟢 خلاصه مقاله:
این افزونه با نام Go Allocations Explorer Extension برای VS Code به برنامهنویسان Go کمک میکند تا محل و میزان تخصیص حافظه را بر پایه بنچمارکهای موجودشان مستقیماً داخل ویرایشگر ببینند. با اجرای go test -bench و استفاده از -benchmem، نتایج تخصیصها جمعآوری و به فهرستی قابل پیمایش تبدیل میشود تا بتوانید بهسرعت هاتاسپاتها را یافته و از همان ورودیها به کد مربوطه بپرید. امکان اجرا و تکرار بنچمارکها، مشاهده و مقایسه سریع نتایج، و مرتبسازی/فیلتر کردن بر اساس پکیج، تست یا تابع فراهم است. راهاندازی ساده است، فقط نیاز به ابزار Go دارد و روی macOS، Linux و Windows کار میکند. خروجیها در خود VS Code به شکل قابل فهم ارائه میشوند تا کاهش تخصیصها، کم شدن فشار GC و بهبود تأخیر بهصورت مستمر و در جریان کدنویسی انجام شود.
#Go #VSCode #Golang #Performance #Benchmarking #MemoryAllocations #Profiling #DeveloperTools
🟣لینک مقاله:
https://golangweekly.com/link/174659/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Go Allocations Explorer Extension for VSCode
🟢 خلاصه مقاله:
این افزونه با نام Go Allocations Explorer Extension برای VS Code به برنامهنویسان Go کمک میکند تا محل و میزان تخصیص حافظه را بر پایه بنچمارکهای موجودشان مستقیماً داخل ویرایشگر ببینند. با اجرای go test -bench و استفاده از -benchmem، نتایج تخصیصها جمعآوری و به فهرستی قابل پیمایش تبدیل میشود تا بتوانید بهسرعت هاتاسپاتها را یافته و از همان ورودیها به کد مربوطه بپرید. امکان اجرا و تکرار بنچمارکها، مشاهده و مقایسه سریع نتایج، و مرتبسازی/فیلتر کردن بر اساس پکیج، تست یا تابع فراهم است. راهاندازی ساده است، فقط نیاز به ابزار Go دارد و روی macOS، Linux و Windows کار میکند. خروجیها در خود VS Code به شکل قابل فهم ارائه میشوند تا کاهش تخصیصها، کم شدن فشار GC و بهبود تأخیر بهصورت مستمر و در جریان کدنویسی انجام شود.
#Go #VSCode #Golang #Performance #Benchmarking #MemoryAllocations #Profiling #DeveloperTools
🟣لینک مقاله:
https://golangweekly.com/link/174659/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Visualstudio
Go Allocations Explorer - Visual Studio Marketplace
Extension for Visual Studio Code - An extension that helps locate Go allocations, using your benchmarks.
❤2👍1
میخوام یک وب سایت خیلی خوب برای گولنگ بهتون معرفی کنم، https://awesome-go.com/
این وب سایت فوق العادس برای دیدن کد تو هر موضوعی که فکرشو کنید در کانکارنسی، CLI، وب و هرچیز دیگه ای.
کافیه برین داخلش عنوان ابزار، کتابخونه یا حتی نمونه کد مورد نظر خودتون رو پیدا کنید و ریپازیتوری اوپن سورس مرتبطش رو باز کنید و داکیومنشن یا کدش رو بخونید.
واقعا جذابه پیشنهاد میکنم حتما ببینید
<Abolfazl Alizadeh/>
این وب سایت فوق العادس برای دیدن کد تو هر موضوعی که فکرشو کنید در کانکارنسی، CLI، وب و هرچیز دیگه ای.
کافیه برین داخلش عنوان ابزار، کتابخونه یا حتی نمونه کد مورد نظر خودتون رو پیدا کنید و ریپازیتوری اوپن سورس مرتبطش رو باز کنید و داکیومنشن یا کدش رو بخونید.
واقعا جذابه پیشنهاد میکنم حتما ببینید
<Abolfazl Alizadeh/>
Awesome-Go
A curated list of awesome Go frameworks, libraries and software - Awesome Go
A curated list of awesome #Golang frameworks, libraries and software
❤3 3
🔵 عنوان مقاله
Building Conway’s Game of Life with raylib-go
🟢 خلاصه مقاله:
یک پروژه تفننی و آموزشی است: پیادهسازی Conway’s Game of Life با استفاده از raylib-go در Go. برنامه یک پنجره باز میکند، شبکهای دوبعدی از سلولها میسازد و هر فریم سلولهای زنده و مرده را بهصورت مستطیلهای رنگی رسم میکند. قوانین استاندارد (شمارش ۸ همسایه و اعمال قوانین کمجمعیتی، بقا، تراکم و تولیدمثل) با double-buffering اجرا میشوند تا محاسبات نسل بعدی تمیز و قابل اتکا باشد و در صورت نیاز امکان دورپیچی مرزها هم در نظر گرفته شده است. تعاملها شامل توقف/ادامه، گامبهگام، تنظیم سرعت، پاکسازی یا تصادفیسازی صفحه و تغییر وضعیت سلولها با کلیک ماوس است؛ ذخیره/بارگذاری الگوهای ساده هم قابل افزودن است. حلقه بهروزرسانی مستقل از نرخ رندر زمانبندی میشود تا اجرای روان و کارآمد حفظ شود و روی Windows، macOS و Linux بهخوبی اجرا میشود. کد نهایی ارائه شده و برای توسعه ایدههایی مانند کتابخانه الگوها، کنترلهای بهتر زوم/پن، گرادیانرنگ بر اساس سن سلول و ارزیابی عملکرد قابل گسترش است.
#ConwaysGameOfLife #raylib #raylibgo #Go #GameDev #CellularAutomata #GraphicsProgramming
🟣لینک مقاله:
https://golangweekly.com/link/174642/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Building Conway’s Game of Life with raylib-go
🟢 خلاصه مقاله:
یک پروژه تفننی و آموزشی است: پیادهسازی Conway’s Game of Life با استفاده از raylib-go در Go. برنامه یک پنجره باز میکند، شبکهای دوبعدی از سلولها میسازد و هر فریم سلولهای زنده و مرده را بهصورت مستطیلهای رنگی رسم میکند. قوانین استاندارد (شمارش ۸ همسایه و اعمال قوانین کمجمعیتی، بقا، تراکم و تولیدمثل) با double-buffering اجرا میشوند تا محاسبات نسل بعدی تمیز و قابل اتکا باشد و در صورت نیاز امکان دورپیچی مرزها هم در نظر گرفته شده است. تعاملها شامل توقف/ادامه، گامبهگام، تنظیم سرعت، پاکسازی یا تصادفیسازی صفحه و تغییر وضعیت سلولها با کلیک ماوس است؛ ذخیره/بارگذاری الگوهای ساده هم قابل افزودن است. حلقه بهروزرسانی مستقل از نرخ رندر زمانبندی میشود تا اجرای روان و کارآمد حفظ شود و روی Windows، macOS و Linux بهخوبی اجرا میشود. کد نهایی ارائه شده و برای توسعه ایدههایی مانند کتابخانه الگوها، کنترلهای بهتر زوم/پن، گرادیانرنگ بر اساس سن سلول و ارزیابی عملکرد قابل گسترش است.
#ConwaysGameOfLife #raylib #raylibgo #Go #GameDev #CellularAutomata #GraphicsProgramming
🟣لینک مقاله:
https://golangweekly.com/link/174642/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
packagemain.tech
Building Conway’s Game of Life in Go with raylib-go
A step-by-step tutorial on building Conway’s Game of Life in Go, using raylib-go for graphics. Learn how to draw grids, apply the rules of life, and simulate evolving patterns.
❤1
مشکل "mutex copying" در Go یعنی کپی کردن یک mutex به جای استفاده از pointer به آن. این کار باعث میشه که mutex اصلی و کپی شده دو شیء جداگانه بشن و قفلگذاری درست کار نکنه.
چرا مشکل ساز است؟
وقتی یک mutex رو کپی میکنی، حالت داخلی اش (locked/unlocked) کپی نمیشه به درستی و هر کدوم مستقل عمل میکنن. این یعنی race condition و عدم هماهنگی بین goroutine ها.
1. همیشه از pointer receiver استفاده کن وقتی mutex داری:
2. هرگز mutex رو به صورت value پاس نده:
3. ا Go vet ابزار خوبیه که این مشکل رو پیدا میکنه:
4. اگه struct رو embed میکنی**، حواست باشه که اون رو کپی نکنی
5. **انواع Mutex ها همه این مشکل رو دارن:
این یکی از رایجترین اشتباهات تو Go هست، خصوصا برای کسایی که تازه شروع کردن!
چرا مشکل ساز است؟
وقتی یک mutex رو کپی میکنی، حالت داخلی اش (locked/unlocked) کپی نمیشه به درستی و هر کدوم مستقل عمل میکنن. این یعنی race condition و عدم هماهنگی بین goroutine ها.
1. همیشه از pointer receiver استفاده کن وقتی mutex داری:
func (c *Counter) method()
2. هرگز mutex رو به صورت value پاس نده:
func badFunc(mu sync.Mutex)
3. ا Go vet ابزار خوبیه که این مشکل رو پیدا میکنه:
go vet ./...
4. اگه struct رو embed میکنی**، حواست باشه که اون رو کپی نکنی
5. **انواع Mutex ها همه این مشکل رو دارن:
sync.Mutex
, sync.RWMutex
,
sync.WaitGroup
, sync.Cond
این یکی از رایجترین اشتباهات تو Go هست، خصوصا برای کسایی که تازه شروع کردن!
❤2👍1
Gopher Academy
مشکل "mutex copying" در Go یعنی کپی کردن یک mutex به جای استفاده از pointer به آن. این کار باعث میشه که mutex اصلی و کپی شده دو شیء جداگانه بشن و قفلگذاری درست کار نکنه. چرا مشکل ساز است؟ وقتی یک mutex رو کپی میکنی، حالت داخلی اش (locked/unlocked) کپی…
💙نمونه استفاده درست👇
package main
import (
"fmt"
"sync"
"time"
)
type Counter struct {
mu sync.Mutex
value int
}
func (c *Counter) Increment() {
c.mu.Lock()
defer c.mu.Unlock()
c.value++
fmt.Printf("Value: %d\n", c.value)
}
func goodFunction(c *Counter) {
c.mu.Lock()
defer c.mu.Unlock()
c.value = 100
}
func main() {
counter := &Counter{}
var wg sync.WaitGroup
for i := 0; i < 5; i++ {
wg.Add(1)
go func() {
defer wg.Done()
counter.Increment()
}()
}
wg.Add(1)
go func() {
defer wg.Done()
goodFunction(counter)
}()
wg.Wait()
fmt.Printf("Final value: %d\n", counter.value)
}
type SafeMap struct {
mu sync.RWMutex
data map[string]int
}
func NewSafeMap() *SafeMap {
return &SafeMap{
data: make(map[string]int),
}
}
func (sm *SafeMap) Set(key string, value int) {
sm.mu.Lock()
defer sm.mu.Unlock()
sm.data[key] = value
}
func (sm *SafeMap) Get(key string) (int, bool) {
sm.mu.RLock()
defer sm.mu.RUnlock()
val, ok := sm.data[key]
return val, ok
}
🏆2
Gopher Academy
مشکل "mutex copying" در Go یعنی کپی کردن یک mutex به جای استفاده از pointer به آن. این کار باعث میشه که mutex اصلی و کپی شده دو شیء جداگانه بشن و قفلگذاری درست کار نکنه. چرا مشکل ساز است؟ وقتی یک mutex رو کپی میکنی، حالت داخلی اش (locked/unlocked) کپی…
❤️نمونه اشتباه
package main
import (
"fmt"
"sync"
"time"
)
type Counter struct {
mu sync.Mutex
value int
}
func (c Counter) Increment() {
c.mu.Lock()
defer c.mu.Unlock()
c.value++
fmt.Printf("Value: %d\n", c.value)
}
func badFunction(c Counter) {
c.mu.Lock()
defer c.mu.Unlock()
c.value = 100
}
func main() {
counter := Counter{}
for i := 0; i < 5; i++ {
go counter.Increment()
}
go badFunction(counter)
time.Sleep(time.Second)
fmt.Printf("Final value: %d\n", counter.value)
}
❤1
Forwarded from VIP
🚀 به دنیای توسعه و تکنولوژی خوش اومدی!
اگر به موضوعات زیر علاقهمندی:
🔹 Golang
🔹 Linux & DevOps
🔹 Software Engineering
🔹 AI & Machine Learning
🔹 فرصتهای شغلی ریموت (خارجی و داخلی)
ما برات یه مجموعه کانالهای تخصصی ساختیم تا همیشه بهروز، حرفهای و الهامبخش بمونی!
📚 یادگیری، فرصت، شبکهسازی و پیشرفت، همش اینجاست...
📌 از این لینک همه چنلهامونو یهجا ببین و جوین شو:
👉 https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
اگر به موضوعات زیر علاقهمندی:
🔹 Golang
🔹 Linux & DevOps
🔹 Software Engineering
🔹 AI & Machine Learning
🔹 فرصتهای شغلی ریموت (خارجی و داخلی)
ما برات یه مجموعه کانالهای تخصصی ساختیم تا همیشه بهروز، حرفهای و الهامبخش بمونی!
📚 یادگیری، فرصت، شبکهسازی و پیشرفت، همش اینجاست...
📌 از این لینک همه چنلهامونو یهجا ببین و جوین شو:
👉 https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
📢 اگر تلگرام پرمیوم دارید، کانال ما رو Boost کنید ! 🚀
با Boost کردن کانال، به رشد و دیده شدن ما بیشتر کمک کنید💙
https://t.iss.one/boost/gopher_academy
با Boost کردن کانال، به رشد و دیده شدن ما بیشتر کمک کنید💙
https://t.iss.one/boost/gopher_academy
❤1
Forwarded from Software Engineer Labdon
این کتاب خیلی ساده و روان توضیح میده چرا Rust اینقدر سر و صدا کرده و چرا خیلیها دارن سمتش میرن:
نشون میده چطوری با سیستم ownership و borrowing میشه حافظه رو بدون دردسر مدیریت کرد
توضیح میده چرا توی Rust باگهایی مثل null pointer یا data race کلاً از همون اول جلوی راهت سبز نمیشن
یاد میده چطوری میشه به راحتی برنامههای چندنخی و امن نوشت، بدون استرس خطاهای عجیب غریب
تأکید میکنه که همهی این امکانات رو میگیری، ولی سرعتش در حد C/C++ باقی میمونه
نشون میده چطوری با سیستم ownership و borrowing میشه حافظه رو بدون دردسر مدیریت کرد
توضیح میده چرا توی Rust باگهایی مثل null pointer یا data race کلاً از همون اول جلوی راهت سبز نمیشن
یاد میده چطوری میشه به راحتی برنامههای چندنخی و امن نوشت، بدون استرس خطاهای عجیب غریب
تأکید میکنه که همهی این امکانات رو میگیری، ولی سرعتش در حد C/C++ باقی میمونه
❤6 6👍1
Gopher Academy
📌 Memory Allocation in Go ❌️این پست اپدیت میشود ❌️ 🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go میپردازیم. درک درست از ساختار حافظه به شما کمک میکند عملکرد برنامههایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید. 🔵 Introduction…
📌 Span and Size Class in Go
🔹 یکی از مفاهیم کلیدی در مدیریت حافظه گو Span است.
🧩 Span
* یک Span شامل یک یا چند Page متوالی است.
* هر Span به چند شیء همسایز تقسیم میشود.
* این کار باعث میشود Go از استراتژی segregated fit allocation استفاده کند:
* تخصیص بهینه برای اندازههای مختلف
* کاهش fragmentation (تکهتکه شدن حافظه)
🔸 اطلاعات هر Span در یک ساختار به نام mspan ذخیره میشود:
* آدرس شروع اولین Page
* تعداد Pageها
* تعداد اشیاء تخصیصیافته
* و سایر متادیتا
📦 Size Class
ا * Go سایز اشیاء را در گروههایی به نام Size Class تقسیمبندی میکند.
* هر Span دقیقاً به یک Size Class تعلق دارد.
ا * Go در مجموع ۶۸ Size Class تعریف کرده است:
ا * Class 0 → برای اشیاء بزرگتر از 32KB
ا * Class 1 تا 67 → برای اشیاء کوچک و خیلی کوچک
به زبان ساده:
ا Go با تقسیم حافظه به Span و گروهبندی آنها در Size Class**، تخصیص حافظه را سریع و بهینه نگه میدارد.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔹 یکی از مفاهیم کلیدی در مدیریت حافظه گو Span است.
🧩 Span
* یک Span شامل یک یا چند Page متوالی است.
* هر Span به چند شیء همسایز تقسیم میشود.
* این کار باعث میشود Go از استراتژی segregated fit allocation استفاده کند:
* تخصیص بهینه برای اندازههای مختلف
* کاهش fragmentation (تکهتکه شدن حافظه)
🔸 اطلاعات هر Span در یک ساختار به نام mspan ذخیره میشود:
* آدرس شروع اولین Page
* تعداد Pageها
* تعداد اشیاء تخصیصیافته
* و سایر متادیتا
📦 Size Class
ا * Go سایز اشیاء را در گروههایی به نام Size Class تقسیمبندی میکند.
* هر Span دقیقاً به یک Size Class تعلق دارد.
ا * Go در مجموع ۶۸ Size Class تعریف کرده است:
ا * Class 0 → برای اشیاء بزرگتر از 32KB
ا * Class 1 تا 67 → برای اشیاء کوچک و خیلی کوچک
به زبان ساده:
ا Go با تقسیم حافظه به Span و گروهبندی آنها در Size Class**، تخصیص حافظه را سریع و بهینه نگه میدارد.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🤝1 1
Gopher Academy
📌 Memory Allocation in Go ❌️این پست اپدیت میشود ❌️ 🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go میپردازیم. درک درست از ساختار حافظه به شما کمک میکند عملکرد برنامههایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید. 🔵 Introduction…
📌 Two spans with different size classes
🔹 هر Span در Go به یک Size Class خاص تعلق دارد. این Size Class مشخص میکند که:
* چند Page در Span قرار بگیرد
* هر Page چند Object را در خود جای دهد
📦 مثالها (تصویر بالا):
ا 1. Size Class 38
* اندازه هر شیء: 2048B
* یک Page (۸KB) دقیقاً ۴ تا شیء 2048B را جا میدهد.
* پس کل Span = ۱ Page + ۸ Object
ا 2. Size Class 55
* اندازه هر شیء: 10880B
* هر شیء بزرگتر از یک Page است.
* Span در اینجا روی ۴ Page گسترده میشود و ۳ Object را نگه میدارد.
🧩 Tail Waste (هدررفت انتهایی)
* دلیل اینکه برای Size Class 55 از ۴ Page استفاده میشود و نه ۲ Page، کاهش هدررفت حافظه است.
* اگر ۲ Page میگرفت → هدررفت = 5504B
* اگر ۴ Page بگیرد → هدررفت = 128B
* ✅ پس با استفاده از صفحات بیشتر، fragmentation به حداقل میرسد.
به زبان ساده:
ا Go با استفاده از Span Class و محاسبهی دقیق Tail Waste**، حافظه را به شکل بهینه تخصیص میدهد و از هدررفت جلوگیری میکند.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔹 هر Span در Go به یک Size Class خاص تعلق دارد. این Size Class مشخص میکند که:
* چند Page در Span قرار بگیرد
* هر Page چند Object را در خود جای دهد
📦 مثالها (تصویر بالا):
ا 1. Size Class 38
* اندازه هر شیء: 2048B
* یک Page (۸KB) دقیقاً ۴ تا شیء 2048B را جا میدهد.
* پس کل Span = ۱ Page + ۸ Object
ا 2. Size Class 55
* اندازه هر شیء: 10880B
* هر شیء بزرگتر از یک Page است.
* Span در اینجا روی ۴ Page گسترده میشود و ۳ Object را نگه میدارد.
🧩 Tail Waste (هدررفت انتهایی)
* دلیل اینکه برای Size Class 55 از ۴ Page استفاده میشود و نه ۲ Page، کاهش هدررفت حافظه است.
* اگر ۲ Page میگرفت → هدررفت = 5504B
* اگر ۴ Page بگیرد → هدررفت = 128B
* ✅ پس با استفاده از صفحات بیشتر، fragmentation به حداقل میرسد.
به زبان ساده:
ا Go با استفاده از Span Class و محاسبهی دقیق Tail Waste**، حافظه را به شکل بهینه تخصیص میدهد و از هدررفت جلوگیری میکند.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🏆1 1
Gopher Academy
📌 Memory Allocation in Go ❌️این پست اپدیت میشود ❌️ 🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go میپردازیم. درک درست از ساختار حافظه به شما کمک میکند عملکرد برنامههایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید. 🔵 Introduction…
📌 Tail waste in span
🔹 هر Span ممکنه مقداری فضای استفادهنشده در انتهای خودش داشته باشه، به این فضا میگن Tail Waste.
* مثال (تصویر بالا):
* اگر Span با ۲ Page ساخته بشه → Tail Waste = 5504B
* اگر Span با ۴ Page ساخته بشه → Tail Waste = 128B
✅ پس Go برای کاهش هدررفت، از ۴ Page استفاده میکنه.
🧩 چرا فقط 67 Size Class داریم؟
برنامهی Go میتونه آبجکتهایی با سایزهای مختلف بخواد، اما Go فقط 67 Size Class برای آبجکتهای کوچک تعریف کرده.
📍 سوال: اگه ما آبجکت 300B بخوایم که دقیقاً تو جدول Size Classes نیست، چی میشه؟
* Go سایز رو Round Up میکنه به نزدیکترین Size Class بزرگتر.
* اینجا 300B → میشه 320B
🔑 نکته مهم:
اون چیزی که ما در تصویر بهعنوان "Object" میبینیم، دقیقاً آبجکت برنامه نیست، بلکه یک Size Class Object هست که توسط Runtime مدیریت میشه.
به زبان ساده:
*ا Go با Tail Waste Optimization جلوی هدررفت زیاد رو میگیره.
* با Size Class Rounding هم حافظه رو سریعتر و سادهتر مدیریت میکنه.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔹 هر Span ممکنه مقداری فضای استفادهنشده در انتهای خودش داشته باشه، به این فضا میگن Tail Waste.
* مثال (تصویر بالا):
* اگر Span با ۲ Page ساخته بشه → Tail Waste = 5504B
* اگر Span با ۴ Page ساخته بشه → Tail Waste = 128B
✅ پس Go برای کاهش هدررفت، از ۴ Page استفاده میکنه.
🧩 چرا فقط 67 Size Class داریم؟
برنامهی Go میتونه آبجکتهایی با سایزهای مختلف بخواد، اما Go فقط 67 Size Class برای آبجکتهای کوچک تعریف کرده.
📍 سوال: اگه ما آبجکت 300B بخوایم که دقیقاً تو جدول Size Classes نیست، چی میشه؟
* Go سایز رو Round Up میکنه به نزدیکترین Size Class بزرگتر.
* اینجا 300B → میشه 320B
🔑 نکته مهم:
اون چیزی که ما در تصویر بهعنوان "Object" میبینیم، دقیقاً آبجکت برنامه نیست، بلکه یک Size Class Object هست که توسط Runtime مدیریت میشه.
به زبان ساده:
*ا Go با Tail Waste Optimization جلوی هدررفت زیاد رو میگیره.
* با Size Class Rounding هم حافظه رو سریعتر و سادهتر مدیریت میکنه.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔥1 1
Gopher Academy
📌 Memory Allocation in Go ❌️این پست اپدیت میشود ❌️ 🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go میپردازیم. درک درست از ساختار حافظه به شما کمک میکند عملکرد برنامههایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید. 🔵 Introduction…
📌User objects and size class objects
🔹 در Go، آبجکتهای واقعی برنامه (User Objects) داخل آبجکتهای مربوط به Size Class قرار میگیرن.
* سایز User Object معمولاً از Size Class Object کوچیکتره → همین اختلاف باعث Waste میشه.
* علاوه بر اون، در انتهای Span هم یه بخشی از حافظه استفادهنشده باقی میمونه (Tail Waste).
* مجموع این دو نوع هدررفت = Total Waste.
🧩 مثال (Size Class 55):
* هر Size Class Object = 10880B
* 3 تا User Object (هرکدوم 10241B) توی Span جا میگیرن.
* Waste ناشی از اختلاف سایز: 1917B
* Tail Waste: 128B
* Total Waste = 1917 + 128 = 2045B ≈ 6.24% کل Span
🔑 نتیجه:
حتی با وجود Segregated Fit Strategy که هدفش کاهش Fragmentation هست، باز هم کمی هدررفت اجتنابناپذیر وجود داره.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
🔹 در Go، آبجکتهای واقعی برنامه (User Objects) داخل آبجکتهای مربوط به Size Class قرار میگیرن.
* سایز User Object معمولاً از Size Class Object کوچیکتره → همین اختلاف باعث Waste میشه.
* علاوه بر اون، در انتهای Span هم یه بخشی از حافظه استفادهنشده باقی میمونه (Tail Waste).
* مجموع این دو نوع هدررفت = Total Waste.
🧩 مثال (Size Class 55):
* هر Size Class Object = 10880B
* 3 تا User Object (هرکدوم 10241B) توی Span جا میگیرن.
* Waste ناشی از اختلاف سایز: 1917B
* Tail Waste: 128B
* Total Waste = 1917 + 128 = 2045B ≈ 6.24% کل Span
🔑 نتیجه:
حتی با وجود Segregated Fit Strategy که هدفش کاهش Fragmentation هست، باز هم کمی هدررفت اجتنابناپذیر وجود داره.
➖➖➖➖➖➖➖➖
👑 @gopher_academy
❤1🔥1
Gopher Academy
📌 Memory Allocation in Go ❌️این پست اپدیت میشود ❌️ 🔹 در این پست به بررسی جزئیات مدیریت حافظه در زبان Go میپردازیم. درک درست از ساختار حافظه به شما کمک میکند عملکرد برنامههایتان را بهتر بهینه کنید و رفتار Garbage Collector را بهتر بفهمید. 🔵 Introduction…
☝️👆👆👆
دوستان عزیز، این پستی که ریپلای کردم بهروزرسانی میشه ✨
میتونید ادامهی مقالات این بخش رو همیشه از همینجا دنبال کنید و بخونید 📚
🔗 لینک کانالهامون:
https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
💰 لینک حمایت مالی:
https://www.coffeete.ir/mrbardia72
🚀لینک تلگرام بوست:
https://t.iss.one/boost/gopher_academy
دوستان عزیز، این پستی که ریپلای کردم بهروزرسانی میشه ✨
میتونید ادامهی مقالات این بخش رو همیشه از همینجا دنبال کنید و بخونید 📚
🔗 لینک کانالهامون:
https://t.iss.one/addlist/AJ7rh2IzIh02NTI0
💰 لینک حمایت مالی:
https://www.coffeete.ir/mrbardia72
🚀لینک تلگرام بوست:
https://t.iss.one/boost/gopher_academy
🍾2 1
🎙️ عنوان پادکست:
🛠️ Can we fix it? No we can't! 🧭 Plus, exclusive behind-the-scenes look at Go West Conf.
خلاصه پادکست:
این شماره با نگاهی طنزآمیز به «Can we fix it? No we can't!» به بحثهای روز دنیای Go میپردازد و پشتصحنهای از Go West Conf را هم روایت میکند. در بخش ابزارها، نسخه v0.48.0 از vscode-go با پشتیبانی از golangci-lint v2 منتشر شده و در کنار آن یک معرفی تخصصی و گفتوگو با Ldez در قسمت 104 ارائه شده است. گزارش یک باگ در LookPath درباره گسترش نادرست "" و "." در برخی تنظیمات PATH و همچنین پیشنهادی برای حذف کامل قابلیتهای cmd/fix مطرح شده است....
🛠️ Can we fix it? No we can't! 🧭 Plus, exclusive behind-the-scenes look at Go West Conf.
خلاصه پادکست:
این شماره با نگاهی طنزآمیز به «Can we fix it? No we can't!» به بحثهای روز دنیای Go میپردازد و پشتصحنهای از Go West Conf را هم روایت میکند. در بخش ابزارها، نسخه v0.48.0 از vscode-go با پشتیبانی از golangci-lint v2 منتشر شده و در کنار آن یک معرفی تخصصی و گفتوگو با Ldez در قسمت 104 ارائه شده است. گزارش یک باگ در LookPath درباره گسترش نادرست "" و "." در برخی تنظیمات PATH و همچنین پیشنهادی برای حذف کامل قابلیتهای cmd/fix مطرح شده است....
❤2🐳1👨💻1
🔵 عنوان مقاله
Flight Recorder in Go 1.25
🟢 خلاصه مقاله:
Flight Recorder در Go 1.25 ابزاری تشخیصی است که بهصورت پیوسته ردیابی اجرای برنامه را ضبط میکند و چند ثانیهی اخیر را در یک بافر چرخشی نگه میدارد. مزیت اصلی این است که پس از وقوع مشکل، میتوان همان پنجره زمانیِ مرتبط را ذخیره و تحلیل کرد، بدون نیاز به فعالبودنِ دائمیِ ردیابی سنگین. این قابلیت برای عیبیابی مسائل گذرا در محیط production—مثل افزایش مقطعی تاخیر، بنبستها، رقابت بر سر قفلها یا تعاملات GC—با سربار کم مفید است و زمان رسیدن به ریشه مشکل را کاهش میدهد. همچنین میتوان بخش ضبطشده را صادر کرد و در ابزارهای آشنای ردیابی Go بررسی نمود تا اتفاقات منتهی به رخداد بهروشنی دیده شود.
#Go #Go125 #FlightRecorder #Tracing #Diagnostics #Observability #ProductionDebugging #Profiling
🟣لینک مقاله:
https://golangweekly.com/link/175049/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Flight Recorder in Go 1.25
🟢 خلاصه مقاله:
Flight Recorder در Go 1.25 ابزاری تشخیصی است که بهصورت پیوسته ردیابی اجرای برنامه را ضبط میکند و چند ثانیهی اخیر را در یک بافر چرخشی نگه میدارد. مزیت اصلی این است که پس از وقوع مشکل، میتوان همان پنجره زمانیِ مرتبط را ذخیره و تحلیل کرد، بدون نیاز به فعالبودنِ دائمیِ ردیابی سنگین. این قابلیت برای عیبیابی مسائل گذرا در محیط production—مثل افزایش مقطعی تاخیر، بنبستها، رقابت بر سر قفلها یا تعاملات GC—با سربار کم مفید است و زمان رسیدن به ریشه مشکل را کاهش میدهد. همچنین میتوان بخش ضبطشده را صادر کرد و در ابزارهای آشنای ردیابی Go بررسی نمود تا اتفاقات منتهی به رخداد بهروشنی دیده شود.
#Go #Go125 #FlightRecorder #Tracing #Diagnostics #Observability #ProductionDebugging #Profiling
🟣لینک مقاله:
https://golangweekly.com/link/175049/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
go.dev
Flight Recorder in Go 1.25 - The Go Programming Language
Go 1.25 introduces a new tool in the diagnostic toolbox, flight recording.
👍1
🔵 عنوان مقاله
PegoMock 4.3: A Powerful Yet Simple Mocking Framework
🟢 خلاصه مقاله:
**PegoMock 4.3 یک فریمورک mocking ساده اما قدرتمند است که با یک DSL خوانا نوشتن، خواندن و نگهداری تستها را آسان میکند. هسته اصلی آن، زبانی است که بهجای کدهای طولانی، نیت تست را شفاف بیان میکند. این ابزار از stubbing و argument matching پشتیبانی میکند؛ یعنی میتوانید رفتار وابستگیهای شبیهسازیشده را تعریف کنید و بر اساس الگوهای ورودی، انتظارها را دقیق و انعطافپذیر تنظیم کنید. نتیجه، تستهایی شفاف، کمبوایلرپلیت و قابل اتکا برای تیمهاست.
#Testing #Mocking #DSL #UnitTesting #Stubbing #ArgumentMatching #TestAutomation
🟣لینک مقاله:
https://golangweekly.com/link/175072/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
PegoMock 4.3: A Powerful Yet Simple Mocking Framework
🟢 خلاصه مقاله:
**PegoMock 4.3 یک فریمورک mocking ساده اما قدرتمند است که با یک DSL خوانا نوشتن، خواندن و نگهداری تستها را آسان میکند. هسته اصلی آن، زبانی است که بهجای کدهای طولانی، نیت تست را شفاف بیان میکند. این ابزار از stubbing و argument matching پشتیبانی میکند؛ یعنی میتوانید رفتار وابستگیهای شبیهسازیشده را تعریف کنید و بر اساس الگوهای ورودی، انتظارها را دقیق و انعطافپذیر تنظیم کنید. نتیجه، تستهایی شفاف، کمبوایلرپلیت و قابل اتکا برای تیمهاست.
#Testing #Mocking #DSL #UnitTesting #Stubbing #ArgumentMatching #TestAutomation
🟣لینک مقاله:
https://golangweekly.com/link/175072/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - petergtz/pegomock: Pegomock is a powerful, yet simple mocking framework for the Go programming language
Pegomock is a powerful, yet simple mocking framework for the Go programming language - petergtz/pegomock
👍1
Forwarded from Software Engineer Labdon
کامپیوترها برای نگهداری و نمایش کاراکترهای یک متن از یه فضای یک بایتی (معادل هشت بیت 0 یا 1) استفاده میکردن
این میزان فضا توی کامپیوتر میتونه شامل 255 حالت مختلف بشه
کامپیوترها برای نشانههای گرامری، حروف انگلیسی و عدد از استاندارد اسکی (ASCII) استفاده میکردن
این استاندارد آمریکایی میاد برای هر کاراکتر یه معادل عددی تعریف میکنه
مثلا کاراکتر A در اسکی معادل عدد 65هست
قرار گرفتن این اعداد پشت سر هم در کامپیوتر یک متن رو میسازه
مشابه این استاندارد معادل عددی برای پشتیبانی از تمام زبانهای دنیا به وجود اومد که یونیکد (Unicode) نام داره
کاراکترهای انگلیسی و اعداد انگلیسی توی یونیکد از همون اعداد استاندارد اسکی استفاده میکنن و در ادامه پشتیبانی از کاراکترهای بقیه زبانهای دنیا بهش اضافه میشه
یونیکد در حال حاضر دارای چیزی حدود 297,000 معادل عددی برای کاراکترهای مختلف از زبانهای مختلف، اموجیها و ... هست
فضای یک بایتی برای پشتیبانی از این میزان حالتهای مختلف کافی نیس
شما برای این جا دادن این میزان از حالتهای مختلف به شکل بیت کامیپوتر به حداقل سه بایت نیاز دارین
سه بایت میتونه تا حدود 16 میلیون عدد مختلف رو برای شما نگه داری کنه
حالا شما برای نگهداری یک متن که شامل کاراکترهای
یونیکد هست نیاز دارین 3 بایت برای هر کاراکتر اختصاص بدین
کاراکترهای انگلیسی تو یونیکد تنها یک بایت هم براشون کافیه ولی اگه شما برای یه متن انگلیسی، هر کاراکتر رو سه بایت در نظر بگیرین عملا به ازای هر کاراکتر انگلیسی دو بایت فضا رو هدر دادین
مثلا تو یه متن با ده هزار کاراکتر،
یه چیزی حدود 20 کیلوبایت فضای کامپیوتر رو هدر دادین
چه وقتی میخاین ازش استفاده کنین و توی رم هست و چه وقتی که روی هارد دیسک برای استفاده در آینده ذخیره شده
اینجاست که UTF-8 میتونه کمک کنه
این استاندارد که توسط یونیکد تعریف شده به جای اینکه بیاد فضای 3 بایتی به هر کاراکتر
اختصاص بده، میاد از 7 بیت راست یک بایت برای کاراکترهای اسکی استفاده میکنه
و برای کاراکترهای بعدی علاوه بر خود کاراکتر، تعداد بایت مصرف شده برای اون کاراکتر هم داخل بایت اول ذخیره میکنه
یعنی 128 کاراکتر اول اسکی به شکل عادی ذخیره میشن بدون تغییر خاصی با فقط یک بایت فضا
ولی برای کاراکترهای بعدی میاد و داخل بایت اول مشخص میکنه چه میزان فضا برای کاراکتر استفاده شده
این میزان فضا از یک بایت تا چهاربایت میتونه متغیر باشه
حالا چه شکلی اینکارو میکنه
تو یه بایت برای 128 عدد اولیه اسکی، بیت چپ همیشه صفر هست
اما وقتی بیت چپ یک میشه یعنی با یه کاراکتر UTF8 طرف هستیم
همونطور که گفتم هر کاراکتر توی UTF-8 میتونه از یک بایت تا چهاربایت متغیر باشه
کامپیوتر چطور اینو تشخیص میده؟
بیتهای 1 اولِ بایت رو میشماره تا به عدد 0 صفر برسه
یعنی اگه بایت اول با عدد باینری 110 شروع بشه، یعنی دوبایت فضا استفاده شده
اگه 1110 باشه سه بایت و ...
تو UTF-8 فضای بیتهای بایت اول بین خود کاراکتر و تعداد بایت تقسیم میشه و متغیره
اما تو بایتهای دوم و سوم و چهارم همیشه شش تا بیت راست برای خود کاراکتر استفاده میشه و دو بیت دیگه برای هندل کردن ارور تو utf-8 استفاده میشه
امیدوارم تونسته باشم با دانش ناقص خودم شما رو در مورد این انکدینگ رایج دنیای کامپیوتر آشنا کرده باشم
توضیحات دقیقتر:
https://en.wikipedia.org/wiki/UTF-8
سایت استفاده شده برای تست بایت UTF-8:
https://utf8-playground.netlify.app/
| <Amir/>
این میزان فضا توی کامپیوتر میتونه شامل 255 حالت مختلف بشه
کامپیوترها برای نشانههای گرامری، حروف انگلیسی و عدد از استاندارد اسکی (ASCII) استفاده میکردن
این استاندارد آمریکایی میاد برای هر کاراکتر یه معادل عددی تعریف میکنه
مثلا کاراکتر A در اسکی معادل عدد 65هست
قرار گرفتن این اعداد پشت سر هم در کامپیوتر یک متن رو میسازه
مشابه این استاندارد معادل عددی برای پشتیبانی از تمام زبانهای دنیا به وجود اومد که یونیکد (Unicode) نام داره
کاراکترهای انگلیسی و اعداد انگلیسی توی یونیکد از همون اعداد استاندارد اسکی استفاده میکنن و در ادامه پشتیبانی از کاراکترهای بقیه زبانهای دنیا بهش اضافه میشه
یونیکد در حال حاضر دارای چیزی حدود 297,000 معادل عددی برای کاراکترهای مختلف از زبانهای مختلف، اموجیها و ... هست
فضای یک بایتی برای پشتیبانی از این میزان حالتهای مختلف کافی نیس
شما برای این جا دادن این میزان از حالتهای مختلف به شکل بیت کامیپوتر به حداقل سه بایت نیاز دارین
سه بایت میتونه تا حدود 16 میلیون عدد مختلف رو برای شما نگه داری کنه
حالا شما برای نگهداری یک متن که شامل کاراکترهای
یونیکد هست نیاز دارین 3 بایت برای هر کاراکتر اختصاص بدین
کاراکترهای انگلیسی تو یونیکد تنها یک بایت هم براشون کافیه ولی اگه شما برای یه متن انگلیسی، هر کاراکتر رو سه بایت در نظر بگیرین عملا به ازای هر کاراکتر انگلیسی دو بایت فضا رو هدر دادین
مثلا تو یه متن با ده هزار کاراکتر،
یه چیزی حدود 20 کیلوبایت فضای کامپیوتر رو هدر دادین
چه وقتی میخاین ازش استفاده کنین و توی رم هست و چه وقتی که روی هارد دیسک برای استفاده در آینده ذخیره شده
اینجاست که UTF-8 میتونه کمک کنه
این استاندارد که توسط یونیکد تعریف شده به جای اینکه بیاد فضای 3 بایتی به هر کاراکتر
اختصاص بده، میاد از 7 بیت راست یک بایت برای کاراکترهای اسکی استفاده میکنه
و برای کاراکترهای بعدی علاوه بر خود کاراکتر، تعداد بایت مصرف شده برای اون کاراکتر هم داخل بایت اول ذخیره میکنه
یعنی 128 کاراکتر اول اسکی به شکل عادی ذخیره میشن بدون تغییر خاصی با فقط یک بایت فضا
ولی برای کاراکترهای بعدی میاد و داخل بایت اول مشخص میکنه چه میزان فضا برای کاراکتر استفاده شده
این میزان فضا از یک بایت تا چهاربایت میتونه متغیر باشه
حالا چه شکلی اینکارو میکنه
تو یه بایت برای 128 عدد اولیه اسکی، بیت چپ همیشه صفر هست
اما وقتی بیت چپ یک میشه یعنی با یه کاراکتر UTF8 طرف هستیم
همونطور که گفتم هر کاراکتر توی UTF-8 میتونه از یک بایت تا چهاربایت متغیر باشه
کامپیوتر چطور اینو تشخیص میده؟
بیتهای 1 اولِ بایت رو میشماره تا به عدد 0 صفر برسه
یعنی اگه بایت اول با عدد باینری 110 شروع بشه، یعنی دوبایت فضا استفاده شده
اگه 1110 باشه سه بایت و ...
تو UTF-8 فضای بیتهای بایت اول بین خود کاراکتر و تعداد بایت تقسیم میشه و متغیره
اما تو بایتهای دوم و سوم و چهارم همیشه شش تا بیت راست برای خود کاراکتر استفاده میشه و دو بیت دیگه برای هندل کردن ارور تو utf-8 استفاده میشه
امیدوارم تونسته باشم با دانش ناقص خودم شما رو در مورد این انکدینگ رایج دنیای کامپیوتر آشنا کرده باشم
توضیحات دقیقتر:
https://en.wikipedia.org/wiki/UTF-8
سایت استفاده شده برای تست بایت UTF-8:
https://utf8-playground.netlify.app/
| <Amir/>
Wikipedia
UTF-8
variable-width encoding (into one to four bytes) and transformation format of code points for the universal character set defined by ISO/IEC 10646 and The Unicode® Standard, compatible with ASCII
👍2🍾1
🔵 عنوان مقاله
Failsafe: Fault Tolerance, Resilience Patterns & Policies
🟢 خلاصه مقاله:
Failsafe یک کتابخانه برای ساخت اپلیکیشنهای fault-tolerant است که به شما امکان میدهد کدهای حساس را با مجموعهای از سیاستهای تابآور مانند Retry، CircuitBreaker، RateLimiter، Timeout و Fallback بپوشانید. این سیاستها قابل ترکیباند و بدون تغییر منطق کسبوکار، حفاظتهای چندلایه ایجاد میکنند.
در نسخههای اخیر، دو قابلیت کلیدی اضافه شده است: نخست، usage tracking برای اعمال عدالت و جلوگیری از اثر “noisy neighbor” از طریق پایش مصرف و اجرای محدودیتها یا سهمیهها. دوم، execution budgets برای تعیین سقف کلی هزینه اعمال تابآوری—مثل مجموع retries یا hedges—در سطح یک فراخوانی، جریان کاری یا کل سیستم. این بودجهها مانع از افراط در بازیابی میشوند و تعادلی بین نرخ موفقیت، تأخیر، هزینه و SLOها برقرار میکنند.
خروجی این رویکرد، عملکرد قابلپیشبینیتر، تنزل کنترلشده در شرایط خطا و اعمال سیاستهای عملیاتی سازگار در برابر رخدادها و اوج ترافیک است.
#FaultTolerance #Resilience #Failsafe #Retry #CircuitBreaker #RateLimiter #Timeout #Fallback
🟣لینک مقاله:
https://golangweekly.com/link/175069/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Failsafe: Fault Tolerance, Resilience Patterns & Policies
🟢 خلاصه مقاله:
Failsafe یک کتابخانه برای ساخت اپلیکیشنهای fault-tolerant است که به شما امکان میدهد کدهای حساس را با مجموعهای از سیاستهای تابآور مانند Retry، CircuitBreaker، RateLimiter، Timeout و Fallback بپوشانید. این سیاستها قابل ترکیباند و بدون تغییر منطق کسبوکار، حفاظتهای چندلایه ایجاد میکنند.
در نسخههای اخیر، دو قابلیت کلیدی اضافه شده است: نخست، usage tracking برای اعمال عدالت و جلوگیری از اثر “noisy neighbor” از طریق پایش مصرف و اجرای محدودیتها یا سهمیهها. دوم، execution budgets برای تعیین سقف کلی هزینه اعمال تابآوری—مثل مجموع retries یا hedges—در سطح یک فراخوانی، جریان کاری یا کل سیستم. این بودجهها مانع از افراط در بازیابی میشوند و تعادلی بین نرخ موفقیت، تأخیر، هزینه و SLOها برقرار میکنند.
خروجی این رویکرد، عملکرد قابلپیشبینیتر، تنزل کنترلشده در شرایط خطا و اعمال سیاستهای عملیاتی سازگار در برابر رخدادها و اوج ترافیک است.
#FaultTolerance #Resilience #Failsafe #Retry #CircuitBreaker #RateLimiter #Timeout #Fallback
🟣لینک مقاله:
https://golangweekly.com/link/175069/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
Failsafe-go
Fault tolerance and resilience patterns for Go
Failsafe-go website
❤1
Forwarded from Bardia & Erfan
پاول دورُف: حاضرَم بمیرم، ولی آزادی و امنیت کاربران رو نفروشم!
در گفتوگوی عمیق با «لِکس فریدمن»، بنیانگذار تلگرام از فلسفهٔ زندگی، حریم خصوصی، بیتکوین و مقاومتش در برابر فشار دولتها گفت.
> 🗣
🔒
او تأکید کرد تلگرام هیچوقت “در پشتی” برای دولتها باز نکرده و در برابر فشار روسیه و ایران برای دسترسی به اطلاعات یا سانسور مقاومت کرده است.
>
📱 ۷ اصل فکری و مدیریتی پاول دورُف (بر اساس مصاحبه):
1️⃣ آزادی و اخلاق بالاتر از هر سود مالی — او میگوید حاضر است تمام داراییاش را از دست بدهد تا آزادی بیان و امنیت کاربران حفظ شود.
2️⃣ مینیمالیسم و انضباط شخصی — سبک زندگیاش ساده، بدون الکل، قهوه یا حواسپرتی است؛ تمرکز کامل روی مأموریت و نظم ذهنی.
3️⃣ تیم کوچک، تأثیر بزرگ — معتقد است تیمهای بزرگ بهرهوری را میکُشند؛ موفقیت تلگرام حاصل اعتماد به چند نابغهٔ منضبط است.
4️⃣ مقاومت در برابر سانسور و در پشتی — هیچ دولت یا شرکتی حق کنترل یا شنود تلگرام را ندارد. رمزنگاری و طراحی MTProto را «دیوار آزادی دیجیتال» مینامد.
5️⃣ پول و قدرت ابزارند، نه هدف — او از مدلهای انحصاری و کمیسیونهای اپل و گوگل انتقاد میکند و تأکید دارد که ثروت نباید آزادی را محدود کند.
6️⃣ باور به فناوری آزاد مثل بیتکوین — بیتکوین را «نمادِ کاهش نیاز به اعتماد به واسطهها و آزادی مالی» میداند؛ از پروژه TON بهعنوان زیربنای اقتصاد آزاد تلگرام یاد میکند.
7️⃣ نگاه فلسفی به زندگی و مرگ — از کافکا، شوپنهاور و «جاودانگی کوانتومی» میگوید؛ باور دارد انسان باید بدون ترس از مرگ، بر پایهٔ ارزشهای خودش زندگی کند.
در گفتوگوی عمیق با «لِکس فریدمن»، بنیانگذار تلگرام از فلسفهٔ زندگی، حریم خصوصی، بیتکوین و مقاومتش در برابر فشار دولتها گفت.
> 🗣
«من ترجیح میدم بمیرم و تمام داراییم رو از دست بدهم تا اینکه اطلاعات کاربران رو به هر دولتی تحویل بدم.
آزادی و امنیت دادهها، خط قرمز من و تلگرامه.»
🔒
او تأکید کرد تلگرام هیچوقت “در پشتی” برای دولتها باز نکرده و در برابر فشار روسیه و ایران برای دسترسی به اطلاعات یا سانسور مقاومت کرده است.
>
«در روسیه و ایران بارها تلاش شد ما رو مجبور به همکاری کنن. ولی ما مقاومت کردیم چون اگر یکبار کوتاه بیای، دیگه آزادی واقعی وجود نداره.»
📱 ۷ اصل فکری و مدیریتی پاول دورُف (بر اساس مصاحبه):
1️⃣ آزادی و اخلاق بالاتر از هر سود مالی — او میگوید حاضر است تمام داراییاش را از دست بدهد تا آزادی بیان و امنیت کاربران حفظ شود.
2️⃣ مینیمالیسم و انضباط شخصی — سبک زندگیاش ساده، بدون الکل، قهوه یا حواسپرتی است؛ تمرکز کامل روی مأموریت و نظم ذهنی.
3️⃣ تیم کوچک، تأثیر بزرگ — معتقد است تیمهای بزرگ بهرهوری را میکُشند؛ موفقیت تلگرام حاصل اعتماد به چند نابغهٔ منضبط است.
4️⃣ مقاومت در برابر سانسور و در پشتی — هیچ دولت یا شرکتی حق کنترل یا شنود تلگرام را ندارد. رمزنگاری و طراحی MTProto را «دیوار آزادی دیجیتال» مینامد.
5️⃣ پول و قدرت ابزارند، نه هدف — او از مدلهای انحصاری و کمیسیونهای اپل و گوگل انتقاد میکند و تأکید دارد که ثروت نباید آزادی را محدود کند.
6️⃣ باور به فناوری آزاد مثل بیتکوین — بیتکوین را «نمادِ کاهش نیاز به اعتماد به واسطهها و آزادی مالی» میداند؛ از پروژه TON بهعنوان زیربنای اقتصاد آزاد تلگرام یاد میکند.
7️⃣ نگاه فلسفی به زندگی و مرگ — از کافکا، شوپنهاور و «جاودانگی کوانتومی» میگوید؛ باور دارد انسان باید بدون ترس از مرگ، بر پایهٔ ارزشهای خودش زندگی کند.
❤5 4👍2🐳2