به اون کاری که امروز کردی نگو "ریفکتور" (Refactor)
اگه تست نداره، اون فقط یه "گندکاریِ تمیزه".
این فقط یه جملهی قشنگ نیست؛ این یه زخمه که من هنوز یادمه.
اوایل کارم، میخواستم قهرمان باشم. ️ تو یه پروژهی لگسی، یه "God Function" هزار خطی پیدا کردم و گفتم: "من اینو تمیز میکنم!"
نشستم و تیکهتیکهاش کردم. ۵۰ تا تابع کوچولوی تر و تمیز. اصل DRY رو پیاده کردم. ظاهر کد عالی شد. "تمیز" و "حرفهای". احساس غرور میکردم.
مشکل چی بود؟ اون کد اصلی لعنتی، یه دونه هم تست خودکار نداشت.
اونجا بود که فاجعه اتفاق افتاد. کاری که من انجام دادم، "ریفکتور" نبود؛ "تغییر دادنِ کورکورانه" بود.
اون کد "تمیز" من، چند تا باگ جدید و پنهان داشت. چرا؟ چون اون "کد اسپاگتی" زشت، پر از منطقهای تجاری پنهان و وابستگیهای زمانی بود که فقط تو همون حالت کار میکرد.
من "بدهی فنی" رو پرداخت نکردم؛ من یه بدهی کمبهره (مثل تکرار کد که فهمیدنش ساده بود) رو برداشتم و با یه بدهی پربهره (مثل یه "انتزاع اشتباه" که حالا دیباگ کردنش غیرممکنه) عوض کردم.
این "تلهی کد تمیز"ئه.
مهمترین تعریفی که تو این صنعت باید بلد باشیم مال مایکل فدرز (Michael Feathers) ئه: "کد لگسی، کدیه که تست نداره." همین.
تو یه سیستم لگسی، قانون اول "تمیز کن" نیست. قانون اول اینه: "اول امنش کن." برو "تستهای مشخصهیابی" (Characterization Tests) بنویس تا رفتار فعلیِ سیستم (با همهی باگهاش) رو قفل کنی. وقتی اون تور ایمنی رو ساختی، اونوقت حق داری که شروع به تمیزکاری کنی.
✍️ Hossein Moradi
اگه تست نداره، اون فقط یه "گندکاریِ تمیزه".
این فقط یه جملهی قشنگ نیست؛ این یه زخمه که من هنوز یادمه.
اوایل کارم، میخواستم قهرمان باشم. ️ تو یه پروژهی لگسی، یه "God Function" هزار خطی پیدا کردم و گفتم: "من اینو تمیز میکنم!"
نشستم و تیکهتیکهاش کردم. ۵۰ تا تابع کوچولوی تر و تمیز. اصل DRY رو پیاده کردم. ظاهر کد عالی شد. "تمیز" و "حرفهای". احساس غرور میکردم.
مشکل چی بود؟ اون کد اصلی لعنتی، یه دونه هم تست خودکار نداشت.
اونجا بود که فاجعه اتفاق افتاد. کاری که من انجام دادم، "ریفکتور" نبود؛ "تغییر دادنِ کورکورانه" بود.
اون کد "تمیز" من، چند تا باگ جدید و پنهان داشت. چرا؟ چون اون "کد اسپاگتی" زشت، پر از منطقهای تجاری پنهان و وابستگیهای زمانی بود که فقط تو همون حالت کار میکرد.
من "بدهی فنی" رو پرداخت نکردم؛ من یه بدهی کمبهره (مثل تکرار کد که فهمیدنش ساده بود) رو برداشتم و با یه بدهی پربهره (مثل یه "انتزاع اشتباه" که حالا دیباگ کردنش غیرممکنه) عوض کردم.
این "تلهی کد تمیز"ئه.
مهمترین تعریفی که تو این صنعت باید بلد باشیم مال مایکل فدرز (Michael Feathers) ئه: "کد لگسی، کدیه که تست نداره." همین.
تو یه سیستم لگسی، قانون اول "تمیز کن" نیست. قانون اول اینه: "اول امنش کن." برو "تستهای مشخصهیابی" (Characterization Tests) بنویس تا رفتار فعلیِ سیستم (با همهی باگهاش) رو قفل کنی. وقتی اون تور ایمنی رو ساختی، اونوقت حق داری که شروع به تمیزکاری کنی.
✍️ Hossein Moradi
👍14❤3🤔1
جنگولرن
سلام به همه بریم برای معرفی کانال هاتون اگه یه کانال داری که مطالبش فنی هست، و میخوای توی جنگولرن [رایگان] معرفی ش کنم لینک کانال ت + یه توضیح یه خطی در موردش رو برای من بفرست. @miladhzz این بار، جای اینکه چند پست باشه، همه رو توی یه پست معرفی می کنم.
یک: https://t.iss.one/AxiomLite
آموزه های یک برنامه نویس
دو: https://t.iss.one/philosophyofsoftware
فلسفه ی نرم افزار ، در مورد مهندسی نرم افزار و ابزار های بدرد بخور
سه: https://t.iss.one/TechnoCode_TC
آموزش برنامه نویسی | اخبار برنامه نویسی | تیکه کد های کاربرد
چهار: https://t.iss.one/front_jon
برنامه نویس فرانت جونیور و ریکت
پنج: https://t.iss.one/Web_Block_team
سوار بر جریان فکر و فناوری
شش: https://t.iss.one/teachify
هر روز یک نکته برنامهنویسی؛ کوتاه، مفید و مخصوص توسعهدهندهها.
آموزه های یک برنامه نویس
دو: https://t.iss.one/philosophyofsoftware
فلسفه ی نرم افزار ، در مورد مهندسی نرم افزار و ابزار های بدرد بخور
سه: https://t.iss.one/TechnoCode_TC
آموزش برنامه نویسی | اخبار برنامه نویسی | تیکه کد های کاربرد
چهار: https://t.iss.one/front_jon
برنامه نویس فرانت جونیور و ریکت
پنج: https://t.iss.one/Web_Block_team
سوار بر جریان فکر و فناوری
شش: https://t.iss.one/teachify
هر روز یک نکته برنامهنویسی؛ کوتاه، مفید و مخصوص توسعهدهندهها.
Forwarded from Mina Heidaree
نکته #پایتون
#python
شماره ۳۶
تهیه کننده: فاطمه درویشی هنرآموز استان بوشهر
#گروه_آموزشی_استان_بوشهر
#دبیرخانه_کشوری_رایانه_زنجان
#python
شماره ۳۶
تهیه کننده: فاطمه درویشی هنرآموز استان بوشهر
#گروه_آموزشی_استان_بوشهر
#دبیرخانه_کشوری_رایانه_زنجان
👍7✍4❤1
Forwarded from Milad Hatami
Media is too big
VIEW IN TELEGRAM
⭕️💢کافه جنگو💢⭕️
آموزش جنگو پایتون
جلسه : هفتم - آخرین جلسه
موضوع این جلسه: استفاده از قالب HTML آماده برای وبلاگ
رشته: فنی پایه 11 کتب جدید
پایه: 11 فنی و 11 و 12 کاردانش
درس: وب
سطح: متوسط
مدرس: مهندس حاتمی
🔻🔻🔻🔻🔻🔻
#کافه_دانش
#کافه_جنگو
#جلسه_7
#جلسه_آخر
#سطح_متوسط_پیشرفته
#توسعه_وب
#یادگیری_مفاهیم_وب
#دبیرخانه_کشوری_رایانه
#مستقر_در_استان_زنجان
#کانال_شاد_دبیرخانه_رایانه
@Yvt_computer
#کافه_دانش
t.iss.one/Zncd_ir_Cafe
#آدرس_سایت_دبیرخانه_رایانه
ZNCD.ir
آموزش جنگو پایتون
جلسه : هفتم - آخرین جلسه
موضوع این جلسه: استفاده از قالب HTML آماده برای وبلاگ
رشته: فنی پایه 11 کتب جدید
پایه: 11 فنی و 11 و 12 کاردانش
درس: وب
سطح: متوسط
مدرس: مهندس حاتمی
🔻🔻🔻🔻🔻🔻
#کافه_دانش
#کافه_جنگو
#جلسه_7
#جلسه_آخر
#سطح_متوسط_پیشرفته
#توسعه_وب
#یادگیری_مفاهیم_وب
#دبیرخانه_کشوری_رایانه
#مستقر_در_استان_زنجان
#کانال_شاد_دبیرخانه_رایانه
@Yvt_computer
#کافه_دانش
t.iss.one/Zncd_ir_Cafe
#آدرس_سایت_دبیرخانه_رایانه
ZNCD.ir
🔥4👍1
جنگولرن
⭕️💢کافه جنگو💢⭕️ آموزش جنگو پایتون جلسه : هفتم - آخرین جلسه موضوع این جلسه: استفاده از قالب HTML آماده برای وبلاگ رشته: فنی پایه 11 کتب جدید پایه: 11 فنی و 11 و 12 کاردانش درس: وب سطح: متوسط مدرس: مهندس حاتمی 🔻🔻🔻🔻🔻🔻 #کافه_دانش #کافه_جنگو #جلسه_7 #جلسه_آخر…
لینک ویدئو جلسه آخر دوره ساخت وبلاگ برای هنرستانی ها
https://www.aparat.com/v/dtj0854
https://www.aparat.com/v/dtj0854
توی این قسمت یه قالب html خام برای وبلاگ آماده کرده بودم. و با تمپلت های جنگو، و ارث بری تمپلت ها، قالب رو برای وبلاگ خودمون اوکی کردیم.
با فایل های استاتیک آشنا شدیم، و نکات مربوط به فایل های استاتیک رو فهمیدیم.
در انتهای ویدئو هم عکس برای پست ها اضافه کردیم و با پکیج pillow آشنا شدیم.
بعدش با فایل های media آشنا شدیم و روش serve کردن این فایل ها توی حالت develop در جنگو رو یاد گرفتیم.
توی این دوره قراره بر اساس کتاب Django 5 By Example پیش بریم. ولی مفاهیمی فراتر از کتاب رو قطعا پوشش خواهیم داد.
تمرکز این دوره بر پرسش و پاسخ خواهد بود. که بتونیم به همکاران راهنمایی بدیم.
🔥4👍1
اصول نرمافزارهای انترپرایز یا Enterprise Software Principles
این دو تا پست از کانال techafternoon در مورد پروژه های enterprise ببینید. مفیده 👌
https://t.iss.one/techafternoon/398
https://t.iss.one/techafternoon/399
این دو تا پست از کانال techafternoon در مورد پروژه های enterprise ببینید. مفیده 👌
https://t.iss.one/techafternoon/398
https://t.iss.one/techafternoon/399
👍2
Designing Data-Intensive Applications
اگر میخوای بدونی سیستمهای مدرن مثل شبکههای اجتماعی، فروشگاههای آنلاین و سرویسهای استریم چطور این حجم عظیم داده را مدیریت میکنند، این کتاب بهترین نقطه شروعه.
Martin Kleppmann
در این کتاب با زبانی ساده توضیح میدهد پشت صحنهی سیستمهای دادهمحور چه میگذرد: از مدل دادهها و دیتابیسها تا رپلیکیشن، شاردینگ، سازگاری و پردازش لحظهای.
این کتاب به جای تمرکز روی ابزارها، ایدههای بنیادی را یاد میدهد؛ چیزهایی که هر معمار نرمافزاری باید بدونه.
✍🏻 arminshaikhy
من که عکساشو دیدم قشنگ بودن 😁
اگر میخوای بدونی سیستمهای مدرن مثل شبکههای اجتماعی، فروشگاههای آنلاین و سرویسهای استریم چطور این حجم عظیم داده را مدیریت میکنند، این کتاب بهترین نقطه شروعه.
Martin Kleppmann
در این کتاب با زبانی ساده توضیح میدهد پشت صحنهی سیستمهای دادهمحور چه میگذرد: از مدل دادهها و دیتابیسها تا رپلیکیشن، شاردینگ، سازگاری و پردازش لحظهای.
این کتاب به جای تمرکز روی ابزارها، ایدههای بنیادی را یاد میدهد؛ چیزهایی که هر معمار نرمافزاری باید بدونه.
✍🏻 arminshaikhy
من که عکساشو دیدم قشنگ بودن 😁
👍9❤1
خروجی این کد 24 میشه
من که نمیدونم همچین کدی کجا میتونه به دردم بخوره
از کتاب Fluent Python
ویرایش:
توضیح یکی از دوستان در این مورد:
اگه بخوای از دید علمی بهش نگاه کنی reduce یک fold توی علوم کامپیوتر fold یعنی یه ساختاری تکراری مثل لیست رو به یع عملیات تبدیل کنیم به یه مقدار نهایی یعنی همون که از چند تا داده یک داده بسازیم یه مفهوم پایه ای توی ریاضیات طراحی الگوریتم ها و حتی فیزیک محاسباتی هستش ولی خب ما معمولی های میگیم همه چیو بریز تو یه مسیر اخرش یه چیز واحد ازش بیرون بکش نصف الگوریتم های دنیا از همین الگوی ساده ساخته میشن مجموع و ضرب و احتمال و hash و فشرده سازی داده بگیر تا جمع کردن اطلاعات از چند منبع و ساختن یه خروجی نهایی از کلی input
توی علوم کامپیوتر یه دونه از قانون های پایه برای ساخت الگوریتم هاست
و دلیل اینکه پایتون اینو مهم میدونه میخواد بهت بگه که تو فقط یک تابع نمی نویسی داری الگوی الگوریتیمی میسازی وقتی reduce رو میفهمی میفهمی هم که چطور از لیست عملیات یک خط پردازش بسازی همون چیزیه که همه زبان های فانکشنال باهاش زندگی میکنن
from functools import reduce
from operator import mul
result = reduce(mul, [2, 3, 4])
print(result)
من که نمیدونم همچین کدی کجا میتونه به دردم بخوره
از کتاب Fluent Python
ویرایش:
توضیح یکی از دوستان در این مورد:
اگه بخوای از دید علمی بهش نگاه کنی reduce یک fold توی علوم کامپیوتر fold یعنی یه ساختاری تکراری مثل لیست رو به یع عملیات تبدیل کنیم به یه مقدار نهایی یعنی همون که از چند تا داده یک داده بسازیم یه مفهوم پایه ای توی ریاضیات طراحی الگوریتم ها و حتی فیزیک محاسباتی هستش ولی خب ما معمولی های میگیم همه چیو بریز تو یه مسیر اخرش یه چیز واحد ازش بیرون بکش نصف الگوریتم های دنیا از همین الگوی ساده ساخته میشن مجموع و ضرب و احتمال و hash و فشرده سازی داده بگیر تا جمع کردن اطلاعات از چند منبع و ساختن یه خروجی نهایی از کلی input
توی علوم کامپیوتر یه دونه از قانون های پایه برای ساخت الگوریتم هاست
و دلیل اینکه پایتون اینو مهم میدونه میخواد بهت بگه که تو فقط یک تابع نمی نویسی داری الگوی الگوریتیمی میسازی وقتی reduce رو میفهمی میفهمی هم که چطور از لیست عملیات یک خط پردازش بسازی همون چیزیه که همه زبان های فانکشنال باهاش زندگی میکنن
❤6✍2👍2
✅ تا حالا به این فکر کردید که وقتی دستور activate رو برای فعالسازی VENV می زنیم چی میشه؟
بهتره وقتی از یه دستور یا ابزار و یا هر چیز دیگه ای استفاده می کنیم، به سادگی از کنارش نگذریم و یه اطلاعات حداقلی رو در موردش داشته باشیم.
😉 البته سعی میکنیم محتوای ویدئوها طوری باشه که مهارت مارو توی جنگو بالاتر ببرن.
🟢 توی این ویدئوی رایگان در مورد دستور activate بررسی هایی انجام میدیم.
لینک آپارات:
https://www.aparat.com/v/ofjc5
لینک ویدئو در یوتیوب:
https://www.youtube.com/watch?v=4hgFtNsMqyw&t
بهتره وقتی از یه دستور یا ابزار و یا هر چیز دیگه ای استفاده می کنیم، به سادگی از کنارش نگذریم و یه اطلاعات حداقلی رو در موردش داشته باشیم.
😉 البته سعی میکنیم محتوای ویدئوها طوری باشه که مهارت مارو توی جنگو بالاتر ببرن.
🟢 توی این ویدئوی رایگان در مورد دستور activate بررسی هایی انجام میدیم.
لینک آپارات:
https://www.aparat.com/v/ofjc5
لینک ویدئو در یوتیوب:
https://www.youtube.com/watch?v=4hgFtNsMqyw&t
❤4👍2🆒2🔥1🤔1
✅ ده تا اشتباه رایج برنامه نویس های جنگو
(البته درستش Django Developers هست)
1: Using the Global System Python Environment for Project Dependencies
2: Not Pinning Project Dependencies in a requirements.txt File
3: Using Old-style Python Functions Instead of Class-based Views
4: Writing Fat Views and Skinny Models
5: A Huge, Unmanageable Settings File
6: All-in-one Application, Bad Application Structure, and Incorrect Resource Placement
7: STATICFILES_DIRS and STATIC_ROOT Confuse Newbie Django Developers
8: Default STATICFILES_STORAGE, Django Templates Loaders in Production
9: Pure Python Scripts for Utilities or Scripts
10: Reinventing the Wheel
توضیحات هر مورد رو توی لینک زیر ببینید:
https://www.toptal.com/django/django-top-10-mistakes
(البته درستش Django Developers هست)
1: Using the Global System Python Environment for Project Dependencies
2: Not Pinning Project Dependencies in a requirements.txt File
3: Using Old-style Python Functions Instead of Class-based Views
4: Writing Fat Views and Skinny Models
5: A Huge, Unmanageable Settings File
6: All-in-one Application, Bad Application Structure, and Incorrect Resource Placement
7: STATICFILES_DIRS and STATIC_ROOT Confuse Newbie Django Developers
8: Default STATICFILES_STORAGE, Django Templates Loaders in Production
9: Pure Python Scripts for Utilities or Scripts
10: Reinventing the Wheel
توضیحات هر مورد رو توی لینک زیر ببینید:
https://www.toptal.com/django/django-top-10-mistakes
Toptal
Top 10 Mistakes That Django Developers Make
In this tutorial, we will look at some common mistakes that are often made by Django developers and ways to avoid them. Whether you're an expert or a new developer taking your first stab at Django, these mistakes are common among all types of Django developers.
✍5👍4