KabaLang örnekleri: konsol, masaüstü ve web için dokuz proje
Konsol: fraktal (paralel şeritli 24-bit Mandelbrot/Julia + yakınlaşma), sudoku (geri izlemeli, canlı animasyon), fatura (JSON → terminal tablosu, PDF ve Excel). Masaüstü: hesap makinesi (işlem önceliği, canlı bağlama), odak (Pomodoro), parola atölyesi (entropi ölçer, SHA-256). Web: pano (Kanban REST API + SQLite), kisalt (302 yönlendirme, SVG istatistik), anket (adres başına tek oy, sunucuda çizilen grafik). Hepsi `kabalang calistir` ile derlenip çalışır; web uygulamaları yalnız 127.0.0.1'i dinler, SQL parametre bağlamalı, HTML çıktısı kaçırılır. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# Pano — Kanban görev panosu
|
||||
|
||||

|
||||
|
||||
Sunucusu **KabaLang** ile yazılmış bir Kanban panosu: görevler *Yapılacak · Sürüyor · Bitti*
|
||||
sütunlarında, kartlar sürükle-bırak ile taşınır, her değişiklik SQLite'a yazılır.
|
||||
|
||||
```bash
|
||||
cd web/pano
|
||||
kabalang calistir pano.kbl
|
||||
# → http://127.0.0.1:8471
|
||||
```
|
||||
|
||||
## Neyi gösteriyor
|
||||
|
||||
| Konu | Nerede |
|
||||
|---|---|
|
||||
| `kaba.web` ile JSON REST API — `al` · `gonder` · `guncelle` · `kaldir` | `pano.kbl` sonu |
|
||||
| Yol parametresi `/api/gorevler/{id}` | `guncelle`, `kaldir` |
|
||||
| `kaba.veritabani` — **her sorgu parametre bağlamalı** (`?`) | tüm `veritabani.sqlite(..., [..])` çağrıları |
|
||||
| Gelen JSON'u `json.gecerli_mi` + `json.al` ile okumak | `olustur` |
|
||||
| Durum kodlu yanıtlar: 201 · 204 · 400 · 404 · 422 | `hata_json`, `web.json(g, 201)` |
|
||||
| Sunucunun kendi hatalarının da JSON olması (405, 413) | `sunucu.hatalar_json()` |
|
||||
| Kapalı küme denetimi (`SUTUNLAR.icerir(sutun)`) | `olustur`, `guncelle` |
|
||||
|
||||
## API
|
||||
|
||||
```bash
|
||||
curl http://127.0.0.1:8471/api/gorevler
|
||||
curl -X POST -d '{"baslik":"Yeni iş","oncelik":"yuksek"}' http://127.0.0.1:8471/api/gorevler
|
||||
curl -X PUT -d '{"sutun":"bitti"}' http://127.0.0.1:8471/api/gorevler/3
|
||||
curl -X DELETE http://127.0.0.1:8471/api/gorevler/3
|
||||
```
|
||||
|
||||
## Güvenlik
|
||||
|
||||
- **SQL enjeksiyonu:** kullanıcı verisi sorguya hiçbir zaman metin olarak eklenmez, `?` ile
|
||||
bağlanır. `"x'); DROP TABLE gorev; --"` başlıklı bir görev yalnızca tuhaf adlı bir görevdir.
|
||||
- **XSS:** ön yüz kart içeriğini `textContent` ile basar; `<script>` başlıklı bir görev ekranda
|
||||
düz yazı olarak görünür.
|
||||
- Sunucu yalnız `127.0.0.1`'i dinler ve tek iş parçacığıyla çalışır (SQLite'a sırayla yazılır).
|
||||
|
||||
Veritabanı yolu `PANO_DB` ortam değişkeniyle değiştirilebilir (varsayılan `pano.db`).
|
||||
|
||||

|
||||
Reference in New Issue
Block a user