Native Shell
Native Shell은 모든 플랫폼의 앱 안에서 만들어지는 AI UI입니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.