Dev Perfects
40 subscribers
9.23K photos
1.26K videos
468 files
13K links
بخوام خیلی خلاصه بگم
این کانال میاد مطالب کانالای خفن تو حوزه تکنولوژی و برنامه نویسی رو جمع میکنه

پست پین رو بخونید
https://t.iss.one/dev_perfects/455


ارتباط:
https://t.iss.one/HidenChat_Bot?start=936082426
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
اگه میخواهید یک code interpreter یا دستیار برای کد نویسی داشته باشید Qwen-2.5-Coder 1.5B خیلی خوبه. کاملا آفلاین/لوکال و توی خود browser، سریع، و دقتش هم خیلی خوب هست.
https://github.com/cfahlgren1/qwen-2.5-code-interpreter

@DevTwitter | <Mehdi Allahyari/>
💎 چطوری مشکلات Dirty Read، Non-Repeatable Read، Phantom Read و Deadlock رو هندل کنیم؟ 💎

توی پست قبلی درباره چند تا مشکل مثل Dirty Read، Non-Repeatable Read، Phantom Read و Deadlock حرف زدیم. امروز می‌خوایم ببینیم چطوری می‌تونیم اینا رو توی برنامه‌مون هندل کنیم. اینا مشکلاتیه که می‌تونن عملکرد دیتابیس و اپلیکیشن رو خراب کنن، ولی با استفاده از تکنیک‌های کنترل همزمانی و ایزولیشن می‌شه جلوی اینا رو گرفت.



1⃣ Dirty Read 💾

برای جلوگیری از Dirty Read، باید از سطح ایزولیشن مناسبی استفاده کنیم. یکی از بهترین سطوح ایزولیشن برای این کار Read Committed هست. این سطح تضمین می‌کنه که فقط داده‌های commit شده قابل خوندن هستن.

مثال:
فرض کن توی دیتابیستون از سطح ایزولیشن Read Committed استفاده می‌کنی. اگه تراکنش A داره داده‌هایی رو آپدیت می‌کنه، تراکنش B تا وقتی که A کارش تموم نشده و داده‌ها رو commit نکرده، نمی‌تونه اون داده‌ها رو ببینه. پس از Dirty Read جلوگیری می‌شه.

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;



2⃣ Non-Repeatable Read 🔄

برای جلوگیری از Non-Repeatable Read، باید سطح ایزولیشن رو به Repeatable Read تغییر بدیم. این سطح ایزولیشن تضمین می‌کنه که اگر یک بار داده‌ای رو توی تراکنش خوندیم، تا پایان تراکنش دیگه تغییر نمی‌کنه.

مثال:
فرض کن توی یه فروشگاه آنلاین، وقتی یه کاربر قیمت یه محصول رو چک می‌کنه، باید مطمئن بشی که اون قیمت تا پایان تراکنش تغییر نمی‌کنه. با استفاده از Repeatable Read، هر چی کاربر دید، همون می‌مونه.

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;




3⃣ Phantom Read 👻

برای حل مشکل Phantom Read باید از سطح ایزولیشن Serializable استفاده کنیم. این سطح از ایزولیشن باعث می‌شه که نه تنها داده‌های موجود، بلکه هر داده جدیدی هم تا پایان تراکنش دیده نشه.

مثال:
فرض کن یه مدیر داره گزارش تعداد کارمندای یه بخش رو چک می‌کنه. با سطح ایزولیشن Serializable، اگر کارمند جدیدی در طول تراکنش اضافه بشه، مدیر اون رو تا پایان تراکنش نمی‌بینه و از Phantom Read جلوگیری می‌شه.

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;




4⃣ Deadlock 🔐

برای هندل کردن Deadlock، چند راه وجود داره:

1⃣ اجتناب از قفل‌های طولانی:
تراکنش‌ها رو سبک و سریع نگه دار تا قفل‌های طولانی ایجاد نشن.

2⃣ ترتیب دسترسی یکسان:
مطمئن شو که تراکنش‌ها به منابع به یه ترتیب دسترسی پیدا می‌کنن. یعنی اگر A و B هر دو به رکوردهای ۱ و ۲ نیاز دارن، هر دو اول رکورد ۱ رو قفل کنن و بعد برن سراغ رکورد ۲.

3⃣ زمان‌بندی دوباره تراکنش‌ها:
می‌تونی از دیتابیس بخوای که اگه Deadlock تشخیص داد، یکی از تراکنش‌ها رو ریست کنه و دوباره اجرا کنه.

مثال:
فرض کن توی اپلیکیشن مالی‌ات دو تراکنش همزمان دارن از منابع یکسان استفاده می‌کنن. یکی از راه‌های جلوگیری از Deadlock اینه که مطمئن بشی تراکنش‌ها به یه ترتیب مشخص به منابع دسترسی دارن، مثلاً اول رکورد ۱ رو قفل می‌گیرن و بعد رکورد ۲.

BEGIN TRANSACTION;
-- Lock resources in the same order



جمع‌بندی 🎯

با استفاده از سطوح ایزولیشن و یه سری تکنیک‌های مدیریت تراکنش، می‌تونیم مشکلاتی مثل Dirty Read، Non-Repeatable Read، Phantom Read و Deadlock رو توی دیتابیس‌هامون حل کنیم. اگر این نکات رو توی اپلیکیشن‌هاتون رعایت کنید، کارتون خیلی راحت‌تر و پایدارتر می‌شه.

امید وارم مفید بوده باشه :)

#sql #dead_lock #programing


@ninja_learn_ir
دوستان اگر خواستید از ollama استفاده کنید، حتما یه نگاهی هم به open webui بندازید

یه محیط شبیه به chat gpt بهتون میده که متصل میشه به ollama روی سیستمتون
کلی قابلیت های باحال داره
و بشدت کار باهاش لذت بخشه

https://openwebui.com/

اگر لینوکس دارید احتمالا توی اتصالش با ollama مشکل خواهید داشت
یه سری به لینک های زیر بزنید:

اولی

دومی


@PhiloLearn
اگر در حال ساخت workflow های RAG یا نیاز به یک API برای استخراج متون از فایل ها و ساخت embeding هستید، میتونید از api اوپن سورسی که نوشتم استفاده کنید. از یک مدل لوکال برای ساخت embeding ها استفاده میکنه که فارسی خیلی خوبی ساپورت میکنه.
https://github.com/xmannii/Maux-API

@DevTwitter | <Mani/>
Forwarded from Geek Alerts
This media is not supported in your browser
VIEW IN TELEGRAM
همچنین Perplexity توی آپدیت جدیدش جستجوی مالی رو هم اضافه کرده که شما حالا می‌تونید باهاش نمودارها، قیمت سهام و ... رو مشاهده و تحلیل کنید. تقریباً از همه ارزها، کریپتوها و سهام‌ها پشتیبانی می‌کنه.

tweet.
hadi @geekalerts
Forwarded from Syntax | سینتکس (Daimon)
درود دوستان عزیز. ما در تیممون به یک فرانت اند دولوپر نیاز داریم.

مواردی که از شما انتظار میره:

- مشتاق یادگیری و به اشتراک‌گذاری دانش

- آشنا با next.js و پکیج های مرسوم

- خلاق در طراحی رابط کاربری

- علاقه‌مند به کار تیمی و همکاری نزدیک با بک‌اند دولوپرها

- متعهد و مسئولیت‌پذیر

چه چیزی در انتظار شماست؟

- فرصت یادگیری و رشد در کنار هم‌تیمی‌ها

- درآمدزایی از پروژه‌های فریلنسری

اگه فکر می‌کنید تیم ما میتونه به رشد شما کمک کنه و تأثیرگذار ظاهر میشید، ما مشتاقانه منتظر شما هستیم.

اطلاعات بیشتر پیوی 🙏🏻
Forwarded from uncodev
آموزش گولنگ برای مهندسان Devops و SRE

در این دوره، بدون نیاز به پیش‌زمینه گولنگ، از ابتدا با این زبان آشنا می‌شوید و یاد می‌گیرید چگونه ابزارهای پیشرفته‌ای برای DevOps و SRE توسعه دهید. تمرکز اصلی دوره بر Kubernetes است و به شما می‌آموزد چگونه ابزارهای جدیدی برای مدیریت، اتوماسیون، و گسترش قابلیت‌های Kubernetes بسازید. همچنین با توسعه ابزارهای خط فرمان، مانیتورینگ، و لود تست، فرآیندهای استقرار و مدیریت زیرساخت‌ها را بهبود خواهید داد.


https://uncodev.com/bootcamps/golang-for-devops-and-sre?ref=tg


@uncodev
@uncodev
دوستان اگه سوالی درمورد پستا دارید یا مطلبی رو خوب متوجه نشدید و براتون جانیفتاده حتما تو کامنتا بپرسید تا براتپن توضیح بدیم 😊
Forwarded from Yasha
اونا تموم شدن. اینا رو فک کنم حداقل ۶‌ ماه طول بکشه بخونم تموم شن.
من http/2 رو ۲ سال پیش خریدم، فکر می‌کردم باهاش میشه واقعا نسخه 2 رو یاد گرفت ولی اشتباه فکر می‌کردم. اول باید http 1.1 رو یاد بگیری بعدی 2 رو بخونی تازه می‌فهمی که داره چه مشکلاتی رو توی 1.1 حل می‌کنه.
This media is not supported in your browser
VIEW IN TELEGRAM
روی سرورهای شخصیم، معمولا از این تله‌ها استفاده می‌کنم.
ابزار Ghostport برای گمراه‌کردن port scannerها با زبان Rust طراحی شده که با شبیه‌سازی serviceها به صورت fake در تمام portها و استفاده از امضای سفارشی، باعث ایجاد نتایج غلط در اسکنرها می‌شود.
https://github.com/vxfemboy/ghostport

@DevTwitter | <Vahid Nameni/>
بالاخره دلفین حالت موبایلی داره و می‌تونیم از شر index-fm خلاص بشیم.


@SohrabContents
Forwarded from ساره‍ْ
داستان خرگوشیه که برنامه نویس شد؟
Forwarded from Yasha
😂😂😂😂😂
Forwarded from Yasha
واکنش مامانم وقتی کتابا رو می‌بینه😂😂😂
#Quick

اگر از vscode برای Rust استفاده می‌کنید حتما این extension رو نصب کنید که دستورات sql رو براتون وسط کدهای rs به خوبی highlight می‌کنه ( از حالت str& خالی در میاد)

الان اومد یک کدی رو بزنم چندتا از Sql Query هاش خیلی طولانی و سخت شد بدون highlight خوندنش قطعا آزار دهنده بود با سرچ به این رسیدم و بنظرم گزینه بسیار کمک کننده و عالی‌ای هست.
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy Raymond)
This media is not supported in your browser
VIEW IN TELEGRAM
🔶 در آینده نزدیک فروشگاه های اینترنتی, بخش گالری محصولات به صورت انیمیشنی مجهز می شوند که بتواند به صورت سه بعدی و انیمیشنی به مشتریان خود نمایش دهد و دید بهتری از محصولات داشته باشند.

@TheRaymondDev
Forwarded from Pishro App
🔥 سلام دوستان تو ORM #لاراول یه متد هست بنام tap()

🔥 این متد به شما این امکان رو میده که بدون شکستن جریان عملیات زنجیره‌ای (chaining)، وضعیت یک کوئری یا کالکشن رو در وسط اون مشاهده و بررسی کنید.


برای مثال، ممکنه بخواید نتیجه یک کوئری رو تو یه نقطه خاص ببینید یا اون رو ثبت کنید، بدون اینکه روند اجرا رو متوقف کنید.

این کار به شما کمک می‌کنه تا راحت‌تر بتونید جریان کد و داده‌ها رو مشاهده کنید.

به صورت زیر هم میتونید از tap() استفاده کنید:

User::where('active', 1)
    ->tap(function ($query) {
        Log::debug($query->toSql(), $query->getBindings());
    })
    ->get();


🏴‍☠️ یه نکته هم بگم اینکه فرق tap() با enableQueryLog اینه که این متد فقط یک query خاص رو تو یه نقطه خاص لاگ میگیره و  لاگ گیری دقیق‌تری به شما میده


#laravel

👾 @pishroapp
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Gopher Academy
🔵 عنوان مقاله
Ebitengine v2.8.0: The Go 2D Game Engine

🟢 خلاصه مقاله:
مقاله‌ای که مورد بررسی قرار گرفته است به پروژه‌ی «اِبیت‌انجین» در اکوسیستم زبان برنامه‌نویسی گو اختصاص دارد. این پروژه به‌عنوان یکی از پروژه‌های محبوب در این حوزه شناخته شده است. در جدیدترین به‌روزرسانی‌ها، ابیت‌انجین پشتیبانی از فرمت صوتی 32 بیتی با فرمت فلوت و همچنین بهبودهایی در سفارشی‌سازی شیدر (shader) را به ارمغان آورده است. این امکانات جدید به توسعه‌دهندگان اجازه می‌دهد تا با دقت بیشتری بر روی جزئیات صوتی کار کنند و تجربه‌های بصری پیشرفته‌تری را ارائه دهند. به‌طور کلی، این پیشرفت‌ها نشان‌دهنده‌ی تعهد ابیت‌انجین به پیشرفت مداوم و ارائه‌ی قابلیت‌های جدید است که می‌تواند به افزایش کارایی و جذابیت این موتور بازی در بین توسعه‌دهندگان کمک کند.

🟣لینک مقاله:
https://golangweekly.com/link/160493/web


👑 @gopher_academy