This media is not supported in your browser
VIEW IN TELEGRAM
خب الان دیگه رسما گیممون آمادست فقط یکم تغییر در رنگ لازم داره و دشمن ها ک رندوم بیان رو صفحه 🔪
@TorhamDevCH
@TorhamDevCH
😁2👍1👎1
خب یک بحثی بود که برنامه شما (فرض میگیریم بکاند ما) باید طوری باشه که به چیزی وابسته نباشه و اگه بخای بتونی راحت تغییرش بدی(کل بک اند نه ها، بخش ها اون بک اند) .
خب تا یک حد زیادی درسته، مثلا شما نباید همینطوری دیمی یک کتابخونه نصب کنید که کل بکاند و سورس بهش وابسته بشه، بعد یک سال بفهمید آخرین آپدیت کتابخونه برای ۲۰۰۳ عه :)
خب پس مورد اول میشه کتابخونهها که باید مراقبشون باشیم و تا جای ممکن خودمون وابسته بهش نکنیم.
یک سری نکات اینشکلی هست که تو کلیت پروژه باید رعایت بشه. موارد بعدی میره تو لایه دیزاین پروژه، برای مثال دیزاین شما بهتره تیکه تیکه و لایه لایه باشه. مثلا حداقل ایدهآل خورد کردن پروژه برای من ۳ لایه است.
۱. لایه دیتابیس
۲. لایه عملیات(بیزینس لاجیک)
۳. روتینگ
از لایه ۳ به ۱ میرم
لایه روتینگ وضیفش مسیر یابی، یعنی چی؟ یعنی آقا یک درخواست http که اومد این لایه درگیر میشه و تصمیم میگیره درخواست به کجا بره، و این درخواست رو میگیره تصمیم رو میگیره و به بخش خاصی از لایه ۲ یا همون عملیات میفرسته. مثلا درخواست "ساخت آبجکت" میاد و به بخش ساخت تو لایه عملیت میره
یعنی چی؟ یعنی هر وقت که دیتابیس عوض کنیم لایه عملیات و لایه روتر براشون مهم نیست اصلا :)، صرفا یک ایمپورته.
ولی خب باید api که دیتابیس در اختیار لایه دیگه میده تغییر نکنه و حتی اگه تغییر هم کنه لازم نیست کل سورس بترکونید همون جاهایی که از دیتابیس استفاده کرید تغییر میدید. تغییر کم میشه خلاصه :)
کل basic وظیفه فریمورکها روتینگ، یعنی درخواست http میگیره آبجکت میکنه بهتون میرسونه دیگه و جوابشو تحویل کاربر میده :)
برای همون اگه فریمورک منطقی داشته باشید که بیشتر از اینها خودش قاطی کار نکرده باشه خیلی راحت باید بتونید تعویضش کنید.
اینا نظرات و تجربهها من بود :)
@TorhamDevCH
خب تا یک حد زیادی درسته، مثلا شما نباید همینطوری دیمی یک کتابخونه نصب کنید که کل بکاند و سورس بهش وابسته بشه، بعد یک سال بفهمید آخرین آپدیت کتابخونه برای ۲۰۰۳ عه :)
خب پس مورد اول میشه کتابخونهها که باید مراقبشون باشیم و تا جای ممکن خودمون وابسته بهش نکنیم.
یک سری نکات اینشکلی هست که تو کلیت پروژه باید رعایت بشه. موارد بعدی میره تو لایه دیزاین پروژه، برای مثال دیزاین شما بهتره تیکه تیکه و لایه لایه باشه. مثلا حداقل ایدهآل خورد کردن پروژه برای من ۳ لایه است.
۱. لایه دیتابیس
۲. لایه عملیات(بیزینس لاجیک)
۳. روتینگ
از لایه ۳ به ۱ میرم
لایه روتینگ وضیفش مسیر یابی، یعنی چی؟ یعنی آقا یک درخواست http که اومد این لایه درگیر میشه و تصمیم میگیره درخواست به کجا بره، و این درخواست رو میگیره تصمیم رو میگیره و به بخش خاصی از لایه ۲ یا همون عملیات میفرسته. مثلا درخواست "ساخت آبجکت" میاد و به بخش ساخت تو لایه عملیت میره
from db import databaseحالا لایه عملیات برای بیشتر یا همه کارهاش نیاز به دیتابیس داره. و دیتابیس به عنوان یک ورودی میگیره.
@router.post("create/")
def create():
result = Opration.create(database)
return result
یعنی چی؟ یعنی هر وقت که دیتابیس عوض کنیم لایه عملیات و لایه روتر براشون مهم نیست اصلا :)، صرفا یک ایمپورته.
ولی خب باید api که دیتابیس در اختیار لایه دیگه میده تغییر نکنه و حتی اگه تغییر هم کنه لازم نیست کل سورس بترکونید همون جاهایی که از دیتابیس استفاده کرید تغییر میدید. تغییر کم میشه خلاصه :)
کل basic وظیفه فریمورکها روتینگ، یعنی درخواست http میگیره آبجکت میکنه بهتون میرسونه دیگه و جوابشو تحویل کاربر میده :)
برای همون اگه فریمورک منطقی داشته باشید که بیشتر از اینها خودش قاطی کار نکرده باشه خیلی راحت باید بتونید تعویضش کنید.
اینا نظرات و تجربهها من بود :)
@TorhamDevCH
😱139😐23❤6👏3👍2👎2🤔1
بچه ها من خیلی وقته لینک دونیت برداشتم، دلیلش هم اینه که به نظرم کار خاصی نمیکنم دیگه که دونیت بشم. اگه یک درصد فکر میکنید که مدیونید یا میخوایید دونیت کنید همون به یک نیازمند تو شهر بدید، یا باهاش بستنی بخرید بخورید :)
❤18👍1
This media is not supported in your browser
VIEW IN TELEGRAM
دقیقا ۳ سال و ۶ ماه پیش، داستان از اینجا شروع شد...
😁8❤🔥1
این ویدیو جادی خیلی جالب بود و یک ایده مسخره دیگه بهم داد ولی از اونجایی که مریض شدم حال ندارم انجامش بدم👍
https://youtu.be/yDU-0cN43eQ?si=gheWzBh5SEO1T5o0
@TorhamDevCH
https://youtu.be/yDU-0cN43eQ?si=gheWzBh5SEO1T5o0
@TorhamDevCH
YouTube
Writing and explaining "Image to Dice Pattern convertor"
Have you ever seen those portraits created by 1000s of dices and wondered HOW? In this session, we'll write a python noscript to generate the dice pattern based on an input image. We will see how a programmer thinks and will become familiar with the Pillow…
☃2
TorhamDev | تورهام 😳
حقیقتا میخواستم ریاضی گسسته بخونم برای امتحان. اما دیدم ۱ حجمش زیاده و من الکی وقت میزارم کل روز یکی از مباحثش یادبگیرم که شاید کلا ۱ سوال ازش بیاد. در نتیجه باخودم گفتم که من که همه واحدها رو افتادم. اینم روش :) به جاش چیکار میکنیم؟ میریم یک دوره asyncio…
۱۰ شدم ( ۱۰ داده در حقیقت)
so it wasn't a bad choice LOL
so it wasn't a bad choice LOL
🥴6🤷♀2🍾2⚡1
خب، یک چیز جالب که فهمیدم(قبلش نمیدونستم 🗿) رو این آقاعه که چشماش بسته است گفت.
بزارید از این ماجرا شروع کنم، تا حالا برای شما پیش اومده که بخوایید یک tuple رو این شکلی بنویسید ولی کار نکنه؟
و این اتفاق برای این میوفته که پایتون tuple هارو با ویرگول(،) میشناسه نه با پرانتز (این تیکه رو نمیدونستم)
در نتیجه پرانتز صرفا برای شفاف سازی حضور tuple هستش :)
و خوب دلیلش هم اینه که بعد با پرانتز میتونید اولويت هایی مثل opration ها ریاضی ضرب و تقسیم و .. با پرانتز مدریت کنید.
در نتیجه کد زیر هم درست کار میکنه.
@TorhamDevCH
بزارید از این ماجرا شروع کنم، تا حالا برای شما پیش اومده که بخوایید یک tuple رو این شکلی بنویسید ولی کار نکنه؟
a = (1)اتفاقی که میوفته اینه ک a مساوی با integer یک میشه نه tupleای که داخلش یک هست.
و این اتفاق برای این میوفته که پایتون tuple هارو با ویرگول(،) میشناسه نه با پرانتز (این تیکه رو نمیدونستم)
در نتیجه پرانتز صرفا برای شفاف سازی حضور tuple هستش :)
و خوب دلیلش هم اینه که بعد با پرانتز میتونید اولويت هایی مثل opration ها ریاضی ضرب و تقسیم و .. با پرانتز مدریت کنید.
در نتیجه کد زیر هم درست کار میکنه.
a = 1,و این یک tuple میده. نکته خفن تر ماجرا داخل unpacking کرد عه :)) که اون یک ماجرا جداست اگه این پست ۲۰ تا ریکشن 😱 بگیره اون هم مینویسم 😂
print(a)
@TorhamDevCH
😱34👍6🍾2👎1🌚1👻1😨1
TorhamDev | تورهام 😳
خب، یک چیز جالب که فهمیدم(قبلش نمیدونستم 🗿) رو این آقاعه که چشماش بسته است گفت. بزارید از این ماجرا شروع کنم، تا حالا برای شما پیش اومده که بخوایید یک tuple رو این شکلی بنویسید ولی کار نکنه؟ a = (1) اتفاقی که میوفته اینه ک a مساوی با integer یک میشه نه tupleای…
در پایتون شما هر iterator ای رو میتونید Unpack کنید. اما iterator چیه؟ و Unpacking یعنی چی؟
ساده بخام بگم هر آبجکتی که بشه رو حرکت کرد و دیتا گرفت iterator عه مثل لیست، دیکشنری، تاپل و ...
بهتر بخام بگم هر آبجکتی که متد
خب حالا unpacking کردن چیه؟ آنپک کردن یجورایی Map کردن محصوب میشه مثال زیر رو ببینید:
حالا که اینو میدونید بزاید نظر شمارو به چیز دیگه ای جلب کنم :)
مثال پایین رو ببینید:
نکته باحال و هیجان انگیز اینه که پایتون در اصل ورودی های فانشکن unpack میکنه و map میکنه به ورودی ها فانشکن :))) و یکی از دلایلی که نمیتونید بعد یک ورودی a=3 داخل فانشکن ورودی عادی بدون مقدار پاس بدید. چون دیگه نمیتونه unpack و map کنه :)
اگه چیز بیشتری در این باره میدونید تو کامنتها بگید🤝
این پست اگه 20 تا 🤯 بگیره پست بعدی میزارم😂(باج گیری)
@TorhamDevCH
ساده بخام بگم هر آبجکتی که بشه رو حرکت کرد و دیتا گرفت iterator عه مثل لیست، دیکشنری، تاپل و ...
بهتر بخام بگم هر آبجکتی که متد
iter و اگه اشتباه نکنم next رو داره.خب حالا unpacking کردن چیه؟ آنپک کردن یجورایی Map کردن محصوب میشه مثال زیر رو ببینید:
a, b, c = 1, 2, 3خب از پست قبلی میدونیم که پایتون با ویرگول(،) میاد tuple میسازه پس سمت راستِ مساو، یک tuple. حالا پایتون میاد این tuple رو آنپک میکنه و به متغییرها اون ورودی Map میکنه. دونه دونه و به ترتیب در نتیجه a میشه 1 و b میشه 2 و c میشه 3
حالا که اینو میدونید بزاید نظر شمارو به چیز دیگه ای جلب کنم :)
مثال پایین رو ببینید:
def test(*args):خروجی این کد چی میشه؟ اگه این کد اجرا کنیم خروجی مثل زیر باید بگیریم
print(args)
test(1, 2, 3)
(1, 2, 3)که آرهههه یک tuple عه :)))))
نکته باحال و هیجان انگیز اینه که پایتون در اصل ورودی های فانشکن unpack میکنه و map میکنه به ورودی ها فانشکن :))) و یکی از دلایلی که نمیتونید بعد یک ورودی a=3 داخل فانشکن ورودی عادی بدون مقدار پاس بدید. چون دیگه نمیتونه unpack و map کنه :)
اگه چیز بیشتری در این باره میدونید تو کامنتها بگید🤝
این پست اگه 20 تا 🤯 بگیره پست بعدی میزارم😂(باج گیری)
@TorhamDevCH
🤯31😁5👍1🌚1
Forwarded from جادی | Jadi
آی بی ام این امکان رو برای عموم فراهم کرده که با سیستم
IBM i
کار کنن. اگر دوست دارین توی این سایت اکانت باز کنین و درک وسیعتری از سیستم عامل ها پیدا کنین؛ به هرحال کار کردن روی پاور سیستم و امکان نوشتن سی و فرترن روش جالبه (:
https://pub400.com/
IBM i
کار کنن. اگر دوست دارین توی این سایت اکانت باز کنین و درک وسیعتری از سیستم عامل ها پیدا کنین؛ به هرحال کار کردن روی پاور سیستم و امکان نوشتن سی و فرترن روش جالبه (:
https://pub400.com/
Pub400
PUB400.COM - Your public IBM i server
Welcome to PUB400.COM -
Your public IBM i 7.5 server - A free and public Server running IBM i 7.5 for everyone
Your public IBM i 7.5 server - A free and public Server running IBM i 7.5 for everyone
🔥2👎1
TorhamDev | تورهام 😳
من ne بودم ولی تو eq میخواستی 😔💔
ماجرا این هم برمیگرده به دوتا فانشکن پایتون که ne و eq هستن که میتونید توضیح فانکشن eq تو این پست:
چطوری آبجکتی خلق کنیم که با همه چیز برابر باشه؟
و فانکشن en دقیقا برعکس eq عه. eq مخفف equal عه و زمانی ران میشه که از == در پایتون استفاده میکنیم و ne مخفف not equal که وقتی از != استفاده میکنیم اجرا میشه.
@TorhamDevCH
چطوری آبجکتی خلق کنیم که با همه چیز برابر باشه؟
و فانکشن en دقیقا برعکس eq عه. eq مخفف equal عه و زمانی ران میشه که از == در پایتون استفاده میکنیم و ne مخفف not equal که وقتی از != استفاده میکنیم اجرا میشه.
@TorhamDevCH
Telegram
TorhamDev | تورهام
چطوری در پایتون آبجکتی خلق کنیم که با همه چیز مساوی باشه؟!
قبل اینکه شروع کنیم بزارید برگردیم به اصل همه چیز یک آبجکت است در پایتون. طبق این اصل هر چیزی در پایتون یک آجکت در نتیجه تعداد متفاوتی متد داره. برای مثال وقتی شما جلو یک چیز در پایتون پرانتز باز…
قبل اینکه شروع کنیم بزارید برگردیم به اصل همه چیز یک آبجکت است در پایتون. طبق این اصل هر چیزی در پایتون یک آجکت در نتیجه تعداد متفاوتی متد داره. برای مثال وقتی شما جلو یک چیز در پایتون پرانتز باز…