Dev Perfects – Telegram
Dev Perfects
40 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
این یکی از جوک‌های بامزه سایت گنو هستش:

There are 10 kinds of people in the world — those who understand binary and those who don't.

There are 10 kinds of people in the world — those who understand trinary, those who don't understand trinary and those who mistake it for binary.



ترجمه:

دو نوع آدم تو دنیا وجود دارند: کسانی که دودویی را می‌فهمند و کسانی که نمی‌فهمند.

سه نوع آدم تو دنیا وجود دارند: کسانی که سه‌گانه را می‌فهمند، کسانی که سه‌گانه را نمی‌فهمند و کسانی که آن را با دودویی اشتباه می‌گیرند.



توضیح:
عدد ۱۰ در باینری (دودویی) برابر با ۲ و در تری‌نری(سه‌گانه) برابر با ۳ است.

بزارید بازش کنم:
جفت این جوک‌ها از بازی با اعداد و سیستم‌های عددی استفاده می‌کنن، و بخش بامزه‌اش در تفسیر اشتباه یا غیرمنتظره اعداد در سیستم‌های مختلفه:

۱. جوک دودویی (Binary):
در سیستم عددی دودویی (که فقط از ارقام ۰ و ۱ استفاده میشه)، عدد "۱۰" معادل عدد "۲" در سیستم ده‌دهی هستش. بنابراین وقتی میگه که «دو نوع آدم وجود دارند»، خودش با ظاهر تناقض‌آمیز جمله (۱۰ = دو) باعث خنده میشه، چون کسی که دودویی را نمیفهمه، منطقاً این جمله رو هم اشتباه متوجه میشه.


۲. جوک سه‌گانه (Trinary):
در اینجا از سیستم سه‌گانه (تری‌نری) استفاده می‌شود که ارقام آن ۰، ۱ و ۲ هستند. عدد "۱۰" در تری‌نری معادل "سه" در سیستم ده‌دهی هستش. این بار شوخی در اینه که علاوه بر افرادی که تری‌نری را می‌فهمند یا نمی‌فهمند، گروه سومی هم اضافه شدن که تری‌نری را با دودویی اشتباه می‌گیرن و دوباره گیج میشن :))))






#fun
@SohrabContents
Forwarded from Agora (Alireza Azadi)
از موقعی که اولین بار تو کانال راجع‌به io_uring‍ صحبت کردم و بهونه‌ای شد که بیشتر راجع‌بهش بخونم، هرجا که یه چیزی راجع‌به سیستم‌ها میخونم میبینم که پاش وسطه. این پست کوتاه هم باز راجع‌به همین ماجراست و اگر علاقه‌مندین میتونه براتون جالب باشه:

https://lewiscampbell.tech/blog/250104.html
Forwarded from Linuxor ?
سورس‌کد مثل یک جوک است؛ اگه مجبور به توضیح آن شدید، بدانید که اصلاً خوب نوشته نشده است.

@Linuxor ~ Cory House
Kalali
Shahin Najafi
بازخوانی ترانه‌ی بالا
Forwarded from Linuxor ?
کامند های df و du رو اشتباهی هی بجای هم استفاده می‌کنی اینطوری یادش بگیر

من الان می‌خوام حجم این file رو ببینم و file چون f داره پس باید du بزنم.

@Linuxor
Forwarded from Agora (Alireza Azadi)
برای کسایی که مثل من از برنامه‌نویسی سیستمی خوششون میاد، چند وقت پیش بود و نمیدونم کجا که چشمم خورد به کار‌هایی که ابوالفضل میکنه تو این زمینه. چند روز پیش هم بود که کانالش رو دیدم و از چند نظر خیلی برام جالب بود. هم خیلی باحوصله‌ پروژه‌هایی که داره پیش میبره و توضیح میده و آپدیت‌هاش رو به اشتراک میذاره، هم چیزهایی که میخونه رو به زبون خودش میاد شرح میده. این شکل تولید محتواش و هم علاقه‌مندی‌هاش که با من علاقه‌مندی های من همپوشانی داره باعث شد که خیلی برام جذاب باشه. خلاصه گفتم که اینجا هم معرفی کنم. برای اهلش حتماً جذاب خواهد بود

An Inspired Engineer
Forwarded from SoniaCircuit (Sony @sonylibre:matrix.org)
Why is PS3 emulation so fast: RPCS3 optimizations explained
https://youtu.be/19ae5Mq2lJE

شاید براتون جالب باشه که این شبیه ساز با LLVM چطور بهینه سازی رو انجام میده و از چه متود های دیگری برای تفسیر و تبدیلش به کد x86 استفاده میکنه.


رفرنس هایی که باعث میشه درک بهتری از معماری PS3 و شبیه ساز RPCS3 داشته باشین که حتی یه ارتباط خیلی مستقیمی به درک معماری های cpu و پرتکول هایی که ازش استفاده میشه داره :
https://www.copetti.org/writings/consoles/playstation-3/

https://whatcookie.github.io/posts/why-is-avx-512-useful-for-rpcs3/
https://en.wikipedia.org/wiki/Power_Processing_Element
https://arcb.csc.ncsu.edu/~mueller/cluster/ps3/SDK3.0/docs/accessibility/sdkpt/cbet_3synpu.html
https://en.wikipedia.org/wiki/SIMD
https://www.felixcloutier.com/x86/pshufb
https://gist.github.com/animetosho/d3ca95da2131b5813e16b5bb1b137ca0
https://en.wikipedia.org/wiki/AVX-512
https://en.wikipedia.org/wiki/Static_random-access_memory

#emulation
#sony_playstation
دنبال یه پروژه قدیمی تو گیت هاب میگشتم که یه پروژه خیلی قدیمی تر پیدا کردم.
پروژه درس دیتابیس :)
۱۰ سال قبل :)
۱۰ سال گذشت :)
من و مرجان از بچه های دانشکده هم تیمی بودیم اون موقع.
آف کورس که مهاجرت کردیم :)
چه تمیز هم php براش نوشتیم :)
https://github.com/SaeedNajafi/DB-Project

@DevTwitter | <Saeed/>
Forwarded from 🎄 یک برنامه نویس تنبل (  MΞ)
This media is not supported in your browser
VIEW IN TELEGRAM
🔸mitmproxy2swagger
این ابزار بهتون یه پروکسی میده اونو ست میکنید توی گوشی-مرورگر-... و به هرجایی برید ریکوئستای اونو کپچر میکنه و در اخر تبدیلش میکنه به swagger که راحتتر کار کنید
برای پنتسترها و وب اسکرپرها این یه نعمته

https://github.com/alufers/mitmproxy2swagger

#معرفی
@TheRaymondDev
Forwarded from کانال مهرداد لینوکس (Mehrdad Linux)
روی گوشی اندورید مجبوری برنامه ناامن نصب کنی؟
🚫دسترسی غیر مجاز به Contacts یا فایل های گوشی میخواهند 😱
نمیخواهی دسترسی بدهی؟ نگران حریم خصوصی خودت و امنیتت هستی؟
🔥نرم افزار های insular یا Shelter (github) راه حل مسئله اند ✌🏻
شبیه به secure folder سامسونگ

🗓سند باکس چیه؟
در امنیت جعبهٔ شنی (Sandbox) یک سازوکار حفاظتی برای جدا نگاه‌داشتن بعضی نرم‌افزارهای در حال اجرا در آن واحد با دیگر نرم‌افزارهاست، و اغلب برای اجرای کدهای تست نشده یا برنامه یا باز کردن وب‌سایت های غیرقابل اعتماد مورد استفاده قرار می‌گیرد، تا خطرات احتمالی سیستم‌عامل یا میزبان را تهدید نکند.

برنامه island یک سندباکس در اندروید میسازه
در محیط سندباکس island همه چیز، جدا و ایزوله از اطلاعات و محتوای گوشی شما است
💠 کانتکت لیست جدید و خالی ،فایل منیجر و فضای داخلی و مموری کارت جدا
کروم و پلی استور ، موقعیت مکانی و ... 😎
اگر در گوشی فیلترشکن روشن کنید
🗓 برنامه هایی که در سندباکس island اجرا شدن، اینترنت بدون فیلتر شکن دارن
امکان تانل بین دو محیط وجود داره
نصب از گوگل پلی
آدرس سایت
گیت هاب Apache-2.0 license
❤️ ممنون از حمایت هاتون 💐🌺
یه برنامه برای ساخت میکروسرویس‌ها با رویکرد Domain-Driven Design (DDD) توسعه دادم؛
و خوشحال میشم که بهتون معرفیش کنم و نظرتون رو راجبش بدونم چون بهم کمک میکنه توی ادامه توسعش دقیق تر نیازهای برنامه نویسا رو بدونم.
این پروژه کاملا اوپن سورس ارائه میشه و همینطور:
با ساختار تمیز و قابل فهم، توسعه پروژه‌ها رو سریع‌تر و لذت‌بخش‌تر می‌کنه.
با استفاده از فایل‌های محیطی (environments)، به راحتی می‌تونید تنظیمات پروژه‌تون رو مدیریت کنید.

۱. نصب:
npm install hex-micro
۲. نمونه‌ها: برای دیدن مثال‌های کامل و سناریوهای واقعی، به فولدر example در گیت‌هاب برین.

من خوشحال می‌شم اگر نظراتتون رو با من به اشتراک بذارید. اگر هم علاقه‌مند به همکاری هستید، باعث افتخاره که بتونیم از تجربه های شما هم توی این پروژه استفاده کنیم؛ از طریق ایجاد issue توی repository میتونین با من در ارتباط باشین.
و یا برای استفاده شخصیتون میتونید پروژه رو clone کنید و هرطور که دوست داشتید زیرساختش رو هم تغییر بدید, و یا هم طبق ساختار آماده شده جلو برین.

لینک‌ها:
NPM: https://www.npmjs.com/package/hex-micro
GITHUB: https://github.com/Tariux/HEX

@DevTwitter | <madman/>
Forwarded from CleverDevs (Mammad)
یکی دیگه از بخشای جالب Bash حلقه هاشه . توی بش یه حلقه until هم داریم که خیلی شبیه به while هست با یه تفاوت کوچیک ، توی while حلقه تا زمانی که شرطمون درسته اجرا میشه و به محض اینکه شرطمون نقض بشه تموم میشه

مثلا تو کد زیر تا زمانی که متغیرمون از 5 کوچیکتر هست شرط درسته و حلقه اجرا میشه

i=1

while [[ $i -lt 5 ]]; do
echo "CleverDevs";
let i++
done



ولی unitl برعکسه تا وقتی شرط اشتباهه حلقه اجرا میشه و به محض اینکه شرط حلقه درست بشه استپ میشه

مثلا تو کد زیر تا زمانی که شرط حلقه اشتباهه حلقه اجرا میشه ولی به محض اینکه شرط درست میشه حلقه متوقف میشه

i=1 

until [[ $i -gt 5 ]]; do
echo "CleverDevs";
let i++
done



البته با معکوس کردن شرط while کار همون until رو میکنه ولی در کل حلقه جالبی بود

#bash
@CleverDevs - @CleverDevsGp
⚡️ خب خب خب starlette چیست؟ ⚡️

ـStarlette یکی از فریم‌ورک‌های عالی برای ساخت اپلیکیشن‌های وب در پایتونه که به طور خاص برای پردازش درخواست‌ها به صورت غیرهمزمان (async) ساخته شده. این فریم‌ورک با استفاده از ASGI (Asynchronous Server Gateway Interface)
سرعت و کارایی بالایی رو به ما میده.

یکی از ویژگی‌های خوب Starlette اینه که خیلی سبک و کم‌حجم هست، به طوری که می‌تونید به راحتی ازش برای ساخت سرویس‌ها و API های پیچیده استفاده کنید بدون اینکه بخواید با پیچیدگی‌های اضافی روبه‌رو بشید. 🚀

پشت صحنه‌ی Starlette 🎬
ـASGI:
ـStarlette از ASGI به جای WSGI استفاده می‌کنه. این تغییر باعث میشه که تو بتونی درخواست‌ها رو به صورت همزمان پردازش کنی و کارایی بهتری داشته باشی، مخصوصاً در مواقعی که نیاز به پردازش‌های طولانی یا مولتی تسک داری.
ـNon-blocking I/O:
با non-blocking I/O درخواستو عملیات ها منتظر نمی‌مونن. این یعنی که هر درخواست به سرعت پردازش می‌شه و سیستم هیچ‌وقت از کار نمی‌افته.
ـEvent-driven:
ـStarlette معماری event-driven داره، به این معنی که هیچ عملیات غیرضروری انجام نمیده. فقط وقتی که یه اتفاقی بیفته، کاری انجام می‌ده، که باعث میشه سرعت پردازش بالاتر بره.
ـMiddleware:
ـStarlette کاملاً روی middleware ها بنا شده که می‌تونید به راحتی ویژگی‌هایی مثل لاگینگ، احراز هویت، یا مدیریت خطاها رو به برنامه اضافه کنید.
ـUvicorn:
معمولا از Uvicorn برای راه‌اندازی اپلیکیشن استفاده میشه که یه سرور ASGI خیلی سریع و سبک هست. این باعث میشه که اپلیکیشن شما به راحتی به HTTP/2 و WebSocket متصل بشه.
چرا Starlette سریع‌تره؟ 💨
سبک بودن:
ـStarlette به شدت مینیمال طراحی شده و چیز اضافی توش نیست که بخواد سرعت رو پایین بیاره. به همین خاطر به راحتی می‌تونید اپلیکیشن‌هایی با کارایی بالا بسازید.

پشتیبانی از async:
استفاده از async و await برای پردازش درخواست‌ها بصورت همزمان باعث میشه تا اپلیکیشن شما بدون هیچ کندی درخواست‌ها رو پردازش کنه. این یه ویژگی خیلی مهم برای اپلیکیشن‌هایی هست که نیاز به سرعت بالا دارن.

ـUvicorn:
ـ Uvicorn باعث میشه که اپلیکیشن‌ها با کمترین تأخیر و بیشترین کارایی اجرا بشن.

پشتیبانی از WebSocket:
ـStarlette از WebSocket به خوبی پشتیبانی می‌کنه که باعث میشه اپلیکیشن‌های real time سریع و کارآمد اجرا بشن.

ویژگی‌های کاربردی Starlette 🛠️
ـWebSocket:
پشتیبانی از WebSocket برای اپلیکیشن‌های realt time مثل چت یا نوتیفیکیشن‌های زنده.


ـBackground Tasks:
امکان اجرای کارهای پس‌زمینه‌ای مثل ارسال ایمیل یا پردازش داده‌ها بدون معطلی کاربر.


ـMiddleware قدرتمند:
می‌تونید به راحتی هر middleware دلخواهی رو برای احراز هویت، لاگینگ و موارد دیگه اضافه کنید.


ـRouting منعطف:
مسیرهای URL رو می‌تونید به صورت خیلی دقیق و منعطف تعریف کنید.


و...

چرا starllete باعث سرعت Fastapi میشه؟ 🔄
در حقیقت، FastAPI یه فریم‌ورک مبتنی بر Starlette هست که ویژگی‌هایی مثل Pydantic برای اعتبارسنجی و OpenAPI برای مستندسازی خودکار API‌ها و... موارد دیگه رو اضافه کرده. بنابراین، FastAPI از Starlette استفاده می‌کنه.
پس الان کاملا براتون واضح هست که چرا Fastapi سریع هست

نمونه کد ساده از Starlette 🖥️
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.routing import Route

async def homepage(request):
return JSONResponse({'message': 'Hello, Starlette!'})

routes = [
Route("/", endpoint=homepage)
]

app = Starlette(debug=True, routes=routes)

برای اجرای اپلیکیشن:
uvicorn app:app --reload 


اینم سایت خود starllette
https://www.starlette.io/


شیرو و ریکشن فراموش نشه ❤️


#programming #fastapi #web



🔆 CHANNEL | GROUP
Forwarded from جادی | Jadi
شاید این ماه‌ها من به نظر خیلی کم کار بیام (: ولی در عمل ماجرا اینه که دارم یه دوره جدید و کامل پایتون با مکتبخونه ضبط می کنم و پیگیری و دقت اونها کار رو مفصل می کنه! فعلا حدود ۶۰ تا ویدئو داریم و نکات مقدماتی تا پیشرفته پایتون جدید رو توش توضیح می دم. تقریبا آخرهاشه و امیدوارم به زودی منتشر بشه.
تابع لامبدا تو پایتون یه جور تابع کوچیک و جمع‌وجوره که می‌شه تو یه خط نوشتش. خیلی ساده‌ست و لازم نیست مثل توابع معمولی با def تعریفش کنیم. بیشتر برای کارای ساده و سریع استفاده می‌شه.

تو تصویر بالا می‌تونید مثال‌ها و کاربردهای اون رو مشاهده کنید.

@DevTwitter | <Reza Jafari/>
Forwarded from Linuxor ?
یکی از نکته های مثبتی که تو دسکتاپ های لینوکسی میبینم اینه که دهنت سرویس میشه یه بازی نصب کنی ...

امروز صبح امدم رو ابونتوم یه CS GO نصب کنم یه تفریحی کنم (تازه این مال Steam هستش که زیاد مشکلی با لینوکس نداره) بعد هزار مکافات و فرووم به زور اجراش کردم اخرش وسط بازی پرید بیرون دیگه مخم نکشید زدم پاکش کردم رفتم نشستم پای کد زدن و دیباگ کردن کدام

خلاصه از صبح تا همین الان که یکه صبحه داشتم کد میزدم بلاخره باگی که چند هفته رو مخم بود رو دیباگ کردم....

ممنون لینوکس جان که نزاشتی CS GO ران بشه و focus کنم رو کارم اگه ویندوز بودم قطعا چند هفته دیگه درگیر باگه بودم.

🐧 @Linuxor
Forwarded from Linuxor ?
استفاده از chat-gpt بدون نیاز به شماره خارج از کشور !!

متاسفانه ما به علت ایرانی بودنمون نمیتونیم توی chat-gpt ثبت نام کنیم , خیلیا با شماره مجازی تونستن واردش بشن ولی بازم استفاده از شماره مجازی برای همه مقدور نیست ؛ سایت
https://freegpt.one/
با استفاده از api های chat-gpt محیطش رو براتون شبیه سازی کرده که بدون حتی ثبت نام میتونید ازش استفاده کنید.

پ.ن : توی عکس بالا ازش خواستم که یه بش اسکریپت بنویسه هر ۲۰ دقیقه ۲۰ ثانیه مانیتور رو خاموش کنه که پلک بزنید ؛ این اسکریپت برای اونایی که خشکی چشم کار با مانیتوردارن فوق العادس ...


🐧 @Linuxor
Forwarded from Go Casts 🚀
اگه برای یادگیری گولنگ یه دلیل خیلی موجه میخوای، این پست رو با دقت مطالعه کن

آخرش رو اولش بخوام بگم میشه: یادگیری برنامه نویسی بدون فریمورک
حالا این قضیه چرا مهمه؟

درک practiceهای برنامه نویسی و ترکیب کردن اونا کار سختیه. ولی وقتی درکشون کنی و تجربه به کارگیری شون رو داشته باشی، یه دریچه ای به روت باز میشه که خیلی ارزشمند هست و بهت این قدرت رو میده که با انتخاب خودت و با تحلیل خودت انواع ترکیب الگوهارو در کنار هم برای سیستم خودت بسته به نیازت به کار بگیری.

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

گولنگ مزیت بزرگش یادگیری بدون فریمورک همین الگوهاست. بعد از یه مدت که الگوهای مختلف رو خودت تو گولنگ به کار میگیری با خیلی هاشون به اندازه کافی آشنا میشی و برای پروژه های جدیدت با خیال راحت تر و دست باز تصمیم میگیری چه ترکیبی از practiceهارو استفاده کنی.
گولنگ زبان جمع و جوریه و این خودش باز باعث میشه خیلی نتونی تو پیاده سازی الگوها شیوه های مختلفی رو به کار بگیری که انتخاب شیوه پیاده سازی وسواس برات ایجاد کنه.

برنامه نویسا معمولا وقتی میخوان یه زبان جدید رو یاد بگیرن، دوست دارن خیلی زود بتونن یه چیزی ملموس باهاش توسعه بدن، و همین سوق میده برنامه نویس رو به این سمت که فریمورک استفاده کنه. وقتی زبان برنامه نویسی رو با فریمورک یاد بگیری، خیلی سخت میشه که بتونی فلسفه، الگوها و idiomهای خود زبان رو خالص یاد بگیری.

@gocasts
از DeepSeek-V3 بگیم که یه مدل با هزینه کم به حساب میاد.
یه آزمایشگاه چینی این مدل رو توی ۲ ماه با ۵.۵ میلیون دلار ساخته که میشه مقایسه کرد با آموزش GPT-4o با ۱۰۰ میلیون دلار هزینه.
در واقع میشه یه مدل AI اوپن‌سورس ترکیبی و (Mixture-of-Experts یا MoE). یعنی به جای یه مدل بزرگ که همه‌کاره باشه، میان چند تا مدل «تخصصی» کوچیکتر میسازن که با هم کار میکنن.

با ۱۴.۸ تریلیون توکن آموزش داده شده، از تکنیک‌های جدیدی مثل Multi-Head Latent Attention (MLA) استفاده کردن.

برای توضیح این تکنیک باید به اصل «مفهوم توجه» یا همون Attention توی مدل‌های زبانی نگاه کنیم.
در مدل‌های زبانی، «توجه» یه مکانیزمه که به مدل اجازه میده تا روی کلمات مهم‌تر تمرکز کنه و کلمات کم‌اهمیت‌تر رو نادیده بگیره. این بهش کمک میکنه ارتباط کلمات رو بیشتر بفهمه و جواب بهتری بده.

حالا MLA میاد با جنبه‌های مختلفی به متن نگاه میکنه و سعی میکنه اهمیت کلمات رو متوجه بشه، مثلا یه بار ممکنه به روابط گرامری نگاه کنه، یه بار به معنی کلمات نگاه کنه و ...
خروجی میشه درک بیشتر و مصرف کمتر GPU و منابع محاسباتی.

طراحی و آموزش این مدل هم روی چیپ NVIDIA H800 بوده که میشه یه مدل ارزون و محدود از H100 برای بازارهای تحریمی مثل چین.

از ویژگی‌هاش توانایی پردازش تا ۱۲۸۰۰۰ توکن در یه ورودی که برای کارهایی مثل بررسی اسناد قانونی و تحقیقات دانشگاهی خیلی خوبه. ین مدل ۶۷۱ میلیارد پارامتر داره، اما گفته میشه فقط ۳۷ میلیاردش برای انجام هر کار فعال میشه.

تو آزمون‌های مختلف با مدل‌های دیگه مثل Claude-3.5، GPT-4o، Qwen2.5 و Llama3.1 مقایسه شده و عملکرد خوبی داشته. به خصوص تو ریاضیات و کدنویسی، تو آزمون‌هایی مثل MATH-500 و LiveCodeBench از رقباش بهتر بوده. همچنین تو کارهایی که نیاز به درک متن‌های طولانی داره خیلی خوبه.

@DevTwitter | <Soroush Ahmadi/>
Forwarded from جادی | Jadi
می پرسن «چرا با مکتبخونه؟»

می‌دونین که من دوست دارم تا جایی که می شه کل محتواهام آزاد باشه و در دسترس همگان. اما در این مورد به سه دلیل با مکتبخونه پیش رفتم:

۱. کارهای خیلی طولانی و بدون سر فصل مشخص رو من به تنهایی خیلی سخت پیش می‌برم؛ زور و مدیریت که بالا سرم باشه اما تموم می‌شه (: خودم ۷۰ قسمتی در مورد پایتون نمی‌ساختم و اگر می‌ساختم تمرین و تکلیف و حل تمرین و .. نمی‌داشت.

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

۳. همیشه در مورد کارهای من پذیرفته که روش هایی باشه که کسانی که مشکل مالی دارن هم به محتواها دسترسی پیدا کنن.