Forwarded from کداکسپلور | CodeExplore (𝙰𝚖𝚒𝚗)
- سرعت: سریع میتونی پروژههای جدید رو راه بندازی.
- استاندارد بودن: همهی پروژههات یه ساختار و تنظیمات مشابه دارن.
- سفارشیسازی: میتونی تمپلیتهای مخصوص به خودت رو بسازی.
1. نصب Cookiecutter:
pip install cookiecutter
2. ایجاد پروژه جدید با استفاده از یه تمپلیت:
cookiecutter gh:cookiecutter/cookiecutter-pypackage
اینجا
gh: یعنی الگو از GitHub میاد و cookiecutter-pypackage هم اسم یه تمپلیت معروف واسه ساخت پکیجهای پایتون هست.#software #cookiecutter
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Forwarded from Go Casts 🚀
معرفی یه دوره ناب
چهار سال پیش به توصیه استاد عزیز مصطفی جان صولتی شروع کردم به دیدن دوره ویدیویی uncle bob
و نمیتونم بگم دیدن این دوره، حتی در حد ۱۰، ۱۵ جلسه اولش، چقدر به شما دید خوبی میده در مورد مسائل مختلف مهندسی نرم افزار
این دوره رو نبینید که نکاتش رو حفظ کنید، این دوره رو ببینید که از قدرت تحلیل بهره مند بشید.
اصلا مهم نیست چقدر uncle bob رو قبول دارید یا نه، و اصلا مهم نیست که در نهایت قبولش خواهید داشت یا نه، مهم اینه که شنیدن حرف هاش به عنوان یه برنامه نویس با تجربه به شما قدرت تحلیل میده، حتی اگه در نهایت خروجی تحلیل شما باهاش متفاوت بشه، مهم بهره مند شدن از قدرت تحلیل هست و نه خروجی تحلیل…
اون موقع وقت و حوصله بیشتر بود و نکته برداری میکردم و تحلیل میکردم، به همه تون دیدن این سری ویدیویی رو توصیه میکنم
https://cleancoders.com/library/all
توضیحات «دوره + تیمسازی بکند و گولنگ Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://t.iss.one/gocasts/515
@gocasts
#uncle_bob #clean_architecture #clean_code #software
چهار سال پیش به توصیه استاد عزیز مصطفی جان صولتی شروع کردم به دیدن دوره ویدیویی uncle bob
و نمیتونم بگم دیدن این دوره، حتی در حد ۱۰، ۱۵ جلسه اولش، چقدر به شما دید خوبی میده در مورد مسائل مختلف مهندسی نرم افزار
این دوره رو نبینید که نکاتش رو حفظ کنید، این دوره رو ببینید که از قدرت تحلیل بهره مند بشید.
اصلا مهم نیست چقدر uncle bob رو قبول دارید یا نه، و اصلا مهم نیست که در نهایت قبولش خواهید داشت یا نه، مهم اینه که شنیدن حرف هاش به عنوان یه برنامه نویس با تجربه به شما قدرت تحلیل میده، حتی اگه در نهایت خروجی تحلیل شما باهاش متفاوت بشه، مهم بهره مند شدن از قدرت تحلیل هست و نه خروجی تحلیل…
اون موقع وقت و حوصله بیشتر بود و نکته برداری میکردم و تحلیل میکردم، به همه تون دیدن این سری ویدیویی رو توصیه میکنم
https://cleancoders.com/library/all
توضیحات «دوره + تیمسازی بکند و گولنگ Go Casts» و تخفیف ۵۰ درصدی رو در این پست میتونید بخونید 👇
https://t.iss.one/gocasts/515
@gocasts
#uncle_bob #clean_architecture #clean_code #software
Forwarded from ⚝ (Amir Hossein "Amiria" Maher)
Linkedin
سلام به همگی :))
من حمیده هستم، عاشق معماری نرم فزار.
در این پست سعی… | Hamideh Alayi | 17 comments
من حمیده هستم، عاشق معماری نرم فزار.
در این پست سعی… | Hamideh Alayi | 17 comments
سلام به همگی :))
من حمیده هستم، عاشق معماری نرم فزار.
در این پست سعی دارم سیستم میکروسرویسی رو معرفی کنم که موازی با api gateway خودش یک rate limiter هم داره.
توی این مقاله هر کامپوننت رو ماژول مینامم و اول به معرفی تک تک ماژول ها میپردازم و سپس میگم چرا…
من حمیده هستم، عاشق معماری نرم فزار.
در این پست سعی دارم سیستم میکروسرویسی رو معرفی کنم که موازی با api gateway خودش یک rate limiter هم داره.
توی این مقاله هر کامپوننت رو ماژول مینامم و اول به معرفی تک تک ماژول ها میپردازم و سپس میگم چرا…
Forwarded from ⚝ (Amir Hossein "Amiria" Maher)
Linkedin
سلام من حمیده هستم و علاقمند به معماری نرم افزار در این پست سعی دارم یک… | Hamideh Alayi | 20 comments
سلام من حمیده هستم و علاقمند به معماری نرم افزار در این پست سعی دارم یک سیستم لاگ (گزارش) توزیع شده رو طراحی کنم.
طبق استاندارد های
ISO/IEC 27001
ISO/IEC 27002
NIST SP 800-92
NIST SP 800-53
GDPR Article 32
PCI DSS (Payment Card Industry Data Security Standard)…
طبق استاندارد های
ISO/IEC 27001
ISO/IEC 27002
NIST SP 800-92
NIST SP 800-53
GDPR Article 32
PCI DSS (Payment Card Industry Data Security Standard)…
Forwarded from ASafaeirad
X (formerly Twitter)
Alireza Safaierad (@ASafaeirad) on X
#رشتو
امروز تو مرحله آخر پرداخت به این صفحه از Ziggo برخوردم و میخوام دربارش صحبت کنم. (عکس ضمیمه)
برداشت اولیه من از این صفحه به زبان Dutch این بود که پرداخت موفقیت آمیز نبوده. برای اینکه مطمئن بشم صفحه رو ترجمه کردم و دیدم کاملا برعکس فهمیدمش!
🧵 ۱/۷…
امروز تو مرحله آخر پرداخت به این صفحه از Ziggo برخوردم و میخوام دربارش صحبت کنم. (عکس ضمیمه)
برداشت اولیه من از این صفحه به زبان Dutch این بود که پرداخت موفقیت آمیز نبوده. برای اینکه مطمئن بشم صفحه رو ترجمه کردم و دیدم کاملا برعکس فهمیدمش!
🧵 ۱/۷…
Forwarded from Ninja Learn | نینجا لرن
خب خب خب ارایه ها ⏸
تو پست قبلی گفتیم که آرایه یه ساختمان دادهی خطی هست که دادهها رو پشت سر هم توی حافظه نگه میداره. حالا یه حالت دیگه هم داریم که بهجای خود داده، آدرس (پوینتر) داده ذخیره میشه، که بهش لیست پیوندی میگیم و توی پستهای بعدی بهش میپردازیم.
چطوری یه آرایه بسازیم؟ 🤔
تو بیشتر زبانهای برنامهنویسی، آرایهها باید نوع دادهی یکسانی داشته باشن و معمولا موقع تعریف، نوع دادهشون مشخص میشه. اما تو پایتون این محدودیت وجود نداره و میتونیم آرایهای کاملا داینامیک بسازیم:
مثال از C/C++:
در واقع، لیستهای پایتون جایگزینی برای آرایهها هستن ولی برای راحتی، بهشون آرایه میگیم.
چطور به دادههای آرایه دسترسی داشته باشیم؟ 👀
در بیشتر زبانها این کار خودکار هندل میشه و میتونیم به کمک ایندکس دادهی موردنظرمون رو بخونیم:
ولی بهطور کلی، آدرس یک عنصر در حافظه اینجوری حساب میشه:
Loc = (سایز هر عنصر × ایندکس) + آدرس شروع آرایه
چطور مقدار آرایه رو تغییر بدیم؟ 🔄
🔹 اضافه کردن مقدار جدید:
🔹 حذف مقدار خاصی از آرایه:
🔹 تغییر مقدار یک خانه:
سرعت اجرای عملیاتها ⏳
🔹 خواندن یک مقدار از آرایه:
دسترسی به آرایهها با توجه به فرمول بالا O(1) یعنی ثابت هست، چون مستقیماً به آدرسش توی حافظه دسترسی داریم و با تغییر تعداد داده ها هیج تغییری ایجاد نمیشه.
🔹 اضافه و حذف کردن مقدار:
اگر مقدار رو به آخر آرایه اضافه یا حذف کنیم → O(1)
ولی اگر بخوایم مقدار رو از وسط یا اول آرایه حذف کنیم یا جابهجا کنیم، باید همهی مقدارهای بعدی هم جابجا شن که وابسته به تعداد ایتم هامون هست و هر چی بیشتر باشه سرعت پایینتری داریم → O(n)
جمعبندی ✍
✅ آرایه یه ساختار دادهی خطی برای ذخیره دادههای مشابهه.
✅ خواندن داده از آرایه خیلی سریع انجام میشه.
✅ اضافه/حذف مقدار زمانبر هست، مخصوصا اگر تعداد دادهها زیاد باشه.
✅ آرایه حافظهی از پیش تخصیص دادهشده داره، پس ممکنه فضای اضافی هدر بره.
توی پستهای بعدی میریم سراغ ساختارهای دیگه مثل لیست پیوندی.
➖➖➖➖➖➖➖➖➖
تو پست قبلی گفتیم که آرایه یه ساختمان دادهی خطی هست که دادهها رو پشت سر هم توی حافظه نگه میداره. حالا یه حالت دیگه هم داریم که بهجای خود داده، آدرس (پوینتر) داده ذخیره میشه، که بهش لیست پیوندی میگیم و توی پستهای بعدی بهش میپردازیم.
چطوری یه آرایه بسازیم؟ 🤔
تو بیشتر زبانهای برنامهنویسی، آرایهها باید نوع دادهی یکسانی داشته باشن و معمولا موقع تعریف، نوع دادهشون مشخص میشه. اما تو پایتون این محدودیت وجود نداره و میتونیم آرایهای کاملا داینامیک بسازیم:
my_array = [] # آرایه خالی در پایتون
مثال از C/C++:
int my_array[4]; // آرایهای از ۴ عدد صحیح
در واقع، لیستهای پایتون جایگزینی برای آرایهها هستن ولی برای راحتی، بهشون آرایه میگیم.
چطور به دادههای آرایه دسترسی داشته باشیم؟ 👀
در بیشتر زبانها این کار خودکار هندل میشه و میتونیم به کمک ایندکس دادهی موردنظرمون رو بخونیم:
my_array = [1, 2, 3]
print(my_array[2]) # خروجی: 3
ولی بهطور کلی، آدرس یک عنصر در حافظه اینجوری حساب میشه:
Loc = (سایز هر عنصر × ایندکس) + آدرس شروع آرایه
چطور مقدار آرایه رو تغییر بدیم؟ 🔄
🔹 اضافه کردن مقدار جدید:
my_array.append(4) # اضافه کردن مقدار ۴ به آخر آرایه
🔹 حذف مقدار خاصی از آرایه:
del my_array[2] # حذف مقدار سوم آرایه
🔹 تغییر مقدار یک خانه:
my_array[0] = 6 # مقدار اولین عنصر رو ۶ میکنیم
سرعت اجرای عملیاتها ⏳
🔹 خواندن یک مقدار از آرایه:
دسترسی به آرایهها با توجه به فرمول بالا O(1) یعنی ثابت هست، چون مستقیماً به آدرسش توی حافظه دسترسی داریم و با تغییر تعداد داده ها هیج تغییری ایجاد نمیشه.
🔹 اضافه و حذف کردن مقدار:
اگر مقدار رو به آخر آرایه اضافه یا حذف کنیم → O(1)
ولی اگر بخوایم مقدار رو از وسط یا اول آرایه حذف کنیم یا جابهجا کنیم، باید همهی مقدارهای بعدی هم جابجا شن که وابسته به تعداد ایتم هامون هست و هر چی بیشتر باشه سرعت پایینتری داریم → O(n)
جمعبندی ✍
✅ آرایه یه ساختار دادهی خطی برای ذخیره دادههای مشابهه.
✅ خواندن داده از آرایه خیلی سریع انجام میشه.
✅ اضافه/حذف مقدار زمانبر هست، مخصوصا اگر تعداد دادهها زیاد باشه.
✅ آرایه حافظهی از پیش تخصیص دادهشده داره، پس ممکنه فضای اضافی هدر بره.
توی پستهای بعدی میریم سراغ ساختارهای دیگه مثل لیست پیوندی.
#️⃣ #programming #software
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
Forwarded from Ninja Learn | نینجا لرن
class Subject:
def __init__(self):
self._observers = [] # لیست ناظرها
def attach(self, observer):
self._observers.append(observer)
def notify(self, message):
for observer in self._observers:
observer.update(message)
class Observer:
def __init__(self, name):
self.name = name
def update(self, message):
print(f"{self.name} received: {message}")
# تست کردن
subject = Subject()
observer1 = Observer("کاربر ۱")
observer2 = Observer("کاربر ۲")
subject.attach(observer1)
subject.attach(observer2)
subject.notify("پیام جدید اومد!")
Subject لیستی از ناظرها رو نگه میداره و با attach میتونین ناظر جدید اضافه کنین.وقتی notify صدا زده میشه، متد update همهی ناظرها اجرا میشه و پیام رو دریافت میکنن.
این الگو باعث میشه ارتباط بین اشیاء پویا و منعطف باشه.
🔍 چرا Design Patterns مهم هستن؟
کد تمیزتر:
با استفاده از الگوها، کدتون ساختارمند و قابلفهمتر میشه.
نگهداری آسونتر:
چون از راهحلهای استاندارد استفاده میکنین، بعداً تغییر دادن یا گسترش کد راحتتره.
ارتباط بهتر:
برنامهنویسها با اسم الگوها میتونن سریع منظور همدیگه رو بفهمن.
بهینهسازی زمان:
به جای اختراع دوبارهی چرخ، از راهحلهای تستشده استفاده میکنین.
✍ جمعبندی
Design Patterns مثل یه جعبهابزار برای برنامهنویسها هستن. این الگوها فقط یه بخش کوچیک از دنیای بزرگ Design Patterns هستن و تو کتاب Gang of Four، ۲۳ الگوی مختلف معرفی شده که هر کدوم کاربرد خاص خودشون رو دارن.
#️⃣ #programming #software
➖➖➖➖➖➖➖➖➖
🥷 CHANNEL | GROUP
Forwarded from Milwad Khosravi | میلاد خسروی
1. ایندکسگذاری (Indexing):
افزودن ساختارهای داده مثل B-Tree یا Hash برای سرعت بخشیدن به جستجو و کاهش نیاز به اسکن کامل جدول.
2. مقیاسپذیری عمودی (Vertical Scaling):
ارتقای سختافزار سرور (CPU قویتر، RAM بیشتر، دیسک سریعتر) برای افزایش توان پایگاه داده بدون تغییر معماری.
3. کش کردن (Caching):
ذخیرهسازی نتایج پرسوجوهای پرتکرار در حافظه (مثل Redis یا Memcached) برای کاهش بار روی دیتابیس.
4. شاردینگ (Sharding):
تقسیم دادهها بین چند پایگاه داده مستقل بر اساس کلید (مثلاً User ID) برای پخش بار و جلوگیری از تمرکز.
5. تکرار داده (Replication):
کپیکردن دادهها روی چند سرور (Master/Slave یا Primary/Replica) برای تحمل خطا و افزایش سرعت خواندن.
لایک و شیر کنید تا پارت دوم هم درست کنم❤️
#سیستم_دیزاین #مهندسی_نرم_افزار #دیتابیس #میلاد_خسروی #software_engineering #system_design
Please open Telegram to view this post
VIEW IN TELEGRAM