Native Shell
Native Shell:AI 生成的 UI,在你的應用中原生呈現,涵蓋每個平台。iOS、Android、macOS、Windows 與 Linux 上的應用、GPUI 應用與網頁在執行時載入已簽名、沙箱隔離的 TSX 模組並繪製 th
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Yeşil Kod: yazılımın enerjisini ölçer, israfı düzeltir, kazancı kanıtlar. Sakarya Üniversitesi · COP31 Yeşil Bölge
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Yazılımın enerjisini ölçer, israfı otomatik düzeltir, kazancı kanıtlar. Sakarya Üniversitesi · COP31 Yeşil Bölge projesi
IN sorgusuna, listede aramayı kümeye çevirir, döngüde değişmeyen işi döngü dışına taşır, çift özyinelemeye önbellek ekler, en küçüğü bulmak için sıralamayı min()/max() ile değiştirir ve gereksiz kopya ve dönüşümleri (list(sorted(x)), [x for x in y], sum([...]), list(range(...)) gibi) kaldırır.Demo senaryolarındaki optimize kod elle yazılmadı; motor üretti.
Her kural ölçüldü. 113 kuralın her biri için bir israflı (ornekler/kurallar/YKxxx.py) ve bir verimli (ornekler/kurallar/iyi/YKxxx.py) örnek var. python -m greencode kanit ikisini aynı girdiyle çalıştırır, çıktılarının aynı olduğunu denetler, süre, işlemci süresi ve bellek tepe değerini ölçer. Apple M4'te 95 kural ölçüldü; çıktısı karşılaştırılabilen 94 kuralın hepsinde iki sürüm birebir aynı sonucu verdi (biri rastgele çıktı üretir). Ölçülen kazancın ortancası 2,8 kat, 22 kuralda 100 katın üstünde. Hızda kazanç göstermeyen 15 kural da gizlenmeden yazılır; değerleri bellekte, doğrulukta ya da okunabilirliktedir. 18 kural veritabanı sunucusu, GPU ya da ağ gerektirdiği için ölçülmedi; nedenleri ornekler/kurallar/olcum.py dosyasında. Ölçüm iki kuralın önerisini de düzeltti: zincirleme replace() yerine str.translate önermek CPython'da 25–50 kat yavaştı (kural Ruff PIE810 ile değiştirildi), JSON ile kopyalamaya copy.deepcopy önermek de iki kat yavaştı (öneri "yalnızca değişen alanı kopyala" oldu).
| Senaryo | Kalıp | Motorun düzeltmesi | Sonuç (tahmini mod, 26 Ekim 2026) |
|---|---|---|---|
| Sipariş raporu | N+1 sorgu | toplu IN sorgusu | 2,9 kat az enerji, sorgu 4.001 → 2 |
| Yoklama kontrolü | listede arama | set() | 465 kat az enerji |
| Rota sayısı | önbelleksiz özyineleme | lru_cache | yaklaşık 4.000 kat az enerji |
| Fiyat listesi | döngüde değişmeyen iş | döngü dışına taşıma | 51 kat az enerji |
Proje sayfası: https://yes3760.github.io/yesil-kod/ (film, sonuçlar ve telefonda kod deneme; Türkçe/İngilizce) Proje ekibi: Yunus Emre Sevindik, Mehmet Zahid Görgeç
Gereken tek şey Python 3.9 veya üstü. Ek paket kurulmaz, internet gerekmez.
| Sistem | Komut |
|---|---|
| Windows | baslat.bat dosyasına çift tıklayın |
| Linux / Mac | ./baslat.sh |
| Elle | python -m greencode |
Tarayıcıda http://127.0.0.1:8000 açılır. Stant ekranında F ile tam ekran, T ile otomatik tur. Otomatik turda dört senaryo sırayla düzeltilir, doğrulanır ve canlı ölçülür.
python -m greencode senaryolar # 4 senaryoyu düzelt, doğrula, ölç
python -m greencode analiz dosya.py # israf kalıplarını listele
python -m greencode duzelt dosya.py # düzeltmenin farkını göster
python -m greencode duzelt dosya.py --yaz # dosya.yesil.py olarak kaydet
python -m greencode duzelt dosya.py --kanitla rapor_uret
# parametresiz fonksiyonu iki sürümde
# çalıştır, karşılaştır, ölç
python -m greencode olc betik.py # betiğin enerjisini ölç
python -m greencode kanit # 113 kuralın israflı ve verimli örneğini
# karşılaştır ve ölç (--yaz: olcumler.json)
python -m greencode kanit YK002 YK027 # yalnızca seçilen kurallar
python -m greencode rapor src/ --bicim md # CI raporu (md, html, json)
python -m greencode rapor src/ --esik 0 # yüksek bulgu varsa çıkış kodu 1
ornekler/github-action.yml, her pull request'te raporu üretip PR'a yorum olarak yazar ve yüksek önemli bulgu varsa kontrolü durdurur.
python -m unittest discover -s tests -v
40 test: analiz kuralları (her kuralın kendi örneği ve yanlış alarm denetimleri), her kuralın verimli örneğinin temiz çıkması ve israflı örnekle aynı sonucu vermesi, motorun düzeltmesinin aynı sonucu vermesi, her senaryonun düzeltilip aynı sonucu vermesi, N+1 düzeltmesinin sorgu sayısını düşürmesi, düzeltmenin yorumları ve biçimi koruması, ölçer ve rapor. Her push'ta GitHub Actions ile Python 3.9 ve 3.13'te çalışır; Yeşil Kod kendi kodunu da denetler.
| Mod | Ne zaman | Nasıl |
|---|---|---|
| Gerçek ölçüm (RAPL) | Linux + Intel/AMD işlemci | İşlemcinin enerji sayaçları okunur, boşta tüketim çıkarılır |
| Donanım ölçümü (powermetrics) | Mac, yönetici izniyle | Apple'ın işlemci güç verisi 100 ms'de bir örneklenir; ölçüm penceresiyle örtüşen örnekler toplanır, boşta tüketim çıkarılır |
| Tahmini ölçüm | Windows, sanal makine ya da izin yoksa | İşlemci süresi × çekirdek başına güç (varsayılan 10 W) |
Linux'ta gerçek ölçüm için: sudo chmod -R a+r /sys/class/powercap/intel-rapl (baslat.sh bunu sorar). Mac'te baslat.sh "Donanım ölçümü açılsın mı?" diye sorar ve şifreyi bir kez ister; şifre Python'a gitmez, powermetrics aynı terminalden sudo -n ile başlatılır. Elle: sudo -v && python3 -m greencode. Hangi modda olduğunuzu python3 -m greencode olcer gösterir. Panelin sağ üstündeki yeşil nokta donanım ölçümünü, turuncu nokta tahmini ölçümü gösterir. Jüriye hangi modda ölçtüğünüzü söyleyin.
Adalet kuralları: kısa süren kod sayaçların ölçebileceği süreye kadar tekrarlanır; her sonuç 5 tekrarın ortalamasıdır; düzeltilmiş koddaki önbellekler her istekten önce temizlenir.
| Değişken | Varsayılan | Anlamı |
|---|---|---|
YK_CARBON_INTENSITY | 341 | Şebeke karbon yoğunluğu, gCO₂e/kWh |
YK_CPU_W_PER_CORE | 10 | Tahmini modda çekirdek başına güç (W) |
YK_DAILY_CALLS | 1000000 | Yıllık projeksiyon için günlük istek |
YK_REPEATS | 5 | Her ölçümün tekrar sayısı |
YK_PORT | 8000 | Panel portu |
YK_POWERMETRICS | 1 | Mac'te donanım ölçümünü kapatmak için 0 |
ANTHROPIC_API_KEY | (boş) | Tanımlanırsa "Kodunu dene" ekranında yapay zekâ önerisi de istenebilir |
greencode/
kurallar.py 113 kural: kategori, önem, Türkçe/İngilizce metin ve dayandığı kaynak
kural_ayrinti.py her kuralın nedeni, ne zaman sorun olmadığı, yapılan iş ve kaynak bağlantısı
kural_kanit.py israflı ve verimli örneği aynı girdiyle çalıştırıp karşılaştırır ve ölçer
analyzer.py AST tabanlı statik analiz
fixer.py AST tabanlı otomatik düzeltme, 11 dönüşüm; değişikliği özgün koda satır düzeyinde yerleştirir
proof.py eşdeğerlik testi, sorgu sayacı, ölçüm, canlı yarış
meter.py enerji ölçer (RAPL, Mac powermetrics, tahmini mod), karbon ve yıllık projeksiyon
scenarios.py 4 gerçekçi israflı kod senaryosu ve ortak verileri
report.py CI raporu (md, html, json)
server.py standart kütüphaneyle web sunucusu, API ve canlı akış (SSE)
config.py katsayılar ve kaynakları
web/ panel ve yazı tipleri (Martian Mono, Hanken Grotesk; SIL OFL)
tests/ unittest paketi
ornekler/ örnek israflı kod, GitHub Action
kurallar/ her kuralın israflı örneği, iyi/ altında verimli örneği,
olcum.py (ölçüm tanımları), olcumler.json (Mac ölçümleri)
docs/ klasörü GitHub Pages ile yayınlanır. Site dört bölümden oluşur: Proje (tanıtım ve film), Dashboard (kodu yapıştır ya da dosya aç; bulgular editörde satır satır işaretlenir, düzeltme kopyalanır ya da indirilir), Analizler (bu cihazda yapılan bütün analizlerin geçmişi, grafikler, JSON/CSV dışa aktarma; yalnızca tarayıcıda saklanır) ve Kurallar (113 kuralın dokuz grupta listesi; her kuralın kendi sayfasında neden enerji harcadığı, israflı ve verimli örnek yan yana, motorun düzeltmesi, Mac'teki ölçüm sonucu, ne zaman sorun olmadığı ve kaynağı; Bu cihazda ölç düğmesi 86 kuralı ziyaretçinin telefonunda aynı yöntemle ölçer). Ziyaretçi QR kodu okutup kendi Python kodunu telefonunda analiz eder; standdaki motor Pyodide ile tarayıcıda (ayrı bir Web Worker'da) çalışır ve kod hiçbir yere gönderilmez. Hazır senaryolarda Telefonunda ölç düğmesi iki sürümü telefonda çalıştırır, çıktıların aynı olduğunu doğrular ve işlemci sürelerini karşılaştırır.
stant/ klasöründe COP31 için her şey var:
| Dosya | Ne |
|---|---|
pdf/01-poster-A0.pdf | Stant posteri (A1/A2'ye oranlı küçülür) |
pdf/02-brosur-*-TR.pdf, pdf/03-brochure-*-EN.pdf | A5 broşür; A4-2li-baski sürümü kırtasiyede A4'e basılıp ortadan kesilir |
pdf/04-masa-karti-A4.pdf | Ortadan katlanan masa kartı (bir yüz Türkçe, bir yüz İngilizce) |
pdf/05-proje-ozeti-A4.pdf | Yetkililer ve jüri için 2 sayfalık özet |
pdf/06-ekran-sunumu-16x9.pdf | 9 slaytlık ekran sunumu |
pdf/07-stant-rehberi-A4.pdf | Ekip için: takvim, kurulum, baskı listesi, konuşma metinleri, sorular |
pdf/08-video-brifi-A4.pdf, film/video-prompt.md | Filmi yeniden yaptırmak için brif, yapay zekâ promptları ve seslendirme metni |
pdf/09-kural-katalogu-A4.pdf | 113 kuralın kataloğu: her kural için neden, israflı ve verimli örnek, ölçüm sonucu, istisna ve kaynak (masada başvuru için) |
pdf/en/ | Posterin, proje özetinin, ekran sunumunun ve kural kataloğunun İngilizce sürümleri |
qr/ | QR kodları (SVG baskı için, PNG genel kullanım için) |
Ekip adı ya da adres değişirse stant/ayarlar.json dosyasını düzenleyip yeniden üretin:
python3 stant/hazirla.py # site, QR, PDF ve film
python3 stant/hazirla.py pdf # yalnızca PDF'ler (Google Chrome gerekir)
python3 stant/hazirla.py pdf katalog # yalnızca kural kataloğu
QR adımı pip install segno, film adımı ffmpeg ister.
ast.unparse ile baştan yazar ve bunu bildirir.