Skip to content

Latest commit

 

History

36 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mathnote

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.


Özellikler

Düzenleyici

  • 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

Hesaplama Motoru

  • 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

Desteklenen Satır Tipleri

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

Fonksiyon Analizi Paneli

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)

Denklem Paneli

  • Sembolik ve nümerik çözüm
  • Geometrik şekil tanıma: çember, elips, hiperbol, parabol, doğru
  • Örtük türevler
  • Tam sayı çözümleri

Matris / Vektör İşlemleri

Matrislere tıklandığında:

  • Tanım, boyut, elaman sayısı
  • Değer değişimi ve hesaplama
  • Sonuç özeti

Birim Sistemi

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

Dışa Aktarma

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)

Çoklu Sekme

  • + 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

Notebook Arama

  • Üst bardaki Ara / Search düğmesi veya Ctrl/Cmd + K ile 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

Ekle Modalı

+ FAB (sağ alt) veya klavye kısayoluyla açılır. Şablonlu form üzerinden şunlar eklenebilir:

  • Fonksiyon, Denklem, Eşitsizlik, Matris, İfade

Dil Desteği

Sağ üstteki EN / TR geçişiyle arayüz dili değiştirilebilir. Tercih localStorage'a kaydedilir.

Örnekler Galerisi

Ü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.

Yerel Sürüm Geçmişi

  • Ü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 localStorage anahtarında tutulur ve rename/reorder işlemlerinden etkilenmemesi için notebook kimliğiyle eşleştirilir.

Offline durum, yedekleme ve kayıt

  • 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.

Kullanım

Offline dağıtım oluşturma

npm install
npm run build

Build 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.html

dist/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:offline

Bu 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.


Klavye Kısayolları

Kısayol Eylem
Ctrl + + Yakınlaştır
Ctrl + - Uzaklaştır
Ctrl/Cmd + K Tüm notebook'larda ara

Bağımlılıklar

Ç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

PWA ve çevrimdışı kullanım

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_url ve scope relative (./) 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.html dosyasını doğrudan file:// ile açma desteği korunur.
  • Destekleyen tarayıcılar MathNote'u masaüstüne veya ana ekrana bağımsız uygulama olarak kurabilir.

GitHub Pages

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:

  1. npm bağımlılıklarını kurar.
  2. npm run build ile dist/ çıktısını üretir.
  3. Offline doğrulamasını çalıştırır.
  4. dist/ klasörünü GitHub Pages artifact'i olarak yükler.
  5. main branch'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.


Lisans

MIT Lisansı

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages