Coding Lovers
از کدوم مورد استفاده میکنین برای اینکه بفهمین یک متغییر None هست یا نه؟ 1) obj is None 2) obj == None
❗ هیچوقت از روش دوم استفاده نکنین
به چند دلیل:
- استفاده از is بهینه تره و مستقیم ادرس مموری رو بررسی میکنه و از چیزای اضافی پرهیز میکنه
- استفاده از == برای این مورد کاملا خطرناکه، چرا؟ کد رو ببین:
یا حتی ممکنه اروری raise بشه
به چند دلیل:
- استفاده از is بهینه تره و مستقیم ادرس مموری رو بررسی میکنه و از چیزای اضافی پرهیز میکنه
- استفاده از == برای این مورد کاملا خطرناکه، چرا؟ کد رو ببین:
class Example:
def __eq__(self, other):
return True
e = Example()
print(e == None)
print(e is None)
یا حتی ممکنه اروری raise بشه
👍9👎1
😁5🔥3😢2❤1👎1
https://www.youtube.com/watch?v=SRdZj0KfZ5s
چهار تا تکنیک باحال داخل CSS برای اینکه border هارو رنگی و متحرک بسازیم ...
اخره فیلم هم همه رو باهم مقایسه میکنه و خلاصه ک خوشم اومد گفتم باهاتون ب اشتراک بذارم ❤️
@CodingLovers_OFF
چهار تا تکنیک باحال داخل CSS برای اینکه border هارو رنگی و متحرک بسازیم ...
اخره فیلم هم همه رو باهم مقایسه میکنه و خلاصه ک خوشم اومد گفتم باهاتون ب اشتراک بذارم ❤️
@CodingLovers_OFF
❤7👍2🔥1
دوستان اگه کسی لینکدین داره، خوشحال میشم لینکدین خودتونو توی کامنت ها به اشتراک بذارین و کانکشن برقرار کنیم ❤️
لینکدین خودم:
https://www.linkedin.com/in/ali-pooralijan-awolverp
لینکدین خودم:
https://www.linkedin.com/in/ali-pooralijan-awolverp
❤5🔥2👍1
جوری که جدیداً به خودم انگیزه میدم:
هرچیزی شدنیه حتی ران کردن لینوکس روی PDF
هرچیزی شدنیه حتی ران کردن لینوکس روی PDF
👍17😢2
Coding Lovers pinned «🌐 آدرس خانواده کدینگ لاورز توی فضای مجازی: 🌐 YouTube 🌐 Telegram 🌐 Instagram 🌐 GitHub ❤️ حمایت مالی: ❤️ Support ❤️ حمایت معنوی: ❤️ Share posts :)»
لایبرری MarkupEver جایگزین BeautifulSoup!
لایبرری MarkupEver یه لایبرری خفن برای برای خوندن، تجزیه و حتی ایجاد یک HTML یا XML است که با زبان Rust نوشته شده تا سرعت رو درکنار کیفیت حفظ کنه.
گیتهاب:
https://github.com/awolverp/markupever
داکیومنت:
https://awolverp.github.io/markupever
پ.ن: این چندوقت که نبودم درگیر همین بودم، استار یادتون نره 🥹
@CodingLovers_OFF 🔥
لایبرری MarkupEver یه لایبرری خفن برای برای خوندن، تجزیه و حتی ایجاد یک HTML یا XML است که با زبان Rust نوشته شده تا سرعت رو درکنار کیفیت حفظ کنه.
گیتهاب:
https://github.com/awolverp/markupever
داکیومنت:
https://awolverp.github.io/markupever
پ.ن: این چندوقت که نبودم درگیر همین بودم، استار یادتون نره 🥹
@CodingLovers_OFF 🔥
👍11❤6🔥4
دوباره اومدم بگم: وقتشه selenium هم بزاری کنار 😔😂
با لایبرری playwright ( مال مایکروسافت هستش ) مقایسهش کنیم:
خوبی های playwright:
- کنترل بشدت کامل و راحتی بهت میده و هرکاری که فکرشو بکنی میتونی انجام بدی
- حالت async هم پشتیبانی میکنه
- خیلی خیلی سریعتر از سلنیوم هستش
- مموری کمتری مصرف میکنه
بدی های playwright:
- روی لینوکس های هم خانوادهی آرچ کار نمیکنه ( مثل مانجارو )
- مستقیماً با مرورگر های سیستمتون کار نمیکنه بلکه ماجرای خاص خودشو داره
خوبی های سلنیوم:
- با مرورگر های روی سیستمتون کار میکنه
- کامیونیتی خیلی بزرگتری داره
- لایبرری های کاربردی زیادی ازش استفاده کردن
- نصب و استفادش راحت تره
بدی های سلنیوم:
- خیلی کند
- اصلا دسترسی کاملی به مرورگر نمیده و دهنت سرویس میشه تا مثلا با localStorage کار کنی
@CodingLovers_OFF 🔥
با لایبرری playwright ( مال مایکروسافت هستش ) مقایسهش کنیم:
خوبی های playwright:
- کنترل بشدت کامل و راحتی بهت میده و هرکاری که فکرشو بکنی میتونی انجام بدی
- حالت async هم پشتیبانی میکنه
- خیلی خیلی سریعتر از سلنیوم هستش
- مموری کمتری مصرف میکنه
بدی های playwright:
- روی لینوکس های هم خانوادهی آرچ کار نمیکنه ( مثل مانجارو )
- مستقیماً با مرورگر های سیستمتون کار نمیکنه بلکه ماجرای خاص خودشو داره
from playwright.sync_api import sync_playwright
def run(playwright):
chromium = playwright.chromium # or "firefox" or "webkit".
browser = chromium.launch()
page = browser.new_page()
page.goto("https://example.com")
# other actions...
browser.close()
with sync_playwright() as playwright:
run(playwright)
خوبی های سلنیوم:
- با مرورگر های روی سیستمتون کار میکنه
- کامیونیتی خیلی بزرگتری داره
- لایبرری های کاربردی زیادی ازش استفاده کردن
- نصب و استفادش راحت تره
بدی های سلنیوم:
- خیلی کند
- اصلا دسترسی کاملی به مرورگر نمیده و دهنت سرویس میشه تا مثلا با localStorage کار کنی
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.python.org")
# other actions ...
driver.close()
@CodingLovers_OFF 🔥
👍15❤2🔥2
لغات غلط - ربات یا بات تلگرام؟!
خیلی وقته که از اصطلاحات نادرست و بیمعنی برای اشاره به باتها استفاده میشه. فکر کردم بهتره یه توضیح مختصر بدیم تا این اصطلاحات رو درست کنیم و از همون واژههای استاندارد استفاده کنیم.
1️⃣ ربات یا بات؟
- خیلیها میگن «ربات»! ولی در واقع این کلمه اشتباهه.
- ربات به موجوداتی با بدن فیزیکی گفته میشه (مثل رباتهای کارخانهها).
- بات (Bot) به برنامههای نرمافزاری گفته میشه که کارهای خاصی رو انجام میدن.
پس دیگه از این به بعد به جای «ربات تلگرام» بگیم بات تلگرام! ✅
2️⃣ بات CLI ؟ بات سلف؟
این اسمها نه تنها استاندارد نیستن، بلکه اصلاً معنی خاصی ندارن!
اسم درستش یوزربات (Userbot) هست. یوزرباتها باتهایی هستن که روی اکانت شخصی کاربر ران میشن و کارهایی رو انجام میدن.
پس دیگه از این به بعد به جای اونا بگیم یوزربات! ✅
3️⃣ بات API؟
این هم غلطه، البته که از اون لغات عجیب غریب قابل درک تره :)
پروتوکل MTProto هم یه API هست و تلگرام خودش داکیومنتش رو منتشر کرده.
پس دلیلی نداره که به باتهای ساختهشده با botfather بگیم «بات API».
اسم درستش بات هست! ✅ همین. پسوند و پیشوندی نداره.
پ.ن: این پست رو دوستمون @sajiminer ساخته ❤️، من فقط ادیتش زدم; این مطلب رو شِیر کنین تا این لغات تصحیح بشن ...
@CodingLovers_OFF 🔥
خیلی وقته که از اصطلاحات نادرست و بیمعنی برای اشاره به باتها استفاده میشه. فکر کردم بهتره یه توضیح مختصر بدیم تا این اصطلاحات رو درست کنیم و از همون واژههای استاندارد استفاده کنیم.
1️⃣ ربات یا بات؟
- خیلیها میگن «ربات»! ولی در واقع این کلمه اشتباهه.
- ربات به موجوداتی با بدن فیزیکی گفته میشه (مثل رباتهای کارخانهها).
- بات (Bot) به برنامههای نرمافزاری گفته میشه که کارهای خاصی رو انجام میدن.
پس دیگه از این به بعد به جای «ربات تلگرام» بگیم بات تلگرام! ✅
2️⃣ بات CLI ؟ بات سلف؟
این اسمها نه تنها استاندارد نیستن، بلکه اصلاً معنی خاصی ندارن!
اسم درستش یوزربات (Userbot) هست. یوزرباتها باتهایی هستن که روی اکانت شخصی کاربر ران میشن و کارهایی رو انجام میدن.
پس دیگه از این به بعد به جای اونا بگیم یوزربات! ✅
3️⃣ بات API؟
این هم غلطه، البته که از اون لغات عجیب غریب قابل درک تره :)
پروتوکل MTProto هم یه API هست و تلگرام خودش داکیومنتش رو منتشر کرده.
پس دلیلی نداره که به باتهای ساختهشده با botfather بگیم «بات API».
اسم درستش بات هست! ✅ همین. پسوند و پیشوندی نداره.
پ.ن: این پست رو دوستمون @sajiminer ساخته ❤️، من فقط ادیتش زدم; این مطلب رو شِیر کنین تا این لغات تصحیح بشن ...
@CodingLovers_OFF 🔥
👍22❤4👎4🔥2
عید نوروز تون پیشاپیش مبارک، امیدوارم سال خوبی در پیش باشه 🥳
امیدوارم سال جدید براتون پر از کامیتهای بدون باگ، دیپلویهای موفق و پروژههایی باشه که نیاز به ریفکتور ندارن!😁
#NowruzMubarak
💜 @CodingLovers_OFF 💛
امیدوارم سال جدید براتون پر از کامیتهای بدون باگ، دیپلویهای موفق و پروژههایی باشه که نیاز به ریفکتور ندارن!
#NowruzMubarak
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18👍2🔥1
👍12❤4🔥3🤣1
جنگو 5.2 منتشر شد 🎉
دیروز این نسخه جدید از جنگو منتشر شده که پر از تغییرات بوده.
بعضی از تغییرات مهمش عبارتند از:
✅ فیلد جدید CompositePrimaryKey برای دیتابیس
✅ قابلیت شخصی سازیه بیشتر فرم ها
✅ اضافه شدن کلی تابع async به بهش auth
✅ کلی بهبود توی دیتابیس، فرم ها، HttpResponse و HttpRequest داشتیم
✅ کلی متود جدید async توی QuerySet اضافه شده
و کلی تغییرات دیگه ...
https://docs.djangoproject.com/en/5.2/releases/5.2/
@CodingLovers_OFF 🔥
دیروز این نسخه جدید از جنگو منتشر شده که پر از تغییرات بوده.
بعضی از تغییرات مهمش عبارتند از:
✅ فیلد جدید CompositePrimaryKey برای دیتابیس
✅ قابلیت شخصی سازیه بیشتر فرم ها
✅ اضافه شدن کلی تابع async به بهش auth
✅ کلی بهبود توی دیتابیس، فرم ها، HttpResponse و HttpRequest داشتیم
✅ کلی متود جدید async توی QuerySet اضافه شده
و کلی تغییرات دیگه ...
https://docs.djangoproject.com/en/5.2/releases/5.2/
@CodingLovers_OFF 🔥
🔥9❤2👍1
یکی از ماژول های built in پایتون که مخصوصا برای برنامه های CLI خیلی بدرد میخوره رو اینجا نشونتون دادم 🤗
https://youtube.com/shorts/GUBT7wgqE1Q?si=QCcGgo1TVYSZyU6n
https://youtube.com/shorts/GUBT7wgqE1Q?si=QCcGgo1TVYSZyU6n
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
با این ترفند پایتون، از پسورد کاربر محافظت کن
ماژول getpass پایتون
❤13👍2🔥2👎1
Refactoring UI.pdf
53.1 MB
کتاب Refactoring UI
یه منبع فوق العاده از نکاتی برای طراحی UI که سازنده ی TailwindCSS طراحی کرده در سال 2021.
کسایی که دنبال اصول و نکات دیزاین هستن براشون این کتاب فوق العادست ...
چند تا از سرفصل هاش:
- Start with a feature, not a layout
- Grids are overrated
- Shadows can have two parts
حقیقتا خیلی خفنه و باید همشو بخونم 🙌🏻
🔖 Source
🔥 @CodingLovers_OFF
یه منبع فوق العاده از نکاتی برای طراحی UI که سازنده ی TailwindCSS طراحی کرده در سال 2021.
کسایی که دنبال اصول و نکات دیزاین هستن براشون این کتاب فوق العادست ...
چند تا از سرفصل هاش:
- Start with a feature, not a layout
- Grids are overrated
- Shadows can have two parts
حقیقتا خیلی خفنه و باید همشو بخونم 🙌🏻
🔖 Source
🔥 @CodingLovers_OFF
👍9❤2
Forwarded from BotNews
Bot API 9.0
Announcing the largest Bot API update of 2025 (so far😈 )
🏪 Telegram Business 2.0
• Bots can now fully customize the branding of Business Accounts – managing their name, username, bio and profile pictures.
• Introduced support for managing Paid Gifts🎁 , including conversions, transfers and upgrades.
• Bots can now check⭐️ Telegram Star balances and transfer Stars from managed businesses.
• Bots can now easily mark Business messages as read or delete them.
• Added extensive support for managing stories on Business accounts – featuring photos, videos and interactive elements like links, locations, reactions, weather info and even Gifts.
• All stories posted by bots can also be edited or deleted.
• Introduced granular Business permissions, giving users even finer control over connected bots.
🗃️ Mini App Storage
• Mini Apps can now store data locally on the user's device.
• Sensitive tokens can be safely persisted in a specialized secure storage.
🎁 Telegram Gifts
• Introduced support for unique Gifts – with detailed model, symbol and backdrop info.
• Bots can also check which Gift types are accepted by users and chats.
⭐️ Paid Messages
• Bots can now track how many Stars users paid to send a message.
• This includes out-of-the-box support for paid messages in both groups and business accounts.
⭐️ Telegram Premium
• Bots can now gift a Telegram Premium subscription paid in Stars.
• And more, see the full changelog for details:
https://core.telegram.org/bots/api-changelog#april-11-2025
Announcing the largest Bot API update of 2025 (so far
• Bots can now fully customize the branding of Business Accounts – managing their name, username, bio and profile pictures.
• Introduced support for managing Paid Gifts
• Bots can now check
• Bots can now easily mark Business messages as read or delete them.
• Added extensive support for managing stories on Business accounts – featuring photos, videos and interactive elements like links, locations, reactions, weather info and even Gifts.
• All stories posted by bots can also be edited or deleted.
• Introduced granular Business permissions, giving users even finer control over connected bots.
• Mini Apps can now store data locally on the user's device.
• Sensitive tokens can be safely persisted in a specialized secure storage.
• Introduced support for unique Gifts – with detailed model, symbol and backdrop info.
• Bots can also check which Gift types are accepted by users and chats.
• Bots can now track how many Stars users paid to send a message.
• This includes out-of-the-box support for paid messages in both groups and business accounts.
• Bots can now gift a Telegram Premium subscription paid in Stars.
• And more, see the full changelog for details:
https://core.telegram.org/bots/api-changelog#april-11-2025
Please open Telegram to view this post
VIEW IN TELEGRAM
BotNews
Bots can now fully customize the branding of Business Accounts – managing their name, username, bio and profile pictures.
یعنی به جای یوزربات، از این به بعد با بات هم میشه ساعت روی اسم گذاشت؟ 😂
😁10👍2🤣2
میخوام فردا درباره یچیزی پست بزارم
با یک سوال شروع میکنم
بنظرتون ممکنه یک آرایه از میلیارد ها آیتم داشته باشیم، ولی هیچ مموریی استفاده نشده باشه ؟!
پ.ن: داخل پایتون که اصلا نمیشه، به پایتون فکر نکنین
با یک سوال شروع میکنم
بنظرتون ممکنه یک آرایه از میلیارد ها آیتم داشته باشیم، ولی هیچ مموریی استفاده نشده باشه ؟!
پ.ن: داخل پایتون که اصلا نمیشه، به پایتون فکر نکنین
👍8
Coding Lovers
میخوام فردا درباره یچیزی پست بزارم با یک سوال شروع میکنم بنظرتون ممکنه یک آرایه از میلیارد ها آیتم داشته باشیم، ولی هیچ مموریی استفاده نشده باشه ؟! پ.ن: داخل پایتون که اصلا نمیشه، به پایتون فکر نکنین
اینقدر استقبال شد خواستم الان بزارم 😂❤️
🔥 ساختار ZST در Rust
برخلاف تمام زبان ها، راست ساختاری داره به اسم Zero Sized Type.
یعنی تایپی که هیچ حافظه ای نمیگیره!
راست تمام مرز هارا جابجا میکند😂💣
به این شکل تعریف میشه:
این تایپ هیچ حافظه ای نمیگیره! حتی اگه ازش میلیارد ها بار داخل آرایه استفاده کنیم، هیچ حافظه ای نمیگیره.
زبان Rust گارانتی میکند که ZSTها را بدون مصرف حافظه مدیریت میکند.
چجوری این اتفاق میوفته؟ 🤔
این موضوع کمی ضد شهود به نظر میرسد، اما جواب آن به طراحی هوشمندانه کامپایلر Rust برمیگردد.
وقتی میگوییم ZST حافظه مصرف نمیکند، یعنی هیچ بایت حافظهای در مموری برای آن رزرو نمیشود.
در این کد متغیر
پس اطلاعاتش کجاست؟ 😐
کامپایلر Rust بهصورت استاتیک (در زمان کامپایل) متوجه میشود که این یک ZST است و:
- هر جا به متغیر
- حتی اگر ادرس مموری از آن گرفته شود، کامپایلر یک آدرس سمبلیک (غیرواقعی) میسازد، اما در باینری نهایی، این آدرس به هیچ حافظه فیزیکی اشاره نمیکند.
- این آرایه Vec، یک میلیون آیتم دارد، اما:
- هیچ حافظهای برای عناصرش مصرف نشده
- فقط ساختار مدیریتی Vec (مثل طول و ظرفیت) حافظه مصرف میکند.
پ.ن: درکش یکم سخته ولی خیلی جالبه
مثل تخیل کردن میمونه. تخیل کردنِ چیزی که وجود نداره 🤔😂
🔥 @CodingLovers_OFF
🔥 ساختار ZST در Rust
برخلاف تمام زبان ها، راست ساختاری داره به اسم Zero Sized Type.
یعنی تایپی که هیچ حافظه ای نمیگیره!
راست تمام مرز هارا جابجا میکند😂💣
به این شکل تعریف میشه:
struct Empty;
این تایپ هیچ حافظه ای نمیگیره! حتی اگه ازش میلیارد ها بار داخل آرایه استفاده کنیم، هیچ حافظه ای نمیگیره.
زبان Rust گارانتی میکند که ZSTها را بدون مصرف حافظه مدیریت میکند.
چجوری این اتفاق میوفته؟ 🤔
این موضوع کمی ضد شهود به نظر میرسد، اما جواب آن به طراحی هوشمندانه کامپایلر Rust برمیگردد.
وقتی میگوییم ZST حافظه مصرف نمیکند، یعنی هیچ بایت حافظهای در مموری برای آن رزرو نمیشود.
let x = Empty;
در این کد متغیر
x وجود دارد (از نظر معنایی در کد)، اما هیچ جایی در حافظه برای آن اختصاص داده نمیشود.پس اطلاعاتش کجاست؟ 😐
کامپایلر Rust بهصورت استاتیک (در زمان کامپایل) متوجه میشود که این یک ZST است و:
- هر جا به متغیر
x اشاره شود، مستقیماً مقداری خالی را جایگزین میکند. ( مقدار () )- حتی اگر ادرس مموری از آن گرفته شود، کامپایلر یک آدرس سمبلیک (غیرواقعی) میسازد، اما در باینری نهایی، این آدرس به هیچ حافظه فیزیکی اشاره نمیکند.
let v: Vec<Empty> = vec![Empty; 1_000_000];
- این آرایه Vec، یک میلیون آیتم دارد، اما:
- هیچ حافظهای برای عناصرش مصرف نشده
- فقط ساختار مدیریتی Vec (مثل طول و ظرفیت) حافظه مصرف میکند.
پ.ن: درکش یکم سخته ولی خیلی جالبه
مثل تخیل کردن میمونه. تخیل کردنِ چیزی که وجود نداره 🤔😂
🔥 @CodingLovers_OFF
🔥10❤1👍1