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
Forwarded from DevTwitter | توییت برنامه نویسی
سلام، من پروژهای به نام ATOMGPT توسعه دادم که بر پایه NanoGPT ساخته شده. این پروژه با یک data scrapper، دادههای مورد نیاز شما رو از سایت دلخواه جمعآوری میکنه و امکان آموزش مدل با تنظیمات دلخواه رو فراهم میکنه. چون مدلهای محلی به دلیل ضعف سختافزاری خروجی ضعیفی دارن، من سیستمی طراحی کردم که پاسخ مدل رو از طریق API به LM Studio میفرسته تا خروجی تمیزتری بگیرید. همچنین یه فرانتاند با React طراحی شده که ظاهر چتباتهای حرفهای رو شبیهسازی میکنه. اطلاعات کامل در داکیومنتیشن پروژه هست:
https://github.com/HajDragon/ATOM-GPT.
@DevTwitter | <Dragonborn/>
https://github.com/HajDragon/ATOM-GPT.
@DevTwitter | <Dragonborn/>
Forwarded from Bardiaism
Media is too big
VIEW IN TELEGRAM
آموزش Qt و Qml - انجام پروژه پنل بازی - قسمت پنجم
تو این قسمت از توسعه پنل بازیمون، توابع ذخیرهسازی و بازیابی اطلاعات رو میسازیم، بعد از اون تابعی که مجموع بازیها از همه سورسهامون رو برمیگردونه رو میسازیم و در نهایت بازیهارو به کمک سیستم یکپارچه جدید نمایش میدیم.
این ویدیو بخاطر طولانی بودن به دو قسمت ۴ و ۵ شکسته شد، این قسمت دوم از اون ویدیو هست و قسمت اولش قبلا آپلود شده.
گیتهاب پروژه:
https://github.com/realbardia/game-panel
لینک ویدیو در یوتیوب:
https://youtu.be/IXOuBzOsVRg
@Bardiaism
تو این قسمت از توسعه پنل بازیمون، توابع ذخیرهسازی و بازیابی اطلاعات رو میسازیم، بعد از اون تابعی که مجموع بازیها از همه سورسهامون رو برمیگردونه رو میسازیم و در نهایت بازیهارو به کمک سیستم یکپارچه جدید نمایش میدیم.
این ویدیو بخاطر طولانی بودن به دو قسمت ۴ و ۵ شکسته شد، این قسمت دوم از اون ویدیو هست و قسمت اولش قبلا آپلود شده.
گیتهاب پروژه:
https://github.com/realbardia/game-panel
لینک ویدیو در یوتیوب:
https://youtu.be/IXOuBzOsVRg
@Bardiaism
Forwarded from دستاوردهای یادگیری عمیق(InTec)
موضوع گراف اهمیت بالایی بدست آورده
مخصوصاً knowledge graphs
این کتاب برای علاقهمندان به این موضوع و پایتون
مخصوصاً knowledge graphs
این کتاب برای علاقهمندان به این موضوع و پایتون
Forwarded from Geek Alerts
گیتهاب به اشتباه مدل GPT-5 رو زودتر از موعد معرفی کرد، پستش رو پاک کردن، مشخص شد این مدلهای جدید چیزهایی مثل قابلیتهای ایجنت محور پیشرفته و توانایی کدنویسی پیچیده دارن.
الان میدونیم قرار هست در ۴ نسخه ارائه بشه که شامل gpt-5 برای کارهای چند مرحلهای و سنگین، gpt-5-chat برای مکالمه پیشرفته، نسخه mini برای سرعت و کارهای روزانه و نسخه nano که قراره قیمت رقابتی داشته باشه.
امشب ساعت ۸.۳۰ منتظر رونمایی رسمی ازش باشید. [L]
🤓 @geekalerts
الان میدونیم قرار هست در ۴ نسخه ارائه بشه که شامل gpt-5 برای کارهای چند مرحلهای و سنگین، gpt-5-chat برای مکالمه پیشرفته، نسخه mini برای سرعت و کارهای روزانه و نسخه nano که قراره قیمت رقابتی داشته باشه.
امشب ساعت ۸.۳۰ منتظر رونمایی رسمی ازش باشید. [L]
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Abolfazl Devs (Abolfazl)
این روزا که همه از وی پی ان استفاده میکنیم من همیشه نیاز دارم چک کنم آی پی و تایم زون مرورگرم تغیر کرده یا نه!
برا همین این وبسایت رو با ورکر کلاد فلر ساختم که هم مشخصات آی پی رو نشون میده هم مشخصات سیستم و تایم زون
ازینجا میتونید بهش دسترسی داشته باشید:
https://i.ixa.workers.dev
اینم سورس کدش تو گیتهاب👇
https://github.com/ixabolfazl/ip-info
نحوه ران کردن برای خودتون تو همین ریپو هست و حتی میتونید دامین شخصی هم وصل کنید که رو دامین خودتون باشه 👌
اگه باهاش حال کردید یادتون نره به ریپو استار بدید😉
📌 @abolfazl_devs
برا همین این وبسایت رو با ورکر کلاد فلر ساختم که هم مشخصات آی پی رو نشون میده هم مشخصات سیستم و تایم زون
ازینجا میتونید بهش دسترسی داشته باشید:
https://i.ixa.workers.dev
اینم سورس کدش تو گیتهاب👇
https://github.com/ixabolfazl/ip-info
نحوه ران کردن برای خودتون تو همین ریپو هست و حتی میتونید دامین شخصی هم وصل کنید که رو دامین خودتون باشه 👌
اگه باهاش حال کردید یادتون نره به ریپو استار بدید😉
📌 @abolfazl_devs
Forwarded from DevTwitter | توییت برنامه نویسی
دیپلوی کردن n8n فقط Drag & Drop نیست!
این ویدیو برای حرفهایهاست که میخوان از n8n توی پروژههای واقعی و جدی استفاده کنن.
اگه تا حالا فقط با ظاهر ساده n8n کار کردی، اینجا قراره بری چند لِوِل بالاتر!
لینک ویدیو:
https://www.youtube.com/watch?v=nFKAFN9jvW0&list=PLwUWEGKy5kyPMAri3iynEq4X9MGJkQnOy&index=5
@DevTwitter | <Ryan Heida/>
این ویدیو برای حرفهایهاست که میخوان از n8n توی پروژههای واقعی و جدی استفاده کنن.
اگه تا حالا فقط با ظاهر ساده n8n کار کردی، اینجا قراره بری چند لِوِل بالاتر!
لینک ویدیو:
https://www.youtube.com/watch?v=nFKAFN9jvW0&list=PLwUWEGKy5kyPMAri3iynEq4X9MGJkQnOy&index=5
@DevTwitter | <Ryan Heida/>
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
🔶 کتابخانه ری اکت (ReactJS) یاد بگیرید، و شما در ۹۰ درصد استارت آپ های دنیا استخدام خواهید شد.
@TheRaymondDev
@TheRaymondDev
Forwarded from SoniaCircuit (Sonia Fatholahi)
Forwarded from Linuxor ?
چرا با اینکه بیش از 70 ساله هوش مصنوعی وجود داره ولی این سال های اخیر معروف شده؟
سال 2017 گوگل یه مقاله برگریزون برای معرفی ترنسفورمر ها داد ( t داخل chatgpt هم یعنی ترنسفورمر)؛ تیتر مقاله این بود
Attention Is All You Need
گوگل میگفت بابا RNN و LSTM رو بزارید کنار ما یه فرمول خیلی خفن پیدا کردیم... که چهار پنج سال بعد یهویی با مدل هایی که شرکت ها باهاش ساختن و آپگریدش کردن حسابی ترکوند.
ترنسفورمر به صورت ساده فرقش با روش های قدیمی اینه که Self-Attention یا مکانیسم توجه به خود داره در واقع این بخش کمک میکنه مدل بفهمه تو جمله هر کلمه، چقدر به بقیه کلمات ربط داره! مثلا جمله زیرو در نظر بگیر:
"من امروز کتاب جدیدی خریدم."
حالا توی مدل ترنسفورمر وقتی میخواد بفهمه کلمهی "کتاب" چه نقشی تو جمله داره، به جای اینکه فقط به همون کلمه نگاه کنه، میره و تمام کلمات دیگه جمله رو هم نگاه میکنه و وزن هر کدوم رو بر اساس اهمیتش نسبت به "کتاب" حساب میکنه.
@Linuxor
سال 2017 گوگل یه مقاله برگریزون برای معرفی ترنسفورمر ها داد ( t داخل chatgpt هم یعنی ترنسفورمر)؛ تیتر مقاله این بود
Attention Is All You Need
گوگل میگفت بابا RNN و LSTM رو بزارید کنار ما یه فرمول خیلی خفن پیدا کردیم... که چهار پنج سال بعد یهویی با مدل هایی که شرکت ها باهاش ساختن و آپگریدش کردن حسابی ترکوند.
ترنسفورمر به صورت ساده فرقش با روش های قدیمی اینه که Self-Attention یا مکانیسم توجه به خود داره در واقع این بخش کمک میکنه مدل بفهمه تو جمله هر کلمه، چقدر به بقیه کلمات ربط داره! مثلا جمله زیرو در نظر بگیر:
"من امروز کتاب جدیدی خریدم."
حالا توی مدل ترنسفورمر وقتی میخواد بفهمه کلمهی "کتاب" چه نقشی تو جمله داره، به جای اینکه فقط به همون کلمه نگاه کنه، میره و تمام کلمات دیگه جمله رو هم نگاه میکنه و وزن هر کدوم رو بر اساس اهمیتش نسبت به "کتاب" حساب میکنه.
@Linuxor