https://youtu.be/dEZKySL3M9c
ویدیو امروز، فورلوپ async در پایتون.
البته گول عنوان ویدیو رو نخورید، داخل ویدیو درباره iterator و Async Iterators و اینکه چطور حلقه پایتون کار میکنن حرف میزنه و همچین کمی کد استارلت هم میزنه که کاربرد استفاده از async loop نشون بده
در حال بلعیدن ویدئوهای این چنل هستم :)
#vid_per_day
@TorhamDevCH
ویدیو امروز، فورلوپ async در پایتون.
البته گول عنوان ویدیو رو نخورید، داخل ویدیو درباره iterator و Async Iterators و اینکه چطور حلقه پایتون کار میکنن حرف میزنه و همچین کمی کد استارلت هم میزنه که کاربرد استفاده از async loop نشون بده
در حال بلعیدن ویدئوهای این چنل هستم :)
#vid_per_day
@TorhamDevCH
YouTube
Async for loops in Python
Await for it!
A deep dive into the purpose of the async for loop in Python. How to use the async for loop, why to use the async for loop, and how to write your own async iterators using both async generators as well as by learning the async iterator protocols…
A deep dive into the purpose of the async for loop in Python. How to use the async for loop, why to use the async for loop, and how to write your own async iterators using both async generators as well as by learning the async iterator protocols…
❤3
TorhamDev | تورهام 😳 pinned «https://youtu.be/dEZKySL3M9c ویدیو امروز، فورلوپ async در پایتون. البته گول عنوان ویدیو رو نخورید، داخل ویدیو درباره iterator و Async Iterators و اینکه چطور حلقه پایتون کار میکنن حرف میزنه و همچین کمی کد استارلت هم میزنه که کاربرد استفاده از async loop…»
سایتها دولتی اینطوریه که هیچ تلاشی برای امن بودن خودشون نمیکنن فقط تهدید میکنن😂. اگه تلاش کنی SQLI بزنی میندازیمت زندان، اگه تلاش کنی اینکار کنی اون بلا رو سرت میاریماااا :)
@TorhamDevCH
@TorhamDevCH
🤣30❤1😈1
Forwarded from Linux Experts (Mohammad)
گاهی وقت لازم هست یک برنامه رو به صورت ایزوله و سندباکس اجرا کنیم. یکی از برنامه هایی که این کار رو انجام میده Firejail هست و هر برنامه رو در یک Namespace جداگانه اجرا میکنه.
طرز کار ساده ایی داره و این امکان رو میده برای هر برنامه پروفایل جداگانه تعریف کنیم و دسترسیهاش رو مشخص و محدود کنیم. برای مثال:
توضیح تنظیمات پروفایل بالا:
🔹 whitelist: دسترسی فقط به مسیرهای مشخص (مثل cache و مسیری که برنامه قرار داره تا بتونه درست کار کنه)
🔹 net none: قطع کامل اینترنت و شبکه
🔹 private / private-tmp: دایرکتوری ها در یک فایل سیستم موقت روی tmp/ ایجاد میشن
🔹 seccomp: محدود کردن syscallهای مهم
🔹 caps.drop all: حذف همه دسترسیهای ویژه (حتی با sudo هم امکان کارهایی مثل mount/unmount رو نداره)
بعد از ساخت و ذخیره پروفایل، اون رو همراه با برنامهایی که میخوایم اجرا کنیم به Firejail میدیم:
توی مخازن اکثر توزیع ها هستش میتونید نصب و استفاده کنید.
🔘 @linux_exp | #Linux #Firejail
Namespace توی لینوکس قابلیتیه برای جداسازی منابع سیستم. هر پردازش داخل فضای مشخص خودش اجرا میشه و دید محدودی نسبت به منابع داره؛ طوری که انگار روی یک سیستم مستقل کار میکنه. این قابلیت برای ایزوله کردن یک پردازش از سایر پردازشهای سیستم مناسبه.
طرز کار ساده ایی داره و این امکان رو میده برای هر برنامه پروفایل جداگانه تعریف کنیم و دسترسیهاش رو مشخص و محدود کنیم. برای مثال:
whitelist /opt/maple
whitelist /home/linux_exp/.maplesoft/
net none
private
private-tmp
seccomp
caps.drop all
توضیح تنظیمات پروفایل بالا:
🔹 whitelist: دسترسی فقط به مسیرهای مشخص (مثل cache و مسیری که برنامه قرار داره تا بتونه درست کار کنه)
🔹 net none: قطع کامل اینترنت و شبکه
🔹 private / private-tmp: دایرکتوری ها در یک فایل سیستم موقت روی tmp/ ایجاد میشن
🔹 seccomp: محدود کردن syscallهای مهم
🔹 caps.drop all: حذف همه دسترسیهای ویژه (حتی با sudo هم امکان کارهایی مثل mount/unmount رو نداره)
بعد از ساخت و ذخیره پروفایل، اون رو همراه با برنامهایی که میخوایم اجرا کنیم به Firejail میدیم:
firejail --profile=~/.config/firejail/maple.profile maple &
توی مخازن اکثر توزیع ها هستش میتونید نصب و استفاده کنید.
🔘 @linux_exp | #Linux #Firejail
👍9❤1🔥1
https://youtu.be/M55n0AfBllg
امروز ویدئو برنامهنویسی نداریم، اما به مسئله خیلی مهمی پاسخ خواهید داد. آیا نگاه کردن به boobs دختران معادل ۳۰ دقیقه ورزش کردن هست یا خیر؟
#vid_per_day
@TorhamDevCH
امروز ویدئو برنامهنویسی نداریم، اما به مسئله خیلی مهمی پاسخ خواهید داد. آیا نگاه کردن به boobs دختران معادل ۳۰ دقیقه ورزش کردن هست یا خیر؟
#vid_per_day
@TorhamDevCH
YouTube
Brainiac: Science Abuse Season 1 Episode 1 | Full Episode | Blueprint
The Brainiac big questions in this episode… Can we cook a kebab using high explosives? Can safety equipment really protect your body from attack? Can a mobile phone blow up a caravan? And Brainiac boffin Jon Tickle finds out whether eating bagels can make…
🤣24❤1👎1
TorhamDev | تورهام 😳 pinned «https://youtu.be/M55n0AfBllg امروز ویدئو برنامهنویسی نداریم، اما به مسئله خیلی مهمی پاسخ خواهید داد. آیا نگاه کردن به boobs دختران معادل ۳۰ دقیقه ورزش کردن هست یا خیر؟ #vid_per_day @TorhamDevCH»
https://youtu.be/CFRhGnuXG-4
ویدئو امروز، سعی کنید کدتون رو بیشتر ۳ مرحله nested نکنید. منظور اینکه کدتون خیلی توهم نره و چندتا بلاک مختلف نداشته باشید و سعی کنی کمتر از ۳ تا باشه اگه بیشتر از ۳ تا هست احتمالا باید تغییر بدید تا بهتر بشه. داخل ویدئو یکسری روشهای برای بهبودش هم میگه
#vid_per_day
@TorhamDevCH
ویدئو امروز، سعی کنید کدتون رو بیشتر ۳ مرحله nested نکنید. منظور اینکه کدتون خیلی توهم نره و چندتا بلاک مختلف نداشته باشید و سعی کنی کمتر از ۳ تا باشه اگه بیشتر از ۳ تا هست احتمالا باید تغییر بدید تا بهتر بشه. داخل ویدئو یکسری روشهای برای بهبودش هم میگه
#vid_per_day
@TorhamDevCH
YouTube
Why You Shouldn't Nest Your Code
I'm a Never Nester and you should too.
Access to code examples, discord, song names and more at https://www.patreon.com/codeaesthetic
Correction: At 2:20 the inversion should be "less than or equal", not "less than"
Access to code examples, discord, song names and more at https://www.patreon.com/codeaesthetic
Correction: At 2:20 the inversion should be "less than or equal", not "less than"
👌5❤2👍2
TorhamDev | تورهام 😳 pinned «https://youtu.be/CFRhGnuXG-4 ویدئو امروز، سعی کنید کدتون رو بیشتر ۳ مرحله nested نکنید. منظور اینکه کدتون خیلی توهم نره و چندتا بلاک مختلف نداشته باشید و سعی کنی کمتر از ۳ تا باشه اگه بیشتر از ۳ تا هست احتمالا باید تغییر بدید تا بهتر بشه. داخل ویدئو یکسری…»
چیزایی که میخوام دربارش پست بزارم:
-pyproject.toml and its usecases (formatting/package/...)
-django cuncurreny testing
- python try finnally result to loop
-
-
- python try finnally result to loop
❤13🔥2
TorhamDev | تورهام 😳
Photo
تست کردن کانکارنسی در جنگو
دیشب داشتم تسک مصاحبه شرکت صرافی تبدیل میزدم. داخل تسک لازم بود یک api رو تست کنم که مشکل race condition نداشته باشه. برای اینکار با استفاده از pytest-django شروع کردم تسک های معمول نوشتن و همچی اوکی بود. برای تستهام هم یک fixture نوشتم که برام یک Seller بسازه و با استفاده از اون ریکوئست بزنم به api. همین api نباید حساب seller بیشتر از چیزی که درخواست داده تایید کنه. مثلا اگر درخواست داده ۱۰۰ تومن زیاد تر بشه اگر همزمان ۲۰ تا درخواست برای تایید این افزایش بیاد فقط یکدونه باید تایید بشه.
مشکل این تایید شدن نیست شما برای این جلوگیری از این ماجرا میتونید lock دیتابیس بگیرید.
مشکل اونجایی پیش اومد که من برای تست این race condition اومدم ۲۰ تا ترد ساختم و اون ۲۰ تا همزمان ریکوئست میزدن به این view ولی اتفاقی که افتاد این بود که Seller ای که من داخل فیکسچر ساخته بودم داخل این تردها انگار وجود نداشت. زمانی که ریکوئست خارج از thread میخورد همچی اوکی بود و api میتونستد sellerای که براش درخواست داده بودم رو پیدا کنه. اما تمام درخواستهای داخل تردها به ارور ۴۰۴ میرسیدن چون seller وجود نداشت.
بعد از فحشها و تلاشهای فراوان و تحقیق فهمیدم که جنگو عزیز برای هر تست یک transaction باز میکنم و تغییراتی که ایجاد میشه به خاطر اینکه داخل یک ترنزاکشن هستن کامیت نمیشن :) در نتیجه دیتابیس همچین ابجکتی برای تردهایی که ساختم نداره :) و باید همونطور که در عکس میبینید جنگو فورس کنید که تغییرات کامیت کنه تا داخل تردها هم بتونید دیتایی که ساختید ببینید.
و تمام اینا تو محیط تست بود دیگه.
@TorhamDevCH
دیشب داشتم تسک مصاحبه شرکت صرافی تبدیل میزدم. داخل تسک لازم بود یک api رو تست کنم که مشکل race condition نداشته باشه. برای اینکار با استفاده از pytest-django شروع کردم تسک های معمول نوشتن و همچی اوکی بود. برای تستهام هم یک fixture نوشتم که برام یک Seller بسازه و با استفاده از اون ریکوئست بزنم به api. همین api نباید حساب seller بیشتر از چیزی که درخواست داده تایید کنه. مثلا اگر درخواست داده ۱۰۰ تومن زیاد تر بشه اگر همزمان ۲۰ تا درخواست برای تایید این افزایش بیاد فقط یکدونه باید تایید بشه.
مشکل این تایید شدن نیست شما برای این جلوگیری از این ماجرا میتونید lock دیتابیس بگیرید.
مشکل اونجایی پیش اومد که من برای تست این race condition اومدم ۲۰ تا ترد ساختم و اون ۲۰ تا همزمان ریکوئست میزدن به این view ولی اتفاقی که افتاد این بود که Seller ای که من داخل فیکسچر ساخته بودم داخل این تردها انگار وجود نداشت. زمانی که ریکوئست خارج از thread میخورد همچی اوکی بود و api میتونستد sellerای که براش درخواست داده بودم رو پیدا کنه. اما تمام درخواستهای داخل تردها به ارور ۴۰۴ میرسیدن چون seller وجود نداشت.
بعد از فحشها و تلاشهای فراوان و تحقیق فهمیدم که جنگو عزیز برای هر تست یک transaction باز میکنم و تغییراتی که ایجاد میشه به خاطر اینکه داخل یک ترنزاکشن هستن کامیت نمیشن :) در نتیجه دیتابیس همچین ابجکتی برای تردهایی که ساختم نداره :) و باید همونطور که در عکس میبینید جنگو فورس کنید که تغییرات کامیت کنه تا داخل تردها هم بتونید دیتایی که ساختید ببینید.
و تمام اینا تو محیط تست بود دیگه.
@TorhamDevCH
👍11❤1🔥1
https://youtu.be/PgDaJEjlBuI
ویدئو امروز، تفاوت بین مولتی پروسسینگ و مولتی ترد. چی هست، تو پایتون چطوریه کجا کدوم استفاده کنیم.
#vid_per_day
@TorhamDevCH
ویدئو امروز، تفاوت بین مولتی پروسسینگ و مولتی ترد. چی هست، تو پایتون چطوریه کجا کدوم استفاده کنیم.
#vid_per_day
@TorhamDevCH
YouTube
Multithreading vs Multiprocessing | System Design
https://systemdesignschool.io/ 👈 Best place to learn and practice system design
In this video, we dive into the key differences between multithreading and multiprocessing, two powerful approaches to achieving concurrency in programming. Whether you're building…
In this video, we dive into the key differences between multithreading and multiprocessing, two powerful approaches to achieving concurrency in programming. Whether you're building…
👍6
TorhamDev | تورهام 😳 pinned «https://youtu.be/PgDaJEjlBuI ویدئو امروز، تفاوت بین مولتی پروسسینگ و مولتی ترد. چی هست، تو پایتون چطوریه کجا کدوم استفاده کنیم. #vid_per_day @TorhamDevCH»
pyproject.toml
قبلاها وقتی میخواستید یک پروژه رو یکسری کانفیگ براش بزارید باید یک عالمه فایل پختلف براش میساختید، برای مثال فایلهایی مثل setup.py, toxic.ini, mympy.cfg و یک خروار فایل دیگه، تقریبا هر ابزاری کانفیگ فایل خودش داشت. این باعث میشد یک عالمه فایل مختلف ایجاد بشه که تهش میخواستن چندتا ابزار کانفیگ کنن.
در pep 518 اومدن pyproject.toml معرفی کردن.
از به بعد تمام کانفیگهای خود پروژه، متادیتاهای پروژه و کانفیگ ابزارها همه داخل همین یکدونه فایل خواهد بود.
این روزها اگر نگم همه اکثر ابزارها مدرن پایتونی مثل ruff, uv, peotry و ... از این فایل پیروی میکنن و اگر کانفیگی داخلش قرار بدید و این فایل در root پروژه باشه ازش پیروی میکنن.
اینطوری تمام کانفیگها و تنظیمات لازم یک پروژه داخل یک فایل جمع میشه و دیگه نیازی به چندین فایل و کانفیگ متفاوت نیست.
اگر با uv کار کرده باشید بعد از اینکه یک پروژه رو باهاش init کنید براتون این فایل میسازه و میتونید باهاش یکم بازی کنید :)
مثلا میتونید ruff رو کانفیگ کنید که هرکسی که پروژه شما رو باز کرد و خواست روش کار کنه از استایل و قوانین شما رعایت کنه، در غیر این صورت ruff بهش ارور میده.
@TorhamDevCH
قبلاها وقتی میخواستید یک پروژه رو یکسری کانفیگ براش بزارید باید یک عالمه فایل پختلف براش میساختید، برای مثال فایلهایی مثل setup.py, toxic.ini, mympy.cfg و یک خروار فایل دیگه، تقریبا هر ابزاری کانفیگ فایل خودش داشت. این باعث میشد یک عالمه فایل مختلف ایجاد بشه که تهش میخواستن چندتا ابزار کانفیگ کنن.
در pep 518 اومدن pyproject.toml معرفی کردن.
از به بعد تمام کانفیگهای خود پروژه، متادیتاهای پروژه و کانفیگ ابزارها همه داخل همین یکدونه فایل خواهد بود.
این روزها اگر نگم همه اکثر ابزارها مدرن پایتونی مثل ruff, uv, peotry و ... از این فایل پیروی میکنن و اگر کانفیگی داخلش قرار بدید و این فایل در root پروژه باشه ازش پیروی میکنن.
[tool.ruff]
select = ["E", "F", "I"]
ignore = ["E501"]
اینطوری تمام کانفیگها و تنظیمات لازم یک پروژه داخل یک فایل جمع میشه و دیگه نیازی به چندین فایل و کانفیگ متفاوت نیست.
اگر با uv کار کرده باشید بعد از اینکه یک پروژه رو باهاش init کنید براتون این فایل میسازه و میتونید باهاش یکم بازی کنید :)
مثلا میتونید ruff رو کانفیگ کنید که هرکسی که پروژه شما رو باز کرد و خواست روش کار کنه از استایل و قوانین شما رعایت کنه، در غیر این صورت ruff بهش ارور میده.
@TorhamDevCH
👍9❤1🔥1
۳.۱۴ اومد، GIL هم برداشتن دیگه حالا میتونیم بریم بگیم. "ببین نه کی گفته پایتون کنده"
میتونید تغییرات جدید و خرتوپرتاشو اینجا بخونید یا اینکه داک رسمی خود پایتون بخونید. من ریالپایتون ترجیح میدم
https://realpython.com/python314-new-features/
@TorhamDevCH
میتونید تغییرات جدید و خرتوپرتاشو اینجا بخونید یا اینکه داک رسمی خود پایتون بخونید. من ریالپایتون ترجیح میدم
https://realpython.com/python314-new-features/
@TorhamDevCH
Realpython
Python 3.14: Cool New Features for You to Try – Real Python
Learn what's new in Python 3.14, including an upgraded REPL, template strings, lazy annotations, and subinterpreters, with examples to try in your code.
😁2
https://youtu.be/0vFgKr5bjWI
ویدیو دیشب :)
کمی با detail بیشتر درباره sync, async multi thread and multiprocessing
#vid_per_day
@TorhamDevCH
ویدیو دیشب :)
کمی با detail بیشتر درباره sync, async multi thread and multiprocessing
#vid_per_day
@TorhamDevCH
YouTube
Asynchronous vs Multithreading and Multiprocessing Programming (The Main Difference)
In this video, I explain the main difference between asynchronous execution, multithreading and multiprocessing programming. There are advantages and disadvantages of each approach.
* Synchronous 0:30
* Multithreading a process have many threads shared…
* Synchronous 0:30
* Multithreading a process have many threads shared…
👍2❤1