Forwarded from Ninja Learn | نینجا لرن
Forwarded from Linuxor ?
توی سیستم های توزیع شده وقتی هماهنگ کننده مرکزی یا ارکستریتور داشته باشیم کنترل و مدیریت خیلی بهتر میشه و خطا ها راحت تر مدیریت میشن اما هیچ وقت نمیتونین همه چیز خوب رو یه جا داشته باشین و همین هماهنگ کننده خودش میتونه تبدیل به گلوگاه بشه و سیستم رو کند کنه و یا باعث کاهش کارایی سیستم بشه!
@Linuxor
@Linuxor
Forwarded from 🎄 یک برنامه نویس تنبل (The Lazy 🌱 Raymond)
🔶 سباستین برگمن, خالق PHPUnit اعلام کرد که به تازگی برای چهارمین بار در شش ماه گذشته بستری شده و برای دومین بار در سه ماه اخیر عمل کرده است و در حال ریکاوری است که بتواند به جامعه توسعه دهندگان متن باز برگردد.
#خبر
@TheRaymondDev
#خبر
@TheRaymondDev
Forwarded from کدنویس یکروزه
هوش مصنوعی خود یاد گیرنده!
قبلاً مدل زبانی با سؤال و جواب رو تست کردیم. کافی بود سؤال و جوابهای متعدد رو بهش بدیم و بعد که از اون سؤالی رو می پرسیدیم از بین پرسش های متعدد که بهش داده بودیم و پاسخ ها حدس میزد که چه جوابی بده.
اما معلومه که اگه بخواهیم یه هوش مصنوعی رو عین یه بچه تربیت کنیم خوب این کار مشکلی میشه!
اگه بخواهیم خودش متن رو از ما بگیره مطالعه کنه و بعد بر اساس اطلاعات اون متن پاسخ بده چه کار باید کرد؟
حالا این الگوریتم جدید قادره این کارو بکنه!
طبق معمول هم دو نسخه داریم. یکی که راحت بدون سِرور و با لوکال استوریج مرورگر کار می کنه و دیگری نسخهی جدی که دیتابیس SQLite میسازه ولی سِرور لازم داره برای اجرا.
قبلاً مدل زبانی با سؤال و جواب رو تست کردیم. کافی بود سؤال و جوابهای متعدد رو بهش بدیم و بعد که از اون سؤالی رو می پرسیدیم از بین پرسش های متعدد که بهش داده بودیم و پاسخ ها حدس میزد که چه جوابی بده.
اما معلومه که اگه بخواهیم یه هوش مصنوعی رو عین یه بچه تربیت کنیم خوب این کار مشکلی میشه!
اگه بخواهیم خودش متن رو از ما بگیره مطالعه کنه و بعد بر اساس اطلاعات اون متن پاسخ بده چه کار باید کرد؟
حالا این الگوریتم جدید قادره این کارو بکنه!
طبق معمول هم دو نسخه داریم. یکی که راحت بدون سِرور و با لوکال استوریج مرورگر کار می کنه و دیگری نسخهی جدی که دیتابیس SQLite میسازه ولی سِرور لازم داره برای اجرا.
Forwarded from کدنویس یکروزه
Sample-document.txt
1.8 KB
متن نمونهی فارسی و انگلیسی که به هوش مصنوعی بالا میدین و اونو یاد گرفته و بر اساس اطلاعات داخل اون پاسخ میده!
Forwarded from دستاوردهای یادگیری عمیق(InTec)
اگر دارید هوش مصنوعی یاد میگیرید،
یک سری چیزها رو باید بلد باشید:
۱- پایتون: من تا oop خوندم و ... نداره.
دست بردارید ازین دورههای دوزاری و ویدئوها و کلاسهای آموزشگاهی؛ یک آموزشگاه یا یک فروشنده دوره برای سود بیشتر اینکار رو میکنه :
دوره مقدماتی - متوسط - پیشرفته ...
اگر آینده کاری که میکنید براتون مهم هست؛ یک کتاب رفرنس پایتون بردارید :
اگر تمام سرفصلها و مطالبش رو بلد بودید، اون موقع شما تازه مقدمات پایتون رو یاد گرفتید.
پایتون سطح متوسط چی میشه ؟
پایتون پیشرفته چطور ؟ چنین چیزی وجود نداره؛ شما نمیتونی بگید یک زبان برنامهنویسی رو کامل بلدی ولی مفاهیم اصلی software enginnering رو ندونی.
پیشرفته یعنی جزئیات عملکرد همه چیز در پایتون رو بدونی؛ کتاب نداره Document, Source code داره این بخش.
۲- باید Software Engineering بلد باشی؛ خیلی صحبت شده کتابای معرفی شده توی استوریهای کانال @pyhints
لینوکس و داکر و ... واجبات هست.
بعد از همهی اینها تازه میرسیم به محاسبات ریاضی و ماتریس و ...
بعد فریمورک پایتورچ یا تنسورفلو و ابزارهای مختلف هوش مصنوعی و البته سرویس های
در نهایت برای اونهایی که بفکر یادگیری اصولی هستند، مقاله مدلهای حوزه کاری خودتون رو بخونید (مدلهای معروف حتی قدیمی)؛ سعی کنید با توجه به جزییات مدل و بر اساس مقاله مدل رو پیادهسازی کنید، بدون اینکه سورس کدهاش رو ببینید.
بعد ساختار مدلی که پیادهسازی کردید رو با کدهای منتشر شده مقایسه کنید، ۳ حالت داره :
۱- هیچی نفهمیدید و کاملاً اشتباه پیادهسازی کردید، نقطه ضعفهاتون رو پیدا میکنید در عوض.
۲- دقیقاً مطابق مقاله پیادهسازی کردید، اما با سورس کدهای ارائه شده توی گیتهاب یا ... نمیخونه؛ طبیعی هست، بعضی وقتا بعد از انتشار مقاله تغییرات یا بهبودهایی داده میشه
Inception v3
رو یادم هست وقتی پیادهسازی کردم، توی آپدیت بعدی که گوگل منتشر کرده دیگه با کدهای من همخوانی نداشت.
این نشون میده یادگرفتید مقالات رو درست بخونید و پیادهسازی کنید و از اون مهمتر، میفهمید هر تغییر و بهبودی دقیقاً به چه دلیل انجام شده و روی چه چیزی اثرگذار هست.
۳- پیادهسازی شما با مقاله و گیتهاب میخونه؛ کد زدن ایدههای جدید رو یاد میگیرید.
شاید
من شخصاً با این تکنیک با شاگردام کار میکردم و میکنم، هیچوقت به بچههای بالای ۲۰ سال نمیگم برو API فلان شرکت رو بگیر و پروژه بزن.
پروژه یعنی پیادهسازی مقالات،
خواهشاً راجب این دورههایی که توی ۶۰ ساعت قراره شمارو پیغمبر هوش مصنوعی کنه هم از من سوال نکنید، یا اینکه من پایتون رو مقدماتی بلدم!
چیزی به اسم مقدماتی نداره پایتون (یا هر زبان دیگهای) یا شما پایتون رو بلد هستید یا بلد نیستید، من تا اول oop خوندم و ... نداره عذرخواهی میکنم ولی این حرفا احمقانهاس ...
یا یک کاری رو درست انجام بده، یا وقت خودت رو تلف نکن، برو دنبال کاری که دوس داری.
یک سری چیزها رو باید بلد باشید:
۱- پایتون: من تا oop خوندم و ... نداره.
دست بردارید ازین دورههای دوزاری و ویدئوها و کلاسهای آموزشگاهی؛ یک آموزشگاه یا یک فروشنده دوره برای سود بیشتر اینکار رو میکنه :
دوره مقدماتی - متوسط - پیشرفته ...
اگر آینده کاری که میکنید براتون مهم هست؛ یک کتاب رفرنس پایتون بردارید :
Head First Python - 3rd editionاگر تمام سرفصلها و مطالبش رو بلد بودید، اون موقع شما تازه مقدمات پایتون رو یاد گرفتید.
پایتون سطح متوسط چی میشه ؟
Fluent Python 2nd edition پایتون پیشرفته چطور ؟ چنین چیزی وجود نداره؛ شما نمیتونی بگید یک زبان برنامهنویسی رو کامل بلدی ولی مفاهیم اصلی software enginnering رو ندونی.
پیشرفته یعنی جزئیات عملکرد همه چیز در پایتون رو بدونی؛ کتاب نداره Document, Source code داره این بخش.
۲- باید Software Engineering بلد باشی؛ خیلی صحبت شده کتابای معرفی شده توی استوریهای کانال @pyhints
لینوکس و داکر و ... واجبات هست.
بعد از همهی اینها تازه میرسیم به محاسبات ریاضی و ماتریس و ...
بعد فریمورک پایتورچ یا تنسورفلو و ابزارهای مختلف هوش مصنوعی و البته سرویس های
Cloud در نهایت برای اونهایی که بفکر یادگیری اصولی هستند، مقاله مدلهای حوزه کاری خودتون رو بخونید (مدلهای معروف حتی قدیمی)؛ سعی کنید با توجه به جزییات مدل و بر اساس مقاله مدل رو پیادهسازی کنید، بدون اینکه سورس کدهاش رو ببینید.
بعد ساختار مدلی که پیادهسازی کردید رو با کدهای منتشر شده مقایسه کنید، ۳ حالت داره :
۱- هیچی نفهمیدید و کاملاً اشتباه پیادهسازی کردید، نقطه ضعفهاتون رو پیدا میکنید در عوض.
۲- دقیقاً مطابق مقاله پیادهسازی کردید، اما با سورس کدهای ارائه شده توی گیتهاب یا ... نمیخونه؛ طبیعی هست، بعضی وقتا بعد از انتشار مقاله تغییرات یا بهبودهایی داده میشه
Inception v3
رو یادم هست وقتی پیادهسازی کردم، توی آپدیت بعدی که گوگل منتشر کرده دیگه با کدهای من همخوانی نداشت.
این نشون میده یادگرفتید مقالات رو درست بخونید و پیادهسازی کنید و از اون مهمتر، میفهمید هر تغییر و بهبودی دقیقاً به چه دلیل انجام شده و روی چه چیزی اثرگذار هست.
۳- پیادهسازی شما با مقاله و گیتهاب میخونه؛ کد زدن ایدههای جدید رو یاد میگیرید.
شاید
AlexNet بعدی دنیای هوش مصنوعی از دستاوردهای شما بود.من شخصاً با این تکنیک با شاگردام کار میکردم و میکنم، هیچوقت به بچههای بالای ۲۰ سال نمیگم برو API فلان شرکت رو بگیر و پروژه بزن.
پروژه یعنی پیادهسازی مقالات،
Transformer, GPT, DeepSeek, ...خواهشاً راجب این دورههایی که توی ۶۰ ساعت قراره شمارو پیغمبر هوش مصنوعی کنه هم از من سوال نکنید، یا اینکه من پایتون رو مقدماتی بلدم!
چیزی به اسم مقدماتی نداره پایتون (یا هر زبان دیگهای) یا شما پایتون رو بلد هستید یا بلد نیستید، من تا اول oop خوندم و ... نداره عذرخواهی میکنم ولی این حرفا احمقانهاس ...
یا یک کاری رو درست انجام بده، یا وقت خودت رو تلف نکن، برو دنبال کاری که دوس داری.
Forwarded from Linuxor ?
Forwarded from Gopher Academy
Forwarded from 🎄 یک برنامه نویس تنبل ( MΞ)
🔸fdict
با اپدیت کردن دستور از توضیحات بیشتر گوگل ترنسلیت هم استفاده کنید:
alias fdict='function _fdict(){
response=$(curl -s "https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=fa&dt=t&dt=bd&dj=1&q=$(echo $* | jq -sRr @uri)");
translation=$(echo "$response" | jq -r ".sentences[0].trans");
echo "$translation";
echo "verb: $(echo "$response" | jq -r ".dict[] | select(.pos == \"verb\") | .terms | join(\", \")")";
echo "noun: $(echo "$response" | jq -r ".dict[] | select(.pos == \"noun\") | .terms | join(\", \")")";
echo "conjunction: $(echo "$response" | jq -r ".dict[] | select(.pos == \"conjunction\") | .terms | join(\", \")")";
echo "preposition: $(echo "$response" | jq -r ".dict[] | select(.pos == \"preposition\") | .terms | join(\", \")")";
}; _fdict'
@TheRaymondDev
با اپدیت کردن دستور از توضیحات بیشتر گوگل ترنسلیت هم استفاده کنید:
alias fdict='function _fdict(){
response=$(curl -s "https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=fa&dt=t&dt=bd&dj=1&q=$(echo $* | jq -sRr @uri)");
translation=$(echo "$response" | jq -r ".sentences[0].trans");
echo "$translation";
echo "verb: $(echo "$response" | jq -r ".dict[] | select(.pos == \"verb\") | .terms | join(\", \")")";
echo "noun: $(echo "$response" | jq -r ".dict[] | select(.pos == \"noun\") | .terms | join(\", \")")";
echo "conjunction: $(echo "$response" | jq -r ".dict[] | select(.pos == \"conjunction\") | .terms | join(\", \")")";
echo "preposition: $(echo "$response" | jq -r ".dict[] | select(.pos == \"preposition\") | .terms | join(\", \")")";
}; _fdict'
@TheRaymondDev
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
نسخه ۱۰.۴ WINE با بهبودهای Vulkan و بیش از ۲۰۰ تغییر منتشر شده است.
مهمترین ویژگیهای WINE 10.4 شامل موارد زیر است:
بهبود پشتیبانی از فایلهای PDB در DbgHelp
پشتیبانی بهتر از دیکودر ویدیویی Vulkan در WineD3D
پشتیبانی از قابلیتهای دسترسیپذیری در کنترل SysLink
پیشرفت بیشتر درایور بلوتوث
علاوه بر این مجموعهای از رفع اشکالات جزئی نیز انجام شده است. از نظر آماری، این نسخه شامل رفع ۲۸ باگ و در مجموع ۲۴۱ تغییر است.
جزئیات کامل:
https://gitlab.winehq.org/wine/wine/-/releases/wine-10.4
مهمترین ویژگیهای WINE 10.4 شامل موارد زیر است:
بهبود پشتیبانی از فایلهای PDB در DbgHelp
پشتیبانی بهتر از دیکودر ویدیویی Vulkan در WineD3D
پشتیبانی از قابلیتهای دسترسیپذیری در کنترل SysLink
پیشرفت بیشتر درایور بلوتوث
علاوه بر این مجموعهای از رفع اشکالات جزئی نیز انجام شده است. از نظر آماری، این نسخه شامل رفع ۲۸ باگ و در مجموع ۲۴۱ تغییر است.
جزئیات کامل:
https://gitlab.winehq.org/wine/wine/-/releases/wine-10.4
Forwarded from Frontend with Erfun👨🏻💻 (Erfun Ghodoosi)
Media is too big
VIEW IN TELEGRAM
چطور با رعایت best practice ها
مثل یک حرفه ای data fetch انجام بدیم؟
با استفاده از
use()
Suspense
ErrorBoundary
که احتمالا اسمشون رو شنیدید ولی تاحالا استفاده نکردید یا اینکه دقیق نمیدونید چطور میشه ازشون استفاده کرد.
ویدیو رو ببینید و از نتیجه ی نهایی کد لذت ببرید😁
اگرم سوالی داشتید حتما بپرسید.
مثل یک حرفه ای data fetch انجام بدیم؟
با استفاده از
use()
Suspense
ErrorBoundary
که احتمالا اسمشون رو شنیدید ولی تاحالا استفاده نکردید یا اینکه دقیق نمیدونید چطور میشه ازشون استفاده کرد.
ویدیو رو ببینید و از نتیجه ی نهایی کد لذت ببرید😁
اگرم سوالی داشتید حتما بپرسید.
Forwarded from linuxtnt(linux tips and tricks) (hosein seilany https://seilany.ir/)
بالاخره اولین نسخه از GIMP 3.0 منتشر شد.
این نسخه نتیجه هفت سال تلاش سخت توسعهدهندگان داوطلب، طراحان، هنرمندان و اعضای جامعه کاربری است (برای مقایسه، نسخه GIMP 2.10 اولین بار در سال ۲۰۱۸ منتشر شد و توسعه نسخه 3.0 از سال ۲۰۲۰ آغاز شده بود).
ویژگیهای جدید GIMP 3.0
✅ طراحی رابط کاربری جدید: مهاجرت به GTK3، صفحه اصلی جدید و پشتیبانی بهتر از نمایشگرهای HiDPI.
✅ ویرایش غیرمخرب پیشرفته: امکان اعمال فیلترها روی لایههای گروهی و ذخیره نسخههای مختلف در فایلهای XCF.
✅ پشتیبانی گستردهتر از فرمتها: شامل TIFF، BMP 64 بیتی، PSD در حالت 16 بیتی LAB و DDS با فشردهسازی BC7.
✅ بهبود عملکرد: پاسخدهی روانتر ابزارهای ویرایش و مدیریت کارآمدتر منابع.
📌 جزئیات کامل نسخه:
https://www.gimp.org/news/2025/03/16/gimp-3-0-released/
این نسخه نتیجه هفت سال تلاش سخت توسعهدهندگان داوطلب، طراحان، هنرمندان و اعضای جامعه کاربری است (برای مقایسه، نسخه GIMP 2.10 اولین بار در سال ۲۰۱۸ منتشر شد و توسعه نسخه 3.0 از سال ۲۰۲۰ آغاز شده بود).
ویژگیهای جدید GIMP 3.0
✅ طراحی رابط کاربری جدید: مهاجرت به GTK3، صفحه اصلی جدید و پشتیبانی بهتر از نمایشگرهای HiDPI.
✅ ویرایش غیرمخرب پیشرفته: امکان اعمال فیلترها روی لایههای گروهی و ذخیره نسخههای مختلف در فایلهای XCF.
✅ پشتیبانی گستردهتر از فرمتها: شامل TIFF، BMP 64 بیتی، PSD در حالت 16 بیتی LAB و DDS با فشردهسازی BC7.
✅ بهبود عملکرد: پاسخدهی روانتر ابزارهای ویرایش و مدیریت کارآمدتر منابع.
📌 جزئیات کامل نسخه:
https://www.gimp.org/news/2025/03/16/gimp-3-0-released/
Forwarded from Gopher Academy
🔵 عنوان مقاله
golang-set: A Simple, Well-Tested, Generic Set Type
🟢 خلاصه مقاله:
مقالهی مورد نظر دربارهی آخرین نسخهی انتشار یافته (v2.8) برای زبان برنامهنویسی Go میباشد که پشتیبانی از قابلیت جدید "range-over-func iteration" اضافه شده در نسخهی 1.23 Go را معرفی میکند. این ویژگی جدید به برنامهنویسان اجازه میدهد که بر روی نتایج تابع با استفاده از حلقهی range به صورت مستقیم تکرار کنند، که رویکردی بسیار کارآمد برای مدیریت مجموعههای دادهای است. علاوه بر این، نویسنده به نداشتن ساختار دادهای "مجموعهها" به صورت بومی در Go اشاره میکند و توصیه میکند تا زمانی که این ویژگی بومی اضافه نشود، از راهحلهای موجود استفاده شود. این مقاله به ویژه برای توسعهدهندگان نرمافزاری که از Go استفاده میکنند مفید است، زیرا اطلاعاتی در مورد قابلیتهای جدید و توصیههای مربوط به بهینهسازی کدهایشان ارائه میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/167048/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
golang-set: A Simple, Well-Tested, Generic Set Type
🟢 خلاصه مقاله:
مقالهی مورد نظر دربارهی آخرین نسخهی انتشار یافته (v2.8) برای زبان برنامهنویسی Go میباشد که پشتیبانی از قابلیت جدید "range-over-func iteration" اضافه شده در نسخهی 1.23 Go را معرفی میکند. این ویژگی جدید به برنامهنویسان اجازه میدهد که بر روی نتایج تابع با استفاده از حلقهی range به صورت مستقیم تکرار کنند، که رویکردی بسیار کارآمد برای مدیریت مجموعههای دادهای است. علاوه بر این، نویسنده به نداشتن ساختار دادهای "مجموعهها" به صورت بومی در Go اشاره میکند و توصیه میکند تا زمانی که این ویژگی بومی اضافه نشود، از راهحلهای موجود استفاده شود. این مقاله به ویژه برای توسعهدهندگان نرمافزاری که از Go استفاده میکنند مفید است، زیرا اطلاعاتی در مورد قابلیتهای جدید و توصیههای مربوط به بهینهسازی کدهایشان ارائه میدهد.
🟣لینک مقاله:
https://golangweekly.com/link/167048/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - deckarep/golang-set: A simple, battle-tested and generic set type for the Go language. Trusted by GoogleCloudPlatform…
A simple, battle-tested and generic set type for the Go language. Trusted by GoogleCloudPlatform, Docker, 1Password, Ethereum and Hashicorp. - deckarep/golang-set
Forwarded from Laravel News
Handling Nested Attributes with Laravel's Fluent set Method https://laravel-news.com/nested-attributes-fluent
Laravel News
Handling Nested Attributes with Laravel's Fluent set Method - Laravel News
Simplify complex data handling in Laravel applications with the Fluent set() method, allowing for intuitive management of nested attributes using dot notation while maintaining a clean, chainable interface.
Forwarded from ⚝ (Z ِ y n َ b)
سری اوّل عکسهای کاخ گلستان:
drive.google.com/drive/folders/1XVE6EGD8kYnR2G8rR_Dc0JKYi9ykA0vg
سری دوّم عکسهای کاخ گلستان:
drive.google.com/drive/folders/1WYg9RPVIRSvqOHyKdUqQt1mD7UuL9gN_
عکسها، مربوط به دوران قاجار هستن و در انحصار عدهای خاص، قرار داشتن.
دوّمی به تازگی منتشر و اوّلی هم حوالی خرداد پارسال، منتشر شده بود.
#history #culture
@amiria703_channel
drive.google.com/drive/folders/1XVE6EGD8kYnR2G8rR_Dc0JKYi9ykA0vg
سری دوّم عکسهای کاخ گلستان:
drive.google.com/drive/folders/1WYg9RPVIRSvqOHyKdUqQt1mD7UuL9gN_
عکسها، مربوط به دوران قاجار هستن و در انحصار عدهای خاص، قرار داشتن.
دوّمی به تازگی منتشر و اوّلی هم حوالی خرداد پارسال، منتشر شده بود.
#history #culture
@amiria703_channel
Forwarded from PouriaGeek
🌍 اوپن سورس، بازجویی نیست!
وقتی داشتم توی لینکدین میگشتم دیدم یه توسعه دهنده خوش ذوقی یه ریپوش رو اوپن سورس کرده و بیشتر شبیه جلسه دادگاه بود که چرا اینجا رو اینطوری نوشتی ؟ برای چی از این راه نرفتی ؟ مگه هنوز کسی اینطوری مینویسه ؟
🔹 اوپن سورس یعنی یه توسعهدهنده تصمیم گرفته کدش رو بذاره در اختیار بقیه تا هم بتونن رایگان استفاده کنن یا روی سرورشون اجرا کنن (self-hosted)، هم اگه دوست داشتن توی پروژه مشارکت کنن و باهم یه چیز بهتر بسازیم.
❌ اوپن سورس به این معنی نیست که این پروژه بینقصه یا اینکه وقتی یه ریپو اوپن سورس میشه، توسعهدهنده باید بشینه به همه جواب بده که "چرا اینو اینجوری نوشتی؟ چرا فلان روشو انتخاب نکردی؟"
✅ اگه جایی از کد مشکل داره یا حس میکنی یه روش بهتر هست، سادهست: PR بزن و درستش کن! شاید اون لحظه توسعهدهنده این روش به ذهنش نرسیده یا حتی نمیدونسته، و دقیقاً به همین خاطر کد رو اوپن سورس کرده!
💡 خیلی از پروژههای بزرگی که امروز استفاده میکنیم، از یه ریپوی ساده شروع شدن و با مشارکت هزاران برنامهنویس رشد کردن. پس اگه یه پروژه رو دوست داشتی یا حتی یه ایده کوچیک برای بهتر شدنش داری، یه PR بزن یا با توسعهدهنده ارتباط بگیر.
- آخرش هم یادمون نره، ما همه فارغ از زبان و فریمورک، عضو یه کامیونیتی هستیم. اوپن سورس یعنی استفاده، مشارکت، رشد!
@pouriageek
وقتی داشتم توی لینکدین میگشتم دیدم یه توسعه دهنده خوش ذوقی یه ریپوش رو اوپن سورس کرده و بیشتر شبیه جلسه دادگاه بود که چرا اینجا رو اینطوری نوشتی ؟ برای چی از این راه نرفتی ؟ مگه هنوز کسی اینطوری مینویسه ؟
🔹 اوپن سورس یعنی یه توسعهدهنده تصمیم گرفته کدش رو بذاره در اختیار بقیه تا هم بتونن رایگان استفاده کنن یا روی سرورشون اجرا کنن (self-hosted)، هم اگه دوست داشتن توی پروژه مشارکت کنن و باهم یه چیز بهتر بسازیم.
❌ اوپن سورس به این معنی نیست که این پروژه بینقصه یا اینکه وقتی یه ریپو اوپن سورس میشه، توسعهدهنده باید بشینه به همه جواب بده که "چرا اینو اینجوری نوشتی؟ چرا فلان روشو انتخاب نکردی؟"
✅ اگه جایی از کد مشکل داره یا حس میکنی یه روش بهتر هست، سادهست: PR بزن و درستش کن! شاید اون لحظه توسعهدهنده این روش به ذهنش نرسیده یا حتی نمیدونسته، و دقیقاً به همین خاطر کد رو اوپن سورس کرده!
💡 خیلی از پروژههای بزرگی که امروز استفاده میکنیم، از یه ریپوی ساده شروع شدن و با مشارکت هزاران برنامهنویس رشد کردن. پس اگه یه پروژه رو دوست داشتی یا حتی یه ایده کوچیک برای بهتر شدنش داری، یه PR بزن یا با توسعهدهنده ارتباط بگیر.
- آخرش هم یادمون نره، ما همه فارغ از زبان و فریمورک، عضو یه کامیونیتی هستیم. اوپن سورس یعنی استفاده، مشارکت، رشد!
@pouriageek