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
پارت یک:

سال پیش دسامبر بود که تصمیم گرفتم طی یک برنامه فشرده از self employed در بیام و مهاجرت کنم. اولش برنامم مهاجرت تحصیلی بود ولی وقتی متوجه شدم مهاجرت کاری راحت تر و با مزایا بیشتریه ترجیح دادم کاری مهاجرت کنم. من دیپلم دارم و ۴ ترم تو دانشگاه تکنیکال استانبول درس خوندم و ولش کردم. من که مسیر مهاجرت رو شروع کردم راجب مسیر مهاجرت به آلمان بدون مدرک به صورت متخصص IT مطلب زیادی نبود برای همین خواستم تجربمو با شما به اشتراک بذارم

به این ویزا میگن 19c2. یعنی طبق بند 19ام سکشن c2 نیرویی که ۳ سال تجربه کار داره طی ۵ سال گذشته میتونه مدرک تحصیلی نده. من از ترکیه داشتم اپلای میکردم.

https://www.make-it-in-germany.com/en/visa-residence/types/other/it-specialists
اطلاعات کاملش اینجاست

چک لیست مدارک سفارت:
https://teheran.diplo.de/ir-fa/-/2465570

اولین چیزی که شما نیاز دارین یک قرارداده که حداقل €52,560 در سال باشه (به صورت ناخالص). شرکت های زیادی ویزا اسپانسر میکنن. لزومی نداره برین تو یک شرکت بزرگ. هر شرکتی که کارش IT باشه میتونه درخواست بده شرایط خاصی نداشت وقتی من تحقیق کردم. راجب بک گراند شرکت خوده وزارت کار آلمان یک تحقیقی میکنه طبیعتا ولی اینو میگم چون دیدم بعضی ایرانیا خیلی مانور میدادن رو یک سری شرکت خاص در صورتی که نیاز نبود.

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

تاریخ گرفتن قرارداد:‌ Aug 8, 2023
تاریخی که زنگ زدم برای گرفتن وقت از سفارت:‌ Aug 17, 2023
تاریخ اپلای برای گرفتن پیش تاییده اداره کار: Sept 13, 2023
تاریخ صدور پیش تاییده :‌Sept 27, 2023
تاریخی که وقت مصاحبه دادن بهم:‌Nov 15, 2023
تاریخی که ویزام صادر شد: Nov 23, 2023
پیش تاییده من ۲ هفته ای اومد. مصاحبه ام هم یک هفته بعد ویزاش اومد و جوابش اومد. پس میشه گفت کل تایمش ۳ هفته طول میکشه. ولی تا بهم وقت ویزا رو بدن چند ماه طول کشید . تازه من وقتو گرفتم فهمیدم پیش تاییده یعنی چی :))

حالا پیش تاییدیه چیه؟ ببینید ۲ مدل پیش تاییدیه داریم:
یکیش پیش تاییدیه معمولیه که من گرفتم -> کارفرماتون قرارداد رو باید برای اداره کارت به همراه رزومه و عکس پاسپورتتون و declaration of employment رو برای اداره کار بفرسته رو سایتش. درجا بهش رسید میدن به صورت انلاین. بعد ایمیل میزنن بهش جوابشو میگن.
پیش تاییده فست ترک هست. درسته اسمش فسته ولی از پیش تاییدی که من گرفتم بیشتر طول میکشه :)). اینجا هم اداره کار اوکی میده بهتون هم اداره مهاجرت. روندشو اطلاع ندارم چه شکلیه. هزینه اولیه هم داره. فکر کنم ۴۰۰-۵۰۰ یورو باشه.

آیا پیش تاییده اجباریه؟
ببینید تو لیست مدارک سایت سفارت ترکیه نبود. من شنیده بودم اجباریه ولی روز مصاحبه اولش ازم پرسید پیش تاییدیه داری؟‌ انگار که آپشنال بود. ولی خب خیلیی nice to have هست اگه آپشنالم باشه حتما توصیه میکنم بگیرین!

برای مصاحبه چطور حاضر شم؟
ازتون یک سری سوال میپرسه. فکر کنید مصاحبه behavioral با یک شرکت دارین. دقیقا همون تیپ سوالاتو میپرسن.

لگالایز چیه؟ ZAB چیه؟
ببینید کسایی که تایپ ویزاشون فرق میکنه شاید مجبور باشن مدارک تحصیلیشون رو لگالایز کنند. لگالایز مدارک مثل آپوستیل میمونه, یعنی ترجمه مدرک شما توسط چند تا نهاد تو ایران تایید میشه و بعد توسط سفارت اون کشورم تایید میشه. اگه اینکارو کردین حتما ۵ تا کپی برابر اصل بگیرین چون به دردتون میخوره تو مسیر.

آیا باید مدارکمون لگالایز شه؟
اگه با ویزا متخصص IT میرین نه نیازی نداره

آیا باید زبان آلمانی بلد باشیم؟
ببینید این قسمتی از پیش نیازه خوده ویزا IT Specialist هست. اما اگه شرکتتون انگلیسیه دیگه نیازی ندارین. من تافل بردم ولی شنیدم از کارفرماتون هم میتونید یک نامه بگیرین که بگه شما انگلیسی بلدین. آفیسر هم با من انگلیسی حرف زد. (فارسیم بلد بود :)) اولش فارسی حرف زد)

چطور باید سابقه کاریمو ثابت کنم؟ بیمه میخوان؟
کیس من خیلیی خاص بود. من یک جورایی self employed بودم. یعنی شرکت رسمی ثبت نداشتم. با چند جا که باهاشون کار میکردم نامه گرفتم (خارج از ایران) همشون تایید دادن که مثلا من مهارت دارم و فقط سفارت به همون نامه ها بسنده کرد. پس یک رفرنس لتر داشته باشین کارتونو راه مینداخته هرچقدرم کیستون خاص باشه.

دانش ITمو چطور ثابت کنم به سفارت؟
سفارت اینو ازتون میخواد.کاری که من کردم این بود که کورس های انلاینی که گذروندم رو ۵ تاشو پرینت کردم. ۲ تاش coursera بود یکی udemy یکی acloudguru یکی real python.

@ManiFoldsPython
19👍1🔥1
پارت دو:

توصیه ای داری؟
آره, خیلی پروسه ویزا گرفتن راحت تر از چیزی که فکرشو میکنید.من اولش یک غول ترسناک ازش ساخته بودم. همینطور کار پیدا کردنم همینه. یکم پشتکار به خرج بدین راحت از پسش برمیاین. روزه سفارتم مدارکو به همون ترتیبی که تو سایت نوشتن مرتب کنید پیش تاییده رو روی همه مدارکتون بذارین. منگنه نکنید گیره بزنید به هم که راحت باز شه.

محدودیت این ویزا نسبت به بقیه چی بود؟
اقا خلاصش اینه که شما اگه اینو ۱ ماه پیش میگرفتین خیلی فرق میکرد. مثلا بلوکارت نمیتونستین بگیرید و خیلی مزایا نداشتین. منتهی طبق قانون جدید سایت شما میتونید با همین ویزا برین بلوکارت هم بگیرین.
https://www.make-it-in-germany.com/en/visa-residence/skilled-immigration-act

بلوکارت چیه؟
The EU Blue Card (Section 18g of the Residence Act [AufenthG] ) is a special residence noscript for foreign academics and people with comparable qualifications who want to take up qualified employment in Germany. To find out if you need a visa to enter Germany, see the “Do I need a visa?” section

تبدیل به پاسپورت میشه؟
بعد ۲۱ ماه اگه مدرک آلمانی b1 بگیرین میتونید درخواست اقامت دائم کنید
https://service.berlin.de/dienstleistung/326556/en/
کامل تر اینجا نوشته. اقامت دائم هم بعد مدتی فکر کنم پاسپورت میشه دیگه راجبش خیلی تحقیق نکردم. هدف من به شخصه اقامت دائم هست در درجه اول.

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

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

@ManiFoldsPython
21👍6🙏1
دوره pydantic قشنگ میشه کلی تولز نوشت و اکوسیستمشو قوی تر کرد

مثلا:
- csv parser with type annotation & validation
- HTML validator with type annotation
- Custom type هایی که به درد بخورن

ایده خودتون چیه؟
احتمالا ۲۰۲۴ شه برم سراغش 😁

@ManiFoldsPython
👍17
یک سوال پایتونی برای type annotation درجه متوسط یا شاید حتی سخت


ما یک تابع داریم


def get_data(self, output: Literal["json", "dict"] | None = None) -> str | dict:
if output == "json" and isinstance(self._data, BaseModel):
return self._data.json(indent=4)
elif output == "dict" and isinstance(self._data, BaseModel):
return self._data.dict()
elif output is None
and not
isinstance(self._data, BaseModel):
return
str(
self._data
)

else:
raise AttributeError(f"The data object of type {type(self._data)} does not support the '{output}' operation.")


میخوایم براش type annotation بنویسیم
خب همونطور که میبینید
این تابع return type اش بر اساس ورودی مشخص میشه
اگه ورودی json باشه استرینگی میده که جیسونه
اگه dict باشه dict میده
و اگه دیتامون pydantic نباشه متود strاشو صدا میزنه و اونو میده.

آیا میتونید برای این تابع type annotation بنویسید؟ تو بهترین حالت؟

@ManiFoldsPython
👍4
Python BackendHub
همونطور که تو کامنتا اشاره کردن استفاده از overload هست که به شدت کمک کننده هست 👌 یک مقاله راجب این: https://adamj.eu/tech/2021/05/29/python-type-hints-how-to-use-overload/ یک نکته: برای اینکه کار خیلی تمیز تر در بیاد شما میتونید خوده کلس هم جنریک کنید طبق…
این مقاله که دیروز معرفی کردم یادتونه؟
یک سر رفتم تو سایتش
چقدر مطالب خوب داره راجب پایتون
و مخصوصا تایپینگ 👌

برای چیزای مربوط به تایپینگ:
https://adamj.eu/tech/tag/mypy/

برای پایتون به صورت کلی:
https://adamj.eu/tech/tag/python/

یک سر بزنید حتما 👌
@ManiFoldsPython
👍6🙏1
😂😂
بدترینش هم اینه که سولوشن همشو داری ولی حالشو نه :))
@ManiFoldsPython
🤣41
تاحالا شده بخواین سایتی رو کراول کنید ولی زیر پوشش cloudflare باشه؟
یک لایبری دیگه زدم که اینو دور میزنه 😁 و میتونید cloudflare رو راحت کراول کنید.
کاملا in-place هست با لایبری httpx

البته حالت under attack mode اگه فعال شه رو سایت به راحتی نمیشه دورش زد دیگه.
https://github.com/ManiMozaffar/cfcrawler

اگه دوست داشتین contribute کنید یا استار بدین
@ManiFoldsPython
🔥19👏51👍1
یک بخشی از تستای همین لایبری:

معمولا تستامو نمیدم ai بنویسه.
دلیلش هم اینه که بهترین کسی که تست مینویسه همون کسیه که کد رو زده. کاره لایبری من تو همین ۳ خط خلاصه میشه و مهم ترین تستمم همینه. حالا ai میرفت ۲۰ تا تست الکی مینوشت که ۱۹ تاش به درد نمیخورد واقعا و maintain کد رو سخت تر میکرد و انعطاف پذیری رو کمتر میکرد.

پ.ن:‌arg تایپ مرورگر optional هست.

@ManiFoldsPython
👍13👏1
pydantic چیست؟

به ساده ترین زبون ممکن:
یک دیتاکلسی هست که هم parse میکنه هم validate

مثلا:

class MyModel(BaseModel):
num: int

data = MyModel(num="2")
assert isintance(data.num, int)

چیکار کرد؟
یک شماره که استرینگ بود رو کرد عدد. تو مدلی که تعریف کردی براش.
حالا میتونی ولیدتور براش بنویسی
که اگه num کمتر از ۰ بود error بده(فقط عدد مثبت قبول باشه)
یا میتونی مثلا باهاش enum بسازی.

به قول مهدی:
ابزاریه که بهت اطمینان میده دیتایی که میاد و میره، *دقیقا* چیزیه که میخوای


یکی از بهترین استفاده هایی که میتونید از pydantic کنید تو message broker هست که به عنوان serializer ازش کار بکشین. چون بهتون یک json میده و دقیقا گارانتی میده بهتون که آبجکتو دوباره از رو همون json بسازه.

من تو یکی از بک هام, کلی export import داشتم با csv
با پکیجی که پریروز نوشتم, حالا یک سیستم csv import/export نوشتم که با سلری کار میکنه

یعنی شما میگی من export صورت حسابمو میخوام
از یک کلس جنریک که نوشتم ارث بری میکنید
خواستین مستقیم میفرستین براش
خواستین ذخیره میکنید جایی و اونو براش notification میکنید. دیگه لاجیکش با خودتونه.
۳ تا متودشو اورراید میکنید (لاجیک import و export و تبدیل آبجکت دیتابیس جنگویی به pydantic)

And then call it a day 😎

کدشو به زودی به اشتراک میذارم 🔥🤝 ولی قبلش دوست دارم دعوتتون کنم به اینکه اینو خودتون بنویسید. اگه دوست داشتین بنویسید و تو کامنت بفرستین (به صورت عکس یا markdown کد پایتون تلگرام یا گیت هاب فرقی نمیکنه)


@ManiFoldsPython
15👍3🔥2
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
توی تست نویسی فقط status code رو چک نکنید :)
🤣30👍1
Forwarded from Sadra Codes
Readability vs Performance?!
Sadra Codes
Readability vs Performance?!
سوال خیلی قشنگیه، جواب شما چیه؟ جواب من:
من میگم هرچی پروداکت بگه! ولی به طور کلی کدای readable باتل نک نیستن, ولی کدایی که میخواین خیلی high performance باشن قطعا readable نیستن

و یک study نشون داده اپلیکیشن ها ۸۰درصد مواقع اپلیکیشنمون منتظره IO هستن حتی با وجود اینکه parallel هستن (مثلا میخوان یک response بدن بیرون خب باید وایسن جواب query بیاد) پس optimize کردن IO خیلی بهتره تا micro-optimization تسکای cpu bound

و وقتی گفتم پروداکت یعنی همه اینا بستگی داره همه اینا کجا کدو بذاریم… مثلا ممکنه داریم یک سیستم api rate limit طراحی میکنیم که اگه کدو زشت کنیم یک دفعه پرفومنسو دو برابر کنه مثلا و هزینه نگه داری همه سرویسای restرو نصف کنه.. خب اونجا قطعا میرم micro optimization رو ترجیح میدم..

@ManiFoldsPython
👍16
یعنی متنفرم از گروه هایی که ۵ دقیقه تایمر میندازه بین هر پیام تو تلگرام تو گروهش…
قشنگ توهین به شعور مخاطبه :)

ادم میخواد جواب ۲ نفرو بده بیخیال میشه….
👍40
دیشب صدرا یک سوال خوب پرسید, امشب نوبت منه‌ که یک سوال میلیون دلاری بپرسم :)) خودتونو تو این شرایط قرار بدین:
یک conflict دارین با تصمیم گیرنده. حالا تیم لید باشه یا هرکی کاری ندارم. فکر میکنید که شما روشتون اصولی تره و درست تره ولی اون موافق نیست و میگه <فعلا نیازی نیست> شرایطی که شاید خیلیاتون تو ایران بهش برخوردین.

مثلا:‌راجب تست نویسی. بیشتر تست کنیم, کدو ریفکتور کنیم بهتر شه. تمیز تر شه. یا چیزای این قبیلی.
چطور conflictتون رو حل میکنید؟

هنر رفع conflict مهم ترین سافت اسکیله به نظره من!

@ManiFoldsPython
👍5
یک سری نظرا رو شنیدم. من نظره خودمو میگم که بیشتر بحث کنیم, ببینید وقتی conflict وجود داره چند اشتباه ممکنه دو طرف بکنند که بهتره بررسیشون کنیم:

۱. اینپوت شما همیشه باید خیلی با ارزش باشه. با ارزش بودن به این دلیل نیست که حتما قبول شه. به این دلیله که شنیده شه و حتی راجبش بحث شه یا جلسه گذاشته شه. غیر این باشه محیطی نیست که توش بتونید پیشرفت کنید. ممکنه همه input هاتونم ریجکت شه و این موضوعو نباید سوءبرداشت شخصی ازش داشته باشین. پس اگه جای تصمیم گیرنده هستین این حس با ارزش بودن اینپوت و شنیدنشو منتقل کنید. فیدبک ها همیشه باعث بهتر شدن یک سیستم میشن.

۲. همیشه فکر میکنن ۲ تا نقطه مقابل هم وجود داره تو conflict در صورتی که اصلا اینطور نیست. مثلا کارفرما میگه اقا من این پروداکتو باید تا فلان روز برسونم سریع کدشو بزن. شمام میگی نه ریفکتور میخواد اصولی نیست. منتهی تو این سناریو یک راه حل سومی هست: که شما با اون فرد بشینی مذاکره کنی و بحث کنی. ممکنه یک نقطه وسط برسین. در درجه اول باید درک کنید طرف مقابل چی میگه. در درجه دوم راهکار خودتونو به نحوی بچرخونید که با هدف اون همسو باشه. مثلا این arguement اش این میشه که اقا من باید رو هر فیچر جدید دستی تست کنم که کار میکنه. من argue میکنم که اگه تست خودکار بنویسم وقت کمتری مصرف میکنم. پس نظرت چیه شرط ببندیم برای این فیچر جدید که من سریعتر میرسونم با داشتن تست؟‌ سرعت توسعه منو بیشتر میکنه. یا مثلا بگین اقا من این قسمت جدیدی که دارم اضافه میکنم رو تمیز کد میزنم. کاری ندارم به بقیه. و کارمو هم سریع تر میرسونم. ممکنه کد consistent نشه و یک دفعه خیلی متفاوت شه ولی بهترین راه کاره. اینطوری هم کارو سریع میرسونم هم کم کم ریفکتور میشه با فیچر های جدید تری که اضافه میکنیم به این پروژه.

۳. سطح علمی طرف مقابل رو در نظر نمیگیرین و یا pros یا cons رو خوب نمیگن. من به عنوان یک مهندس نرم افزار وظیفه دارم long time side effect این کار اشتباهو بگم. که تصمیم گیرنده درک بهتری داشته باشه. از حرفام با سند و مدرک و مقاله دفاع کنم. صرفا حرف شما به تنهایی ممکنه اعتبار نداشته باشه. همیشه وقتی یک بحثی میکشین وسط یادتون باشه هم pros باید گفته شه هم cons که شنونده احساس نکنه شما دارین احساسی تصمیم میگیرین و منطقی تصمیم گرفته شه.

۴. سعی کنید brain storming کنید. سعی کنید حوادث رو ارتباط بدین با مشکلی که دارین. مثلا بگین فلان باگ و فلان باگ و فلان باگ به وجود اومد چون اینکارا رو نکردیم. پس بهتره بکنیم. هیچوقت یارکشی نکنید. بگید فلانی همیشه conflict منو رد میکنه یا فلان. این بد ترین چیزیه تو یک تیم. یادتون باشه اینپوتتون قرار نیست همیشه قبول شه. ولی باید با ارزش باشه. یک کامنتی خیلی قشنگ نوشتن: ‌قاتل کار تیمی miscommunicationعه! و برعکسش هم صدق میکنه. برای همین brain storming خیلی میتونه مفید باشه.

۵. از دنیای فانتری فاصله بگیرین. واقعبین باشید. مثلا دیدم برنامه نویسا یک فریم ورک یا یک فیچر اصلا به دردشون نمیخورد ولی اضافه کردن چرا؟‌چون خوششون میاد. چون میخوان یادش بگیرن. این بد ترین کاریه که میتونید تو یک محیط حرفه ای کنید. یا مثلا میرن premature optimization انجام میدن و وقتشونو هدر میدن برای جایی که اصلا نیازی نبوده. یا بیش از حد کلین کد میزنن رو پروداکتی که requirement اش روز به روز تغییر میکنه. پس همیشه سعی کنید از دید model business پروداکتتون به محصولتون نگاه کنید تا بهترین کد هارو بنویسید 🙂 خیلی وقتا دلیل conflict همینه که یکی از دو طرف تو دنیای فعلی نیست.

@ManiFoldsPython
👍7🔥1
بعد توضیح اینا تو یک پاسخ خیلی کوتاه, من چیکار میکنم موقع conflict؟
۱. سعی میکنم اشتباهاتی که بالاتر اشاره کردم نکنم
۲. سعی میکنم به یک نقطه اشتراک برسم بعد از درک طرف مقابلم و ببینم دلیل تصمیمش و مخالفتش چیه؟
۳. سعی میکنم نظر بقیه هم بپرسم و یک brain storming انجام بدم به مشکل.
۴. اگه راهکاری معرفی شه توسط خودم یا یکی از تیم که هم نقاط نظر من و هم conflict دهنده توش رعایت شده باشه انجام میدیم. اگه نه , جمع بندی رو یک جایی ظبط میکنم که بدونیم همچین conflict ای بوده قبلا که از این مشکلات ناشی میگیره و راهکاری براش هنوز پیدا نکردیم که بعدا دوباره فکر کنیم بهش.

در نهایت conflict اینطوری برطرف میشه.
@ManiFoldsPython
👍6
این سوال مصاحبه behavioural خیلی از شرکتا هست. خیلیم قشنگ میتونن خیلی پیچیده ترش کنند و به چالش بکشنتون. حتما رو این صورت سوال خیلی فکر کنید. برای career خودتونم خیلی مهمه. جواب من ممکنه درست باشه ممکنه درست نباشه. برای همین کامنت گرفتم اول که ببینم بقیه چیکار میکنن. اگه موافقین/مخالفین خوشحال میشم کامنت کنید و شرکت کنید تو بحث.

@ManiFoldsPython
👍7
ساموئل و تیم pydantic زدن تو کاره یک فریم ورک UI که بتونید reusable react component بنویسید با استفاده از pydantic
توصیه میکنم readmeشو بخونید خیلی مطالب خوبی داره

https://github.com/samuelcolvin/FastUI

قبلا تلاشای زیادی بوده ولی همیشه fail میشدن. ببینیم samuel چیکار میکنه :))

@ManiFoldsPython
👍10🥱4👎1🔥1
تلگرام تو نسخه آخر مکش مموری لیک هم داره 🤦‍♂️
وقتی بازش میکنم ۲۰۰ مگ داره مصرف میکنه کم کم زیاد میشه
دو بار رو ۴ گیگ بستمش :))

@ManiFoldsPython
🗿7👍2🤡1