Python BackendHub – Telegram
Python BackendHub
7.51K subscribers
314 photos
46 videos
11 files
432 links
Learning python & Backend Engineering, with Mani!

Youtube: https://www.youtube.com/@GitOverHere
Github: https://github.com/ManiMozaffar
Linkedin: https://www.linkedin.com/in/manimozaffar

تبلیغات نداریم

Admin: @Mani_nikou
Download Telegram
Yasha
image_2024-08-22_18-05-43.png
یک شفاف سازی: منظوراز سرور تو این schema سرور خوده ربات ناشناسه.

این بهترین نسخه ای هست که میشه با تلگرام اپ نوشت، هویت شما با هرپیام تغییر‌ میکنه بنابراین ناشناسه.

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

@PyBackendHub
👍51🤣1
Python BackendHub
یکی از دوستانی امروز یادم انداخت به یه لایبری قدیمی که نوشته بودم. این لایبری یه HTTP client هست که می‌تونه سایت‌هایی که زیر پوشش Cloudflare هستن و سیستم ربات‌یابشون فعاله رو کراول کنه. تاحالا در موردش صحبت نکرده بودم، ولی گفتم اینجا یه توضیحی بدم. لینک گیتهابش…
چند نفر تو پیوی ازم پرسیدن چطور به این نتیجه رسیدم و این لایبری رو نوشتم. گفتم شاید بهتر باشه تو کانال در موردش صحبت کنم چون نکته مهمیه که همیشه به درد می‌خوره.

ببینید من نه مهندس معکوسم، نه تو امنیت کار کردم. یکی از پروژه‌هایی که داشتم روی کراولینگ بود. یه روز دیدم سایتی که کراول می‌کردم همه درخواست‌هارو بلاک می‌کنه. یه درخواست با curl زدم، نتیجه رو ذخیره کردم و دیدم. فهمیدم مشکل چالش Cloudflare هست. جالبه که با مرورگر وقتی همون درخواست رو می‌زدم، سریع جواب می‌گرفتم.

من قبلاً کتابی در مورد HTTP و TLS خونده بودم و می‌دونستم معجزه‌ای در کار نیست. وقتی درخواست می‌زنی، سرور جوابی می‌ده. پس یه چیزی تو curl داره اشتباه می‌شه که تو مرورگر نمی‌شه. درخواست مرورگر رو دقیقاً با curl کپی کردم، ولی بازم فیل شد! ترافیک سیستم رو پروکسی کردم، یک بار همون curl رو زدم و یک بار هم با مرورگر. مقایسه‌شون کردم و دیدم تفاوت اصلی توی Hello Client هست. همینو تو پایتون پیاده کردم و بایپس شد.

کل این پروسه ۲۰ دقیقه طول کشید. یه سرچ کردم ببینم کلاینت پایتونی برای Cloudflare هست یا نه. دو تا پروژه پیدا کردم که نه کار می‌کردن نه توضیح داده بودن چطور این کارو کردن. حتی اگه کارم می‌کردن، استفاده نمی‌کردم. هیچ‌وقت لایبری که نمی‌دونی چیکار می‌کنه رو تو پروداکشن استفاده نکن. بعداً سورس کد یکیشونو دیدم که وسطش یه کار عجیب می‌کرد که باعث مموری لیک می‌شد!

نکات مهم این داستان:

۱. دانشی که به‌صورت تئوری دارید، زود یادتون می‌ره. وقتی ازش استفاده عملی کنید، بیشتر تو ذهنتون می‌مونه. استفاده عملی از یک نیاز میاد. نه اینکه یک کتاب بخونید ببینید کد هاشو کپی پیست کنید.
۲. همیشه تحقیق کنید و سولوشنی که پیاده کردید رو بفهمید. من اگه اون لایبری رو استفاده می‌کردم، مموری لیک می‌خوردم و این لایبری هم نوشته نمی‌شد.
۳. برای یادگیری از GPT استفاده نکنید. تئوری یاد بگیرید بهتر از اینه که از GPT بپرسید. چون GPT تئوری رو ناقص می‌گه و نمی‌تونه دقیقاً مشکل رو تشخیص بده. همین الان هم این سوال رو ازش پرسیدم با بهترین prompt ای که میشد داد. و جوابشو ببینید خودتون
۴. با تمرین و تکرار مهارتتون بالا می‌ره. این پروسه ۲۰ دقیقه طول کشید چون بارها ترافیک سیستم عاملمو پروکسی کرده بودم و می‌دونستم Network Tab مرورگر خیلی سطح بالاست و بعضی HTTP Headerها رو نشون نمی‌ده. هیچ مجیکی وجود نداره، تمرینه که دستتو سریع می‌کنه. شاید یک نفری که ندونه اینارو و نکرده این تسک چند هفتش میشد.


@PyBackendHub
👌25👍53
Python BackendHub
به دلیل سرما خوردگی لایو به یک شنبه یک هفته بعد موکول خواهد شد (۲۵ ام August). متاسفانه نتونستم ویدیو آخر که راجب ماگریشن نویسی با alembic هست رو ظبط کنم. ایشالا اونم طی این آخر هفته انجام میدم وقتی بهتر شدم :)
راجب لایو که قراره بذاریم مجددا متاسفانه مجبورم که موکولش کنم به هفته آینده. چون هنوز ویدیو alembic رو ندادم. مریضیم کرونا بود ۲ هفته طول کشید تا کامل خوب شم 😅 (الان خوبم دوستان نگران نباشید)

امروز یا فردا ویدیو alembic هم آپلود میشه آخرین ویدیو دوره مقدماتی SQLAlchemy

@PyBackendHub
23😢1🤡1
Forwarded from Sadra Codes
آقا ساپورت کنید ببینم یک پروداکت‌هانت رو می‌گیریم یا نه. 😅
تقریبا ۱۵ ساعت مونده و سومیم. با نفر اول تقریبا ۷۰ تا vote فاصله داریم.

https://www.producthunt.com/posts/hey-7fed5187-9b92-4ee8-9ce5-e08d5bc63d15
11🤡3👍2
آیا می‌دونستید از هر ۵۰ تا رزومه فقط یکیش مصاحبه می‌گیره؟ آیا می‌دونستید که تجربه و دانش شما لزوماً به معنای رزومه‌ی بهتر نیست؟ و اینکه خیلی از مهندسای نرم‌افزار با تغییر رزومشون تونستن درآمدشون رو چند برابر کنن؟

خب، من یه راه‌حل دارم براتون! چند وقت پیش من یه ریپو داشتم که الان ۳۰۰ ستاره گرفته و توش به تکنیک‌های نوشتن رزومه پرداخته بود. حالا وقت گذاشتم و اون رو به Mkdocs تبدیل کردم تا خوندنش راحت‌تر بشه. کلی قسمت رو آپدیت کردم، مثال‌های بیشتر و نمودار و رفرنس‌های جدید اضافه کردم، و مطالب رو خیلی مرتب‌تر کردم.

لینک ریپو
لینک داکیومنشن جدید

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


@PyBackendHub
58👍10🔥3
Forwarded from Ninja Learn | نینجا لرن (Mohammad)
دوره DRF بالاخره منتشر شد 🥳

توی این دوره از مبانی شروع می‌کنیم و قدم به قدم وارد دنیای API‌های پیشرفته می‌شیم، مفاهیمی مثل Serialization، Authentication، Viewsets و بسیاری دیگه رو به‌صورت کاربردی یاد می‌گیری. هر جلسه با دقت و وسواس طراحی شده تا مطمئن بشیم که نه تنها مفاهیم رو می‌فهمی، بلکه آماده‌ای اون‌ها رو توی پروژه‌های واقعی‌ات پیاده‌سازی کنی. 💻🔗

https://youtube.com/playlist?list=PLq3tK5gKk3-11_jwdZ_yB8iqdS1q0OfXS&si=RnNUGYgOtN9U018R

@ninja_learn_ir
🔥9👍7👎2🤔1
Python BackendHub
آیا می‌دونستید از هر ۵۰ تا رزومه فقط یکیش مصاحبه می‌گیره؟ آیا می‌دونستید که تجربه و دانش شما لزوماً به معنای رزومه‌ی بهتر نیست؟ و اینکه خیلی از مهندسای نرم‌افزار با تغییر رزومشون تونستن درآمدشون رو چند برابر کنن؟ خب، من یه راه‌حل دارم براتون! چند وقت پیش…
بچه ها زیر این پست ممنون میشم اگه خوندین فیدبک بدید راجب ریپو رزومه نویسی.

یک آپدیت بهتون بدم:
۱. یکی از دوستان داره رو فارسی سازی این رزومه کار میکنه. احتمالا نسخه فارسی هم داشته باشیم به زودی.
۲. یکی از دوستان فیدبک داد که این ریپو خیلی به درد بخور هست براش ولی هنوز خیلی رفع ابهام کیسی که اکثرا دارن رو نداره -> کسی که ۱ سابقه کاری داره یا اصلا نداره چطور میتونه یک رزومه خیلی خوب بنویسه و پر کنه رزومش رو.
۳. ایده خودم یک CLI tool هست که دو فیچر داشته باشه. یکی رزومه pdf رو بخونه و scan کنه و با یک LLM model بیاد به سکشن های مختلفش نمره بده و بگه چطور میتونی بهترش کنی. یکی اینکه متن رزومت رو مطابق با آگهی شغلی کاستومایز کنه که برای اون کسی که استخدام میکنه بیشتر تو چشم باشه. جفتش شدنیه. ولی سخته. مخصوصا دومی که write داره.

حالا ایده و فیدبک هاتون چیه؟

@PyBackendHub
👍23
Python BackendHub
بچه ها زیر این پست ممنون میشم اگه خوندین فیدبک بدید راجب ریپو رزومه نویسی. یک آپدیت بهتون بدم: ۱. یکی از دوستان داره رو فارسی سازی این رزومه کار میکنه. احتمالا نسخه فارسی هم داشته باشیم به زودی. ۲. یکی از دوستان فیدبک داد که این ریپو خیلی به درد بخور هست…
اگه این پست لینکدین رو share کنید و یا لایک کنید کمک میکنید این ریپو دیده شه. اگه دوست داشتین تو لینکدین هم درخواست بدید کانتکت شیم.

در تلاشم که یکی از سایت های ادیتور CV رو باهاشون صحبت کنم که یک API بهم بدن برای read و write به رزومتون مستقیم. اینطوری دیگه درگیر parse کردن pdf و لاتکس و ... نمیشیم و یک UX خیلی خوب با کمترین دردسر رو به یوزر ها میدیم و بهترین خروجی. اگه پست زیاد دیده شه, باعث بیشتر شدن ستاره ها میشه. و تو این سناریو هم کمک میکنه که نظره این سرویس دهنده ها برای همکاری جلب بشه.

@PyBackendHub
👍18❤‍🔥2👎1👏1
https://www.pulumi.com/

یک Iac هست که خیلی جذبش شدم برای یاد گرفتنش.
به جای اینکه yaml بنویسید تو یک زبون برنامه نویسی دلخواهتون مینویسید. و قابلیت های خیلی خوبی داره.

@PyBackendHub
👍7👎1
دیشب تو گروه بحث بود که من اینترن هستم و چیکار کنم که شغل پیدا کنم یا رزومه‌ام بیشتر دیده بشه. تو پیوی هم خیلیا سوال می‌پرسن که چطور بدون تجربه کاری اولین شغلشون رو بگیرن. ببین، همه شرکتا دنبال کسی می‌گردن که واقعاً یک مهارت رو بلده. حالا شاید بگی من ۴ سال دانشگاه رفتم، ۱۰ تا پروژه تمرینی هم تو گیت‌هاب گذاشتم، پس چرا قبولم نمی‌کنن؟ ولی باید بدونی که تعریف "بلد بودن" اینجا متفاوته.

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

مثلاً یه بازی بود قدیما تو ایران به اسم "تراوین". یه نقشه ۴۰۰ در ۴۰۰ داشت (مختصات منفی هم داشت) یعنی ۱۶۰۰۰ خونه. هر کاربر که ثبت‌نام می‌کرد، یه خونه تو نقشه می‌گرفت که می‌شد دهکده اصلیش. اولین شرط بازی این بود که دو دهکده نمی‌تونن تو یه مختصات باشن. خب، اینجا می‌تونستی یه تیبل با ۱۶۰۰۰ خونه بسازی و هر بار که کاربر ثبت‌نام کرد، یه مختصات خالی بهش بدی. به این روش میگن whitenoise sampling
تا اینجا پروژه تمرینی تموم میشه. ولی پیچیدگی از اینجا شروع میشه که بیزنس متوجه میشه کاربرا تو کل نقشه پخش شدن، بعضیا چسبیدن به هم، بعضیا دورن. حالا بیزنس میگه برای بیشتر کردن هیجان بازی، باید کاربرا رو نزدیک هم نگه داری. برای همین، مثلاً به جای ۱۶۰۰۰ خونه، ۴۰۰ خونه مرکزی رو در نظر می‌گیری و وقتی نصفش پر شد، میری سراغ ۱۶۰۰ خونه. به این روش میگن progressive sampling.
مشکل بعدی اینه که کاربرا خیلی بهم چسبیدن و این باعث میشه هیجان بازی زیادی زیاد شه و اول بازی همه به هم حمله کنن، که این خودش باعث میشه خیلیا همون اول بازی رو ول کنن. حالا بیزنس می‌خواد یه فاصله حداقلی بین دهکده‌ها بذاری. اینجا به روش blue sampling می‌رسی.

می‌بینی؟ یه سیستم ساده چطور با دوتا نیاز بیزنسی که اول مشخص نبود، پیچیده شد؟ این مثال رو زدم که بگم یه پروژه مثل فروشگاه زدن اصلاً چشمگیر نیست. با همونم شاید شغل بگیری، ولی اگه می‌خوای سریع‌تر شغل پیدا کنی، برو یه پروژه استارت بزن که واقعاً به دردت بخوره و یه مشکلی که داری رو حل کنه.
پس من میگم طبق قانون gall سیستم complex ای که کار کنه به دنیا نمیاد, بلکه سیستم ساده ای بود که کار میکرد و به سیستم complex بلوغ پیدا کرده. یک مقاله خیلی قشنگ راجب همین قانون.
مثال؟ یه نگاه به گیت‌هاب من بنداز. همه پروژه‌هام اینطوریه. از لینکدین کراولر گرفته تا کلودفلیر کراولر و aioclock. همه برای این ساخته شدن که یه مشکلی که داشتم رو حل کنن.

@PyBackendHub
👍63👎8👏4🍌3🔥2👌21💋1🆒1
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
خیلیا سوال میپرسن موقعیت کاراموز و جونیور گیر نمیاد، چطور استخدام بشیم پس

همیشه گفتم من که حتی اگر شده یکی دوماه زمان بزارید یک ایده ای مطرح کنید که بتونید بیزینس باهاش بزنید و بالا بیارید، صرفا یک وبلاگ یا فروشگاه نزنید، چیزی بزنید که یوزر‌بیاد روش و استفاده کنه

اینجا مانی یکسری توضیحات داده که چرا پروژه های ساده نمیتونن مارو استخدام کنن :

https://news.1rj.ru/str/PyBackEndHub/1109

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

حتی با یک پروژه هم میتونید استخدام بشید، حتی میتونید استخدام کنید افرادی رو که براتون کار کنن :)

من هنوز از پروژه های ۵-۶ سال پیشم درامد دارم، اگر سپنتا خاموش نمیکردم از پروژه ده سال پیشمم هنوز درامد میتونستم داشته باشم

@SEYED_BAX
👍17👎8🔥1👏1
Python BackendHub
دیشب تو گروه بحث بود که من اینترن هستم و چیکار کنم که شغل پیدا کنم یا رزومه‌ام بیشتر دیده بشه. تو پیوی هم خیلیا سوال می‌پرسن که چطور بدون تجربه کاری اولین شغلشون رو بگیرن. ببین، همه شرکتا دنبال کسی می‌گردن که واقعاً یک مهارت رو بلده. حالا شاید بگی من ۴ سال…
یک نکته بگم که برداشت اشتباه نشه از این پست من. من با این پست نمیخواستم این پیام رو به مخاطب بدم که حتما باید بری یک پروژه واقعی اوپن سورس استارت بزنی. میخواستم درک کنید چرا دانش theory برای گرفتن شغل میتونه کافی نباشه و چرا شرکتا همیشه ترجیحشون با کسیه که سابقه کاری داره. و درک کنید کد زدن برای بیزنس یک اسکیله که اگه برای بیزنسی کد نزدی قطعا نداریش.
امیربهادر راه های دیگه ای هم اشاره کرد مثل کاره فریلنسری. یا ...

نکته خیلی مهم اینه که وقتی من دارم رزومتون رو میخونم, نبینم صرفا دو پروژه فروشگاهی زدید و جز این چیزه دیگه ای نیست تو رزومتون. اون وایب problem solver رو باید من بدید. ممکنه هم با همچین رزومه ای کار پیدا کنید ولی احتمالش کمتره.
برای پیدا کردن کار بنظره من ۳ فاکتور دخیله: ۱. لوکیشن خوب. ۲. میزانی که اپلای میکنید. ۳. کیفیت رزومه. لوکیشن ممکنه دسته خودتون نباشه, ولی اون ۲ تای دیگه هست.

@PyBackendHub
👍18👎8🤬1😈1
دوستان خواهشا پیوی من سوال برنامه نویسی و جنرال نپرسید.

https://news.1rj.ru/str/PythonFellow
عضو گروه بشین، من همیشه معمولا پاسخ میدم. بقیه هم میدن، سوال ممکنه برای شما باشه ولی بقیه هم میتونن استفاده کنند جواب بدن و نظره من ممکنه bias باشه. بحث بهتره جمعی باشه تا دو نفره.


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

@PyBackendHub
👍14🤣3
توضیح پست بعدی...

@PyBackendhub
👍2
Python BackendHub
توضیح پست بعدی... @PyBackendhub
یک مشکلی که اکثر برنامه نویس ها دارن اینه که موقع extend کردن یک سیستم پیچیده ای اون رو break میکنن. چون یک کیسی وجود داشت که یادشون رفت هندل کنند یا بهش فکر نکرده بودن. راه حلش چیه؟
یک سیستم ساده رو تصور کنید، مثل یک پرینتر دو بعدی. شما یک سری shape دارین که میخواین دو بعدی پرینتشون کنید. بیایید دو تا راه مختلف رو بررسی کنیم.
راه اول: فرض کنید که یک Base یا کلاس پایه داریم که تمام اشکال از اون ارث‌بری می‌کنن. مثلا یک کلاس Shape داریم که Circle و Square ازش ارث‌بری می‌کنن. حالا فرض کنید که به جای دو تا shape، صد تا shape داشتیم. با نگاه کردن به کد، می‌فهمیدیم که یک شیء از نوع Shape داره پرینت میشه، ولی دقیقاً نمیدونیم چی. فقط میدونیم که یک چیزی که abstract شده و یک shape هست داره پرینت میشه. این یعنی تایپ سیستم داره بهمون میگه "خب، یه شکلی هست، ولی من نمیدونم دقیقا چی." مشکلی که داره اینه که فکر کنید من یک معکب بخوام بسازم. و مثلا ۱۰۰۰ تا shape داشته باشم و یک سورس کد خیلی گنده. آیا مکعب دو بعدی پرینت میشه؟ نه. پس وقتی دارم ارث بری میکنم باید کل وابستگی همه کدم به Shape رو تو ذهنم داشته باشم و احتمال زیاد یک چیزی رو break میکنم. تو این مثال کد بالا, اگه ارث بری کنم و مکعب رو اضافه کنم فانکشن پرینت دو بعدی break میشه.
راه دوم: بیایید به جای استفاده از یک Base کلاس، از تایپ‌های مشخص‌تر استفاده کنیم. اینجا دقیقاً میدونیم که چه حالاتی در زمان اجرا داریم. مثلا، کد ما مشخص می‌کنه که یا Circle داریم یا Square. هیچ چیزی به صورت abstract یا مبهم نیست. خوبیش اینه که وقتی کد رو extend می‌کنی، نمیتونی ناخواسته جایی از سیستم رو بشکنی. چون وقتی یک شیء جدید مثلا مکعب که ۳ بعدی هست رو اضافه می‌کنی به اون Union که تصویر, اون وقت تایپ چکر تو خط آخر به شما میگه که مکعب هندل نشده و Never نیست.
بنابراین باعث میشه که موقع extend کردن، کل کدت قرمز بشه. خوبیش اینه که نمی‌تونی چیزی رو تصادفی و غیرعمدی خراب کنی. بدیش اینه که باید بری و همه جا رو درست کنی و به همه چیز فکر کنی.یک بدی دیگه هم داره که فقط شامل حال library ها میشه نه کد های بیزنس. دلیلشو اگه حدس زدید کامنت کنید 🙂
خلاصه، این روش به وضوح و پیشگیری از خطا کمک می‌کنه، اما در عین حال، سخت‌گیرتره و نیاز به توجه بیشتر داره. به این روش میگن استفاده از تایپ سیستم برای present کردن لایه بیزنستون.

@PyBackendHub
👍8👎2
Python BackendHub
یک مشکلی که اکثر برنامه نویس ها دارن اینه که موقع extend کردن یک سیستم پیچیده ای اون رو break میکنن. چون یک کیسی وجود داشت که یادشون رفت هندل کنند یا بهش فکر نکرده بودن. راه حلش چیه؟ یک سیستم ساده رو تصور کنید، مثل یک پرینتر دو بعدی. شما یک سری shape دارین…
دو سری نکته اضافه کنم:

۱. دوستان این مثاله طبیعتا تو ۲۰ خط کد نمیتونم اون مشکل extend بیزنس رو بیارم. شما فرض کنید هزاران شیپ دارین، هزاران فیچر دوره این شیپ دارین، ایا یادتون خواهد بود که یک جایی یک constraint ای دارین که یک شکل فقط‌ دو بعدی میتونه باشه با این بیس کلس؟
اون زمانی کد که Shape زده شد فرض کنید ۱۰ سال‌پیش بوده، کسی نمیدونسته قراره یک پرینتر سه بعدی بیاد و ما اشکال سه بعدی هم پرینت کنیم.

۲. اگه راه حل مچ کیس رو بریم، Shape دیگه وجود نخواهد داشت. صرفا چون دو اسکرین شات نشه جدا نکردم.

تو لایوی که میذارم، یکی از چیزایی که نشون میدم همینه که چطوری از تایپ سیستم استفاده کنیم برای نشون دادن constraint های بیزنس ولایه بیزنس

@PyBackendHub
👍2
Python BackendHub
یکی از دوستانی امروز یادم انداخت به یه لایبری قدیمی که نوشته بودم. این لایبری یه HTTP client هست که می‌تونه سایت‌هایی که زیر پوشش Cloudflare هستن و سیستم ربات‌یابشون فعاله رو کراول کنه. تاحالا در موردش صحبت نکرده بودم، ولی گفتم اینجا یه توضیحی بدم. لینک گیتهابش…
نسخه جدید CfCrawler منتشر شد. همون کتابخونه ای که تو این پست راجبش حرف زده بودم.

تغییرات این نسخه:
- Make dependency to fake useragent optional
- Implement new backend support for user agent factory pool
- Implement default simple user agent pool
Improve code quality
- Fix issue with rotating user agent not changing TLS fingerprint respectively
- Fix issue with ignoring httpx transport on httpx client constructor -> now it patch the passed transport instead of ignoring it, and if not passed default to a simple transport.

لینک گیتهاب

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

@PyBackendHub
13👍2
یک کدی دارین که خیلی کنده. تیکت اومده که کاربر ها راضی نیستن از کندی این اون قسمت.
چطوری بهترش میکنید؟ مرحله هایی که طی میکنید برای بهتر کردن پرفومنس یک کد رو کامنت کنید.

@PyBackendHub
👍8
Python BackendHub
یک کدی دارین که خیلی کنده. تیکت اومده که کاربر ها راضی نیستن از کندی این اون قسمت. چطوری بهترش میکنید؟ مرحله هایی که طی میکنید برای بهتر کردن پرفومنس یک کد رو کامنت کنید. @PyBackendHub
۷۲ کامنت گذاشته شده تا این لحظه، اکثرش هم درسته اشتباه نیست. مثل بحث observability، پروفایلینگ، بررسی خودت تیکت و شرایط کاربر، و … . منکر درست بودن اینا نیستم اصلا. یک سری کامنت غلط هم بود (از نظره من)، ولی یک چیزه خیلی خیلی ساده جا موند! کسی نگفت من میرم کدو بخونم ببینم چیکار میکنه و چیکار باید میکرده😅 ساده فکر کردن خیلی سخته😁

ببینید اگه میخواین یک کد رو پرفومنسشو بهتر کنید، اولین قدم آپتیمایز کردن اینه که شما یک کاغذ برداری، و این ۳ فلو اجرا رو بکشی (execution flow):
۱. حداقل فلویی که نیازه طی شه برای انجام اون کار
۲. بعد یک بررسی ساده و سریع، فلویی که فکر میکنی اتفاق میفته
۳. با دیباگر کدو ران کنی و جامپ کنی، و واقعا فلویی که اتفاق میفته

در کمال ناباوری، هیچوقت این ۳ تا نزدیک هم نیستن! 😅 وقتی این ۳ فلو رو داری، میتونی دقیقا تخمین بزنی که چقدر میتونی latency یک کد رو کم کنی. چقدر میتونی سریعترش کنی. با یک ضرب و تقسیم این عدد خیلی راحت به دست میاد. مراحل اضافه هم میتونی حذف کنی و تصمیم بگیری کجا رو ریفکتور کنی.
ببینید تو پروفایلینگ شما hotloop برنامتون رو پیدا میکنید، و اپتمایز میکنید. ولی اگه ۱۰۰ قدم ریز دارین برمیدارین که لازم نیست، و یک قدم بلند که لازمه انجام شه، پروفایلر به شما میگه اون قدم بلند رو آپتمایز کن. که لزوما ممکنه بهترین راه حل نباشه.

ویدیو زیر رو توصیه میکنم ببینید. ۳ ساعته، ولی یک ساعت اخرش پرسش پاسخه. یکی از قشنگ ترین ویدیو های tech هست که دیدم. کلشو یک شبه تموم کردم😅 ساعت ۹ شروع کردم دیدن، ۱۲ تموم شد!
https://www.youtube.com/watch?v=Ge3aKEmZcqY

این ویدیو شما رو قانع خواهد کرد:

۱ نرم افزار ها به شدت خیلی عجیبی کند هستند. همه نرم افزار ها! و سخت افزار خیلی سریعتر از چیزی هستن که میتونید تصور کنید.
۲. زبون و الگوریتم قطعا تاثیر گذار هست تو سرعت، ولی نه خیلی! چیزی که تاثیر گذار ترین عامله طرز فکر کسیه که داره یک کدی رو مینویسه.
۳. پرفومنس و readability و ساده بودن کد، دو نقطه متقابل نیستن!
۴. سرعت و latency اجرا شدن کد، تو هر بیزنسی مهمه.

@PyBackendHub
9😐4👍3❤‍🔥1😁1
Python BackendHub
۷۲ کامنت گذاشته شده تا این لحظه، اکثرش هم درسته اشتباه نیست. مثل بحث observability، پروفایلینگ، بررسی خودت تیکت و شرایط کاربر، و … . منکر درست بودن اینا نیستم اصلا. یک سری کامنت غلط هم بود (از نظره من)، ولی یک چیزه خیلی خیلی ساده جا موند! کسی نگفت من میرم…
چیزی که میگم ممکنه راحت بنظر برسه
یا شاید هم تابلو.
ولی تا وقتی که ویدیو رو نبینید متوجه نمیشید دقیقا این طرز فکر چیه. خیلیم سخته که بخوام تو ۲۰۰ کلمه خلاصش کنم.
تو این اسکرین شات شما محاسبات بسیار ساده ای رو میبینید (که ممکنه بنظرتون خیلی سخت و پیچیده باشه ولی نیست) که داره حساب میکنه این کدش چقدر mathematic آپریشن انجام داده. و طبق سی پی یویی که داره چقدر میتونه کدش سریع بشه. مینیموم ترین سرعت رو کاغذ چیه؟ و چه تفاوتی با عمل داره.

این ویدیو به شما فقط مواردی که بهتون گفتم یاد نمیده, بهتون سخت افزار یاد میده, بهتون دانش کارکرد CPU و رم یاد میده, بهتون یک دید با زاویه کاملا متفاوتی میده که احتمالا نداشتین. (شخصا که نداشتم)

خلاصه ببینید ضرر نمیکنید 😁 ارزش ۲ ساعت رو واقعا داره.
@PyBackendHub
👍23👎1
توضیح در پست بعدی...
7