Files
semih e0e4a0d6c7 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.
2026-10-03 08:37:47 +03:00

39 lines
1.6 KiB
Markdown

# Kısalt — bağlantı kısaltıcı
![Kısalt](../../medya/kisalt.png)
Uzun bir adres verin, KabaLang ona 6 harflik bir kod versin; `/k/{kod}` gerçek bir
**HTTP 302** ile hedefe yönlendirir ve her tıklamayı sayar. Sayfaların tamamı sunucuda,
KabaLang metin işlemleriyle üretilir — şablon motoru yok.
```bash
kabalang calistir web/kisalt/kisalt.kbl
# → http://127.0.0.1:8472
```
## Neyi gösteriyor
| Konu | Nerede |
|---|---|
| Rastgele kısa kod + çakışma döngüsü (`iken ... != "0"`) | `yeni_kod`, `kaydet` |
| Gerçek yönlendirme: `web.yanit("", 302).baslik("Location", adres)` | `yonlendir` |
| Sunucuda çizilen **SVG çubuk grafik** (son 7 gün) | `yedi_gun_svg` |
| Üç tırnaklı metin ile tek yerde tutulan stil | `STIL = """ ... """` |
| Özel 404 sayfası: `sunucu.bulunamadi(...)` | sonda |
![İstatistik](../../medya/kisalt-istatistik.png)
## Güvenlik
- **SQL enjeksiyonu:** bütün sorgular parametre bağlamalıdır (`?`); kullanıcı verisi asla
sorgu metnine eklenmez.
- **Açık yönlendirme / betik bağlantısı:** yalnız `http://` ve `https://` adresleri kabul edilir;
`javascript:` ya da `file:` ile başlayan bir "bağlantı" 422 ile reddedilir.
- **XSS:** hedef adres sayfaya yalnızca **metin** olarak, `web.kacir` ile kaçırılarak basılır;
`href` içine giren tek şey bizim ürettiğimiz, yalnız harf-rakamdan oluşan kısa koddur.
Veritabanı yolu `KISALT_DB` ile değiştirilebilir (varsayılan `kisalt.db`). İlk açılışta
tanıtım için birkaç bağlantı ve geçmiş tıklama oluşturulur.
![Mobil](../../medya/kisalt-mobil.png)