Syntax | سینتکس
前往频道在 Telegram
Focus: Web Lan: Python & Go Website: https://syntaxfa.ir Quick connect: https://quick-connect.syntaxfa.ir Github: https://github.com/syntaxfa Group: https://t.me/Syntax_fa_group
显示更多3 260
订阅者
-224 小时
+67 天
-630 天
帖子存档
3 260
تست سرعت serialization و deserialization جی سان در پکیج های پایتونی:
drf serializatio
Standard json serialization
Pydantic json serialization
Pydantic with ujson serilization
اگه بخوایم عادلانه بررسی کنیم. standard json رو میتونیم با ujson بررسی کنیم. مارشال کردن دیتا توی ujson تقریبا سه و نیم برابر سریع تر از standard json انجام میشه و عملیات unmarshal تقریبا یکونیم برابر توی ujson سریع تر انجام میشه.
همچنین pydantic با pydantic with ujson هم کمی با ujson بهتر عمل میکنه. اگه قراره از پایدانتیک استفاده کنید. بهتره برای json serialization کانفیگش رو روی ujson تنظیم کنید.
و اما نتیجه تست روی 100 هزار تا داده به چه صورت هستش:
DRF Deserialization: 27.931873083114624 .DRF Serialization: 20.0464129447937 .Pydantic Deserialization: 3.9613752365112305 .Pydantic Serialization: 1.3248841762542725 .Pydantic with ujson Deserialization: 3.9036169052124023 .Pydantic with ujson Serialization: 1.321913719177246 .Standard Deserialization: 0.6196784973144531 .Standard Serialization: 0.8552639484405518 .ujson Deserialization: 0.6136562824249268 .ujson Serialization: 0.2362501621246338و اما drf serilization چرا کند هستش؟ 1. معماری و پیچیدگی به دلیل یکپارچگی عمیق با Django و ویژگیهای متعدد، دارای لایههای مختلفی از انتزاع و پیچیدگی است. این امر باعث میشود که پردازشهای بیشتری برای هر درخواست انجام شود. Pydantic: به گونهای طراحی شده که ساده و سبک باشد، و بهینهسازیهای خاصی برای سرعت در آن انجام شده است. این کتابخانه از تایپهای پایتونی به صورت مستقیم استفاده میکند که باعث بهبود عملکرد میشود. 2. اعتبارسنجی دادهها اعتبارسنجی دادهها در DRF به صورت خودکار و با استفاده از روشهای مختلفی انجام میشود که شامل فیلترها، اعتبارسنجها و مبدلهای داده میشود. این فرایندها نیازمند زمان بیشتری برای پردازش هستند. Pydantic: از تایپهای پایتونی و انوتیشنها برای اعتبارسنجی دادهها استفاده میکند که کارایی بالاتری دارد. 3. مدیریت مدلها و QuerySetها DRF: به طور معمول با مدلهای Django و QuerySetها کار میکند که این خود به پیچیدگی و زمان پردازش اضافه میکند. Pydantic: به صورت مستقیم با دادههای ساده کار میکند و نیازی به پردازشهای اضافی مرتبط با QuerySetها ندارد. در نهایت باید بگیم برای بررسی کردن و بنچمارک گرفتن، باید تو شرایط واقعی تری انجام داد. سورس کد رو توی کامنت میذارم. #python #serialization @Syntax_fa
3 260
Gitmoji
وبسایت [Gitmoji](https://gitmoji.dev/) یک منبع آنلاین است که به توسعهدهندگان کمک میکند تا از ایموجیها در پیامهای کامیتهای خود استفاده کنند. این وبسایت مجموعهای از ایموجیها را فراهم میکند که هر یک به یک نوع تغییر یا فعالیت خاص در کد اشاره دارند. به عنوان مثال:
- 🐛: برای فیکس کردن باگها
- ✨: برای اضافه کردن یک ویژگی جدید
- 📝: برای بهروزرسانی مستندات
- 🎨: برای بهبود ساختار یا ظاهر کد بدون تغییر عملکرد
استفاده از Gitmoji باعث میشود که تاریخچه کامیتها خواناتر و قابل فهمتر شود و اعضای تیم توسعهدهنده بتوانند با نگاه به ایموجیها به سرعت متوجه نوع تغییرات اعمال شده شوند. این ابزار بهخصوص برای پروژههای متنباز و تیمهای بزرگی که بر روی یک کدبیس کار میکنند، مفید است.
مثال:
git commit -m ":bug: fix a bug"
#note #gitmoji
@Syntax_Fa3 260
هفت روش برای پیاده سازی dto ها در پایتون:
https://dev.to/izabelakowal/some-ideas-on-how-to-implement-dtos-in-python-be3
#python #dto
@Syntax_fa
3 260
GHOFLE
قفله یک پروژه اپن سورس جنگویی است.
تمرکز اصلی پروژه کار با AWS S3 و Authentication و Payment service هستش.
از اساتید و افراد باتجربه درخواست میکنم اگه میتونن یه نگاه به سورس کد پروژه بندازن و مشکلاتش رو تو کامنت همین پست یا پیوی بگن🙏
نهایت هدف اینه تبدیل به یه پروژه اپن سورس خوب بشه تا بدرد بقیه افراد بخوره
(همچنین اگه دوست دارید برای توسعه پروژه مشارکت داشته باشید، پیوی پیام بدید)
https://github.com/alireza-fa/ghofle
3 260
با پیشرفت فنّاوری و توسعه روزافزون استفاده از نرمافزارها و هوش مصنوعی، استفاده از ابزارها و مکانیزمهای مختلفی برای توسعهٔ سریع و باکیفیت نرمافزارها ضروری است. در این کتاب مجموعه مواردی بیان شده است که به معرفی و پیادهسازی این روشها میپردازند. چه برای افزایش دانش در حوزه نرمافزار و چه برای آشنایی با ابزارها و روشهای پیادهسازی نرمافزارهای مدرن و چه برای آمادگی برای مصاحبههای شغلی برای مهندسی نرمافزار، این کتاب برای شما بسیار مناسب است.
لینک دانلود کتاب
آدرس گیتهاب این کتاب برای بروزرسانیها
https://system-design.ir
Source:
@GoInsights
#book
@Syntax_fa
3 260
اگه کدی که مینویسی، این ویژگی هارو نداره، یه فکری به حال خودت کن 😔:
۱. کدتون مستقل از فریم ورک باشه:
معماری شما نباید وابسته به یه فریم ورک خاص باشه.
کدتون این امکانو بده از فریم ورک ها مثل ابزار ها استفاده کنید بدون اینکه وابسته به محدودیت های یک فریم ورک خاص بشید.
۲. کدتون قابل تست کردن باشه:
قابل تست بودن به این معنیه که بتونید business logic هارو بدون یو آی، دیتابیس، وب سرور یا هر چی وابستگی خارجی که هست، تست کنید.
۳. نباید به ui وابستگی داشته باشید!
قسمت ui رو باید بتونید به راحتی جایگزینش کنید.
مثلا از یک وب ui بتونید بدون اینکه قسمت های دیگه کدتون تغییره کنه، به کنسول و برنامه cli تغییرش بدید.
۴. معماریتون باید مستقل از دیتابیس باشه!
برای مثال: میتونید دیتابیستون رو به راحتی از mysql به mongodb تغییر بدید؟
۵. نباید به یک سرویس خارجی وابستگی داشته باشید!
برای مثال اگه از سرویس اس ام اس استفاده میکنید، آیا میتونید به راحتی بجای کاوه نگار از یه سرویس دیگه استفاده کنید؟
منبع:
https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
#note
@Syntax_fa
3 260
از اونجا که بعضیاتون گفتید چرا همش درباره سی شارپو پی اچ پی میم میذاری. اینم یه میم درباره پایتون
#fun
@Syntax_fa
3 260
سوال مصاحبه جنگویی:
سطح: سخت
تو جنگو میخوایم هر درخواست HTTP رو بصورت خودکار توی یک تراکنس دیتابیس قرار بگیره. یعنی اگه هرکدوم از عملیات های دیتابیس در طول پردازش یک درخواست HTTP با خطا مواجه بشه، تموم تغییراتی که توی دیتابیس اعمال شده rollback شه.
بنظرت چیکار میتونیم بکنیم؟
قبل اینکه جوابو ببینی یکم فکر کن یا سرچ کن:
و اما جواب:
میتونیم با اضافه کردن این خط تو settings.py این قابلیت رو اضافه کنیم:
DATABASES["default"]["ATOMIC_REQUESTS"] = True
اگه فقط بخوایم تو ویو های خاصی atomic requets رو داشته باشیم چیکار میتونیم؟
و جواب این سوال:
میتونیم از دکوریتور atomic استفاده کنیم:
from django.db import transaction
from django.views import View
class MyView(View):
@transaction.atomic
def get(self, request, *args, **kwargs):
...
#interview_question #django
@Syntax_fa3 260
SECURE_PROXY_SSL_HEADER در Django انتظار یک تاپل با دو عنصر را دارد، نام سرصفحه برای جستجو و مقدار مورد نیاز.
برای پاسخگویی به این نیاز، تابع config یک آرگومان cast را میپذیرد که هر callable را دریافت میکند و از آن برای تبدیل مقدار رشتهای به چیز دیگری استفاده میکند.
بیایید چند مثال برای موارد ذکر شده ببینیم:
>>> os.environ['DEBUG'] = 'False'
>>> config('DEBUG', cast=bool)
False
>>> os.environ['EMAIL_PORT'] = '42'
>>> config('EMAIL_PORT', cast=int)
42
>>> os.environ['ALLOWED_HOSTS'] = '.localhost, .herokuapp.com'
>>> config('ALLOWED_HOSTS', cast=lambda v: [s.strip() for s in v.split(',')])
['.localhost', '.herokuapp.com']
>>> os.environ['SECURE_PROXY_SSL_HEADER'] = 'HTTP_X_FORWARDED_PROTO, https'
>>> config('SECURE_PROXY_SSL_HEADER', cast=Csv(post_process=tuple))
('HTTP_X_FORWARDED_PROTO', 'https')
همانطور که میبینید، cast بسیار انعطافپذیر است. اما مثال آخر کمی پیچیده شد.
#python_decouple
@Syntax_fa3 260
پکیج `python-decouple`
یک ابزار مفید برای جداسازی تنظیمات و پیکربندیهای پروژههای پایتون است. این کار باعث میشود که کد شما از وابستگیهای محیطی جدا باشد و تنظیمات را به راحتی تغییر دهید بدون اینکه نیاز به تغییر در کد داشته باشید. این پکیج به خصوص برای مدیریت متغیرهای محیطی و تنظیمات حساس مانند کلیدهای API، اطلاعات پایگاه داده و غیره بسیار مفید است.
ویژگیها
- مدیریت متغیرهای محیطی: متغیرهای محیطی را از فایل
.env بارگذاری میکند.
- پشتیبانی از انواع دادهها: قابلیت تبدیل مقادیر متغیرها به انواع دادهای مختلف مانند int`، `float`، `bool و ...
- مقدار پیشفرض: امکان تعریف مقادیر پیشفرض برای متغیرهایی که ممکن است در محیط تنظیم نشده باشند.
نصب
برای نصب پکیج python-decouple میتوانید از دستور زیر استفاده کنید:
pip install python-decouple
نحوه استفاده
1. ایجاد فایل `.env`:
ابتدا یک فایل با نام .env در ریشه پروژه خود ایجاد کنید و تنظیمات مورد نظر خود را در آن وارد کنید. برای مثال:
DEBUG=True
SECRET_KEY=mysecretkey
DATABASE_URL=postgres://user:password@localhost:5432/mydatabase
2. استفاده از `config` در کد پایتون:
در کد پایتون خود، پکیج decouple را وارد کرده و از Config استفاده کنید:
from decouple import config
DEBUG = config('DEBUG', default=False, cast=bool)
SECRET_KEY = config('SECRET_KEY')
DATABASE_URL = config('DATABASE_URL')
3. توضیحات بیشتر:
- config('DEBUG', default=False, cast=bool):
این خط مقدار متغیر DEBUG را از فایل .env میخواند و آن را به نوع bool تبدیل میکند. اگر این متغیر در فایل .env موجود نباشد، مقدار پیشفرض False استفاده میشود.
- config('SECRET_KEY'):
این خط مقدار متغیر SECRET_KEY را از فایل .env میخواند.
- config('DATABASE_URL'):
این خط مقدار متغیر DATABASE_URL را از فایل .env میخواند.
مثال کامل
فرض کنید یک پروژه ساده دارید که از Flask استفاده میکند و میخواهید تنظیمات خود را با استفاده از python-decouple مدیریت کنید.
1. ایجاد فایل `.env`:
DEBUG=True
SECRET_KEY=mysecretkey
DATABASE_URL=sqlite:///mydatabase.db
2. کد پایتون:
from flask import Flask
from decouple import config
app = Flask(__name__)
app.config['DEBUG'] = config('DEBUG', default=False, cast=bool)
app.config['SECRET_KEY'] = config('SECRET_KEY')
app.config['SQLALCHEMY_DATABASE_URI'] = config('DATABASE_URL')
@app.route('/')
def home():
return "Hello, World!"
if __name__ == '__main__':
app.run()
این کد یک برنامه ساده Flask ایجاد میکند که تنظیمات خود را از فایل .env میخواند. با این کار، میتوانید به راحتی تنظیمات خود را تغییر دهید بدون اینکه نیاز به تغییر در کد داشته باشید.
——————————————————-
توضیحات بیشتر برای علاقه مندان😏:
چگونه کار میکند؟
Decouple همیشه گزینهها را به این ترتیب جستجو میکند:
متغیرهای محیطی؛
Repository: فایل ini یا .env؛
آرگومان پیشفرض که به config ارسال شده است.
چهار کلاس جادوی این کار را انجام میدهند:
Config
هماهنگی تمام بازیابیهای تنظیمات.
RepositoryIni
میتواند مقادیر را از os.environ و فایلهای ini بخواند، به همین ترتیب.
نکته: از نسخه 3.0 به بعد، decouple ترتیب اولویت متغیرهای محیطی یونیکس نسبت به فایلهای تنظیمات را رعایت میکند.
RepositoryEnv
میتواند مقادیر را از os.environ و فایلهای .env بخواند.
نکته: از نسخه 3.0 به بعد، decouple ترتیب اولویت متغیرهای محیطی یونیکس نسبت به فایلهای تنظیمات را رعایت میکند.
AutoConfig
این یک کارخانه Config تنبل است که تشخیص میدهد کدام مخزن تنظیمات را استفاده میکنید.
به صورت بازگشتی مسیر ماژول تنظیمات شما را جستجو میکند تا فایل settings.ini یا .env را پیدا کند.
به صورت اختیاری، آرگومان search_path را میپذیرد تا صریحاً تعیین کند جستجو از کجا شروع شود.
شیء config یک نمونه از AutoConfig است که یک Config با مخزن مناسب را در اولین باری که استفاده میشود، ایجاد میکند.
درک آرگومان CAST
به صورت پیشفرض، همه مقادیری که توسط decouple بازگردانده میشوند رشتهای هستند، زیرا آنها از فایلهای متنی یا envvars خوانده میشوند.
با این حال، کد پایتون شما ممکن است انتظار نوع داده دیگری را داشته باشد، برای مثال:
DEBUG در Django انتظار یک مقدار بولی True یا False دارد.
EMAIL_PORT در Django انتظار یک عدد صحیح را دارد.
ALLOWED_HOSTS در Django انتظار یک لیست از نامهای میزبان را دارد.3 260
موقعیت اخذ جاب آفر انگلیس
موقعیتهای شغلی:
مدیر فنی
هوش مصنوعی و یادگیری ماشین
دیتا ساینس
مدیر پروژه
دواپس
امنیت
فول استک
اندروید یا ios
و ui ux
یسری توضیحات بدم
۱-ابتدا یه محاسبه فنی از طرف شرکت ما (راهبران رایان فناکو) جهت تایید توانایی تخصصی خواهید شد
۲-آیلتس با نمره حداقل ۵
۳-صد و ده هزار پوند (این پول به حساب خودتون داخل صرافی بلوکه میشه و بعد از استقرار در شرکت و بستن قرارداد با شرکت ثالث پول به حساب شرکت ثالث انتقال میسه)
۴-حقوق دریافتی ماهیانه ۳۸۰۰ پوند و قرارداد اولیه دو ساله است
۵-اخذ اقامت همراه خوانواده یا پارتنر
جهت اطلاعات بیشتر پیام بدید
@behzad_azadi
@code_crafters
3 260
موقعیت اخذ جاب آفر انگلیس
موقعیتهای شغلی:
مدیر فنی
هوش مصنوعی و یادگیری ماشین
دیتا ساینس
مدیر پروژه
دواپس
امنیت
فول استک
اندروید یا ios
و ui ux
یسری توضیحات بدم
۱-ابتدا یه محاسبه فنی از طرف شرکت ما (راهبران رایان فناکو) جهت تایید توانایی تخصصی خواهید شد
۲-آیلتس با نمره حداقل ۵
۳-صد و ده هزار پوند (این پول به حساب خودتون داخل صرافی بلوکه میشه و بعد از استقرار در شرکت و بستن قرارداد با شرکت ثالث پول به حساب شرکت ثالث انتقال میسه)
۴-حقوق دریافتی ماهیانه ۳۸۰۰ پوند و قرارداد اولیه دو ساله است
۵-اخذ اقامت همراه خوانواده یا پارتنر
جهت اطلاعات بیشتر پیام بدید
@behzad_azadi
3 260
دوستان بخدا کیک نیست واقعیه. داوطلبانه کتاب مینویسیم لطفا شرکت کنید. شرکت نکنید حقیقتا انگیزهای نمیمونه برای ما.
هدف ما کاملا غیر تجاریه. دوست داریم کل بچههای ایران زمین به آموزش با کیفیت رایگان دسترسی داشته باشند. دوست نداریم به زبان فارسی همش مطالب تکراری و دورههای بی کیفیت تولید بشه. اون هم دورههایی که بیشتر با هدف درامدزایی انجام میشه و نتیجهای جز پکیج فروشهای اینستاگرامی نداره.
حتی شما هم میتونید همکاری کنید. از کتاب نوشتن تا ترجمه. اما بزرگترین و سادهترین کمک شما دوستان همین شرکت در نظرسنجی هست.
ببخشید که زیاد صحبت کردم. پیام موقتی هست.
3 260
⚡️ زبان انگلیسی: بهترین دوست برنامهنویسان در عصر حاضر ⚡️
✏️ مقدمه: همه ما برنامهنویسان با کمی پیشرفت در حوزه کاری خودمون، کم کم متوجه میشویم که باز دانشمون کافی نیست. معمولا تحقیقات خودمون رو با زبان فارسی شروع میکنیم؛ اما پس از مدتی میفهمیم که اطلاعات به زبان فارسی آنطور که فکر میکنیم هم کاربردی نیستند. اینجاست که متوجه یک موضوع مهم میشویم: زبان انگلیسی بهترین ابزار یادگیری برنامهنویسی است.– با توجه به اهمیت فراوان این موضوع تصمیم گرفتم برخی نکات کاربردی در مسیر یادگیری را به شما آموزش بدم. پس Let's Go سینتکسیها! 😉 💡 نکته اول: منبع و روش یادگیری مناسبی انتخاب کنید. مهمترین نکته در مسیر یادگیری انگلیسی، منبع یادگیری این زبان شیرین است. با انتخاب منبع و روش مطالعه مناسب در این مسیر اصلا احساس ناامیدی نخواهید کرد و با هر بار مطالعه بیشتر به ارتقا دانشتون کمک خواهد نمود. با توجه به ویژگی شخصیتی خودتون انتخاب کنید که روش خودآموزی برای شما مناسبتر است یا کلاس رفتن. معمولا افرادی که تازه قصد شروع یادگیری را دارند کلاس زبان به آنها توصیه میشود. اما اگر تا حدودی با انگلیسی آشنایی دارید و قصد دارید آن را تقویت سازید روش خودآموزی میتواند برای شما انتخاب خوبی باشد. در کنار خودآموزی میتوانید یک منتور هم داشته باشید. 💡 نکته دوم: تمرین زیاد و در یادگیری استمرار داشته باشید. یادگیری زبان انگلیسی مانند هر مهارت دیگر نیز، نیاز به تمرین زیاد دارد. با داشتن استمرار در فرایند یادگیری زبان انگلیسی، نکاتی را که یادگرفتهاید را فراموش نخواهید کرد و به مرور خواهید توانست حتی انگلیسی فکر کنید! 💡 نکته سوم: انگلیسی را با انگلیسی یادبگیرید. آیا پس از تولد، برای یادگیری زبان مادری نیاز به زبان دیگری داشتهاید؟ جواب قطعا خیر است؛ پس سعی کنید انگلیسی را حتما با انگلیسی یادبگیرید. توصیه میشود از دیکشنری English To English استفاده کنید و برای فهم جملات و کلمات اصلا نگران نباشید. در صورتی که توضیحات برای شما قابل فهم نباشد کافی است صبر داشته باشید تا به مرور زمان درک نمایید. همچنین میتوانید با جستجو کلمات و دیدن تصاویرشان آنها را به خاطر بسپارید و متوجه شوید. 💡 نکته چهارم: خودتان جملهسازی کنید و با صدای بلند جملات را بخوانید. جملهسازی توسط خودتان سبب به حافظهسپردن میشود و کمتر انگلیسی را فراموش خواهید کرد. با بلند خواندن جملات، عضلات صورت و حنجره خود را به تلفظ واژگان انگلیسی عادت میدهید. 💡 نکته پنجم: در اوایل یادگیری زیاد بر گرامر و حفظ کردن آن تمرکز ننمایید. طبق نکته سوم ما برای یادگیری زبان مادری خود فقط تکرار کردهایم. پس در اوایل یادگیری خود مانند اوایل تولد خود فیلسوف نباشید. وسواس داشتن بر گرامر در نهایت سبب گیج شدن شما و در نهایت ناامیدی خودتان میشود. 💡 نکته ششم و پایانی: تکنیکهای یادگیری-تقویتی مانند Shadowing بیاموزید. با استفاده از چنین تکنیکهایی میتوانید مهارت زبان انگلیسی را در بخشهای Listening, Reading, Speaking و Writing تقویت سازید. یکی از معروفترین و کاربردیترین این تکنیکها، تکنیک شادوئینگ است. این تکنیک بسیار ساده است و در طولانی مدت معجزه میکند. ⭐️ تمام این نکات گفته شده بر اساس تحقیقات و تجارب شخصی است که در سالیان زیاد کسب شده. سعی کردم با ادبیاتی مناسب براتون توضیح دهم پس امیدوارم کاربردی باشه. اگر به نظر شما نکتهای جا مونده، در بخش کامنت نظرتان را بنویسید. 😇 #public #english @Syntax_fa | boost
3 260
درود دوستان سینتکسی! 👋
ما در انجمن Persian CC Books قصد داریم کتابهای رایگان و آزاد را در زمینه برنامهنویسی منتشر کنیم.
یکی از اهداف ما نگارش مجموعه کتابهای آموزشی PHP است. برای تولید محتوای با کیفیت و درست این مجموعه کتاب PHP، نیاز به مشارکت شما عزیزان در یک نظرسنجی داریم. نظرسنجی در ابتدا دارای سوالات عمومی جهت احراز هویت و افزایش کیفیت نظرسنجی میباشد؛ تمام اطلاعات شما نزد ما محفوظ خواهد ماند.
🚀 آدرس نظرسنجی (از طریق پلتفرم پرسلاین): 💎 https://survey.porsline.ir/s/tdca0t0f با تشکر. کوچیک شما، محمد از PCCBs. 😇 #public @Syntax_fa | boost
3 260
⚡️ اتمام سوالات نظرسنجی! 😆
ممنون از کسانی که تا اینجا همراه ما بودند و در نظرسنجی شرکت کردند. سوالات تا فردا در دسترس خواهند بود؛ لذا اگر این نظرسنجی را مشاهده میکنید لطفا شرکت کنید. با تشکر.
@Syntax_fa
3 260
در یک وبسایت تیم برنامهنویسی، کدام بخشها باید بیشتر مورد توجه قرار گیرند؟ [چند گزینه قابل انتخاب است]
3 260
برای دیزاین UI/UX یک سایت برنامهنویسی فریلنسری، کدام مورد را مناسبتر میدانید؟ [پیشنهاداتتان را نیز میتوانید کامنت کنید]
