Syntax | سینتکس – Telegram
Abstraction

هر ساله ماشین ها از نظر فنی کلی تغییر می کنن اما شخصی که با یک ماشین چند سال پیش رانندگی کرده باشه با ماشین الانم میتونه رانندگی کنه. اینجاست که abstraction باعث میشه این اتفاق بیوفته.
اومدن بصورت انتزاعی تعریف کردن که ماشین دنده داره، پدال گاز داره و فرمون داره و هر کدومشون به چه صورت عمل می کنن.

به همین دلیل با اینکه از نظر فنی و داخلی کلی تغییر میکنن اما طرز استفاده ازش تغییر خاصی نمیکنه.

بیاید یه مثال دیگه بزنیم:
فرض کنید شما یک وب سایت طراحی کردید. یه سری دکمه ها و قابلیت ها قرار دادید تا کاربر بتونه ازش استفاده کنه.
با اینکه سبد خرید برای کاربر همونه اما پشت صحنه کلی تغییر دادید و بروزرسانیش کردید.

همچنین شما هم برای طراحی وب سایت از یک سری ابزار ها استفاده کردید که این ابزار ها همش در حال بروز رسانی هستند اما نحوه استفاده شما تغییری نمیکنه.

به این مفهوم Abstraction میگن.

#OOP #Abstraction

@Syntax_fa
👍16👌4
کار گروهی و تیمی در شرکت ها

#Fun

@Syntax_fa
🤣31👍3
مینی دوره‌‌ آموزش پیشرفته جنگو

معرفی دوره:
https://youtu.be/bZacX-b_qtA?si=B8HEaettjHDQCrMZ

#Django

@Syntax_fa
🔥9👍5
مینی دوره‌‌ آموزش پیشرفته جنگو

ساختار پروژه:
https://youtu.be/hXQzbLjwCXU

#Django

@Syntax_fa
👍10
مینی دوره‌‌ آموزش پیشرفته جنگو

JWT Authentication:
https://youtu.be/ikEtYH6yy-Y

#Django

@Syntax_fa
👍9
مینی دوره‌‌ آموزش پیشرفته جنگو

Custom JSON response:
https://youtu.be/2b_5Xy5FJCA

#Django

@Syntax_fa
👍12
This media is not supported in your browser
VIEW IN TELEGRAM
شب همگی بخیر
🔥9👍3🤨2
مینی دوره آموزش پیشرفته جنگو

Log:

https://youtu.be/so_WF_AhbJs?si=joagkSZRledtsN2q

#Django

@Syntax_fa
👍5🔥2
مینی دوره آموزش پیشرفته جنگو

Interface:

https://youtu.be/KtQJUxKgcKA?si=965LNES0lc5y2hSL

#Django

@Syntax_fa
🔥4👍2
مینی دوره آموزش پیشرفته جنگو

پیاده سازی logging interface:

https://youtu.be/5FQG_qKlvwA?si=9zwVNWyCZwxUE7SS

#Django

@Syntax_fa
🔥4👍2
این بازی آنلاین جالب رو انجام بدید:
https://hamed.github.io/trust/
این بازی بر مبنای نظریه بازیها طراحی شده،
ببینید اگر در واقعیت اعتماد تکامل پیدا کنه، جامعه چجوری رشد میکنه...!
بهترین خروجی چیه؟
و اگه رو به خوبی و درستی و اعتماد پیش بریم، چه رفتارهایی در بلندمدت از بین میرن...

@Code_Crafters

#game

@Syntax_fa
👍13🌚1
مینی دوره آموزش پیشرفته جنگو

اضافه کردن seq datalust به پروژه:
https://youtu.be/TyWzBpOcNlY

#Django

@Syntax_fa
🔥6👍1
آیا زبون شما هم اینقدر عکسای باحال داره ؟

#Fun #Go

@Syntax_fa
😁14👍1
Dependency Inversion

در پست های قبل درباره یکی از اصول solid به اسم Open / Close توضیح دادیم.
در این پست به یکی دیگر از اصول solid یعنی Dependency Inversion می پریدازیم.

High level modules should not depend on low-level modules. Both should depend on abstractions.
ماژول های سطح بالا نباید به ماژول های سطح پایین وابسته باشند. بلکه هر دو باید به یک abstraction وابسه باشند(درباره abstraction چند پست بالاتر توضیح دادم)

بیاید یک مثال بزنیم. سرویس اکانت برای اینکه بتونه otp code رو ارسال کنه به سرویس sms وابسته است و نمیتواند بدون سرویس sms کار کند و ما هم نمیتوانیم این وابستگی را حذف کنیم. پس راه حل چیست؟

کاری که ما می کنیم این است اکانت رو بصورت مستقیم به سرویس sms وصل نمیکنیم بجاش از یک abstraction و قرارداد استفاده میکنیم. برای مثال میگیم سرویس اس ام اس یک متد به اسم send_sms داره که متن پیام و شماره موبایل رو میگیره و در نهایت فلان چیز رو به عنوان خروجی برمیگردونه.

از اون طرف سرویس اس ام اس هم باید قوانین abstraction رو پیاده سازی بکنه و این abstract ما هست که وسط این دو سرویس قرار میگیره.
در این صورت خیلی ساده می تونیم سرویسمون رو جایگزین کنیم.
حتی برای تست میتونیم یک سرویس به اسم dummy sms service بنویسم تا به راحتی تست هایمان را انجام دهیم و از همه مهم تر یک طراحی ماژولار داریم.

با اینکار ما اومدیم Dependency رو Inversion کردیم.

این یکی از مهم ترین اصول مهندسی نرم افزار است.

همچنین در دوره آموزش پیشرفته جنگو درباره interface توضیح داده شده است و در قسمت های بعدی برای استفاده از سرویس logger از این روش استفاده می کنیم.

#Dependency_inversion #Solid

@Syntax_fa
👍11