Tarayıcı tabanlı interaktif matematik defteri. Uygulama bağımlılıkları npm üzerinden sabitlenir ve esbuild ile internet bağlantısı gerektirmeyen taşınabilir bir dist/ çıktısına dönüştürülür.
- CodeMirror 6 tabanlı kod editörü
- Satır tipine göre renk kodlu kenar etiketi (tür göstergesi)
- Satır içi anlık sonuç gösterimi
- Otomatik değerlendirme: her tuş vuruşunda hesaplama
- math.js — aritmetik, değişken ve fonksiyon değerlendirme
- Nerdamer — sembolik hesaplama (türev, integral, limit, çarpanlara ayırma, denklem çözme)
- function-plot — 2D fonksiyon grafikleri
- KaTeX — LaTeX render
| Etiket | Tür | Örnek |
|---|---|---|
V |
Değişken Ataması | r = 5 |
F |
Fonksiyon Tanımı | f(x) = x^2 + 1 |
M |
Matris / Vektör | A = [[1,2],[3,4]] |
E |
İfade | 2 + 3 * sqrt(16) |
EQ |
Denklem | x^2 - 4 = 0 |
INEQ |
Eşitsizlik | x + 1 > 3 |
P |
Grafik | plot(sin(x), cos(x)) |
C |
Yorum | # açıklama |
ERR |
Hata | geçersiz ifade |
Bir fonksiyon satırına tıklandığında yan panelde otomatik hesaplanır:
- Türev (1. ve 2.)
- İntegral
- Limit (x → ∞, x → 0⁺, x → 0⁻)
- Sadeleştirme (basit / çarpan / Horner)
- Kök Bulma (sembolik + nümerik bisection)
- Kritik Noktalar ve Extremum (min / maks / eğer)
- Simetri (çift / tek / hiçbiri)
- Teğet ve Normal (belirtilen x₀ için)
- Büküm Noktaları
- Gradyan (∇f) ve Hessian (çok değişkenli)
- 3B yüzey grafiği (çok değişkenli fonksiyonlar)
- Sembolik ve nümerik çözüm
- Geometrik şekil tanıma: çember, elips, hiperbol, parabol, doğru
- Örtük türevler
- Tam sayı çözümleri
Matrislere tıklandığında:
- Tanım, boyut, elaman sayısı
- Değer değişimi ve hesaplama
- Sonuç özeti
math.js birim motoru üzerinden:
9.8 m/s^2 * 70 kg
(50 km/hour) to m/s
100 celsius to fahrenheit
5 inch to cm
Sağ üstteki Export düğmesiyle mevcut sekme içeriği şu biçimlerde dışa aktarılabilir:
- Text (
.txt) - Markdown (
.md) - LaTeX (
.tex) - PDF (tarayıcı yazdır iletişim kutusu)
+düğmesiyle yeni dosya/sekme oluşturma- Sekme adına çift tıklayarak veya sağ tık menüsünden yeniden adlandırma
- Sağ tık menüsünden notebook kopyalama
- Sekmeleri sürükle-bırak ile yeniden sıralama
- Kapatılan notebook'u 8 saniye içinde Geri Al ile geri getirme
- Sekmeler
localStorage'da kalıcı olarak saklanır
- Üst bardaki Ara / Search düğmesi veya
Ctrl/Cmd + Kile tüm notebook'larda arama - Dosya adı ve satır içeriği birlikte aranır
- Sonuçlarda notebook adı, satır numarası ve içerik önizlemesi gösterilir
- Sonuca tıklanınca ilgili notebook açılır ve eşleşen satıra odaklanılır
+ FAB (sağ alt) veya klavye kısayoluyla açılır. Şablonlu form üzerinden şunlar eklenebilir:
- Fonksiyon, Denklem, Eşitsizlik, Matris, İfade
Sağ üstteki EN / TR geçişiyle arayüz dili değiştirilebilir. Tercih localStorage'a kaydedilir.
Üst bardaki Örnekler düğmesi konu bazlı bir galeri açar. Temel İşlemler, Fonksiyonlar, Türev, Denklem & Eşitsizlik, Matris & Vektör, Birimler ve Grafikler örnekleri ayrı notebook olarak oluşturulabilir. Mevcut notebook'lara dokunulmaz.
- Üst bardaki Geçmiş / History düğmesi aktif notebook'un son sürümlerini gösterir.
- Editörde 5 saniyelik yazma molası olduğunda otomatik snapshot alınır.
- Notebook başına son 20 snapshot tutulur.
- Tüm revision history yaklaşık 1.5 MB ile sınırlandırılır; sınır aşılırsa en eski sürümler otomatik budanır.
- Bir sürüm geri yüklenmeden önce mevcut içerik ayrıca geçmişe kaydedilir.
- History ayrı bir
localStorageanahtarında tutulur ve rename/reorder işlemlerinden etkilenmemesi için notebook kimliğiyle eşleştirilir.
- Alt durum çubuğu tarayıcının çevrimiçi / çevrimdışı durumunu anlık gösterir.
- Yedek düğmesi tüm notebook'ları, aktif sekmeyi ve temel görünüm tercihlerini tek bir sürümlü JSON dosyasında dışa aktarır.
- Aynı JSON yedeği geri yüklenebilir; dosya biçimi ve notebook kayıtları uygulanmadan önce doğrulanır.
- Editör yazımları
localStorage'a 300 ms debounce ile kaydedilir; sekme değişimi, dosya oluşturma/silme ve restore gibi yapısal işlemler anında kalıcılaştırılır. - Durum çubuğu kayıt sırasında Kaydediliyor…, tamamlandığında Kaydedildi durumunu gösterir.
- Sayfa arka plana geçerken bekleyen kayıt ve revision snapshot otomatik olarak flush edilir.
npm install
npm run buildBuild sonrasında dist/ klasörü tüm çalışma zamanı bağımlılıklarını, KaTeX stillerini ve fontlarını yerel olarak içerir:
open dist/index.htmldist/index.html klasik IIFE bundle kullandığı için yerel bir HTTP sunucusu gerektirmeden file:// üzerinden açılabilir. Build alındıktan sonra matematik motoru, editör, grafik ve formül render katmanı için internet bağlantısı gerekmez.
Offline bağımlılık kontrolünü çalıştırmak için:
npm run test:offlineBu kontrol, build çıktısında uzak script/style/module bağlantısı kalmadığını ve KaTeX fontlarının yerel çıktıya kopyalandığını doğrular.
| Kısayol | Eylem |
|---|---|
Ctrl + + |
Yakınlaştır |
Ctrl + - |
Uzaklaştır |
Ctrl/Cmd + K |
Tüm notebook'larda ara |
Çalışma zamanı bağımlılıkları CDN'den yüklenmez. npm paketleri sabit sürümlere pinlenir ve esbuild ile içerik hash'li dist/assets/app-<hash>.js / app-<hash>.css bundle'larına dönüştürülür. KaTeX fontları da dist/assets/ altına kopyalanır.
| Kütüphane | Sürüm | Amaç |
|---|---|---|
| KaTeX | 0.16.21 | LaTeX render |
| math.js | 14.9.1 | Sayısal hesaplama & birimler |
| Nerdamer | 1.1.13 | Sembolik cebir |
| function-plot | 1.25.4 | 2D grafik |
| CodeMirror | 6.x (pinli paketler) | Kod editörü |
| esbuild | 0.28.2 | Offline browser bundle |
GitHub Pages sürümü installable PWA olarak yayınlanır. Manifest, uygulama ikonları ve service worker build sırasında dist/ içine dahil edilir.
start_urlvescoperelative (./) tutulduğu için proje/mathnote/gibi GitHub Pages alt yollarında çalışır.- İlk başarılı ziyarette uygulama shell'i, JavaScript/CSS, KaTeX fontları, manifest ve ikonlar precache edilir.
- Uygulama JavaScript/CSS dosyaları her build'de içerik hash'li yeni URL'ler alır. Böylece eski HTML yalnızca kendi bundle sürümünü, yeni HTML de yalnızca yeni bundle sürümünü yükler; HTML/JS sürüm karışması engellenir. Manifest ve navigasyon ağ varken network-first, çevrimdışıyken cache fallback ile çalışır.
- Yeni service worker çalışan sayfayı zorla devralmaz; bekleyen service worker eski sekmeler kapandıktan sonra aktive olur. Böylece eski HTML ile yeni JavaScript aynı sayfada karışmaz.
- Yeni build'de dosya içeriğinden yeni bir cache sürümü üretilir; service worker aktive olduğunda eski MathNote cache'leri temizlenir.
- Service worker yalnızca HTTP/HTTPS üzerinde kaydolur. Bu nedenle
dist/index.htmldosyasını doğrudanfile://ile açma desteği korunur. - Destekleyen tarayıcılar MathNote'u masaüstüne veya ana ekrana bağımsız uygulama olarak kurabilir.
Repo, GitHub Pages üzerinde kaynak index.html dosyasını doğrudan yayınlamak yerine GitHub Actions ile build edilir. .github/workflows/pages.yml workflow'u:
- npm bağımlılıklarını kurar.
npm run buildiledist/çıktısını üretir.- Offline doğrulamasını çalıştırır.
dist/klasörünü GitHub Pages artifact'i olarak yükler.mainbranch'ine yapılan push/merge sonrasında artifact'i yayınlar.
GitHub üzerinde bir kez Settings → Pages → Build and deployment → Source → GitHub Actions seçilmelidir. Bundan sonra her main güncellemesi otomatik olarak https://alorak.github.io/mathnote/ adresine deploy edilir.
PR'larda workflow yalnızca build ve doğrulama yapar; canlı deploy yalnızca main üzerinde gerçekleşir.
MIT Lisansı