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
Forwarded from BotNews
Bot API 7.11

Bots can now participate in revenue sharing from Telegram Ads ⭐️ – unlocking a new way to help support their development.
Introduced Paid Broadcasts ⭐️ – allowing bots to broadcast up to 1000 messages per second.

Bots can now send and receive chat-specific hashtags that only show posts and stories from a specific chat when tapped.
Added a new inline button to let users copy text in one tap.
Bots can now add media to existing text messages.

And more, see the full changelog for details:

https://core.telegram.org/bots/api-changelog#october-31-2024

⚠️ Warning: Starting December 1, 2024 messages with video posted in big communities can be delayed by the server until the respective video is reencoded. Read more here.
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍2🔥1
BotNews
• Bots can now participate in revenue sharing from Telegram Ads ⭐️ – unlocking a new way to help support their development.
ربات ها هم مثل کانال ها میتونن درآمد کسب کنن از تبلیغات تلگرام 🔥
1🔥7👍32🤣2😁1
باهم بخندیم ( به هم نخندیم )

int main() {
scanf(%d%d, &a, &b);
sum = a + b;
printf(sum, "%d");
}

کدی که امروز استاد نوشت از روش توضیح داد😂😂
🤣15
Coding Lovers
باهم بخندیم ( به هم نخندیم ) int main() { scanf(%d%d, &a, &b); sum = a + b; printf(sum, "%d"); } کدی که امروز استاد نوشت از روش توضیح داد😂😂
دلم برای کسایی که از دانشگاه میخوان چیزی یاد بگیرن میسوزه واقعا
چه جامعه ایه آخه
👍21👎3🤣1
رنک بندی گیتهاب بر اساس استار ها رو میتونین از این سایت ببینین

https://www.stardev.io/

رنک گیتهابتون چنده؟
👍2
شوخیتون گرفته؟ یه زبان برنامه نویسی تقریبا معروف داریم به اسم Portugol که کاملا زبانش بریزیلیه

پ.ن داخل دبیرستان های برزیل هم تدریس میشه😐😂

مثلا
funcao somamatriz(n: inteiro): inteiro
var
i, j, soma : inteiro
inicio
soma <- 0
para i de 1 ate 10 faca
para j de 1 ate 10 faca
soma <- soma + a[i,j] (ref:scope)
fimpara
fimpara
retorne soma
fimfuncao

algoritmo "semnome"
var
i, j : inteiro
a : vetor [1..10,1..10] de inteiro
inicio
para i de 1 ate 10 faca
para j de 1 ate 10 faca
a[i,j] <- i + j
fimpara
fimpara
escreva ("Resultado: ", somamatriz(5))
fimalgoritmo
😁11👍1👎1
This media is not supported in your browser
VIEW IN TELEGRAM
شمارش باینری اینطوریه 🤖
🔥18👍2
میخوام درمورد thread-safe بهتون توضیح بدم.
اول یک نسخه از هوش مصنوعی میزارم، و بعد خودم کاملش میکنم.
Coding Lovers
میخوام درمورد thread-safe بهتون توضیح بدم. اول یک نسخه از هوش مصنوعی میزارم، و بعد خودم کاملش میکنم.
در برنامه‌نویسی، وقتی درباره "thread safe" صحبت می‌کنیم، منظورمان این است که کد نوشته شده می‌تواند به درستی در محیطی که چندین رشته (threads) به طور همزمان در حال اجرا هستند، عمل کند، بدون اینکه منجر به مشکلاتی نظیر تداخل داده یا خطاهای دیگر شود.

فرض کنید دو یا چند رشته بخواهند به طور همزمان به یک متغیر مشترک دسترسی پیدا کنند. اگر این دسترسی‌ها به درستی هماهنگ نشوند، ممکن است داده‌ها دچار مشکل شوند. به عنوان مثال، تصور کنید دو نفر در حال نوشتن بر روی یک تخته سیاه هستند. اگر هر کدام بدون هماهنگی با دیگری چیزی بنویسد، نوشته‌ها با هم تداخل خواهند داشت و نتیجه ناواضح خواهد بود. در برنامه‌نویسی، این مشکل با استفاده از مکانیزم‌هایی مثل قفل (lock) یا مچینگ (mutex) حل می‌شود.

بیایید یک مثال ساده با پایتون ببینیم:

import threading

# متغیر مشترک
shared_counter = 0

# یک قفل برای هماهنگی بین رشته‌ها
lock = threading.Lock()

def increment_counter():
global shared_counter

for _ in range(10000):
lock.acquire()
shared_counter += 1
lock.release()

# ایجاد دو رشته که به طور همزمان متغیر مشترک را افزایش می‌دهند
thread1 = threading.Thread(target=increment_counter)
thread2 = threading.Thread(target=increment_counter)

# شروع به کار رشته‌ها
thread1.start()
thread2.start()

# منتظر می‌مانیم تا هر دو رشته کارشان را تمام کنند
thread1.join()
thread2.join()

print("Final counter value:", shared_counter)

در این مثال، ما یک متغیر مشترک به نام shared_counter داریم و دو رشته که هر کدام ۱۰۰۰۰ بار این متغیر را افزایش می‌دهند. اگر از قفل استفاده نکنیم، ممکن است نتیجه نهایی shared_counter درست نباشد، چرا که ممکن است دو رشته همزمان به آن دسترسی پیدا کنند و مقدار آن را به اشتباه افزایش دهند. اما با استفاده از قفل (lock.acquire() و lock.release())، اطمینان حاصل می‌کنیم که در هر زمان فقط یک رشته به shared_counter دسترسی دارد، و این باعث می‌شود که برنامه به درستی کار کند و مقدار نهایی صحیح باشد.

به این ترتیب، می‌توانیم کدی بنویسیم که "thread safe" باشد و در محیط‌های چند رشته‌ای بدون مشکل کار کند.
👍4
Coding Lovers
در برنامه‌نویسی، وقتی درباره "thread safe" صحبت می‌کنیم، منظورمان این است که کد نوشته شده می‌تواند به درستی در محیطی که چندین رشته (threads) به طور همزمان در حال اجرا هستند، عمل کند، بدون اینکه منجر به مشکلاتی نظیر تداخل داده یا خطاهای دیگر شود. فرض کنید…
حالا یکم درباره GIL هم توضیح بدم.
پایتون خودش چیزی داره به اسم GIL که یک lock عمومی برای هر thread هستش
یعنی هرکاری بخواد صورت بگیره اول gil رو قفل میکنه بعد انجام میده ( برای همین خیلی ها نمیتونن خوب async رو درک کنن میرن هرچی تابع دارن async def میسازن )

خب چرا ما خودمون اینجا lock ساختیم؟
چون هر تردینگ یه gil مختص به خودش رو داره و به دیگری مربوط نیست
👍8
یه روش بگم حجم ویدیو هارو به شکل وحشتناک کاهش بدین؟ با ffmpeg
بدونه افت کیفیت و سرعت ویدیو، با ffmpeg حجم رو کاهش بدین؛ چجوری؟

ffmpeg -i input.mp4 -vcodec libx265 -crf 28 output.mp4

جلوی -i ویدیویی که میخواید حجمش کم شه رو بزارید ( میتونه هر فرمتی باشه )
جلوی -crf میتونین مشخص کنین تعداد فریم ریت ها رو

این دستور چیکار میکنه؟ نمیدونم دقیقا چه بلایی سر ویدیو میاره 😐❤️، فقط میدونم نوع رمزنگاری فایل رو به H.265 تغییر میده که باعث کم شدن حجم ویدیو میشه.

ترفند: میخواین صدای ویدیو هم بردارین همزمان که کاهش حجم میدین؟
ffmpeg -i input.mp4 -vcodec libx265 -crf 28 -af "volume=0" output.mp4



پ.ن: یه بار ۸۰ مگ رو کرد ۵ مگ پرام ریخت
216
یه کوییز جالب، خودم تازه فهمیدم اینو

خروجی کد توی عکس چیه؟ 🤓
خروجی کد بالا چیه؟
Anonymous Quiz
31%
0
33%
ValueError
17%
1
19%
-1
😁7👍3🤣2
🚫کاستوم‌فیلتر ها ( CUSTOM FILTERS ) در #تلبات

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


📄 - لیست کامل فیلتر ها؛
AdvancedCustomFilter : کلاس‌پایه فیلتر
IsAdminFilter : محدود کردن به ادمین/اونر
ForwardFilter : محدود کردن به فوروارد
ChatFilter : تطابق چت‌ایدی
IsDigitFilter : محدود کردن به عدد
IsReplyFilter : محدود کردن به ریپلای
LanguageFilter : محدود کردن به LC
SimpleCustomFilter : کلاس پایه فیلتر سفارشی
StateFilter : محدود کردن استیت
TextContainsFilter : محدود کردن به وجود متن در آپدیت
TextFilter : محدود کردن متن تایپ ها
TextMatchFilter : محدود کردن متن مسیج
TextStartsFilter : محدود کردن متن مسیج با شروعی خاص



👍- حالا که با انواع فیلتر های موجود در تلبات آشنا شدیم، بیایید نحوه به کار بردن و استفاده عمومی از این فیلتر ها رو ببینیم و عملی انجام بدیم؛

1️⃣ توی قدم اول باید CUSTOM_FILTERS رو از تلبات ایمپورت و سپس با متد ADD_CUSTOM_FILTER فیلتر مورد نظر رو بر شی TELEBOT اعمال کنیم :
from telebot import TeleBot, custom_filters

app = TeleBot()

app.add_custom_filter(Custom_filters.TextStartsFilter()) #EX

2️⃣ بعد از اد کردن فیلتر مورد نظر به شئ تلبات و استفاده از فیلتر ها داخل هندلر، بایستی بسته به نوع فیلتر از KEY ها داخل هندلر استفاده کنیم. توی حالت کلی بنا بر نحوه پیاده سازی فیلتر ها، KEY ها میتونن هر مقداری باشند، با فرض وجود کد بالایی و اعمال کردن فیلتر START TEXT FILTER این سمپل رو با KEY مختص به این فیلتر ببینید :
@app.message_handler(text_startswith='XD')
def _(message):
...

😎 حالا این هندلر در صورتی فعال و شروع به کار میکنه که آپدیت دریافتی‌ تکست و با "XD" شروع شده باشه، پس در نهایت :
from telebot import TeleBot, custom_filters
from telebot.types import Message

app = TeleBot()

@app.message_handler(text_startswith='XD')
def _(message: Message):
app.reply_to(message=message, text='XD')

app.add_custom_filter(custom_filters.TextStartsFilter())
app.infinity_polling()


👀- حالا که با نحوه کلی و جامع پیاده سازی کاستوم‌فیلتر ها آشنا شدید، ليست KEY و تایپ های هر فیلتر رو با هم ببینیم :
💡FilterName : Key | Type

ChatFilter : key = chat_id | type = List

TextContainsFilter : key = text_contains | type = List

TextMatchFilter : key = text | type = List

LanguageFilter : key = language_code | type = List

ForwardFilter : key = is_forwarded | type = Bool

IsAdminFilter : key = is_chat_admin | type = Bool

IsDigitFilter : key = is_digit | type = Bool

IsReplyFilter : key = is_reply | type = Bool
StateFilter : key = state | type = Int

TextStartsFilter = key = text_startswith | type = String

🧑‍🎓- پس ی جمع بندی کلی و کامل داشته باشیم، برای استفاده از هر فیلتر کافیه با متد ADD_CUSTOM_FILTER اون رو به شئ TELEBOT اد کنیم و با KEY هاشون، هندلر ها رو به آپدیت های خاصی محدود کنیم، از طرفی مانع کد زدن اضافی و از طرف دیگه موجب تمیزی و خوانایی و از همه مهم‌تر مدیریت کد‌هامون رو راحت تر میکنه، فعلا در همین اندازه شناخت داشته باشید، طی پست های آینده، از بیسیک‌ و ریشه‌ای ترین فیلتر ها اقدام به کالبد شکافی میکنیم بصورت مفصل.


پ‌ن؛ حالا انتخابتون چیه؟! 🤔 استفاده از کاستوم‌فیلتر ها یا نوشتن شروط پیچیده و استفاده از FUNC LAMBDA؟!

😎 CodingLovers | #Farshad
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍64
3k ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
27🤣7👍3🔥1😁1
دنبال یه ایده خفن میگردی؟ هیچ ایده ای نداری؟ 🥲
میخوام چیزی رو یادتون بدم که خودم تازگیا یادش گرفتم.
بهترین ایده بنظرتون چیه؟ بهترین ایده که میتونه طرفدار زیادی رو جذب کنه، قطعا چیزی هست که نیاز دیگران رو رفع کنه ( اینو هممون میدونستیم، خب بعدش؟ ).

نیاز دیگران رو چجوری بفهمیم؟
جمله کلیشه ای: اول خودت، بعد دیگران. هرچیزی که تو بهش احتیاج داری قطعا دیگران هم بهش احتیاج دارن.
پس جای اینکه دنبال نیاز دیگران باشی، باید دنبال نیاز خودت بگردی. پس همین حالا نیاز هات رو لیست کن، و هرجایی که به چیزی احتیاج داشتی که پیداش نمیکردی، داخل لیست نیاز هات بنویس.
حالا تو کُلی ایده و نیاز برای رفع کردن داری ...

شبیه ایدت زیاده؟
خب که چی؟ هزار تا برند گوشی داریم. اما هیچکدوم شدن سامسونگ؟ اپل؟
اینا چه فرقی با بقیه داشتن؟ همه که یه کارو انجام میدن!
مهم نیست شبیه زیاده؛ آدم ها وقتی میخوان انتخاب کنن اونی رو انتخاب میکنن که با بقیه تفاوت داره و چیزی داره که قانع‌شون میکنه: «بقیه رو ول کن، من بهترم.»
سی‌پی‌یو اپل کاملا متفاوت از دیگرانه. کیفیت سامسونگ رو هیچ برندی نداره ( طبق کامنت هاتون جدیدن انگار ترکیده ).

🤔 نظر شما چیه؟
114🔥2
Coding Lovers
SimpleCustomFilter : کلاس پایه فیلتر سفارشی
🥱روز دوم رو با کلاس پایه کاستوم فیلتر شروع کنیم.


پایه‌ای ترین کارکرد کاستوم فیلتر رو میتونیم با SIMPLE CUSTOM FILTER پیاده سازی کنیم، چطوری؟! کافیه اقدام‌ به ساخت ی چیلد‌ کلس با فیلتر مورد نظر در متد CHECK کنیم، توی حالت کلی به عنوان پارامتر ورودی مجاز به دریافت یک پارامتر و در نهایت بولین TRUE یا FALSE ریترن میکنه. بریم که توی عمل نحوه پیاده‌سازیش رو داشته باشیم.


1️⃣- طبق معمول‌ و روال گذشته بایستی وابستگی ها رو از CUSTOM_FILTERS ماژول تلبات ایمپورت کنیم؛
from telebot import TeleBot 
from telebot.custom_filters import SimpleCustomFilter

app = TeleBot()


2️⃣- توی قدم بعدی باید اقدام به ساخت  کلاس و اد کردن اون به شئ تلبات کنیم، ساختار این کلاس به این صورت باید باشه که به عنوان کلاس والد SIMPLECUSTOMFILTER رو دریافت و با ایجاد KEY اختصاصی خود و تکمیل و کاستوم کردن متد CHECK توی هندلر هامون مورد استفاده قرار بگیره، مثالی از پیاده سازیش ببینید که در ادامه قراره نکات مهمی رو مرور کنیم؛
__Bot_Status__: str = 'ON' 

class CodingLovers(SimpleCustomFilter):
    key: str = 'XD'

    @staticmethod
    def check(update):
        return (__Bot_Status__ == 'ON')

app.add_custom_filter(CodingLovers())

🚫- نکات و الزامات این بخش:
🔵نام متد CHECK باید دقیقا به همین صورت باشه!
🟡متد CHECK حداکثر ی پارامتر که همون آپدیت هندلر باشه رو میتونه دریافت کنه ( برعکس ADVANCEDCUSTOMFILTER که در آینده باهاش آشنا میشیم )

👀- پس در نهایت این سمپل رو خواهیم داشت؛
پ‌ن، اینجا __BOT_STATUS__ رو شما حالتی فرض کنید که قراره چک کردن واقعی اتفاق بیوفته، حقیقتا مثال دیگه ای به ذهنم نرسید ☺️
from telebot import TeleBot 
from telebot.types import Message
from telebot.custom_filters import SimpleCustomFilter

app = TeleBot()

__Bot_Status__: str = 'ON'

class CodingLovers(SimpleCustomFilter):
    key: str = 'XD'

    @staticmethod
    def check(update):
        return (__Bot_Status__ == 'ON')

@app.message_handler(commands=['start'], XD=True)
def _(message: Message):
    app.reply_to(message=message, text='XD')
   
@app.message_handler(commands=['start'], XD=False)
def _(message: Message):
    app.reply_to(message=message, text='Bot is Off')

app.add_custom_filter(CodingLovers())
app.infinity_polling()

اگه بخوایم کامل تشریح کنیم که چه فرایندی توی این کد طی میشه، باید گفت : با ايجاد کلاس فیلتر مورد نظرمون و تکمیل کردن متد CHECK، در قدم اول به شی TELEBOT اد میشه و میتونیم داخل همه هندلر هامون با KEY یونیکی که واسه فیلتر در نظر گرفتیم استفاده کنیم، وقتی توی هندلر اولیمون که کامند استارت رو هندل میکنه از این فیلتر استفاده میکنیم و KEY که در این کد XD هست رو برابر بولین TRUE میزاریم، در صورتی هندلر شروع به کار و انجام دادن بلوک زیرینش میکنه که شرط داخل متد CHECK فیلرتمون برابر با TRUE باشه و در صورتی هندلر دومی شروع به کار میکنه که شرط متد CHECK فیلترمون برابر با بولین FALSE باشه!  مثال دیگه ای پیاده سازیشو میتونین اینجا ببینین، همچین اگه سوال یا ابهامی داشتید کامنت کنید.

😎 CodingLovers | #Farshad
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍4🔥2