Syntax | سینتکس – Telegram
لاگینگ (logging) در پایتون

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

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

سطوح لاگ
سطوح لاگ به شما امکان می دهد تا نوع پیام هایی که ثبت می شوند را کنترل کنید. سطوح لاگ رایج عبارتند از:

DEBUG: اطلاعات اشکال زدایی دقیق
INFO: اطلاعات عمومی مربوط به عملکرد برنامه
WARNING: هشدارهای مربوط به مشکلات احتمالی
ERROR: خطاهای جدی که باعث خرابی برنامه می شوند
CRITICAL: خطاهای بحرانی که نیاز به اقدام فوری دارند

هندلرهای لاگ
هندلرهای لاگ تعیین می کنند که پیام های لاگ به کجا ارسال می شوند. هندلرهای لاگ رایج عبارتند از:

StreamHandler:
ارسال پیام های لاگ به stdout یا stderr
FileHandler:
ارسال پیام های لاگ به یک فایل
SysLogHandler:
ارسال پیام های لاگ به syslog

مثال
در اینجا مثالی از نحوه استفاده از کتابخانه logging برای لاگینگ آورده شده است:


import logging

# پیکربندی لاگ
logging.basicConfig(
filename='ch11.log',
level=logging.DEBUG, # minimum level capture in the file
format='[%(asctime)s] %(levelname)s: %(message)s',
datefmt='%m/%d/%Y %I:%M:%S %p')

mylist = [1, 2, 3]
logging.info('Starting to process mylist...')

for position in range(4):
try:
logging.debug(
'Value at position %s is %s', position, mylist[position]
)
except IndexError:
logging.exception('Faulty position: %s', position)

logging.info('Done parsing mylist.')


این کد یه فایل بنام c11.txt ایجاد میکند و عملکرد برنامه را گزارش میدهد.

در اینجا چند نمونه از مکان هایی که لاگینگ به طور معمول استفاده می شود آورده شده است:

برنامه های وب: برای ثبت اطلاعات مربوط به درخواست های HTTP، پاسخ ها و خطاها.
برنامه های موبایل: برای ثبت اطلاعات مربوط به فعالیت کاربر، عملکرد برنامه و خطاها.
خدمات وب: برای ثبت اطلاعات مربوط به درخواست ها، پاسخ ها و خطاها.
سیستم های تعبیه شده: برای ثبت اطلاعات مربوط به عملکرد سیستم و خطاها.
ابزارهای خط فرمان: برای ثبت اطلاعات مربوط به ورودی کاربر، خروجی برنامه و خطاها.

[amirhossein]

#logging

@Syntax_fa
🔥8👍4
This media is not supported in your browser
VIEW IN TELEGRAM
واکنش رئیسم وقتی میگم میشه 28 اسفند رو تعطیل کنیم

#Fun

@Syntax_fa
🤣20
اجرای کد پایتونی توی html !!
https://pynoscript.net/

چند تا نمونه:
https://pynoscript.com/@examples

#Python

@Syntax_fa
👍7🥰1👀1
استفاده از الگوی طراحی Singleton در پایتون:

class SingletonMeta(type):
"""
The Singleton class can be implemented in different ways in Python. Some
possible methods include: base class, decorator, metaclass. We will use the
metaclass because it is best suited for this purpose.
"""

_instances = {}

def __cal__(cls, *args, **kwargs):
"""
Possible changes to the value of the `__init__` argument do not affect
the returned instance.
"""
if cls not in cls._instances:
instance = super().__call__(*args, **kwargs)
cls._instances[cls] = instance

return cls._instances[cls]


برای استفاده به کلاس مورد نظر SingletonMeta رو به عنوان متاکلاس معرفیش می کنید:

class Connect(metaclass=SingletonMeta):
...


#Python

@Syntax_fa
👍5🤨1
Dummy Service

یکی از سرویس هایی که اگه پیادش کنید خیلی کارتونو راحت میکنه. سرویس ساختگی و یا الکی هستش !

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

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

سرویس dummy یعنی هیچ کاری نمیکنه

مثلا اکه قراره اس ام اس کنید. DummySms فقط میاد متن اس ام اس رو براتون پرینت میکنه یا مثلا لاگ میزنه

چند تا از مزیت هاش:

- عدم وابستگی: برنامه شما وابستگی کمتری به سرویس خارجی داره و می تونه بدون اون ها هم اجرا بشه.

- آزمایش‌پذیری بیشتر: می تونید سرویس ماک رو به جای سرویس واقعی جایگزین کنید و آزمایش‌ها رو روی اون انجام بدید.

#Mock_service

@Syntax_fa
👍10
This media is not supported in your browser
VIEW IN TELEGRAM
این ارتش هاگوارتز و دنیای هری پاتر نیست

بلکه چهارشنبه سوری است

#Fun

@Syntax_fa
🤣24💔3👎1
کتاب آنلاین go101

یکی از بهترین منابع برای یادگیری زبان گولنگ هستش.
اگه قصد دارید زبان گولنگ رو یاد بگیرید و یا اینکه دانشتون رو عمیق تر کنید پیشنهاد میشه حتما یه سر بزنید
https://go101.org/

#book #go

@Syntax_fa
👍3👏1
برای آمادگی در مصاحبه چیکار کنم؟

(تو این پست صرفا تجربیات خودم رو میگم)

قبل مصاحبه احتمالا میریم یه سر به نمونه سوالات مصاحبه ها میندازیم.
مثلا سوالات مصاحبه پایتون، جنگو و ...

ولی چیزی که من تجربه کردم، آنچنان کمکی به شما نمیکنه.

فرض کنید برای موقعیت بک اند جنگو مصاحبه دارید.
احتمالا هشتاد درصد سوالات اصلا بصورت مستقیم به پایتون و جنگو اشاره نمیکنن!

یعنی اگه شما اصلا جنگو بلد نباشید اما با بک اند بخوبی آشنا باشید احتمالا مصاحبه رو قبولید 😁

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

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

درباره مصاحبه hr بازم همین موضوع مطرح هستش.
باید مهارت های فنی خودتون رو تقویت کنید. با خوندن چند تا نمونه سوال قبل مصاحبه زیاد تفاوتی ایجاد نمیشه

توصیه من:
حتما روی مهارت های نرمتون کار کنید.
حتی اگه بهترین باشید ولی نتونید خودتون رو پرزنت کنید، ارزش واقعی شما مشخص نمیشه.

حتما با دیتا استراکچر و الگوریتم آشنا باشید خیلی مهمه.
هفته ای حداقل یکی دوتا مسئله حل کنید

#Interview

@Syntax_fa
👍11
انواع ساختمان داده

@gopher_academy

#data_structure

@Syntax_fa
🔥4
قراره توی عید یک بازی تلگرامی مشابه Quiz of Kings رو با هم توی چند تا یوتیوب از صفر تا صد پیاده‌سازی کنیم.

اولین لایو فردا جمعه ساعت ۱۲ شروع میشه و اگه میخواید لایو های بعدی رو از دست ندید توی کانال @MhrCode یا گروه @MhrCodeGp عضو بشید تا قبل از هر لایو تایم دقیقش رو بذارم.

بعد از اتمام لایوها به فرمت قبلی ویدیوها ادیت شده و به شکل خلاصه توی کانال یوتیوب قرار میگیره.

لایو‌ها توی کانال یوتیوب https://youtube.com/@mhr_code خواهند بود

استکی که قراره باهاش بازی رو بسازیم: Golang, HTMX, Alpinejs
👍7👎1
در این ویدیو از پلی‌لیست نکته ها و ترفندهای پایتون به بررسی مدیریت پکیج‌های پایتون با استفاده از Poetry پرداختیم.
Poetry یک ابزار مدیریت وابستگی‌ها و پروژه‌های پایتون است که به شما کمک می‌کند تا به راحتی و به صورت مدرن با محیط توسعه وابسته‌های پروژه‌های خود را مدیریت کنید. این ابزار امکاناتی مانند مدیریت و نصب وابستگی‌ها، ساخت محیط‌های مجازی، مدیریت ورژن‌ها و ... را فراهم می‌کند.
در این ویدیو ابتدا برخی از مشکلات pip را بررسی و سپس Poetry را نصب و با آن یک پروژه ساختیم و در نهایت پروژه خودر PyPi منتشر کردیم

Link : https://youtu.be/UX5O7Z0aQb8

playlist: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBwZcy2wRRBNqXZP8wf--TmF

@microfrontend_ir

#poetry #python

@Syntax_fa
👍21🔥1
Syntax | سینتکس
استفاده از الگوی طراحی Singleton در پایتون: class SingletonMeta(type): """ The Singleton class can be implemented in different ways in Python. Some possible methods include: base class, decorator, metaclass. We will use the metaclass because…
یه نکته در خصوص الگوی singleton در پایتون بگم:

استفاده از singleton تو پایتون یکی از bad practice ها به حساب میاد.
بجاش پیشنهاد میشه از قابلیت function cache استفاده کنیم.

مثلا:
@functools.cache
def the_chess_board():
return ChessBoard()
اگه هنوزم میخواید با کلاس single instance رو مدیریت کنید از این روش استفاده کنید:

class ChessBoard:
def __init__(self):
...

@classmethod
@functools.cache
def the_board(cls):
return cls()
لینک مقاله:
https://nedbatchelder.com/blog/202204/singleton_is_a_bad_idea.html

#singleton #python

@Syntax_fa
👍4
فیلم چی پیشنهاد میدید؟
(مارولی و ابر قهرمانی نباشه، تینیجری هم نباشه)
یکی از عجایب جیمیل اینه که شما میتونید به روش های مختلف جیمیلتون رو بنویسید و همشون درسته

مثلا این آدرس جیمیل ها:
maede@gmail.com
m.a.e.d.e.h@gmail.com
m.aede@gmail.com
maed.e@gmail.com
And ...

همشون به یک جیمیل اشاره می کنن و اگه به هرکدومشون ایمیل کنیم به آدرس یکسان box اشاره دارن.

چه استفاده ای میشه و نکته مهم چیه؟
با این ویژگی من میتونم با یک جیمیل چندین بار تو یک سایت ثبت نام کنم.
اگه تو وب سایتمون جیمیلی رو بلاک کنیم میتونه به یه شکل دیگه جیمیلش رو بنویسه و بازم ازش استفاده کنه.

مقاله:
https://generator.email/blog/gmail-generator

@WikiWebb

#note

@Syntax_fa
😱13🔥3👍1
This media is not supported in your browser
VIEW IN TELEGRAM
کلیپ کوتاه از معرفی یکی از رقیب های اصلی اسکار بهترین فیلم سال بعد منتشر شد.

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

زمان اکران:
سال 1403 همزمان با اکران قسمت دوم فیلم Dune

#fun

@Syntax_fa
🤣22👍1👏1
وضعیت شغلی شما تو حوزه برنامه نویسی کدوم مورد هستش؟
Final Results
16%
استخدام شدم
8%
فریلنسری کار می کنم
42%
هنوز اولشم و در حال یادگیری هستم
33%
دنبال کارم
👍8
بچه ها موقعیت شغلی خوب پیدا کردم😂

#fun

@Syntax_fa
😁13🤣4
این ریپو رو آپدیت کردم خواستید یه سر بزنید:
https://github.com/alireza-fa/django-jwt-auth

عملیات لاگین و رجیستر با شماره موبایل و ساخت توکن و اعتبار سنجی و ... تو جنگو
👍13
This media is not supported in your browser
VIEW IN TELEGRAM
1. وقتی فرانت‌اند میگه این قابلیت رو نمیشه پیاده سازی کرد و امکانش نیست و باید سمت بک‌اند هندل بشه،
اما بعدا بک‌اند کارها میفهمن که میشه.

2. وقتی فرانت اند میگه این ui که زدی قابل پیاده سازی نیست تغییرش بده، اما بعدا طراح ها میفهمن که میشه.

@DjangoEx

#fun

@Syntax_fa
😁9💔8👌1
Django Security/Middleware/Brute force tip:

This #middleware intercepts login requests, tracking failed attempts by IP address using Django's caching framework. If the number of failed attempts from an IP exceeds a defined threshold, further attempts are temporarily blocked. Implementing this in your project can significantly reduce the risk of brute force attacks, safeguarding user accounts.

بابت ترجمه نشدن معزرت میخوام. پست خوبی بود دلم نیومد اشتراک نذارم.
ولی از اینکه میدلور نوشته و هر ریکوئستی بیاد چک میکنه path لاگین هست یا نه رو موافق نیستم. اما در کل برای ایده گرفتن خوبه.

#django

@Syntax_fa
👍6