زندگی به عنوان سرویس – Telegram
زندگی به عنوان سرویس
3.36K subscribers
1.15K photos
228 videos
136 files
937 links
نرم‌افزار و زندگی نرم‌افزاری من...
لینک اولین پست:
https://news.1rj.ru/str/lifeAsAService/3
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
دقیقا دانشمندا دارن چه غلطی می‌کنن که هنوز نمی‌شه همچین چیزی رو با پرینتر سه بعدی ساخت 🥺🥺
😍6
git manual.pdf
2.1 MB
#file
#doc
#book
#software

Git manual
یه راهنمای خیلی خوب و ساده برای گیت.
👍3
زندگی به عنوان سرویس
توی مترو نشستم، گفتم خلاصه کتاب "کد تمیز" نوشته رابرت مارتین(عمو باب) رو یه مروری کنم. اینجا هم می‌نویسمشون 😁 کدی که می‌نویسید باید در نهایت سادگی باشه و برای دیگران خیلی راحت قابل فهم باشه. یعنی اگر کدی که شما نوشتید رو دادن به شخص دیگه‌ای که توسعه بده بتونه…
قسمت دوم این رو من بنویسم تا وقتم خالیه و سوار مترو هستم😁

بخش دوم بیشتر اشاره به قوائد طراحی داره. طراحی اینجا یعنی طراحی کد، طراحی سطح تکنیکال. چطور یه ماژول، کلاس یا سرویس رو تمیز طراحی کنیم؟

1- متغیرها یا مقادیر قابل کانفیگ کردن رو در بالاترین سطح نگه‌ دارید. مثلا فرض کنید شما می‌خواید هر کاربر نتونه در دقیقه بیشتر از 10 بار به برنامه درخواست بفرسته. شما این عدد 10 رو می‌تونید به عنوان یک متغیر محلی داخل همون کلاس یا تابعی که این وظیفه رو داره نگه دارید. اما این شکلی تمیز نیست. چرا؟ چون این مقدار احتمالا از چندین جا نیاز به خوندنش وجود داره یا حتی می‌شه هر لحظه تغییرش داد. حالا به ازای هربار که بخواید بخونیدش مجبورید یک شی از کلاس بسازید و.... یا اگر چند جای مختلف این مقدار رو به صورت محلی تعیین کرده باشید، هر بار بخواید تغییر بدید باید همه رو تغییر بدید و ممکنه جایی رو فراموش کنید. این تیپ متغیرها بهتره توی فایل‌های سطح بالا نگه داشته بشن. مثلا توی فایل‌های .conf یا .env مثلا. حتی شاید از این هم بالاتر. مثلا توی متغیرهای pod توی k8s یا متغیرهای Container توی داکر.

2- داخل هر فایل فقط و فقط یک کلاس بنویسید. یعنی اصل تک وظیفگی رو حتی برای فایل هم رعایت کنید. اگر مجبور شدین تحت هر شرایطی چند کلاس رو توی یک فایل بگذارید، سعی کنید کلاس‌های فرعی‌ای که می‌دارید توی فایل صرفا کلاس‌های دیتا مدل باشن. یعنی کلاس‌هایی که صرفا ویژگی‌ها رو نگه می‌دارن و متد ندارن یا اگه دارن متدهاشون عملکرد آنچنانی ندارن.

3- هر کلاس باید صرفا، فقط و فقط وابستگی‌های خودش رو بدونه و اگر قراره داخل یک کلاس از یک کلاس دیگه استفاده کنید و برای استفاده از کلاس دوم نیاز دارید داده یا کلاس‌های دیگه‌ای رو استفاده کنید، این داده‌ها و کلاس‌ها باید توی همون کلاس بیان نه کلاس بالاتر. چرا؟ اولا کدتون کثیف نمی‌شه. دوما کلاس بالایی سبک می‌شه. سوما به مشکلات طراحی مثل وابستگی حلقه‌ای(Circular Dependency) برنمی‌خورید. چهارما اگه بخواید از کلاس بالایی جایی استفاده کنید نیاز ندارید که وابستگی‌های کلاس‌های داخلی رو هم فراهم کنید. پنجما اسکوپینگ پروژه به واسطه اون همه وابستگی توده مانند به هم نمی‌خوره.


4- کدهایی که قراره به صورت چند نخی(Multi Thread) اجرا کنید رو از سایر کدها تا حد ممکن ایزوله کنید تا مشکلاتی مثل مشکلات نقاط مشترک(بن‌بست، قحطی، رقابت، مشکلات خواندن و نوشتن همزمان و..) تا حد امکان کاهش پیدا کنن.


5- از over-configurability جلوگيری کنید. یعنی یه کلاس یا سرویس یا هرچیزی که می‌خواید توسعه بدید رو هی نیاید براش آپشن قابل کانفیگ کردن در نظر بگیرید! برنامه‌نویسی که بخواد از کلاس شما استفاده کنه خیلی اذیت می‌شه و این باعث می‌شه رفتار سرویس یا کلاستون خیلی متغییر و غیرقابل پیش‌بینی بشه.

6- از تزریق وابستگی استفاده کنید. این مورد شیشم خیییلی چیز مهم و بزرگیه و خودم هم حتی بعد از 4 سال یک درک کاملا صحیح، درست و روشن ازش ندارم. می‌تونم ازش استفاده کنم و 90% سوراخ سنبه‌هاش رو هم گشتم و بلدم ولی هنوز احساس می‌کنم خودم نمی‌تونم یه سیستم DI دیزاین کنم. برای همین توصیه می‌کنم خودتون برید بخونید و روی سواد ناقص من حساب باز نکنید.

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

#software
#نرم_افزار
#یادگیری
👍6
1670918161077.pdf
515.4 KB
یه جزوه برای الگوهای طراحی مهم

#software
#book
#learning
👍6
عزیزانی اومدن و ادعای نزول و افول PHP رو کردن! باید بگم:
This media is not supported in your browser
VIEW IN TELEGRAM
لذت ببرید واقعا ❤️
ارباب حلقه‌ها
5
امروز شرکت رو پیچوندم نشستم یه کار باحال کردم. از اون جایی که می‌دونم خیلی مشتاقید بدونید چکار کردم، نشستم براتون نوشتم ولی خیلی طولانی شد بردمش توی Draftهام🤦‍♂️
احتمالا براتون مطلبش رو بنویسم. ای کاش می‌تونستم وویس بدم بهتون. وویس بدم؟😂
👍4
Forwarded from Backend Life
"It will make artists obsolete!"

@backendlife
زندگی به عنوان سرویس
1671138380909.pdf
در موردش اینو می‌گن. اما من بررسی نکردم حقیقتش
👍2
https://soundcloud.com/banoo-003/pz08fwrzir60?si=8aa62e15742144e2b3f6d49cbc915548&utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing


باز یه بغضی گلومو گرفته
باز همون حس ز درد جدایی
من امروز کجا و تو امروز کجایی

#آهنگ - خواجه امیری
من با خیلی از شما بیرون از این کانال دوست هستم و هر روز یا شما رو می‌بینم یا باهاتون صحبت می‌کنم. یه موردی رو که دارم می‌بینم اینه که اکثرا دارید می‌گید من شب و روز دارم کار می‌کنم و زور می‌زنم که چیزای جدید یاد بگیرم اما هنوز هیچی بلد نیستم، یا از سرعتم راضی نیستم یا حس می‌کنم خیلی از دیگران عقب‌تر هستم و... .

بااااااااباااااا مگه کلاس درسه؟ شما نباید به این مسیر مثل یک جاده نگاه کنید که یه مقصدی توش وجود داره! اصلا اگه بتونید اینجور تصور کنید من واقعا شوکه می‌شم. چطور می‌تونید توی ذهنتون یک نقطه رو در نظر بگیرید و بگید وقتی به اینجا رسیدم آدم خفنی هستم؟
فرض کنید رفتید و تمام اون تکنولوژی‌هایی که توی ذهنتون هست و فکر می‌کنید اگه یاد بگیری آدم خفنی می‌شید رو یاد گرفتید. حالا فرض کنید توی کمتر از چند ماه همه اونها منقضی می‌شن! خب بعد؟ خفونت شما از بین رفته؟ طبق استدلال شماها بله از بین رفته.

وقتی شما حرفه‌ای رو یاد می‌گیرید نباید این طور فکر کنید که توی یک جاده مسابقه هستید و از حریفتون عقبید یا چه می‌دونم از زمانبندی عقب هستید. اصلا این چیزا معنا نداره که.

یه شعری هست که می‌گه:
یاران ره عشق منزل ندارد
این بحر مواج ساحل ندارد

جای این که حرص سرعت و رسیدن به مقصد رو بخورید(مقصدی که اصلا وجود نداره!) چرا از مسیر لذت نمی‌برید؟ یعنی الان تمام چیزایی که یاد گرفتید رو به کار بردید و خم و چمشون دستتونه؟ به حضرت عباس عمرا!

به جای این که به راه به چشم یک جاده نگاه کنید که کلی فاکتور زمان و رقیب و... بیاد توی ذهنتون، بهش به چشم غذا خوردن نگاه کنید. هر کس به اندازه توانش غذا می‌خوره، هدف این نیست که زود تموم کنید. هدف اینه که اولا سیر بشید، دوما بهترین غذاها رو استفاده کنید که براتون بیشترین فایده رو داشته باشه و سوما ازش لذت ببرید.

نرم‌افزار یعنی خلاقیت محض. توی نرم‌افزار شما واقعا خالق هستید. نمی‌خواید از این قدرت خلق کردن لذت ببرید؟ نمی‌خواید خلاقیت خودتونو افزایش بدید؟ فقط می‌خواید چیزای زیادی یاد بگیرید؟!

سعی کنید هر چیز رو به جا و به اندازه یاد بگیرید. چیزایی که یاد می‌گیرید رو استفاده کنید نه این که صرفا یه چیزی رو یاد بگیرید و بندازید گوشه مغزتون. وقتی شما قبل از این که چیزی رو نیاز داشته باشید می‌رید دنبال یادگیریش مثل این می‌مونه که شما یه چکش گیر آوردی و در به در دنبال میخ می‌گردی بزنی تو سرش! در صورتی که اول باید نیاز پیدا کنی که یه میخ رو بزنی بعد بری دنبال چکش!

با آرامش و عمیق گام بردارید ممکنه از نظر خودتون کند باشه اما این فقط برای گام‌های اولیه هستش بعدش می‌بینید که شما چقدر سریع چیزای پیشرفته رو می‌فهمید و البته چقدر آدم عمیق و موثری هستید.
👍42
download.png
9.2 MB
داشتم دنبال یه چیزی می‌گشتم یکی از کارایی که کردم رو دیدم. تحلیل کامنت‌های کاربرا برای اپلیکیشن‌های معروف کافه بازار :)
یکی از کارای ساده‌ای که کردم به دست آوردن ابر کلمات(Word Cloud) برای کامنت‌ها بود. این ابر برای 9 تا از معروف‌ها است گفتم بذارم اینجا :)

اسامی اپ‌ها بالای عکس‌ها هستن منتها فونتشون سیاهه. چون باقی تحلیل‌ها ممکنه حساسیت‌زا باشن من فعلا این رو براتون می‌ذارم تا یه زمانی که وقت خالی پیدا کردم بتونم داده‌های حساس رو فیلتر کنم و باقی تحلیل‌ها رو هم براتون بذارم. قطعا هم به فکر نوشتن گزارش کار و انتشار کدها هستم:)
1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Bill Gates explaining the internet to David Letterman, 1995.