ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.