academia.sh: teori ile sahadan gelen problem aynı derste durabilir mi?
Ücretsiz ve herkese açık, metin merkezli öğrenme platformu; ders kitabı teorisiyle sektörde karşılaşılan problemleri tek ders akışında tutuyor.
Şu an ne yapıyor
Ücretsiz ve kayıt duvarı olmayan bir öğrenme platformu olarak yayında: alan-müfredat-kurs-ünite-ders hiyerarşisi, tam metin arama, ilerleme takibi ve doğrulanabilir sertifika çalışıyor. Bilgisayar bilimleri müfredatını okumak isteyen herkes bugün kullanabilir.
- Başlangıç
- Ağustos 2026 — Devam ediyor
Tür
Teknolojiler
Video kurs platformlarının aksine birincil ortam yazı: okunabilir, aranabilir, alıntılanabilir, tarayıcıda kalıcı. academia.sh bilgiyi bir ders kitabı gibi sunuyor — alan, müfredat, kurs, ünite, ders — ve tamamı ücretsiz. İlk içerik bilgisayar bilimleri, ama model baştan çok disiplinli: matematik ya da dil bilim eklemek şema değişikliği değil, ders yazmak.
Asıl mesele burada değil. Asıl mesele şu: bir ders yalnız teoriyi taşırsa ders notu olur, yalnız sahadan gelen problemi taşırsa blog yazısı. İkisini aynı akışta tutmak — tanımın hemen ardından o tanımın sahada nerede kırıldığını yazmak — neye mal olur?
Teori ile problemi tek derste tutmak
Sahadan gelen problem ayrı bir “alıştırma” varlığı değil; dersin kendi metninde, teorinin devamı olarak duruyor. Problemler uydurulmuş örnekler de değil: sektörde gerçekten karşılaşılmış olanlar. Bu tercih ders varlığını tek tutuyor.
Ayırsaydım iki ürün çıkardı — bir tarafta okunacak metin, diğer tarafta çözülecek alıştırma listesi — ve bölünme anında ilerleme, arama, ölçme de ikiye bölünürdü. Tek varlıkta kalmanın karşılığı iki yerde görülüyor:
İlerleme. Yüzde ders bazında tutuluyor, payda “yayınlanmış aktif dersler”. Bir dersin teorisini okuyup problemini atlamak diye bir durum yok; ikisi aynı ders. Ölçme de aynı ilkeyi izliyor: quiz teoriyi değil dersin bütününü soruyor.
Arama. Metin merkezli bir platformda arama süs değil omurga — video
platformunda arayamadığın şey burada birincil erişim yolu. Postgres tam metin
araması: ağırlıklar başlık A, giriş B, gövde C; sıralama ts_rank_cd, parçacık
ts_headline. search_vector bir generated column değil, olamıyor da —
ama gerekçe to_tsvector değil: iki argümanlı biçimi immutable. Sorun sözlüğün
satırda text olarak durması; regconfig’e cast edilmesi gerekiyor ve o cast
immutable sayılmıyor, Postgres de ifadeyi generated column’da kabul etmiyor.
Vektörü bu yüzden bir trigger üretiyor.
Ücretsiz, kayıtsız, metin merkezli
Çıkan şey açık, ücretsiz ve yalnızca işini yapan bir eğitim platformu: ödeme duvarı yok, reklam yok, dikkati içerikten çeken bir katman yok. İçerikler de uygulamanın veritabanında doğmuyor — markdown olarak ayrı bir GitHub reposunda duruyor, platform oradan besleniyor. Bu ayrım ileriyi de belirliyor: müfredat, katkıya gerçekten açılabilecek tek biçimde, düz metin olarak tutuluyor. Bugün yazan tek kişiyim; yarın olmak zorunda değil.
Yığın sade: Laravel 13, Blade + Livewire, Tailwind,
PostgreSQL 16, Redis; yönetim Filament’te. Markdown sunucuda render ediliyor
(league/commonmark + tempest/highlight), çalışma zamanında Node yok.
Sertifika tarafında bir karar özellikle dişe dokunur: holder_name ve
course_title düzenleme anında donduruluyor. Sonradan değişen bir isim
basılmış belgeyi değiştirmiyor, bir ders işareti geri alınsa bile belge geçerli
kalıyor — geri alma bir hata düzeltmesidir, kazanılmış belgeyi iptal etmez.
Doğrulama sayfası herkese açık ama noindex, nofollow: bir kişinin adı arama
sonuçlarında çıkmamalı.
Repository katmanı yok. Eloquent zaten o rolü üstleniyor; iş akışı barındıran
her şey Action, durumsuz yetenekler Service. Kalite kapıları Pest + Pint +
Larastan level 6.
Model gerçekten disiplin-bağımsız mı
Devam etmesinin sebebi kalan iş listesi değil. Bilginin herkese açık, ücretsiz ve erişilebilir olması gerektiğini düşünüyorum: öğrenmenin önündeki engel bilginin kendi zorluğu olmalı — ödeme ekranı, kayıt duvarı ya da bir şirketin kapatma kararı değil. Metin merkezli olması da, içeriğin ayrı bir repoda durması da bu vizyonun sonucu: okunabilir, kopyalanabilir, birileri devam ettirmek isterse devam ettirilebilir.
Asıl açık soru içerik tarafında ve teknik değil. Şema çok disiplinli, ama bu modelin şartı her dersin sahadan gelen problemi de taşıması. Bilgisayar bilimlerinde bunu yazabiliyorum çünkü o sahada yıllardır çalışıyorum. İkinci bir bilim dalı eklemek migration istemiyor — yazar istiyor. Modelin gerçekten disiplin-bağımsız olup olmadığı ancak o yazar bulununca belli olacak.
Bu işin arkasındaki araştırmalar
Tüm araştırmalarLaravel'in preload eğrisi: 123 dosya, 1.912 dosyadan sekiz kat fazla kazandırıyor
Laravel için elle seçilmiş bir preload nereye kadar iner, ve her dilim ne kadar açılış bedeline mal olur?
Bulgu
Eğri hacimle orantılı değil. İlk 1.592 dosya (Laravel çekirdeği) 30 ms kazandırıyor ve açılışa 1,2 saniye ekliyor. Sonraki 1.094 Symfony dosyası 9,5 ms kazandırıyor, bedava. Ondan sonraki **123 dosya** (psr, carbon) 15,7 ms kazandırıyor — kendinden önceki 1.094 dosyadan fazla. Ve son 1.912 dosya yalnız 1,8 ms kazandırıp açılışa 1,2 saniye daha yazıyor. Yani önceki kaydın tavan olarak ölçtüğü "hepsini derle", eğrinin başlangıç noktası dışındaki en kötü fiyat/performans bölgesi: 2.809 dosyada durmak 12,77 ms ve 1.514 ms açılış verirken, 4.721 dosya 10,96 ms için 2.691 ms istiyor.
15 gün önce ölçüldü
opcache preload deploy faturasını on dört kata kadar siliyor — ama yedi framework'ün beşi onu size vermiyor
`opcache.preload` açıkken yedi PHP framework'ünün deploy sonrası ilk isteği ne kadar sürüyor, bu kazanç neye mal oluyor, ve kimler ona erişebiliyor?
Bulgu
Preload, soğuk ilk isteği 3,5 ile 14,2 kat arasında kısaltıyor: Symfony 35,58 ms'den 2,50 ms'ye, yani Phalcon'un çıplak seviyesine iniyor. Ama yedi adayın yalnız ikisi (Symfony, CodeIgniter) resmî bir preload dosyası yayınlıyor; kalan beşinde kazanç masada duruyor ve kullanıcının kendi yazmasını bekliyor. Yazmak da göründüğü kadar kolay değil: classmap'ten körlemesine üretilen preload Symfony'yi hiç ayağa kaldırmıyor, CodeIgniter'da ise elle seçilmiş resmî dosyadan (3,13 ms) daha kötü sonuç veriyor (5,29 ms). Ve bedel kaybolmuyor: Laravel'in classmap preload'ı ziyaretçiden aldığı 62 ms'yi php-fpm'in ayağa kalkışına 2.340 ms olarak yazıyor.
15 gün önce ölçüldü