Forwarded from TorhamDev | تورهام 😳 (TORI(";(")
تاپلها همیشه immutable نیستند!
قالب ما tupleها رو یک دیتااستراکچر immutable یا تغییر ناپذیر میشناسیم. immutable یعنی اگر یک تایپ ساخته بشه هیچ وقت قابل تغییر نخواهد بود.
یا تغریف دیکنشنری:
unchanging over time or unable to be changed.
در پایتون هم اگر شما یک tuple رو یک بار تعریف کنید دیگه قابل تغییر نیست. برای مثال:
خب پس تاپل غیر قابل تغییر. اما یک نکته مهم درباره غیر قابل تغییر بودن تاپل ها وجود داره و اونم اینه که با اینکه خود تاپل غیر قابل تغییر یا immutble هست محتوا داخل اون قابل تغییر D:
به این مثال دقت کنید:
همینطور که میبینید ما تونستیم محتوا لیستی که داخل این تاپل بود تغییر بدیم. پس اگر یک دیتا تایپ mutable داخل تاپل داشته باشیم تاپل ما میتونه تغییر کنه. اما سایز یا lenght تاپل هیچ وقت تغییر نمیکنه.
تمام اینها به یک نکته جالب میرسه. ما میدونیم تنها چیزهایی میتونن hash بشند در پایتون که غیر قابل تغییر باشن و تنها چیزهایی که میتونن hash بشند میتونن به عنوان کلید یک دیکشنری استفاده بشن. برای مثال:
اما اگر ما از یک mutable داخل این تایپل استفاده کنیم از اونجایی که این تاپیل حالا میتونه تغییر پیدا کنه قابل hash شدن نیست و در نتیجه نمیتونه به عنوان کلید دیکششنری استفاده بشه:
این نکته گاهی میتونه به slient bug برسه و یک جایی به مشکل بخوره D:
@TorhamDevCH
قالب ما tupleها رو یک دیتااستراکچر immutable یا تغییر ناپذیر میشناسیم. immutable یعنی اگر یک تایپ ساخته بشه هیچ وقت قابل تغییر نخواهد بود.
یا تغریف دیکنشنری:
unchanging over time or unable to be changed.
در پایتون هم اگر شما یک tuple رو یک بار تعریف کنید دیگه قابل تغییر نیست. برای مثال:
>>> a = (1, 2, 3)
>>> a[1]="new value"
Traceback (most recent call last):
File "<python-input-3>", line 1, in <module>
a[1]="new value"
~^^^
TypeError: 'tuple' object does not support item assignment
>>>
خب پس تاپل غیر قابل تغییر. اما یک نکته مهم درباره غیر قابل تغییر بودن تاپل ها وجود داره و اونم اینه که با اینکه خود تاپل غیر قابل تغییر یا immutble هست محتوا داخل اون قابل تغییر D:
به این مثال دقت کنید:
>>> a = (1, 2, ["first"])
>>> a
(1, 2, ['first'])
>>> a[2].append("second")
>>> a
(1, 2, ['first', 'second'])
>>>
همینطور که میبینید ما تونستیم محتوا لیستی که داخل این تاپل بود تغییر بدیم. پس اگر یک دیتا تایپ mutable داخل تاپل داشته باشیم تاپل ما میتونه تغییر کنه. اما سایز یا lenght تاپل هیچ وقت تغییر نمیکنه.
تمام اینها به یک نکته جالب میرسه. ما میدونیم تنها چیزهایی میتونن hash بشند در پایتون که غیر قابل تغییر باشن و تنها چیزهایی که میتونن hash بشند میتونن به عنوان کلید یک دیکشنری استفاده بشن. برای مثال:
>>> a = (1, 2)
>>> {a:"a as the key"}
{(1, 2): 'a as the key'}
>>>
اما اگر ما از یک mutable داخل این تایپل استفاده کنیم از اونجایی که این تاپیل حالا میتونه تغییر پیدا کنه قابل hash شدن نیست و در نتیجه نمیتونه به عنوان کلید دیکششنری استفاده بشه:
>>> a = (1, [2, 3])
>>> {a: "a as the key"}
Traceback (most recent call last):
File "<python-input-14>", line 1, in <module>
{a: "a as the key"}
TypeError: unhashable type: 'list'
>>>
این نکته گاهی میتونه به slient bug برسه و یک جایی به مشکل بخوره D:
@TorhamDevCH
امروز یکی از بزرگترین روز ها برای اردبیل بود ...
روزی که اردبیل برای اولین بار کمیته تخصصی هوش مصنوعی رو گذاشت
و من خواب موندم و به کمیته نرسیدم😑
روزی که اردبیل برای اولین بار کمیته تخصصی هوش مصنوعی رو گذاشت
و من خواب موندم و به کمیته نرسیدم😑
🔥1
Forwarded from Milad Nouri(ツ) میلاد نوری
ظاهرا یوتوب نحوه تشخیص موقعیت مکانی (لوکیشن) کاربرها رو تغییر داده و موقعیت بازدید کننده بسیاری از کانالهای ایرانی، علیرغم استفاده از ویپیان، ایران تشخیص داده شده و با توجه به تحریم و... یوتوب بابت بازدیدکنندههای ایرانی درآمد (سهمی از نمایش تبلیغات) به مالک کانال پرداخت نمیکند.
این موضوع باعث کاهش درآمد خیلی از یوتوبرهای ایرانی خواهد شد.
البته این کاهش درآمد، با رفع فیلتر یوتوب هم اتفاق میافتاد و اجتناب ناپذیر بود.
به همین دلیل برخی یوتوبرها از ادامه فیلتر بودن یوتوب استقبال میکردند که قبلا در موردش اینجا نوشته بودم.
در واقع تحریم، فیلترینگ و اینترنت گرانِ بیکیفیت هر سه در کاهش شدید کسب درآمد مستقیم از یوتوب نقش دارند و هر سه این موارد باعث شده این فرصت و پتانسیل هم مثل خیلی موارد دیگر برای کاربرهای ایرانی از بین برود.
امیدوارم روزی هر سه این موارد رفع شوند و کاربرهای ایرانی هم خیلی عادی مثل همه کاربرهای دنیا بتوانند از یوتوب و هر سرویس دیگری استفاده کنند.
🖥 @MiladNouriChannel
ظاهرا یوتوب نحوه تشخیص موقعیت مکانی (لوکیشن) کاربرها رو تغییر داده و موقعیت بازدید کننده بسیاری از کانالهای ایرانی، علیرغم استفاده از ویپیان، ایران تشخیص داده شده و با توجه به تحریم و... یوتوب بابت بازدیدکنندههای ایرانی درآمد (سهمی از نمایش تبلیغات) به مالک کانال پرداخت نمیکند.
این موضوع باعث کاهش درآمد خیلی از یوتوبرهای ایرانی خواهد شد.
البته این کاهش درآمد، با رفع فیلتر یوتوب هم اتفاق میافتاد و اجتناب ناپذیر بود.
به همین دلیل برخی یوتوبرها از ادامه فیلتر بودن یوتوب استقبال میکردند که قبلا در موردش اینجا نوشته بودم.
در واقع تحریم، فیلترینگ و اینترنت گرانِ بیکیفیت هر سه در کاهش شدید کسب درآمد مستقیم از یوتوب نقش دارند و هر سه این موارد باعث شده این فرصت و پتانسیل هم مثل خیلی موارد دیگر برای کاربرهای ایرانی از بین برود.
امیدوارم روزی هر سه این موارد رفع شوند و کاربرهای ایرانی هم خیلی عادی مثل همه کاربرهای دنیا بتوانند از یوتوب و هر سرویس دیگری استفاده کنند.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Milad Nouri(ツ) میلاد نوری
Milad Nouri(ツ) میلاد نوری
ظاهرا یوتوب نحوه تشخیص موقعیت مکانی (لوکیشن) کاربرها رو تغییر داده و موقعیت بازدید کننده بسیاری از کانالهای ایرانی، علیرغم استفاده از ویپیان، ایران تشخیص داده شده و با توجه به تحریم و... یوتوب بابت بازدیدکنندههای ایرانی درآمد (سهمی از نمایش تبلیغات)…
خیلیها نگران اینن با کاهش درآمد یوتوبرها از تبلیغات خود یوتوب، تولید محتوا کمتر بشه.
مگر تولید کنندههای محتوای ایرانی از اینستاگرام درآمد دارند؟ محتوای خوب و با کیفیت (از نظر محتوا) در اینستاگرام کم نیست.
کسب درآمد از تبلیغات خود یوتوب هم تنها راه درآمدزایی در یوتوب نیست.
کانالهای دارای محتوای با کیفیت اسپانسر میگیرند (مثل وضعیت فعلی پادکستها)، از طریق حمایت مالی و دونیشن کسب درآمد خواهند کرد و...
ضمن اینکه کسب درآمد هم تنها انگیزه و دلیل تولید محتوا نیست.
🖥 @MiladNouriChannel
مگر تولید کنندههای محتوای ایرانی از اینستاگرام درآمد دارند؟ محتوای خوب و با کیفیت (از نظر محتوا) در اینستاگرام کم نیست.
کسب درآمد از تبلیغات خود یوتوب هم تنها راه درآمدزایی در یوتوب نیست.
کانالهای دارای محتوای با کیفیت اسپانسر میگیرند (مثل وضعیت فعلی پادکستها)، از طریق حمایت مالی و دونیشن کسب درآمد خواهند کرد و...
ضمن اینکه کسب درآمد هم تنها انگیزه و دلیل تولید محتوا نیست.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
🔶 یوتیوبر BridgeMind کانالی راهاندازی کرده است که در آن ویدئو هایی درباره این موضوع منتشر می کند که یک مهندس نرم افزار چگونه به صورت عملی با هوش مصنوعی کار میکند و تمرکز محتوای این کانال بر توسعه واقعی محصولات مبتنی بر هوش مصنوعی، فرآیند تصمیم گیری فنی، ساخت MVP، و تبدیل ایده به محصول قابل درآمد است.
هدفگذاری BridgeMind رسیدن به درآمد یک میلیون دلاری از طریق توسعه و تجاریسازی اپلیکیشنهای مبتنی بر هوش مصنوعی است؛ مسیری که به صورت شفاف و مرحله به مرحله در قالب ویدئوها مستند سازی میشود.
این کانال بیشتر از آنکه آموزشی صرف باشد، یک روایت واقعی از مسیر ساخت محصول، آزمون و خطا و تفکر یک مهندس نرمافزار در دنیای هوش مصنوعی است.
پ.ن : برخی برنامه نویسان با این شیوهی کار با هوش مصنوعی مخالف هستند و معتقدند که هیچ تضمینی وجود ندارد استفاده گسترده از هوش مصنوعی لزوماً منجر به تبدیل شدن فرد به یک مهندس نرمافزار بهتر شود.
از نگاه آن ها، تکیه بیش از حد بر ابزارهای هوش مصنوعی ممکن است باعث تضعیف درک عمیق مفاهیم پایه، معماری نرمافزار و توانایی حل مسئله در بلند مدت شود.
https://www.youtube.com/@bridgemindai
#ai
@TheRaymondDev
هدفگذاری BridgeMind رسیدن به درآمد یک میلیون دلاری از طریق توسعه و تجاریسازی اپلیکیشنهای مبتنی بر هوش مصنوعی است؛ مسیری که به صورت شفاف و مرحله به مرحله در قالب ویدئوها مستند سازی میشود.
این کانال بیشتر از آنکه آموزشی صرف باشد، یک روایت واقعی از مسیر ساخت محصول، آزمون و خطا و تفکر یک مهندس نرمافزار در دنیای هوش مصنوعی است.
پ.ن : برخی برنامه نویسان با این شیوهی کار با هوش مصنوعی مخالف هستند و معتقدند که هیچ تضمینی وجود ندارد استفاده گسترده از هوش مصنوعی لزوماً منجر به تبدیل شدن فرد به یک مهندس نرمافزار بهتر شود.
از نگاه آن ها، تکیه بیش از حد بر ابزارهای هوش مصنوعی ممکن است باعث تضعیف درک عمیق مفاهیم پایه، معماری نرمافزار و توانایی حل مسئله در بلند مدت شود.
https://www.youtube.com/@bridgemindai
#ai
@TheRaymondDev
Forwarded from DevTwitter | توییت برنامه نویسی
سایت System Design یکی از بهترین منابع برای فهم طراحی سیستمهای بزرگیه که هر روز استفاده میکنیم.
خودم تقریبا هر روز یکی از مطالبش رو میخونم و واقعا دید خوبی برای پیادهسازی نرمافزار میده؛
از WhatsApp و YouTube تا Instagram و Redis و ...
https://newsletter.systemdesign.one/
@DevTwitter | <Mohammad/>
خودم تقریبا هر روز یکی از مطالبش رو میخونم و واقعا دید خوبی برای پیادهسازی نرمافزار میده؛
از WhatsApp و YouTube تا Instagram و Redis و ...
https://newsletter.systemdesign.one/
@DevTwitter | <Mohammad/>
🔥1
Forwarded from DevTwitter | توییت برنامه نویسی
وقتشه که استفاده از Exception برای کنترل فلو (Control Flow) در لاراول را متوقف کنیم.
پترن Railway-Oriented Programming (ROP) یک شیوه مدرن برای مدیریت خطاهاست که از دنیای Functional Programming وارد شده. به جای پرتاب Exception و امیدوار بودن به اینکه یه جایی اون رو Catch کنیم، میتونیم عملیاتها را به صورت زنجیرهای از موفقیتها و شکستها مدل کنیم.
در این مقاله، ROP و طرز فکر پشت اون و نحوه پیادهسازی کاملش در لاراول را با استفاده از Result Types توضیح دادم.
مطالعه کامل مقاله
https://medium.com/@mmtaheri.dev/railway-oriented-programming-in-laravel-exceptions-are-not-your-business-3499a9feb790
@DevTwitter | <Mohammad Mahdi Taheri/>
پترن Railway-Oriented Programming (ROP) یک شیوه مدرن برای مدیریت خطاهاست که از دنیای Functional Programming وارد شده. به جای پرتاب Exception و امیدوار بودن به اینکه یه جایی اون رو Catch کنیم، میتونیم عملیاتها را به صورت زنجیرهای از موفقیتها و شکستها مدل کنیم.
در این مقاله، ROP و طرز فکر پشت اون و نحوه پیادهسازی کاملش در لاراول را با استفاده از Result Types توضیح دادم.
مطالعه کامل مقاله
https://medium.com/@mmtaheri.dev/railway-oriented-programming-in-laravel-exceptions-are-not-your-business-3499a9feb790
@DevTwitter | <Mohammad Mahdi Taheri/>
اینو خوندم جالب بود رفتم ی سمپل کد پیدا کردم براش از
https://blog.logrocket.com/what-is-railway-oriented-programming/
https://blog.logrocket.com/what-is-railway-oriented-programming/
const sendWayBillMail = async() => {
const data = await fs.readFile('emailContent.txt', 'binary')
if (!data){
return 'Empty content or invalid!'
}
const { emailAddress, firstName, lastName } = await User.findById(userId)
if (!emailAddress) {
return 'Email address not found!'
}
const isValidated = await validateEmail(emailAddress)
if (!isValidated) {
return 'Email address not valid!'
}
if (!lastName) {
return 'Last name not found!'
}
if (!firstName) {
return 'First name not found!'
}
sendMail(emailAddress, firstName, lastName, data)
return 'Done'
}LogRocket Blog
What is railway oriented programming? - LogRocket Blog
Check out this simple guide to railway oriented programming and learn a new approach to error handling that can improve your codebase.
و نکته جالب ماجرا اینجاست که همین الآنم کد هایی که با Django میزنم الان همین حالت ریلی رو داره
Forwarded from Linuxor ?
بیش از 200 تکنیک طراحی بصری
لیستی مفید از سبکها و تکنیکهای طراحی بصری به همراه مثالها و راهنماهایی در مورد نحوه و زمان استفاده از اونها:
anthonyhobday.com/sideprojects/visualtechniques
@Linuxor
لیستی مفید از سبکها و تکنیکهای طراحی بصری به همراه مثالها و راهنماهایی در مورد نحوه و زمان استفاده از اونها:
anthonyhobday.com/sideprojects/visualtechniques
@Linuxor
Forwarded from Armon technical logs (armon Taheri)
من حفظ کرده بودم که کانتینر از طریق دو فیچر c group و namespace ایزوله سازی میکنه ولی درک کاملی نداشتم که دقیقا معنیش چیه
این ویدیو پرکتیکال کانتینر رو با محوریت ایزوله سازی از اسکرچ پیاده سازی میکنه
https://youtu.be/MHv6cWjvQjM
این ویدیو پرکتیکال کانتینر رو با محوریت ایزوله سازی از اسکرچ پیاده سازی میکنه
https://youtu.be/MHv6cWjvQjM
YouTube
What Have Namespaces Done for You Lately?
Liz Rice - Technology Evangelist, Aqua Security
Containers are made with namespacing and cgroups, but what does that really mean? In this talk we'll write a container from scratch in Go, using bare system calls, and explore how the different namespaces affect…
Containers are made with namespacing and cgroups, but what does that really mean? In this talk we'll write a container from scratch in Go, using bare system calls, and explore how the different namespaces affect…
Forwarded from Milad Safaei | میلاد صفائی
♦️ محتوای برندساز با محتوای لیدساز چه فرقی داره؟
یه تصور رایج از پرسونال برندینگ اینه که: «محتوا تولید کن و توی سوشالمدیا منتشر کن تا دیده بشی و کسب درآمد کنی.»
ولی واقعیت اینه که اگر برای پرسونال برند خودت «استراتژی برندینگ» نداشته باشی، صرفاً با Content Marketing نمیتونی به یه برند موندگار تبدیل بشی. نهایتاً تبدیل میشی به یه «تولیدکنندهی محتوای خوب» که مخاطبها پستهاش رو لایک میکنن، اما کسی برای پروژههای بزرگ سراغش نمیاد.
من این دو تا رو از هم تفکیک میکنم:
1️⃣ محتوای لیدساز (Lead Generation Content)
هدفش «فروش» یا «جذب مشتری» در کوتاهمدته. این محتوا روی نیاز و درد لحظهای مخاطب تمرکز میکنه.
مثال: چکلیست سئوی تکنیکال، ۵ ترفند برای افزایش فروش، آموزش کار با سرچ کنسول.
نتیجه: مخاطب میگه «دمت گرم، چه نکتهی خوبی» و Save یا Share میکنه.
جایگاه شما: یک متخصص کاربلد یا یک مدرس خوب.
2️⃣ محتوای برندساز (Brand Building Content)
هدفش «هویتسازی»، «ایجاد تمایز» و «جایگاهسازی» (Positioning) در بلندمدته. این محتوا روی باورها، ارزشها، دیدگاه منحصربهفرد و داستان شما تمرکز داره.
مثال: چرا من معتقدم سئو بدون UX بیفایده است؟ تحلیل من از آیندهی بازار دیجیتال مارکتینگ ایران چیه؟ من چه درسی از شکست در فلان پروژه گرفتم؟
نتیجه: مخاطب میگه «من طرز تفکر این آدم رو قبول دارم و میخوام فقط با اون کار کنم.»
جایگاه شما: یک رهبر فکری (Thought Leader) و مشاور استراتژیک که ارتباطات بسیار ارزشمندتری نسبت به لیدهای خرید داره.
♦️ خطای استراتژیک کجاست؟
اکثر افراد تمام تمرکزشون رو میذارن روی محتوای آموزشی و لیدساز. در نتیجه مخاطب هم اونها رو به چشم یه «Wiki» یا دایرهالمعارف میبینه، نه یک «برند متمایز».
یه پرسونال برند، باید تفاوت جایگاه خودش رو با جایگاه افراد مشابه دیگه با دقت انتخاب کرده باشه و برای تثبیت اون جایگاه در ذهن مخاطبان هدف، برای خودش هویتسازی کنه.
اگر محتوای شما فقط «مشکل مخاطب» رو حل کنه، پول درمیارید. اما اگر محتوای شما «طرز فکر» مخاطب رو تغییر بده، برند میسازید.
به یه بیان دیگه میشه گفت کانتنت مارکتینگ فقط ابزاره. سوخت این ابزار باید «استراتژی برند» شما باشه.
🆔 @MiladSafaei_ir
.
یه تصور رایج از پرسونال برندینگ اینه که: «محتوا تولید کن و توی سوشالمدیا منتشر کن تا دیده بشی و کسب درآمد کنی.»
ولی واقعیت اینه که اگر برای پرسونال برند خودت «استراتژی برندینگ» نداشته باشی، صرفاً با Content Marketing نمیتونی به یه برند موندگار تبدیل بشی. نهایتاً تبدیل میشی به یه «تولیدکنندهی محتوای خوب» که مخاطبها پستهاش رو لایک میکنن، اما کسی برای پروژههای بزرگ سراغش نمیاد.
من این دو تا رو از هم تفکیک میکنم:
1️⃣ محتوای لیدساز (Lead Generation Content)
هدفش «فروش» یا «جذب مشتری» در کوتاهمدته. این محتوا روی نیاز و درد لحظهای مخاطب تمرکز میکنه.
مثال: چکلیست سئوی تکنیکال، ۵ ترفند برای افزایش فروش، آموزش کار با سرچ کنسول.
نتیجه: مخاطب میگه «دمت گرم، چه نکتهی خوبی» و Save یا Share میکنه.
جایگاه شما: یک متخصص کاربلد یا یک مدرس خوب.
2️⃣ محتوای برندساز (Brand Building Content)
هدفش «هویتسازی»، «ایجاد تمایز» و «جایگاهسازی» (Positioning) در بلندمدته. این محتوا روی باورها، ارزشها، دیدگاه منحصربهفرد و داستان شما تمرکز داره.
مثال: چرا من معتقدم سئو بدون UX بیفایده است؟ تحلیل من از آیندهی بازار دیجیتال مارکتینگ ایران چیه؟ من چه درسی از شکست در فلان پروژه گرفتم؟
نتیجه: مخاطب میگه «من طرز تفکر این آدم رو قبول دارم و میخوام فقط با اون کار کنم.»
جایگاه شما: یک رهبر فکری (Thought Leader) و مشاور استراتژیک که ارتباطات بسیار ارزشمندتری نسبت به لیدهای خرید داره.
♦️ خطای استراتژیک کجاست؟
اکثر افراد تمام تمرکزشون رو میذارن روی محتوای آموزشی و لیدساز. در نتیجه مخاطب هم اونها رو به چشم یه «Wiki» یا دایرهالمعارف میبینه، نه یک «برند متمایز».
یه پرسونال برند، باید تفاوت جایگاه خودش رو با جایگاه افراد مشابه دیگه با دقت انتخاب کرده باشه و برای تثبیت اون جایگاه در ذهن مخاطبان هدف، برای خودش هویتسازی کنه.
اگر محتوای شما فقط «مشکل مخاطب» رو حل کنه، پول درمیارید. اما اگر محتوای شما «طرز فکر» مخاطب رو تغییر بده، برند میسازید.
به یه بیان دیگه میشه گفت کانتنت مارکتینگ فقط ابزاره. سوخت این ابزار باید «استراتژی برند» شما باشه.
🆔 @MiladSafaei_ir
.
Forwarded from DevTwitter | توییت برنامه نویسی
بمب دیگه که Anthropic توی ۲۴ ساعت گذشته انداخته اینکه، Agent Skills از الان تبدیل شده به یه Open Standard
با ساپورت این همه شرکت و پروژه!
https://agentskills.io
@DevTwitter | <Von Datawarehausen/>
با ساپورت این همه شرکت و پروژه!
https://agentskills.io
@DevTwitter | <Von Datawarehausen/>
Forwarded from Syntax | سینتکس (Alireza F)
آیا یک جرقه کوچک، نرم افزار شما را به آتش میکشد؟ پتر Circuit Breaker
در روز های اول صنعت برق، خانه ها با یک خطر بزرگ رو به رو بودن. اگه جریان برق زیاد میشد، سیم ها داغ میشدن و کل خونه میسوخت.
راه حل اولیه فیوز بود که می سوخت و باید عوض میشد. اما مهندسان شاهکار بهتری ساختن. مدارشکن یا همون Circuit Breaker.
نحوه کارش ساده بود. اگه فشار زیاد شد، کلید میپره و جریان قطع میشه. وقتی سیستم خنک شد، دوباره کلید رو میزنیم. بدون نیاز به تعویض قطعه!
این مفهوم در دنیای نرم افزار تو سال 2007 در کتاب Release It به این شکل معرفی شد:
"چرا وقتی یک دیتابیس یا سرویس خارجی داره میمیره و خطا میده، ما همچنان بهش ریکوئست میفرستیم؟ این کار مثل لگد زدن به اسب مرده است! هم وقت ما تلف میشه، هم اون سرویس بیچاره فرصت پیدا نمیکنه بلند بشه."
چطور ازش استفاده کنیم؟
مدارشکن مثل یک پروکسی بین سرویس شما و یک سرویس خارجی مثل درگاه پرداخت، سرویس یوزر و ... قرار میگیره.
این پترن بر اساس state machine کار میکنه و سه تا حالت داره:
۱. حالت بسته:
همه چیز آرومه، ترافیک عبور میکنه.
۲. باز:
اگه تعداد خطاها از یه حد گذشت مثلا پنج خطا در ده ثانیه، مدار میپره! حالا هر چی درخواست بیاد، بدون اینکه به سرویس مقصد برسه درجا خطا برمیگردونیم. اینطوری دیگه منابع سرور درگیر انتظار نمیشه و سرویس مقصد هم فرصت نفس کشیدن و ریکاوری پیدا میکنه.
3. نیمه باز:
بعد از مدتی، یک یا چند تا درخواست آزمایشی رد میشه. اگه موفق بود، مدار دوباره وصل میشه.
با مدارشکن سیستم شما یاد میگیره که گاهی کار نکردن بهتر از تلاش کردن و سوختنه.
درباره circuit breaker در Azure Architecture Center:
https://learn.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker
#pattern #circuit_breaker
@Syntax_fa
در روز های اول صنعت برق، خانه ها با یک خطر بزرگ رو به رو بودن. اگه جریان برق زیاد میشد، سیم ها داغ میشدن و کل خونه میسوخت.
راه حل اولیه فیوز بود که می سوخت و باید عوض میشد. اما مهندسان شاهکار بهتری ساختن. مدارشکن یا همون Circuit Breaker.
نحوه کارش ساده بود. اگه فشار زیاد شد، کلید میپره و جریان قطع میشه. وقتی سیستم خنک شد، دوباره کلید رو میزنیم. بدون نیاز به تعویض قطعه!
این مفهوم در دنیای نرم افزار تو سال 2007 در کتاب Release It به این شکل معرفی شد:
"چرا وقتی یک دیتابیس یا سرویس خارجی داره میمیره و خطا میده، ما همچنان بهش ریکوئست میفرستیم؟ این کار مثل لگد زدن به اسب مرده است! هم وقت ما تلف میشه، هم اون سرویس بیچاره فرصت پیدا نمیکنه بلند بشه."
چطور ازش استفاده کنیم؟
مدارشکن مثل یک پروکسی بین سرویس شما و یک سرویس خارجی مثل درگاه پرداخت، سرویس یوزر و ... قرار میگیره.
این پترن بر اساس state machine کار میکنه و سه تا حالت داره:
۱. حالت بسته:
همه چیز آرومه، ترافیک عبور میکنه.
۲. باز:
اگه تعداد خطاها از یه حد گذشت مثلا پنج خطا در ده ثانیه، مدار میپره! حالا هر چی درخواست بیاد، بدون اینکه به سرویس مقصد برسه درجا خطا برمیگردونیم. اینطوری دیگه منابع سرور درگیر انتظار نمیشه و سرویس مقصد هم فرصت نفس کشیدن و ریکاوری پیدا میکنه.
3. نیمه باز:
بعد از مدتی، یک یا چند تا درخواست آزمایشی رد میشه. اگه موفق بود، مدار دوباره وصل میشه.
با مدارشکن سیستم شما یاد میگیره که گاهی کار نکردن بهتر از تلاش کردن و سوختنه.
درباره circuit breaker در Azure Architecture Center:
https://learn.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker
#pattern #circuit_breaker
@Syntax_fa
Forwarded from Daily articles | مقالات روزانه (Mohamad)
تمام تجربه شخصی خودم درباره نوشتن پستهام رو میخوام براتون توضیح بدم. اگه حرف اصلی رو درک کنید، مدل فعالیت شما برای 2026 تغییر میکنه.
ما میدونیم که روایتگری، کلید عملکرد بهتر محتواست. کلیت کار من روی همینه. یه مقاله پیچیده که شامل عدد و رقم هست رو یجوری تعریف میکنم که انگار مخاطبم، رفیق صمیمی منه!
درسته؟ روی این توافق داریم؟ سال 2025 من هرماه حداقل 2 یا 3 بار پست وایرال داشتم که هرکدوم صدها هزار ایمپرشن میگرفتن. هر روایت من از یه چارچوب ساده و یکسان تشکیل شده؛ حالا چه فیلمهای کریستوفر نولان باشه، چه قصههای مادربزرگ ما و چه پست من! تهش رو دربیاری همش یه اصل مشترک داره!
این چارچوب، روایت پست رو ده برابر بهتر میکنه. قوس سنتی روایت میشه: مقدمه، اوج و فرود ... اما این تاکتیک کلاسیک همیشه جواب نمیده و دیگه خیلی سخت میشه باهاش نتیجه گرفت. پس چکار کنیم؟
پردهبرداری پنج حالت داره: بدتر از انتظار (بلاک میشی)، برابر انتظار (لایک خالی میگیری)، بهتر از انتظار یا غیرمنتظره اما جذاب (دوپامین ترشح میشه و خواننده با پست درگیر میشه و علاوه بر لایک فورا کامنت مینویسه)، غیرمنتظره اما گیجکننده (خواننده یه فحش بهت میده و میره). حلقهها سریع باز و بسته میشن و با هم قوس بزرگ روایت رو میسازن.
برای نوشتن پست، اول همه واقعیتها یا نکات جالب رو لیست کنین، بعد جالبترینها رو انتخاب کنین و در همون پاراگراف اول چند تا سیلی توی گوش خواننده بزنید و با واقعیتها شوکهاش کنید. این باعث میشه که به بقیه مطلب بهتر توجه کنن. بهش چی میگن؟ قلاب!
بعد رو به عقب کار کنین و زمینه لازم رو بسازین تا پردهبرداری منطقی و جذاب بشه و آخرش حلقهها رو مرتب کنین تا روایت پست منسجم بشه. اگه پستهای منو همیشه میخونید، نشون میده که این روند جواب داده ...
متن باید خودمونی باشه. دوران خشک نوشتن تموم شده. فان، روان، صریح، رک و جسورانه. برای تمرین سیو مسیج تلگرام رو باز کنید و بدون وقفه و شبیه یک پیام کل متن پست رو بنویسید و خیال کنید رفیق صمیمی شما اونطرف خطه. بخدا همینو پکیج میکنن و میفروشن. لازمه با جزئیات بیشتری بگم؟ ادامه این پست رو بنویسم؟
⛓ @linkepin
ما میدونیم که روایتگری، کلید عملکرد بهتر محتواست. کلیت کار من روی همینه. یه مقاله پیچیده که شامل عدد و رقم هست رو یجوری تعریف میکنم که انگار مخاطبم، رفیق صمیمی منه!
درسته؟ روی این توافق داریم؟ سال 2025 من هرماه حداقل 2 یا 3 بار پست وایرال داشتم که هرکدوم صدها هزار ایمپرشن میگرفتن. هر روایت من از یه چارچوب ساده و یکسان تشکیل شده؛ حالا چه فیلمهای کریستوفر نولان باشه، چه قصههای مادربزرگ ما و چه پست من! تهش رو دربیاری همش یه اصل مشترک داره!
این چارچوب، روایت پست رو ده برابر بهتر میکنه. قوس سنتی روایت میشه: مقدمه، اوج و فرود ... اما این تاکتیک کلاسیک همیشه جواب نمیده و دیگه خیلی سخت میشه باهاش نتیجه گرفت. پس چکار کنیم؟
هر روایت من از حلقههای کوچکی ساخته شده و هر حلقه دو بخش داره: زمینه و پردهبرداری ... زمینه باید واضح باشه تا خواننده کنجکاو بشه و پیشبینی کنه که چه اتفاقی قراره بیفته. مغز انسان پازل رو دوست داره و میخواد کاملش کنه.
پردهبرداری پنج حالت داره: بدتر از انتظار (بلاک میشی)، برابر انتظار (لایک خالی میگیری)، بهتر از انتظار یا غیرمنتظره اما جذاب (دوپامین ترشح میشه و خواننده با پست درگیر میشه و علاوه بر لایک فورا کامنت مینویسه)، غیرمنتظره اما گیجکننده (خواننده یه فحش بهت میده و میره). حلقهها سریع باز و بسته میشن و با هم قوس بزرگ روایت رو میسازن.
برای نوشتن پست، اول همه واقعیتها یا نکات جالب رو لیست کنین، بعد جالبترینها رو انتخاب کنین و در همون پاراگراف اول چند تا سیلی توی گوش خواننده بزنید و با واقعیتها شوکهاش کنید. این باعث میشه که به بقیه مطلب بهتر توجه کنن. بهش چی میگن؟ قلاب!
بعد رو به عقب کار کنین و زمینه لازم رو بسازین تا پردهبرداری منطقی و جذاب بشه و آخرش حلقهها رو مرتب کنین تا روایت پست منسجم بشه. اگه پستهای منو همیشه میخونید، نشون میده که این روند جواب داده ...
متن باید خودمونی باشه. دوران خشک نوشتن تموم شده. فان، روان، صریح، رک و جسورانه. برای تمرین سیو مسیج تلگرام رو باز کنید و بدون وقفه و شبیه یک پیام کل متن پست رو بنویسید و خیال کنید رفیق صمیمی شما اونطرف خطه. بخدا همینو پکیج میکنن و میفروشن. لازمه با جزئیات بیشتری بگم؟ ادامه این پست رو بنویسم؟
⛓ @linkepin
Forwarded from Our Leaks (سید کریستوفر نولان)
زیبایی ببینیم:
با فریب کاربر کاری کنید که عکس رو تو مرورگر بازکنه و هش NTLM قربانی رو بگیرین
این آسیب پذیری به قدری جدید و داغ هست که هنوز ماکروسافت واسش CVE نداده🔥
OurLeaks | سید کریستوفر نولان
با فریب کاربر کاری کنید که عکس رو تو مرورگر بازکنه و هش NTLM قربانی رو بگیرین
آسیبپذیری جدید 0 day که امکان نشت هشهای NTLM از مرورگرها را با یک کلیک فراهم میکند.
نشت هش NTLMv2-SSP قربانی به سرور تحت کنترل مهاجم.
این مشکل امکان افشای اعتبارنامه را در محیطهای سازمانی فراهم میکند و تنها به حداقل تعامل کاربر (باز کردن برنامه) نیاز دارد.
این آسیب پذیری به قدری جدید و داغ هست که هنوز ماکروسافت واسش CVE نداده🔥
OurLeaks | سید کریستوفر نولان
This media is not supported in your browser
VIEW IN TELEGRAM
🔥2❤🔥1