Tayyebi - Software Engineering & Architecture
14 subscribers
27 photos
9 videos
1 file
8 links
Download Telegram
یک نمونه circuit breaker

using System;
using System.Threading;

public class CircuitBreaker
{
private enum State { Closed, Open, HalfOpen }
private State _state = State.Closed;

private int _failureCount = 0;
private readonly int _failureThreshold;
private readonly TimeSpan _openTimeout;
private DateTime _lastFailureTime;

public CircuitBreaker(int failureThreshold, TimeSpan openTimeout)
{
_failureThreshold = failureThreshold;
_openTimeout = openTimeout;
}

public T Execute<T>(Func<T> action, Func<T> fallback)
{
switch (_state)
{
case State.Open:
if (DateTime.UtcNow - _lastFailureTime > _openTimeout)
{
_state = State.HalfOpen;
}
else
{
Console.WriteLine("Circuit breaker OPEN: using fallback");
return fallback();
}
break;
}

try
{
T result = action();
Reset();
return result;
}
catch (Exception ex)
{
Console.WriteLine($"Failure: {ex.Message}");
RegisterFailure();
return fallback();
}
}

private void Reset()
{
_failureCount = 0;
_state = State.Closed;
}

private void RegisterFailure()
{
_failureCount++;
_lastFailureTime = DateTime.UtcNow;

if (_failureCount >= _failureThreshold)
{
_state = State.Open;
Console.WriteLine("Circuit breaker TRIPPED: now OPEN");
}
}
}

// Example usage
class Program
{
static void Main()
{
var breaker = new CircuitBreaker(failureThreshold: 3, openTimeout: TimeSpan.FromSeconds(5));

for (int i = 0; i < 10; i++)
{
var result = breaker.Execute(
action: () =>
{
// Simulate failure
if (i % 2 == 0) throw new Exception("Service unavailable");
return "Success";
},
fallback: () => "Fallback data"
);

Console.WriteLine($"Attempt {i}: {result}");
Thread.Sleep(1000);
}
}
}
blackbox thinking
less moving parts, less failure.
خواجه نصیر طوسی، «دانش» رو از «جدل» به «سنجش» رساند. با ساخت رصدخانه‌ی مراغه، «مشاهده» رو معیار داوری گذاشت. و با نوشتن «اخلاق ناصری» حتی در «اخلاق» هم ساختار رو بر ابهام ترجیح داد.

برای بزرگداشت خواجه‌نصیر مروری کنیم بر اصل‌های مهندسی:

شفاف‌سازی مسئله. ترجیح سادگی بر پیچیدگی. شفاف نگه داشتن ساختار. در نظر داشتن ثابت‌هایی مثل زمان، هزینه، و انرژی. رعایت ماژولاریتی. انجام طراحی‌های سنجش پذیر. آزمون‌های به‌هنگام. داشتن برنامه‌های خروج و شکست. اتوماتیک کردن کارهای تکراری. ریفکتورهای دائمی و ارتقای ساختار بدون دستکاری رفتار. مستندسازی «چرایی» بیشتر از «چگونگی». حذف کردن پیش از اضافه کردن. گوشه چشم داشتن به تغییرات آینده. تعادل بین تریدآف‌ها و علم به اینکه هیچ بهینه‌سازی بی‌هزینه نیست. و در نهایت: ساختن سیستمی که کار می‌کنه.
به ازای هر موقعیت شغلی
۱- یه ماشین ویندوزی و یک claude نصب شده
۲- یک SKILL.md متناسب با اون موقعیت شغلی
۳- یک آدرس ایمیل لاگین شده
۴- یک اکانت گیت‌لب شرکت با دسترسی به پروژه‌های مربوطه
۵- یک اکانت جیرا لاگین شده
۶- تنظیم بشه که هر یک ساعت بره جیرا و ایمیلش رو چک کنه و کارهایی که خواستن رو انجام بده و پوش کنه
۷- بهش ایمیل میزنی و فیچری که میخوای رو بهش میدی
۸- تمام (:

این امن ترین روشه. اگه نخواستی که میشه خیلی صرفه جویانه تر هم پیش رفت.

یه ارتش کامل خواهی داشت که ۲۴ ساعت روز کار میکنن.

تازه میتوانی بگی گزارش هم بدن و یه claude مدیر هم درست کنی که تسک ها رو به اون بدی، اون توزیع کنه ((:

در پر هزینه ترین حالت هزینه‌ی ماهانه هر کدام از این دوستان میشه ۲۵۰ دلار! که بازم از حقوق و دردسرهای یک آدم به مرااااتب کمتره.
انقلاب صنعتی چهارم شروع شده.
و از همین ماه، سیل بزرگی از پایان SaaS ها رو شاهد خواهیم بود.
Forwarded from Programmer Jokes
وقتشه که سرمایه‌انسانی از لحاظ فناوری اطلاعات خارج بشه. بسه دیگه اینقدر SaaS و بره و صنعت‌های دیگه رو با چابکی نرم‌افزار آشنا کنه.
please note: "agile" is a scam. thank you.