- dersler/: 29 kısa ders (açıklama, çalıştırılabilir örnek, alıştırma). Her örneğin ve alıştırma çözümünün çıktısı Online IDE'nin hazırlık adımında gerçekten koşulup dosyadakiyle karşılaştırılır; biçim dersler/BICIM.md. - temeller/: tek konulu 12 başlangıç programı. - web/anket, web/kisalt, web/pano: port PORT ortam değişkeninden okunur (Online IDE önizlemesi 8080 verir), yoksa eski sabit port. - README: öğrenme bölümü, Online IDE bağlantısı.
Anket — canlı oylama
Tek soruluk canlı anket. Oylar SQLite'ta tutulur, aynı adresten ikinci oy veritabanı kısıtıyla engellenir, sonuç grafiği her istekte sunucuda KabaLang ile SVG olarak çizilir.
kabalang calistir web/anket/anket.kbl
# → http://127.0.0.1:8473
Neyi gösteriyor
| Konu | Nerede |
|---|---|
yapi Secenek + tipli alanlar, yapı listesi döndüren fonksiyon (-> liste<Secenek>) |
secenekler |
Gövdesiz form: oy kimliği yolda (POST /oy/{id}) |
oy_ver |
| POST → 303 → GET deseni (sayfa yenilenince oy tekrar gitmez) | oy_ver |
| Aynı grafiği iki genişlikte üretmek (masaüstü / telefon) | grafik_svg(liste, isaretli, gen) |
Doğru içerik tipiyle tek başına SVG: .tip("image/svg+xml") |
/sonuc.svg |
JSON'u SQLite'ın json_object işlevine kurdurmak |
/api/sonuclar |
Güvenlik
- SQL enjeksiyonu: seçenek kimliği ve istemci adresi sorguya
?ile bağlanır./oy/1 OR 1=1var olmayan bir seçenektir → 404. - Çift oy:
oy.adressütunuUNIQUE; denetim ile kayıt tek iş parçacıklı sunucuda sırayla koşar, yarış koşulu yoktur. - Sunucu yalnız
127.0.0.1'i dinler. (Yerelde her istemci aynı adres olduğu için tarayıcı bir kez oy verebilir — anketi sıfırlamak içinanket.db'yi silin.)
Veritabanı yolu ANKET_DB ile değiştirilebilir (varsayılan anket.db).

