Coding Lovers
2.02K subscribers
189 photos
16 videos
19 files
232 links
:همه شبکه های اجتماعی یکجا 🌐
Zil.ink/codinglovers

📌 تبلیغات:
@CodingLoversAds

:گروه 🍻
@CodingLovers_GP

:حرفی سخنی 🧑‍💻
@Amir_OfficiaI

:ثبت نمونه کار 🪄
@CodingLovers_result
Download Telegram
تو این ویدیو ۵ تا از مهم‌ترین تکنیک‌هایی که برنامه‌نویس‌های خوب پایتون استفاده می‌کنن رو یاد می‌گیریم.
اگه می‌خوای کدهات تمیزتر و حرفه‌ای‌تر بشه، این ویدیو رو از دست نده!

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

از اینجا ببینید:
https://youtube.com/@CodingLovers
11
میدونین نرم افزار ها از چه قوانینی برای ورژن‌شون استفاده میکنن؟
امروز یه پروژه ای رو دیدم که هیچ قانونی رو دنبال نمیکرد ( و از قضا ایرانی هم بود 😐💔 )، به سرم زد درباره ورژن بندی توضیح بدم.

1. Semantic Versioning (SemVer)
از پراستفاده ترین 🔥 روش های ورژن بندی، که تشکیل شده از این فرمت
MAJOR.MINOR.PATCH
که تغییر دادنه هرکدوم قوانین خودش رو داره
فرمت کامل تر:
MAJOR.MINOR.PATCH[-beta][+number]

مثال:
1.0.4-beta+132483

2. CalVer (Calendar Versioning)
تاریخ انتشار 📅 رو میزارن به عنوان ورژن برنامه ( اینستاگرام این کار رو میکنه فکر کنم )
فرمت:
YYYY.MM.DD
مثال:
2024.8.12

3. Incremental Versioning
1️⃣ هیچ قانونی نداره فقط یه عدد میزاری برای هر ورژن. مثلا داخل api ها کاربرد داره. برای مثال مسیر یه api میتونه اینجوری باشه:
/api/v2
/api/v3

4. Revision Control Versioning
اینجا بحث عدد نیست. برای هر ورژن یک hash در نظر میگیریم ( مثلا a6wyehb48 ) و قانون خاصی نداره. از این روش git برای ورژن بندی کردن و کنترل پروژه استفاده میکنه

باز هم روش هایی هست ولی پراستفاده ترین و معقول ترین هاش همینان ...

راجب Semver پست خواهم گذاشت ...
1👍64
قوانین Semantic Versioning
روش ها رو معرفی کردیم، حالا وقتشه مهم ترین‌شون رو یاد بدیم.
تمامی پروژه های معروف جز چند تا، از این روش استفاده میکنن.

ما داخل این روش سه عدد اصلی داریم که با نقطه از هم جدا میشن:
MAJOR.MINOR.PATCH

1️⃣ قانون یک:
عدد Major: این عدد تنها زمانی اجازه تغییر دارد که تغییری که در نرم افزار ایجاد شده است با نسخه های قبلی ناسازگار است. برای مثال سینتکس پایتون 2 داخل پایتون 3 اجرا نمیشه و برعکس.

2️⃣ عدد Minor: این عدد تنها زمانی اجازه تغییر دارد که فیچری اضافه شده، یا تغییر مهمی صورت گرفته که با نسخه های قبلی سازگار است. برای مثال داخل پایتون 3.10 ویژگی match اومد، ولی سورس های ورژن 3.9 قابل اجرا هستن داخل 3.10

3️⃣ عدد Patch: این عدد تنها زمانی اجازه تغییر دارد که باگی یا مشکلی یا هر تغییر جزئی داخل نرم افزار صورت گرفته است.

قانون دو:
وقتی عددی رو ارتقا میدید، عدد های بعدیش باید صفر بشن.
برای مثال اگه minor رو تغییر میدید، باید patch صفر بشه.
3.18.4 -> 3.19.0

شروع ورژن گذاری

نسخه های ازمایشی:
دیدید بعضی برنامه ها ورژن های ازمایشی میدن بیرون ( مثلا تلگرام )
ورژن های ازمایشی رو اینجا این شکلی نشون میدیم:
Major.Minor.Patch-rc0

◀️ جای rc میتونه اسم های beta، alpha یا nightly قرار بگیره، در بعضی جاها فقط اولین کلمه رو میزارن: a یا b یا n

و عدد بعد از rc میتونه سر هر تغییری در نسخه ازمایشی، تغییر کنه ( یا کلا میتونین عددی نزارین اینجا )
برای مثال:
7.2.9-alpha8 -> 7.2.9-alpha9

نرم افزار دارای فایل های metadata:
اول اینکه فایل های metadata چی هستن؟ هر فایل چرت و پرتی که مربوط به برناممون نیست ولی ازشون استفاده میکنیم.
مثلا نرم افزار های iana که برای تشخیص مکان آیپی استفاده میشن، از دیتابیس های از پیش اماده استفاده میکنن که این دیتابیس هارو میتونیم به عنوان metadata در نظر بگیریم.

ما در این روش، این فایل هارو اینشکلی ورژن بندی میکنیم:
Major.Minor.Patch+number

برای مثال:
4.1.4+1234
و هروقت اگه اون فایل های metadata رو فقط اپدیت کنیم، میتونیم این اعداد رو بیشتر کنیم:
4.1.4+1269

امیدوارم لذت برده باشید ...
یه مثال کُلی از همه ی موارد:
1.81.2-b1+728466
6👍4🔥1
امروز روز برنامه نویس هاست، روز ۲۵۶م از سال ۲۰۲۴
روزتون مبارک ❤️


حالا میدونستین ۴۲ روز دیگه باز هم روز برنامه نویسه؟ میدونین چرا؟
18👎4
بهترین لحظه ای که میتونی کسی رو به قتل برسونی
اون لحظه‌س که به طرف قیمت میدی، میاد بهت اسکرین شات از هوش مصنوعی میده میگه بفرما

ما داریم اینجا زحمت میکشیم :/
🤣8😁4🔥3👍1
سبک زندگی برنامه نویس چگونه باید باشد؟
امروز یه مطلب خوندم خیلی باهاش حال کردم که عنوانش همین بود

درواقع ۱۵ مشکل و نکته رو میگه که حتما باید حواسمون بهشون باشه
خودم سه چهار تاش رو رعایت نمیکنم

خواستم باهاتون به اشتراک بزارم ❤️

https://nabeghesaz.com/the-lifestyle-of-a-programmer/
👍112
🐉 یه حرکت بشدت جالب از Kali Linux
خبر قدیمیه، ولی من تازه فهمیدمش
۹۰ درصدتون میدونید کالی لینوکس یه سیستم عامل هست که با هدف امنیت و هک و پینترست طراحی شده که الان نزدیک ۸ گیگ ابزار هکینگ رو توسعه داده و در خودش داره

🟣 امسال یه سیستم عامل جدید داده بیرون!
اسمش Purple Kali هستش و دقیقا ضد Kali Linux عمل میکنه
این سیستم عامل با هدف حفظ امنیت و پشتیبانی و ریکاوری اطلاعات طراحی شده و دقیقا حریف Kali Linux قرار میگیره ...
کلی ابزار ریکاوری و حفظ امنیت داخل خودش داره که میشه باهاش امنیت یک مکان رو حفظ کرد

اینجاست که باید گفت: کالی لینوکس ۱۱ ساله هستش، و هنوزم تنها رقیبش خودشه ...

پ.ن: جوگیر شدم امشب کالی میریزم 😂
👍16😁2👎1
دوتا فانکشن بیلت این پرکاربر پایتون
وقتی میخواید یه Iterable رو چک کنید که همه آیتم ها Truthy هستند یا نه، یا وقتی میخواید ببینید یکی از ایتم ها Truthy هست یا ن، از اینا استفاده میشه

https://youtube.com/shorts/UEt87e0CeLU?si=bLpR27L712PsPVI6
4
کار رو سرم ریخته بدجور
خیلی تو برنامه ریزی خوب نیستم و تنبل بودن هم باعث میشه کارام همیشه عقب بیفته و همشون یجا یهو باید انجام بدم

واسه همینه که خیلی فعال نیستم، اوکیش میکنم و میام

شما وضعتون چطوره؟ پروژه میاد قطار قطار؟
خیلی پروژه زیاد شده اخیرا یا من توهم زدم؟
🔥112👍1
چرا باید این همه توضیحات رو بزاری داخل aboutعه گیتهاب 😐
😁9🤣6👍1
حسودیم میشه به مدرسه ای ها
عادی نیست 🚬
دوران مدرسه خوبی داشتم

چند نفر تون می‌رید مدرسه؟
8👍2
فرق متود __str__ و __repr__ میدونین چیه؟
هردوی این متود ها، مجیک متود هایی هستن که مشخص میکنن وقتی یک classیی قراره پرینت بشه، به چه صورتی باید پرینت بشه.
برای مثال:

class A:
def __repr__(self):
return "A: I love you"

a = A()
print(a)
# A: I love you

خب فرقشون کجاست؟
اگه از مجیک متود str استفاده کنین، فقط در صورتی کلاستون چیزی که میخواید نوشته میشه که مستقیم به str(x) داده بشه، یا مستقیم به print داده بشه.
این کد رو ببینید:

class A:
def __str__(self):
return "A: ILY"

a = A()
print(a)
# A: ILY
text = str(a)
print(text)
# A: ILY

print( [ a ] )
# [<A at 0xisi83ijsiow837>]

اخر کد رو دقت کردید؟ چرا چیزی که خواستیم پرینت نشد؟ یعنی [ "A: ILY" ]
چون مستقیم به print داده نشدن، اما وقتی از مجیک متود repr استفاده کنید، هرجای دنیا که کلاستون رو پرینت کنین، یا بزنین repr(x) یا بزنین str(x)، به چیزی که میخواید تبدیل میشه:

class A:
def __repr__(self):
return "A: ILY"

a = A()
print(a)
# A: ILY
text = repr(a)
print(text)
# A: ILY

print( [ a ] )
# ["A: ILY"]
🔥91
تبدیل یک سرگرمی، به پروژه ای بزرگ ...
سال ۱۹۹۱، Linus Torvalds، همزمان که دانشجوی علوم کامپیوتر بود، شروع میکنه توی اوقات فراغت خودش و برای سرگرمی خودش، پروژه ای به اسم Linux رو پیش میبره
تنها هدفشم اینه که با پردازنده ی جدید Intel، که اولین پردازنده x86 هست سازگاری داشته باشه تا بتونه با کامپیوتر جدیدش کار کنه
همونطور ک داخل کتابش نوشته: «این پروژه قرار نیست پروژه بزرگی باشه و فقط یک پروژه شخصیه، مثل gnu نخواهد شد.»
اول که سیستم رو میزنه و استفاده هاشو میکنه، به سرش میزنه از ساختار system-callsعه سیستمه Unix، الهام بگیره و روی Linux هم پیاده سازیش کنه
روی سیستم فقط bash و gcc رو میسازه، و به صورت اوپن سورس پخشش میکنه ...

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

بنظرتون فکرش رو میکرد که سرگرمیش، همچین چیزی بشه؟🤔
اون فقط یک عادت کوچیک برای خودش خلق کرده بود «کد زدن روی پروژه های خودش در زمان فراغت» جای گشتن توی اکسپلور اینستا ( اونموقع ک اینستا نبود ولی خب، به در زدم دیوار بشنوه )

تازه اینم هست:
https://t.iss.one/CodingLovers_GP/98747
8👍2
وقتشه از MySQL بریم سراغ PostgreSQL 🐘
دیتابیس PostgreSQL امروز نسخه ۱۷ خودش رو منتشر کرد، و پرفورمنس خودش رو حدودن ۳۰ درصد بهتر کرد، و کلی ابزار جدید با خودش اورد.
میتونم پیشنهاد کنم کوچ کنین به PostgreSQL ...

سایت رسمی
مقایسه نسخه ۱۶ و ۱۷
6👍2
بعد میگن جاوا اسکریپت منطقیه 😑😂😂
🤣21😁3👍2🔥2
از کجا ایموجی انتخاب میکنی
انتخاب کردن ایموجی مناسب واسه متن ها داخل پروژه ( مخصوصا ربات تلگرام )، واقعا کار سختیه، من از emojidb.org استفاده میکنم ...

داخل کامنت ها بگین شما از چی استفاده میکنین؟
8
سلام چطورید، امروز با یه نکته مفید دیگه اومدم که ممکنه به کارتون بیاد

تا حالا به داک استرینگ‌ها توی پایتون توجه کردید؟ 🤔 داک استرینگ‌ها همون توضیحات کوتاه و مفیدی هستن که داخل تریپل کوتیشن‌ها می‌نویسید و هدفشون اینه که عملکرد فانکشن‌ها، کلاس‌ها یا متغیرها رو توضیح بدن

مثال میزنم تا بهتر متوجه بشید:
def add(a, b):
"""
این تابع دو عدد رو به هم اضافه میکنه.

:param a: عدد اول (int یا float)
:param b: عدد دوم (int یا float)
:return: حاصل جمع دو عدد
"""
return a + b


وقتی از داک استرینگ استفاده می‌کنید، می‌تونید با فانکشن help() یا حتی __doc__ به راحتی مستندات کدتون رو ببینید.
اینطوری:
print(help(add))    # نمایش مستندات
print(add.__doc__) # مستندات به صورت ساده


خروجیش اینه:
Help on function add in module __main__:

add(a, b)
این تابع دو عدد رو به هم اضافه میکنه.

:param a: عدد اول (int یا float)
:param b: عدد دوم (int یا float)
:return: حاصل جمع دو عدد


اینطوری می‌تونید کدتون رو برای دیگران قابل فهم‌تر کنید، و وقتی کسی از کدتون استفاده کرد، سریعاً بفهمه هر قسمت چیکار می‌کنه! 😎

مخلص 💜
9👍4🔥2
🕵 خروجی این کد چیه؟
Coding Lovers
🕵 خروجی این کد چیه؟
گزینه مناسب رو انتخاب کنید:
Anonymous Quiz
33%
42
14%
(e,)
26%
"e"
28%
NameError
👍6🤣2