Forwarded from a pessimistic researcher (Kc)
حتی یک فریم از این خاطره فراموشم نشد
Forwarded from DevTwitter | توییت برنامه نویسی
چطور با استفاده از custom casts در لاراول دادهها را به شکل دلخواه درآوریم؟
لینک مقاله
@DevTwitter | <Reza Annabestani/>
لینک مقاله
@DevTwitter | <Reza Annabestani/>
Forwarded from Software Engineer Labdon
توافق روی نام گذاری ها از نون شب واجب تره!!
یه جمله جالب توی کتاب clean code دیدم که نوشته بود، زمانی که میخواید توابع یا متغیرهاتون رو نامگذاری کنید اون قدر حساسیت به خرج بدید که انگار دارید برای یک نوزاد تازه به دنیا اومده اسم انتخاب میکنید.
یک نکته که داخل تیم هم خیلی مهمه اینه که برای یک مفهوم، از چند ورب مختلف استفاده نشه. مثلا برای ایجاد کردن فرضا محصول میشه همه ورب های add, create, insert, make, ... رو استفاده کرد. برای اینکه ابهام و سردرگمی پیش نیاد همیشه سعی کنید توی پروژتون برای همه entity ها از یک ورب یکسان استفاده کنید و این رو توی تیمتون هم باهم توافق کنید که همه از اون ورب استفاده کنن.
این مساله به ظاهر کوچیک خیلی خیلی مهمه لطفا رعایت کنید.
| <Pouya Farshidnia/>
➖➖➖➖➖➖➖➖
https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
یه جمله جالب توی کتاب clean code دیدم که نوشته بود، زمانی که میخواید توابع یا متغیرهاتون رو نامگذاری کنید اون قدر حساسیت به خرج بدید که انگار دارید برای یک نوزاد تازه به دنیا اومده اسم انتخاب میکنید.
یک نکته که داخل تیم هم خیلی مهمه اینه که برای یک مفهوم، از چند ورب مختلف استفاده نشه. مثلا برای ایجاد کردن فرضا محصول میشه همه ورب های add, create, insert, make, ... رو استفاده کرد. برای اینکه ابهام و سردرگمی پیش نیاد همیشه سعی کنید توی پروژتون برای همه entity ها از یک ورب یکسان استفاده کنید و این رو توی تیمتون هم باهم توافق کنید که همه از اون ورب استفاده کنن.
این مساله به ظاهر کوچیک خیلی خیلی مهمه لطفا رعایت کنید.
| <Pouya Farshidnia/>
➖➖➖➖➖➖➖➖
https://news.1rj.ru/str/addlist/KpzXaiSpKENkMGM0
Forwarded from Meitix
سه مفهوم بنیادین در دنیای ایزوله سازی در لینوکس 🐧 وجود داره:
1️⃣ cgroup (Control Groups)
این ابزار به لینوکس اجازه میده منابع سیستم (مثل CPU، RAM، دیسک و شبکه) رو مدیریت و محدود کنه. مثلا شما میتونید یه گروه خاص از فرآیندها رو طوری محدود کنید که بیشتر از ۱۰٪ CPU استفاده نکنند. داکر از این قابلیت استفاده میکنه تا مطمئن شه هر کانتینر فقط منابع مشخصی رو مصرف کنه و از دسترس منابع بقیه کانتینرها خارج نشه.
2️⃣ namespace
اNamespace یکی از ستونهای اصلی ایزولهسازی در لینوکسه. این قابلیت به شما اجازه میده یه فرآیند رو در یه فضای ایزوله شده اجرا کنید. مثلا فرآیندهای کانتینر شما فقط فایلسیستم، شبکه، و پروسسهای مخصوص خودشون رو میبینند و به بقیه محیط سیستم دسترسی ندارند. داکر از namespace استفاده میکنه تا حس "ماشین مجازی" بودن رو به کانتینرها بده، در حالی که در واقع همه چیز روی همون کرنل اصلی اجرا میشه.
3️⃣ unionfs
اUnionFS به شما اجازه میده چند لایه فایلسیستم رو روی هم سوار کنید، انگار که یه لایه واحد هستند. این قابلیت برای کانتینرها خیلی کاربردیه چون میتونید یه لایه پایه (مثل فایلسیستم اوبونتو) داشته باشید و تغییرات هر کانتینر رو به صورت جداگانه در یه لایه دیگه ذخیره کنید. این کار باعث صرفهجویی در حافظه و کارایی بهتر میشه.
@meiti_x 💻
1️⃣ cgroup (Control Groups)
این ابزار به لینوکس اجازه میده منابع سیستم (مثل CPU، RAM، دیسک و شبکه) رو مدیریت و محدود کنه. مثلا شما میتونید یه گروه خاص از فرآیندها رو طوری محدود کنید که بیشتر از ۱۰٪ CPU استفاده نکنند. داکر از این قابلیت استفاده میکنه تا مطمئن شه هر کانتینر فقط منابع مشخصی رو مصرف کنه و از دسترس منابع بقیه کانتینرها خارج نشه.
2️⃣ namespace
اNamespace یکی از ستونهای اصلی ایزولهسازی در لینوکسه. این قابلیت به شما اجازه میده یه فرآیند رو در یه فضای ایزوله شده اجرا کنید. مثلا فرآیندهای کانتینر شما فقط فایلسیستم، شبکه، و پروسسهای مخصوص خودشون رو میبینند و به بقیه محیط سیستم دسترسی ندارند. داکر از namespace استفاده میکنه تا حس "ماشین مجازی" بودن رو به کانتینرها بده، در حالی که در واقع همه چیز روی همون کرنل اصلی اجرا میشه.
3️⃣ unionfs
اUnionFS به شما اجازه میده چند لایه فایلسیستم رو روی هم سوار کنید، انگار که یه لایه واحد هستند. این قابلیت برای کانتینرها خیلی کاربردیه چون میتونید یه لایه پایه (مثل فایلسیستم اوبونتو) داشته باشید و تغییرات هر کانتینر رو به صورت جداگانه در یه لایه دیگه ذخیره کنید. این کار باعث صرفهجویی در حافظه و کارایی بهتر میشه.
@meiti_x 💻
Forwarded from Meitix
اینا core foundation داکره😅
داکر خودش تکنولوژیهای زیرساختی مثل namespace و cgroup رو اختراع نکرده، اما قدرتش در اینه که این ابزارهای پراکنده رو در قالب یک پلتفرم یکپارچه، کاربرپسند و نوآورانه ارائه داده. نوآوری داکر بیشتر در تجربه کاربری، قابلیت انتقالپذیری و سادهسازی فرایندهای پیچیدهست مثل ایجاد نتورک یا مدیریت volume هاست، نه در ایجاد ابزارهای کاملاً جدید.
و قسمت خیلی مهم تر اینه که ممکنه داکر رو با vm یکی بدونیم ولی فرقشون خیلی هست
@meiti_x 💻
داکر خودش تکنولوژیهای زیرساختی مثل namespace و cgroup رو اختراع نکرده، اما قدرتش در اینه که این ابزارهای پراکنده رو در قالب یک پلتفرم یکپارچه، کاربرپسند و نوآورانه ارائه داده. نوآوری داکر بیشتر در تجربه کاربری، قابلیت انتقالپذیری و سادهسازی فرایندهای پیچیدهست مثل ایجاد نتورک یا مدیریت volume هاست، نه در ایجاد ابزارهای کاملاً جدید.
و قسمت خیلی مهم تر اینه که ممکنه داکر رو با vm یکی بدونیم ولی فرقشون خیلی هست
@meiti_x 💻
Forwarded from DevTwitter | توییت برنامه نویسی
Forwarded from DevTwitter | توییت برنامه نویسی
یک برنامهنویس با تجربه به این 17 مورد توجه مینماید:
0- عاشق کدی که نوشتی نشو، همیشه باید سعی کنی بهترش کنی
1- در شرایط اورژانسی میفهمی پیچیدگی الکی درست کردن چطوری پاره میکند
2- هر روش و تکنولوژی بالاخره مزایا و معایب خودش را دارد و قطعاً هر چیزی Trade-off های خودش را دارد - حواست باشد، بهترینی وجود ندارد
3- هر خط کدی که مینویسی برای کسی یا جایی یک سرمایه است - شاید هم برای خودت
4- همه میگن کدهای بقیه کثافت است
5- بیخودی Dependency ایجاد نکنید
6- درست کد بنویسید، دعوا و درگیری و متوجه نشدن کم میشود
7- حالا یکم Comment بنویسید، جای دوری نمیرود، ولی کد خودش باید کامنت خودش باشد
8- سر یاد گرفتن چیزهای جدید مقاومت نکنید، لازم است
9- از Code Review نترسید، سبب انتشار و Share شدن دانش میگردد
10- همیشه maintainability را در نظر داشته باشید - شما در حال سیمانریزی و ایجاد یک چیزی که هرگز دست نخورد نیستید
11- جایی لازم بود، کمک بگیرید
12 - اصل مشکل را در کد حل کنید نه فقط یک جنبه از خطا را
13- هیچ پروژه و برنامهای خلاص نخواهد شد، همیشه هست
14- زمانبندی دادن با قول دادن و قسم خوردن یکی نیست، فقط یک احتمال است
15- طراحی و مهندسی سیستم را همان ابتدا مستند سازی کنید
16- پروژه را بدهید بیرون سریع، بعد آرام آرام با یک برنامه مشخص کاملش کنید
@DevTwitter | <Ali Kolahdoozan/>
0- عاشق کدی که نوشتی نشو، همیشه باید سعی کنی بهترش کنی
1- در شرایط اورژانسی میفهمی پیچیدگی الکی درست کردن چطوری پاره میکند
2- هر روش و تکنولوژی بالاخره مزایا و معایب خودش را دارد و قطعاً هر چیزی Trade-off های خودش را دارد - حواست باشد، بهترینی وجود ندارد
3- هر خط کدی که مینویسی برای کسی یا جایی یک سرمایه است - شاید هم برای خودت
4- همه میگن کدهای بقیه کثافت است
5- بیخودی Dependency ایجاد نکنید
6- درست کد بنویسید، دعوا و درگیری و متوجه نشدن کم میشود
7- حالا یکم Comment بنویسید، جای دوری نمیرود، ولی کد خودش باید کامنت خودش باشد
8- سر یاد گرفتن چیزهای جدید مقاومت نکنید، لازم است
9- از Code Review نترسید، سبب انتشار و Share شدن دانش میگردد
10- همیشه maintainability را در نظر داشته باشید - شما در حال سیمانریزی و ایجاد یک چیزی که هرگز دست نخورد نیستید
11- جایی لازم بود، کمک بگیرید
12 - اصل مشکل را در کد حل کنید نه فقط یک جنبه از خطا را
13- هیچ پروژه و برنامهای خلاص نخواهد شد، همیشه هست
14- زمانبندی دادن با قول دادن و قسم خوردن یکی نیست، فقط یک احتمال است
15- طراحی و مهندسی سیستم را همان ابتدا مستند سازی کنید
16- پروژه را بدهید بیرون سریع، بعد آرام آرام با یک برنامه مشخص کاملش کنید
@DevTwitter | <Ali Kolahdoozan/>
Forwarded from IRCF | اینترنت آزاد برای همه
وزیر علوم از درخواست به وزارت ارتباطات برای بازگشایی یوتیوب برای اساتید و دانشجویان خبر داد.
این درخواست از وزارت ارتباطات درحالی است که پیش از این ستار هاشمی گفته بود اعتقادی به #اینترنت_طبقاتی ندارد.
© fanzyMag
🔍 ircf.space
@ircfspace
این درخواست از وزارت ارتباطات درحالی است که پیش از این ستار هاشمی گفته بود اعتقادی به #اینترنت_طبقاتی ندارد.
© fanzyMag
🔍 ircf.space
@ircfspace
Forwarded from IRCF | اینترنت آزاد برای همه
با وجود تکذیب ارتباط وزارت ارتباطات با ارائه #اینترنت_طبقاتی برای دانشجویان و اساتید از سوی مدیر روابط عمومی اینوزارتخانه و تأکید بر اینکه اینموضوع بر اساس توافق میان وزارت علوم و دادستانی و مطابق با آییننامه کارگروه تعیین مصادیق انجام شده، شواهد نشان میدهد که اینترنت طبقاتی همچنان در قالب پروژههای کوچکتر درحال اجراست.
© filterbaan
🔍 ircf.space
@ircfspace
© filterbaan
🔍 ircf.space
@ircfspace
Forwarded from کانال مهرداد لینوکس (Mehrdad Linux)
⁉️برای "تغییر نام فایل" مخصوصا به صورت دسته ای و گروهی در لینوکس از چه ابزاری استفاده میکنید ؟
ابزار های mv،rename خوب هستند
✅ ولی تا به حال ابزار mmv یا گرافیکی مثل Bulky را امتحان کردید ؟
💠 ابزار گرافیکی Bulky
در بیشتر میزکارها Cinnamon, MATE, GNOME, Xfce و ... به صورت پیشفرض نصب است
پشتیبانی بسیار عالی از regex و انواع Pattern داره
کافیه فایل ها را به صورت گروهی انتخاب کنید و دکمه Rename را بزنید
💠 ابزار mmv یا multiple move
در اکثر نصاب ها مثل apt یا yum یا pacman , ... به نام mmv هست
پیشنهاد شما ؟
❤️ ممنون از حمایت هاتون 💐🌺
#linux
ابزار های mv،rename خوب هستند
✅ ولی تا به حال ابزار mmv یا گرافیکی مثل Bulky را امتحان کردید ؟
برای Rename گروهی فایل ها استفاده از regex یا Pattern کار را ساده میکنه
یک بار دستور را میزنید و تمام n فایل شما با الگوی از قبل تعریف شده شما تغییر نام پیدا میکنند
💠 ابزار گرافیکی Bulky
در بیشتر میزکارها Cinnamon, MATE, GNOME, Xfce و ... به صورت پیشفرض نصب است
پشتیبانی بسیار عالی از regex و انواع Pattern داره
کافیه فایل ها را به صورت گروهی انتخاب کنید و دکمه Rename را بزنید
💠 ابزار mmv یا multiple move
در اکثر نصاب ها مثل apt یا yum یا pacman , ... به نام mmv هست
mmv [options] source_pattern target_pattern الگوی کلی
mmv '*.txt' '#1.md' مثال
mmv 'file*.txt' 'document#1.txt' استفاده Pattern
mmv '*.jpg' '2025_#1.jpg' استفاده Prefix یا Suffix
mmv 'data_0*.txt' 'data_#1.txt' استفاده wildcard patterns
mmv -r '*.txt' '#1.txt' برای دایرکتوری
پیشنهاد شما ؟
❤️ ممنون از حمایت هاتون 💐🌺
#linux
Forwarded from Ninja Learn | نینجا لرن
تو پست بعدی درمورد این میخوام حرف بزنم که چرا بعضی ها میگن پایتون شی گرا نیست
Forwarded from DevTwitter | توییت برنامه نویسی
توی یه پست تازه توی Medium درباره تستهای Benchmark توی Go نوشتم.
توی این پست، یه توضیح کامل و کاربردی دادم که تستهای Benchmark دقیقاً چیا هستن و کجا به درد میخورن. برای درک بهتر موضوع، یه تست ساده هم برای محاسبه فاکتوریل نوشتیم و نتایج رو بررسی کردیم.
https://medium.com/@debug-ing/benchmark-testing-in-go-a-practical-guide-2900e008ce43
@DevTwitter | <Mahdi Mohammadi/>
توی این پست، یه توضیح کامل و کاربردی دادم که تستهای Benchmark دقیقاً چیا هستن و کجا به درد میخورن. برای درک بهتر موضوع، یه تست ساده هم برای محاسبه فاکتوریل نوشتیم و نتایج رو بررسی کردیم.
https://medium.com/@debug-ing/benchmark-testing-in-go-a-practical-guide-2900e008ce43
@DevTwitter | <Mahdi Mohammadi/>
🔥1
Forwarded from Meitix
داکر همون VM نیست!
واقعیت اینه که اینا دو تا مفهوم کاملاً متفاوتن. ماشین مجازی یه سیستمعامل کامله که روی یه نرمافزار مثل VMware یا VirtualBox اجرا میشه. این یعنی هر VM برای خودش یه سیستمعامل جدا داره، کرنل خودش رو اجرا میکنه و منابع سختافزاری مثل CPU و رم رو شبیهسازی میکنه. همین کار باعث میشه VMها نسبتاً سنگین باشن و زمان زیادی برای بوت شدنشون لازم باشه.
اما داکر یه چیز دیگهست. کانتینرهای داکر به جای داشتن سیستمعامل مستقل، از همون کرنل سیستمعامل میزبان استفاده میکنن. این یعنی وقتی شما یه کانتینر داکر رو اجرا میکنید، فقط اپلیکیشن و فایلهای مورد نیازش رو میاره، نه یه سیستمعامل کامل. همین موضوع باعث میشه کانتینرها خیلی سبکتر و سریعتر باشن.
از نظر کاربرد هم تفاوت زیادی دارن. ماشینهای مجازی بیشتر برای اجرای سیستمعاملهای مختلف روی یه سختافزار استفاده میشن، مثلاً اگه بخواید ویندوز و لینوکس رو کنار هم داشته باشید. ولی داکر برای ایزولهسازی و اجرای سریع اپلیکیشنها طراحی شده. شما میتونید یه اپلیکیشن رو با تمام وابستگیهاش توی یه کانتینر اجرا کنید، بدون اینکه نگران تداخل با بقیه برنامهها باشید.
پس دفعه بعد که کسی گفت داکر همون VMه، با خیال راحت توضیح بدید که داکر سبکه، سریعتره و هدفش اجرای اپلیکیشنهاست، نه شبیهسازی سختافزار. 🚀
@meiti_x 💻
واقعیت اینه که اینا دو تا مفهوم کاملاً متفاوتن. ماشین مجازی یه سیستمعامل کامله که روی یه نرمافزار مثل VMware یا VirtualBox اجرا میشه. این یعنی هر VM برای خودش یه سیستمعامل جدا داره، کرنل خودش رو اجرا میکنه و منابع سختافزاری مثل CPU و رم رو شبیهسازی میکنه. همین کار باعث میشه VMها نسبتاً سنگین باشن و زمان زیادی برای بوت شدنشون لازم باشه.
اما داکر یه چیز دیگهست. کانتینرهای داکر به جای داشتن سیستمعامل مستقل، از همون کرنل سیستمعامل میزبان استفاده میکنن. این یعنی وقتی شما یه کانتینر داکر رو اجرا میکنید، فقط اپلیکیشن و فایلهای مورد نیازش رو میاره، نه یه سیستمعامل کامل. همین موضوع باعث میشه کانتینرها خیلی سبکتر و سریعتر باشن.
از نظر کاربرد هم تفاوت زیادی دارن. ماشینهای مجازی بیشتر برای اجرای سیستمعاملهای مختلف روی یه سختافزار استفاده میشن، مثلاً اگه بخواید ویندوز و لینوکس رو کنار هم داشته باشید. ولی داکر برای ایزولهسازی و اجرای سریع اپلیکیشنها طراحی شده. شما میتونید یه اپلیکیشن رو با تمام وابستگیهاش توی یه کانتینر اجرا کنید، بدون اینکه نگران تداخل با بقیه برنامهها باشید.
پس دفعه بعد که کسی گفت داکر همون VMه، با خیال راحت توضیح بدید که داکر سبکه، سریعتره و هدفش اجرای اپلیکیشنهاست، نه شبیهسازی سختافزار. 🚀
@meiti_x 💻
Forwarded from Ninja Learn | نینجا لرن
خب خب خب شیگرایی در پایتون🚀
شیگرایی تو پایتون فقط محدود به تعریف کلاسها و متدهای ساده نیست. این زبان امکانات پیشرفتهتری هم داره که با یاد گرفتنشون میتونید کدهای بهینهتر، استانداردتر و انعطافپذیرتری بنویسید. بیاید چند تا از این مفاهیم رو بررسی کنیم.
1⃣ متاکلاسها🕵️♂️
متاکلاسها این امکان رو میدن که قبل از ایجاد یک کلاس، ساختارش رو کنترل کنی. میتونی مطمئن شی که قوانین خاصی رعایت شدن یا حتی رفتار کلاس رو دستکاری کنی.
مثال:
اطمینان از تعریف متد greet در کلاس
💡 چی شد؟
ترکیب یا Composition یک راه انعطافپذیرتر برای ساختار دادن به کلاسهات هست. این روش بهت کمک میکنه وابستگیها رو کم کنی و کدهات قابل نگهداریتر باشن.
مثال: تعریف ماشین با استفاده از موتور
💡 چی شد؟
ویژگی های (attributes) هر آبجکت در پایتون به صورت پیشفرض در یک دیکشنری ذخیره میشن که حافظه زیادی مصرف میکنه. با slots میتونی این دیکشنری رو حذف کنی و مصرف حافظه رو کاهش بدی.
مثال: استفاده از slots برای بهینهسازی
💡 چی شد؟
4⃣ Abstract Base Classes 🎯
کلاسهای پایه انتزاعی (ABC) تضمین میکنن که کلاسهای فرزند متدهای مشخصی رو پیادهسازی کنن. این کار طراحی رو مطمئنتر و کدها رو خواناتر میکنه.
مثال: طراحی یک کلاس پایه برای اشکال هندسی
💡 چی شد؟
جمعبندی ✍
این نکات فقط نوک کوه یخه اگه میخوای عمیق تر بشی، کتاب Fluent Python یکی از بهترین منابعه.
➖➖➖➖➖➖➖➖➖
شیگرایی تو پایتون فقط محدود به تعریف کلاسها و متدهای ساده نیست. این زبان امکانات پیشرفتهتری هم داره که با یاد گرفتنشون میتونید کدهای بهینهتر، استانداردتر و انعطافپذیرتری بنویسید. بیاید چند تا از این مفاهیم رو بررسی کنیم.
1⃣ متاکلاسها🕵️♂️
متاکلاسها این امکان رو میدن که قبل از ایجاد یک کلاس، ساختارش رو کنترل کنی. میتونی مطمئن شی که قوانین خاصی رعایت شدن یا حتی رفتار کلاس رو دستکاری کنی.
مثال:
اطمینان از تعریف متد greet در کلاس
class Meta(type):
def __new__(cls, name, bases, dct):
# Ensure 'greet' method exists in the class
if 'greet' not in dct:
raise TypeError(f"Class '{name}' must define 'greet' method")
return super().__new__(cls, name, bases, dct)
class MyClass(metaclass=Meta):
def greet(self):
return "Hello, world!"
obj = MyClass()
print(obj.greet()) # Output: Hello, world!
💡 چی شد؟
متاکلاس Meta بررسی میکنه که متد greet توی هر کلاسی که ازش استفاده میکنه، حتماً تعریف شده باشه. با این کار، خطاها زودتر شناسایی میشن و کدت تمیزتر میمونه.2⃣ Composition به جای ارثبری 🔗
ترکیب یا Composition یک راه انعطافپذیرتر برای ساختار دادن به کلاسهات هست. این روش بهت کمک میکنه وابستگیها رو کم کنی و کدهات قابل نگهداریتر باشن.
مثال: تعریف ماشین با استفاده از موتور
class Engine:
def start(self):
return "Engine started"
class Car:
def __init__(self):
self.engine = Engine() # Engine is a part of Car
def start(self):
return self.engine.start() # Delegate starting to Engine
car = Car()
print(car.start()) # Output: Engine started
💡 چی شد؟
به جای این که ماشین از موتور ارثبری کنه، موتور به عنوان یک جزء در ماشین ترکیب شده. این یعنی موتور رو میتونی راحت عوض کنی بدون این که ساختار کلی ماشین به مشکل بخوره.3⃣ بهینهسازی حافظه با slots 🧠
ویژگی های (attributes) هر آبجکت در پایتون به صورت پیشفرض در یک دیکشنری ذخیره میشن که حافظه زیادی مصرف میکنه. با slots میتونی این دیکشنری رو حذف کنی و مصرف حافظه رو کاهش بدی.
مثال: استفاده از slots برای بهینهسازی
class MyClass:
__slots__ = ['name', 'age'] # Restrict attributes to these two
obj = MyClass()
obj.name = "Alice"
obj.age = 25
💡 چی شد؟
ویژگیهای آبجکت فقط محدود به name و age هستن و هیچ فضای اضافی برای دیکشنری داخلی استفاده نمیشه. این روش توی سیستمهایی با تعداد آبجکت زیاد، تفاوت بزرگی ایجاد میکنه.
4⃣ Abstract Base Classes 🎯
کلاسهای پایه انتزاعی (ABC) تضمین میکنن که کلاسهای فرزند متدهای مشخصی رو پیادهسازی کنن. این کار طراحی رو مطمئنتر و کدها رو خواناتر میکنه.
مثال: طراحی یک کلاس پایه برای اشکال هندسی
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
"""Calculate the area of the shape"""
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2 # Area formula for a circle
circle = Circle(5)
print(circle.area()) # Output: 78.5
💡 چی شد؟
کلاس Shape تضمین میکنه که همهی اشکال فرزند متد area رو داشته باشن. بدون این متد، ساختن کلاس فرزند امکانپذیر نیست.
جمعبندی ✍
این نکات فقط نوک کوه یخه اگه میخوای عمیق تر بشی، کتاب Fluent Python یکی از بهترین منابعه.
#programming #python #oop
➖➖➖➖➖➖➖➖➖
🔆 CHANNEL | GROUP
O’Reilly Online Learning
Fluent Python
Python’s simplicity lets you become productive quickly, but this often means you aren’t using everything it has to offer. With this hands-on guide, you’ll learn how to write... - Selection from Fluent Python [Book]
Forwarded from Code Module | کد ماژول (𔓙)
۳۰ توصیه از یک برنامهنویس سنیور: نکاتی که ای کاش زودتر میدونستیم! 🦠
۱. کد تمیز مهمتر از کد سریعه. بعداً که برگردی سراغ کدت، از خودت تشکر میکنی!
۲. مهارت های نرم(ارتباط، حل مسئله و...) رو جدی بگیر.
۳. همیشه فکر کن یه نفر دیگه قراره کدت رو بخونه - حتی اگه تنها توی پروژه کار میکنی.
۴. هر روز حداقل نیم ساعت مطالعه کن، مهم نیست چقدر شلوغی!
۵. سراغ فریمورک جدید نرو تا وقتی پایهت قوی نشده. جاوااسکریپت وانیلا رو خوب یاد بگیر، بعد برو سراغ ریاکت.
۶. گیت رو جدی بگیر. روزی میرسه که نجاتت میده و مهم نیست کجای رودمپ هستی، یادش بگیر.
۷. وقتی یه چیزی رو نمیدونی، با افتخار بگو نمیدونم. هیچکس همه چیز رو نمیدونه.
۸. کد ریویو فقط برای پیدا کردن باگ نیست. ازش برای یادگیری استفاده کن.
۹. با تیمت خوب رفتار کن. مهم نیست چقدر باهوشی، اگه نتونی با بقیه کار کنی، به درد نمیخوری!
۱۰. قبل از شروع کدنویسی، نحوه پیاده سازی تسک هارو تو ذهنت طراحی کن.
۱۱. هر تغییری رو تست کن، حتی اگه مطمئنی درسته.
۱۲. دیباگ کردن رو یاد بگیر، console.log همیشه جواب نمیده!
۱۳. امنیت رو از روز اول جدی بگیر. بعداً خیلی دیره.
۱۴. پرفورمنس مهمه، ولی نه به قیمت امنیت.
۱۵. داکیومنت بنویس. نه برای بقیه، برای خودت!
۱۶. هر ۶ ماه یه تکنولوژی جدید یاد بگیر.
۱۷. توی کامیونیتیها فعال باش. یه روزی به دردت میخوره.
۱۸. فقط به حقوق فکر نکن، به چیزی که یاد میگیری هم فکر کن. خروجی ما از شرکت و تیم نباید فقط بحث مالی باشه.
۱۹. تخصص و انرژیت رو ارزون در اختیار بقیه قرار نده.
۲۰. استکاورفلو و Gpt خوبه، ولی اول سعی کن خودت فکر کنی.
۲۱. کامنت بذار، ولی نه برای توضیح کد بد.
۲۲. پشت سیستم ورزش کن. کمردرد شوخی نداره.
۲۳. به چشمهات استراحت بده و قانون ۲۰-۲۰-۲۰ رو رعایت کن.
۲۴. زندگی فقط کد نیست. تفریح هم مهمه.
۲۵. تخمین زمانی رو ضرب در ۲ کن، باز هم کمه!
۲۶. تکنیکال دبت رو جدی بگیر. یه روز میاد سراغت.
۲۷. کمالگرایی رو بزار کنار و MVP بساز.
۲۸. از شکستهات یاد بگیر، همه اشتباه میکنن.
۲۹. صبور باش، همه یه روزی جونیور بودن.
۳۰. لذت ببر! برنامهنویسی قشنگترین شغل دنیاست.
شما چه تجربه ای دارید؟ 🤔
لیست رو اگه میتونید تکمیل تر کنید.
#tips
@CodeModule
۱. کد تمیز مهمتر از کد سریعه. بعداً که برگردی سراغ کدت، از خودت تشکر میکنی!
۲. مهارت های نرم(ارتباط، حل مسئله و...) رو جدی بگیر.
۳. همیشه فکر کن یه نفر دیگه قراره کدت رو بخونه - حتی اگه تنها توی پروژه کار میکنی.
۴. هر روز حداقل نیم ساعت مطالعه کن، مهم نیست چقدر شلوغی!
۵. سراغ فریمورک جدید نرو تا وقتی پایهت قوی نشده. جاوااسکریپت وانیلا رو خوب یاد بگیر، بعد برو سراغ ریاکت.
۶. گیت رو جدی بگیر. روزی میرسه که نجاتت میده و مهم نیست کجای رودمپ هستی، یادش بگیر.
۷. وقتی یه چیزی رو نمیدونی، با افتخار بگو نمیدونم. هیچکس همه چیز رو نمیدونه.
۸. کد ریویو فقط برای پیدا کردن باگ نیست. ازش برای یادگیری استفاده کن.
۹. با تیمت خوب رفتار کن. مهم نیست چقدر باهوشی، اگه نتونی با بقیه کار کنی، به درد نمیخوری!
۱۰. قبل از شروع کدنویسی، نحوه پیاده سازی تسک هارو تو ذهنت طراحی کن.
۱۱. هر تغییری رو تست کن، حتی اگه مطمئنی درسته.
۱۲. دیباگ کردن رو یاد بگیر، console.log همیشه جواب نمیده!
۱۳. امنیت رو از روز اول جدی بگیر. بعداً خیلی دیره.
۱۴. پرفورمنس مهمه، ولی نه به قیمت امنیت.
۱۵. داکیومنت بنویس. نه برای بقیه، برای خودت!
۱۶. هر ۶ ماه یه تکنولوژی جدید یاد بگیر.
۱۷. توی کامیونیتیها فعال باش. یه روزی به دردت میخوره.
۱۸. فقط به حقوق فکر نکن، به چیزی که یاد میگیری هم فکر کن. خروجی ما از شرکت و تیم نباید فقط بحث مالی باشه.
۱۹. تخصص و انرژیت رو ارزون در اختیار بقیه قرار نده.
۲۰. استکاورفلو و Gpt خوبه، ولی اول سعی کن خودت فکر کنی.
۲۱. کامنت بذار، ولی نه برای توضیح کد بد.
۲۲. پشت سیستم ورزش کن. کمردرد شوخی نداره.
۲۳. به چشمهات استراحت بده و قانون ۲۰-۲۰-۲۰ رو رعایت کن.
۲۴. زندگی فقط کد نیست. تفریح هم مهمه.
۲۵. تخمین زمانی رو ضرب در ۲ کن، باز هم کمه!
۲۶. تکنیکال دبت رو جدی بگیر. یه روز میاد سراغت.
۲۷. کمالگرایی رو بزار کنار و MVP بساز.
۲۸. از شکستهات یاد بگیر، همه اشتباه میکنن.
۲۹. صبور باش، همه یه روزی جونیور بودن.
۳۰. لذت ببر! برنامهنویسی قشنگترین شغل دنیاست.
شما چه تجربه ای دارید؟ 🤔
لیست رو اگه میتونید تکمیل تر کنید.
#tips
@CodeModule
Forwarded from DevAcademy
فول استک توسعهدهنده (میدلول یا جونیور)
استارتاپ استودیو هوش مصنوعی فیوچر فاندرز:
استارتاپ استودیو هوش مصنوعی به دنبال توسعه و ارائه استارتاپهای نوآورانه در حوزههای مختلف داخلی و خارجی است. ما بر روی ایجاد محصولات مبتنی بر حل مسائل جدی جامعه بینالملل و جامعه ایران تمرکز داریم و به دنبال افرادی هستیم که به این اهداف مشترک بپیوندند.
فول تایم و ریموت (۱ الی ۲ جلسه حضوری در ماه در لواسان یا تهران)
الزامات:
• آشنایی با زبانهای برنامهنویسی مانند پایتون
• تجربه کار با فریمورکهای وب مانند جنگو، React، Angular یا Node.js
• آشنایی با پایگاههای داده SQL و NoSQL
• توانایی کار در محیطهای Agile و Scrum
• مهارتهای ارتباطی قوی و توانایی کار تیمی
• انگیزه بالا برای یادگیری و پیشرفت در زمینه فناوری
لطفا توجه داشته باشید فقط رزومههایی که موضوع ایمیل آنها "فول استک استارتاپ استودیو هوش مصنوعی" است، باز و بررسی میشود.
Email: futurefoundersai@gmail.com
حتما قبل از ارسال رزومه وبسایت سازمان را بررسی کنید:
https://futurefounders.github.io/
💻@DevAcaademy
استارتاپ استودیو هوش مصنوعی فیوچر فاندرز:
استارتاپ استودیو هوش مصنوعی به دنبال توسعه و ارائه استارتاپهای نوآورانه در حوزههای مختلف داخلی و خارجی است. ما بر روی ایجاد محصولات مبتنی بر حل مسائل جدی جامعه بینالملل و جامعه ایران تمرکز داریم و به دنبال افرادی هستیم که به این اهداف مشترک بپیوندند.
فول تایم و ریموت (۱ الی ۲ جلسه حضوری در ماه در لواسان یا تهران)
الزامات:
• آشنایی با زبانهای برنامهنویسی مانند پایتون
• تجربه کار با فریمورکهای وب مانند جنگو، React، Angular یا Node.js
• آشنایی با پایگاههای داده SQL و NoSQL
• توانایی کار در محیطهای Agile و Scrum
• مهارتهای ارتباطی قوی و توانایی کار تیمی
• انگیزه بالا برای یادگیری و پیشرفت در زمینه فناوری
لطفا توجه داشته باشید فقط رزومههایی که موضوع ایمیل آنها "فول استک استارتاپ استودیو هوش مصنوعی" است، باز و بررسی میشود.
Email: futurefoundersai@gmail.com
حتما قبل از ارسال رزومه وبسایت سازمان را بررسی کنید:
https://futurefounders.github.io/
💻@DevAcaademy
Forwarded from محتوای آزاد سهراب
دومین پورت موفق از پارچ به یک معماری جدید.
در بلاگ پارچ درمورد پورتهای پارچ و همچنین برنامه برای نگهداریشون صحبت خواهم کرد.
@SohrabContents
در بلاگ پارچ درمورد پورتهای پارچ و همچنین برنامه برای نگهداریشون صحبت خواهم کرد.
@SohrabContents
Forwarded from IRCF | اینترنت آزاد برای همه
کاش آقای وزیر میفرمودن که به نظرشون چرا در اینترنت طبقاتیشون باید به اساتید و دانشجویان دانشگاه یوتیوب بدن ولی به ما عوام یوتیوب ندن (:
یادآوری: شکاف دیجیتال یعنی نابرابری دسترسی به تکنولوژی دیجیتال. اینکه بگی فلانی چون تو دانشگاه نیست، یوتیوب هم نمیخواد یعنی تشدید شکاف دیجیتال.
جاهای درست سعی میکنن دقیقا به اونی که الان دسترسی کمتری داره، دسترسی و فرصتهای بیشتری بدن تا بتونه خودش رو به کسانی که دسترسی زیادتر دارن نزدیک کنه. اینکه «فلانی رو محدود میکنیم چون از قشر دانشمندان نیست» ادامه ذهنیت «بچه کشاورز لازم نیست سواد یاد بگیره» هست.
© jadi
🔍 ircf.space
@ircfspace
یادآوری: شکاف دیجیتال یعنی نابرابری دسترسی به تکنولوژی دیجیتال. اینکه بگی فلانی چون تو دانشگاه نیست، یوتیوب هم نمیخواد یعنی تشدید شکاف دیجیتال.
جاهای درست سعی میکنن دقیقا به اونی که الان دسترسی کمتری داره، دسترسی و فرصتهای بیشتری بدن تا بتونه خودش رو به کسانی که دسترسی زیادتر دارن نزدیک کنه. اینکه «فلانی رو محدود میکنیم چون از قشر دانشمندان نیست» ادامه ذهنیت «بچه کشاورز لازم نیست سواد یاد بگیره» هست.
© jadi
🔍 ircf.space
@ircfspace
Forwarded from DevTwitter | توییت برنامه نویسی
برای اجرای لینوکس روی سیستم عامل های دیگه مثل هلو ( برای کاربرد آموزش )
1. نصب داکر:
https://docs.docker.com/desktop/setup/install/windows-install/
2. سری اول بعد تموم شدن نصب داکر و اجرای نرم افزار داکر دستور:
docker pull ubuntu
که میاد کانتینر ابونتور رو دانلود میکنه
3.بعد دانلود توی عکسی که میدم دکمه اجرا رو بزنی تا لینوکس اجرا شه
4.در در آخر دستور زیر رو میزنی تا ترمینال داکر اجرا شه:
docker attach container-id
شناسه کانتینتر هم توی عکس علامت زدم
@DevTwitter | <Alireza Babaei/>
1. نصب داکر:
https://docs.docker.com/desktop/setup/install/windows-install/
2. سری اول بعد تموم شدن نصب داکر و اجرای نرم افزار داکر دستور:
docker pull ubuntu
که میاد کانتینر ابونتور رو دانلود میکنه
3.بعد دانلود توی عکسی که میدم دکمه اجرا رو بزنی تا لینوکس اجرا شه
4.در در آخر دستور زیر رو میزنی تا ترمینال داکر اجرا شه:
docker attach container-id
شناسه کانتینتر هم توی عکس علامت زدم
@DevTwitter | <Alireza Babaei/>