جنگولرن
3.8K subscribers
288 photos
74 videos
31 files
556 links
آموزش Django و بستگان
Download Telegram
Forwarded from Python Hints
#تجربه

دوره کتابخوانی خودمون
کتاب خوانی با چندتا از همکارای شرکت
مقاله خوانی و ...

باعث شد یک چیزی رو مطمئن بشم؛ ۹۸٪ کتاب خواندن رو بلد نیستیم
البته حق هم داریم، دانشگاه و مدرسه و ... باعث و بانی این موضوع بوده و البته اینکه هیچ کس بهمون یاد نداد یا بهمون نگفت که داریم اشتباه می‌خونیم.

شخصاً این مشکل رو داشتم.

برای مثال: اول هفته با یکی از همکاران شرکت شروع به خواندن یک کتاب کردیم (بخش تحقیقات)
من دیروز کتاب رو تموم کردم و شروع کردم به کد زدن (با اینکه من جاهای دیگه هم کار می‌کنم) وقتی pull request زدم و درخواست peer review دادم، بهم گفت که تازه ۱٫۳ کتاب رو خوانده.

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

۱- خواندن برای آزمون تئوری (مثلاً LPIC)
۲- خواندن برای آزمون عملی (مثلاً RHCSA)
۳- خواندن برای یادگیری نکته‌ای (fluent python)
۴- خواندن برای یادگیری دقیق ( fastapi documentation )

اگر توی همه این موارد فرمول خواندن شما یکسان هست، اگر موقع خواندن (حتی دیجیتال) ورق و قلم بغل دستت نداری

متأسفانه باید بگم که شما کتاب خواندن درست رو بلد نیستید، و همین داره وقتتون رو می‌گیره یا شمارو خسته می‌کنه.
👍13
Forwarded from Python Hints
روی این مورد از من راهکار خواستن (جلوتر مثال میزنم برای توضیح)

همین اول کار بگم یک فرمول ثابت برای همه وجود نداره هرکسی گفت وجود داره کلاش هست .اگر فرمولش ثابت بود؛ برای همه بچه مدرسه‌ای ها و دانشجو‌ها استفاده میکردن که همه بتونند به درستی از تمام ظرفیت هوش و استعدادشون استفاده کنند.

گفتند مشکل رو نشون دادن بدون راه‌حل فایده نداره.
من خودم گفتم؛ چندسال مسئله خودم این بود که اصلا نمی‌دونستم نحوه خوندم اشتباه هست؛ آدم وقتی به اشتباه پی‌میبره تازه از اونجا دنبال راهکار میگرده

کدوم یک از شما تو کدی که باگ و مشکل نداره؛ دنبال تغییر الگوریتم هستید ؟ پس پیدا کردن مشکل خودش ۷۰-۸۰٪ رسیدن به راه‌حل هست.

درنهایت من با این مثال توضیج دادم؛ فکر کردم شاید مفید باشه هرچند یک جلسه لایو ویدئویی می‌تونست بهتر باشه :

مثلا:
فرض کن داکیومنت
FastAPI
رو داری میخونی؛ نمیری بشینی توضیح نحوه نوشته شدن
generator
رو بخونی؛ موارد مهم رو میخونی مثل get, post, route, authentication , ...

یعد میای می‌بینی نوشته
Async
و تو میدونی لازم داری توی تمام پروژه‌هات مهم هست
چیکار می‌کنی از روی دامکیومنت Fastapi میخونی ؟
قطعا نه؛ میری یک کتاب یا یک دوره براش پیدا میکنی که هدفش فقط همین باشه

حالا فرض کن کتاب Async رو میخوای بخونی؛ توی ۳ فصل اول هم مقدمات پایتون هست
میشینی از اول بخونی ؟
نه فقط نگاه به سرفصل میکنی و اگر همرو میشناختی حذف میکنی و از فصل ۴ شروع میکنی

یک مثال دیگه کتاب fluent هست؛ این کتاب و کتابهای مشابه هر فصل یک هدفی داره
شاید داخل یک فصل اومده مثلا فریمورک django رو مثال زده
اینجا بر خلاف مثال قبلی
Async , FastAPI
شما نباید بری django رو بخونی اول به هدف فصل نگاه میکنی مثلا
mixin (multiple inheritance)
هست و بعد سعی میکنی همین رو درک کنی حالا اگر نویسنده کتاب زحمت کشیده ی مثال هم زده و شما بلد نیستی نباید برات مهم باشه

چون اون مثال میشه حاشیه برای شما؛ چون تو اصلا بکند دولوپر نیستی.
👍11
پکیج django-axes برای مدیریت و کنترل ورود به سیستم در جنگو

✔️امکاناتش:
-تعیین محدودیت برای تلاش‌های ورود ناموفق به سیستم
-قابلیت بلاک کردن آی‌پی‌های مشکوک و حمله‌ کننده 😂
-امکان تنظیم تعداد تلاش‌های ناموفق برای ورود به سیستم و زمان‌های مجاز برای تلاش مجدد
-قابلیت ارسال ایمیل هشدار به مدیر سیستم در صورت امنیت کاهش یافته
-امکان تنظیم و سفارشی‌سازی پیام خطا برای صفحه ورود به سیستم

خودم فقط یکم داکیومنتش رو خوندم و یه ویدئو هم ازش دیدم. ولی تست اش نکردم.
اگه تجربه استفاده ازش دارید کامنت کنید لطفا
👍16
Forwarded from Abolfazl 🤘
الگوی طراحی facade ( فِساد خونده میشه)

یکی از الگوهای بسیار پر کاربرد که برای کاهش کاپلینگ بین کلاس ها ( یا حتی sub system ها ) استفاده میشه.
به طور کلی ما زمانی از الگوی فساد استفاده میکنیم که کلاس های مختلفی داریم و میخوایم این کلاس ها از طریق یک کلاس دیگه بدون دسترسی مستقیم به هم اطلاعات رد و بدل کنن.
مثال : ما دو کلاس food و drink داریم و یک کلاسorder
واضحه که ما میخوایم غذا یا نوشیدنی یا هر دو رو به هر حال سفارش بدیم.
یه راه اشتباه استفاده مستقیم از از این دو کلاس داخل کلاس order هست.
اما یه راه درست اینه که کلاس order اطلاعی از داخل اون دو کلاس نداشته باشه. یعنی یک interface تعریف شه و کلاس order از طریق اون interface کارشو انجام بده.


مثال دوم یه مثال از ریپازیتوری گیتهاب خودمه که تا حد قابل توجهی حق مطلب رو ادا میکنه
👍5😁3👎1
Forwarded from سید فرندز / برنامه نویسی / هک و امنیت / تکنولوژی (SeYeD.Dev)
آموزش برنامه‌نویسی از صفر تا بی‌نهایت به صورت کاملا رایگان، در این دوره قصد داریم هر آنچه که در بازار کار نیاز است را به شما آموزش دهیم. هدف این دوره، تبدیل شدن به یک برنامه‌نویس فول استک است.

مرحله ۱: مبانی و زبان‌های برنامه‌نویسی
1. مقدمه به برنامه‌نویسی
2. زبان برنامه‌نویسی پایتون
3. زبان برنامه‌نویسی جاوا اسکریپت
4. مفاهیم برنامه‌نویسی شی‌گرا

مرحله ۲: توسعه وب و فریم‌ورک‌ها
5. فریم‌ورک Django
6. فریم‌ورک FastAPI
7. فریم‌ورک VueJS
8. فریم‌ورک gRPC
9. استفاده از بوت‌استرپ، HTML، CSS و فریم‌ورک‌های CSS معتبر

مرحله ۳: دیتابیس
10. دیتابیس SQL
11. دیتابیس MongoDB
12. آشنایی با دیتابیس Neo4J
13. استفاده از ردیس، ربیت ام کیو، سلری

مرحله ۴: تکنولوژی‌های متنوع
14. مفاهیم داکر
15. آشنایی با لینوکس
16. اجرای دیپلویمنت خودکار و CI/CD

مرحله ۵: امنیت و تست‌ها
17. تکنیک‌های تست نویسی
18. استفاده از گیت
19. مفاهیم امنیت در وب

مرحله ۶: مفاهیم پیشرفته
20. مفاهیم مالتی‌تردینگ و مالتی‌پروسسینگ و Async
21. آشنایی با معماری میکروسرویس

مرحله ۷: مهارت‌های مساعدتی
22. آموزش ساخت رزومه
23. راهنمایی در مسیر کاریابی
24. فرایندهای توسعه نرم‌افزار Agile/Scrum

روش ارائه:
- کلاس‌ها به صورت لایو در دیسکورد برگزار خواهند شد.
- کلاس‌ها به صورت شبانه ارائه خواهند شد.

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

مدرس دوره:
- سید و همکاران ایشان افتخار دارند این دوره را برگزار نمایند.

کانال تلگرام سید و رفقا:
زمان دقیق شروع دوره و لینک دیسکورد در کانال سید و رفقا اطلاع رسانی داده خواهد شد
https://t.me/seyed_bax
👍108👎3
جنگولرن
سری مهندسی نرم‌افزار: پست 7 از لینکدین Saeed Shahrivari Joghan توسعه چابک نرم‌افزار: سرعت یا انطباق؟ حوالی سال ۲۰۰۱ میلادی تعدادی از افراد شناخته شده حوزه نرم‌افزار طی بیانیه‌ای اعلام کردند که به راه‌های بهتری برای توسعه نرم‌افزار نسبت به دهه ۹۰ میلادی رسیدند…
سری مهندسی نرم‌افزار: پست 8
از لینکدین Saeed Shahrivari Joghan
تکنکیک‌های چابک برای هضم کردن تغییرات

در پست قبلی خدمتتون عرض کردم که شاید مهمترین هدف چابکی embraceکردن تغییرات باشه. در این پست میخوام مقداری راجع به تکنیک‌هایی که چابکی در این راستا داره صحبت کنم:
1️⃣ فرآیند تکرارشونده (Iterative) و افزایشی (Incremental): خب هر دوی این ویژگی‌ها در یه فرآیند به معنی تدریجی بودنه اما چه فرقی با هم دارند؟ فرض کنیم میخوایم تصویر یه اسب رو نقاشی کنیم. فرآیند تکرارشونده یعنی همون روشی که در سیاه قلم استفاده میشه یعنی در اوایل کار شاکله کلی اسب رو میکشیم و بعد در چند راند به مرور جزییات رو اضافه می‌کنیم پس در واقع به تدریج کیفیت نقاشی کل اسب بیشتر میشه تا کار تموم بشه. اما در حالت افزایشی این مدلیه که مثلا اول سر اسب رو به صورت کامل میکشیم بعد میریم سراغ پاهاش و همینجوری همه قسمت‌ها رو تکمیل می‌کنیم تا کل اسب تموم بشه. خب بدیهیه که در طی یک فرآیند تولید میشه هر دو حالت رو با هم داشت یعنی هم تکرارشونده بود و هم افزایشی. معمولا در فرآیندهای توسعه چابک طی تکرارهای (Iteration) متوالی ولی نسبتا کوتاه، ما پروژه رو تکمیل می‌کنیم و ممکنه در هر تکرار فیچرهای جدیدی اضافه کنیم و در کنارش کیفیت فیچرهای قبلی رو هم بهتر کنیم. معمولا خیلی خوبه که در پایان هر تکرار یه نسخه از نرم‌افزار (ولو ناقص) منتشر بشه که کار میکنه. که به اینکار میگن انتشار (release). ترکیب این دو حالت در کنار تکرارهای کوتاه باعث میشه که ما راحتتر بتونیم تغییرات رو در پروژه هضم کنیم. توجه داشته باشید که معمولاً در یک تکرار ما تمام مراحل تولید مثل تحلیل، طراحی، توسعه و ... رو داریم.
2️⃣ فیدبک مستمر مشتری و تیم تولید‌کننده: وقتی فرآیند به صورت تکرارشونده بره جلو در پایان هر تکرار فرصت داریم تا فیدبک خوبی از مشتری و حتی تیم تولید‌کننده راجع به خروجی بگیریم. این به تولید‌کننده و حتی مشتری کمک خیلی خوبی می‌کنه که نیازمندی‌هاش رو به درستی متوجه بشه و در مقابل به تیم توسعه هم انتقال بده.
3️⃣ شکست سریع (fast fail): در روشهای چابک اعتقاد زیادی به شکست سریع وجود داره. به عبارتی به جای اینکه که کلی برنامه‌ریزی و تفکر عمیق انجام بدیم که راه درست و نادرست رو تشخیص بدیم، فرآیندهای چابک ما رو تشویق می‌کنند که مقداری از مسیر رو بریم و اگه دیدیم جواب نمیده زود شکست بخوریم و مسیر رو اصلاح بکنیم. اغلب مواقع همین شکست‌ها هستند که حدود مساله و مسیر بهینه رو به ما نشون میدند.

موارد بیشتری هم از تکنیک‌های مشترک در روشهای اجایل میشه ذکر کرد ولی به نظر من این سه تکنیک مشترک خیلی موثر هستند که اساس همگی بر پایه برداشتن «گام‌های کوچک و تدریجی» و «داشتن فیدبک» هست.
3👍2
جنگولرن
poetry.pdf
amjadi_precommit.pdf
4.1 MB
مطلبی از لینکدین Mohammad Amin Amjadi در رابطه با pre-commit

هر چقدر حجم کد بیشتر بشه یا تیم بزرگ‌تر
بشه چالش و دغدغه‌ها بیشتر هم میشن و ریوو کردن کد هم خودش به چالشی بزرگ‌تر تبدیل
میشه که روز به روز تایم بیشتری می‌گیره و از طرفی احتمال از قلم افتادن توافق‌ها،
نکات و اصول هم بیشتر میشه.

اینجاست که pre-commit به دادمون میرسه. در این پست در ابتدا سعی می‌کنم برخی از نکات و مواردی که خودم در تیم‌ها سعی می‌کردم رعایت کنم رو مطرح کنم [امیدوارم خودشون مفید و آموزنده باشن] و در نهایت به نحوه ستاپ و نوشتن pre-commit می‌پردازم و اشاره‌ای به pre-push در یه مثال کاربردی و مورد نیاز و همین طور جاب qa می‌کنم.


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


#git #gtilab #pre_commit #pre_push #python #django
6👍1
تراکنش (Transaction) و ACID و درخواست‌های موازی

یکی از مفاهیم مهم #دیتابیس تراکنش‌ها یا همون Transactionها هستن. با کمک ACID بخصوص Atomicty و Isolation Level، ترنزکشن ها بهمون کمک میکنن چندین کوئری رو در قالب یک واحد به دیتابیس بدیم و به شکل موازی اجرا بشن تا در نهایت خروجی یکسان و Consistant داشته باشیم، بدون اینکه این وسط 100 هزار تومن پول یهو گم شه!
از کانال @MhrCode

https://youtu.be/lF8pheUpa6I
🔥3
قبل از مصاحبه Systems Design یاد بگیر: Eventual Consistency

فرض کنید یکی از آدمای معروف توی توییتر 10 میلیون فالوئر داشته باشه و بخواد همون که توییت زد، توییتش بره توی تایم لاین فالوئراش. اگه بخوایم این کارو همون موقع در لحظه انجام بدیم سیستممون crash میکنه یا اون آدم باید 10 دقیقه منتظر لودینگ ثبت توییت باشه! مفهوم Eventual Consistency یکی از مفاهیم مهم دنیای نرم افزار هست که توی مصاحبه های نرم افزاری زیاد در موردش سوال پرسیده میشه.

https://youtu.be/3j3g_mVGUc8
👍51
سلام. جنگولرن بیشتر چه مطالبی توی کانال بزاره؟
Anonymous Poll
16%
همین فرمون خوبه
56%
اختصاصی جنگو
18%
مهندسی نرم افزار
9%
سیستم دیزاین
👍9
ali_oauth2.pdf
644.1 KB
احراز هویت با oauth2 سرویس google در فریمورک جنگو
از علی بیگدلی

در پروژه های متفاوت بر حسب نیاز ممکن است بخواهید از مدل های مختلفی از پیاده سازی authentication و authorization استفاده نمایید که یکی از این روش ها استفاده از احراز با سرویس هایی همچون google و github و غیره است. اما معمولا دیده میشه به خاطر همچین ارتباط ساده ای دست به دامن ماژول های زیادی میشیم و به این نتیجه رسیدم که یکم این موضوع رو مختصر تر بهتون نشون بده.

در این اسلاید به نحوه پیاده سازی احراز هویت با استفاده از سرویس oauth2 google می پردازیم.
مسیر هایی که طی میشود:
- کلاس abstract برای پیاده سازی oauth2 سرویس دهنده ها
- ساخت google client مطابق با کلاس مادر
- اضافه کردن آدرس url مربوط به login و callback
- ساخت view ها برای ارسال درخواست به google و همچنین callback برای دریافت اطلاعات کاربری

برای استفاده از اسکریپت ها می تونین به لینک gist های من به آدرس زیر مراجعه کنین.

https://gist.github.com/AliBigdeli
👍161
Forwarded from Microfrontend.ir
در این ویدیو از پلی‌لیست نکته ها و ترفندهای پایتون به بررسی مدیریت پکیج‌های پایتون با استفاده از Poetry پرداختیم.
Poetry یک ابزار مدیریت وابستگی‌ها و پروژه‌های پایتون است که به شما کمک می‌کند تا به راحتی و به صورت مدرن با محیط توسعه وابسته‌های پروژه‌های خود را مدیریت کنید. این ابزار امکاناتی مانند مدیریت و نصب وابستگی‌ها، ساخت محیط‌های مجازی، مدیریت ورژن‌ها و ... را فراهم می‌کند.
در این ویدیو ابتدا برخی از مشکلات pip را بررسی و سپس Poetry را نصب و با آن یک پروژه ساختیم و در نهایت پروژه خودر PyPi منتشر کردیم

Link : https://youtu.be/UX5O7Z0aQb8

playlist: https://www.youtube.com/playlist?list=PLJ9zDGwhhsBwZcy2wRRBNqXZP8wf--TmF


〰️〰️〰️〰️〰️〰️
© @microfrontend_ir
5👍1
معرفی چند ویرایشگر متن (rich-text editor) در جنگو
از لینکدین علی بیگدلی

خیلی پیش میاد در پروژه هایی که مبتنی بر render هستش بخواید از یک ویرایشگر متن خیلی خوب برای تولید محتوا استفاده کنین. تمام ویرایشگر های متنی خصوصیت های مشترکی دارن منتهی بعضی هاشون توی ساز و کار جنگو بهتون قابلیت آپلود عکس و در کل کار با media ها رو هم فراهم می کنن و جایگاهشون خاص تر میشه.

البته شما می تونین بدون استفاده از این ماژول ها هم بر حسب نیازتون به صورت مستقیم از این ها ساتفاده کنین ولی خوب باید تنظیمات متفاوتی رو درش اعمال کنین که معمولا زمان بر هستش.

از جمله ویرایشگر های جنگو میشه به این ها اشاره کرد، البته فقط محدود به این ها نیستن:

- django-ckeditor
- django-froala-editor
- django-summernote
- django-quill
- django-tinymce

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

انتخاب خودم:
من به شخصه بیشتر از ckeditor استفاده می کنم به خصوص اینکه پشتیبانی از آپلود فایل رو هم داره
انتخاب خودم (جنگولرن): django-tinymce
👍8
ویدئوی مصاحبه ام با علی بیگدلی پیرامون طراحی فروشگاه اینترنتی با جنگو
در مورد موضوعات زیر صحبت شد:
-ساختار اپ ها
-درگاه های پرداخت
-بکاپ
-اولویت های طراحی
-فیلدهای بیس محصول
و مسائل دیگه
لینک:
لینک مکتب خونه

قبل از همه اینها. عیدتون مبارک 🎉🎉🎉
23
Forwarded from Python BackendHub (Mani)
تو جنگو هیچوقت از .save() خالی استفاده نکنید موقعه آپدیت کردن. چون هرچی تو مموری باشه فلاش میکنه به دیتابیس. پس بهتره explicit باشین و بگین چی میخواین فرستاده شه سمت دیتابیس. یک مثال عینی میزنم که متوجه شین یعنی چی این جمله.

ببین فکر کن یک مدل داری با ۳ تا فیلد

MyModel
- id
- first_name
- last_name

که دو تای پایینی nullable هستن. رکورد ایدی اول تو دیتابیس هم first name اش null هست هم last name اش. من ۲ درخواست همزمان میدم. درخواست اول first name رو مانی میکنم. درخواست دوم last name رو مظفر.
اتفاقی که میفته اینه که اول از دیتابیس MyModel رو میخونه جفت درخواستا. برای جفتشون first_name=None و last_name=None هست. بعد هرکدومشون همچین query ای میزنن:

درخواست اول:

// model.first_name = "Mani"
// model.save()
UPDATE MyModel
SET first_name = 'Mani', last_name = NULL
WHERE MyModel.id = 1



درخواست دوم:

// model.last_name = "Mozaffar"
// model.save()
UPDATE MyModel
SET first_name = NULL, last_name = 'Mozaffar'
WHERE MyModel.id = 1


دیدی چی شد؟ جفتشون یک NULL هم فرستادن سمت دیتابیس. چرا؟ چون تو مموری یکی از نام و نام خانوادگی null بود و وقتی .save رو میزنی همونو میفرسته به دیتابیس.
بنابراین یا first name نال میمونه یا last name. در صورتی که درستش اینه:


// req 2
UPDATE MyModel
SET last_name = 'Mozaffar'
WHERE MyModel.id = 1

// req 1
UPDATE MyModel
SET first_name = 'Mani'
WHERE MyModel.id = 1


معادل orm اش چی میشه؟

# req 1
MyModel.object.filter(id=instance.id).update(last_name="Mani")

# req 2
MyModel.object.filter(id=instance.id).update(last_name="Mozaffar")

# OR...
mymodel.save(update_fields=['first_name'])


@PyBackendHub
👍197👏1
سوال: چرا توی جنگو به app ها نیاز داریم؟ یا چه مواقعی اپ بسازیم؟

✔️یه نفر توی forum جنگو سوالاتی در این زمینه پرسیده و developer ها که از سازنده های جنگو هم هستن جواب دادن

لینک:
https://forum.djangoproject.com/t/why-do-we-need-apps/827
👍41👎1
Media is too big
VIEW IN TELEGRAM
نکاتی در مورد سشن و سریالایز در جنگو

بخشی از آپدیت جدید دوره فروشگاه اینترنتی با جنگو. این قسمت در مورد موارد زیر صحبت شد:
✔️سبد خرید
✔️دکوریتور required_post
✔️سریالایز و دی سریالایز چیه؟
✔️فرمت json چیه؟
✔️نکاتی در مورد سریالایزر کردن آبجکت ها در جنگو
✔️مشکل امنیتی pickle در پایتون
و غیره

لینک آپارات:
https://aparat.com/v/DWNam

هر انتقاد یا پیشنهادی به این قسمت دارید به @miladhzz پیام بدید
تشکر
👍5🔥2
چرا داکیومنت نویسی مهم می‌شه؟
از کانال @tobecomesoftwareengineer

فرض کنید ما میخوایم یه غذای خوشمزه طبخ کنیم. در پختن این غذا. نوع ادویه، ظرف مناسب، میزان مختلف مواد و ... اهمیت پیدا میکنه و ما باید یه جایی مستند شده اونا رو داشته باشیم و هم تغییری در فرمول غذا ایجاد شد که اون رو خوشمزه تر کرد، ما به شکل بصری داشته باشیم.

نرم افزار هم همینه. سیستم نرم افزاری ما قسمت های مختلفی داره، مثل کلاسهای مختلف و این کلاسها با هم ارتباط دارن و دارن با هم یه کاریو انجام میدن.
حالا فرض کنید ما یه سیستم نسبتا بزرگی داریم که پیچیدگی های خاص خودشو داره و این سیستم رو خیلی سال پیش با زبانی مثل perl پیاده کردن و الان با توجه به این که سیستم ما یه سیستم legacy محسوب میشه می‌خوان اون رو به زبان سیشارپ یا پایتون، باز-مهندسی کنن (re engineering).

اگر نرم افزار قدیمی داکیومنت نشده باشه طبیعتا این کار محاله و با مشکلات خیلی خیلی زیادی ما رو مواجه میکنه‌.
وجود یه شخصی که متخصص داکیومنت سازی نرم افزاره در هر شرکتی لازمه. چون هر بار که نرم افزار اپدیت میشه باید داکیومنت هم اپدیت شه.
داکیومنت نویسی طبیعتا در سطوح مختلفی از abstraction انجام میشه اما خب اون داکیومنت نویسی معتبره که خیلی concerete باشه یعنی ریز به ریز سیستم رو با جزئیات داکیومنت کرده باشه که صد البته یه تیم باید این کارو انجام بده چه از ابزار استفاده کنه و چه به شکل دستی کار رو تموم کنه.
معمولا با دونستن زبان UML و BPMN این کار شدنیه.
این دیاگرام ها در هنگام باز-مهندسی کردن سیستم قدیمی به شکل مهندسی-معکوس مورد استفاده قرار میگیرن و با ابزارهای تولید کد، کد نهایی رو تولید میکنن که با صرفه جویی زیادی در وقت و هزینه به تیم نرم افزاری کمک میکنن.
👍9
Forwarded from Python BackendHub
سلام!

مانی هستم, فاندر دو تا استارت آپ, از سال 2020 برنامه نویسی میکنم, از همون روز اول, از اولین تابعی که نوشتم برای پروژه استارت آپم بوده تا 2023. اواسط سال 2023 تصمیم گرفتم که کار شرکتی انجام بدم, برای همین الان تحت پوزیشن software engineer مشغول هستم.


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

تجربه پایتون خیلی زیادی ندارم, شاید خیلیا تجربه پایتونشون بیشتر باشه, اما تصمیم گرفتم همین تجارب کمم رو هم به اشتراک بذارم, امیدوارم مطالب کانال براتون مفید باشه و سمی نباشه 😅 کنار پایتون به web scraping و تست نویسی و اصول توسعه نرم افزار و بقیه بحث ها هم میپردازم, پس کانال فقط مربوط به پایتون نخواهد بود.

یوتیوب من:
https://www.youtube.com/@GitOverHere

لینکدین من:
https://www.linkedin.com/in/manimozaffar/

گیت هاب من:
https://github.com/manimozaffar


@ManifoldsPython
6👍4