✔️ چند نفر توی لینکدین گفته بودن ابرآوران Status Checker خودش رو گذاشته پشت Cloudflare و بابتش کنایه زده بودن!
بهنظر میرسه بعضیها هنوز فلسفهی Status Page رو با سرویس اصلی قاطی میکنن. در حالی که پایهایترین اصل در SRE اینه که رصد وضعیت یک سرویس نباید وابسته به خود اون سرویس باشه.
کاملاً واضحه اگه Status Page روی همان زیرساخت سرویس اصلی قرار بگیره، با هر قطعی یا اختلال، خود Status Checker هم از دسترس خارج میشه.
در نتیجه هیچ گزارش مستقلی وجود نخواهد داشت. این دقیقاً ضد اصول Site Reliability Engineering است.
اینکه ابرآوران Status Page رو روی یک زیرساخت مستقل مثل Cloudflare قرار داده، نهتنها ضعف نیست، بلکه Best Practice جهانیه.
شرکت های Cloudflare، AWS، Google، GitHub و هزاران سرویس بزرگ دنیا دقیقاً همین طراحی رو دارن.
چون سرویس اصلی ممکنه داون بشه اما Status Page باید همیشه Up باشه.
پس Status Page باید بیرون از مسیر خطای سرویس ساخته بشه. وگرنه این کار مثل اینه که آژیر خطر یه ساختمان، برقش فقط از خود همون ساختمان تأمین بشه؛ اگه حادثه پیش بیاد و برق بره… خود آژیر هم خاموش میشه!
@Teachify | برنامه نویسی
بهنظر میرسه بعضیها هنوز فلسفهی Status Page رو با سرویس اصلی قاطی میکنن. در حالی که پایهایترین اصل در SRE اینه که رصد وضعیت یک سرویس نباید وابسته به خود اون سرویس باشه.
کاملاً واضحه اگه Status Page روی همان زیرساخت سرویس اصلی قرار بگیره، با هر قطعی یا اختلال، خود Status Checker هم از دسترس خارج میشه.
در نتیجه هیچ گزارش مستقلی وجود نخواهد داشت. این دقیقاً ضد اصول Site Reliability Engineering است.
اینکه ابرآوران Status Page رو روی یک زیرساخت مستقل مثل Cloudflare قرار داده، نهتنها ضعف نیست، بلکه Best Practice جهانیه.
شرکت های Cloudflare، AWS، Google، GitHub و هزاران سرویس بزرگ دنیا دقیقاً همین طراحی رو دارن.
چون سرویس اصلی ممکنه داون بشه اما Status Page باید همیشه Up باشه.
پس Status Page باید بیرون از مسیر خطای سرویس ساخته بشه. وگرنه این کار مثل اینه که آژیر خطر یه ساختمان، برقش فقط از خود همون ساختمان تأمین بشه؛ اگه حادثه پیش بیاد و برق بره… خود آژیر هم خاموش میشه!
@Teachify | برنامه نویسی
👍12
✔️ معرفی Antigravity – IDE جدید و انقلابی گوگل
گوگل با معرفی IDE جدید خودش به نام Antigravity نگاه تازهای به توسعه نرمافزار ارائه داده. این IDE بر پایه Agent طراحی شده و هوش مصنوعی فقط پیشنهاد نمیدهد، بلکه میتواند خودش برنامهریزی کند، کد بزند، اجرا کند، تست بگیرد و نتیجه را تحلیل کرده و مرحله بعد را انتخاب کند؛ مثل یک توسعهدهنده واقعی داخل محیط IDE.
ایجنت فقط متن تولید نمیکند و به ابزارها دسترسی مستقیم دارد. میتواند دستور در ترمینال اجرا کند، پروژه را در مرورگر تست بگیرد، اسکرینشات ثبت کند و همه این مراحل قابل بازبینی باشند؛ یعنی نتیجه عملی است، نه صرفاً تئوری.
همچنین Antigravity فقط محدود به Gemini 3 Pro نیست و امکان استفاده از مدلهایی مثل Claude Sonnet 4.5 و حتی مدلهای متنباز وجود دارد که آزادی بیشتری به تیمها میدهد.
این IDE به مرور از سبک کاری تیم یاد میگیرد و هرچه پروژه جلو برود، خروجیها هوشمندتر و شخصیتر میشوند.
https://antigravity.google/
@Teachify | برنامه نویسی
گوگل با معرفی IDE جدید خودش به نام Antigravity نگاه تازهای به توسعه نرمافزار ارائه داده. این IDE بر پایه Agent طراحی شده و هوش مصنوعی فقط پیشنهاد نمیدهد، بلکه میتواند خودش برنامهریزی کند، کد بزند، اجرا کند، تست بگیرد و نتیجه را تحلیل کرده و مرحله بعد را انتخاب کند؛ مثل یک توسعهدهنده واقعی داخل محیط IDE.
ایجنت فقط متن تولید نمیکند و به ابزارها دسترسی مستقیم دارد. میتواند دستور در ترمینال اجرا کند، پروژه را در مرورگر تست بگیرد، اسکرینشات ثبت کند و همه این مراحل قابل بازبینی باشند؛ یعنی نتیجه عملی است، نه صرفاً تئوری.
همچنین Antigravity فقط محدود به Gemini 3 Pro نیست و امکان استفاده از مدلهایی مثل Claude Sonnet 4.5 و حتی مدلهای متنباز وجود دارد که آزادی بیشتری به تیمها میدهد.
این IDE به مرور از سبک کاری تیم یاد میگیرد و هرچه پروژه جلو برود، خروجیها هوشمندتر و شخصیتر میشوند.
https://antigravity.google/
@Teachify | برنامه نویسی
❤9👍3👎1
✔️ کنترل همزمانی در تراکنشهای مالی و جلوگیری از Race Condition / Double Spending
در سرویسهای مالی، اگر چند درخواست برداشت همزمان به یک حساب برسد، هر دو موجودی را در یک لحظه میخوانند و هر دو تراکنش را تأیید میکنند؛ نتیجه: برداشت بیش از موجودی و ایجاد Double Spending.
برای جلوگیری از این اتفاق، از قفلگذاری Redis استفاده میشود:
این دستور چه میکند؟
🔸 NX
فقط اگر قفل قبلاً وجود نداشته باشد، ثبت میشود؛ یعنی تنها یک فرآیند قفل را میگیرد.
🔸 PX 10000
قفل بعد از ۱۰ ثانیه خودکار آزاد میشود تا Deadlock رخ ندهد.
🔸 unique_token
یک UUID که تضمین میکند فقط صاحب قفل بتواند آن را آزاد کند.
با این مکانیزم، عملیات حساس روی حساب بهصورت انحصاری انجام میشود و احتمال Double Spending از بین میرود.
@Teachify | برنامهنویسی
در سرویسهای مالی، اگر چند درخواست برداشت همزمان به یک حساب برسد، هر دو موجودی را در یک لحظه میخوانند و هر دو تراکنش را تأیید میکنند؛ نتیجه: برداشت بیش از موجودی و ایجاد Double Spending.
برای جلوگیری از این اتفاق، از قفلگذاری Redis استفاده میشود:
SET lock:user_id unique_token NX PX 10000
این دستور چه میکند؟
🔸 NX
فقط اگر قفل قبلاً وجود نداشته باشد، ثبت میشود؛ یعنی تنها یک فرآیند قفل را میگیرد.
🔸 PX 10000
قفل بعد از ۱۰ ثانیه خودکار آزاد میشود تا Deadlock رخ ندهد.
🔸 unique_token
یک UUID که تضمین میکند فقط صاحب قفل بتواند آن را آزاد کند.
با این مکانیزم، عملیات حساس روی حساب بهصورت انحصاری انجام میشود و احتمال Double Spending از بین میرود.
@Teachify | برنامهنویسی
👍8
✔️ آشنایی با متد کاربردی dict.fromkeys در پایتون
گاهی لازم است یک دیکشنری با مجموعهای از کلیدها بسازیم که همه مقادیر اولیه یکسان باشند. برای این کار، متد dict.fromkeys راهکاری سریع و استاندارد ارائه میدهد:
نکته مهم درباره مقادیر mutable
اگر مقدار اولیه از نوع mutable مثل لیست، دیکشنری یا set باشد، تمام کلیدها به یک آبجکت مشترک اشاره میکنند:
در این حالت، استفاده از dictionary comprehension پیشنهاد بهتری است.
متدهای مهم و رایج دیکشنریها در پایتون
@Teachify | برنامهنویسی
گاهی لازم است یک دیکشنری با مجموعهای از کلیدها بسازیم که همه مقادیر اولیه یکسان باشند. برای این کار، متد dict.fromkeys راهکاری سریع و استاندارد ارائه میدهد:
keys = ["a", "b", "c"]
d = dict.fromkeys(keys, 0)
print(d)
# خروجی: {'a': 0, 'b': 0, 'c': 0}
نکته مهم درباره مقادیر mutable
اگر مقدار اولیه از نوع mutable مثل لیست، دیکشنری یا set باشد، تمام کلیدها به یک آبجکت مشترک اشاره میکنند:
d = dict.fromkeys(["x", "y"], [])
d["x"].append(1)
print(d)
# خروجی: {'x': [1], 'y': [1]}
در این حالت، استفاده از dictionary comprehension پیشنهاد بهتری است.
متدهای مهم و رایج دیکشنریها در پایتون
get(key, default) → دریافت مقدار بدون خطاsetdefault(key, default) → ایجاد کلید در صورت عدم وجودupdate(mapping) → ادغام دو دیکشنریpop(key, default) → حذف کلید و بازگرداندن مقدارpopitem() → حذف آخرین کلید اضافهشدهkeys(), values(), items() → دسترسی به اجزای دیکشنری@Teachify | برنامهنویسی
❤1👍1
Forwarded from کالی بویز | ترفند | تکنولوژی (YOUSEF)
✔️ سوءاستفاده از بلکفرایدی در ایران!
این روزها همهمون شاهدیم که بعضی از فروشگاههای ایرانی با چه جسارتی مردم رو دست میاندازن و تخفیفهای ساختگی رو بهعنوان «بلکفرایدی» جا میزنن.
شما هم اینجوری باهاش حساب کنین:
اسم فروشگاه رو در گوگل جستوجو کنید. روی لینک اول، سهنقطهی سمت راستش رو بزنید و وارد گزینهی Feedback بشید.
از بین گزینهها، Irrelevant content رو انتخاب کنید.
در باکسی که ظاهر میشه، بنویسید:
و ارسالش کنید.
از بقیه هم بخواین همین کار رو انجام بدن. وقتی تعداد گزارشها بالا بره، گوگل فروشگاه رو ریپورت میکنه و رتبهش بهشدت سقوط میکنه. این بهترین راهه تا بفهمن نمیتونن با بیشرمی، نامردی و سوءاستفاده از اعتماد مردم ادامه بدن.
در نهایت، همیشه به یاد داشته باشیم:
پنیرِ مفت فقط تو تلهٔ موشه.
همه میدونیم کدوم فروشگاه ها رو باید ریپورت کنیم(توی عکس ها من با آمازون یاد دادم ولی به اشتباه نرید آمازون رو بزنید)🙏
این پست رو share کنید تا همه در جریان باشن.
@kaliboys | کالی بویز
این روزها همهمون شاهدیم که بعضی از فروشگاههای ایرانی با چه جسارتی مردم رو دست میاندازن و تخفیفهای ساختگی رو بهعنوان «بلکفرایدی» جا میزنن.
شما هم اینجوری باهاش حساب کنین:
اسم فروشگاه رو در گوگل جستوجو کنید. روی لینک اول، سهنقطهی سمت راستش رو بزنید و وارد گزینهی Feedback بشید.
از بین گزینهها، Irrelevant content رو انتخاب کنید.
در باکسی که ظاهر میشه، بنویسید:
scam shoppingو ارسالش کنید.
از بقیه هم بخواین همین کار رو انجام بدن. وقتی تعداد گزارشها بالا بره، گوگل فروشگاه رو ریپورت میکنه و رتبهش بهشدت سقوط میکنه. این بهترین راهه تا بفهمن نمیتونن با بیشرمی، نامردی و سوءاستفاده از اعتماد مردم ادامه بدن.
در نهایت، همیشه به یاد داشته باشیم:
پنیرِ مفت فقط تو تلهٔ موشه.
همه میدونیم کدوم فروشگاه ها رو باید ریپورت کنیم(توی عکس ها من با آمازون یاد دادم ولی به اشتباه نرید آمازون رو بزنید)🙏
این پست رو share کنید تا همه در جریان باشن.
@kaliboys | کالی بویز
👍21❤2👌1
✔️ تفاوت set و frozenset در پایتون
در پایتون، دو نوع ساختار برای کار با مجموعههای غیرتکراری وجود دارد: set و frozenset.
تفاوت اصلی آنها در قابلیت تغییر است:
▪️set (قابل تغییر – Mutable)
کاربرد: زمانی که دادهها در طول برنامه نیاز به بهروزرسانی دارند.
▪️frozenset (غیرقابل تغییر – Immutable)
کاربرد: دادههای ثابت و hashable
@Teachify | برنامه نویسی
در پایتون، دو نوع ساختار برای کار با مجموعههای غیرتکراری وجود دارد: set و frozenset.
تفاوت اصلی آنها در قابلیت تغییر است:
▪️set (قابل تغییر – Mutable)
s = {1, 2, 3}
s.add(4) #افزودن عنصر
s.remove(2) # حذف عنصر
print(s) # خروجی: {1, 3, 4}کاربرد: زمانی که دادهها در طول برنامه نیاز به بهروزرسانی دارند.
▪️frozenset (غیرقابل تغییر – Immutable)
fs = frozenset([1, 2, 3])
print(fs) # خروجی: frozenset({1, 2, 3})
# fs.add(4)
#خطا: frozenset قابل تغییر نیست
کاربرد: دادههای ثابت و hashable
weights = {frozenset(["سیب", "موز"]): 120}
key = frozenset(["موز", "سیب"])
print(weights[key]) # خروجی: 120@Teachify | برنامه نویسی
👍4❤2
✔️ حقیقتی که باید قبول کنیم
عزیزان ،
اگر صرفا یک Endpoint از OpenAI یا هر AI Service Provider دیگری را صدا میزنید و یک اتفاقی می افتد، شما از خدایان هوش مصنوعی نیستید - باور کنید شما اصلا چیز خاصی نیستید، شما در حال حرام شدن و یک استعداد کشف نشده نیستید، شما صرفا یک صدا کننده یک API هستید - زیاد خودتان را اذیت نکنید !! - کسی هم در هیچ کجای دنیا الاف این تخصص عجیب شما نیست - به همان CRUD ادامه بدهید - خبری هم از حقوق 800 هزار دلاری نیست - بشین سر جات دوست من !
پیروز باشید
@Teachify | #AliKolahdoozan
عزیزان ،
اگر صرفا یک Endpoint از OpenAI یا هر AI Service Provider دیگری را صدا میزنید و یک اتفاقی می افتد، شما از خدایان هوش مصنوعی نیستید - باور کنید شما اصلا چیز خاصی نیستید، شما در حال حرام شدن و یک استعداد کشف نشده نیستید، شما صرفا یک صدا کننده یک API هستید - زیاد خودتان را اذیت نکنید !! - کسی هم در هیچ کجای دنیا الاف این تخصص عجیب شما نیست - به همان CRUD ادامه بدهید - خبری هم از حقوق 800 هزار دلاری نیست - بشین سر جات دوست من !
پیروز باشید
@Teachify | #AliKolahdoozan
😁11👍7❤5
برنامه نویس های عزیز شما دلتون گرفتنی چیکار میکنید؟
👨💻14❤2
✔️ سطح توسعهدهنده، فقط کدنویسی نیست!
برنامه نویس Junior
کد میزنه تا برنامه فقط کار کنه.
برنامه نویس Mid-Level
کد رو تمیز و مرتب میکنه. میدونه:
هر چیزی که کار میکنه، لزوماً خوب نیست.
برنامه نویس Senior
میفهمه کی باید کد بزنه، کی نزنه و کی کد رو حذف کنه.
برنامه نویس Lead
اصلاً نمیذاره کد اشتباه نوشته بشه.
قبل از اجرا، مسئله رو درست تعریف میکنه.
حقیقت ساده ولی مهم:
هر چی جلوتر میری، کمتر کد میزنی
ولی مسئولیت تصمیمهات خیلی سنگینتر میشه.
تجربه فقط به سالها نیست؛
طرز فکر و تصمیمگیریه که سطح واقعی تو رو نشون میده.
@Teachify | برنامه نویسی
برنامه نویس Junior
کد میزنه تا برنامه فقط کار کنه.
برنامه نویس Mid-Level
کد رو تمیز و مرتب میکنه. میدونه:
هر چیزی که کار میکنه، لزوماً خوب نیست.
برنامه نویس Senior
میفهمه کی باید کد بزنه، کی نزنه و کی کد رو حذف کنه.
برنامه نویس Lead
اصلاً نمیذاره کد اشتباه نوشته بشه.
قبل از اجرا، مسئله رو درست تعریف میکنه.
حقیقت ساده ولی مهم:
هر چی جلوتر میری، کمتر کد میزنی
ولی مسئولیت تصمیمهات خیلی سنگینتر میشه.
تجربه فقط به سالها نیست؛
طرز فکر و تصمیمگیریه که سطح واقعی تو رو نشون میده.
@Teachify | برنامه نویسی
👍20❤1
✔️ چه بلایی سر MinIO اومده؟
تیم توسعه MinIO رسماً اعلام کرده است که نسخه متنباز MinIO وارد Maintenance Mode شده است.
- توسعه فعال نسخه Community متوقف شده است
- رفع مشکلات تنها برای باگهای امنیتی حیاتی انجام میشود
- افزودن قابلیتهای جدید یا بهبودهای عمده دیگر در نسخه متنباز ارائه نخواهد شد
- تمرکز تیم توسعه اکنون به سمت نسخه Enterprise با نام AIStor معطوف شده است
—> به عبارت دیگر، نسخه متنباز MinIO دیگر در حال رشد و توسعه فعال نیست و تنها برای اطمینان از ثبات و امنیت نگهداری میشود.
پیامدها برای کاربران:
_ پروژههایی که روی نسخه Community بنا شدهاند، ممکن است نیازمند بازبینی و برنامهریزی بلندمدت باشند
- انتشار باینریها و تصاویر رسمی Docker/Helm نسخه متنباز متوقف شده است
- مدیریت و تنظیمات پیشرفته UI به نسخه Enterprise منتقل شده است
جایگزینهای متنباز معتبر:
Ceph
SeaweedFS
Garage
Zenko
🔗 لینک رسمی پروژه: MinIO GitHub
@Teachify | برنامه نویسی
تیم توسعه MinIO رسماً اعلام کرده است که نسخه متنباز MinIO وارد Maintenance Mode شده است.
- توسعه فعال نسخه Community متوقف شده است
- رفع مشکلات تنها برای باگهای امنیتی حیاتی انجام میشود
- افزودن قابلیتهای جدید یا بهبودهای عمده دیگر در نسخه متنباز ارائه نخواهد شد
- تمرکز تیم توسعه اکنون به سمت نسخه Enterprise با نام AIStor معطوف شده است
—> به عبارت دیگر، نسخه متنباز MinIO دیگر در حال رشد و توسعه فعال نیست و تنها برای اطمینان از ثبات و امنیت نگهداری میشود.
پیامدها برای کاربران:
_ پروژههایی که روی نسخه Community بنا شدهاند، ممکن است نیازمند بازبینی و برنامهریزی بلندمدت باشند
- انتشار باینریها و تصاویر رسمی Docker/Helm نسخه متنباز متوقف شده است
- مدیریت و تنظیمات پیشرفته UI به نسخه Enterprise منتقل شده است
جایگزینهای متنباز معتبر:
Ceph
SeaweedFS
Garage
Zenko
🔗 لینک رسمی پروژه: MinIO GitHub
@Teachify | برنامه نویسی
💔2❤1
✔️ تفاوت repr و str در پایتون
متد repr:
نمایش رسمی و دقیق شیء
مخصوص برنامهنویس، دیباگ و لاگ
متد str:
نمایش کاربرپسند شیء
مخصوص خروجی برای کاربر نهایی
نکته مهم:
اگه str نباشه پایتون از repr استفاده میکنه.
@Teachify | برنامه نویسی
متد repr:
نمایش رسمی و دقیق شیء
مخصوص برنامهنویس، دیباگ و لاگ
متد str:
نمایش کاربرپسند شیء
مخصوص خروجی برای کاربر نهایی
class User:
def init(self, name):
self.name = name
def repr(self):
return f"User(name={self.name!r})"
def str(self):
return self.name
u = User("Yousef")
print(u) # Yousef
repr(u) # User(name='Yousef')`
نکته مهم:
اگه str نباشه پایتون از repr استفاده میکنه.
@Teachify | برنامه نویسی
❤6
✔️ 8 مدل LLM مناسب اجرا روی لوکال (دسامبر 2025)
1️⃣ Devstral-2-123B
بهترین برای برنامهنویسی
مخصوص توسعه نرمافزار، دیباگ، ریفکتور و ساخت Agent
2️⃣ MiniMax-M2
Agent + Coding + UI
مناسب فولاستک و پروتوتایپ سریع
3️⃣ GLM-4.5-Air
بهترین انتخاب کلی
روزمره، سریع و پایدار
4️⃣ Qwen3-VL-235B-A22B
متن + تصویر
بهترین مدل بینایی (VLM)
5️⃣ GLM-4.6 (REAPed)
استدلال قوی + کدنویسی پیشرفته
قدرت بالا در مسائل پیچیده
6️⃣ Nemotron-3-Nano-30B-A3B
سبک ولی قدرتمند
کیفیت بالا با مصرف کمتر
7️⃣ GPT-OSS-120B
GPT-5 روی سیستم خودت
Agent و Coding سنگین
8️⃣ GPT-OSS-20B
سریع و کممصرف
مناسب Automation و Tool Calling
@Teachify | برنامه نویسی
1️⃣ Devstral-2-123B
بهترین برای برنامهنویسی
مخصوص توسعه نرمافزار، دیباگ، ریفکتور و ساخت Agent
2️⃣ MiniMax-M2
Agent + Coding + UI
مناسب فولاستک و پروتوتایپ سریع
3️⃣ GLM-4.5-Air
بهترین انتخاب کلی
روزمره، سریع و پایدار
4️⃣ Qwen3-VL-235B-A22B
متن + تصویر
بهترین مدل بینایی (VLM)
5️⃣ GLM-4.6 (REAPed)
استدلال قوی + کدنویسی پیشرفته
قدرت بالا در مسائل پیچیده
6️⃣ Nemotron-3-Nano-30B-A3B
سبک ولی قدرتمند
کیفیت بالا با مصرف کمتر
7️⃣ GPT-OSS-120B
GPT-5 روی سیستم خودت
Agent و Coding سنگین
8️⃣ GPT-OSS-20B
سریع و کممصرف
مناسب Automation و Tool Calling
@Teachify | برنامه نویسی
❤6
✔️ داکر Hardened Images خود را بهصورت رایگان و متنباز منتشر شد
شرکت Docker اعلام کرده است که Docker Hardened Images (DHI) را برای استفادهی عمومی، بهصورت رایگان و Open Source در دسترس قرار داده است.
این ایمیجها با تمرکز بر امنیت زنجیره تأمین نرمافزار و کاهش سطح حمله طراحی شدهاند و ویژگیهای زیر را ارائه میدهند:
▪️ کاهش قابل توجه آسیبپذیریها (CVE) در مقایسه با Base Imageهای متداول
▪️ ساختار حداقلی و سبک (حذف ابزارها و پکیجهای غیرضروری در محیط Runtime)
▪️ ارائه SBOM شفاف و دسترسی کامل به اطلاعات اجزای ایمیج
▪️ مبتنی بر توزیعهای رایج Debian و Alpine با حداقل نیاز به تغییر در Dockerfile
این اقدام، استفاده از ایمیجهای امن و استاندارد را برای تیمهای توسعه، DevOps و پروژههای متنباز سادهتر کرده و میتواند به کاهش خطاهای امنیتی در CI/CD Pipeline کمک کند.
لازم به ذکر است که برخی امکانات پیشرفته مانند SLA برای Patchهای امنیتی سریعتر همچنان در پلنهای Enterprise ارائه میشوند.
@Teachify | برنامه نویسی
شرکت Docker اعلام کرده است که Docker Hardened Images (DHI) را برای استفادهی عمومی، بهصورت رایگان و Open Source در دسترس قرار داده است.
این ایمیجها با تمرکز بر امنیت زنجیره تأمین نرمافزار و کاهش سطح حمله طراحی شدهاند و ویژگیهای زیر را ارائه میدهند:
▪️ کاهش قابل توجه آسیبپذیریها (CVE) در مقایسه با Base Imageهای متداول
▪️ ساختار حداقلی و سبک (حذف ابزارها و پکیجهای غیرضروری در محیط Runtime)
▪️ ارائه SBOM شفاف و دسترسی کامل به اطلاعات اجزای ایمیج
▪️ مبتنی بر توزیعهای رایج Debian و Alpine با حداقل نیاز به تغییر در Dockerfile
این اقدام، استفاده از ایمیجهای امن و استاندارد را برای تیمهای توسعه، DevOps و پروژههای متنباز سادهتر کرده و میتواند به کاهش خطاهای امنیتی در CI/CD Pipeline کمک کند.
لازم به ذکر است که برخی امکانات پیشرفته مانند SLA برای Patchهای امنیتی سریعتر همچنان در پلنهای Enterprise ارائه میشوند.
@Teachify | برنامه نویسی
❤3👍3
✔️ نکته آموزشی پایتون | بررسی Reference و Copy
خروجی:
در پایتون، دستور زیر:
منجر به ایجاد یک کپی مستقل از لیست نمیشود؛
بلکه متغیر b تنها به همان شیءای اشاره میکند که a به آن متصل است.
به بیان دقیقتر، هر دو متغیر به یک reference مشترک در حافظه اشاره دارند.
در نتیجه، هرگونه تغییر روی لیست از طریق b، مستقیماً روی a نیز اعمال میشود.
■ در صورتی که نیاز به ایجاد یک کپی مستقل از لیست دارید، باید از یکی از روشهای زیر استفاده کنید:
در این حالت، تغییرات اعمالشده روی b تأثیری بر a نخواهند داشت.
a = [1, 2, 3]
b = a
b.append(4)
print(a)
خروجی:
[1, 2, 3, 4] در پایتون، دستور زیر:
b = a منجر به ایجاد یک کپی مستقل از لیست نمیشود؛
بلکه متغیر b تنها به همان شیءای اشاره میکند که a به آن متصل است.
به بیان دقیقتر، هر دو متغیر به یک reference مشترک در حافظه اشاره دارند.
در نتیجه، هرگونه تغییر روی لیست از طریق b، مستقیماً روی a نیز اعمال میشود.
■ در صورتی که نیاز به ایجاد یک کپی مستقل از لیست دارید، باید از یکی از روشهای زیر استفاده کنید:
b = a.copy()
# or
b = list(a)
# or
b = a[:]
در این حالت، تغییرات اعمالشده روی b تأثیری بر a نخواهند داشت.
لیستها در پایتون از نوع mutable هستند و عمل انتساب (=) تنها reference را منتقل میکند، نه خود داده را.@Teachify | برنامه نویسی
❤7👌1
✔️ سال نو میلادی مبارک
امیدوارم 2026 برای همهی ما ایرانیها، هر کجای دنیا که هستیم، سالی پر از آرامش، پیشرفت و خبرهای خوب باشه ❤️
@Teachify | برنامهنویسی
امیدوارم 2026 برای همهی ما ایرانیها، هر کجای دنیا که هستیم، سالی پر از آرامش، پیشرفت و خبرهای خوب باشه ❤️
@Teachify | برنامهنویسی
❤10☃2😁1
✔️ بهترین مهندسهای نرمافزار، تنبلترینها هستند
در ادبیات مهندسی نرمافزار، «تنبلی» بههیچوجه به معنای کمکاری یا بیمسئولیتی نیست؛
بلکه به نوعی تفکر بهینهمحور اشاره دارد.
مهندس نرمافزار «تنبل» فردی است که:
از انجام کارهای تکراری اجتناب میکند و به همین دلیل به سمت اتوماسیون بازاستفادهپذیری کد و طراحی ماژولار حرکت میکند.
تمایل ندارد زمان خود را صرف فهم مجدد کد کند، بنابراین به نامگذاری صحیح مستندسازی و خوانایی کد اهمیت ویژه میدهد.
علاقهای به رفع باگهای تکراری ندارد، پس از ابتدا به طراحی صحیح در نظر گرفتن edge caseها و نوشتن تست توجه میکند.
نتیجه چنین رویکردی، تولید نرمافزاری است که:
+ پایدارتر است
+ نگهداری آسانتری دارد
+ و در بلندمدت هزینه کمتری تحمیل میکند
بههمین دلیل است که در نگاه حرفهای،
«تنبلی» نه یک ضعف، بلکه یکی از نشانههای بلوغ مهندسی محسوب میشود.
همانطور که Larry Wall (خالق Perl) بیان میکند:
> سه فضیلت یک برنامهنویس: تنبلی، بیصبری و غرور
@Teachify | برنامهنویسی
در ادبیات مهندسی نرمافزار، «تنبلی» بههیچوجه به معنای کمکاری یا بیمسئولیتی نیست؛
بلکه به نوعی تفکر بهینهمحور اشاره دارد.
مهندس نرمافزار «تنبل» فردی است که:
از انجام کارهای تکراری اجتناب میکند و به همین دلیل به سمت اتوماسیون بازاستفادهپذیری کد و طراحی ماژولار حرکت میکند.
تمایل ندارد زمان خود را صرف فهم مجدد کد کند، بنابراین به نامگذاری صحیح مستندسازی و خوانایی کد اهمیت ویژه میدهد.
علاقهای به رفع باگهای تکراری ندارد، پس از ابتدا به طراحی صحیح در نظر گرفتن edge caseها و نوشتن تست توجه میکند.
نتیجه چنین رویکردی، تولید نرمافزاری است که:
+ پایدارتر است
+ نگهداری آسانتری دارد
+ و در بلندمدت هزینه کمتری تحمیل میکند
بههمین دلیل است که در نگاه حرفهای،
«تنبلی» نه یک ضعف، بلکه یکی از نشانههای بلوغ مهندسی محسوب میشود.
همانطور که Larry Wall (خالق Perl) بیان میکند:
> سه فضیلت یک برنامهنویس: تنبلی، بیصبری و غرور
@Teachify | برنامهنویسی
👍7❤4
سلام…
این مدت خیلی چیزها عادی نبود.
خیلیها سخت گذروندن، خیلیها داغ دیدن،
و بعضیها دیگه بین ما نیستن…
اگه تو این روزها عزیزی رو از دست دادید،
واقعاً تسلیت میگم.
هیچ کلمهای جای خالی آدمها رو پر نمیکنه،
فقط امیدوارم دردتون سبکتر بشه.
@Teachify | برنامه نویسی
این مدت خیلی چیزها عادی نبود.
خیلیها سخت گذروندن، خیلیها داغ دیدن،
و بعضیها دیگه بین ما نیستن…
اگه تو این روزها عزیزی رو از دست دادید،
واقعاً تسلیت میگم.
هیچ کلمهای جای خالی آدمها رو پر نمیکنه،
فقط امیدوارم دردتون سبکتر بشه.
@Teachify | برنامه نویسی
❤17💔9🕊3👎1