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

پست پین رو بخونید
https://news.1rj.ru/str/dev_perfects/455


ارتباط:
https://news.1rj.ru/str/HidenChat_Bot?start=936082426
Download Telegram
Forwarded from کانال مهرداد لینوکس (Mehrdad Linux)
انتخاب یک توزیع لینوکس ( #linux distro) مناسب برای شروع 😎

⁉️ بهترین توزیع گنو/لینوکس مناسب برای شروع ؟
🗓 جامعه :
نسخه لینوکسی که جامعه کاربری بزرکتری دارد یعنی فراوانی آموزش و رفع مشکلات بیشتر
🔥 مربی:
از اطرافیان شما #لینوکس کار هستند توزیع هایی که انها استفاده میکنند باعث میشود مشکلات شما زود تر حل شود
😎 تخصص :
چک کنید جامعه کاربری تخصص شما از کدام توزیع بیشتر استفاده میکند
🤩 نیاز خواسته:
ببینید از لینوکس چه میخواهید و نیاز شما چیست تمرکز جامعه روی نیاز شما است
توصیه مهردادلینوکس:
در لینوکس دنبال ویندوز نگردید،کنترل پنلش کجاست درایو C کو ؟ رجیستری کجاست و ...
برای ویندوز وقت گذاشتید که تسلط دارید برای لینوکس هم باید وقت بگذارید
یک شبه نمیشه
از اشتباه کردن نترسید، ۱۰۰ بار ویندوز را خراب کردید دوباره نصب کردید
فقط شروع کنید ، اندروید گوشی یک لینوکسه ولی شما مسلط هستید

💠 چند توزیع معروف که اگر سردرگم هستید فقط نصب کنید 😍

1️⃣مینت Linux Mint
2️⃣ابونتو Linux Ubuntu
3️⃣المنتری او-اس elementary OS
4️⃣منجارو Arch Manjaro
5️⃣فيدورا Fedora

⁉️ با چه توزیعی #linux شروع کردید ؟ الان با چی کار میکنید؟
خب خب خب جلوگیری از Race Condition در جنگو با select_for_update 🔒🚀

توی این پست در مورد Race Condition صحبت کردیم و گفتیم چطور ممکنه چندتا درخواست همزمان بیان و دیتا رو خراب کنن. حالا بریم ببینیم جنگو چه ترفندهایی برای کنترل این مشکل داره و چطور می‌تونیم از select_for_update استفاده کنیم.

مشکل چیه؟ 🤔
فرض کن یه سیستم بانکی داری و کاربرا دارن پول جابه‌جا می‌کنن. حالا دو نفر همزمان می‌خوان از حسابشون پول بردارن و موجودی حساب فقط 100 تومنه. اگه این درخواست‌ها بدون قفل کردن دیتا پردازش بشن، ممکنه هر دو برداشت موفق بشن و سیستم بدهکار بشه 😬
اینجا همون جاییه که select_for_update میاد وسط و دیتا رو از فاجعه نجات می‌ده.


چطوری select_for_update مشکل رو حل می‌کنه؟ 🔐
وقتی از select_for_update استفاده می‌کنی، رکورد دیتابیس قفل می‌شه تا هیچ درخواست دیگه‌ای نتونه همزمان تغییرش بده. این یعنی هر درخواستی که بعد از اولین درخواست بیاد، باید منتظر بمونه تا قفل آزاد بشه و بعد پردازش بشه.

مثال 1: جلوگیری از برداشت همزمان از حساب بانکی 🏦
from django.db import transaction
from myapp.models import Account

def withdraw_money(account_id, amount):
with transaction.atomic(): # شروع تراکنش
account = Account.objects.select_for_update().get(pk=account_id) # قفل کردن رکورد
if account.balance >= amount:
account.balance -= amount
account.save()
print("برداشت موفقیت‌آمیز بود!")
else:
print("موجودی کافی نیست!") # جلوگیری از برداشت بیش از حد

این کد مطمئن می‌شه که وقتی یه درخواست داره موجودی رو چک می‌کنه و کم می‌کنه، هیچ درخواست دیگه‌ای همزمان وارد عمل نشه.

مثال 2: انتقال وجه بین دو حساب 💳
حالا یه چالش سخت‌تر انتقال پول از یه حساب به حساب دیگه. باید هر دو حساب همزمان قفل بشن تا مشکلات همزمانی پیش نیاد.
from django.db import transaction
from myapp.models import Account

def transfer_money(from_id, to_id, amount):
with transaction.atomic():
accounts = Account.objects.select_for_update().filter(pk__in=[from_id, to_id]).order_by("id")

sender = accounts[0]
receiver = accounts[1]

if sender.balance >= amount:
sender.balance -= amount
receiver.balance += amount
sender.save()
receiver.save()
print("انتقال وجه موفقیت‌آمیز بود!")
else:
print("موجودی کافی نیست!") # جلوگیری از انتقال اشتباه

اینجا هر دو حساب رو قفل می‌کنیم تا حتی اگه دو درخواست انتقال پول به صورت همزمان بیاد، هیچکدوم نتونن وسط کار رو همدیگه تأثیر بذارن.

چندتا نکته 🚀

🔹 انتخاب نوع قفل (select_for_update(nowait=True))
اگه بخوای درخواست‌های معطل رو سریع رد کنی، می‌تونی nowait=True بذاری که اگه رکورد قفل بود، درخواست جدید منتظر نمونه و مستقیم خطا بده.
account = Account.objects.select_for_update(nowait=True).get(pk=1)

☝️ این باعث می‌شه که اگه رکورد قفل باشه، جنگو بلافاصله یه DatabaseError بده و منتظر نمونه.

🔹 قفل کردن رکوردها بدون مسدود کردن خواندن (select_for_update(skip_locked=True))
اگه درخواست‌های زیادی داری و نمی‌خوای که یک درخواست کل سیستم رو بلاک کنه، می‌تونی از skip_locked=True استفاده کنی که درخواست‌های دیگه بتونن رکوردهای آزاد رو پردازش کنن.
account = Account.objects.select_for_update(skip_locked=True).get(pk=1)

☝️ این کار باعث می‌شه که اگه یه رکورد قفل بود، درخواست بیخیال اون رکورد بشه و فقط رکوردهایی که قفل نیستن رو انتخاب کنه.

🔹 مدیریت تایم‌اوت قفل (set statement_timeout)
اگه نمی‌خوای که درخواست‌ها مدت زیادی بلاک بشن، توی PostgreSQL می‌تونی یه تایم‌اوت برای قفل تعیین کنی:
SET statement_timeout = '5s'; 

☝️ این یعنی اگه یه درخواست بیشتر از ۵ ثانیه قفل بمونه، بهش خطا داده می‌شه و می‌ره بیرون.

جمع‌بندی
select_for_update یکی از قوی‌ترین ابزارها برای جلوگیری از Race Condition توی جنگوئه. مهم‌ترین نکاتش اینان:
قفل کردن رکوردهای دیتابیس موقع آپدیت برای جلوگیری از دستکاری همزمان
استفاده از nowait=True برای جلوگیری از انتظار بیش از حد
استفاده از skip_locked=True برای رد کردن رکوردهای قفل‌شده و ادامه پردازش.


#️⃣ #python #programming #db



🥷 CHANNEL | GROUP
خیلی وقت بود پست جنگو نداشته بودیم 😬
🔥 مناظرهٔ تاننباوم–توروالدز «LINUX منسوخ شده است»

🗓بین اندرو اس. تاننباوم، خالق سیستم‌عامل آموزشی مینیکس
🗓 و لینوس توروالدز، خالق هستهٔ لینوکس، بود.
💠این مناظره در گروه خبری Usenet به نام comp.os.minix در سال ۱۹۹۲ رخ داد

موضوع سر معماری هسته‌های سیستم‌عامل، به‌ویژه مقایسهٔ هسته‌های یکپارچه (monolithic) و ریزهسته‌ها (microkernel)، تمرکز داشت.

🔥 تاننباوم بحث را با استدلال اینکه طراحی هستهٔ یکپارچهٔ لینوکس از نظر مفهومی قدیمی و ریزهسته‌ها به دلیل قابلیت حمل و پایداری، برتر هستند آغاز کرد
و گفت معماری پردازنده‌های x86 که لینوکس بر پایهٔ آن توسعه یافته، در آینده جای خود را به معماری‌های RISC خواهد داد.

🔥 توروالدز در پاسخ، ضمن اذعان به مزایای نظری ریزهسته‌ها، از تصمیم خود برای استفاده از هستهٔ یکپارچه دفاع کرد.
او اشاره کرد که مینیکس دارای محدودیت‌هایی مانند نبود پشتیبانی از چندنخی (multithreading) و هدف او از توسعهٔ لینوکس، ایجاد یک سیستم‌عامل کاربردی برای استفادهٔ شخصی بوده است.

با گذشت زمان،
هر دو مدل هسته در حوزه‌های مختلف به کار گرفته شدند

منبع wikipedia
#linux
This media is not supported in your browser
VIEW IN TELEGRAM
یه اکستنشن نوشتم برای جاب‌های لینکدین، خودش show more رو کلیک می‌کنه و لیست کلیدواژه‌هایی که بهش می‌دی رو سبز یا قرمز می‌کنه. میشه سریعتر با یه نگاه متوجه شد جاب چقدر به مهارت‌های آدم نزدیکه.

https://github.com/ArmanJR/LinkedIn-Job-Skills-Highlighter

@DevTwitter | <Arman/>
Forwarded from Python Hints
وقتی ChatGPT 3.5 معرفی شد گفتم که نیروهای جونیور بسیار کار سختی برای یافتن شغل خواهند داشت.

الان به اون وضعیت رسیده؛ طوری که نیروی جونیور توی خیلی از زمینه‌ها تبدیل شده به سنگ جلوی پای نیروهای سنیور متاسفانه.

اما یک ویژگی خیلی خوب داشت وجود جونیورها؛ اونم معرفی استک‌های جدید تکنولوژی‌های بهتر و تکنیک‌های بهبود یافته بود.

متأسفانه این موضوع توی ایران دیگه صادق نیست؛ ندیدم (از کسی هم نشنیدم) جونیوری که experiment های شخصی با ابزارهای مختلف که شاید مرسوم هم نباشند انجام داده باشه (علاوه بر استک اصلی) همگی همون استک اصلی رو یاد می‌گیرند و به محض استخدام دیگه حتی برای پیشرفت خودشون هم زحمت نمی‌کشند.

با این وضعیت قطعاً موقعیت‌های شغلی Junior ها حذف خواهد شد؛ حتی در ایران.
اسکریپت راه‌اندازی تانل RTX-VPN، یک راه‌حل برای راه‌اندازی سرور L2TP/OpenVPN در کشورهایی با محدودیت اینترنت مثل ایران و چین هست.
این‌اسکریپت با ایجاد یک تانل Reverse با استفاده از Xray-Core و Rathole، باعث میشه ترافیک L2TP/OpenVPN به‌عنوان یک اتصال عادی دیده بشه و به‌سادگی قابل شناسایی نباشه.
همچنین این روش امکان استفاده از اینترنت آزاد روی مودم‌ها و دستگاه‌هایی که نیاز به L2TP/OpenVPN دارن رو فراهم می‌کنه، درحالی‌که اتصال کاربر امن باقی می‌مونه.

👉 github.com/Sir-MmD/RTX-VPN

🔍 ircf.space
@ircfspace
Forwarded from یه شعر (Poem Bot)
مولانا | دیوان شمس | رباعیات | رباعی شمارهٔ ۱۰۳۴

در انجمنی نشسته دیدم دوشش
نتوانستم گرفت در آغوشش
رخ را به بهانه بر رخش بنهادم
یعنی که حدیث می کنم در گوشش

#مولانا | گنجور
📍@iipoem
This media is not supported in your browser
VIEW IN TELEGRAM
مایکروسافت ورژن جدید مدل OmniParser داد بیرون. این یک مدل برای فهمیدن اسکرین شات هست. برای مواقعی که ایجنت قراره با browser کار کنه و تسکی را انجام بده، به کار میاد. خیلی هم عالی کار میکنه. ویدیو رو ببینید حتما

@DevTwitter | <Mehdi Allahyari/>
Forwarded from ASafaeirad
Today I Learned:

Scheduler.postTask: Adds a task to the scheduler as a callback, optionally specifying a priority, delay, and/or a signal for aborting the task.

Scheduler.yield:
Yields control of the main thread back to the browser, returning a promise that resolves to continue execution where it left off.

Read more on MDN

#mdn #webapi
کلودفلر مدتیه برنامه ریفرال خودش رو به پایان رسونده و دسترسی‌های مربوط به WARP+ به طرح رایگان #وارپ انتقال پیدا کردن و دیگه اعتبار ریفرال جدیدی داده نمیشه.
این‌تغییرات روی کدهای #لایسنس که از طریق ابزارها و کانال‌ها تهیه میشدن اثر گذاشته؛ روی همین‌حساب برگه لایسنس از #oblivionDesktop حذف شده و در نسخه بعدی از #oblivion هم به همین‌صورت خواهد شد.

گفته‌شده لایسنس‌های وارپ‌+ خریداری شده همچنان معتبر هستن، اما تلاش خودم برای خرید لایسنس تابحال موفق نبوده.

🔍 ircf.space
@ircfspace
اینا جا موند:

‏فیلترشکن
‏فیلترشکن
‏فیلترشکن
‏...

🔍 ircf.space
@ircfspace
سلام به همه
تا حالا شده تو یه مصاحبه فنی ازتون درباره‌ی JWT بپرسن و شما با یه جواب ساده کار رو راه بندازین؟

من خودم این تجربه رو داشتم! یه بار توی یه مصاحبه، مصاحبه‌کننده پرسید: JWT چیه و چرا ازش استفاده می‌کنیم؟» و من با یه جواب ساده گفتم: «یه توکن امنیه که اطلاعات رو بین کلاینت و سرور جابه‌جا می‌کنه و دیگه سرور نیازی نداره حالت‌ها رو ذخیره کنه.
مصاحبه کننده ازم میخواست که بیشتر توضیح بدم که خب من اطلاعات کاملی نداشتم

یکم بیشتر با JWT آشنا بشیم اول: JWT یک استاندارد باز (RFC 7519) برای ایجاد توکن‌های امن و قابل اعتماد است که به صورت JSON تعریف میشه. این توکن‌ها معمولاً برای احراز هویت کاربران و انتقال اطلاعات بین سرویس‌ها استفاده میشن

ساختار JWT:
یک JWT از سه بخش اصلی تشکیل شده:
بخش Header: شامل اطلاعاتی مانند نوع توکن و الگوریتم رمزنگاری.
بخش Payload: داده‌هایی که می‌خواهیم انتقال دهیم، مثل اطلاعات کاربر یا نقش‌ها.
بخش Signature: برای تأیید اصالت توکن و جلوگیری از دستکاری.

مزایا استفاده از JWT چیه؟
حالت (Stateless) هست، یعنی سرور نیازی نداره اطلاعات توکن رو ذخیره کنه.
امن هست و با یه امضای دیجیتال (Signature) از دستکاری جلوگیری می‌کنه.
توی سیستم‌های بزرگ و میکروسرویس‌ها خیلی به درد می‌خوره.

این موضوع هم یادمون باشه که اگه JWT درست استفاده نشه، می‌تونه خطرناک باشه. مثلاً اگه توکن‌ها رو به درستی expire نکنیم یا اطلاعات حساس رو داخلش ذخیره کنیم، ممکنه دردسرساز بشه!

@DevTwitter | <Soheil Seyyedi/>
Forwarded from Sudoer (Morteza Bashsiz)
ایلان ماسک اومده رنج سنی مردم آمریکا رو داده
جالبه که بالای ۲۰ میلیون نفر بالای ۱۰۰ سال دارن که زنده هستند
حتی بالای ۳۰۰ سال هم دارن
😂😂😂

من خیلی تحقیق نکردم ولی خودتون برید بتحقیقید

https://x.com/elonmusk/status/1891350795452654076/photo/1
Forwarded from Quera
👽 هکاتون «هوش‌مصنوعی دانشگاه تهران»

هکاتون «UT AI» هشتمین هکاتون کوئراست که با همکاری دانشگاه تهران و همراهی شرکت‌های فعال در حوزه بیمه، با موضوع #پردازش_تصویر برگزار می‌شه.

⚡️رقابت انتخابی
آنلاین | ۹ اسفند: چالش‌های پردازش تصویر (طبق سرفصل‌های دوره آموزشی هکاتون)

⚡️رقابت فینال
حضوری در دانشگاه تهران | ۲۸ فروردین: مسائل واقعی بینایی ماشین در حوزه بیمه

🔘 ۶۰ میلیون تومان جایزه نقدی
🔘 اهدای گواهینامه
🔘 ۶ ساعت فیلم آموزشی + ۳ ساعت کارگاه آنلاین
🔘 امکان پرداخت قسطی
🔘 فرصت #استخدام

🔴 بلافاصله بعد از ثبت‌نام، فیلم‌ها و محتوای آموزشی #هکاتون در اختیارتون قرار می‌گیره.

مهلت ثبت‌نام تا ۸ اسفند

🌐 ثبت‌نام و اطلاعات بیشتر:
🔗 https://quera.org/r/2o3pj


#Quera #Queracontest