یک تایمی که اپلای میکردم برای اروپا متوجه شدم اکثر شرکت های اروپایی یک فریم ورک و فرهنگ مشخص دارن برای استخدام،
اولا که اگهی ها اینطوری بود:
What you will do
1. ….
2. ….
What you will bring
1. Proficienct in Django
2. …
3. Fimiliar with k8s
Nice to have
1. …
دلیلش اینه که وقتی میگن advance یا … مشخص نیست چقدر ادونس؟ تکنولوژی تو اخرین مرحله advance اش یعنی شما مستقیما core contributer بشی و شاید سال ها طول بکشه تا به اونجا برسی. پس طبیعتا این کلمه advance میتونه به کلی معنی های مختلف ترجمه شه. ولی وقتی تسکی که انتظار میره ازتون رو بنویسن شما متوجه میشی چقدر میخوان اشنایی داشته باشی با یک چیزی
نکته دوم، شرکت های خیلی بزرگ و FAANG میان سوالات سخت الگوریتمی میذارن تو مصاحبه فنی، کاری به خوبی و بدیش ندارم ولی اون شرکتا تو اون حجم راهکار دیگه ای ندارن. نمیتونن بشینن برای کاندید های مناسب یک پوزیشن تک تک coding assignment بدن و پروژه هاشون رو چک کنند، هزینه این کار تو scale بالا ممکنه براشون غیرمنطقی باشه. پس شرکتا معمولا یا coding assignment میدن یا الگوریتم. نمیان جفتشو بدن! کنارش سوالات تئوری هم میپرسن.
و نکته اخر، چه الگوریتم باشه چه coding assignment، مستقیما به پروداکت شرکت ربطی نداره! مثلا من coding assignment هایی که انجام دادم راجب pokemon و imdb و این چیزا بود. طبیعتا نباید چالش شرکتو assignment بدن بهتون، یا اگه همچین کاریکنند باید بهتون هزینه پرداخت کنند چون دارین عملا رو پروداکتشون کد میزنید.
@ManiFoldsPython
اولا که اگهی ها اینطوری بود:
What you will do
1. ….
2. ….
What you will bring
1. Proficienct in Django
2. …
3. Fimiliar with k8s
Nice to have
1. …
دلیلش اینه که وقتی میگن advance یا … مشخص نیست چقدر ادونس؟ تکنولوژی تو اخرین مرحله advance اش یعنی شما مستقیما core contributer بشی و شاید سال ها طول بکشه تا به اونجا برسی. پس طبیعتا این کلمه advance میتونه به کلی معنی های مختلف ترجمه شه. ولی وقتی تسکی که انتظار میره ازتون رو بنویسن شما متوجه میشی چقدر میخوان اشنایی داشته باشی با یک چیزی
نکته دوم، شرکت های خیلی بزرگ و FAANG میان سوالات سخت الگوریتمی میذارن تو مصاحبه فنی، کاری به خوبی و بدیش ندارم ولی اون شرکتا تو اون حجم راهکار دیگه ای ندارن. نمیتونن بشینن برای کاندید های مناسب یک پوزیشن تک تک coding assignment بدن و پروژه هاشون رو چک کنند، هزینه این کار تو scale بالا ممکنه براشون غیرمنطقی باشه. پس شرکتا معمولا یا coding assignment میدن یا الگوریتم. نمیان جفتشو بدن! کنارش سوالات تئوری هم میپرسن.
و نکته اخر، چه الگوریتم باشه چه coding assignment، مستقیما به پروداکت شرکت ربطی نداره! مثلا من coding assignment هایی که انجام دادم راجب pokemon و imdb و این چیزا بود. طبیعتا نباید چالش شرکتو assignment بدن بهتون، یا اگه همچین کاریکنند باید بهتون هزینه پرداخت کنند چون دارین عملا رو پروداکتشون کد میزنید.
@ManiFoldsPython
👍23❤2👏2💯2
یک اپلیکیشن فست نسبتا خوب با رعایت استاندارد ها.
- Backend -> Fastapi
- Front -> React
- Opentelemtry
- Jaeger
- Alembic & migration
https://github.com/fike/fastapi-blog
اصلاحاتی که نیاز داره:
۱. بنظره من jaeger و tracing اش میتونست بهبود پیدا کنه و از فرانت تا بک کلش trace شه.
۲. بکش async باشه.
۳. دپندسی اینجکشن و auth اش خیلی ضعیفه
@ManiFoldsPython
- Backend -> Fastapi
- Front -> React
- Opentelemtry
- Jaeger
- Alembic & migration
https://github.com/fike/fastapi-blog
اصلاحاتی که نیاز داره:
۱. بنظره من jaeger و tracing اش میتونست بهبود پیدا کنه و از فرانت تا بک کلش trace شه.
۲. بکش async باشه.
۳. دپندسی اینجکشن و auth اش خیلی ضعیفه
@ManiFoldsPython
👍13
Python BackendHub
ازتون یک سوال دارم، https://roadmap.sh/backend این سایت پره رودمپ خفنه، که مال بک اند رو گذاشتم، منتهی ته رودمپ میخوره به بحث های دوآپسی بنظر شما یک بک اند کار چقدر باید مفاهیم زیرم بلد باشه؟ ۱. لینوکس ۲. instrumentation ۳. monitoring ۴. کوبر ۵. Web server…
این برام همیشه سوال بود که overlap دوآپس و بک اند چطوریه. این مدت که بیشتر کارای آپریشن کردم به جواب رسیدم...
بذارین سناریو بگم که شبیه واقعیت باشه که دوآپس واقعا کاری از عهدش برنمیاد. اولا که آپریشن صرفا دپلوی و ci cd نیست. مخصوصا تو شرکت های خارجی. دوما سولوشن بقیه بیشتر مواقع به دردتون نمیخوره. حالا با مثال بهتر متوجه میشین.
فکر کنید مثلا دارین ربات اینستاگرام مینویسین که میره پست هارو لایک میکنه و کامنت میذاره و ... . و کاملا distributed هست. یک سرویس دارین اکانت میسازه. یک سرویس دارین لاگین میکنه. یک سرویس دارین کامنت میذاره. یک سرویس دارین لایک میکنه. یک سرویس دارین reels میبینه و ... .
حالا این وسط یک باگی به وجود میاد. از شما به عنوان دولوپر انتظار میره این باگو برطرف کنید. مثلا سیستم لایک, درست کار نمیکنه. این باگ بین چند تا سرویس اتفاق افتاده (مثلا). چطور میخواین بفهمین و کل trace باگو داشته باشین؟
اینجاست که ابزار هایی مثل datadog یا opentelemtry یا jaeger یا kibana مفهوم پیدا میکنن.و بزرگ ترین مشکل اینه که شما دیگه مشکلت صرفا یک درخواست بک اند نیست. مشکلی که شما داری یک instrumentation کاستوم میخواد. instrumentation یعنی چی؟
In the context of logging, "instrumentation" refers to the act of adding logging statements to your code to monitor its behavior, measure performance, or troubleshoot issues. These logging statements serve as "instruments" to give you insight into how your application is running
پس مشکل شما رو پکیج opentelemetry-instrumentation-fastapi یا پکیج های اوپن سورس برطرف نمیکنه.
چرا؟ چون باید خودتون span هاتون رو طراحی کنید. طراحی و معماری میخواد پشت این موضوع. مثلا باید پشت هر یوزر اینستاگرام شما یک span بسازین که من تو یک trace ببینم اون کاربر اینستاگرام چه درخواست هایی زده تا خورده به اون اکسپشن. اینجاست که شما باید با این آپریشن ها آشنا باشید و devops نمیتونه طبیعتا اینارو بنویسه. دوآپس به شما میتونه infrastructure قابل اعتماد بده که بتونید راحت tracing رو انجام بدید و یک جایی براتون visualize کنه.
خیلیا اصلا با این مفاهیم اشنا نیستن و چرخه رو از نو میسازن. یک سولوشن لاگینگ برای خودشون مینویسن. این کارم درست نیست چون همه اینا رو یک سری استاندارد هایی نوشته شدن که بتونید یک سیستم distributed رو لاگ کنید و کلی query service و فیچر دارن که بخواین بازنویسی کنید یک سال فقط باید روش کار کنید در حالی که میتونستین تو یک هفته یک distributed tracing خیلی قوی داشته باشین از اپلیکیشنتون! چرا؟چون بک اند کار هاشون هیچ آشنایی نداشتن با آپریشن.
هر موقع خواستین سمت سیستم distributed برین یادتون باشه پیدا کردن باگ خیلی پیچیده میشه. چون دیگه نمیتونید صرفا با یک chain exception کل درخواست رو trace کنید و باگ میتونه بین چند تا سرویس باشه که اگه instrumentation خوبی نداشته باشین زیاد با این جور باگا سروکله خواهید زد.
@ManiFoldsPython
بذارین سناریو بگم که شبیه واقعیت باشه که دوآپس واقعا کاری از عهدش برنمیاد. اولا که آپریشن صرفا دپلوی و ci cd نیست. مخصوصا تو شرکت های خارجی. دوما سولوشن بقیه بیشتر مواقع به دردتون نمیخوره. حالا با مثال بهتر متوجه میشین.
فکر کنید مثلا دارین ربات اینستاگرام مینویسین که میره پست هارو لایک میکنه و کامنت میذاره و ... . و کاملا distributed هست. یک سرویس دارین اکانت میسازه. یک سرویس دارین لاگین میکنه. یک سرویس دارین کامنت میذاره. یک سرویس دارین لایک میکنه. یک سرویس دارین reels میبینه و ... .
حالا این وسط یک باگی به وجود میاد. از شما به عنوان دولوپر انتظار میره این باگو برطرف کنید. مثلا سیستم لایک, درست کار نمیکنه. این باگ بین چند تا سرویس اتفاق افتاده (مثلا). چطور میخواین بفهمین و کل trace باگو داشته باشین؟
اینجاست که ابزار هایی مثل datadog یا opentelemtry یا jaeger یا kibana مفهوم پیدا میکنن.و بزرگ ترین مشکل اینه که شما دیگه مشکلت صرفا یک درخواست بک اند نیست. مشکلی که شما داری یک instrumentation کاستوم میخواد. instrumentation یعنی چی؟
In the context of logging, "instrumentation" refers to the act of adding logging statements to your code to monitor its behavior, measure performance, or troubleshoot issues. These logging statements serve as "instruments" to give you insight into how your application is running
پس مشکل شما رو پکیج opentelemetry-instrumentation-fastapi یا پکیج های اوپن سورس برطرف نمیکنه.
چرا؟ چون باید خودتون span هاتون رو طراحی کنید. طراحی و معماری میخواد پشت این موضوع. مثلا باید پشت هر یوزر اینستاگرام شما یک span بسازین که من تو یک trace ببینم اون کاربر اینستاگرام چه درخواست هایی زده تا خورده به اون اکسپشن. اینجاست که شما باید با این آپریشن ها آشنا باشید و devops نمیتونه طبیعتا اینارو بنویسه. دوآپس به شما میتونه infrastructure قابل اعتماد بده که بتونید راحت tracing رو انجام بدید و یک جایی براتون visualize کنه.
خیلیا اصلا با این مفاهیم اشنا نیستن و چرخه رو از نو میسازن. یک سولوشن لاگینگ برای خودشون مینویسن. این کارم درست نیست چون همه اینا رو یک سری استاندارد هایی نوشته شدن که بتونید یک سیستم distributed رو لاگ کنید و کلی query service و فیچر دارن که بخواین بازنویسی کنید یک سال فقط باید روش کار کنید در حالی که میتونستین تو یک هفته یک distributed tracing خیلی قوی داشته باشین از اپلیکیشنتون! چرا؟چون بک اند کار هاشون هیچ آشنایی نداشتن با آپریشن.
هر موقع خواستین سمت سیستم distributed برین یادتون باشه پیدا کردن باگ خیلی پیچیده میشه. چون دیگه نمیتونید صرفا با یک chain exception کل درخواست رو trace کنید و باگ میتونه بین چند تا سرویس باشه که اگه instrumentation خوبی نداشته باشین زیاد با این جور باگا سروکله خواهید زد.
@ManiFoldsPython
👍10❤5😱1
قسمت جدید دوره تست نویسی راجب Parametrized Testing اضافه شد.
تو این قسمت پارامترایز تستینگ رو توضیح دادم, گفتم کجا به درد میخوره و مزیت و معایبش چیه و کجا باید استفاده شه.
https://www.youtube.com/watch?v=2tE6REdDjp8&list=PLEQ3RnweNGA6v7qTMrDCcpgr9u91zvpq_&index=8
سوالی داشتین حتما کامنت کنید زیر ویدیو.
@ManiFoldsPython
تو این قسمت پارامترایز تستینگ رو توضیح دادم, گفتم کجا به درد میخوره و مزیت و معایبش چیه و کجا باید استفاده شه.
https://www.youtube.com/watch?v=2tE6REdDjp8&list=PLEQ3RnweNGA6v7qTMrDCcpgr9u91zvpq_&index=8
سوالی داشتین حتما کامنت کنید زیر ویدیو.
@ManiFoldsPython
YouTube
Parametrized Testing تست با پارامتر
در این ویدیو باهم تست نویسی با پارامتر انجام میدیم.
✍️ Source Code: https://github.com/ManiMozaffar/testing-101
🌍LinkedIn: https://www.linkedin.com/in/manimozaffar
👨💻 Github: https://github.com/ManiMozaffar
🔖 Chapters:
00:00 مقدمه
00:55 توضیح Parametrized…
✍️ Source Code: https://github.com/ManiMozaffar/testing-101
🌍LinkedIn: https://www.linkedin.com/in/manimozaffar
👨💻 Github: https://github.com/ManiMozaffar
🔖 Chapters:
00:00 مقدمه
00:55 توضیح Parametrized…
❤14👍3🎃2
Mastering API Testing with FastAPI: Databases, Dependencies, and More!
https://www.youtube.com/watch?v=9gC3Ot0LoUQ
@ManiFoldsPython
https://www.youtube.com/watch?v=9gC3Ot0LoUQ
@ManiFoldsPython
YouTube
Mastering API Testing with FastAPI: Databases, Dependencies, and More!
👷 Review code better and faster with my 3-Factor Framework: https://arjan.codes/diagnosis.
In this tutorial, I'll guide you through API testing using FastAPI, complete with a full code example. Use this as a template for testing your own APIs!
Git Repo:…
In this tutorial, I'll guide you through API testing using FastAPI, complete with a full code example. Use this as a template for testing your own APIs!
Git Repo:…
👍5
خیلیا رو میبنیم که تو گرفتن اولین شغلشون سختی های زیادی دارن میکشن و حتی بعضی ها منصرف میشن!
برای همین تصمیم گرفتم این هفته سه ویدیو خوب و اساسی record کنم و البته یک دستی به ریپو های رزومه نویسیم بکشم. ریپو رزومه نویسیمو همین امشب آپدیت کردم و ۲ سکشن جدید بهش اضافه کردم:
https://github.com/ManiMozaffar/awesome-resumes
سه ویدیو ای که قراره record کنم
ویدیو اول)چطور پروفایل خوبی داشته باشیم؟
ویدیو دوم) چطور رزومه خوبی بنویسیم؟
ویدیو سوم)چطور پرفومنس خوبی تو مصاحبه ها داشته باشیم؟
اگه ایده یا نظری دارین بگین.
@ManiFoldsPython
برای همین تصمیم گرفتم این هفته سه ویدیو خوب و اساسی record کنم و البته یک دستی به ریپو های رزومه نویسیم بکشم. ریپو رزومه نویسیمو همین امشب آپدیت کردم و ۲ سکشن جدید بهش اضافه کردم:
https://github.com/ManiMozaffar/awesome-resumes
سه ویدیو ای که قراره record کنم
ویدیو اول)چطور پروفایل خوبی داشته باشیم؟
ویدیو دوم) چطور رزومه خوبی بنویسیم؟
ویدیو سوم)چطور پرفومنس خوبی تو مصاحبه ها داشته باشیم؟
اگه ایده یا نظری دارین بگین.
@ManiFoldsPython
👍23❤19🔥1
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
پروژه aggify اوپن سورس شد 🥳
این پروژه با سینتکس ساده و شبیه به django orm میتونه pipeline های aggregate رو بسازه و کوئری های پیچیده MongoDB رو بشدت ساده سازی کنه
با استفاده از این کتابخونه شما به راحتی میتونید از جوین استفاده کنید توی MongoDB
در حال حاضر این کتابخونه با فرض بر اینکه مدل های دیتابیس شما با MongoeEngine نوشته شده اند کار میکنه و در آینده روش های دیگه هم قراره ساپورت کنه
اگر مشتاق هستید میتونید توی توسعه این پروژه مشارکت کنید
github: github.com/Aggify/aggify
pypi : https://pypi.org/project/aggify/
website : aggify.org
mail : support@aggify.org
Telegram : @Aggify
توی کانال تلگرام جوین بشید و به پروژه توی گیتهاب ستاره بدید🥰
با پخش این پست به شناخته شدن این پروژه کمک کنید ❤️
✅ @SEYED_BAX
این پروژه با سینتکس ساده و شبیه به django orm میتونه pipeline های aggregate رو بسازه و کوئری های پیچیده MongoDB رو بشدت ساده سازی کنه
با استفاده از این کتابخونه شما به راحتی میتونید از جوین استفاده کنید توی MongoDB
در حال حاضر این کتابخونه با فرض بر اینکه مدل های دیتابیس شما با MongoeEngine نوشته شده اند کار میکنه و در آینده روش های دیگه هم قراره ساپورت کنه
اگر مشتاق هستید میتونید توی توسعه این پروژه مشارکت کنید
github: github.com/Aggify/aggify
pypi : https://pypi.org/project/aggify/
website : aggify.org
mail : support@aggify.org
Telegram : @Aggify
توی کانال تلگرام جوین بشید و به پروژه توی گیتهاب ستاره بدید
با پخش این پست به شناخته شدن این پروژه کمک کنید ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥1
منم یک PR زدم به لایبری سید
https://github.com/Aggify/aggify/blob/main/tests/test_query.py
پارامتر تست دقیقا همینجا به درد میخوره 👌
@ManiFoldsPython
https://github.com/Aggify/aggify/blob/main/tests/test_query.py
پارامتر تست دقیقا همینجا به درد میخوره 👌
@ManiFoldsPython
👍7👏1
چطور issue رو به صورت حرفه ای تو یک community مطرح کنیم و به جواب برسیم؟
اولین مشکلی که من خیلی میبینم مشکل xy هست.
https://en.wikipedia.org/wiki/XY_problem
مشکل xy چیه؟ به جای اینکه راجب صورت سوال, سوال بپرسن راجب مشکلی میپرسن که در طی پاسخ به اون سوال از اون روش بهش برخوردن. مثلا یک مثال ساده: من چطور تو پایتون میتونم سه کاراکتر اخر از یک string که میاد رو بگیرم؟
حالا سوال و چالش واقعی:من چطور میتونم ببینم فایلی که کلاینت برام فرستاده همون فایلیه که ادعا میکنه؟ جوابش: مقایسه مجیک بایت و تطابقش با file extension که بعد آخرین نقطه میاد.
پس همیشه سوالتون رو بپرسید. میتونید راهکاری هم که داشتین در کنارش معرفی کنید.
دومین مشکل همون مشکل dont ask to ask هست که احتمال پاسخ گرفتنتون رو به شدت کاهش میدین.
https://dontasktoask.com
و آخرین مشکل نحوه و کالچر مطرح کردن مشکلتون هست. لایبری های اوپن سورس اگه ایشو زده باشین حتما با کالچر مطرح issue آشنا هستین, این موارد شامل:
۱. جدایی لاجیک از کدتون. هرچقدر لاجیک لای کدتون بیشتر باشه خواناییش کمتر میشه برای کسی که مسلط نیست به اون لاجیک.
۲. نوشتن یک failing test. خیلی وقتا همه مشکلشونو میگن ولی واقعا نمیفهمم کجاش مشکل بوده 😁
۳. اگه مورد دو رو انجام ندادین, میتونید یک قطعه کد کوتاهی بذارین که مشکلتون رو reproduce کنه! expected result مشخص باشه.
۴. محیطتون رو کامل شرح بدید. سیستم عاملتون, چه نسخه ای از لایبری و پایتون رو دارین استفاده میکنید.
۵. اسکرین شات با سایت هایی مشابه ray.so بنویسید یا از قابلیت جدید تلگرام استفاده کنید برای ارسال کد.
@ManiFoldsPython
اولین مشکلی که من خیلی میبینم مشکل xy هست.
https://en.wikipedia.org/wiki/XY_problem
مشکل xy چیه؟ به جای اینکه راجب صورت سوال, سوال بپرسن راجب مشکلی میپرسن که در طی پاسخ به اون سوال از اون روش بهش برخوردن. مثلا یک مثال ساده: من چطور تو پایتون میتونم سه کاراکتر اخر از یک string که میاد رو بگیرم؟
حالا سوال و چالش واقعی:من چطور میتونم ببینم فایلی که کلاینت برام فرستاده همون فایلیه که ادعا میکنه؟ جوابش: مقایسه مجیک بایت و تطابقش با file extension که بعد آخرین نقطه میاد.
پس همیشه سوالتون رو بپرسید. میتونید راهکاری هم که داشتین در کنارش معرفی کنید.
دومین مشکل همون مشکل dont ask to ask هست که احتمال پاسخ گرفتنتون رو به شدت کاهش میدین.
https://dontasktoask.com
و آخرین مشکل نحوه و کالچر مطرح کردن مشکلتون هست. لایبری های اوپن سورس اگه ایشو زده باشین حتما با کالچر مطرح issue آشنا هستین, این موارد شامل:
۱. جدایی لاجیک از کدتون. هرچقدر لاجیک لای کدتون بیشتر باشه خواناییش کمتر میشه برای کسی که مسلط نیست به اون لاجیک.
۲. نوشتن یک failing test. خیلی وقتا همه مشکلشونو میگن ولی واقعا نمیفهمم کجاش مشکل بوده 😁
۳. اگه مورد دو رو انجام ندادین, میتونید یک قطعه کد کوتاهی بذارین که مشکلتون رو reproduce کنه! expected result مشخص باشه.
۴. محیطتون رو کامل شرح بدید. سیستم عاملتون, چه نسخه ای از لایبری و پایتون رو دارین استفاده میکنید.
۵. اسکرین شات با سایت هایی مشابه ray.so بنویسید یا از قابلیت جدید تلگرام استفاده کنید برای ارسال کد.
@ManiFoldsPython
👍16
من واقعا شانسمو درک نمیکنم, چهار ساله یک عنکبوت ندیدم, دقیقا دقیقه ۱۲ ام ویدیویی که دارم ریکورد میکنم عنکبوت میاد بالای میزم :))
حالا بگذریم, ویدیو هایی که قولشو دادم record کردم. منتهی رو اسم کل پلی لیست گیر کردم :)) بنظرتون چه اسمی بذارم براش؟
1. تقویت پروفایل با مشارکت اوپن سورس
2. تقویت پروفایل با پرسونال برندینگ, نتورکینگ و مدرک
3. صفر تا صد رزومه نویسی
4. صفر تا صد مصاحبه behavioural
5. صفر تا صد مصاحبه تکنیکال
6. انتخاب, و پیشرفت شخصی در شرکت
از امشب شبی یک ویدیو میدم بیرون از این پلی لیست. 😁
@ManiFoldsPython
حالا بگذریم, ویدیو هایی که قولشو دادم record کردم. منتهی رو اسم کل پلی لیست گیر کردم :)) بنظرتون چه اسمی بذارم براش؟
1. تقویت پروفایل با مشارکت اوپن سورس
2. تقویت پروفایل با پرسونال برندینگ, نتورکینگ و مدرک
3. صفر تا صد رزومه نویسی
4. صفر تا صد مصاحبه behavioural
5. صفر تا صد مصاحبه تکنیکال
6. انتخاب, و پیشرفت شخصی در شرکت
از امشب شبی یک ویدیو میدم بیرون از این پلی لیست. 😁
@ManiFoldsPython
🔥36👍4
قسمت اول پلی لیست رشد مسیر شغلی, صفر تا صد گرفتن استخدام شدن در دنیای نرم افزار
در اولین ویدیو و دومین ویدیو میپردازیم به بهبود پروفایل خودتون به عنوان یک برنامه نویس. در این ویدیو میپردازیم به مشارکت اوپن سورس. قراره با هم بررسی کنیم چطور میتونیم تو یک پروژه اوپن سورس مشارکت داشته باشیم, چه فرهنگ و کالچری داره و تو چه سطحی باشیم میتونیم مشارکت کنیم؟
https://www.youtube.com/watch?v=0Xem5Ft72TE
@ManiFoldsPython
در اولین ویدیو و دومین ویدیو میپردازیم به بهبود پروفایل خودتون به عنوان یک برنامه نویس. در این ویدیو میپردازیم به مشارکت اوپن سورس. قراره با هم بررسی کنیم چطور میتونیم تو یک پروژه اوپن سورس مشارکت داشته باشیم, چه فرهنگ و کالچری داره و تو چه سطحی باشیم میتونیم مشارکت کنیم؟
https://www.youtube.com/watch?v=0Xem5Ft72TE
@ManiFoldsPython
🔥9👍1💩1
قسمت دوم پلی لیست رشد مسیر شغلی, صفر تا صد گرفتن استخدام شدن در دنیای نرم افزار
در دومین ویدیو, از اهمیت پرسونال برندینگ صحبت میکنم. راجب نتورکینگ نکاتی رو میگم و تفاوتش با پرسونال برندینگ. راجب پروژه سمپل زدن و پروداکت صحبت میکنم, و در آخر به سوال بزرگی که آیا فلان مدرک من از فلان کورس ارزشی برای فلان کارفرما داره یا نه پاسخ میدم
https://youtu.be/lsf0tSeJYPI
سوالی داشتین حتما کامنت کنید
@ManiFoldsPython
در دومین ویدیو, از اهمیت پرسونال برندینگ صحبت میکنم. راجب نتورکینگ نکاتی رو میگم و تفاوتش با پرسونال برندینگ. راجب پروژه سمپل زدن و پروداکت صحبت میکنم, و در آخر به سوال بزرگی که آیا فلان مدرک من از فلان کورس ارزشی برای فلان کارفرما داره یا نه پاسخ میدم
https://youtu.be/lsf0tSeJYPI
سوالی داشتین حتما کامنت کنید
@ManiFoldsPython
YouTube
تقویت نتورکینگ پرسونال برندینگ و ارزش گذاری مدارک
در دومین ویدیو از بهبود پروفایل, میپردازیم به مفاهیم پرسونال برندینگ, نتورکینگ, دو مبحثی که واقعا مهم و تاثیر گذار هستند در درآمد و شانس گرفتن شغل بهتر. در آخر میپردازیم به ارزش گذاری مدارک طبق مقاله مارتین
لینک مقاله:
https://martinfowler.com/bliki/C…
لینک مقاله:
https://martinfowler.com/bliki/C…
👍12
قسمت سوم پلی لیست رشد مسیر شغلی, صفر تا صد گرفتن استخدام شدن در دنیای نرم افزار
بعد از اینکه پروفایلمون رو قوی کردیم, حالا وقتشه که رو کاغذ هم خودمون رو خوب نشون بدیم. تو این ویدیو پرداختم به اصول زرومه نویسی, از ریپو گیتهاب خودم. تک تک موارد که میتونه یک رزومه رو بهتر کنه حتی برای مارکت اروپا و رزومه رو اینجا با مثال و توضیح فارسی, شرح دادم.
👉 Link: https://youtu.be/y8G_31UmiYo
ریپو گیتهاب:
👉 Link: https://github.com/ManiMozaffar/awesome-resumes
سوالی داشتین حتما کامنت کنید
@ManiFoldsPython
بعد از اینکه پروفایلمون رو قوی کردیم, حالا وقتشه که رو کاغذ هم خودمون رو خوب نشون بدیم. تو این ویدیو پرداختم به اصول زرومه نویسی, از ریپو گیتهاب خودم. تک تک موارد که میتونه یک رزومه رو بهتر کنه حتی برای مارکت اروپا و رزومه رو اینجا با مثال و توضیح فارسی, شرح دادم.
👉 Link: https://youtu.be/y8G_31UmiYo
ریپو گیتهاب:
👉 Link: https://github.com/ManiMozaffar/awesome-resumes
سوالی داشتین حتما کامنت کنید
@ManiFoldsPython
❤11👍1
قابل توجه دوستانی که رزومه فرستادن, تو ویدیو بعدی که هنوز پابلیش نکردم و فردا میکنم رزومشون رو بررسی کردم..👆
این ویدیو نیم ساعت شده بود.
@ManiFoldsPython
این ویدیو نیم ساعت شده بود.
@ManiFoldsPython
❤10
قسمت چهارم پلی لیست رشد مسیر شغلی, صفر تا صد گرفتن استخدام شدن در دنیای نرم افزار
حالا که با تکنیک های رزومه نویسی آشنا شدیم, میریم که ۵ رزومه رو باهم بررسی کنیم. در آخرش رزومه خودمم بررسی میکنم و نکات منفی و مثبتش رو میگم.
👉 Link: https://youtu.be/BntW0RjTyaM
سوالی داشتین حتما کامنت کنید
@ManiFoldsPython
حالا که با تکنیک های رزومه نویسی آشنا شدیم, میریم که ۵ رزومه رو باهم بررسی کنیم. در آخرش رزومه خودمم بررسی میکنم و نکات منفی و مثبتش رو میگم.
👉 Link: https://youtu.be/BntW0RjTyaM
سوالی داشتین حتما کامنت کنید
@ManiFoldsPython
YouTube
ورک شاپ بررسی ۵ رزومه IT
حالا که با تکنیک های رزومه نویسی آشنا شدیم, میریم که ۵ رزومه رو باهم بررسی کنیم. در آخرش رزومه خودمم بررسی میکنم و نکات منفی و مثبتش رو میگم.
ریپو گیتهاب رزومه نویسی:
https://github.com/ManiMozaffar/awesome-resumes
🌍LinkedIn: https://www.linkedin.co…
ریپو گیتهاب رزومه نویسی:
https://github.com/ManiMozaffar/awesome-resumes
🌍LinkedIn: https://www.linkedin.co…
❤8👍1
نصف پلی لیست تموم شده و ۴ قسمت از پلی لیست پخش شده و باقی قسمت ها هم طی ۳-۴ روز آتی اپلود میشه.
سوال از کسایی که پلی لیستو دیدن نکات مثبت و منفی ویدیو چی بود بنظرتون؟ چه فیدبکی دارین؟
و کسایی که ندیدن چرا هنوز ندیدن؟ یک مقدار view از اون چیزی که انتظارشو داشتم کمتر بود.. چون خیلیا این سوالاتی که تو ویدیو جواب داده بودن رو ازم میپرسیدن. نمیدونم شاید اشتباه میکردم و جامعه متقاضی این مطالب کمتر از چیزی بود که تو ذهن من بود...
در خصوص دوره تست و دیزاین, قطعا ادامه پیدا میکنه. شرمنده این ۴-۵ هفته اخیر واقعا فشار زیادی روم بود و نمیرسیدم ویدیو بذارم. بعد از تموم شدن این پلی لیست هفته ای ۲ قسمت از هرکدوم میذارم. دیزاین پترن که دوره خیلی طولانی خواهد بود ولی تست تقریبا نصفش تموم شده و تا قبل ۲۰۲۴ کلش تموم میشه احتمالا.
@ManiFoldsPython
سوال از کسایی که پلی لیستو دیدن نکات مثبت و منفی ویدیو چی بود بنظرتون؟ چه فیدبکی دارین؟
و کسایی که ندیدن چرا هنوز ندیدن؟ یک مقدار view از اون چیزی که انتظارشو داشتم کمتر بود.. چون خیلیا این سوالاتی که تو ویدیو جواب داده بودن رو ازم میپرسیدن. نمیدونم شاید اشتباه میکردم و جامعه متقاضی این مطالب کمتر از چیزی بود که تو ذهن من بود...
در خصوص دوره تست و دیزاین, قطعا ادامه پیدا میکنه. شرمنده این ۴-۵ هفته اخیر واقعا فشار زیادی روم بود و نمیرسیدم ویدیو بذارم. بعد از تموم شدن این پلی لیست هفته ای ۲ قسمت از هرکدوم میذارم. دیزاین پترن که دوره خیلی طولانی خواهد بود ولی تست تقریبا نصفش تموم شده و تا قبل ۲۰۲۴ کلش تموم میشه احتمالا.
@ManiFoldsPython
❤18👍5
اگه دنبال یک پکیجین که کارتون رو با timestamp راحت تر کنه این پکیجو امتحان کنید
https://github.com/arrow-py/arrow
مثلا میخواین سه شنبه هفته قبل رو بگیرین. اول ۱ هفته میرین عقب. بعد استارت هفته (دو شنبه رو میگیرین) بعد ۱ روز میرین جلو که میشه سه شنبه.
خیلی پکیج تمیزیه 👌
@ManiFoldsPython
https://github.com/arrow-py/arrow
مثلا میخواین سه شنبه هفته قبل رو بگیرین. اول ۱ هفته میرین عقب. بعد استارت هفته (دو شنبه رو میگیرین) بعد ۱ روز میرین جلو که میشه سه شنبه.
import arrow
arrow.now().shift(weeks=-1).floor('week').shift(days=1)
خیلی پکیج تمیزیه 👌
@ManiFoldsPython
GitHub
GitHub - arrow-py/arrow: 🏹 Better dates & times for Python
🏹 Better dates & times for Python. Contribute to arrow-py/arrow development by creating an account on GitHub.
❤7👍6🔥1
Forwarded from DevTwitter | توییت برنامه نویسی
#بدرد
فقط اینکه شما بلد باشید با یک زبان برنامه نویسی یک پروژه رو به اتمام برسونید به معنی این نیست که شما یک Software engineer یا مهندس نرمافزار هستید.
یک مهندس نرمافزار توی سال 2023 نیازه که حداقل یکسری ابزار هارو بلد باشه و بتونه باهاشون کار کنه، خب بیاید ببینیم چه ابزارهایی...
- IDE | Editor
یک مهندس نرمافزار احتمالا بیشترین تایمش رو بابت کد زدن بگذرونه، پس نیازه که محیطی که توش کد میزنه رو خوب بشناسه.
پس اولین ابزار یک IDE یا ادیتور مناسبه که اون رو خوب بشناسه و بهش مسلط باشه تا با سرعت مناسبی بتونه پروسه کد زدن رو پیش ببره.
- Version control systems
برای مدیریت و توسعه سورس های کد نوشته شده و اشتراک گذاری و توسعه توسط بقیه برنامه نویس ها شما حتما حتما باید یک ورژن کنترل مثل گیت رو خوب بلد باشید تا بتونید در روند توسعه سریع و چابک باشید.
- Docker
دیگه توی این دوره هر مهندس نرم افزاری برای این که یک محیط Centralized رو بالا بیاره نیازه که داکر رو بلد باشه، حتما یادش بگیرید :)
- Testing tools
شما نیازه که ابزار ها و لایبرری های مورد استفاده جهت تست نرم افزارتون رو هم بلد باشید تا بتونید تست اتوماتیک داشته باشید
- Monitoring
یکسری ابزار ها هستن برای مانیتور کردن پرفومنس پروژه مثل Prometheus و Grafana که با استفاده ازشون میتونید پرفومنس پروژتون یا دیتابیستون رو مانیتور کنید و برای تحلیل هاتون ازشون استفاده کنید.
- Task management tools
کارها و تسک های هربرنامه نویس باید مشخص باشه که بتونه سرعتش در توسعه رو بالا ببره، در نتیجه دونستن یکسری ابزار مثل Jira که کارشون Task management و.. هست یک نیاز ضروریه.
- Logging
اما لاگ زدن و log tracking، اهمیتش توی یک پروژه به قدری مهمه که شما بعنوان مهندس نرم افزار برای کنترل بهتر روی پروژتون نباید ازش غافل بشید.
یکسری ابزار ها مثل Sentry بهتون کمک میکنن.
- CI/CD
شما با استفاده از CD/CD میتونید روند بیلد، تست و دیپلوی پروژتون رو اتوماتیک کنید و خیلی سرعت خودتون رو در روند توسعه نرم افزار بالاتر ببرید و ریسک خطا های بیلد و دیپلوی رو کاهش بدید، ابزار هایی مثل Jenkins یا حتی Gitlab به شما در این پروسه کمک میکنن.
- Gitlab | Github
خب ما گیت رو یادگرفتیم حالا چطور توی یک محیط اشتراکی کدهامون رو باهم به اشتراک بزاریم و کدهای همدیگه رو قبل از اعمال بررسی و کامنت بزاریم، یا اصلا این کدهارو کجا نگه داریم که فردا از دستشون ندیم؟ خب معلومه دیگه از گیتهاب یا گیتلب استفاده کنید.
- Message brokers
این روزا با بزرگ شدن پروژه هامون، نیاز به ارتباط بین اپلیکیشن ها حس میشه که یکی از روش های ارتباط برقرار کردن استفاده از Message broker هایی مثل Kafka یا RabbitMQ هستش و یادگیریشون امروزه تقریبا ضروری شده برای یک مهندس نرم افزار
- Linux
اصلا نیاز به توضیح نیست در مورد لینوکس، بعنوان یه مهندس نرم افزار تقریبا بیشتر سرورهایی که باهاشون سر و کار دارید لینوکسی هستند، و از سمتی احتمالا استفاده از لینوکس میتونه خیلی بهتون کمک کنه بعنوان دسکتاپتون
پس یادش بگیرید.
- Cloud platforms
این روزا تقریبا هرجایی که برید با Cloud سر و کار دارید و زیرساخت اکثر اپلیکیشنا توی محیط هایی مثل AWS و Google Cloud و Azure یا مشابهشون دارن میزبانی میشن، پس اینم احتمالا باید یادبگیرید خصوصا اگه قصد مهاجرت دارید.
@DevTwitter | <Reza/>
فقط اینکه شما بلد باشید با یک زبان برنامه نویسی یک پروژه رو به اتمام برسونید به معنی این نیست که شما یک Software engineer یا مهندس نرمافزار هستید.
یک مهندس نرمافزار توی سال 2023 نیازه که حداقل یکسری ابزار هارو بلد باشه و بتونه باهاشون کار کنه، خب بیاید ببینیم چه ابزارهایی...
- IDE | Editor
یک مهندس نرمافزار احتمالا بیشترین تایمش رو بابت کد زدن بگذرونه، پس نیازه که محیطی که توش کد میزنه رو خوب بشناسه.
پس اولین ابزار یک IDE یا ادیتور مناسبه که اون رو خوب بشناسه و بهش مسلط باشه تا با سرعت مناسبی بتونه پروسه کد زدن رو پیش ببره.
- Version control systems
برای مدیریت و توسعه سورس های کد نوشته شده و اشتراک گذاری و توسعه توسط بقیه برنامه نویس ها شما حتما حتما باید یک ورژن کنترل مثل گیت رو خوب بلد باشید تا بتونید در روند توسعه سریع و چابک باشید.
- Docker
دیگه توی این دوره هر مهندس نرم افزاری برای این که یک محیط Centralized رو بالا بیاره نیازه که داکر رو بلد باشه، حتما یادش بگیرید :)
- Testing tools
شما نیازه که ابزار ها و لایبرری های مورد استفاده جهت تست نرم افزارتون رو هم بلد باشید تا بتونید تست اتوماتیک داشته باشید
- Monitoring
یکسری ابزار ها هستن برای مانیتور کردن پرفومنس پروژه مثل Prometheus و Grafana که با استفاده ازشون میتونید پرفومنس پروژتون یا دیتابیستون رو مانیتور کنید و برای تحلیل هاتون ازشون استفاده کنید.
- Task management tools
کارها و تسک های هربرنامه نویس باید مشخص باشه که بتونه سرعتش در توسعه رو بالا ببره، در نتیجه دونستن یکسری ابزار مثل Jira که کارشون Task management و.. هست یک نیاز ضروریه.
- Logging
اما لاگ زدن و log tracking، اهمیتش توی یک پروژه به قدری مهمه که شما بعنوان مهندس نرم افزار برای کنترل بهتر روی پروژتون نباید ازش غافل بشید.
یکسری ابزار ها مثل Sentry بهتون کمک میکنن.
- CI/CD
شما با استفاده از CD/CD میتونید روند بیلد، تست و دیپلوی پروژتون رو اتوماتیک کنید و خیلی سرعت خودتون رو در روند توسعه نرم افزار بالاتر ببرید و ریسک خطا های بیلد و دیپلوی رو کاهش بدید، ابزار هایی مثل Jenkins یا حتی Gitlab به شما در این پروسه کمک میکنن.
- Gitlab | Github
خب ما گیت رو یادگرفتیم حالا چطور توی یک محیط اشتراکی کدهامون رو باهم به اشتراک بزاریم و کدهای همدیگه رو قبل از اعمال بررسی و کامنت بزاریم، یا اصلا این کدهارو کجا نگه داریم که فردا از دستشون ندیم؟ خب معلومه دیگه از گیتهاب یا گیتلب استفاده کنید.
- Message brokers
این روزا با بزرگ شدن پروژه هامون، نیاز به ارتباط بین اپلیکیشن ها حس میشه که یکی از روش های ارتباط برقرار کردن استفاده از Message broker هایی مثل Kafka یا RabbitMQ هستش و یادگیریشون امروزه تقریبا ضروری شده برای یک مهندس نرم افزار
- Linux
اصلا نیاز به توضیح نیست در مورد لینوکس، بعنوان یه مهندس نرم افزار تقریبا بیشتر سرورهایی که باهاشون سر و کار دارید لینوکسی هستند، و از سمتی احتمالا استفاده از لینوکس میتونه خیلی بهتون کمک کنه بعنوان دسکتاپتون
پس یادش بگیرید.
- Cloud platforms
این روزا تقریبا هرجایی که برید با Cloud سر و کار دارید و زیرساخت اکثر اپلیکیشنا توی محیط هایی مثل AWS و Google Cloud و Azure یا مشابهشون دارن میزبانی میشن، پس اینم احتمالا باید یادبگیرید خصوصا اگه قصد مهاجرت دارید.
@DevTwitter | <Reza/>
👍36👎4❤2
پریروز یک مشکل داشتم تو گرافانا که الان بهتون توضیح میدم, فکر کنید یک query تایم سریز دارین از متریک یک سری یوزر. این تو دیتابیس شماره یک هست:
User | metric | ts
mani | 50 | 2023-11-15
mani | 50 | 2023-11-14
negin | 20 | 2023-11-15
negin | 20 | 2023-11-14
abbas | 30 | 2023-11-13
حالا این یوزر هاتون تو دیتابیس شماره ۲ گروه شدن.
User | group
mani | 1
abbas | 1
negin | 2
میخواستم چیکار کنم؟
تو گرافانا میخواستم مجموع این متریک ها رو بر اساس هر گروه داشته باشم. یعنی ریزالت دو تا queryکه از دو تا دیتابیس میارن رو جوین بزنم.
مشکل چی بود؟
خوده join گرافانا خیلی خرابه. وقتی inner join میزدم با تایم سریز فقط ۱ دیتا رو جوین میزد. اینطوری فقط مثلا ماله روزه ۱۵ نوامبر رو داشتم از هر گروه. یعنی:
Expected output (خروجی مورد نظرم)
Group | metric | ts
1 | 70 | 2023-11-15
1 | 70 | 2023-11-14
1 | 0 | 2023-11-13
2 | 0 | 2023-11-15
2 | 0 | 2023-11-14
2 | 30 | 2023-11-13
CURRENT output (خروجی که میگرفتم)
group | metric | ts
1 | 70 | 2023-11-15
2 | 0 | 2023-11-15
چرا؟ خدا میدونه چرا! transformer های گرافانا واقعا باگ دارن و درست حسابی کار نمیکنن.
اقا بگذریم, حل این صورت سوالو تو پست بعدی توضیح میدم. هدفم از این پست این بود که یک چالشی رو بذارم که خودم باهاش دست و پنجه نرم میکردم که جواب درست حسابی تو نت ازش نبود. میخوام تو پست بعد بگم تو اینطور مواقع چه کار میتونید کنید.
@ManiFoldsPython
User | metric | ts
mani | 50 | 2023-11-15
mani | 50 | 2023-11-14
negin | 20 | 2023-11-15
negin | 20 | 2023-11-14
abbas | 30 | 2023-11-13
حالا این یوزر هاتون تو دیتابیس شماره ۲ گروه شدن.
User | group
mani | 1
abbas | 1
negin | 2
میخواستم چیکار کنم؟
تو گرافانا میخواستم مجموع این متریک ها رو بر اساس هر گروه داشته باشم. یعنی ریزالت دو تا queryکه از دو تا دیتابیس میارن رو جوین بزنم.
مشکل چی بود؟
خوده join گرافانا خیلی خرابه. وقتی inner join میزدم با تایم سریز فقط ۱ دیتا رو جوین میزد. اینطوری فقط مثلا ماله روزه ۱۵ نوامبر رو داشتم از هر گروه. یعنی:
Expected output (خروجی مورد نظرم)
Group | metric | ts
1 | 70 | 2023-11-15
1 | 70 | 2023-11-14
1 | 0 | 2023-11-13
2 | 0 | 2023-11-15
2 | 0 | 2023-11-14
2 | 30 | 2023-11-13
CURRENT output (خروجی که میگرفتم)
group | metric | ts
1 | 70 | 2023-11-15
2 | 0 | 2023-11-15
چرا؟ خدا میدونه چرا! transformer های گرافانا واقعا باگ دارن و درست حسابی کار نمیکنن.
اقا بگذریم, حل این صورت سوالو تو پست بعدی توضیح میدم. هدفم از این پست این بود که یک چالشی رو بذارم که خودم باهاش دست و پنجه نرم میکردم که جواب درست حسابی تو نت ازش نبود. میخوام تو پست بعد بگم تو اینطور مواقع چه کار میتونید کنید.
@ManiFoldsPython
👍4
خب بریم باهم قدم به قدم مشکلو حل کنیم. اولا دیدین چه قشنگ توضیح دادم؟ اولین مشکل همینه. طریقه مطرح کردن یک issue. هرچقدر با حوصله تر یک سوالی رو بپرسین احتمال اینکه جواب بهتری بگیرین خیلی بیشتره. ببینید این سوال من مشکل xy ندارم. نیومدم بگم چطور تو grafana از دو دیتابیس inner join بزنم. اومدم کل مشکلمو توضیح دادم بعد نوشتم چیکار کردم که حالا خوردم به مشکل. فرهنگ مطرح کردن issue خیلی مهمه. تو پست زیر بیشتر توضیح دادم:
https://news.1rj.ru/str/manifoldspython/642
۱. اولین کاری که میکنم اینه که میام از AI میپرسم. دوستان بدون تعارف من کلی ai تست کردم و واقعا از نظر ضریب هوشی و درست جواب دادن هیچکدوم به جز gpt 4 قابل استفاده نیستن. ارزش داره واقعا ۲۰ دلاره پرمیومشو بگیرین خودتونو راحت میکنید. بیشتر مواقع بهتون درست جواب میده. بهترین ۲۰ دلاریه که تو عمرم دارم خرج میکنم :)). خب از gpt 4 پرسیدم. اصول پرسیدن از AI اینطوریه که شما یک سولوشن ازش نمیپرسید. کل صورت سوالو بهش بدید و ازش ۱۰ تا راهکار مختلف بخواین. اینطوری کلی بهتون راهکار میده و آپشن هاتون بیشتر میشه. بعد شروع کنید به چالش کشیدن این راهکار ها. میبینید که بعضیاش اصلا technically ممکن نیست یا اشتباهه. و خودش اعتراف میکنه. در نهایت به چند تا سولوشنی که واقعا کار میکنه میرسید.
https://chat.openai.com/share/b26aae8d-31ec-4fd1-bbc4-e084a52e09dc
مثلا راهکاری که gpt داد بهم این بود که بیا تو application layer اینا رو تو پایتون باهم join بزن. یا اینکه بیا از postgresql extension هایی استفاده کن که دو تا دیتابیسو بهم وصل میکنن و یک تیبل materialized بنویس. راهکار نسبتا کثیفیه 😁 خوشم نیومد. بریم مرحله ۲ ام.
۲. گوگل کنید. ببینید کسی ایا مشکل شما رو داره یا نه (جواب هلو برو تو گلو). کلمات کلیدی رو گوگل کنید همیشه. که تو این کیس میشه inner join 2 database grafana transformer. استک اورفلو یا کامینیتی های مختلف. قشنگ اینو سرچ کنید میبینید تو community کلی ایشو مطرح کردن که همش همینه.
https://community.grafana.com/t/inner-join-transform-in-mixed-data-source-pick-only-one-joined-row/86290/5
اگه مرحله ۱ و ۲ جواب نگرفتین احتمالا مشکل سختیه که دارین باهاش دست و پنجه نرم میکنید.
۳. یک scope بیاین عقب تر. برین مقاله بخونید راجب transformer های گرافانا. تو مدیوم همیشه پر مقالست. بهتون آموزش میده که یوزکیسشون چیه. ممکنه یک transformer دیگه باشه که حل کنه مشکلتون رو. خلاصه به جای اینکه فقط رو اون راه حل مانور برین سعی کنید بیس دانشتون رو بیشتر کنید که بتونید راهکار از خودتون تولید کنید.
۴. حالا که تسلط بیشتری دارین رو گرافانا یکم باهاش ور برین. روش های مختلف رو تست کنید. brain storm کنید. ببینید راهی وجود داره اصلا یک outer join رو تبدیل به inner join کرد؟
من چطور حل کردم؟
به جای اینکه از inner join استفاده کنم, از outer join استفاده کردم. منتهی تو query دوم یک مقدار dummy اضافه کردم مثلا True. پس شد یک عالمه ریزالت که outer join شدن و بعضیاش اون مقدار dummy True رو دارن. بعد query کردم اون و اون گروه هایی که میخواستم رو ازشون فیلتر کردم (به شرطی که اون مقدار dummy من none نباشه)
پس با دو تا transformer اینکارو کردم:
-> out join 2 queries
-> data filter transformer (dummy value != null)
اینطوری درواقع عملکرد inner join رو با outer join ساختم! به این شکله که شما میتونید یک مشکلو حل کنید. 🙂
تو قدم ۵ ام اگه ۴ قدم بالا جواب نداد حالا بیاین از بقیه بپرسید. ببینید ایا اونا راهکاری میدن که سوالتون حل شه؟
@ManiFoldsPython
https://news.1rj.ru/str/manifoldspython/642
۱. اولین کاری که میکنم اینه که میام از AI میپرسم. دوستان بدون تعارف من کلی ai تست کردم و واقعا از نظر ضریب هوشی و درست جواب دادن هیچکدوم به جز gpt 4 قابل استفاده نیستن. ارزش داره واقعا ۲۰ دلاره پرمیومشو بگیرین خودتونو راحت میکنید. بیشتر مواقع بهتون درست جواب میده. بهترین ۲۰ دلاریه که تو عمرم دارم خرج میکنم :)). خب از gpt 4 پرسیدم. اصول پرسیدن از AI اینطوریه که شما یک سولوشن ازش نمیپرسید. کل صورت سوالو بهش بدید و ازش ۱۰ تا راهکار مختلف بخواین. اینطوری کلی بهتون راهکار میده و آپشن هاتون بیشتر میشه. بعد شروع کنید به چالش کشیدن این راهکار ها. میبینید که بعضیاش اصلا technically ممکن نیست یا اشتباهه. و خودش اعتراف میکنه. در نهایت به چند تا سولوشنی که واقعا کار میکنه میرسید.
https://chat.openai.com/share/b26aae8d-31ec-4fd1-bbc4-e084a52e09dc
مثلا راهکاری که gpt داد بهم این بود که بیا تو application layer اینا رو تو پایتون باهم join بزن. یا اینکه بیا از postgresql extension هایی استفاده کن که دو تا دیتابیسو بهم وصل میکنن و یک تیبل materialized بنویس. راهکار نسبتا کثیفیه 😁 خوشم نیومد. بریم مرحله ۲ ام.
۲. گوگل کنید. ببینید کسی ایا مشکل شما رو داره یا نه (جواب هلو برو تو گلو). کلمات کلیدی رو گوگل کنید همیشه. که تو این کیس میشه inner join 2 database grafana transformer. استک اورفلو یا کامینیتی های مختلف. قشنگ اینو سرچ کنید میبینید تو community کلی ایشو مطرح کردن که همش همینه.
https://community.grafana.com/t/inner-join-transform-in-mixed-data-source-pick-only-one-joined-row/86290/5
اگه مرحله ۱ و ۲ جواب نگرفتین احتمالا مشکل سختیه که دارین باهاش دست و پنجه نرم میکنید.
۳. یک scope بیاین عقب تر. برین مقاله بخونید راجب transformer های گرافانا. تو مدیوم همیشه پر مقالست. بهتون آموزش میده که یوزکیسشون چیه. ممکنه یک transformer دیگه باشه که حل کنه مشکلتون رو. خلاصه به جای اینکه فقط رو اون راه حل مانور برین سعی کنید بیس دانشتون رو بیشتر کنید که بتونید راهکار از خودتون تولید کنید.
۴. حالا که تسلط بیشتری دارین رو گرافانا یکم باهاش ور برین. روش های مختلف رو تست کنید. brain storm کنید. ببینید راهی وجود داره اصلا یک outer join رو تبدیل به inner join کرد؟
من چطور حل کردم؟
به جای اینکه از inner join استفاده کنم, از outer join استفاده کردم. منتهی تو query دوم یک مقدار dummy اضافه کردم مثلا True. پس شد یک عالمه ریزالت که outer join شدن و بعضیاش اون مقدار dummy True رو دارن. بعد query کردم اون و اون گروه هایی که میخواستم رو ازشون فیلتر کردم (به شرطی که اون مقدار dummy من none نباشه)
پس با دو تا transformer اینکارو کردم:
-> out join 2 queries
-> data filter transformer (dummy value != null)
اینطوری درواقع عملکرد inner join رو با outer join ساختم! به این شکله که شما میتونید یک مشکلو حل کنید. 🙂
تو قدم ۵ ام اگه ۴ قدم بالا جواب نداد حالا بیاین از بقیه بپرسید. ببینید ایا اونا راهکاری میدن که سوالتون حل شه؟
@ManiFoldsPython
👍9