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.