teachify | Unsorted

Telegram-канал teachify - برنامه نویسی | Teachify

10327

برای موفق شدن 🌱 با این عبارت خداحافظی کن: "باشه فردا"🍃 💻 برای دسترسی راحت تر به مطالب به "لیست پین شده" برو🙃 👩‍💻 Support: @narges_madhi 🪧 ads: @teachifyads 💁‍♀️ instagram : instagram.com/teachify_ir

Subscribe to a channel

برنامه نویسی | Teachify

این chatgpt هم خیلی باحاله
یه بار مدیرش میاد میگه ما سر ساخت تصاویر گرافیک هامون دارن آتیش میگیرن :))

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

بعد جالب اینه میگی باشه دیگه ناراحت نشو عکس درست کن، بعدش میره کما و میگه آخه خیلیا دارن عکس درست میکنن ))

فازش رو من نفهمیدم :))
@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ وضعیت این روز های ویکی پدیا :)

پ.ن: البته این روزا به جای ویکی پدیا همه چی میشه گذاشت🥹

@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ وقتی داری یه برنامه می‌نویسی که قراره بین چند بخش مختلف (مثلاً اپ موبایل، فرانت‌اند وب، بک‌اند، دیتابیس، و غیره) ارتباط برقرار کنه، باید یه راهی برای فرستادن و گرفتن اطلاعات داشته باشی. این راه‌های ارتباطی چند نوع معروف دارن:

راه‌های ارتباط بین کلاینت و سرور:

+ REST API (withi HTTP & JSON)
+ gRPC
+ WebSocket
+ GraphQL
+ MQTT (بیشتر برای IoT)
+ Socket Programming (خام و سطح پایین)
+ RPC (نسخه‌های ساده‌تر gRPC)


@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ کد شناسایی بانک از روی شماره کارت با پایتون!

اگه شماره کارت بانکی داری و می‌خوای بدونی این کارت مربوط به کدوم بانکه، فقط کافیه ۶ رقم اولش (BIN) رو بررسی کنی. با این کد پایتونی، به‌راحتی می‌تونی بانک رو تشخیص بدی:

  مناسب پروژه‌های پرداخت، فرم‌های ورود اطلاعات یا تحلیل داده

banks = {
    '603799': 'بانک ملی',
    '603770': 'بانک صادرات',
    '603769': 'بانک کشاورزی',
    '589210': 'بانک سپه',
    '610433': 'بانک ملت',
    '628023': 'بانک مسکن',
    '627648': 'بانک توسعه صادرات',
    '627961': 'بانک صنعت و معدن',
    '627353': 'بانک تجارت',
    '589463': 'بانک رفاه',
    '639347': 'بانک پاسارگاد',
    '627412': 'بانک اقتصاد نوین',
    '622106': 'بانک پارسیان',
    '627488': 'بانک کارآفرین',
    '621986': 'بانک سامان',
    '639346': 'بانک سینا',
    '639607': 'بانک سرمایه',
    '502806': 'بانک شهر',
    '502938': 'بانک دی',
    '627381': 'بانک انصار',
    '639599': 'بانک قوامین',
}

def detect_bank(card_number: str) -> str:
    # Check if input is valid
    if len(card_number) < 6 or not card_number.isdigit():
        return "Invalid card number. Please enter at least 6 digits."

    # Extract first 6 digits (BIN)
    bin_code = card_number[:6]

    # Lookup bank name from dictionary
    bank_name = banks.get(bin_code, "Unknown Bank")

    return f"Detected Bank: {bank_name}"

if __name__ == "__main__":
    print("=== Bank Detector ===")
    card_input = input("Enter your card number: ")
    result = detect_bank(card_input)
    print(result)

@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ شرکت Perplexity از ربات رسمی خودش در تلگرام رونمایی کرده. ازش می‌تونید سوال بپرسید تا سرچ کنه و جواب‌تون رو بده. سرچ های Pro هم توش فعاله. تو گروه هم اگر اضافه‌اش کنید و اگر منشنش کنید، مستقیم توی خود گروه سرچ رو انجام میده. از عکس هم پشتیبانی می‌کنه.

🔗 @askplexbot

@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ زندگی یک برنامه نویس!

بعضی روزها زندگی، شبیه یه متغیر توی رم می‌مونه.
بودنش وابسته‌ست به این که برنامه‌ات هنوز اجرا بشه یا نه.
همین که یه بار restart شدی، همه‌چی پاک میشه...
همه‌ی اون چیزایی که فکر می‌کردی مهمن،
همه‌ی حس‌ها، رویاها، خاطره‌ها —
می‌پرن، چون فقط توی RAM بودن.
اگه چیزی رو بخوای نگه‌داری،
باید بریزش توی یه پایگاه داده،
یه جایی امن، یه جایی موندگار.
ولی زندگی هیچوقت بهت commit نمی‌ده.
هر چی هم ذخیره کنی، شاید یه روز rollback شه.
و ما،
برنامه‌نویس‌هایی که سعی می‌کنیم
توی یه سیستم بدون پایداری،
یه زندگی پایدار بسازیم...

#devlife
@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ زندگی یک برنامه نویس!

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

if not found:
keep_searching()

شاید فقط یه شرط معمولی باشه.
ولی برای تو انگار یه فلسفه‌ست.
نه پیدا شدنی در کاره،
نه توقفی برای جست‌وجو.
یه لوپ بی‌پایان وسط زندگی که فقط سعی می‌کنی بفهمی چی گم شده...
و اصلاً آیا چیزی واقعاً گم شده؟
بعضی وقتا برنامه‌ها مثل آدمان.
فانکشن‌هایی که هیچ‌وقت کال نمی‌شن.
متغیرهایی که فقط تعریف شدن، اما هیچ وقت استفاده نشدن.
یه عالمه "احتمال" که فقط توی حافظه می‌مونن و هیچ‌وقت به واقعیت تبدیل نمی‌شن.
و تو هم مثل یه برنامه‌نویس خسته،
می‌گردی دنبال کامنتی از گذشته‌ت که برات توضیح بده چرا این‌جایی...

#devlife
@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ زندگی یک برنامه نویس!

وقتی یه برنامه‌نویس می‌خواد از زندگی بگه، داستانش همیشه از یه باگ شروع میشه.
یه چیزی که یه جایی درست کار نمی‌کنه... و سوال همیشگی:
"مشکل از کجاست؟"
گاهی تقصیر خودمه.
گاهی هم تقصیر ناسازگاری‌هایی که هیچ‌جوره نمی‌تونستم پیش‌بینی‌شون کنم.
زمان، همیشه یه دیباگر خوبه.
ولی نه همیشه!
یه وقتایی توی نقطه‌هایی گیر می‌کنی که حتی فکرشم نمی‌کردی اونجا چیزی اشتباه باشه.
باگ‌هایی از ناکجاآباد پیداشون میشه.
علتشونو می‌دونی، می‌فهمی چرا هستن،
ولی نمی‌تونی درستشون کنی.
اومدن که بمونن، انگار بخشی از پروژه‌ت شدن،
بخشی که هیچ‌وقت نمی‌خواستی، ولی حالا هست.
مجبوری بذاری یه گوشه‌ی کد،
زیر چند تا کامنت خاک بخورن،
ولی هنوز اونجان،
هنوز اجرا می‌شن.
خیلی شبیه زندگیه.
اتفاقایی که می‌دونی چرا افتادن،
ولی نمی‌تونی عوضشون کنی.
هر چقدر هم که دیباگ کنی، هیچ راه‌حلی براشون نیست.
شاید بعضیا که هنوز یه ذره امید توی وجودشونه بگن:
"همیشه یه راه هست."
ولی من شک دارم.
مگه میشه آدامسی که ماه‌هاست ته کفشت چسبیده رو جدا کرد؟
وقتی با هر قدم، همراهته...
اگه یه نگاه درست بندازی، می‌فهمی این باگ‌های لعنتی از کجا اومدن.
از آدما.
آدمای به ظاهر روشن‌فکر، خانواده، جامعه، حکومت...
هر کی که یه روزی توی زندگی‌مون دستی برده.
باگ‌هارو می‌فهمی.
سرچشمه‌شون معلومه.
ولی نه راهی هست، نه امیدی به فیکس شدنشون...

پ.ن: نظر خود من اینه بازم راهی هست.

#devlife
@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ کمپانی openAI یک آکادمی راه انداخته برای آموزش مهارتهای مربوط به استفاده از AI. کلی ویدیوی کوتاه و مطالب آموزشی داره و به نظر میرسه قراره کلی بهش اضافه بشه.

academy.openai.com‎

@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ جنگو 5.2 منتشر شد!

نسخه‌ی جدید جنگو (Django 5.2) با ویژگی‌های زیر منتشر شد:

+ ایمپورت خودکار مدل‌ها در شل
+ پشتیبانی از کلیدهای اصلی ترکیبی (Composite Primary Keys) 😲
+ بهبود در نحوه‌ی override کردن BoundField

این نسخه LTS (پشتیبانی طولانی‌مدت) است و تا آوریل 2028 پشتیبانی خواهد شد.

Django 5.2 Release Notes

#Django #Python
@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ نرمال‌سازی دیتابیس(Database Normalization)

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

▪️حالا چرا Normalization؟
+ حذف افزونگی داده‌ها و کاهش حجم پایگاه داده
+ جلوگیری از ناسازگاری‌های اطلاعاتی و مشکلات به‌روزرسانی
+ بهبود کارایی و افزایش سرعت پردازش کوئری‌ها

▪️مراحل نرمال‌سازی (Normalization Forms)
+ مرحله 1NF: هر ستون فقط یک مقدار داشته باشد، بدون گروه‌های تکراری.
+ مرحله 2NF: حذف وابستگی‌های جزئی به کلید اصلی.
+ مرحله 3NF: حذف وابستگی‌های انتقالی برای ساختاری تمیزتر و کارآمدتر.

خب سوالی که پیش میاد اینه که آیا همیشه Normalization نیازه؟
در سیستم‌های تحلیلی و خواندنی، گاهی Denormalization (غیرنرمال‌سازی) برای افزایش سرعت خواندن داده‌ها ضروری است. مهم اینه که تعادل بین ساختار بهینه و عملکرد مطلوب حفظ بشه.

@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ وقتی میخوای پول اشتراک ندی :))

#فان #fun
@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

Data = "022345678"
Pos = Data.find("1")
Pos2 = Data.rfind("2")
print(Pos, Pos2)

Читать полностью…

برنامه نویسی | Teachify

✔️ بیل گیتس: هوش مصنوعی به زودی این افراد را بیکار خواهد کرد

بیل گیتس، بنیانگذار مایکروسافت، در اظهاراتی جنجال‌برانگیز پیش‌بینی کرده است که در دهه آینده هوش مصنوعی جایگزین بسیاری از مشاغل انسانی از جمله پزشکان و معلمان خواهد شد. این میلیاردر فناوری در مصاحبه‌ای با جیمی فالون در برنامه «تونایت شو» تأکید کرد که با پیشرفت‌های سریع هوش مصنوعی، دسترسی به خدمات تخصصی مانند مشاوره پزشکی و آموزش باکیفیت به صورت رایگان و همگانی فراهم خواهد شد.

@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

🗣به گزارش خبرآنلاین، شرکت ارتباطات زیرساخت با تأکید بر «قطع نکردن هیچ‌گونه سرویسی»، درباره توقف سرویس‌های رادارگیم و ۴۰۳ توضیح داد که هزینه سرورهای مجازی (VPS) این دو سرویس سالانه حدود دو میلیون یورو بوده و پس از پایان قرارداد در تاریخ ۳۱ دسامبر ۲۰۲۴، دیگر تمایلی به پرداخت این هزینه‌ها نداشته است. زیرساخت دلیل این تصمیم را عدم تناسب هزینه با ترافیک تولیدشده عنوان کرده است.

در مقابل، بهزاد اکبری، معاون وزیر ارتباطات و مدیرعامل شرکت ارتباطات زیرساخت در شبکه اجتماعی X اعلام کرد شرکت‌های ارائه‌دهنده خدمات «403» و «رادارگیم» خودسرانه تصمیم به توقف سرویس‌دهی گرفته‌اند.


💬با این دو روایت متفاوت، سؤال اساسی کاربران این است که آیا توقف رادارگیم و ۴۰۳ تصمیم خود ارائه‌دهندگان بوده یا زیرساخت به‌دلیل هزینه‌های بالا خواستار ادامه همکاری نبوده است؟ هنوز مشخص نیست تناقض در گفت‌وگوی رسمی و اظهارات توییتری چگونه قابل توجیه خواهد بود.

منبع
منبع

Читать полностью…

برنامه نویسی | Teachify

✔️ یه نکته مهم درباره آبجکت None در پایتون!

همه‌چیز تو پایتون یه آبجکته
و None هم از این قاعده مستثنی نیست!

آبجکت None یه نمونه از کلاس NoneType هست و توی پایتون با الگوی Singleton ساخته میشه.
یعنی فقط یک بار ساخته میشه و همه جا همون یه آبجکت استفاده میشه!
حتی اگه هزار تا متغیر بسازیم و مقدارشون رو None بذاریم،
همشون به یک آدرس حافظه اشاره می‌کنن! (identity یکسان دارن)

این یکی از ویژگی‌های جذاب طراحی پایتونه که باعث صرفه‌جویی تو حافظه و عملکرد بهتر میشه!

#پایتون #None
@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ کتابخانه Pydantic چیه؟ چرا باید بشناسیمش؟

اگه با Python کار می‌کنی و دنبال یه راه تمیز و مطمئن برای اعتبارسنجی داده‌ها و ساخت مدل‌های داده‌ای هستی، حتماً باید با Pydantic آشنا بشی!

این کتابخونه چیکار می‌کنه؟
- با استفاده از type hintها مدل داده می‌سازه
- داده‌ها رو به‌صورت خودکار validate می‌کنه
- نوع‌ها رو تبدیل (casting) می‌کنه
- کار با JSON، فرم‌ها و APIها رو آسون می‌کنه

from pydantic import BaseModel

class User(BaseModel):
age: int
name: str
email: str

data = {
"age": "28",
"name": "yousef",
"email": "yousef@example.com"
}

user = User(**data)

print(user.age) # 28 ← change str to int!
print(user.name) # yousef


بدون اینکه خودمون دستی داده رو بررسی کنیم، Pydantic خودش فهمید که باید "28" رو به عدد تبدیل کنه! اگه مقدار اشتباه باشه، ارور می‌گیریم.
همچنین اگه با FastAPI کار می‌کنی، بدون که Pydantic نقش اصلی رو توی مدل‌سازی و اعتبارسنجی درخواست‌ها بازی می‌کنه.

#Python #Pydantic #FastAPI #پایتون
@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

⭕️ نسخه جدید رادار گیم با تغییرات بنیادی و با هدف ارائه‌ی خدماتی با کیفیت‌تر‌ و بهینه‌تر منتشر شده است.

💬در این مسیر، از همراهی و حمایت بی‌دریغ وزیر ارتباطات و فناوری، جناب آقای دکتر ستار هاشمی و مدیرعامل شرکت ارتباطات زیرساخت، جناب آقای دکتر بهزاد اکبری صمیمانه متشکریم که در فراهم آوردن زیرساخت‌های لازم برای نسخه جدید و پوشش کل کشور از هیچ همکاری دریغ نکردند

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


🎮 @RadarGame

Читать полностью…

برنامه نویسی | Teachify

✔️ اگر از Git استفاده می‌کنید، احتمالاً با gitignore. آشنا هستید. ولی یه فایل دیگه هم هست به اسم exclude
حالا این دوتا چه فرقی دارن؟

gitignore.
این فایل توی ریشه‌ی پروژه‌ است و برای نادیده گرفتن فایل‌هایی استفاده میشه که همه‌ی اعضای تیم نباید پیگیری‌شون کنن. خودش هم commit میشه و داخل repo میمونه.

exclude
مسیرش توی git/info/exclude. هست و فقط روی سیستم شخصی شما تأثیر داره. ایده‌آله برای فایل‌هایی که فقط خودت نمی‌خوای track بشن، بدون اینکه توی repo دیده بشن.

پس اگر فایل لوکال خاصی داری و نمی‌خوای توی gitignore. بذاری، برو سراغ exclude

#git
@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ ابزاری قدرتمند در Git برای حذف فایل از تاریخچه مخزن

گاهی پیش می‌آید که نیاز دارید یک فایل خاص (مانند کلیدهای API یا اطلاعات حساس) را از کل تاریخچه‌ی یک مخزن Git حذف کنید، بدون آن‌که کل ریپو را پاک یا بازنویسی کامل کنید. در این شرایط، دستور زیر می‌تواند بسیار مفید باشد:

git filter-repo --path filename.txt --invert-paths

با اجرای این دستور، فایل مشخص‌شده (در اینجا filename.txt) از تمامی کامیت‌های گذشته حذف می‌شود؛ فرآیندی بسیار سریع‌تر و تمیزتر نسبت به ابزار قدیمی‌تر filter-branch.

این روش، راهکاری مناسب برای پاک‌سازی مواردی است که نباید هیچ اثری از آن‌ها در مخزن باقی بماند.
اگر تاکنون از git filter-repo استفاده نکرده‌اید، توصیه می‌شود آن را بررسی و آزمایش کنید. Git ابزارهای قدرتمند و پنهان زیادی در اختیار توسعه‌دهندگان قرار می‌دهد.
#Git

@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

#fun
@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

صبح خود را چگونه شروع کردید؟!

به نام خدا
با ترافیک :/

@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ متا از نسل جدید مدل‌های هوش مصنوعی خودش رونمایی کرد: Llama 4!

اولین عضو این خانواده به نام Llama 4 Scout معرفی شده؛ مدلی چندوجهی و قدرتمند با ۱۷ میلیارد پارامتر که از معماری MoE با ۱۶ متخصص بهره می‌بره.
به گفته‌ی متا، این مدل بهترین مدل مولتی‌مودال در کلاس خودشه و روی یه کارت گرافیک H100 هم اجرا میشه!
همچنین Context window این مدل ۱۰ میلیون توکنه!

@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ وقتی AI بر دنیا تسلط پیدا کنه
دیگه اهمیت نداره که از ChatGPT تشکر کردید انتهای هر پیام یا نه: ))))

@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ تشخیص عدد زوج در پایتون با یک روش سریع‌تر!

در پایتون معمولاً برای تشخیص عدد زوج از این روش استفاده می‌کنیم:

if num % 2 == 0:

اما یک روش جالب‌تر و بهینه‌تر هم وجود دارد که از عملیات بیتی استفاده می‌کند:
if (num & 1) == 0:

در این روش، عملگر & آخرین بیت عدد را بررسی می‌کند. در نمایش باینری، اعداد زوج همیشه آخرین بیت‌شان 0 است، بنابراین نتیجه‌ی این بررسی 0 می‌شود و تشخیص عدد زوج به‌سادگی انجام می‌گیرد.

این روش در بسیاری از زبان‌های برنامه‌نویسی مثل پایتون، C، C++، جاوا و Go کار می‌کند. چون عملیات بیتی ذاتاً سبک‌تر از مدولوس % است، در برخی زبان‌ها عملکرد سریع‌تری دارد.


#پایتون #Python
@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ ابزارهای مدرن برای متخصصان داده و هوش مصنوعی

اگر یک دیتاساینتیست یا مهندس هوش مصنوعی هستید، وقت آن رسیده که از ابزارهای مدرن‌تر و سریع‌تر استفاده کنید!

▪️کتابخانه Polars جایگزین بهتری برای pandas است. این کتابخانه با پردازش موازی و استفاده بهینه از حافظه، عملکرد بهتری روی داده‌های حجیم دارد. نیازی به Index ندارد و از Lazy Evaluation پشتیبانی می‌کند، که باعث کاهش مصرف منابع و افزایش سرعت می‌شود.

▪️ برای محاسبات عددی، Numba می‌تواند جایگزین numpy شود. این ابزار با کامپایل JIT، سرعت اجرای کد را تا چندین برابر افزایش می‌دهد و حتی از GPU (با CUDA) نیز پشتیبانی می‌کند. مهم‌تر از همه، می‌توان کدهای numpy را با چند تغییر کوچک در Numba اجرا کرد.

▪️ در حوزه یادگیری عمیق، JAX انتخاب بهتری نسبت به TensorFlow است. سینتکس ساده‌تر، عملکرد بهینه‌تر، تمایز خودکار پیشرفته (AutoDiff) و پشتیبانی از تبدیل‌های تابعی، آن را به گزینه‌ای ایده‌آل برای تحقیقات علمی و مدل‌های سفارشی تبدیل کرده است.

▪️ اگر هنوز از Matplotlib برای رسم نمودار استفاده می‌کنید، بهتر است Bokeh را امتحان کنید. این کتابخانه امکان ساخت نمودارهای تعاملی و تحت وب را فراهم می‌کند، برای داده‌های حجیم بهینه شده است و می‌توان با آن داشبوردهای پویا طراحی کرد.

▪️ برای مدل‌های یادگیری ماشین مبتنی بر درخت تصمیم، LightGBM نسبت به XGBoost عملکرد بهتری دارد. این کتابخانه سرعت آموزش بالاتر، مصرف حافظه کمتر و پشتیبانی بهتری از ویژگی‌های دسته‌ای (Categorical Features) دارد.

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


#پایتون #Python

@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ تفاوت find() و rfind() در پایتون

در پایتون، دو متد find() و rfind() برای جستجوی یک زیررشته در یک رشته استفاده می‌شوند، اما تفاوت مهمی با هم دارند:
▪️متد find(substring) اولین وقوع substring را در رشته پیدا می‌کند.

▪️متدrfind(substring) آخرین وقوع substring را در رشته پیدا می‌کند.

برای مثال:

text = "banana"

print(text.find("a"))   # 1  (Index of the first occurrence of "a")
print(text.rfind("a"))  # 5  (Index of the last occurrence of "a")

اگر مقدار موردنظر در رشته وجود نداشته باشد، هر دو متد مقدار -1 برمی‌گردانند.

نکته:متدهای find() و rfind() در مقایسه با index() و rindex() امن‌تر هستند، زیرا در صورت نبود مقدار موردنظر، به‌جای ValueError مقدار -1 برمی‌گردانند.

#پایتون #Python
@Teachify | برنامه نویسی

Читать полностью…

برنامه نویسی | Teachify

✔️ قضیه CAP در سیستم های توزیع شده

در دنیای مدرن که فناوری حرف اول را می‌زند، سیستم‌های توزیع شده به بخش جدایی‌ناپذیری از زندگی ما تبدیل شده‌اند. از خرید آنلاین گرفته تا انجام تراکنش‌های بانکی و تعامل در شبکه‌های اجتماعی، همه‌جا ردپای این سیستم‌ها دیده می‌شود. اما طراحی این سیستم‌ها کار ساده‌ای نیست. یکی از مفاهیم کلیدی که به ما در درک چالش‌های این حوزه کمک می‌کند، قضیه CAP است. CAP که مخفف Consistency (یکسانی)، Availability (دسترس‌پذیری) و Partition Tolerance (تحمل پارتیشن) است، چارچوبی برای فهمیدن محدودیت‌ها و انتخاب‌های پیش روی طراحان سیستم‌های توزیع شده ارائه می‌دهد.

در این مقاله، صفر تا صد قضیه CAP را با زبانی ساده و قابل‌فهم توضیح می‌دهیم، جنبه‌های مختلف آن را بررسی می‌کنیم و با مثال‌هایی واقعی مثل خرید بلیط، سیستم بانکی و لایک‌های شبکه اجتماعی، کاربردهایش را نشان می‌دهیم.

در کالی بویز بخوانید: قضیه CAP در سیستم های توزیع شده

@kaliboys | کالی بویز

Читать полностью…

برنامه نویسی | Teachify

/channel/PixelGameee

دنیای بازی ها منتظر توئه!
جدیدترین بازی ها با مناسب‌ ترین و  بهترین قیمت ، گارانتی دائم و پشتیبانی سریع ⚡️امکان فروش مجدد.

بازی‌هاتون رو با مناسب‌ترین قیمت از پیکسل‌گیم تهیه کنید🎮
/channel/PixelGameee


/channel/PixelGameee

Читать полностью…

برنامه نویسی | Teachify

✔️ چرا logging بهتر از print است؟

در برنامه‌نویسی، بسیاری از افراد برای بررسی اجرای کد از print() استفاده می‌کنند، اما logging قابلیت‌های بیشتری دارد که آن را به گزینه‌ای حرفه‌ای‌تر تبدیل می‌کند.

تفاوت print و logging در عمل

در روش print، فقط پیام‌ها در کنسول نمایش داده می‌شوند و هیچ کنترلی روی آن‌ها نداریم:

def divide(a, b):
    if b == 0:
        print("Error: Division by zero!")
        return None
    print(f"Result: {a / b}")
    return a / b

divide(10, 2)  # خروجی: Result: 5.0
divide(5, 0)   # خروجی: Error: Division by zero!

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

در روش logging، پیام‌ها قابل تنظیم، دسته‌بندی و ذخیره در فایل هستند:
import logging

logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")

def divide(a, b):
    if b == 0:
        logging.error("Division by zero!")
        return None
    result = a / b
    logging.info(f"Result: {result}")
    return result

divide(10, 2)  # خروجی: INFO: Result: 5.0
divide(5, 0)   # خروجی: ERROR: Division by zero!

مزایای logging در این مثال:
+ امکان تعیین سطح پیام‌ها (INFO، ERROR و …)
+ امکان ذخیره پیام‌ها در فایل برای بررسی‌های بعدی
+ قابلیت تنظیم نمایش پیام‌ها بر اساس محیط توسعه یا تولید

درنتیجه اگر می‌خواهید پیام‌ها را فقط موقتاً ببینید، print() گزینه مناسبی است. اما برای پروژه‌های حرفه‌ای، logging راهکار بهتری برای مدیریت و تحلیل لاگ‌ها خواهد بود.
@kaliboys | کالی بویز

Читать полностью…
Subscribe to a channel