This media is not supported in your browser
VIEW IN TELEGRAM
دقیقا دانشمندا دارن چه غلطی میکنن که هنوز نمیشه همچین چیزی رو با پرینتر سه بعدی ساخت 🥺🥺
😍6
Listen to صدیق تعریف - تصنیف قدیمی by Musique Iran 4 on #SoundCloud
https://on.soundcloud.com/NymBR
#آهنگ
https://on.soundcloud.com/NymBR
#آهنگ
SoundCloud
تصنیف قدیمی
تصنیف قدیمی
صدیق تعریف
اردشیر کامکار
کیوان ساکت
ارژنگ کامکار
صدیق تعریف
اردشیر کامکار
کیوان ساکت
ارژنگ کامکار
❤4
زندگی به عنوان سرویس
توی مترو نشستم، گفتم خلاصه کتاب "کد تمیز" نوشته رابرت مارتین(عمو باب) رو یه مروری کنم. اینجا هم مینویسمشون 😁 کدی که مینویسید باید در نهایت سادگی باشه و برای دیگران خیلی راحت قابل فهم باشه. یعنی اگر کدی که شما نوشتید رو دادن به شخص دیگهای که توسعه بده بتونه…
قسمت دوم این رو من بنویسم تا وقتم خالیه و سوار مترو هستم😁
بخش دوم بیشتر اشاره به قوائد طراحی داره. طراحی اینجا یعنی طراحی کد، طراحی سطح تکنیکال. چطور یه ماژول، کلاس یا سرویس رو تمیز طراحی کنیم؟
1- متغیرها یا مقادیر قابل کانفیگ کردن رو در بالاترین سطح نگه دارید. مثلا فرض کنید شما میخواید هر کاربر نتونه در دقیقه بیشتر از 10 بار به برنامه درخواست بفرسته. شما این عدد 10 رو میتونید به عنوان یک متغیر محلی داخل همون کلاس یا تابعی که این وظیفه رو داره نگه دارید. اما این شکلی تمیز نیست. چرا؟ چون این مقدار احتمالا از چندین جا نیاز به خوندنش وجود داره یا حتی میشه هر لحظه تغییرش داد. حالا به ازای هربار که بخواید بخونیدش مجبورید یک شی از کلاس بسازید و.... یا اگر چند جای مختلف این مقدار رو به صورت محلی تعیین کرده باشید، هر بار بخواید تغییر بدید باید همه رو تغییر بدید و ممکنه جایی رو فراموش کنید. این تیپ متغیرها بهتره توی فایلهای سطح بالا نگه داشته بشن. مثلا توی فایلهای .conf یا .env مثلا. حتی شاید از این هم بالاتر. مثلا توی متغیرهای pod توی k8s یا متغیرهای Container توی داکر.
2- داخل هر فایل فقط و فقط یک کلاس بنویسید. یعنی اصل تک وظیفگی رو حتی برای فایل هم رعایت کنید. اگر مجبور شدین تحت هر شرایطی چند کلاس رو توی یک فایل بگذارید، سعی کنید کلاسهای فرعیای که میدارید توی فایل صرفا کلاسهای دیتا مدل باشن. یعنی کلاسهایی که صرفا ویژگیها رو نگه میدارن و متد ندارن یا اگه دارن متدهاشون عملکرد آنچنانی ندارن.
3- هر کلاس باید صرفا، فقط و فقط وابستگیهای خودش رو بدونه و اگر قراره داخل یک کلاس از یک کلاس دیگه استفاده کنید و برای استفاده از کلاس دوم نیاز دارید داده یا کلاسهای دیگهای رو استفاده کنید، این دادهها و کلاسها باید توی همون کلاس بیان نه کلاس بالاتر. چرا؟ اولا کدتون کثیف نمیشه. دوما کلاس بالایی سبک میشه. سوما به مشکلات طراحی مثل وابستگی حلقهای(Circular Dependency) برنمیخورید. چهارما اگه بخواید از کلاس بالایی جایی استفاده کنید نیاز ندارید که وابستگیهای کلاسهای داخلی رو هم فراهم کنید. پنجما اسکوپینگ پروژه به واسطه اون همه وابستگی توده مانند به هم نمیخوره.
4- کدهایی که قراره به صورت چند نخی(Multi Thread) اجرا کنید رو از سایر کدها تا حد ممکن ایزوله کنید تا مشکلاتی مثل مشکلات نقاط مشترک(بنبست، قحطی، رقابت، مشکلات خواندن و نوشتن همزمان و..) تا حد امکان کاهش پیدا کنن.
5- از over-configurability جلوگيری کنید. یعنی یه کلاس یا سرویس یا هرچیزی که میخواید توسعه بدید رو هی نیاید براش آپشن قابل کانفیگ کردن در نظر بگیرید! برنامهنویسی که بخواد از کلاس شما استفاده کنه خیلی اذیت میشه و این باعث میشه رفتار سرویس یا کلاستون خیلی متغییر و غیرقابل پیشبینی بشه.
6- از تزریق وابستگی استفاده کنید. این مورد شیشم خیییلی چیز مهم و بزرگیه و خودم هم حتی بعد از 4 سال یک درک کاملا صحیح، درست و روشن ازش ندارم. میتونم ازش استفاده کنم و 90% سوراخ سنبههاش رو هم گشتم و بلدم ولی هنوز احساس میکنم خودم نمیتونم یه سیستم DI دیزاین کنم. برای همین توصیه میکنم خودتون برید بخونید و روی سواد ناقص من حساب باز نکنید.
این بخش توی کتاب در همین حد اشاره شده ولی مبسوط. اما حتی اگه کل کتابهای دنیا درمورد طراحی و ذهن طراح نوشته بشن، باز هم نمیتونن همه چیز رو پوشش بدن.
#software
#نرم_افزار
#یادگیری
بخش دوم بیشتر اشاره به قوائد طراحی داره. طراحی اینجا یعنی طراحی کد، طراحی سطح تکنیکال. چطور یه ماژول، کلاس یا سرویس رو تمیز طراحی کنیم؟
1- متغیرها یا مقادیر قابل کانفیگ کردن رو در بالاترین سطح نگه دارید. مثلا فرض کنید شما میخواید هر کاربر نتونه در دقیقه بیشتر از 10 بار به برنامه درخواست بفرسته. شما این عدد 10 رو میتونید به عنوان یک متغیر محلی داخل همون کلاس یا تابعی که این وظیفه رو داره نگه دارید. اما این شکلی تمیز نیست. چرا؟ چون این مقدار احتمالا از چندین جا نیاز به خوندنش وجود داره یا حتی میشه هر لحظه تغییرش داد. حالا به ازای هربار که بخواید بخونیدش مجبورید یک شی از کلاس بسازید و.... یا اگر چند جای مختلف این مقدار رو به صورت محلی تعیین کرده باشید، هر بار بخواید تغییر بدید باید همه رو تغییر بدید و ممکنه جایی رو فراموش کنید. این تیپ متغیرها بهتره توی فایلهای سطح بالا نگه داشته بشن. مثلا توی فایلهای .conf یا .env مثلا. حتی شاید از این هم بالاتر. مثلا توی متغیرهای pod توی k8s یا متغیرهای Container توی داکر.
2- داخل هر فایل فقط و فقط یک کلاس بنویسید. یعنی اصل تک وظیفگی رو حتی برای فایل هم رعایت کنید. اگر مجبور شدین تحت هر شرایطی چند کلاس رو توی یک فایل بگذارید، سعی کنید کلاسهای فرعیای که میدارید توی فایل صرفا کلاسهای دیتا مدل باشن. یعنی کلاسهایی که صرفا ویژگیها رو نگه میدارن و متد ندارن یا اگه دارن متدهاشون عملکرد آنچنانی ندارن.
3- هر کلاس باید صرفا، فقط و فقط وابستگیهای خودش رو بدونه و اگر قراره داخل یک کلاس از یک کلاس دیگه استفاده کنید و برای استفاده از کلاس دوم نیاز دارید داده یا کلاسهای دیگهای رو استفاده کنید، این دادهها و کلاسها باید توی همون کلاس بیان نه کلاس بالاتر. چرا؟ اولا کدتون کثیف نمیشه. دوما کلاس بالایی سبک میشه. سوما به مشکلات طراحی مثل وابستگی حلقهای(Circular Dependency) برنمیخورید. چهارما اگه بخواید از کلاس بالایی جایی استفاده کنید نیاز ندارید که وابستگیهای کلاسهای داخلی رو هم فراهم کنید. پنجما اسکوپینگ پروژه به واسطه اون همه وابستگی توده مانند به هم نمیخوره.
4- کدهایی که قراره به صورت چند نخی(Multi Thread) اجرا کنید رو از سایر کدها تا حد ممکن ایزوله کنید تا مشکلاتی مثل مشکلات نقاط مشترک(بنبست، قحطی، رقابت، مشکلات خواندن و نوشتن همزمان و..) تا حد امکان کاهش پیدا کنن.
5- از over-configurability جلوگيری کنید. یعنی یه کلاس یا سرویس یا هرچیزی که میخواید توسعه بدید رو هی نیاید براش آپشن قابل کانفیگ کردن در نظر بگیرید! برنامهنویسی که بخواد از کلاس شما استفاده کنه خیلی اذیت میشه و این باعث میشه رفتار سرویس یا کلاستون خیلی متغییر و غیرقابل پیشبینی بشه.
6- از تزریق وابستگی استفاده کنید. این مورد شیشم خیییلی چیز مهم و بزرگیه و خودم هم حتی بعد از 4 سال یک درک کاملا صحیح، درست و روشن ازش ندارم. میتونم ازش استفاده کنم و 90% سوراخ سنبههاش رو هم گشتم و بلدم ولی هنوز احساس میکنم خودم نمیتونم یه سیستم DI دیزاین کنم. برای همین توصیه میکنم خودتون برید بخونید و روی سواد ناقص من حساب باز نکنید.
این بخش توی کتاب در همین حد اشاره شده ولی مبسوط. اما حتی اگه کل کتابهای دنیا درمورد طراحی و ذهن طراح نوشته بشن، باز هم نمیتونن همه چیز رو پوشش بدن.
#software
#نرم_افزار
#یادگیری
👍6
Listen to تصنیف آتش دل / خواننده: مهدیه محمدخانی by Mahdieh Mohammadkhani on #SoundCloud
https://on.soundcloud.com/7NGKs
آتشی در سینه دارم جاودانی
عمر من مرگیست نامش زندگانی...
https://on.soundcloud.com/7NGKs
آتشی در سینه دارم جاودانی
عمر من مرگیست نامش زندگانی...
SoundCloud
تصنیف آتش دل / خواننده: مهدیه محمدخانی
تصنیف آتش دل
آهنگساز:مرتضی نی داوود
تنظیم : مجید درخشانی
خواننده : مهدیه محمدخانی
شاعر: پژمان بختیاری
آلبوم : دریادل
آهنگساز:مرتضی نی داوود
تنظیم : مجید درخشانی
خواننده : مهدیه محمدخانی
شاعر: پژمان بختیاری
آلبوم : دریادل
❤1
امروز شرکت رو پیچوندم نشستم یه کار باحال کردم. از اون جایی که میدونم خیلی مشتاقید بدونید چکار کردم، نشستم براتون نوشتم ولی خیلی طولانی شد بردمش توی Draftهام🤦♂️
احتمالا براتون مطلبش رو بنویسم. ای کاش میتونستم وویس بدم بهتون. وویس بدم؟😂
احتمالا براتون مطلبش رو بنویسم. ای کاش میتونستم وویس بدم بهتون. وویس بدم؟😂
👍4
زندگی به عنوان سرویس
امروز شرکت رو پیچوندم نشستم یه کار باحال کردم. از اون جایی که میدونم خیلی مشتاقید بدونید چکار کردم، نشستم براتون نوشتم ولی خیلی طولانی شد بردمش توی Draftهام🤦♂️ احتمالا براتون مطلبش رو بنویسم. ای کاش میتونستم وویس بدم بهتون. وویس بدم؟😂
چشم من اینو امشب براتون مینویسم. بعد از مدتی هم که اجازه انتشار گرفتم کدش رو براتون میذارم رو گیتهاب که ببینید
👍4
Forwarded from Backend Life
https://soundcloud.com/banoo-003/pz08fwrzir60?si=8aa62e15742144e2b3f6d49cbc915548&utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing
باز یه بغضی گلومو گرفته
باز همون حس ز درد جدایی
من امروز کجا و تو امروز کجایی
#آهنگ - خواجه امیری
باز یه بغضی گلومو گرفته
باز همون حس ز درد جدایی
من امروز کجا و تو امروز کجایی
#آهنگ - خواجه امیری
SoundCloud
کجایی
من با خیلی از شما بیرون از این کانال دوست هستم و هر روز یا شما رو میبینم یا باهاتون صحبت میکنم. یه موردی رو که دارم میبینم اینه که اکثرا دارید میگید من شب و روز دارم کار میکنم و زور میزنم که چیزای جدید یاد بگیرم اما هنوز هیچی بلد نیستم، یا از سرعتم راضی نیستم یا حس میکنم خیلی از دیگران عقبتر هستم و... .
بااااااااباااااا مگه کلاس درسه؟ شما نباید به این مسیر مثل یک جاده نگاه کنید که یه مقصدی توش وجود داره! اصلا اگه بتونید اینجور تصور کنید من واقعا شوکه میشم. چطور میتونید توی ذهنتون یک نقطه رو در نظر بگیرید و بگید وقتی به اینجا رسیدم آدم خفنی هستم؟
فرض کنید رفتید و تمام اون تکنولوژیهایی که توی ذهنتون هست و فکر میکنید اگه یاد بگیری آدم خفنی میشید رو یاد گرفتید. حالا فرض کنید توی کمتر از چند ماه همه اونها منقضی میشن! خب بعد؟ خفونت شما از بین رفته؟ طبق استدلال شماها بله از بین رفته.
وقتی شما حرفهای رو یاد میگیرید نباید این طور فکر کنید که توی یک جاده مسابقه هستید و از حریفتون عقبید یا چه میدونم از زمانبندی عقب هستید. اصلا این چیزا معنا نداره که.
یه شعری هست که میگه:
یاران ره عشق منزل ندارد
این بحر مواج ساحل ندارد
جای این که حرص سرعت و رسیدن به مقصد رو بخورید(مقصدی که اصلا وجود نداره!) چرا از مسیر لذت نمیبرید؟ یعنی الان تمام چیزایی که یاد گرفتید رو به کار بردید و خم و چمشون دستتونه؟ به حضرت عباس عمرا!
به جای این که به راه به چشم یک جاده نگاه کنید که کلی فاکتور زمان و رقیب و... بیاد توی ذهنتون، بهش به چشم غذا خوردن نگاه کنید. هر کس به اندازه توانش غذا میخوره، هدف این نیست که زود تموم کنید. هدف اینه که اولا سیر بشید، دوما بهترین غذاها رو استفاده کنید که براتون بیشترین فایده رو داشته باشه و سوما ازش لذت ببرید.
نرمافزار یعنی خلاقیت محض. توی نرمافزار شما واقعا خالق هستید. نمیخواید از این قدرت خلق کردن لذت ببرید؟ نمیخواید خلاقیت خودتونو افزایش بدید؟ فقط میخواید چیزای زیادی یاد بگیرید؟!
سعی کنید هر چیز رو به جا و به اندازه یاد بگیرید. چیزایی که یاد میگیرید رو استفاده کنید نه این که صرفا یه چیزی رو یاد بگیرید و بندازید گوشه مغزتون. وقتی شما قبل از این که چیزی رو نیاز داشته باشید میرید دنبال یادگیریش مثل این میمونه که شما یه چکش گیر آوردی و در به در دنبال میخ میگردی بزنی تو سرش! در صورتی که اول باید نیاز پیدا کنی که یه میخ رو بزنی بعد بری دنبال چکش!
با آرامش و عمیق گام بردارید ممکنه از نظر خودتون کند باشه اما این فقط برای گامهای اولیه هستش بعدش میبینید که شما چقدر سریع چیزای پیشرفته رو میفهمید و البته چقدر آدم عمیق و موثری هستید.
بااااااااباااااا مگه کلاس درسه؟ شما نباید به این مسیر مثل یک جاده نگاه کنید که یه مقصدی توش وجود داره! اصلا اگه بتونید اینجور تصور کنید من واقعا شوکه میشم. چطور میتونید توی ذهنتون یک نقطه رو در نظر بگیرید و بگید وقتی به اینجا رسیدم آدم خفنی هستم؟
فرض کنید رفتید و تمام اون تکنولوژیهایی که توی ذهنتون هست و فکر میکنید اگه یاد بگیری آدم خفنی میشید رو یاد گرفتید. حالا فرض کنید توی کمتر از چند ماه همه اونها منقضی میشن! خب بعد؟ خفونت شما از بین رفته؟ طبق استدلال شماها بله از بین رفته.
وقتی شما حرفهای رو یاد میگیرید نباید این طور فکر کنید که توی یک جاده مسابقه هستید و از حریفتون عقبید یا چه میدونم از زمانبندی عقب هستید. اصلا این چیزا معنا نداره که.
یه شعری هست که میگه:
یاران ره عشق منزل ندارد
این بحر مواج ساحل ندارد
جای این که حرص سرعت و رسیدن به مقصد رو بخورید(مقصدی که اصلا وجود نداره!) چرا از مسیر لذت نمیبرید؟ یعنی الان تمام چیزایی که یاد گرفتید رو به کار بردید و خم و چمشون دستتونه؟ به حضرت عباس عمرا!
به جای این که به راه به چشم یک جاده نگاه کنید که کلی فاکتور زمان و رقیب و... بیاد توی ذهنتون، بهش به چشم غذا خوردن نگاه کنید. هر کس به اندازه توانش غذا میخوره، هدف این نیست که زود تموم کنید. هدف اینه که اولا سیر بشید، دوما بهترین غذاها رو استفاده کنید که براتون بیشترین فایده رو داشته باشه و سوما ازش لذت ببرید.
نرمافزار یعنی خلاقیت محض. توی نرمافزار شما واقعا خالق هستید. نمیخواید از این قدرت خلق کردن لذت ببرید؟ نمیخواید خلاقیت خودتونو افزایش بدید؟ فقط میخواید چیزای زیادی یاد بگیرید؟!
سعی کنید هر چیز رو به جا و به اندازه یاد بگیرید. چیزایی که یاد میگیرید رو استفاده کنید نه این که صرفا یه چیزی رو یاد بگیرید و بندازید گوشه مغزتون. وقتی شما قبل از این که چیزی رو نیاز داشته باشید میرید دنبال یادگیریش مثل این میمونه که شما یه چکش گیر آوردی و در به در دنبال میخ میگردی بزنی تو سرش! در صورتی که اول باید نیاز پیدا کنی که یه میخ رو بزنی بعد بری دنبال چکش!
با آرامش و عمیق گام بردارید ممکنه از نظر خودتون کند باشه اما این فقط برای گامهای اولیه هستش بعدش میبینید که شما چقدر سریع چیزای پیشرفته رو میفهمید و البته چقدر آدم عمیق و موثری هستید.
👍4❤2
download.png
9.2 MB
داشتم دنبال یه چیزی میگشتم یکی از کارایی که کردم رو دیدم. تحلیل کامنتهای کاربرا برای اپلیکیشنهای معروف کافه بازار :)
یکی از کارای سادهای که کردم به دست آوردن ابر کلمات(Word Cloud) برای کامنتها بود. این ابر برای 9 تا از معروفها است گفتم بذارم اینجا :)
اسامی اپها بالای عکسها هستن منتها فونتشون سیاهه. چون باقی تحلیلها ممکنه حساسیتزا باشن من فعلا این رو براتون میذارم تا یه زمانی که وقت خالی پیدا کردم بتونم دادههای حساس رو فیلتر کنم و باقی تحلیلها رو هم براتون بذارم. قطعا هم به فکر نوشتن گزارش کار و انتشار کدها هستم:)
یکی از کارای سادهای که کردم به دست آوردن ابر کلمات(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.