Syntax | سینتکس
سوال مصاحبه فرض کنید ما یک linked list یک طرفه (next) داریم. چجوری مقادیر داخل این لیست رو از آخر به اول مرتب کنیم؟ #interview_question @Syntax_fa
توضیح:
این یک سوالی است که برای حل کردنش باید درباره data structures ها بدانید.
برای اینکه بفهمیم صورت سوال از ما چه میخواهد اول از همه باید با linked list ها آشنا شویم.
لیست های پیوندی بر خلاف لیست ها، از یک آرایه ساخته نشده اند.
ساختار هر عنصر یک لیست پیوندی به این صورت است که یک node است و در هر node مقدار عنصر و آدرس node بعدی را ذخیره می کنیم.
برای مثال اگر بخواهیم به عنصر index بیستم دسترسی داشته باشیم باید از head یعنی اولین node لیست پیوندی شروع به پیمایش کنیم و به next هر node سر بزنیم تا به index مورد نظر برسیم.
اما مزیت لیست پیوندی این است که insert، delete با o(1) انجام می شود.
همچنین boubly linked list داریم که هر node به علاوه ذخیره کردن آدرس نود بعدی، آدرس نود قبلی خود را هم ذخیره می کند.
در این مسئله چالش اینجاست که چجوری عناصر داخل یک لیست پیوندی یک طرفه را از آخر به اول مرتب کنیم.
توضیحات بیشتر درباره ساختمان داده:
https://github.com/alireza-fa/data-structures-python
#data_structure
@Syntax_fa
این یک سوالی است که برای حل کردنش باید درباره data structures ها بدانید.
برای اینکه بفهمیم صورت سوال از ما چه میخواهد اول از همه باید با linked list ها آشنا شویم.
لیست های پیوندی بر خلاف لیست ها، از یک آرایه ساخته نشده اند.
ساختار هر عنصر یک لیست پیوندی به این صورت است که یک node است و در هر node مقدار عنصر و آدرس node بعدی را ذخیره می کنیم.
برای مثال اگر بخواهیم به عنصر index بیستم دسترسی داشته باشیم باید از head یعنی اولین node لیست پیوندی شروع به پیمایش کنیم و به next هر node سر بزنیم تا به index مورد نظر برسیم.
اما مزیت لیست پیوندی این است که insert، delete با o(1) انجام می شود.
همچنین boubly linked list داریم که هر node به علاوه ذخیره کردن آدرس نود بعدی، آدرس نود قبلی خود را هم ذخیره می کند.
در این مسئله چالش اینجاست که چجوری عناصر داخل یک لیست پیوندی یک طرفه را از آخر به اول مرتب کنیم.
توضیحات بیشتر درباره ساختمان داده:
https://github.com/alireza-fa/data-structures-python
#data_structure
@Syntax_fa
👍5
مفهوم Profiling در Python
:فرآیند جمع آوری اطلاعات در مورد عملکرد برنامه شما اشاره دارد. این اطلاعات می تواند شامل موارد زیر باشد:
زمان صرف شده در هر تابع: این به شما کمک می کند تا ببینید کدام قسمت های کد شما بیشترین زمان را اشغال می کنند.
تعداد دفعات فراخوانی هر تابع: این به شما کمک می کند تا ببینید کدام قسمت های کد شما بیشتر استفاده می شوند.
حافظه استفاده شده توسط هر تابع: ا ین به شما کمک می کند تا ببینید کدام قسمت های کد شما بیشترین حافظه را اشغال می کنند.
با استفاده از profiling، می توانید قسمت های کند و ناکارآمد کد خود را شناسایی کرده و آنها را بهینه سازی کنید. این می تواند به طور قابل توجهی سرعت برنامه شما را افزایش دهد.
ابزارهای Profiling در Python
چندین ابزار profiling مختلف برای Python وجود دارد. برخی از محبوب ترین ابزارها عبارتند از:
cProfile:
این یک ابزار profiling داخلی است که در کتابخانه استاندارد Python موجود است.
line_profiler:
این ابزار به شما امکان می دهد زمان صرف شده در هر خط کد را مشاهده کنید.
memory_profiler:
این ابزار به شما امکان می دهد حافظه استفاده شده توسط هر تابع را مشاهده کنید.
SnakeViz:
این ابزار یک رابط کاربری گرافیکی برای تجزیه و تحلیل داده های profiling ارائه می دهد.
نحوه استفاده از Profiling در Python
برای استفاده از profiling در Python، ابتدا باید یک ابزار profiling را انتخاب کنید. سپس، می توانید از ابزار profiling برای جمع آوری اطلاعات در مورد عملکرد برنامه خود استفاده کنید. در نهایت، می توانید از اطلاعات profiling برای شناسایی و بهینه سازی قسمت های کند و ناکارآمد کد خود استفاده کنید.
مثال:
خروجی cProfile شامل اطلاعات زیر است:
نام تابع: نام تابعی که در حال اجرا است.
ncalls: تعداد دفعات فراخوانی تابع.
tottime: زمان کل صرف شده در تابع (بر حسب ثانیه).
percall: زمان متوسط صرف شده در هر بار فراخوانی تابع (بر حسب ثانیه).
cumtime: زمان کل صرف شده در تابع و تمام توابع تابعه آن (بر حسب ثانیه).
[𝙰𝚖𝚒𝚛𝚑𝚘𝚜𝚜𝚎𝚒𝚗]
#Python #Profiling
@Syntax_fa
:فرآیند جمع آوری اطلاعات در مورد عملکرد برنامه شما اشاره دارد. این اطلاعات می تواند شامل موارد زیر باشد:
زمان صرف شده در هر تابع: این به شما کمک می کند تا ببینید کدام قسمت های کد شما بیشترین زمان را اشغال می کنند.
تعداد دفعات فراخوانی هر تابع: این به شما کمک می کند تا ببینید کدام قسمت های کد شما بیشتر استفاده می شوند.
حافظه استفاده شده توسط هر تابع: ا ین به شما کمک می کند تا ببینید کدام قسمت های کد شما بیشترین حافظه را اشغال می کنند.
با استفاده از profiling، می توانید قسمت های کند و ناکارآمد کد خود را شناسایی کرده و آنها را بهینه سازی کنید. این می تواند به طور قابل توجهی سرعت برنامه شما را افزایش دهد.
ابزارهای Profiling در Python
چندین ابزار profiling مختلف برای Python وجود دارد. برخی از محبوب ترین ابزارها عبارتند از:
cProfile:
این یک ابزار profiling داخلی است که در کتابخانه استاندارد Python موجود است.
line_profiler:
این ابزار به شما امکان می دهد زمان صرف شده در هر خط کد را مشاهده کنید.
memory_profiler:
این ابزار به شما امکان می دهد حافظه استفاده شده توسط هر تابع را مشاهده کنید.
SnakeViz:
این ابزار یک رابط کاربری گرافیکی برای تجزیه و تحلیل داده های profiling ارائه می دهد.
نحوه استفاده از Profiling در Python
برای استفاده از profiling در Python، ابتدا باید یک ابزار profiling را انتخاب کنید. سپس، می توانید از ابزار profiling برای جمع آوری اطلاعات در مورد عملکرد برنامه خود استفاده کنید. در نهایت، می توانید از اطلاعات profiling برای شناسایی و بهینه سازی قسمت های کند و ناکارآمد کد خود استفاده کنید.
مثال:
import cProfile
def my_function():
for i in range(100000):
pass
cProfile.run('my_function()')
خروجی cProfile شامل اطلاعات زیر است:
نام تابع: نام تابعی که در حال اجرا است.
ncalls: تعداد دفعات فراخوانی تابع.
tottime: زمان کل صرف شده در تابع (بر حسب ثانیه).
percall: زمان متوسط صرف شده در هر بار فراخوانی تابع (بر حسب ثانیه).
cumtime: زمان کل صرف شده در تابع و تمام توابع تابعه آن (بر حسب ثانیه).
[𝙰𝚖𝚒𝚛𝚑𝚘𝚜𝚜𝚎𝚒𝚗]
#Python #Profiling
@Syntax_fa
👍14❤2
poetry.pdf
265.2 KB
Poetry
برای یه پروژه برنامه نویسی قطعا مدیریت پکیجها یکی از مهمترین نکات و مواردی هست که باید بهش حواسمون باشه. اگر پکیجها آپدیت نباشن میتونه باعث مشکلات امنیتی و ... بشه. از اون طرف اگر مدیریت پکیجهامون نادرست باشه میتونه جلوی امکان بیلد پروژه رو هم بگیره حتی. توی این پست سعی کردم برای پروژههای پایتونی نکاتی رو پیرامون pip بگم که چرا نباید ازش استفاده کنیم و در ادامه نحوه استفاده از poetry رو برای ستاپش، استفاده، dockerfile و pre-commit رو هم آوردم.
[Mohammad amjadi]
#Python #poetry
@Syntax_fa
برای یه پروژه برنامه نویسی قطعا مدیریت پکیجها یکی از مهمترین نکات و مواردی هست که باید بهش حواسمون باشه. اگر پکیجها آپدیت نباشن میتونه باعث مشکلات امنیتی و ... بشه. از اون طرف اگر مدیریت پکیجهامون نادرست باشه میتونه جلوی امکان بیلد پروژه رو هم بگیره حتی. توی این پست سعی کردم برای پروژههای پایتونی نکاتی رو پیرامون pip بگم که چرا نباید ازش استفاده کنیم و در ادامه نحوه استفاده از poetry رو برای ستاپش، استفاده، dockerfile و pre-commit رو هم آوردم.
[Mohammad amjadi]
#Python #poetry
@Syntax_fa
🔥9👍3
با این روش وقتی داری توی جنگو از JWT استفاده می کنی،response time درخواست هارو به شکل قابل توجهی کمترش کن !!!
توی جنگو اکثر افراد از پکیج Django Simple JWT استفاده می کنن.
پکیج Simple Jwt برای ما یک کلاس به اسم JWTAuthentication می دهد تا بتوانیم به عنوان کلاس Authentication در DRF ازش استفاده کنیم.
یکی از نکاتی که باید درمورد JWTAuthentication بدونید، متد get_user هستش.
هر درخواستی که در هدر آن اکسس توکن رو قرار داده باشید، یک درخواست سمت دیتابیس میزند تا با استفاده از فیلد user_id که در claim توکن ست کرده، اطلاعات کاربر رو بگیره.
نکته همینجاست. هر درخواست مساوی با یک hint سمت دیتابیس !
خب میتونیم چیکار کنیم؟
میتونیم توی claim های توکن اطلاعات بیشتری رو قرار بدیم و یوزر خودمون رو با استفاده از claims توکن بدست بیاریم
برای اینکار دیگه توکن هارو خودمون بصورت دستی میسازیم و claim هارو هم به این شکل به توکن اضافه می کنیم(همچنین توکن رو encrypt می کنیم):
در نهایت کلاس Authentication خودمون رو پیاده سازیش می کنیم:
حالا شما با این روش، از قابلیت های jwt توی جنگو به شکل بهتری می تونید استفاده کنید.
(صرفا جهت آشنایی گفتم. چون توی جنگو که همه چی از قبل نوشته شده خیلی وقتا فراموش میشه یک ابزار در پشت صحنه به چه صورت کار میکنه)
#Django #JWT
@Syntax_fa
توی جنگو اکثر افراد از پکیج Django Simple JWT استفاده می کنن.
پکیج Simple Jwt برای ما یک کلاس به اسم JWTAuthentication می دهد تا بتوانیم به عنوان کلاس Authentication در DRF ازش استفاده کنیم.
یکی از نکاتی که باید درمورد JWTAuthentication بدونید، متد get_user هستش.
هر درخواستی که در هدر آن اکسس توکن رو قرار داده باشید، یک درخواست سمت دیتابیس میزند تا با استفاده از فیلد user_id که در claim توکن ست کرده، اطلاعات کاربر رو بگیره.
نکته همینجاست. هر درخواست مساوی با یک hint سمت دیتابیس !
خب میتونیم چیکار کنیم؟
میتونیم توی claim های توکن اطلاعات بیشتری رو قرار بدیم و یوزر خودمون رو با استفاده از claims توکن بدست بیاریم
برای اینکار دیگه توکن هارو خودمون بصورت دستی میسازیم و claim هارو هم به این شکل به توکن اضافه می کنیم(همچنین توکن رو encrypt می کنیم):
from django.contrib.auth import get_user_model
from rest_framework_simplejwt.tokens import RefreshToken
from .encryption import encrypt
User = get_user_model()
def set_token_claims(token: Token, data: Dict) -> Token:
for key, value in data.items():
token[key] = value
return token
def get_token_by_user(user: User, client_info: Dict) -> Dict:
token = RefreshToken.for_user(user=user)
data = {
"fullname": user.fullname,
"national_code": user.national_code,
"phone_number": user.phone_number,
"email": user.email,
"verified_email": user.verified_email,
"last_image_update": user.last_image_update,
"is_active": user.is_active,
"is_admin": user.is_admin,
"father_name": user.father_name,
"height": str(user.height),
"weight": str(user.weight),
"blood_type": user.blood_type,
**client_info
}
if user.avatar_image:
data["avatar_image"] = user.avatar_image.url
token = set_token_claims(token=token, data=data)
return {
"refresh_token": encrypt(data=str(token)),
"access_token": encrypt(data=str(token.access_token)),
}
در نهایت کلاس Authentication خودمون رو پیاده سازیش می کنیم:
from django.utils.translation import gettext_lazy as _
from django.contrib.auth import get_user_model
from rest_framework_simplejwt.authentication import JWTAuthentication, AuthUser
from rest_framework_simplejwt.tokens import Token
from rest_framework_simplejwt.exceptions import InvalidToken
from .encryption import decrypt
User = get_user_model()
class CustomAuthentication(JWTAuthentication):
def get_validated_token(self, raw_token: bytes) -> Token:
try:
token = decrypt(encrypted=raw_token)
except ValueError:
raise InvalidToken(
{
"detail": _("Given token not valid for any token type"),
}
)
return super().get_validated_token(token.encode())
def get_user(self, validated_token: Token) -> AuthUser:
return User(
id=validated_token["user_id"],
fullname=validated_token["fullname"],
national_code=validated_token["national_code"],
phone_number=validated_token["phone_number"],
email=validated_token["email"],
verified_email=validated_token["verified_email"],
avatar_image=validated_token.get("avatar_image"),
last_image_update=validated_token["last_image_update"],
is_active=validated_token["is_active"],
is_admin=validated_token["is_admin"],
father_name=validated_token["father_name"],
height=validated_token["height"],
weight=validated_token["weight"],
blood_type=validated_token["blood_type"]
)
حالا شما با این روش، از قابلیت های jwt توی جنگو به شکل بهتری می تونید استفاده کنید.
(صرفا جهت آشنایی گفتم. چون توی جنگو که همه چی از قبل نوشته شده خیلی وقتا فراموش میشه یک ابزار در پشت صحنه به چه صورت کار میکنه)
#Django #JWT
@Syntax_fa
👍9❤1
یکی از دوستام چند مدت نبود. دیشب این پیامو فرستاده:
اقا شرمنده من ی مدتی نبودم برای یکی پروژه انجام داده بودم پول دزدی واریز کرده بود بازداشت بودم
دقیقا من ۱۰ روز اگاهی بودم از تهران بازداشتم کردن فرستادن کرج الانم با سند بیرونم میخواستن بفرستنم زندان !
و جالبیش اینه که پلیس فتا میدونست من خودم بی گناهم ولی باز هیچ چیزی نمینوشت که منو نفرستن زندان
قاضی هم که اصلا هیچ دانشی از این حوزه ها نداره
خلاصه سرتونو درد نیارم خیلی اذیت شدم الان ۶ روزه اومدم ولی ی بارم دست به لپ تاپ نزدم اصلا از همچی بدم اومده
از من نصیحت:
باید برای هرکس، هرکاری میکنید
قرار داد درست حسابی بنویسید و همه چی ذکر بشه.
اگه ی درصد از کسیم خواستی ارز دیجیتال بگیری بگو تو یه کاغذ اطلاعاتشو بنویسه و امضا کنه ک ب تو داره ارز میده و بگیره کنار صورتش عکس بفرسته
#Note
@Syntax_fa
اقا شرمنده من ی مدتی نبودم برای یکی پروژه انجام داده بودم پول دزدی واریز کرده بود بازداشت بودم
دقیقا من ۱۰ روز اگاهی بودم از تهران بازداشتم کردن فرستادن کرج الانم با سند بیرونم میخواستن بفرستنم زندان !
و جالبیش اینه که پلیس فتا میدونست من خودم بی گناهم ولی باز هیچ چیزی نمینوشت که منو نفرستن زندان
قاضی هم که اصلا هیچ دانشی از این حوزه ها نداره
خلاصه سرتونو درد نیارم خیلی اذیت شدم الان ۶ روزه اومدم ولی ی بارم دست به لپ تاپ نزدم اصلا از همچی بدم اومده
از من نصیحت:
باید برای هرکس، هرکاری میکنید
قرار داد درست حسابی بنویسید و همه چی ذکر بشه.
اگه ی درصد از کسیم خواستی ارز دیجیتال بگیری بگو تو یه کاغذ اطلاعاتشو بنویسه و امضا کنه ک ب تو داره ارز میده و بگیره کنار صورتش عکس بفرسته
#Note
@Syntax_fa
💔31👍7👎1😱1
تو اینجا میتونید لیست خیلی از شرکت های ایرانی رو ببینید و تجربه افرادی که اونجا کار کردن رو بخونید.
https://tajrobe.github.io/
@Syntax_fa
https://tajrobe.github.io/
@Syntax_fa
تجربههای کاری
جستجو و اشتراک دیدگاهها در رابطه با استخدام، تجربه کاری، مزایا و معایب در شرکت های ایرانی
🔥5
حتما خیلی شده که یک آگهی شغلی پیدا کردید و با خودتون گفتید ایول این قشنگ فیت منه و اگه رزومه بفرستم قطعا دعوتم می کنن مصاحبه و با خیال راحت رزومه تون رو میفرستید و منتظر که تماس بگیرن.
اما یک روز میگذره، دو روز میگذره، سه روز میگذره میبینید نخیر تماس نگرفتن و دست آخر با خودتون میگید حتما لیاقت من و نداشتن!
*
اما ممکنه اصلا رزومه شما رو مدیر مربوطه نخونده باشه! چرا؟ به خاطر نرم افزار ATS
*
حالا این نرم افزار ATS چیه؟ این نرم افزار کاربردی است که رزومهها را بر اساس کلمات کلیدی مرتبط با شرح شغلی مانند آنچه در مهارتها، عناوین شغلی و سوابق تحصیلی آمده، اسکن میکند.
اگر الگوی رزومه شما مطابق با ATS باشد، شانس دیده شدن رزومه شما توسط کارفرمایان تا حد زیادی افزایش مییابد. رزومههای ATS فرندلی در مواردی مانند قالب رزومه، طراحی و کلمات کلیدی بهینه میشوند. در واقع، این مرحله از بررسی رزومهها به صورت کاملا ماشینی انجام میشود و شما باید رزومه ای آماده کنید که تمام معیارهای تعریف شده برای این نرم افزارها را دارا باشد.
»»»»»»»»»»»
به صورت خودمونیش رزومه استانداردی ننوشتی مثلا اگه برای شرکتی در کشور آمریکا یا کانادا رزومه دادی و توش عکس گذاشتی یا اطلاعات شخصیت رو مثل سن و وضعیت تاهل رو نوشتی هرچی هم تجربه ای فوق العاده ای داشته باشی بازم رزومه ات رو ATS به کارفرما نشون نمیده و از لیست رزومه هایی که باید دیده بشه حذف می کنه، چون تو قانون اونجا ارائه اطلاعات این چنینی غیر قانونیه!
»»»»»»»»»»»
یا اینکه یک رزومه عمومی و آماده کردی و به صورت فله ای داری برای همه میفرستی این هم جواب نمیده و باعث میشه ATS رزومه شما رو رد کنه شما باید رزومه ای بنویسی که با مواردی که توی آگهی شغل اومده هماهنگ باشه ! »»»»»»»»»»»»
[Shadi sepehri]
#Resume
@Syntax_fa
اما یک روز میگذره، دو روز میگذره، سه روز میگذره میبینید نخیر تماس نگرفتن و دست آخر با خودتون میگید حتما لیاقت من و نداشتن!
*
اما ممکنه اصلا رزومه شما رو مدیر مربوطه نخونده باشه! چرا؟ به خاطر نرم افزار ATS
*
حالا این نرم افزار ATS چیه؟ این نرم افزار کاربردی است که رزومهها را بر اساس کلمات کلیدی مرتبط با شرح شغلی مانند آنچه در مهارتها، عناوین شغلی و سوابق تحصیلی آمده، اسکن میکند.
اگر الگوی رزومه شما مطابق با ATS باشد، شانس دیده شدن رزومه شما توسط کارفرمایان تا حد زیادی افزایش مییابد. رزومههای ATS فرندلی در مواردی مانند قالب رزومه، طراحی و کلمات کلیدی بهینه میشوند. در واقع، این مرحله از بررسی رزومهها به صورت کاملا ماشینی انجام میشود و شما باید رزومه ای آماده کنید که تمام معیارهای تعریف شده برای این نرم افزارها را دارا باشد.
»»»»»»»»»»»
به صورت خودمونیش رزومه استانداردی ننوشتی مثلا اگه برای شرکتی در کشور آمریکا یا کانادا رزومه دادی و توش عکس گذاشتی یا اطلاعات شخصیت رو مثل سن و وضعیت تاهل رو نوشتی هرچی هم تجربه ای فوق العاده ای داشته باشی بازم رزومه ات رو ATS به کارفرما نشون نمیده و از لیست رزومه هایی که باید دیده بشه حذف می کنه، چون تو قانون اونجا ارائه اطلاعات این چنینی غیر قانونیه!
»»»»»»»»»»»
یا اینکه یک رزومه عمومی و آماده کردی و به صورت فله ای داری برای همه میفرستی این هم جواب نمیده و باعث میشه ATS رزومه شما رو رد کنه شما باید رزومه ای بنویسی که با مواردی که توی آگهی شغل اومده هماهنگ باشه ! »»»»»»»»»»»»
[Shadi sepehri]
#Resume
@Syntax_fa
👍7❤1
الگوی طراحی Circuit breaker
یکی از الگو های پر کاربرد هستشو بهتون پیشنهاد میدم این مقاله رو بخونید که خیلی خوب توضیح دادن
https://sokanacademy.com/academy/courses/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D9%84%DA%AF%D9%88%D9%87%D8%A7%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C/%D8%A7%D9%84%DA%AF%D9%88%D9%87%D8%A7/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D9%84%DA%AF%D9%88%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-circuit-breaker
#Circuit_breaker
@Syntax_fa
یکی از الگو های پر کاربرد هستشو بهتون پیشنهاد میدم این مقاله رو بخونید که خیلی خوب توضیح دادن
https://sokanacademy.com/academy/courses/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D9%84%DA%AF%D9%88%D9%87%D8%A7%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C/%D8%A7%D9%84%DA%AF%D9%88%D9%87%D8%A7/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D9%84%DA%AF%D9%88%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-circuit-breaker
#Circuit_breaker
@Syntax_fa
سکان آکادمی
آموزش الگوی طراحی Circuit breaker
در مدارهای الکتریکی ماژولی وجود دارد تحت عنوان قطع کننده مدار که وظیفه آن، قطع مدار به صورت اتوماتیک در شرایط معیوب می باشد. در دنیای نرم افزار هم مفهومی به عنوان الگوی طراحی قطع کننده وجود دارد.
👍3
لاگینگ (logging) در پایتون
لاگینگ ابزاری قدرتمند برای ثبت اطلاعات مربوط به عملکرد برنامه شما است. این اطلاعات می تواند شامل خطاها، هشدارها، اطلاعات اشکال زدایی و سایر پیام های سفارشی باشد. لاگینگ به شما کمک می کند تا مشکلات برنامه خود را شناسایی و رفع کنید، عملکرد آن را رصد کنید و درک کنید که چه اتفاقی در داخل برنامه شما می افتد.
کتابخانه logging
پایتون دارای یک کتابخانه داخلی به نام logging برای لاگینگ است. این کتابخانه به شما امکان می دهد تا سطوح مختلف لاگ، هندلرهای مختلف لاگ و فرمت های مختلف لاگ را پیکربندی کنید.
سطوح لاگ
سطوح لاگ به شما امکان می دهد تا نوع پیام هایی که ثبت می شوند را کنترل کنید. سطوح لاگ رایج عبارتند از:
DEBUG: اطلاعات اشکال زدایی دقیق
INFO: اطلاعات عمومی مربوط به عملکرد برنامه
WARNING: هشدارهای مربوط به مشکلات احتمالی
ERROR: خطاهای جدی که باعث خرابی برنامه می شوند
CRITICAL: خطاهای بحرانی که نیاز به اقدام فوری دارند
هندلرهای لاگ
هندلرهای لاگ تعیین می کنند که پیام های لاگ به کجا ارسال می شوند. هندلرهای لاگ رایج عبارتند از:
StreamHandler:
ارسال پیام های لاگ به stdout یا stderr
FileHandler:
ارسال پیام های لاگ به یک فایل
SysLogHandler:
ارسال پیام های لاگ به syslog
مثال
در اینجا مثالی از نحوه استفاده از کتابخانه logging برای لاگینگ آورده شده است:
این کد یه فایل بنام c11.txt ایجاد میکند و عملکرد برنامه را گزارش میدهد.
در اینجا چند نمونه از مکان هایی که لاگینگ به طور معمول استفاده می شود آورده شده است:
برنامه های وب: برای ثبت اطلاعات مربوط به درخواست های HTTP، پاسخ ها و خطاها.
برنامه های موبایل: برای ثبت اطلاعات مربوط به فعالیت کاربر، عملکرد برنامه و خطاها.
خدمات وب: برای ثبت اطلاعات مربوط به درخواست ها، پاسخ ها و خطاها.
سیستم های تعبیه شده: برای ثبت اطلاعات مربوط به عملکرد سیستم و خطاها.
ابزارهای خط فرمان: برای ثبت اطلاعات مربوط به ورودی کاربر، خروجی برنامه و خطاها.
[amirhossein]
#logging
@Syntax_fa
لاگینگ ابزاری قدرتمند برای ثبت اطلاعات مربوط به عملکرد برنامه شما است. این اطلاعات می تواند شامل خطاها، هشدارها، اطلاعات اشکال زدایی و سایر پیام های سفارشی باشد. لاگینگ به شما کمک می کند تا مشکلات برنامه خود را شناسایی و رفع کنید، عملکرد آن را رصد کنید و درک کنید که چه اتفاقی در داخل برنامه شما می افتد.
کتابخانه 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
اجرای کد پایتونی توی html !!
https://pynoscript.net/
چند تا نمونه:
https://pynoscript.com/@examples
#Python
@Syntax_fa
https://pynoscript.net/
چند تا نمونه:
https://pynoscript.com/@examples
#Python
@Syntax_fa
👍7🥰1👀1
استفاده از الگوی طراحی Singleton در پایتون:
برای استفاده به کلاس مورد نظر SingletonMeta رو به عنوان متاکلاس معرفیش می کنید:
#Python
@Syntax_fa
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
یکی از سرویس هایی که اگه پیادش کنید خیلی کارتونو راحت میکنه. سرویس ساختگی و یا الکی هستش !
چرا؟
فرض کنید اپ شما نیاز به سرویس اس ام اس، درگاه بانک و ایمیل داره
در طول توسعه ممکنه هنوز سرویس های خارجی تهیه نشده باشن یا اصلا دارید تست می کنید و ...
تو این شرایط اگه از اینترفیس ها استفاده کرده باشید و یک سرویس الکی هم نوشته باشید خیلی راحت میتونید بدون نیاز واقعی به یه سرویس خارجی، با سرویس الکی کارتونو انجام بدید
سرویس dummy یعنی هیچ کاری نمیکنه
مثلا اکه قراره اس ام اس کنید. DummySms فقط میاد متن اس ام اس رو براتون پرینت میکنه یا مثلا لاگ میزنه
چند تا از مزیت هاش:
- عدم وابستگی: برنامه شما وابستگی کمتری به سرویس خارجی داره و می تونه بدون اون ها هم اجرا بشه.
- آزمایشپذیری بیشتر: می تونید سرویس ماک رو به جای سرویس واقعی جایگزین کنید و آزمایشها رو روی اون انجام بدید.
#Mock_service
@Syntax_fa
👍10
کتاب آنلاین go101
یکی از بهترین منابع برای یادگیری زبان گولنگ هستش.
اگه قصد دارید زبان گولنگ رو یاد بگیرید و یا اینکه دانشتون رو عمیق تر کنید پیشنهاد میشه حتما یه سر بزنید
https://go101.org/
#book #go
@Syntax_fa
یکی از بهترین منابع برای یادگیری زبان گولنگ هستش.
اگه قصد دارید زبان گولنگ رو یاد بگیرید و یا اینکه دانشتون رو عمیق تر کنید پیشنهاد میشه حتما یه سر بزنید
https://go101.org/
#book #go
@Syntax_fa
go101.org
Go 101 -Go 101
Golang online books, articles, tools, etc.
👍3👏1
برای آمادگی در مصاحبه چیکار کنم؟
(تو این پست صرفا تجربیات خودم رو میگم)
قبل مصاحبه احتمالا میریم یه سر به نمونه سوالات مصاحبه ها میندازیم.
مثلا سوالات مصاحبه پایتون، جنگو و ...
ولی چیزی که من تجربه کردم، آنچنان کمکی به شما نمیکنه.
فرض کنید برای موقعیت بک اند جنگو مصاحبه دارید.
احتمالا هشتاد درصد سوالات اصلا بصورت مستقیم به پایتون و جنگو اشاره نمیکنن!
یعنی اگه شما اصلا جنگو بلد نباشید اما با بک اند بخوبی آشنا باشید احتمالا مصاحبه رو قبولید 😁
پس نکته اینه مفاهیم رو درک کنید. یه توسعه دهنده بک اند بشید، نه فریم ورک محور و یا حتی زبان محور
همچنین سوالات الگوریتمی و ساختمان داده احتمال زیاد، ازتون پرسیده میشه. چه بسا تو مصاحبه های من اکثر مواقع اولین سوال ها ساختمان داده و الگوریتم بودن.
درباره مصاحبه hr بازم همین موضوع مطرح هستش.
باید مهارت های فنی خودتون رو تقویت کنید. با خوندن چند تا نمونه سوال قبل مصاحبه زیاد تفاوتی ایجاد نمیشه
توصیه من:
حتما روی مهارت های نرمتون کار کنید.
حتی اگه بهترین باشید ولی نتونید خودتون رو پرزنت کنید، ارزش واقعی شما مشخص نمیشه.
حتما با دیتا استراکچر و الگوریتم آشنا باشید خیلی مهمه.
هفته ای حداقل یکی دوتا مسئله حل کنید
#Interview
@Syntax_fa
(تو این پست صرفا تجربیات خودم رو میگم)
قبل مصاحبه احتمالا میریم یه سر به نمونه سوالات مصاحبه ها میندازیم.
مثلا سوالات مصاحبه پایتون، جنگو و ...
ولی چیزی که من تجربه کردم، آنچنان کمکی به شما نمیکنه.
فرض کنید برای موقعیت بک اند جنگو مصاحبه دارید.
احتمالا هشتاد درصد سوالات اصلا بصورت مستقیم به پایتون و جنگو اشاره نمیکنن!
یعنی اگه شما اصلا جنگو بلد نباشید اما با بک اند بخوبی آشنا باشید احتمالا مصاحبه رو قبولید 😁
پس نکته اینه مفاهیم رو درک کنید. یه توسعه دهنده بک اند بشید، نه فریم ورک محور و یا حتی زبان محور
همچنین سوالات الگوریتمی و ساختمان داده احتمال زیاد، ازتون پرسیده میشه. چه بسا تو مصاحبه های من اکثر مواقع اولین سوال ها ساختمان داده و الگوریتم بودن.
درباره مصاحبه hr بازم همین موضوع مطرح هستش.
باید مهارت های فنی خودتون رو تقویت کنید. با خوندن چند تا نمونه سوال قبل مصاحبه زیاد تفاوتی ایجاد نمیشه
توصیه من:
حتما روی مهارت های نرمتون کار کنید.
حتی اگه بهترین باشید ولی نتونید خودتون رو پرزنت کنید، ارزش واقعی شما مشخص نمیشه.
حتما با دیتا استراکچر و الگوریتم آشنا باشید خیلی مهمه.
هفته ای حداقل یکی دوتا مسئله حل کنید
#Interview
@Syntax_fa
👍11
Forwarded from MHRCODE | برنامهنویسی با طعم توتفرنگی (Mohammad Hoseini Rad)
قراره توی عید یک بازی تلگرامی مشابه Quiz of Kings رو با هم توی چند تا یوتیوب از صفر تا صد پیادهسازی کنیم.
اولین لایو فردا جمعه ساعت ۱۲ شروع میشه و اگه میخواید لایو های بعدی رو از دست ندید توی کانال @MhrCode یا گروه @MhrCodeGp عضو بشید تا قبل از هر لایو تایم دقیقش رو بذارم.
بعد از اتمام لایوها به فرمت قبلی ویدیوها ادیت شده و به شکل خلاصه توی کانال یوتیوب قرار میگیره.
لایوها توی کانال یوتیوب https://youtube.com/@mhr_code خواهند بود
استکی که قراره باهاش بازی رو بسازیم: Golang, HTMX, Alpinejs
اولین لایو فردا جمعه ساعت ۱۲ شروع میشه و اگه میخواید لایو های بعدی رو از دست ندید توی کانال @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
Poetry یک ابزار مدیریت وابستگیها و پروژههای پایتون است که به شما کمک میکند تا به راحتی و به صورت مدرن با محیط توسعه وابستههای پروژههای خود را مدیریت کنید. این ابزار امکاناتی مانند مدیریت و نصب وابستگیها، ساخت محیطهای مجازی، مدیریت ورژنها و ... را فراهم میکند.
در این ویدیو ابتدا برخی از مشکلات pip را بررسی و سپس Poetry را نصب و با آن یک پروژه ساختیم و در نهایت پروژه خودر PyPi منتشر کردیم
Link : https://youtu.be/UX5O7Z0aQb8
playlist: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBwZcy2wRRBNqXZP8wf--TmF
@microfrontend_ir
#poetry #python
@Syntax_fa
👍2❤1🔥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 استفاده کنیم.
مثلا:
https://nedbatchelder.com/blog/202204/singleton_is_a_bad_idea.html
#singleton #python
@Syntax_fa
استفاده از singleton تو پایتون یکی از bad practice ها به حساب میاد.
بجاش پیشنهاد میشه از قابلیت function cache استفاده کنیم.
مثلا:
@functools.cacheاگه هنوزم میخواید با کلاس single instance رو مدیریت کنید از این روش استفاده کنید:
def the_chess_board():
return ChessBoard()
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
Nedbatchelder
Singleton is a bad idea
Design patterns are a great way to think about interactions among classes. But the classic Singleton pattern is bad: you shouldn’t use it and there are better options.
👍4
فیلم چی پیشنهاد میدید؟
(مارولی و ابر قهرمانی نباشه، تینیجری هم نباشه)
(مارولی و ابر قهرمانی نباشه، تینیجری هم نباشه)