Tüm projeler

VAKA ÇALIŞMASI · 2026

MacPulse

CPU, bellek, disk, ağ, pil ve termal durumu tek bir gösterge panelinde toplayan; hiçbir veriyi makineden çıkarmayan yerel bir macOS sistem monitörü.

Alan
macOS · SwiftUI · System Utility
Rol
Ürün tasarımı, mühendislik, dağıtım
Durum
Yalnızca yerelde çalışıyor
MacPulse ürün görseli
Problem

macOS sistem verileri farklı araçlara dağılmış durumda; depolama temizliği, bellek baskısı, pil sağlığı, ağ bağlantıları ve geliştirici kalıntılarını güvenli biçimde anlamak teknik bilgi ve zaman gerektiriyor.

Yaklaşım

CPU, bellek, disk, ağ, pil ve termal durumu gerçek sistem API’lerinden izleyen; kadranlar, segment göstergeleri ve tabular ölçümleri düz grafit bir Instrument Cluster arayüzünde birleştiren yerel bir macOS uygulaması geliştirdim. Hash tabanlı kopya tespiti, geliştirici depolama analizi ve geri alınabilir temizlik de aynı sistemin parçaları.

Sonuç

Veriyi buluta göndermeden çalışan; temizlikte ikinci onay ve Çöp Kutusu güvenliğini koruyan, menü çubuğundan hızlı erişilen ve Türkçe–İngilizce kullanılabilen kapsamlı bir Mac sağlık çalışma alanı. Tasarım; blur ve gradient yerine yüksek okunabilirlikli, makine paneli karakterine sahip ortak bir ölçüm dili kullanıyor.

RAKAMLARLA
4.199

satır Swift, 41 dosyada

44

birim testi, domain katmanında

8

izleme bölümü tek panelde

~%27 → ~%4

kadran animasyonu kapalıyken boştaki CPU

01

Teknik kararlar

Her kararın bir bedeli var; burada ikisi birlikte duruyor.

01

Kuralları makineden ayırdım

Paket iki hedefe bölünmüş durumda. MacPulseKit saf Foundation: modeller, ayrıştırma, özetleme, kopya ve temizlik politikası, örnekleme temposu ve sağlık eşikleri burada — SwiftUI yok, AppKit yok, sistem çağrısı yok. MacPulse ise uygulama katmanı: mach/IOKit örnekleme, dosya sistemi taraması, arayüz. Değerlerden karar verilebilen her şey Kit tarafında yaşıyor.

Bedeli

İki hedef arasındaki sınırı sürdürmek fazladan bakım demek. Karşılığında, 44 test bir sistem monitörünün kurallarını herhangi bir Mac’in durumuna bağlı olmadan doğruluyor.

02

Mac App Store’dan vazgeçtim

App Store sandbox’ı ps çalıştırmayı, lsof ve xcrun kullanmayı, başka süreçleri sonlandırmayı ve ev dizinini taramayı yasaklıyor. Bu uygulamanın yaptığı işin neredeyse tamamı bunlar. Dağıtım bu yüzden GitHub releases üzerinden yürüyor.

Bedeli

İmzasız bir indirme macOS tarafından karantinaya alınıyor ve kullanıcıya uygulama bozukmuş gibi görünüyor; README tek seferlik xattr adımını açıklıyor. Alternatif, ürünü ölçmek istediği şeyi ölçemez hâle getirmekti.

03

Kadran animasyonunu varsayılan olarak kapattım

Gösterge süpürmesini canlandırmak SwiftUI animasyonunu sürekli havada tutuyor; bir animasyon çalışırken pencerenin tamamı her ekran karesinde yeniden değerlendiriliyor. Genel bakış ekranında ölçülen boştaki maliyet ~%27 CPU’ya karşı ~%4.

Bedeli

Varsayılan görünüm daha durgun. Bir monitörün kendi tükettiği kaynak, ölçtüğü kaynaktan daha az önemli değil; isteyen Ayarlar → Enerji & Örnekleme’den açıyor.

04

Her kaynağı kendi temposunda örnekliyorum

ps çalıştırmak, çekirdeğin pid tablosunu gezmek ve AppleSmartBattery özellik sözlüğünü kopyalamak, bir CPU tick’i okumaktan kat kat pahalı. SampleSchedule her birini bağımsız kısıyor; süreç taraması main actor dışında dönüyor ve ekranda pencere yokken örnekleme geri çekiliyor.

Bedeli

Tek bir yenileme aralığı çok daha basit olurdu. Ayrı tempolar kodun karmaşıklığını artırıyor ama uygulamanın arka planda sessiz kalmasını sağlıyor.

05

Hiçbir şey silinmiyor

Her kaldırma bir trashItem çağrısı ve son yığın geri alınabiliyor. “Tümünü seç” yalnızca kendi kendine yeniden oluşan kategorileri işaretliyor: önbellekler, derleme çıktıları, DerivedData, kullanılamayan simülatörler. Kopyalar ve iOS yedekleri asla toplu seçilmiyor.

Bedeli

Temizlik daha yavaş ilerliyor ve kullanıcıdan daha çok karar istiyor. Gerekçe açık: kopyada hangi dosyanın gereksiz olduğu yalnızca bir tahmin, bir yedek ise bir cihazın tek kopyası olabilir.

02

Ekran ekran

Gösterge paneli

Gösterge paneli

Kadranlar, segment göstergeleri ve tabular ölçümler tek bir okuma dilinde birleşiyor. Blur ve gradient yerine, makine paneli karakterinde yüksek okunabilirlik.

Bellek danışmanı

Bellek danışmanı

“Sahte RAM temizliği yok — baskıyı ne yaratıyor ve buna karşı güvenli işlem ne.” Kullanımı aktif, wired, sıkıştırılmış ve önbelleklenmiş olarak ayırıyor; en çok bellek tutan süreçleri Quit ve Force ayrımıyla listeliyor.

Temizlik merkezi

Temizlik merkezi

Ekranın kendi başlığı politikayı tekrarlıyor: “Önce incele. Hiçbir şey otomatik silinmez.” Eylem düğmesi Sil değil, Çöp Kutusu’na Taşı. Pencerenin köşesinde kalıcı bir not duruyor: yalnızca yerel, telemetri yok.

03

Kullanılan teknolojiler

Swift 6SwiftUISwift Package ManagerIOKitmachAppKitmacOS 14+
Sıradaki vaka çalışmasıKelimeyle