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
نسخه 0.0.2 پکیج cfcrawler منتشر شد 🔥

Change Log:
- Fix compatibility to support python >=3.9

--------
پکیج cfcra‍wler یک پکیج پایتونی هست که async هست و کاملا in-place هست با httpx که به شما اجازه میده سایت هایی که تحت پوشش cloudflare هستن رو درخواست بزنید بهشون و ۲۰۰ بگیرین.

برای حمایت لطفا ستاره بدین یا contribute کنید یا issue بزنید 🙌

🔗 https://github.com/ManiMozaffar/cfcrawler


pip install cfcrawler
from cfcrawler import AsyncClient

async def main():
client = AsyncClient()
response = await client.get("https://cloudflare.com")


@ManiFoldsPython
🔥11👍3
CodeNalineS2E13 - از تولد یک برنامه‌نویس تا سینیور بک‌اند
torham
کدنالین اپیزود سیزدهم از فصل دوم، از تولد یک برنامه‌نویس تا سینیور بک‌اند.
این اپیزود یک اپیزود خاصه :). تو این اپیزود با مانی و بابی مسیر برنامه‌نویس شدن رو از زمانی که تصمیم میگیرید برنامه‌نویس بشید و تا وقتی که یک سینیور و آدم خفن میشید رو پیش رفتیم و دربارش گپ زدیم، ایده‌ها و کارهایی و چیزهایی که خوبه انجام بدیم و یادبگیریم رو گفتیم. امیدوارم از این اپیزود خوشتون بیاد.

00:00:00 آغازین

00:00:32 برنامه‌نویسی چطوری شروع کنیم بهتره؟ بریم دبیرستان و دانشگاه برنامه‌نویسی بخونیم یا خودآموز پیش بریم؟ سابقه کار چجوری جور کنیم برای خودمون؟

00:25:42 حالا بعد از دانشگاه چطوری وارد بازار کار بشیم؟ چه کارهایی باید انجام بدیم؟

00:44:55 بریم سراغ شاخه بک‌اند. چه چیزهایی رو یادبگیریم و چیکارهایی کنیم تا از جونیور به میدلول برسیم؟

1:09:47 از میدلول به سینیور بک‌اند

1:22:56 نکته و حرف‌های پایانی
1:27:27 موسیقی پایانی ( آقای ماروین از گروه او و دوستانش )

PodCast: @CodeNaline
Mani : @ManiFoldsPython
Boby: @BobyDotCloud
Torham: @TorhamDevCH
7💋2
خوندن سورس کد پروژه ها تو گیتهاب خیلی کمکتون میکنه.
https://github.com/Netflix/dispatch
پروژه توسط netflix نوشته شده. یک incident manager هست که g-suite و jira و اسلک و اکثر سورس هارو مدیریت میکنه با کاستومایز بالا.

پروژه کاملا sync هست متاسفانه. ولی بازم خیلی جا داره برای یادگیری. نکته جالب پروژه خیلی ساده بودنشه.
اگه ببینید متوجه میشین بیشتر فانکشنال کد زدن. نه clean architecture داشتن نه خیلی پیچیده کردن داستانو با ۱۰۰ مدل دیزاین پترن مختلف. من نقض نمیکنم اینارو ها ولی هرچیزی باید به جاش استفاده شه و drawback هاش درنظر گرفته شه. چه OOP چه clean architecture.

یک جاهایی هم OOP کد زدن. مثلا سیستم پرمیشن که طراحی کردن رو واقعا دوست داشتم, خیلی ساده و تمیز.
https://github.com/Netflix/dispatch/blob/ad74b8016c372811b713fe21e275c5e3e4c2a184/src/dispatch/auth/permissions.py#L33

خلاصه اینکه وقتی درگیر این مباحث میشین یادتون باشه drawback اش چیه و کجا به درد میخوره و کجا نباید استفاده شه.

@ManiFoldsPython
👍5
لینک گروه کانال: دوست داشتین عضو شین. بحث های خوبی میشه یک وقتا خودم خیلی استفاده میکنم 🙌

https://news.1rj.ru/str/PythonFellow

@ManifoldsPython
9👍1
برای اینکه بدونید یک پکیج چقدر استفاده میشه هیچوقت به ستاره گیتهابش نگاه نکنید. سایت زیر میتونید ببینید چه مقدار دانلود شده و تو چه ورژن های پایتونی این دانلود انجام شده. میتونه روش خوبی باشه برای مقیاس یک دپندسی که چقدر استفاده میشه و چقدر جدیه یک لایبری.

https://pypistats.org/


مثلا sqlalchemy تو روز گذشته ۲ میلیون دانلود داشته در حالی که ‍tortoise orm تو یک ماه گذشته کلا ۱۰۰ هزار دانلود داشته. ولی ستاره هاشو باهم مقایسه کنید میبینید فقط sqlalchemy دو برابره tortoise ستاره خورده پس مشخصا sqlalchemy به مراتب خیلی بیشتر استفاده میشه داخل شرکتا تا tortoise

احتمالا بشه امار فیک هم درست کرد پس خیلی objective نگاه نکنید. چیزایی مثل تست و داک و learning curve و دپندسی هاش هم مد نظرتون باشه.

پ.ن:‌آمار دانلود cfcrawler رو میتونید ببینید تو عکس 😁 تا الان ۲۲۵ نفر نصب کردن.

@ManiFoldsPython
👍18👏1
Forwarded from Sadra Codes
سلنیوم رو بندازین دور و از playwright استفاده کنید بلکه به راه راست هدایت شوید!

Playwright: https://playwright.dev/python/

+ این ابزار به شکل عجیبی خوب تشریف داره.
+ سپاس از مانی بابت پیشنهاد این فریم ورک.
👍81😁1
یک پست دوست داشتم بنویسم, راجب review کردن و نگه داری یک PR با بست پرکتیس هایی که باید رعایت شه

اولا study نشون داده که شما هرچقدر بیشتر وقت بذارین رو review کردن یک PR همونقدر پروداکتتون جلوتر میفته. یعنی چی؟ مگه میشه؟‌اره خب , شما هرچی زودتر جلوی باگو بگیری زمان کمتری براش صرف میکنی. قبل کد زدن بهترین موقع برای پیدا کردن باگه!‌(یک requirement خیلی خوشگل و تمیز). در درجه بعدی موقع کد زدن و فکر کردن به کدی که میزنید. در درجه بعدی موقع بررسی PR. در درجه بعدی رو dev و بعد رو staging و در نهایت رو پروداکشن. چرا اینو میگم؟‌چون مثلا اگه یک باگی پیدا کنیم که تو staging باشه ولی تو پروداکشن نباشه یعنی یکی از pr ها مشکل بوده. ولی مشکل که بره رو پروداکشن خیلی سخت تر میشه track اش کرد که دقیقا منشا اش کجا بوده و بیشتر طول میکشه چون پهنا بیشتری داره.

حالا سوال اینجاست چیکار کنیم موقع review؟ اولین کاری که میکنید اینه که requirement رو نگاه میکنید و تو ذهنتون آنالیز میکنید چه چیزایی نیازه. بعد رو کد میگردین دنبال edge case. ممکنه حتی تو requirement هم به edge case و باگ برسین! تا اینجا فقط باگای لاجیکاله. در درجه بعدی سعی میکنید تستا رو بخونید. اگه pr ای تست نداره, فیچری تست نداره بهتره اصلا مرج نشه. تستا رو که خوندین حتما کیس هایی هست که دستی باید تست شه حداقل یک بار. کیس هایی که شاید خیلی خوب نمیشد تست اتوماتیک نوشت براش. میرین و checkout میکنید و یک دور تست دستی هم انجام میدین. احتمال اینکه باگ پیدا کنید خیلی زیاد میشه اینطوری. و درنهایت میپردازین به مباحث دیزاین کد و پرفومنس اگه جایی مثلا نیاز به decoupling داشت یا جایی نیاز. بود یک ‍queryبهینه تر نوشته شه.

با این فرمول اگه برین جلو اکثر مواقع PR به ‍changes requested میخوره مخصوصا برای نیروی جدید. سعی کنید یک PR رو خیلی گنده نکنید چون review اش خیلی سخت تر میشه و احتمال پیدا کردن باگ کمتر.
یک مشکل دیگه که خیلیا انجام میدن اینه که داخل PR میان بیشتر از تایتلش انجام میدن. مثلا طبق git flow مشخصه یک PR چه چیزایی میتونه باشه. یک pr همزمان نباید هم یک issue رو درست کنه هم یک فیچر اضافه کنه. اگه وسط توسعه به اون issue رسیدین و شناساییش کردین باید یک برنچ جدا بسازین, اون ایشو رو اونجا درست کنید با تست فیل و cherry pick کنیدش رو برنچ فیچری که داشتین کار میکردین که جداگانه review شه و سریعتر مرج شه.

@ManiFoldsPython
👍9
👍8👏1😁1
Python BackendHub
یک پست دوست داشتم بنویسم, راجب review کردن و نگه داری یک PR با بست پرکتیس هایی که باید رعایت شه اولا study نشون داده که شما هرچقدر بیشتر وقت بذارین رو review کردن یک PR همونقدر پروداکتتون جلوتر میفته. یعنی چی؟ مگه میشه؟‌اره خب , شما هرچی زودتر جلوی باگو…
این کالچر خیلی جا داره تو ایران قوی شه و واقعا کیفیت یک پروداکت رو به مراتب خیلی بیشتر میکنه... طبق چیزی که از بچه ها میشنوم اکثرا تو شرکت ایرانی میبینن تست پاس شده approve میکنن. خب چرا زحمت میدین به خودتون؟‌یک گیت هاب اکشن بنویسید هر pr ای تستاش انجام شد approve شه دیگه 😁 یا اکثرا موقع بررسی pr فکر میکنن فقط باید ایراد به دیزاین و پرفومنس بگیرن. در صورتی که خوده کد کلا کار نمیکنه چه برسه به اینکه بخواد خوشگل باشه یا سریع.
@ManiFoldsPython
👍6
خیلی ویدیو باحالیه
این ویدیو به شما نشون میده که تو دنیای امنیت:
۱. کلمه boundary چیه؟
۲. کلمه آسیب پذیری چیه
۳. کلمه ضعف امنیتی چیه

https://youtu.be/LxUAnZY_08o?si=iD2nvFhyJwmEJ6Do

منتهی یک نکته راجب این ویدیو:‌ درواقع ذنجیره ای از ضعف امنیتی میتونن باعث یک آسیب پذیری بشن
امنیت هم یک چیزه نسبیه. یعنی نمیشه گفت فلان کار حتما آسیب پذیریه. بستگی داره boundary تعریف شده برای سیستم چی باشه؟
این ویدیو رو توصیه میکنم حتما ببینید تا دیدتون عوض شه

@ManiFoldsPython
👍6
یک سوال ذهنمو درگیر کرده از دیروز اصلا میتونه سیستم پیچیده ای یک پروداکتی باشه که event driven نباشه؟ من حس میکنم جواب این سوال نه هست.

@ManiFoldsPython
👍2🤔2
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی
درودی دیگر بر گوگولی های خودم!

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

بذارین یه نگاهی به برخی از قابلیت‌های Firebase بندازیم که برنامه نویسای فرانت اند می‌تونن ازشون استفاده کنن:

* Firebase Authentication:
با Firebase Authentication می‌تونید سیستم ورود و ثبت‌نام رو به برنامه خود اضافه کنید. این به برنامه‌های وب و موبایل امکان می‌ده که کاربران با استفاده از ایمیل، شبکه‌های اجتماعی یا شماره تلفن همراه وارد شوند.

مثلاً می‌تونید یک برنامه وب یا موبایل بسازید که از ورود و ثبت‌نام با Firebase استفاده می‌کنه. این برنامه می‌تونه یک شبکه اجتماعی باشه، یک فروشگاه اینترنتی باشه، یا هر برنامه دیگه‌ای که نیاز به سیستم ورود و ثبت‌نام داره.

* Firebase Realtime Database:
خب Firebase Realtime Database یک پایگاه داده ابری است که به سادگی اطلاعات در زمان واقعی رو ذخیره و به اشتراک می‌گذاره.

مثلاً می‌تونید یک برنامه چت یا برنامه مدیریت وظایف در زمان واقعی با Firebase Realtime Database بسازید. این برنامه‌ها به کاربران اجازه می‌دن که به صورت همزمان با هم ارتباط برقرار کنن و اطلاعات رو به اشتراک بذارن.

* Firebase Cloud Firestore:
خب Firestore هم یک پایگاه داده ابری اسنادی است که از امکانات جستجو و استعلام بهتری نسبت به Realtime Database برخورداره.

مثلاً می‌تونید برنامه‌های مبتنی بر اسناد مثل برنامه‌های مدیریت سفارشات یا برنامه‌های ارسال پیام با Firebase Firestore ایجاد کنید. این برنامه‌ها به کاربران اجازه می‌دن که اطلاعات رو به صورت سازماندهی شده ذخیره و مدیریت کنن.

* Firebase Hosting:
فایربیس Hosting به شما امکان می‌ده تا وبسایت‌های استاتیک و SPA (برنامه‌های تک‌صفحه‌ای) خود رو به سرعت و با استفاده از دامنه‌های اختصاصی منتشر کنید.

مثلاً می‌تونید وبسایت شخصی، رزومه آنلاین یا صفحه وب محصولات خود رو با Firebase Hosting ایجاد کنید. این خدمات به شما کمک می‌کنه تا وبسایت‌ها و برنامه‌های خود رو بدون نیاز به دانش فنی زیاد منتشر کنید.

* Firebase Cloud Functions:
با استفاده از Cloud Functions for Firebase، می‌تونید کد اجرایی رو بدون نیاز به سرور خود اجرا کنید.

مثلاً می‌تونید یک واکشی اتوماتیک از ایمیل‌ها و ارسال آنها به کاربران با استفاده از توابع ابری Firebase پیاده‌سازی کنید. این خدمات به شما کمک می‌کنه تا فرآیند توسعه رو ساده‌تر و موثرتر کنید.

* Firebase Cloud Storage:
با Firebase Cloud Storage می‌تونید فایل‌های بزرگ رو در ابر ذخیره کنید و به اشتراک بگذارید.

مثلاً می‌تونید یک برنامه گالری تصاویر یا برنامه‌های مدیریت فایل با Firebase Cloud Storage بسازید. این خدمات به شما کمک می‌کنه تا فایل‌های خود رو به صورت ایمن و قابل دسترس ذخیره کنید.

اینها فقط برخی از قابلیت‌های Firebase هستند که برنامه نویسان فرانت اند می‌تونن ازشون استفاده کنن. Firebase یک پلتفرم قدرتمند و انعطاف‌پذیره که می‌تونه به شما کمک کنه تا برنامه‌های متنوع و جذابی بسازید، حتی بدون دانش عمیق در زمینه بک اند و مدیریت سرور.

⚠️💰 اکثر قابلیت ها توی پلن رایگان هم موجوده .

اگر نکته ای باقی موند توی کامنت ها بگید تا ما هم مستفیض بشیم.

@SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👎1
برای پیدا کردن شغل میتونید از Xing هم استفاده کنید
یک نوع لینکدینه ولی تو آلمان خیلی محبوب تره
معمولا رنج حقوق و بودجه هم رو اگهی درج میشه

شغل ریموتم شاید تونستین پیدا کنید.
xing.com
@ManiFoldsPython
❤‍🔥10👍4
کی از class استفاده کنیم و کی از فانکشن؟
سوالیه که معمولا من دیدم تو مصاحبه ها میپرسن اکثرا جواب خوبی نمیدن. یا اصلا خودشون هم واقعا نمیدونن.

این ویدیو کوتاه طرز فکره منه دقیقا و خیلی خوب گفته:
https://www.youtube.com/shorts/oIyq0q5Q7eo

@ManiFoldsPython
👍4
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی
اگر ایران کار پیدا نمیکنید و میخواید برای شروع توی کشور های سطح پایینتر از نظر تکنولوژی کار پیدا کنید میتونید از سایت های زیر استفاده کنید ( هر کشوری سایت های کاریابی معروفی دارن که از اونا شاید بهتر کار پیدا کنید )

1. آلمان:
- LinkedIn (linkedin.com)
- XING (xing.com)
- StepStone (stepstone.de)

2. هلند:
- LinkedIn (linkedin.com)
- Indeed (indeed.nl)
- Glassdoor (glassdoor.nl)

3. انگلستان:
- LinkedIn (linkedin.com)
- Indeed (indeed.co.uk)
- Reed (reed.co.uk)

4. فرانسه:
- LinkedIn (linkedin.com)
- Indeed (indeed.fr)
- APEC (apec.fr)

5. سوییس:
- LinkedIn (linkedin.com)
- JobScout24 (jobscout24.ch)
- Monster (monster.ch)

6. روسیه:
- HeadHunter (hh.ru)
- SuperJob (superjob.ru)
- LinkedIn (linkedin.com)

7. امریکا:
- LinkedIn (linkedin.com)
- Indeed (indeed.com)
- Glassdoor (glassdoor.com)
- Stack Overflow Jobs (stackoverflow.com/jobs)

ایده پست دزدی میباشد و متعلق به کانال مانی فولاد پای تیون میباشد : @ManiFoldsPython

@SEYED_BAX
Please open Telegram to view this post
VIEW IN TELEGRAM
7😁4
میخواستم یک چیز جنریک بسازم, بالاخره تموم شد.

کار خیلی جذابی شده

این پکیج قابلیت اینو داره که یک سری آبجکت جنگویی بگیره
و برای شما import رو تو سلری انجام بده که خیلی سریع باشه (چون write هست خیلی کندتر میشه) -> با csv
حتی export هم میتونه تو سلری انجام بگیره ولی طبیعتا یک جایی باید ذخیره شه. ->‌ با csv


فوایدش:
۱. با pydantic کار میکنه کاملا
۲. ترتیب csv تونو مهم نیست. مثلا تو این کیس میتونید اول Port رو بذارین بعد Ip. بر اساس هدر csvتون تصمیم میگیره و منیج میکنه 😁
۳. راحت باهاش میتونید example بسازین و جنریت کنید و بدین فرانت
۴. اول کامل دیتا رو ولیدیت میکنه و اگه اوکی بود اونوقت میتونید بندازین رو سلری

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

@ManiFoldsPython
👍13
Python BackendHub pinned Deleted message
بچه ها واقعا ممنون میشم اگه ui ux دیزاینری میشناسید این پستو براش بفرستین.
من دنبال فرانت کار نیستم, دنبال کسیم که تخصصی ui ux بلده و بتونه e2e ux flow رو کامل پیاده سازی کنه برای یک پروداکت.
اگه شخصی میشناختین که ممکنه حتی لید دیزاینه و دستمزدش بالا هست, یا حتی مشغول باشه, بازم خوشحال میشم به صورت مشاور باهامون همکاری کنه.

@ManifoldsPython
👍71💩1👌1
Python BackendHub
حالا یک سوال پایتونی نسبتا خیلی راحت کدی که زدم رو ببینید چرا آبجکت pydantic_model بدون اینکه بهش تایپ بدم تایپ داره؟ @ManiFoldsPython
from typing import TypeVar, Generic,Type
from pydantic import BaseModel
from django.db import Model

TModel = TypeVar("TModel", bound=Model)
TPydanticModel = TypeVar("TPydanticModel", bound=BaseModel)

class CsvOps(ABC, Generic[TModel, TPydanticModel]):
db_model: Type[TModel]
base_model: Type[TPydanticModel]

def create_in_db(self, pydantic_model: TPydanticModel) -> None: ...


این میشه جوابش. ترکیبی از جنریک و TypeVar

type hint >>>>>>

پ.ن:‌حتی نیازی نبود من db_model و base_model رو تعریف کنم. میتونستم همونطور که IDE میگیره از جنریکش بگیرم. منتهی too magic میشد و میخواستم زودتر کدو بزنم تموم شه بره پی کارش. الان اگه یک وقت گاف بدم (جنریک کلس با db_model یکی نباشه تایپش مثلا) خود ide بهم وارنینگ میده.

@ManiFoldsPython
👍4