ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
İki kişilik, ortak kelime havuzlu ve düello modlu YÖKDİL Fen kelime çalışma uygulaması. Saf HTML/CSS/JS (build adımı yok), veri katmanı Supabase. Neden Supabase: kelime havuzu + düello + liderlik tablosu ilişkisel veri (kullanıcılar, kelimeler, düello sonuçları arasında join/aggregate gerekiyor), bu da SQL'e NoSQL'den daha uygun. Ücretsiz planı 2 kişilik kullanım için fazlasıyla yeterli, sunucu kurmaya gerek yok.查看完整 README ↗
İki kişilik, ortak kelime havuzlu ve düello modlu YÖKDİL Fen kelime çalışma uygulaması. Saf HTML/CSS/JS (build adımı yok), veri katmanı Supabase.
index.html Sayfa iskeleti, tüm sekmeler
css/styles.css Tema (light/dark), tüm görsel stiller
js/config.js Supabase config sabitleri + localStorage okuma/yazma (kimlik, tema)
js/supabaseClient.js Supabase client oluşturma
js/identity.js Cihaz bazlı kullanıcı kimliği (auth yok)
js/api.js Tüm veritabanı sorguları (words, duels, leaderboard...)
js/wordUtils.js Kelime alanı normalizasyonu (küçük harf, virgüllü eş anlam eşleşmesi)
js/app.js Bootstrap, sekme yönlendirme
js/modules/*.js Her sekme için ayrı modül (home, addWord, pool, training, duel, leaderboard, connection)
supabase/schema.sql Supabase'de çalıştırılacak tablo şeması
Neden Supabase: kelime havuzu + düello + liderlik tablosu ilişkisel veri (kullanıcılar, kelimeler, düello sonuçları arasında join/aggregate gerekiyor), bu da SQL'e NoSQL'den daha uygun. Ücretsiz planı 2 kişilik kullanım için fazlasıyla yeterli, sunucu kurmaya gerek yok.
supabase/schema.sql dosyasının tamamını yapıştırıp çalıştır. Bu, gerekli tabloları (users, words, weak_words, duels, duel_participants, duel_answers) ve erişim izinlerini kurar.Project URL ve anon public key değerlerini kopyala.
schema.sqlidempotent yazıldı (if not exists/add column if not exists) — proje zaten kuruluysa dosyayı tekrar SQL Editor'de çalıştırmak güvenlidir, sadece eksik kolon/tabloları ekler. Canlı düello özelliği eklendiğinde bu dosya güncellendi; mevcut bir projeyi güncellemek için dosyayı tekrar çalıştırman yeterli.
Supabase URL + anon key, js/config.js içinde sabit değer olarak tutuluyor — kullanıcıdan istenmiyor. anon key herkese açık kullanılmak üzere tasarlanmıştır (erişim RLS politikalarıyla korunur), koda gömülü olması güvenlik açığı değildir. Gerçek gizli anahtar service_role key'i asla client koduna konmamalı — bu projede zaten kullanılmıyor.
İlk açılışta sadece görünen ad sorulur, bu da o cihazın tarayıcısında localStorage'da saklanır ve bir daha sorulmaz. "Bağlantı" sekmesinden bu kimlik cihazdan silinebilir (tekrar ad girmek gerekir).
Aynı ismi başka bir cihazda (örn. telefonda) da girersen yeni bir kullanıcı açılmaz — sistem users tablosunda aynı isimde kayıtlı biri olup olmadığına bakar, varsa o kimliği bu cihaza da bağlar. Böylece aynı kişi birden fazla cihazdan aynı hesapla (aynı istatistik/kelime geçmişiyle) girebilir. İsimler birbirinden ayırt edilsin diye iki farklı kişi aynı ismi kullanmamalı.
Kendi Supabase projeni kullanmak istersen (örn. farklı bir kopya kurarsan), js/config.js en üstündeki SUPABASE_URL ve SUPABASE_ANON_KEY sabitlerini kendi değerlerinle değiştirmen yeterli — build adımı yok, direkt dosyayı düzenleyip deploy edersin.
Node.js kurulu olmalı (npx için).
npm run dev
veya doğrudan:
npx serve . -l 3000
Sonra tarayıcıda http://localhost:3000 aç. İlk açılışta sadece adını gireceksin.
yokdilfen.vercel.app) her iki arkadaşta da açılır. Her push'ta otomatik güncellenir.Düelloyu oluşturan "bekleme odası"na girer (duels.live_status='waiting'). Rakip Savaş sekmesinde "Katılabileceğin Canlı Düellolar" listesinden katılınca (live_status='active', ortak bir current_question_started_at zaman damgası) ikisi de aynı anda aynı soruyu görür. Her cevap sunucu zaman damgasıyla duel_answers tablosuna yazılır (Supabase Realtime ile karşı tarafa anında yansır). Her sorunun sabit bir süresi vardır (8/12/20sn); biri doğru cevaplar cevaplamaz o an soru herkes için ilerler (rakip cevap veremeden geçilir, bu yüzden ceza almaz) — kimse doğru bilemezse tam süre dolunca ilerler. Sayfa yenilenirse (current_question_index, geçmiş duel_answers satırları üzerinden) kaldığı yerden devam eder.
"Karma" yönde her sorunun TR→EN mi EN→TR mi olacağı soru sırasına göre deterministiktir (index çift/tek), böylece iki oyuncu da aynı soruyu aynı yönde görür.
Uygulama başta hem "kendi zamanında" hem "canlı" iki ayrı düello modu ile kuruldu, ama "kendi zamanında" mod kullanışsız bulunup kaldırıldı — artık tek mod var: canlı.
HP/eleme yok, düz puan sistemi: doğru cevap +15, aktif olarak yanlış cevap gönderme -5, süre dolup hiç cevap verilmezse (ne kendisi ne rakip bilemezse) 0 puan, ceza yok. Hız bonusu ya da seri çarpanı uygulanmaz; "en uzun seri" istatistiği yine de ayrıca tutulur.
Tamamlanmış düello katılımları (duel_participants) üzerinden kullanıcı bazında toplanır: toplam puan (asıl sıralama kriteri), kazanılan düello sayısı (bir düello bitince skoru yüksek olan duels.winner_id olarak yazılır, eşitlikte kimse kazanmaz — eşit toplam puanda ikinci sıralama kriteri), doğru/yanlış toplamı, en uzun seri maksimumu, maç sayısı.
kötüleşmek, bozulmak). Düelloda bunlardan sadece birini doğru yazmak yeterlidir. Kelime/anlam alanları kaydedilirken otomatik küçük harfe çevrilir (örnek cümle etkilenmez), böylece büyük/küçük harf farkı eşleşmeyi bozmaz.-, :, | ya da tab (Excel/Sheets'ten kopyalayınca otomatik) ile ayrılır; aynı ayraçla üçüncü bir parça verilirse örnek cümle olarak alınır. Örnek: run - koşmak veya deteriorate - kötüleşmek, bozulmak - Their health deteriorated quickly.. Ayraç bulunamayan satırlar atlanır, kaç satırın eklenip kaçının atlandığı işlem sonunda gösterilir.