Syntax | سینتکس
Открыть в Telegram
Focus: Web Lan: Python & Go Website: https://syntaxfa.ir Quick connect: https://quick-connect.syntaxfa.ir Github: https://github.com/syntaxfa Group: https://t.me/Syntax_fa_group
Больше3 261
Подписчики
+324 часа
+107 дней
-130 дней
Архив постов
3 261
تاحالا درباره اینکه چجوری تو زبان برنامه نویسیتون یه عدد رندوم میسازید فکر کردید؟
همونطور که میدونیم در کامپیوتر چیزی به عنوان تصادفی نداریم پس چطور عدد های رندوم ساخته میشن؟
پیشنهاد میدم یکی از این دو مقاله رو بخونید:
https://virgool.io/javacup/random-generate-jnwpgxv84hgf
https://www.freecodecamp.org/news/random-number-generator/
#Random
@Syntax_fa
3 261
مینی دوره آموزش پیشرفته جنگو
پیاده سازی لاگر seq:
https://youtu.be/m44OhEaZ-is?si=-FeCt59-_iD2BAx1
#Django #logger
@Syntax_fa
3 261
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 رو Dependency Inversion کردیم.
این یکی از مهم ترین اصول مهندسی نرم افزار است.
همچنین در قسمت interface از دوره آموزش پیشرفته جنگو درباره interface توضیح داده شده است و در قسمت های بعدی برای استفاده از سرویس logger از روش استفاده می کنیم.
#Dependency_inversion #Solid
@Syntax_fa
3 261
مینی دوره آموزش پیشرفته جنگو
اضافه کردن seq datalust به پروژه:
https://youtu.be/TyWzBpOcNlY
#Django
@Syntax_fa
3 261
این گیم رو هم یکی از اعضا معرفی کرد. برای یادگیری ترمینال لینوکس مفیده
https://web.mit.edu/mprat/Public/web/Terminus/Web/main.html
#Game
@Syntax_fa
3 261
این بازی آنلاین جالب رو انجام بدید:
https://hamed.github.io/trust/
این بازی بر مبنای نظریه بازیها طراحی شده،
ببینید اگر در واقعیت اعتماد تکامل پیدا کنه، جامعه چجوری رشد میکنه...!
بهترین خروجی چیه؟
و اگه رو به خوبی و درستی و اعتماد پیش بریم، چه رفتارهایی در بلندمدت از بین میرن...
@Code_Crafters
@Syntax_fa
3 261
مینی دوره آموزش پیشرفته جنگو
پیاده سازی logging interface:
https://youtu.be/5FQG_qKlvwA?si=9zwVNWyCZwxUE7SS
#Django
@Syntax_fa
3 261
مینی دوره آموزش پیشرفته جنگو
Interface:
https://youtu.be/KtQJUxKgcKA?si=965LNES0lc5y2hSL
#Django
@Syntax_fa
3 261
مینی دوره آموزش پیشرفته جنگو
Custom JSON response:
https://youtu.be/2b_5Xy5FJCA
#Django
@Syntax_fa
3 261
مینی دوره آموزش پیشرفته جنگو
JWT Authentication:
https://youtu.be/ikEtYH6yy-Y
#Django
@Syntax_fa
3 261
مینی دوره آموزش پیشرفته جنگو
معرفی دوره:
https://youtu.be/bZacX-b_qtA?si=B8HEaettjHDQCrMZ
#Django
@Syntax_fa
3 261
Abstraction
هر ساله ماشین از نظر داخلی کلی تغییر می کنن اما شخصی که با یک ماشین چند سال پیش رانندگی کرده باشه با ماشین الانم میتونه رانندگی کنه. اینجاست که abstraction باعث میشه این اتفاق بیوفته.
اومدن بصورت انتزاعی تعریف کردن که ماشین دنده داره، پدال گاز داره و فرمون داره و هر کدومشون به چه صورت عمل می کنن.
به همین دلیل با اینکه از نظر فنی و داخلی کلی تغییر میکنن اما طرز استفاده ازش تغییر خاصی نمیکنه.
بیاید یه مثال دیگه بزنیم:
فرض کنید شما یک وب سایت طراحی کردید. یه سری دکمه ها و قابلیت ها قرار دادید تا کاربر بتونه ازش استفاده کنه.
پشت صحنه با اینکه ثبت خرید برای کاربر همونه اما کلی تغییر دادید و بروزرسانیش کردید.
همچنین شما هم برای طراحی وب سایت از یک سری ابزار ها استفاده کردید که این ابزار ها همش در حال بروز رسانی هستند اما نحوه استفاده شما تغییری نمیکنه.
به این مفهوم Abstraction میگن.
#OOP #Abstraction
@Syntax_fa
3 261
حالا که با مثالی ساده با شی گرایی آشنا شدیم برای encapsulation و abstraction مثال های کاربردی تری رو بزنیم.
Encapsulation
بعضی وقتا نیازه که ما یک سری ویژگی ها و متد هایی رو تعریف کنیم اما از بیرون قابل دسترس نباشه.
مثلا attribute به اسم score داریم که امتیاز رو نگه میداریم. بقیه قسمت های کد نباید بصورت مستقیم بتونن مقدار score رو تغییر بدن پس میایم socre رو مخفی می کنیم تا از بیرون دسترسی نداشته باشن و برای تغییر دادن socre یک متد به اسم increase_score می نویسیم که هربار صدا زده بشه به امتیاز کاربر اضافه بشه.
به اینکار encapsulation میگیم.
#OOP #Encapsulation
@Syntax_fa
3 261
شی گرایی
قراره با یه سری مثال از دنیای واقعی شی گرایی رو براتون توضیح بدم.
ما موجودی داریم به اسم گربه (class) که این موجود ویژگی (Attribute) و رفتار (Method) هایی رو داره. برای مثال گربه ویژگی هایی مثل رنگ چشم، وزن و ... داره. همچنین رفتار هایی رو داره مثل راه رفتن، میو میو کردن.
خب تا الان گربه رو به صورت انتزاعی گفتیم که فلان ویژگی ها و رفتار هارو داره.
به یک نمونه واقعی از گربه object و یا instance میگیم.
گربه خودش از یک کلاس والد ارث بری (Inheritance) کرده. مثلا کلاسی داریم به اسم حیوان. کلاس حیوان یه سری ویژگی ها و رفتار هایی رو داره. حالا که گربه از کلاس حیوان ارث بری کرده رفتار ها و ویژگی های والدش رو ارث میگیره.
خب اینجا یه سوالی پیش میاد! ما کلی موجود داریم که کلاس والدشون حیوان هستش ولی آیا همشون شبیه به همدیگه رفتار می کنن؟ برای مثال همشون یه شکلی راه میرن و صدا در میارن؟
جواب قطعا خیر هستش. اینجاس که چند ریختگی (Polymorphism) اتفاق میوفته. درسته که هم سگ و هم گربه صدا دارن ولی یکیش میو میکنه یکیش هاپ هاپ
ادامه توضیح پست بعد
#OOP
@Syntax_fa
3 261
یک موضوع کوچیک رو باهم بررسی کنیم
واسه بچههایی که با داکر کار میکنن گرفتن ایمیجهای داکر همیشه براشون یک چالش و دردسر هست تو ایران
سوا ازینکه داکر مارو تحریم کرده بحث فیلترینگ هم گاها اذیت کننده میشه و موارد مربوط اذیت کننده میشه
راهکار بچهها چیه راه اندازی فیلترشکن یا استفاده از سرویس شکن و 403 و docker.ir هستش که بازم دردسرهای خاص خود مثه پایین بودن سرعت این وسط رخ میده یا سردرگم کننده بودن اذیت شدن واسه کانفیگ کردنشون
راهکار بهتر که همه موارد بالا رو هندل میکنه این هست که ایمیجها رو از یک منبع داخلی بگیریم که اینجا ابرآروان گزینه بهتری به نظر میاد چرا؟؟؟
اول اینکه فیلتر نیست و حمایت خوبی داره
نیاز به کانفیگ چیز خاصی نداریم
سرعتش بالاست
نرخ مصرف اینترنت هم داخلی محسوب میشه
فقط کافیه به قبل از اسم ایمیجتون عبارت زیر رو اضافه کنید
docker.arvancloud.ir/
چندتا نمونه بهتون بگم
docker pull docker.arvancloud.ir/python:3.10
docker pull docker.arvancloud.ir/postgres:latest
حالا اگه ایمیجهاتون رو نگاه کنید اون هارو میبینید اگه بخوایم اسمشون تغییر بدیم هم دستور زیر رو بزنید
docker tag docker.arvancloud.ir/python:3.10 python:3.10
حالا اگه ایمیجهاتون رو نگاه کنید یک نسخه python:3.10 هم دارید
docker images
#k8s
@code_crafters
@Syntax_fa