امروز فهمیدم یکی از خطرناکترین دشمنان برنامهنویسها باگهای پیچیده نیستن؛ یه حرف بزرگ و کوچیک هست.
من توی مدل نوشته بودم:
Product
بعد توی Serializer با اعتمادبهنفس نوشتم 🤣
product
جنگو هم گفت: «پیشی جونم همچین فیلدی نداریم.»
من: «چطور نداریم؟ خودم ساختمش!»
جنگو : «آره، ولی اسمش Product ـه، نه product...»
البته این اشتباه منو اینطوری بهم نگفت دو ساعت سرش خودم رو به این در و اون در زدم
خلاصه چند ساعتی زندگیمو مرور کردم و فهمیدم تمام این مدت داشتم سر P و p با فریمورک بحث میکردم.
درس امروز:
پایتون به حروف بزرگ و کوچک رحم نمیکنه.
ایندو تا Product و product برای پایتون یکی نیستن.
یک حرف کوچیک، یک ارور بزرگ.
پ.ن: بنده این موضوع رو میدونستم ولی خب پیش میاد 🤣
🐾 @CodeCat_Dev
من توی مدل نوشته بودم:
Product
بعد توی Serializer با اعتمادبهنفس نوشتم 🤣
product
جنگو هم گفت: «پیشی جونم همچین فیلدی نداریم.»
من: «چطور نداریم؟ خودم ساختمش!»
جنگو : «آره، ولی اسمش Product ـه، نه product...»
البته این اشتباه منو اینطوری بهم نگفت دو ساعت سرش خودم رو به این در و اون در زدم
خلاصه چند ساعتی زندگیمو مرور کردم و فهمیدم تمام این مدت داشتم سر P و p با فریمورک بحث میکردم.
درس امروز:
پایتون به حروف بزرگ و کوچک رحم نمیکنه.
ایندو تا Product و product برای پایتون یکی نیستن.
یک حرف کوچیک، یک ارور بزرگ.
پ.ن: بنده این موضوع رو میدونستم ولی خب پیش میاد 🤣
🐾 @CodeCat_Dev
🐍 یه قابلیت کاربردی پایتون که باعث میشه کد تون تمیزتر بشه
تا حالا خواستید چند مقدار رو همزمان از یک لیست بردارید و شمارهی هر کدوم رو هم داشته باشید؟
بهجای این:
پایتون یک راه تمیزتر داره: enumerate() 👇
خروجی:
حتی میتونید شمارهگذاری رو از ۱ شروع کنید:
خروجی:
نکته: enumerate() وقتی خیلی کاربردیه که همزمان به خود مقدار و شماره/ایندکس آن نیاز دارید؛ بدون اینکه مجبور باشید با range(len(...)) کار کنید.
🐾@CodeCat_Dev
تا حالا خواستید چند مقدار رو همزمان از یک لیست بردارید و شمارهی هر کدوم رو هم داشته باشید؟
بهجای این:
names = ["Ali", "Sara", "Mina"]
for i in range(len(names)):
print(i, names[i])
پایتون یک راه تمیزتر داره: enumerate() 👇
names = ["Ali", "Sara", "Mina"]
for index, name in enumerate(names):
print(index, name)
خروجی:
0 Ali
1 Sara
2 Mina
حتی میتونید شمارهگذاری رو از ۱ شروع کنید:
for index, name in enumerate(names, start=1):
print(index, name)
خروجی:
1 Ali
2 Sara
3 Mina
نکته: enumerate() وقتی خیلی کاربردیه که همزمان به خود مقدار و شماره/ایندکس آن نیاز دارید؛ بدون اینکه مجبور باشید با range(len(...)) کار کنید.
🐾@CodeCat_Dev
شده بخوایید چند تا ترمینال تو VSCodeهمزمان باز کنید؟
اینجایی که تو عکس خط کشیدم اینکار رو خیلی تمیز انجام میده
🐾 @CodeCat_Dev
اینجایی که تو عکس خط کشیدم اینکار رو خیلی تمیز انجام میده
🐾 @CodeCat_Dev
𝐶𝑜𝑑𝑒 𝐶𝑎𝑡
Photo
نماد لینوکس، پنگوئنی به نام Tux است که چاق و نشسته به نظر میرسد. دلیل این طراحی ترکیبی از تاریخچه، طنز و نمادگرایی است:
۱. داستان انتخاب پنگوئن (۱۹۹۶):
لینوس توروالدز (خالق لینوکس) گفته بود که وقتی در استرالیا بوده، یک پنگوئن کوچک او را نوک زده و همین باعث شد به فکر استفاده از پنگوئن به عنوان نماد بیفتد. او این حیوان را «بامزه و دوستداشتنی» میدانست، برخلاف نمادهای ترسناک یا خیلی جدی مثل روباه یا عقاب که بعضی پیشنهاد داده بودند.
۲. چرا چاق و نشسته؟
· طراحی اولیه توسط لری ایوینگ (۱۹۹۶): او Tux را طراحی کرد و عمداً او را با شکم گرد و حالت نشسته کشید تا بیآزار، خودی و بامزه به نظر برسد، نه یک شکارچی یا موجود قدرتمند.
· طنز و فروتنی: پنگوئنها پرندههایی هستند که پرواز نمیکنند و روی زمین دستوپا چلفتیاند، اما در آب بسیار ماهرند. این استعارهای بود از اینکه لینوکس هم ممکن است در ابتدا ساده و بیادعا به نظر برسد، اما در عمل قدرتمند است.
· حالت نشسته: نشاندهنده آرامش، اعتماد به نفس و «آماده بودن» است، نه پرخاشگری.
۳. نام Tux:
از ترکیب Torvalds و Unix ساخته شده (یا به روایتی از Tuxedo، چون پنگوئنها شبیه کتوشلوار هستند).
۴. چرا چاق؟
در طراحیهای اولیه، اندام گرد و توپُر Tux باعث میشد قابل لمس و دوستانه باشد و از نمادهای خشن و نظامیگونه فاصله بگیرد. این با فلسفه متنباز (Open Source) که مبتنی بر همکاری و اجتماع است، همخوانی داشت.
خلاصه اینکه: Tux عمداً چاق، نشسته و بامزه طراحی شد تا حس صمیمیت، سادگی و قدرت آرام لینوکس را منتقل کند.
#لینوکس
🐾 @CodeCat_Dev
۱. داستان انتخاب پنگوئن (۱۹۹۶):
لینوس توروالدز (خالق لینوکس) گفته بود که وقتی در استرالیا بوده، یک پنگوئن کوچک او را نوک زده و همین باعث شد به فکر استفاده از پنگوئن به عنوان نماد بیفتد. او این حیوان را «بامزه و دوستداشتنی» میدانست، برخلاف نمادهای ترسناک یا خیلی جدی مثل روباه یا عقاب که بعضی پیشنهاد داده بودند.
۲. چرا چاق و نشسته؟
· طراحی اولیه توسط لری ایوینگ (۱۹۹۶): او Tux را طراحی کرد و عمداً او را با شکم گرد و حالت نشسته کشید تا بیآزار، خودی و بامزه به نظر برسد، نه یک شکارچی یا موجود قدرتمند.
· طنز و فروتنی: پنگوئنها پرندههایی هستند که پرواز نمیکنند و روی زمین دستوپا چلفتیاند، اما در آب بسیار ماهرند. این استعارهای بود از اینکه لینوکس هم ممکن است در ابتدا ساده و بیادعا به نظر برسد، اما در عمل قدرتمند است.
· حالت نشسته: نشاندهنده آرامش، اعتماد به نفس و «آماده بودن» است، نه پرخاشگری.
۳. نام Tux:
از ترکیب Torvalds و Unix ساخته شده (یا به روایتی از Tuxedo، چون پنگوئنها شبیه کتوشلوار هستند).
۴. چرا چاق؟
در طراحیهای اولیه، اندام گرد و توپُر Tux باعث میشد قابل لمس و دوستانه باشد و از نمادهای خشن و نظامیگونه فاصله بگیرد. این با فلسفه متنباز (Open Source) که مبتنی بر همکاری و اجتماع است، همخوانی داشت.
خلاصه اینکه: Tux عمداً چاق، نشسته و بامزه طراحی شد تا حس صمیمیت، سادگی و قدرت آرام لینوکس را منتقل کند.
#لینوکس
🐾 @CodeCat_Dev
مطمئناً براتون پیش اومده که یه کتابخانه یا پکیجی رو توی VSCode نصب کردید یا هر تغییراتی رو آوردی، ولی تغییرات اعمال نشده و نتونستید ازش استفاده کنید، و مجبور شدید IDE رو ببندید و دوباره باز کنید. ولی یه راه سریعتر هم هست.
رو بزنید و از منوی دستوری گزینهی
رو انتخاب کنید. همین کار حکم همون بستن و باز کردن VSCode رو داره، بدون اینکه پنجره رو از دست بدید.
پ.ن: طبق تصویر بالا میبینید قابلیتهای دیگهای هم هست که میتونید ازشون استفاده کنید.
#تکنیک
🐾 @CodeCat_Dev
Ctrl+Shift+P
رو بزنید و از منوی دستوری گزینهی
Python: Clear cache and reload the window
رو انتخاب کنید. همین کار حکم همون بستن و باز کردن VSCode رو داره، بدون اینکه پنجره رو از دست بدید.
پ.ن: طبق تصویر بالا میبینید قابلیتهای دیگهای هم هست که میتونید ازشون استفاده کنید.
#تکنیک
🐾 @CodeCat_Dev
تا حالا شده موقع push کردن پروژه روی گیتهاب با این خطا مواجه بشید؟
یعنی: «گیتهاب تغییراتی داره که شما ندارید. اول اونها رو دریافت کنید، بعد push کنید.»
یکی از دلایل رایج این خطا اینه که بعد از push اولیه، بهصورت دستی از خود گیتهاب تغییراتی اعمال کرده باشید و اون تغییرات رو در نسخهی لوکال نداشته باشید. (البته ممکنه فرد دیگهای هم روی ریپو کامیت زده باشه.)
راه حل: اول با git pull تغییرات ریموت رو دریافت کنید، بعد دوباره push کنید تا نسخهها هماهنگ بشن.
توجه داشته باشید:
اگه history لوکال و ریموت کاملاً متفاوتن و میخواید نسخهی لوکال رو جایگزین ریموت کنید، میتونید از این دستور استفاده کنید:
⚠️ ولی با احتیاط! چون کامیتهای روی ریموت رو پاک میکنه و اگه کسی دیگهای روی ریپو کار کرده باشه، تغییراتش از بین میره. اگه میخواید ایمنتر باشه، از این استفاده کنید:
این نسخه قبل از force کردن، چک میکنه که آیا ریموت از آخرین باری که دیدید تغییر کرده یا نه؛ اگه تغییر کرده باشه، جلوی push رو میگیره و نمیذاره کار بقیه رو خراب کنید.
#گیتگیتهاب
🐾 @CodeCat_Dev
! [rejected] main -> main (fetch first)
یعنی: «گیتهاب تغییراتی داره که شما ندارید. اول اونها رو دریافت کنید، بعد push کنید.»
یکی از دلایل رایج این خطا اینه که بعد از push اولیه، بهصورت دستی از خود گیتهاب تغییراتی اعمال کرده باشید و اون تغییرات رو در نسخهی لوکال نداشته باشید. (البته ممکنه فرد دیگهای هم روی ریپو کامیت زده باشه.)
راه حل: اول با git pull تغییرات ریموت رو دریافت کنید، بعد دوباره push کنید تا نسخهها هماهنگ بشن.
توجه داشته باشید:
اگه history لوکال و ریموت کاملاً متفاوتن و میخواید نسخهی لوکال رو جایگزین ریموت کنید، میتونید از این دستور استفاده کنید:
git push --force
⚠️ ولی با احتیاط! چون کامیتهای روی ریموت رو پاک میکنه و اگه کسی دیگهای روی ریپو کار کرده باشه، تغییراتش از بین میره. اگه میخواید ایمنتر باشه، از این استفاده کنید:
git push --force-with-lease
این نسخه قبل از force کردن، چک میکنه که آیا ریموت از آخرین باری که دیدید تغییر کرده یا نه؛ اگه تغییر کرده باشه، جلوی push رو میگیره و نمیذاره کار بقیه رو خراب کنید.
#گیتگیتهاب
🐾 @CodeCat_Dev
Forwarded from Click University (Mina Barati)
Click University
Photo
مارگارت همیلتون؛ زنی که نرمافزار آپولو ۱۱ رو ساخت
وقتی اسم آپولو ۱۱ میاد، همه یاد آرمسترانگ میفتن. ولی پشت این مأموریت، مارگارت همیلتون بود؛ اولین برنامهنویس پروژه آپولو و سرپرست تیم مهندسی نرمافزار در MIT. اون زمانی وارد این حوزه شد که برنامهنویسی هنوز جایگاه امروز رو نداشت.
مهمترین دستاوردش تو فرود آپولو ۱۱ رقم خورد. کامپیوتر فضاپیما اورلود کرد و هشدار خطا داد، ولی نرمافزاری که طراحی کرده بود، خودکار وظایف کماهمیت رو کنار گذاشت و منابع رو روی کارهای حیاتی متمرکز کرد. همین باعث شد فرود با موفقیت پیش بره. این موفقیت کار یک تیم بود، ولی نقش همیلتون در طراحی و قابلیت اطمینان نرمافزار تعیینکننده بود.
همیلتون به جدی گرفته شدن مهندسی نرمافزار کمک کرد. عکس معروفش کنار پشته کدهای چاپشده آپولو یادآوری میکنه پشت هر اتفاق بزرگ، فقط سختافزار نیست؛ کد و تصمیمهای درست هم نقش دارن. سال ۲۰۱۶ مدال آزادی ریاستجمهوری آمریکا رو گرفت.
در ۳۰ سپتامبر ۲۰۲۶، در ۹۰ سالگی درگذشت. با رفتنش یکی از چهرههای تأثیرگذار تاریخ مهندسی نرمافزار رو از دست دادیم؛ زنی که کارش بخشی از مسیر رسیدن انسان به ماه بود.
@ClickUniversity
وقتی اسم آپولو ۱۱ میاد، همه یاد آرمسترانگ میفتن. ولی پشت این مأموریت، مارگارت همیلتون بود؛ اولین برنامهنویس پروژه آپولو و سرپرست تیم مهندسی نرمافزار در MIT. اون زمانی وارد این حوزه شد که برنامهنویسی هنوز جایگاه امروز رو نداشت.
مهمترین دستاوردش تو فرود آپولو ۱۱ رقم خورد. کامپیوتر فضاپیما اورلود کرد و هشدار خطا داد، ولی نرمافزاری که طراحی کرده بود، خودکار وظایف کماهمیت رو کنار گذاشت و منابع رو روی کارهای حیاتی متمرکز کرد. همین باعث شد فرود با موفقیت پیش بره. این موفقیت کار یک تیم بود، ولی نقش همیلتون در طراحی و قابلیت اطمینان نرمافزار تعیینکننده بود.
همیلتون به جدی گرفته شدن مهندسی نرمافزار کمک کرد. عکس معروفش کنار پشته کدهای چاپشده آپولو یادآوری میکنه پشت هر اتفاق بزرگ، فقط سختافزار نیست؛ کد و تصمیمهای درست هم نقش دارن. سال ۲۰۱۶ مدال آزادی ریاستجمهوری آمریکا رو گرفت.
در ۳۰ سپتامبر ۲۰۲۶، در ۹۰ سالگی درگذشت. با رفتنش یکی از چهرههای تأثیرگذار تاریخ مهندسی نرمافزار رو از دست دادیم؛ زنی که کارش بخشی از مسیر رسیدن انسان به ماه بود.
@ClickUniversity
𝐶𝑜𝑑𝑒 𝐶𝑎𝑡
پایان همکاری مون رو اعلام میکنم. دلیل: به درد من نخورد #Prettier 🐾 @CodeCat_Dev
برای فرمت کدهای پایتون از Black استفاده کنید.
میتونی افزونه ش رو توی VS Code نصب کنی یا دانلودش کنی و توی ترمینال با دستور
اجراش کنی.
🐾 @CodeCat_Dev
میتونی افزونه ش رو توی VS Code نصب کنی یا دانلودش کنی و توی ترمینال با دستور
black .
اجراش کنی.
🐾 @CodeCat_Dev