Forwarded from Go Casts 🚀
اگه طرفدار و کاربر editorهای ترمینالی مثل vim و مشتقاتش هستید پیشنهاد میکنم حتما Helix رو امتحان کنید.
با Rust توسعه داده شده و learning curve خیلی راحت تری داره.
همیشه لیست hotkeyهای مد نظرتون جلوی چشمتونه و لازم نیست همه چیز رو حفظ کنید یا اونقدر تمرین کنید که ملکه ذهنتون بشه.
دو هفته ای میشه که محیط اصلی توسعه خودم هست و بشدت ازش راضیم.
مزیت اصلی ش نسبت به vim همینه که در یه زمان خیلی محدود میتونید روش مسلط بشید و به عنوان محیط اصلی توسعه ازش استفاده کنید.
ترکیب zellij با helix یه محیط خیلی حرفه ای و customize شده توسعه رو میتونه بهتون بده.
اگه تجربه تون با vim شکست خورده مثل من، با helix یه تلاش مجدد کنید شاید این بار موفقیت آمیز باشه...
https://helix-editor.com
@gocasts
با Rust توسعه داده شده و learning curve خیلی راحت تری داره.
همیشه لیست hotkeyهای مد نظرتون جلوی چشمتونه و لازم نیست همه چیز رو حفظ کنید یا اونقدر تمرین کنید که ملکه ذهنتون بشه.
دو هفته ای میشه که محیط اصلی توسعه خودم هست و بشدت ازش راضیم.
مزیت اصلی ش نسبت به vim همینه که در یه زمان خیلی محدود میتونید روش مسلط بشید و به عنوان محیط اصلی توسعه ازش استفاده کنید.
ترکیب zellij با helix یه محیط خیلی حرفه ای و customize شده توسعه رو میتونه بهتون بده.
اگه تجربه تون با vim شکست خورده مثل من، با helix یه تلاش مجدد کنید شاید این بار موفقیت آمیز باشه...
https://helix-editor.com
@gocasts
Forwarded from Morteza Bashsiz مرتضی باشسیز (Morteza Bashsiz)
ویدیو شماره ۱۲ - سرویس dnsdist
توی این ویدیو از سرویس dnsdist استفاده کردم و توضیح دادم که چه قابلیتهایی داره و کجاها میتونیم و باید ازش استفاده کنیم.
https://youtu.be/Vkmep7WNk5M?si=qvm4ZaSMbXmvyk-4
توی این ویدیو از سرویس dnsdist استفاده کردم و توضیح دادم که چه قابلیتهایی داره و کجاها میتونیم و باید ازش استفاده کنیم.
https://youtu.be/Vkmep7WNk5M?si=qvm4ZaSMbXmvyk-4
Forwarded from DevTwitter | توییت برنامه نویسی
یه cli ساختم برای ساخت پروژه های جاوااسکریپت
پروژه ها میتونن فول استک یا به صورت تکی بکند یا فرانت باشن
هر بار میخواستم یه پروژه ری اکت + vite بسازم میخواست یه command طولانی رو حفظ کنم برا همین اینو ساختم امیدوارم شما هم خوشتون بیاد و خوشحال میشم مشکلاتش رو توی issues گیتهاب بزارید
https://www.npmjs.com/package/booz-stack
@DevTwitter | <../>
پروژه ها میتونن فول استک یا به صورت تکی بکند یا فرانت باشن
هر بار میخواستم یه پروژه ری اکت + vite بسازم میخواست یه command طولانی رو حفظ کنم برا همین اینو ساختم امیدوارم شما هم خوشتون بیاد و خوشحال میشم مشکلاتش رو توی issues گیتهاب بزارید
https://www.npmjs.com/package/booz-stack
@DevTwitter | <../>
Forwarded from Linuxor ?
Forwarded from Frontend with Erfun👨🏻💻 (Erfun Ghodoosi)
در راستای تاثیر ai روی افرادی که تازه شروع کردن
یکی اونایی که میبینن ai هست و موقعیت رو برای خودشون برای یادگیری غیر ممکن و بدون آینده میبینن برام خنده داره
یکی هم خنده دار تر، اونایی که میبینن ai هست خودشونو همه کاره جا میزنن:))
طرفو باهاش حرف میزنی هیچی حالیش نیست ولی همه جور پروژه ای میزنه. نمیدونم بک اند بدی میزنه فرانت بدی میزنه دواپس بدی کار میکنه دیزاین هرچیییی.
بعد وقتی داری باهاش صحبت میکنی یه کلمه در میون اینارو میشنوی:
ai
LLM
grok
gpt
4o
Gemeni
...
نه که استفاده کردن از اینا بد باشه ها...
بحث اینه که این افراد دیگه یباره بالا خونه رو دادن اجاره و اوج زحمتی که میکشن تمدید اکانت cursor یا نمیدونم copilot های مختلفه
یکی اونایی که میبینن ai هست و موقعیت رو برای خودشون برای یادگیری غیر ممکن و بدون آینده میبینن برام خنده داره
یکی هم خنده دار تر، اونایی که میبینن ai هست خودشونو همه کاره جا میزنن:))
طرفو باهاش حرف میزنی هیچی حالیش نیست ولی همه جور پروژه ای میزنه. نمیدونم بک اند بدی میزنه فرانت بدی میزنه دواپس بدی کار میکنه دیزاین هرچیییی.
بعد وقتی داری باهاش صحبت میکنی یه کلمه در میون اینارو میشنوی:
ai
LLM
grok
gpt
4o
Gemeni
...
نه که استفاده کردن از اینا بد باشه ها...
بحث اینه که این افراد دیگه یباره بالا خونه رو دادن اجاره و اوج زحمتی که میکشن تمدید اکانت cursor یا نمیدونم copilot های مختلفه
Forwarded from محتوای آزاد سهراب
Forwarded from Curious Geek ⚡️
سلام به همگی ❤️🌱
امشب هم مثل هر هفته ویس کالمون با قدرت پابرجاست.
پوزش میخوام بابت این که دیر داریم اطلاع میدیم.🥲
تو ذهنتون باشه هر هفته این برنامه رو داریم مگر قبلش اعلام کنیم که نیست.
ساعت ۹:۳۰ امشب تا ۱۲ یا حتی بیشتر(ببینیم چی میشه 😅) هیچ مشکلی هم نداره وسطش بیاید!!! هر ساعتی تونستید بیاید
موضوعات امشب خیلیی جذابن امیدوارم از دستش ندید!
🕺 "اگه بخوای یه مهارت غیرفنی یاد بگیری، چی انتخاب میکنی؟"
🎭 "نقشی که دوست داشتی توی یه فیلم بازی کنی چی بود؟"
🎮 "بازی دوران کودکی که هنوزم دلت براش تنگ میشه"
🌚 "اگه میتونستی یک روز با کسی عوض بشی، کی رو انتخاب میکردی و چرا؟"
🏝️ "اگه هیچ محدودیتی نداشتی، الان کجای دنیا بودی و چیکار میکردی؟"
🎭 "یه چیزی که از بیرون خفن به نظر میاد ولی وقتی تجربهش کردی گفتی: فقط همین بود؟!"
ویس کال در گروه The Geeks برگزار میشه، کافیه از این لینک درخواست بدید تا وال ای برای یک مصاحبه دو دقیقه ای بهتون پیام بده
🔗 t.iss.one/+FYq2IWScw69hMDA8
قانون اصلی: حرف فنی در گروه ممنوع.
🍃🙂
🆔 t.iss.one/TheGeeksCommunity
امشب هم مثل هر هفته ویس کالمون با قدرت پابرجاست.
پوزش میخوام بابت این که دیر داریم اطلاع میدیم.🥲
تو ذهنتون باشه هر هفته این برنامه رو داریم مگر قبلش اعلام کنیم که نیست.
ساعت ۹:۳۰ امشب تا ۱۲ یا حتی بیشتر(ببینیم چی میشه 😅) هیچ مشکلی هم نداره وسطش بیاید!!! هر ساعتی تونستید بیاید
موضوعات امشب خیلیی جذابن امیدوارم از دستش ندید!
🕺 "اگه بخوای یه مهارت غیرفنی یاد بگیری، چی انتخاب میکنی؟"
🎭 "نقشی که دوست داشتی توی یه فیلم بازی کنی چی بود؟"
🎮 "بازی دوران کودکی که هنوزم دلت براش تنگ میشه"
🌚 "اگه میتونستی یک روز با کسی عوض بشی، کی رو انتخاب میکردی و چرا؟"
🏝️ "اگه هیچ محدودیتی نداشتی، الان کجای دنیا بودی و چیکار میکردی؟"
🎭 "یه چیزی که از بیرون خفن به نظر میاد ولی وقتی تجربهش کردی گفتی: فقط همین بود؟!"
ویس کال در گروه The Geeks برگزار میشه، کافیه از این لینک درخواست بدید تا وال ای برای یک مصاحبه دو دقیقه ای بهتون پیام بده
🔗 t.iss.one/+FYq2IWScw69hMDA8
قانون اصلی: حرف فنی در گروه ممنوع.
🍃🙂
🆔 t.iss.one/TheGeeksCommunity
Telegram
The Geeks Family
Hirad invites you to join this group on Telegram.
Forwarded from Codino School (ایمان غفوری)
This media is not supported in your browser
VIEW IN TELEGRAM
بالاخره بعد از ۵ سال... میکروسکوپ رسید به اون حالتی که من همیشه آرزوش رو داشتم.
در نسخه جدید به محض اتمام پردازش برای یک پوشه خاص گزارش در کنسول چاپ میشه و بعد اسکن برای پوشه ی بعدی آغاز خواهد شد.
این کار در پشت صحنه با استفاده از Generator ها و کیورد yield انجام شده.
@codino
در نسخه جدید به محض اتمام پردازش برای یک پوشه خاص گزارش در کنسول چاپ میشه و بعد اسکن برای پوشه ی بعدی آغاز خواهد شد.
این کار در پشت صحنه با استفاده از Generator ها و کیورد yield انجام شده.
@codino
Forwarded from NimaCodez | خفنیجات با نیما
اگر قصدتون انتخاب کردن رشتهی کامپیوتر باشه، دوتا انتخاب دارید:
🔄 سیکل دنیای کامپیوتر به این شکله:
بررسی این رشته برای آینده:
تو خارج از ایران ما Computer Science داریم و چیزی تحت عنوان Comuter Engineering اصلا شناخته شده نیست. موقعیت علوم کامپیوتر بهتره.
مهندسی کامپیوتر فراخوان های استخدامی بیشتری رو به خودش اختصاص داده ولی جدیدا علوم کامپیوتر هم تک و توک درخواست میکنن.
حقیقتا فرقی نداره؛ اینجا بیشتر مهارتتون رو میسنجن، ولی من اگر بخوام کسی رو که میخواد رو نرمافزارم کار کنه رو استخدام کنم نه سختافزار، ترجیحم اینه کسی که علوم کامپیوتر رو «درست» خونده باشه روش کار کنه.
امسال رو خبر ندارم.
موفق باشید.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Gopher Academy
🔐 مفهوم Mutex در Go
ا
---
🧠 وضعیتهای مختلف Mutex
میتوان عملکرد آن را با وضعیتهای زیر توضیح داد:
ا
ا* Unlocked (حالت اولیه): Mutex آزاد است و هر goroutine میتواند با فراخوانی
ا* Locked: وقتی یک goroutine
ا* Waiting: در صورت تلاش همزمان چند goroutine برای گرفتن قفل، بقیه به صف انتظار اضافه میشوند.
ا* Starvation Mode: اگر یک goroutine بیش از \~۱ms نتواند قفل را بگیرد، سیستم وارد حالت گرسنگی (fair mode) شده و به ترتیب به goroutineهای قدیمیتر اجازه دسترسی میدهد ([CSDN Blog][3], [Zhihu Zhiwan][4]).
---
⚙️ عملکرد درونی Mutex
* از عملیات غیرقابل قطع (CAS) برای کنترل فیلد
* در شرایط کمرقابت ابتدا بهصورت spinning تلاش میکند تا حد ممکن بدون خوابیدن lock را بگیرد.
* در سطوح بالای رقابت، goroutineها به صف انتظار اضافه میشوند و بیدار میشوند وقتی قفل آزاد شد.
* حالت starvation زمانی فعال میشود که یک goroutine مدت طولانی در انتظار است تا از حالت FIFO استفاده شود
---
✅ نکات کاربردی و بهترین شیوهها
1. هیچ گاه Mutex را کپی نکنید؛ حتی تصادفاً**—مستقیماً باید از pointers استفاده شود
2. هیچگاه موضعی در struct آن را جاسازی (embed) نکنید، چون باعث در دسترسپذیری ناخواسته متدهای Lock/Unlock میشود
3. از
4. بخش قفلشده باید حداقل زمان ممکن طول بکشد؛ انجام عملیات بلندمدت در آن ممکن است باعث کاهش concurrency و تأخیر جدی شود.
---
⚠️ مشکلات رایج و اشتباهات متداول
* **کپی ناخواسته Mutex: حذف ایمنی synchronization و موجب رفتار نامشخص.
ا* embedding Mutex: باعث انتشار متدهای داخلی قفل به بیرون struct میشود — روش اشتباهی است
ا* Double Unlock یا Unlock بدون Lock قبلی → panic.
* عدم رعایت defer → ممکن است در صورت خطا یا exit، قفل آزاد نشود و deadlock رخ دهد.
ا* Deadlock ناشی از تداخل دو یا چند goroutine با mutexهای متفاوت و انتظار متقابل بر مبنای نظم اشتباهی بین
ا
sync.Mutex یک اصل اساسی برای کنترل دسترسی امن به منابع مشترک بین goroutineها است. این نوع قفل تضمین میکند که در هر لحظه تنها یک goroutine به بخش حیاتی از کد (critical section) دسترسی دارد ---
🧠 وضعیتهای مختلف Mutex
میتوان عملکرد آن را با وضعیتهای زیر توضیح داد:
ا
ا* Unlocked (حالت اولیه): Mutex آزاد است و هر goroutine میتواند با فراخوانی
Lock() آن را بگیرد.ا* Locked: وقتی یک goroutine
Lock() میزند، دیگران باید منتظر بمانند.ا* Waiting: در صورت تلاش همزمان چند goroutine برای گرفتن قفل، بقیه به صف انتظار اضافه میشوند.
ا* Starvation Mode: اگر یک goroutine بیش از \~۱ms نتواند قفل را بگیرد، سیستم وارد حالت گرسنگی (fair mode) شده و به ترتیب به goroutineهای قدیمیتر اجازه دسترسی میدهد ([CSDN Blog][3], [Zhihu Zhiwan][4]).
---
⚙️ عملکرد درونی Mutex
* از عملیات غیرقابل قطع (CAS) برای کنترل فیلد
state استفاده میشود.* در شرایط کمرقابت ابتدا بهصورت spinning تلاش میکند تا حد ممکن بدون خوابیدن lock را بگیرد.
* در سطوح بالای رقابت، goroutineها به صف انتظار اضافه میشوند و بیدار میشوند وقتی قفل آزاد شد.
* حالت starvation زمانی فعال میشود که یک goroutine مدت طولانی در انتظار است تا از حالت FIFO استفاده شود
---
✅ نکات کاربردی و بهترین شیوهها
1. هیچ گاه Mutex را کپی نکنید؛ حتی تصادفاً**—مستقیماً باید از pointers استفاده شود
2. هیچگاه موضعی در struct آن را جاسازی (embed) نکنید، چون باعث در دسترسپذیری ناخواسته متدهای Lock/Unlock میشود
3. از
defer m.Unlock() برای اطمینان از آزادسازی قفل حتی در صورت panic یا return زودهنگام استفاده کنید 4. بخش قفلشده باید حداقل زمان ممکن طول بکشد؛ انجام عملیات بلندمدت در آن ممکن است باعث کاهش concurrency و تأخیر جدی شود.
---
⚠️ مشکلات رایج و اشتباهات متداول
* **کپی ناخواسته Mutex: حذف ایمنی synchronization و موجب رفتار نامشخص.
ا* embedding Mutex: باعث انتشار متدهای داخلی قفل به بیرون struct میشود — روش اشتباهی است
ا* Double Unlock یا Unlock بدون Lock قبلی → panic.
* عدم رعایت defer → ممکن است در صورت خطا یا exit، قفل آزاد نشود و deadlock رخ دهد.
ا* Deadlock ناشی از تداخل دو یا چند goroutine با mutexهای متفاوت و انتظار متقابل بر مبنای نظم اشتباهی بین
Lock()ها.Forwarded from Untibody
یه گاوی از مجلس میگه «باید به مردم آموزشهایی داد که نمونه آن استفاده از آب خاکستری یا تصفیه مجدد آب مصرفی است که از سالها پیش در برخی کشورها رایج بوده است»
کم کم باید آموزش ببینیم چطوری با سر مورچه وحشی بخیه بزنیم
با جویدن و قراردادن گزنه رودخانه روی زخمهایمان از خونریزی و عفونت جلوگریری کنیم
کم کم باید آموزش ببینیم چطوری با سر مورچه وحشی بخیه بزنیم
با جویدن و قراردادن گزنه رودخانه روی زخمهایمان از خونریزی و عفونت جلوگریری کنیم
Forwarded from Linuxor ?
Forwarded from DevTwitter | توییت برنامه نویسی
کتابخونه ormax به عنوان سریعترین ORM تو پایتون شناخته شد
این کتابخونه با شکست دادن SQLAlchemy و Turtoise تونسته تو بنچمارک بین ORM های معروف برنده بشه...
و این پروژه در سطح جهانی درحال معروف شدن هست.
https://github.com/shayanheidari01/ormax
@DevTwitter | <Shayan Heidari/>
این کتابخونه با شکست دادن SQLAlchemy و Turtoise تونسته تو بنچمارک بین ORM های معروف برنده بشه...
و این پروژه در سطح جهانی درحال معروف شدن هست.
https://github.com/shayanheidari01/ormax
@DevTwitter | <Shayan Heidari/>
Forwarded from a pessimistic researcher (Kc)
Forwarded from Laravel News
Advanced Application Architecture through Laravel's Service Container Management https://laravel-news.com/service-container-management
Laravel News
Advanced Application Architecture through Laravel's Service Container Management - Laravel News
Master Laravel's dependency injection through advanced service container patterns that enable flexible application architecture. These powerful binding mechanisms support contextual resolution, singleton management, and comprehensive testing strategies for…
Forwarded from Gopher Academy
مقالهی «Top 6 Golang Logging Best Practices» در HackerNoon توسط Lane Wagner در سال ۲۰۲۲ منتشر شده و به بررسی نکاتی اساسی ولی کاربردی دربارهی لاگنویسی در زبان Go پرداخته است. در ادامه، خلاصهای مختصر
---
## نکات کلیدی مقاله
1. استفاده از `error` بجای رشتهها (strings)
از نوع استاندارد
2. Wrap کردن خطاها
بجای لاگ فقط پیام خطا، آن را wrap کن تا محل دقیق رخداد خطا (stack trace یا خط کد) حفظ شود و دیباگ آسانتر شود.
3. استفاده از `fmt.Errorf()` برای قالببندی
4. قالبدهی structها (Format Structs)
وقتی structها در لاگها استفاده میشن، آنها را قالبمند کن تا خواناتر و مفیدتر باشند؛ مثلاً با فرمت:
5. استفاده از نسخه variadic توابع مانند `fmt.Println()`
ورژن variadic بهت اجازه میدهد مولفههای مختلف را بدون تلاش برای concatenation دستی به هم بچسبونی. خوانا و منعطفتره.
6. استفاده از بستهی استاندارد `log`
برای شروع خوبه، خصوصاً برای پروژههای ساده یا کوچک.
---
جمعبندی سریع
اینها اصولی هستند که در بسیاری از آموزشها و بحثهای Go توصیه میشن: استفاده از سیستم خطای داخلی، پیروی از استانداردها در wrap خطا، قالبدهی مناسب، و استفاده از امکانات داخلی زبان قبل از رفتن به راهحلهای پیچیدهتر.
---
توصیههای عملی
* لاگنویسی رو با استفاده از خطاهای داخلی Go شروع کن.
* ورودیها رو wrap کن؛ structها رو مرتب قالب بده.
* برای لاگهای پیشرفتهتر، از structured logging استفاده کن (مثل Zap یا Zerolog).
* همیشه context مهم رو مثل request ID در لاگها نگهدار.
* حجم لاگ رو کنترل کن: نه خیلی زیاد باشه که کارایی رو پایین بیاره، نه خیلی کم که مفید نباشه.
---
## نکات کلیدی مقاله
1. استفاده از `error` بجای رشتهها (strings)
از نوع استاندارد
error برای نشان دادن خطاها استفاده کن تا از رفتارهای نادرست مانند نادیدهگرفتن خطا یا پراکندگی سازوکار خطا جلوگیری شود.2. Wrap کردن خطاها
بجای لاگ فقط پیام خطا، آن را wrap کن تا محل دقیق رخداد خطا (stack trace یا خط کد) حفظ شود و دیباگ آسانتر شود.
3. استفاده از `fmt.Errorf()` برای قالببندی
fmt.Errorf() با قابلیت %w به تو اجازه میدهد خطاها را قالببندی و wrap کنی: return fmt.Errorf("failed to open file: %w", err)
4. قالبدهی structها (Format Structs)
وقتی structها در لاگها استفاده میشن، آنها را قالبمند کن تا خواناتر و مفیدتر باشند؛ مثلاً با فرمت:
fmt.Printf("%+v", myStruct)
5. استفاده از نسخه variadic توابع مانند `fmt.Println()`
ورژن variadic بهت اجازه میدهد مولفههای مختلف را بدون تلاش برای concatenation دستی به هم بچسبونی. خوانا و منعطفتره.
6. استفاده از بستهی استاندارد `log`
برای شروع خوبه، خصوصاً برای پروژههای ساده یا کوچک.
log پایدار و سبک هست و کافی برای کاربردهای ابتدایی است.---
جمعبندی سریع
اینها اصولی هستند که در بسیاری از آموزشها و بحثهای Go توصیه میشن: استفاده از سیستم خطای داخلی، پیروی از استانداردها در wrap خطا، قالبدهی مناسب، و استفاده از امکانات داخلی زبان قبل از رفتن به راهحلهای پیچیدهتر.
---
توصیههای عملی
* لاگنویسی رو با استفاده از خطاهای داخلی Go شروع کن.
* ورودیها رو wrap کن؛ structها رو مرتب قالب بده.
* برای لاگهای پیشرفتهتر، از structured logging استفاده کن (مثل Zap یا Zerolog).
* همیشه context مهم رو مثل request ID در لاگها نگهدار.
* حجم لاگ رو کنترل کن: نه خیلی زیاد باشه که کارایی رو پایین بیاره، نه خیلی کم که مفید نباشه.
Forwarded from Laravel News
Switch Between Personas in Laravel With the MultiPersona Package https://laravel-news.com/laravel-multipersona
Laravel News
Switch Between Personas in Laravel With the MultiPersona Package - Laravel News
The Laravel MultiPersona package is a lightweight context-layer system for Laravel users. It allows a single user to switch between different roles, accounts, or tenants dynamically, without creating multiple logins or sessions.
Forwarded from Bardiaism
Media is too big
VIEW IN TELEGRAM
آموزش Qt و Qml - انجام پروژه پنل بازی - قسمت چهارم
تو این قسمت از توسعه پنل بازیمون، تصاویر بازیهای استیم رو میخونیم و نمایش میدیم. بعد از اون میریم سر پیادهسازی سیستم یکپارچهای که تو قسمت قبل شروع کردیم که مدیریت همه سورسها (از جمله استیم) رو اون سیستم و لایهی بیرونی انجام میده.
این ویدیو بخاطر طولانی بودن به دو قسمت ۴ و ۵ شکسته شد، قسمت بعدی به زودی آپلود میشه.
گیتهاب پروژه:
https://github.com/realbardia/game-panel
لینک ویدیو در کانال یوتیوب:
https://youtu.be/1gwBRMlVpIg
@Bardiaism
تو این قسمت از توسعه پنل بازیمون، تصاویر بازیهای استیم رو میخونیم و نمایش میدیم. بعد از اون میریم سر پیادهسازی سیستم یکپارچهای که تو قسمت قبل شروع کردیم که مدیریت همه سورسها (از جمله استیم) رو اون سیستم و لایهی بیرونی انجام میده.
این ویدیو بخاطر طولانی بودن به دو قسمت ۴ و ۵ شکسته شد، قسمت بعدی به زودی آپلود میشه.
گیتهاب پروژه:
https://github.com/realbardia/game-panel
لینک ویدیو در کانال یوتیوب:
https://youtu.be/1gwBRMlVpIg
@Bardiaism