Forwarded from کانال مهرداد لینوکس (Mehrdad Linux)
✅ قبلا برای Profiling برای پایتون ابزار Memray را در پست های قبلی معرفی کرده بودم
🔥 ابزار Austin ابزار قوی دیگری با امکانات خیلی خوب
💠 ابزار Austin یک Python frame stack sampler برای CPython با C نوشت شده. نمونهها با خواندن فضای حافظه مجازی مفسر CPython جمعآوری میشوند تا اطلاعات رشتههای در حال اجرا را به همراه پشته فریمهایی که در حال اجرا هستند بازیابی کنه. از این رو، می توان از Austin برای ساختن پروفایلرهای آماری قدرتمندی استفاده کرد که کمترین تأثیر را بر برنامه های ما دارند و برای استفاده از این ابزار نیازی به ایجاد تغییرات خاصی در کد منبع برنامه Python شما نیست که بتوان اطلاعات خاصی را برای ابزار جمعآوری کند.
🗓 ویژگی های کلیدی Austin عبارتند از:
☑️نیاز به تغییر در کد ندارد (Zero instrumentation)
☑️ تاثیر حداقلی
☑️سریع و سبک
☑️پروفایل زمان و حافظه
☑️پشتیبانی داخلی از برنامه های چند فرآیندی (مثل. mod_wsgi).
⁉️سوالی داشتید در بخش کامنت ها بپرسید با هم برسی کنیم 😎
#python #پایتون
🔥 ابزار Austin ابزار قوی دیگری با امکانات خیلی خوب
💠 ابزار Austin یک Python frame stack sampler برای CPython با C نوشت شده. نمونهها با خواندن فضای حافظه مجازی مفسر CPython جمعآوری میشوند تا اطلاعات رشتههای در حال اجرا را به همراه پشته فریمهایی که در حال اجرا هستند بازیابی کنه. از این رو، می توان از Austin برای ساختن پروفایلرهای آماری قدرتمندی استفاده کرد که کمترین تأثیر را بر برنامه های ما دارند و برای استفاده از این ابزار نیازی به ایجاد تغییرات خاصی در کد منبع برنامه Python شما نیست که بتوان اطلاعات خاصی را برای ابزار جمعآوری کند.
🗓 ویژگی های کلیدی Austin عبارتند از:
☑️نیاز به تغییر در کد ندارد (Zero instrumentation)
☑️ تاثیر حداقلی
☑️سریع و سبک
☑️پروفایل زمان و حافظه
☑️پشتیبانی داخلی از برنامه های چند فرآیندی (مثل. mod_wsgi).
⁉️سوالی داشتید در بخش کامنت ها بپرسید با هم برسی کنیم 😎
#python #پایتون
Forwarded from Python Hints
#Quick
یک عادت خوبی که توی بچههای ایران هست که یک
برای اونایی که نمیدونند،
حالا چرا میگم اشتباه پیادهسازی میشه، اول میرم سراغ مانیتورینگ:
فرض کن شما یک بکند داری که برای کار کردن به
فکر کنم متوجه منظورم شدید؛ توی
توی مثال قبلی اگر
حالا چرا
هر
پس سرویس رو از exception, ... مانیتور کنید با
یک عادت خوبی که توی بچههای ایران هست که یک
endpoint توی پروژههای بکند میسازند به اسم health-check اما ۹۰٪ اشتباه پیادهسازی میشه متأسفانه.برای اونایی که نمیدونند،
health-check برای این هست که بصورت اتوماتیک یک سیستم دیگه مثل k8s یا سیستم مانیتورینگ بتونه وضعیت بکند رو بررسی کنه و اگر جوابی نگرفت ایمیل بزنه یا اون pod رو ریست کنه.حالا چرا میگم اشتباه پیادهسازی میشه، اول میرم سراغ مانیتورینگ:
فرض کن شما یک بکند داری که برای کار کردن به
postgres, celery نیاز داره با این وضعیت سیستم شما وقتی سالم هست که به postgres شما بتونه یه درستی دسترسی بگیره و البته به celery (عملکرد celery, postgres رو اگر بخواید بررسی کنید نیاز به ۲ تا سیستم مانیتورینگ جدا دارید، برای شما توی سطح اپلیکیشن دسترسی به این سرویسها مهم هست)فکر کنم متوجه منظورم شدید؛ توی
health-check باید دسترسی به سرویسهایی که بکند شما بدون اونا healthy نیست رو هم چک کنید.توی مثال قبلی اگر
celery برای شما اجبار نیست توی health-check کانکشن بهش رو تست نمیکنید.حالا چرا
k8s رو مثال زدم ؟ برای اینکه بگم استفاده از این endpoint برای بررسی pod ها کار درستی نیست: هر
pod بصورت جداگونه و بصورت تک سرویس در نظر گرفته میشه که به تنهایی میتونه restart بشه بدون اینکه به سیستم لطمه بزنه (من HA درنظرم گرفتم، k8s برای همینه دیگه) پس باید تو سریعتر زمانی که عملکرد خودش رو از دست میده restart بشه فکر کن load سیستم بره بالا در این شرایط هم از روی health-check نمیشه مطمئن بود آیا چون load شبکه رفت بالا جواب دیر میاد یا memory leakage داریم یا ...پس سرویس رو از exception, ... مانیتور کنید با
k8s تا جایی که میشه.Forwarded from کانال اطلاعرسانی توزیع پارچ
پارچ در مدارس
امروز سیستمهای یکی از مدارس استان تهران را به نسخهای از پارچ که برای اهداف اداری و با مصرف منابع کمتری نسبت به پارچ میزکار مجهز کردیم. تا پیش از این بر روی این سیستمها مایکروسافت ویندوز xp نصب بود.
این نسخه از پارچ که موسوم به پارچ لایت هستش با میزکار XFCE و LXQT و با برنامههای اداری لیبرهآفیس عرضه میشود.
به زودی با عرضه اولیه آپادانا میتوانیم مدارس بیشتری را نیز به پارچ/آپادانا مجهز کنیم.
@ParchLinux
امروز سیستمهای یکی از مدارس استان تهران را به نسخهای از پارچ که برای اهداف اداری و با مصرف منابع کمتری نسبت به پارچ میزکار مجهز کردیم. تا پیش از این بر روی این سیستمها مایکروسافت ویندوز xp نصب بود.
این نسخه از پارچ که موسوم به پارچ لایت هستش با میزکار XFCE و LXQT و با برنامههای اداری لیبرهآفیس عرضه میشود.
به زودی با عرضه اولیه آپادانا میتوانیم مدارس بیشتری را نیز به پارچ/آپادانا مجهز کنیم.
@ParchLinux
Forwarded from DevTwitter | توییت برنامه نویسی
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/>
https://github.com/cfahlgren1/qwen-2.5-code-interpreter
@DevTwitter | <Mehdi Allahyari/>
Forwarded from Ninja Learn | نینجا لرن
💎 چطوری مشکلات 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 جلوگیری میشه.
2⃣ Non-Repeatable Read 🔄
برای جلوگیری از Non-Repeatable Read، باید سطح ایزولیشن رو به Repeatable Read تغییر بدیم. این سطح ایزولیشن تضمین میکنه که اگر یک بار دادهای رو توی تراکنش خوندیم، تا پایان تراکنش دیگه تغییر نمیکنه.
مثال:
فرض کن توی یه فروشگاه آنلاین، وقتی یه کاربر قیمت یه محصول رو چک میکنه، باید مطمئن بشی که اون قیمت تا پایان تراکنش تغییر نمیکنه. با استفاده از Repeatable Read، هر چی کاربر دید، همون میمونه.
3⃣ Phantom Read 👻
برای حل مشکل Phantom Read باید از سطح ایزولیشن Serializable استفاده کنیم. این سطح از ایزولیشن باعث میشه که نه تنها دادههای موجود، بلکه هر داده جدیدی هم تا پایان تراکنش دیده نشه.
مثال:
فرض کن یه مدیر داره گزارش تعداد کارمندای یه بخش رو چک میکنه. با سطح ایزولیشن Serializable، اگر کارمند جدیدی در طول تراکنش اضافه بشه، مدیر اون رو تا پایان تراکنش نمیبینه و از Phantom Read جلوگیری میشه.
4⃣ Deadlock 🔐
برای هندل کردن Deadlock، چند راه وجود داره:
1⃣ اجتناب از قفلهای طولانی:
تراکنشها رو سبک و سریع نگه دار تا قفلهای طولانی ایجاد نشن.
2⃣ ترتیب دسترسی یکسان:
مطمئن شو که تراکنشها به منابع به یه ترتیب دسترسی پیدا میکنن. یعنی اگر A و B هر دو به رکوردهای ۱ و ۲ نیاز دارن، هر دو اول رکورد ۱ رو قفل کنن و بعد برن سراغ رکورد ۲.
3⃣ زمانبندی دوباره تراکنشها:
میتونی از دیتابیس بخوای که اگه Deadlock تشخیص داد، یکی از تراکنشها رو ریست کنه و دوباره اجرا کنه.
مثال:
فرض کن توی اپلیکیشن مالیات دو تراکنش همزمان دارن از منابع یکسان استفاده میکنن. یکی از راههای جلوگیری از Deadlock اینه که مطمئن بشی تراکنشها به یه ترتیب مشخص به منابع دسترسی دارن، مثلاً اول رکورد ۱ رو قفل میگیرن و بعد رکورد ۲.
جمعبندی 🎯
با استفاده از سطوح ایزولیشن و یه سری تکنیکهای مدیریت تراکنش، میتونیم مشکلاتی مثل Dirty Read، Non-Repeatable Read، Phantom Read و Deadlock رو توی دیتابیسهامون حل کنیم. اگر این نکات رو توی اپلیکیشنهاتون رعایت کنید، کارتون خیلی راحتتر و پایدارتر میشه.
امید وارم مفید بوده باشه :)
@ninja_learn_ir
توی پست قبلی درباره چند تا مشکل مثل 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
Forwarded from PhiloLearn | فیلولرن
دوستان اگر خواستید از ollama استفاده کنید، حتما یه نگاهی هم به open webui بندازید
یه محیط شبیه به chat gpt بهتون میده که متصل میشه به ollama روی سیستمتون
کلی قابلیت های باحال داره
و بشدت کار باهاش لذت بخشه
https://openwebui.com/
اگر لینوکس دارید احتمالا توی اتصالش با ollama مشکل خواهید داشت
یه سری به لینک های زیر بزنید:
اولی
دومی
@PhiloLearn
یه محیط شبیه به chat gpt بهتون میده که متصل میشه به ollama روی سیستمتون
کلی قابلیت های باحال داره
و بشدت کار باهاش لذت بخشه
https://openwebui.com/
اگر لینوکس دارید احتمالا توی اتصالش با ollama مشکل خواهید داشت
یه سری به لینک های زیر بزنید:
اولی
دومی
@PhiloLearn
Forwarded from DevTwitter | توییت برنامه نویسی
اگر در حال ساخت workflow های RAG یا نیاز به یک API برای استخراج متون از فایل ها و ساخت embeding هستید، میتونید از api اوپن سورسی که نوشتم استفاده کنید. از یک مدل لوکال برای ساخت embeding ها استفاده میکنه که فارسی خیلی خوبی ساپورت میکنه.
https://github.com/xmannii/Maux-API
@DevTwitter | <Mani/>
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
tweet.
hadi @geekalerts
Forwarded from Syntax | سینتکس (Daimon)
درود دوستان عزیز. ما در تیممون به یک فرانت اند دولوپر نیاز داریم.
مواردی که از شما انتظار میره:
- مشتاق یادگیری و به اشتراکگذاری دانش
- آشنا با next.js و پکیج های مرسوم
- خلاق در طراحی رابط کاربری
- علاقهمند به کار تیمی و همکاری نزدیک با بکاند دولوپرها
- متعهد و مسئولیتپذیر
چه چیزی در انتظار شماست؟
- فرصت یادگیری و رشد در کنار همتیمیها
- درآمدزایی از پروژههای فریلنسری
اگه فکر میکنید تیم ما میتونه به رشد شما کمک کنه و تأثیرگذار ظاهر میشید، ما مشتاقانه منتظر شما هستیم.
اطلاعات بیشتر پیوی 🙏🏻
مواردی که از شما انتظار میره:
- مشتاق یادگیری و به اشتراکگذاری دانش
- آشنا با next.js و پکیج های مرسوم
- خلاق در طراحی رابط کاربری
- علاقهمند به کار تیمی و همکاری نزدیک با بکاند دولوپرها
- متعهد و مسئولیتپذیر
چه چیزی در انتظار شماست؟
- فرصت یادگیری و رشد در کنار همتیمیها
- درآمدزایی از پروژههای فریلنسری
اگه فکر میکنید تیم ما میتونه به رشد شما کمک کنه و تأثیرگذار ظاهر میشید، ما مشتاقانه منتظر شما هستیم.
اطلاعات بیشتر پیوی 🙏🏻
Forwarded from uncodev
آموزش گولنگ برای مهندسان Devops و SRE
در این دوره، بدون نیاز به پیشزمینه گولنگ، از ابتدا با این زبان آشنا میشوید و یاد میگیرید چگونه ابزارهای پیشرفتهای برای DevOps و SRE توسعه دهید. تمرکز اصلی دوره بر Kubernetes است و به شما میآموزد چگونه ابزارهای جدیدی برای مدیریت، اتوماسیون، و گسترش قابلیتهای Kubernetes بسازید. همچنین با توسعه ابزارهای خط فرمان، مانیتورینگ، و لود تست، فرآیندهای استقرار و مدیریت زیرساختها را بهبود خواهید داد.
https://uncodev.com/bootcamps/golang-for-devops-and-sre?ref=tg
@uncodev
@uncodev
در این دوره، بدون نیاز به پیشزمینه گولنگ، از ابتدا با این زبان آشنا میشوید و یاد میگیرید چگونه ابزارهای پیشرفتهای برای DevOps و SRE توسعه دهید. تمرکز اصلی دوره بر Kubernetes است و به شما میآموزد چگونه ابزارهای جدیدی برای مدیریت، اتوماسیون، و گسترش قابلیتهای Kubernetes بسازید. همچنین با توسعه ابزارهای خط فرمان، مانیتورینگ، و لود تست، فرآیندهای استقرار و مدیریت زیرساختها را بهبود خواهید داد.
https://uncodev.com/bootcamps/golang-for-devops-and-sre?ref=tg
@uncodev
@uncodev
Forwarded from ⚝ (ZiZiGuLu)
Telegram
Daily Contents of 'Amiria'
A curious geek with an ecocenteric mind.
I love Japan, GIS, Video techniques, Compression methods, Literature and loads of science stuff.
A software developer based in Tehran, Iran.
Send me a science-based fact and I'll be your friend: @amiria703
I love Japan, GIS, Video techniques, Compression methods, Literature and loads of science stuff.
A software developer based in Tehran, Iran.
Send me a science-based fact and I'll be your friend: @amiria703
Forwarded from Ninja Learn | نینجا لرن
دوستان اگه سوالی درمورد پستا دارید یا مطلبی رو خوب متوجه نشدید و براتون جانیفتاده حتما تو کامنتا بپرسید تا براتپن توضیح بدیم 😊
Forwarded from Yasha
اونا تموم شدن. اینا رو فک کنم حداقل ۶ ماه طول بکشه بخونم تموم شن.
من http/2 رو ۲ سال پیش خریدم، فکر میکردم باهاش میشه واقعا نسخه 2 رو یاد گرفت ولی اشتباه فکر میکردم. اول باید http 1.1 رو یاد بگیری بعدی 2 رو بخونی تازه میفهمی که داره چه مشکلاتی رو توی 1.1 حل میکنه.
من http/2 رو ۲ سال پیش خریدم، فکر میکردم باهاش میشه واقعا نسخه 2 رو یاد گرفت ولی اشتباه فکر میکردم. اول باید http 1.1 رو یاد بگیری بعدی 2 رو بخونی تازه میفهمی که داره چه مشکلاتی رو توی 1.1 حل میکنه.
Forwarded from DevTwitter | توییت برنامه نویسی
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/>
ابزار Ghostport برای گمراهکردن port scannerها با زبان Rust طراحی شده که با شبیهسازی serviceها به صورت fake در تمام portها و استفاده از امضای سفارشی، باعث ایجاد نتایج غلط در اسکنرها میشود.
https://github.com/vxfemboy/ghostport
@DevTwitter | <Vahid Nameni/>
Forwarded from محتوای آزاد سهراب