Native Shell
Native Shell: AI-generated UI, native in your app, on every platform. Apps on iOS, Android, macOS, Windows and Linux, GPUI apps and web pages load signed, sandboxed TSX modules at run time and draw th
Python kodundaki enerji israfını bulur, otomatik düzeltir, aynı sonucu verdiğini doğrular ve kazancı ölçer.
Translation pending
Developer toolsPython · HTMLGitHub @yes3760OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Yeşil Kod: yazılımın enerjisini ölçer, israfı düzeltir, kazancı kanıtlar. Sakarya Üniversitesi · COP31 Yeşil Bölge
Translation pending
Taken from the repository README
Loading the full README.
Read the full 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.