Nyheder
Opdateringshistorik for SQL Arena. Nyeste udgivelser øverst.
Every task is now solved by writing SQL — new task formats and catalog filters, plus new task packs.
- New task types: debugging, data-quality checks, index design, query rewriting, schema design with constraints, transactions & locking, and access permissions (GRANT/REVOKE).
- New catalog filters: by task format, difficulty, solved status, dialect (PostgreSQL/MySQL) and favorites.
- Permissions tasks are graded by the resulting privilege set (least privilege enforced).
- Transaction tasks are graded under real concurrency: safe debits, atomic transfers, idempotency, isolation levels and row locks.
- New task packs: ride-hailing analytics, data modification, schema design, recursive hierarchies and product events.
- Your chosen SQL dialect (PostgreSQL/MySQL) now persists across tasks.
- Most tasks now show a preview of the expected output.
- Hundreds of new step-by-step hints, plus an AI mentor that explains the errors in your query.
- Every format is now code-writing: you write real SQL instead of picking an answer.
- Task descriptions are living business scenarios in Russian and English; difficulty levels recalibrated.
- AI task generation: descriptions now read as a real business scenario and no longer give away the solution — formulas, SQL function names and dry table listings are kept out of the text.
- Company examples on the home page and in Premium are now locale-aware: the Russian site shows Russian employers, every other locale shows international ones (Tesla, Uber, Microsoft, Spotify, Meta) whose tasks we carry.
- Removed a stray privacy notice banner on the user profile page.
Brugerfladen taler nu alle EU-sprog — 21 nye sprog.
- Tilføjet 21 EU-sprog: tysk, fransk, italiensk, nederlandsk, polsk, rumænsk, græsk, tjekkisk, ungarsk, svensk, dansk, finsk, slovakisk, bulgarsk, kroatisk, litauisk, slovensk, lettisk, estisk, irsk og maltesisk. Vælg et i sprogvælgeren, eller det registreres automatisk ud fra dit land og din browsersprog.
- Siden „Rapportér en fejl“ hedder nu „Feedback“ (på /feedback) med to faner: „Rapportér en fejl“ og „Foreslå en forbedring“. Forbedringsforslag når teamet på samme måde som fejlrapporter.
- I profilindstillingerne vises nu abonnementets slutdato, og formuleringen „engangsbetaling“ er fjernet.
- Rullemenuen for sprogvælgeren er nu mere kompakt.
- Profiler åbner igen fra ranglisten for indloggede brugere — privatliv skjuler kun en profil for anonyme besøgende. Profilens URL-navn kan ikke længere fjernes, så hver profil forbliver tilgængelig via link.
- Betaling med et udenlandsk kort (fanen Visa/MC) på det russiske website prissættes nu korrekt i USD og behandles via Paddle i stedet for at åbne YooKassa med et rubelbeløb.
Certificering: bestå en eksamen på tid og optjen et verificerbart niveaucertifikat.
- Certificeringseksamener: tre niveauer (Foundations / Practitioner / Expert), 8 opgaver hver, en timer pr. opgave, beståelsesgrænse 7 ud af 8. Hvert forsøg får sit eget datasæt, så svar ikke kan huskes på forhånd.
- Et verificerbart certifikat med en QR-kode, der linker til din offentlige profil; en certifikatsektion vises nu på profilen.
- Slet din konto direkte fra profilindstillingerne.
- Profilindstillingerne er redesignet i en ren, sektionsopdelt liste-stil; Premium-brugere får en animeret ring omkring deres avatar.
- Bedømmelsen er hærdet på 324 opgaver: den kører nu på et skjult datasæt, så du kan ikke længere bestå ved at tilpasse dig det synlige eksempel.
- Editorens autofuldførelse foreslår nu CTE-navne deklareret via WITH, når du skriver FROM/JOIN.
- AI Mentor ser nu din fejl og din aktuelle forespørgsel selv efter Run — en ny "Explain my error"-knap lader dig diskutere enhver fejl, inklusive syntaksfejl.
- Opgave #91: bedømmelsen kører nu på et skjult datasæt — du kan ikke længere bestå ved at tilpasse dig det synlige eksempel (f.eks. via LIMIT eller en hardcodet længde).
- Opgave #13: det afslørende filter-hint er fjernet fra opgaveteksten — du udleder nu løsningen selv.
- Skill Map dækker nu alle opgavekategorier (tilføjet CTE, DDL, transaktioner, optimering) og er blevet større og lettere at læse.
- Skill Map-hintet "hvad skal forbedres" peger nu på emnet med flest uløste opgaver i stedet for et tilfældigt.
- Den årlige aktivitetsgraf viser igen fulde månedsnavne i stedet for at klippe dem ned til et enkelt bogstav.
- Løsninger, der returnerer et tidsinterval (f.eks. forskellen mellem to tidspunkter), fejler ikke længere ved indsendelse.
- Opgave #88: data rettet — afgange fra Paris har nu forskellige varigheder i stedet for tre identiske rækker.
- Fortryd (Ctrl+Z) i editoren bevarer nu separat historik pr. forespørgselsfane.
- Opgave #624: opgaveteksten angiver nu, at gennemsnitsprisen skal afrundes til 2 decimaler.
- SQL-editorens forslag dublerer ikke længere efter navigation mellem opgaver.
- Opgave #621: klubber uden medlemmer vises nu i resultatet med nul i omsætning.
- Opgave #831s sværhedsgrad ændret fra EXPERT til MEDIUM.
SQL Arena er nu flersproget: engelsk, spansk og portugisisk, hver med sine egne side-URL'er og automatisk regionsregistrering.
- Sprogvælger: russisk, engelsk, spansk (Spanien og Latinamerika) og portugisisk.
- Ved første besøg åbner websitet på dit regions sprog, og dit valg huskes.
- Hvert sprog har sine egne side-URL'er (/en, /es, /es-419, /pt-br), som trygt kan deles.
- Premium-betaling i din lokale valuta: RUB, USD, EUR eller BRL afhængigt af regionen.
- Det engelske website er fuldt understøttet; spanske og portugisiske oversættelser rulles ud.
Opgaver om tabeloprettelse accepterer enhver gyldig form, fejlhint er nu relevante, og en opgave med et tvetydigt svar er rettet.
- Opgaven "mest populære kursuspar": eksempeldataene tillod flere lige gyldige svar, mens bedømmeren kun accepterede ét. Opgaven har nu ét enkelt korrekt svar.
- CREATE TABLE-opgaver afviste en korrekt løsning, når eleven navngav en constraint (f.eks.
CONSTRAINT ... PRIMARY KEY). Bedømmelsen sammenligner nu tabelstrukturen — constraint-navne ignoreres. - En fejlet tabeloprettelsesopgave viste et irrelevant "tilføj ORDER BY"-hint. Hintet er nu relevant — om kolonner, typer, NOT NULL og nøgler.
Opgaver om dataændringer løses præcis som opgaveteksten siger — ingen udokumenteret verificerende SELECT.
- INSERT/UPDATE/DELETE- og transaktionsopgaver (inklusive UPSERT, MERGE, SKIP LOCKED) krævede ikke længere en udokumenteret verificerende SELECT. De bedømmes nu ud fra den resulterende tabeltilstand, og opgavesiden viser en "ingen afsluttende SELECT nødvendig"-note.
- Top-løsninger: servicekonti vises ikke længere på listen — i overensstemmelse med den offentlige rangliste.
Opgaver om oprettelse af tabeller og indekser løses nu præcis som opgaveteksten siger — ingen udokumenteret SELECT; den live-opdaterede rangliste virker igen.
- DDL-opgaver (CREATE TABLE, ALTER, CREATE INDEX, fremmednøgler) krævede ikke længere en udokumenteret verificerende SELECT. De bedømmes nu ud fra det resulterende databaseskema, og opgavesiden viser en "ingen afsluttende SELECT nødvendig"-note.
- Ranglisteside: live-opdatering genoprettet — ranglistens WebSocket-forbindelse fejler ikke længere.
- Skemadiagram: nogle opgaver viste ingen forbindelser mellem tabeller — fremmednøglepile vises nu på diagrammet.
- Dialogen "Korrekt!" viser ikke længere et rangfald som en forfremmelse opad — rang-badget vises kun ved en reel forfremmelse.
CREATE / ALTER TABLE-opgaver og andre løsninger med flere trin kan indsendes igen — grænsen for antal statements pr. indsendelse var for stram.
- Grænsen for antal statements pr. indsendelse er hævet fra 3 til 20: DDL-opgaver (CREATE TABLE, ALTER, indekser, triggere) og DML med flere trin afvises ikke længere med en "for mange statements"-fejl.
MySQL-varianten af katalogopgaverne er igen synkroniseret med PostgreSQL — nogle MySQL-opgaver blev bedømt mod forældede data.
- MySQL-varianten af hundredvis af opgaver kørte på et forældet datasæt — seeds er resynkroniseret, MySQL-svaret matcher igen PostgreSQL.
- Seks opgaver, der kun virkede i PostgreSQL, har nu en fungerende MySQL-variant.
- CREATE TABLE / CREATE INDEX / ALTER-opgaver bedømmes ud fra det resulterende tabelskema — en forkert struktur godkendes ikke længere som korrekt.
- INSERT-opgaver, der bruger CURRENT_TIMESTAMP / NOW(), afviser ikke længere et korrekt svar på grund af en kørselstidsforskel.
- Eksempeluddata, der ved et uheld afslørede det præcise svar, er erstattet med ikke-spoilende eksempler; rækkefølgen håndhæves, hvor en opgave kræver det.
- En katalogdækkende gennemgang justerede opgaveteksten, bedømmelsesdataene og referenceløsningen på flere dusin opgaver, hvor de var drevet fra hinanden.
Rettet bedømmelse af løsninger med flere statements — en DELETE/UPDATE med en afsluttende SELECT bedømmes nu korrekt.
- Datoer og tidspunkter i forespørgselsresultater vises nu rent som
2024-01-15 08:00:00i stedet for det tekniske ISO-format.
- DML-opgaver (DELETE, UPDATE, INSERT) med en verificerende SELECT afviser ikke længere et korrekt svar som "ekstra kolonner".
- Opgave #768: opgaveteksten matcher nu det bedømte svar.
- Hintet ved forkert svar foreslår ikke længere at sammenligne med eksempelblokken, som bevidst ikke er præcis.
- Rene UPDATE / DELETE / INSERT-opgaver bedømmes nu ud fra den resulterende tabeltilstand — en forkert ændring godkendes ikke længere som korrekt.
Rettet fem opgaver, hvor opgaveteksten ikke matchede skemaet og svaret.
- Opgave #762, #763, #764, #765, #809: opgaveteksten omskrevet, så den matcher det faktiske skema og det forventede svar.
- AI-opgavegenerering, AI Mentor og fejlrapporteringsformularen: ved rate-limit viser de nu "prøv igen om N sekunder" i stedet for "ThrottlerException".
Rettet opgave #17 — bedømmeren returnerede NULL på grund af en skemafejl.
- Opgave #17 (
average-post-hiatus): skemaet justeret efter seedet, bedømmeren virker igen.
I opgaven "Flyt gamle rækker til arkiv i ét hug — uden race conditions" (#789) bad opgaveteksten om en customer_id-kolonne, der ikke findes i skemaet. Ordlyden er nu justeret efter det faktiske skema og bedømmeren: id, status, amount.
- Opgave #789 (
hard-cte-atomic-archive): beskrivelsen nævnte en ikke-eksisterendecustomer_id-kolonne. Ordlyden matcher nuorders/orders_archive-skemaet og de forventede kolonnerid, status, amount.
Meddelelsen "For mange forespørgsler" viser nu den præcise grænse og sekunder-til-nulstilling i stedet for den kryptiske "ThrottlerException". Den serverside rate-limit er hævet, så hurtig navigation i et track ikke længere rammer loftet.
- Den serverside rate-limit på almindelige API-forespørgsler er hævet 5×. Hurtig frem-og-tilbage-navigation mellem opgaver i et track (10+ parallelle mount-fetches) rammer ikke længere loftet og giver 429.
- Når du rammer rate-limit ved Submit eller Run, viser meddelelsen nu den faktiske grænse og det præcise antal sekunder til genforsøg. Tidligere dukkede kun den kryptiske "ThrottlerException: Too Many Requests" op uden hint om ventetid.
"Start" på track-kortet starter nu igen rent faktisk tracket — et usynligt kort-link-overlay opslugte klikket og førte det til track-detaljesiden.
- På
/trainer/tracksnavigerer "Start"-knappen på et track-kort ikke længere til track-detaljesiden i stedet for at starte tracket. Klik-hvor-som-helst-på-kortet → detaljer er bevaret.
SQL-sandkasse: medbring dine egne tabeller og forespørgsler — ingen opgave, ingen bedømmelse. Plus et ensartet bredt bento-layout på tværs af rangliste, fremskridt, tracks, opgaver og sessioner.
- Ny
/sandbox-side — Monaco-editor, skemapanel, resultatpanel, datafaner pr. tabel, opvarmnings-snippets. Anonyme sessioner timer ud efter 30 min., loggede-ind brugere får 7 dage. - Gemte fiddles: op til 5 på gratis, ubegrænset på Premium. Bibliotek med søgning, kopier-link, sletning og privatlivs-toggle.
- Ensartet bredt layout på tværs af personlige sider — My Fiddles, Fremskridt, Rangliste, Sessioner, Opgaver, Tracks og track-detaljesiden deler nu én ramme med en gradient-hero og et ensartet kortgitter.
Positionsændringspilene på ranglisten er tilbage — tidligere var kolonnen tom, fordi der ikke var noget baseline-snapshot at sammenligne med.
- Indikatoren "steget / faldet / ingen ændring" er tilbage ved hver række på ranglisten. Baseline-snapshottet for forrige uge blev seedet; det almindelige ugentlige cron-job holder det opdateret.
Rettet en fejl, hvor genindsendelse af en allerede løst opgave i det stille fjernede Power — "første forsøg"-bonussen blev slettet. Alle berørte brugere har fået deres Power genberegnet.
- Genindsendelse af en løsning til en allerede løst opgave sletter ikke længere "første forsøg"-bonussen — den Power, opgaven gav, forbliver den samme som lige efter den første vellykkede indsendelse.
- Opgave #107 (fordeling af forbrug efter boggenre for 2005) kræver ikke længere en bestemt rækkefølge — enhver rækkefølge accepteres nu, i overensstemmelse med opgavetekstens ordlyd.
Rettet DB-skemapanelet på flere opgaver — de orange relationslinjer mellem forbundne tabeller blev ikke tegnet.
- På nogle opgaver viste "Skema"-panelet ikke relationerne mellem tabeller (de orange 1:N-pile) — de manglende relationer er tilføjet datasættene.
Rettet opgaven "Inddel kunder i lav / mellem / høj-forbrugere": eksempelsvaret og referenceløsningen var drevet væk fra opgaveteksten — nu bruger alt kunde-id'et og segmenterne lav / mellem / høj.
- Opgaven "Inddel kunder i lav / mellem / høj-forbrugere" (#757): eksempelsvaret og referenceløsningen matcher nu opgaveteksten — kolonner
customer_id,segment, segmenterlow/mid/high, sorteret eftercustomer_id.
En stor "Arena"-rebranding: en ny forside, en helt ny rangliste med podie og live-opdateringer, point omdøbt til "Power" med et stridsøkse-mærke, læringstracks genopbygget og adaptiv AI-opgavegenerering, der faktisk læser dine seneste indsendelser.
- En ny "League"-fane — de 30 brugere tættest på dig efter Power. Sværhedsgradsfiltre på den globale fane (Power genberegnet pr. stige). Stignings- / faldspile ved hver position — bevægelse uge for uge.
- Achievements: emoji erstattet med vektorikoner farvet efter kategori, browser-tooltips viser lokaliserede navne; på
/statser det et gitter med tryk-popovers på mobil. Ny "10 Expert"-achievement. - Hold musen over et navn på ranglisten for et mini-brugerkort. En "Share rank"-knap — linket peger på din offentlige profil med et OG-preview.
- Forsiden omskrevet under "Arena"-brandet: en slagkraftig "Sharpen SQL. Take the offer."-overskrift, et live-scoreboard i heroen, en rang-stige med en "You"-markør, sektioner om træner / tracks / AI / interview-tilstand / fremskridt og et afsluttende "The axe is in your hand. Swing."-bånd. Klar til mobil.
- Point omdøbt til "Power". Lynet er erstattet af en stridsøkse — nu i logoet, faviconnet og preview ved deling af links.
- Ranglistesiden er omskrevet fra bunden: et top-3-podie (guld / sølv / bronze), et personligt fremskridtskort med en bjælke til næste rang, én klæbrig filterbjælke, rang-stigen lige under headeren, en fastgjort "dig"-række, når du er uden for top 50, og live-opdateringer — tabellen reagerer glidende på andres løsninger uden genindlæsning.
- Læringstracks genopbygget. Analyst / Backend / QA / Data Engineering — ca. 50 udvalgte opgaver hver: nogle få repræsentanter pr. emne×sværhedsgrad-celle, fra opvarmning til EXPERT, vægtet mod opgaver fra rigtige interviews. Tilføjet et Data Engineering-track plus et dedikeret interview-forberedelses-track.
- "Generate for me"-knappen er nu reelt adaptiv: den læser dine seneste 40 indsendelser, vælger emnet med den dårligste nylige nøjagtighed og kalibrerer sværhedsgraden til dit niveau — går du i stå, bliver den næste lidt lettere; en stime hæver den.
- Nye besøgende lander på "Night"-temaet som standard (tidligere "Evening"). Hvis du allerede har valgt et tema, bevares dit valg.
- Opgaven "Sig det med ét tal: hvor mange aktive kunder" — den kanoniske løsning krævede kunder med ≥2 betalte ordrer, mens beskrivelsen siger "mindst én gang". Rettet, så den matcher beskrivelsen.
EXPERT-opgaver giver nu reelt 75 power pr. løsning (op til 281 med bonusser) i stedet for de 10 fra EASY-niveauet. Den samlede power for brugere, der allerede har klaret en EXPERT, er genberegnet med tilbagevirkende kraft.
- Belønningstabellen havde ingen række for EXPERT, så bedømmeren faldt tilbage til en standard på 10, og hver EXPERT-opgave gav det samme som en EASY. EXPERT-basen er nu 75 power, med de samme multiplikatorer oveni (første forsøg ×2, bestået Mock Interview ×1,25, premium-løsning ×1,5) — op til 281 power pr. EXPERT-opgave. En migrering genberegnede
xp_totalfor hver profil efter de korrigerede regler, så enhver, der allerede havde løst en EXPERT, får den manglende power automatisk.
Lukkede smuthullet, hvor en opgave kunne "løses" ved at hardcode eksempeluddataene: på 25 datasæt tjekker bedømmeren nu din forespørgsel mod skjulte rækker, der adskiller sig fra dem, der vises i opgavebeskrivelsen.
- Løsninger kører stadig mod de samme tabeller og kolonner som før, men rækkerne i bedømmelses-seedet adskiller sig fra det synlige eksempel. Ethvert reelt forespørgselsbaseret svar består fortsat, mens en hardcodet
SELECT … UNION ALL …, der kopierede eksempel-litteralerne, nu bedømmes som "forkert". 25 datasæt på tværs af det seneste katalog-batch er dækket (lister, CTE, vinduer, pivot, DML, expert).
Rettede to opgaveproblemer rapporteret af elever: det fejlsorterede eksempel i "Studerende efter region" og beskrivelsen, der var drevet væk fra skemaet i nettoomsætningsopgaven.
- Opgave "Studerende efter region" (#357): eksemplet stiger nu efter
rn(Jack / Kim / Lars i første række), og referenceløsningen har en eksplicitORDER BY rn, så den producerer den samme rækkefølge. - Opgave "Brugere med en nettoomsætning på mindst 100" (#783): titel og beskrivelse matcher nu de faktiske data — brugere og
purchase/refund-hændelser, ikke produkter ogsale/refund, med en grænse på 100, ikke 1000.
Seks avancerede opgaver leveres nu med en forhåndsudfyldt tabel — løsninger starter ikke længere med en CREATE TABLE-præambel.
- Seks Hard / Expert-opgaver (UPSERT med enkelt og sammensat kolonne, CTE med
RETURNING, bulk-INSERT … RETURNING,SKIP LOCKED-kø, array-udfoldning viaUNNEST) er blevet en del af resten af det avancerede katalog: tabellen oprettes og seedes i datasættet, og løsningen indeholder kun den operation, der testes, plus en afsluttendeSELECTtil bedømmelse.
- Beskrivelsen af opgaven "Visningstæller" er ikke længere drevet væk fra det forventede output: begge beskriver nu den samme
counters(id, count)-tabel og fem kørsler af samme række.
DDL-opgaver viser ikke længere urelaterede tabeller i side-skemapanelet.
- På 10
CREATE TABLE-opgaver (fra easy til expert) renderede side-skemapanelet tabeller fra et urelateret datasæt — f.eks. viste en artikelopgaveorders. Panelet er nu tomt, som det bør være, når en opgave beder dig om at bygge tabellen fra bunden.
115 nye opgaver, en tre-tilstands tema-vælger Dag / Aften / Nat og en blødere mørk palet.
- Kataloget voksede med 115 opgaver: 20 easy, 35 medium, 45 hard og 15 expert — underforespørgsler, CTE'er, vinduesfunktioner, DML/DDL, MERGE, forespørgselsoptimering, transaktioner, JSONB, rekursion og
LATERAL. - Nyt «Expert»-sværhedsgradsniveau med et violet badge og sit eget filter i kataloget.
- Tre-tilstands tema-vælger: Dag (lys), Aften (blød mørk) og Nat (dyb) — vælg efter omgivelseslyset for at mindske øjenanstrengelse.
- Mørkt tema blødgjort: lærredet er flyttet til en Linear-agtig gråblå (
#1B1B1F) i stedet for den tidligere næsten-sorte, primærteksten er sænket til zinc-300 — mindre halation under lange sessioner. - I «Night»-tilstand sidder SQL-editorruden tre trin dybere end lærredet med et let skub mod ægte sort — læses som et nedsænket panel i samme familie.
- Emne-snydearket i opgaven er nu sværhedsgradsbevidst: på Hard / Expert-niveau skjuler det basale
SELECT/WHERE/ORDER BY/LIMITog fremhæver i stedet avancerede mønstre —STRING_AGG,ARRAY_AGG,GROUPING SETS,LATERAL, JSONB, partielle indekser osv. - Aktive sværhedsgradsfilter-pills skiftede til en brand-accent soft-fill i stedet for massiv sort — de bryder ikke længere det lyse temas udseende.
- Russiske sværhedsgradsetiketter: «Лёгкое» → «Лёгкий», «Среднее» → «Средний», «Сложное» → «Сложный».
24 nye blogartikler for begyndere.
- Emnedækningen er udvidet: DML (
INSERT/UPDATE/DELETE), DDL (CREATE TABLE/ALTER TABLE), aggregater,DISTINCT, NULL-håndtering (CASE WHEN/COALESCE/NULLIF), CTE'er og underforespørgsler, vinduesfunktioner, streng og dato.
- Trænerens snydeark: hvert punkt peger nu på sin egen artikel. Tidligere linkede de fire vinduesfunktions-punkter til én oversigt —
ROW_NUMBER,RANK/DENSE_RANK,PARTITION BYogLAG/LEADhar nu hver sin.
- Opgave #114 "Hvor mange kardiologiafdelinger" — den forventede output-kolonne er omdøbt fra
counttilwards_count, så den ikke længere kolliderer visuelt med det reserverede nøgleord.
Lukkede smuthullet med svar-tilpasning: opgaver bedømmes nu mod et skjult datasæt.
- Bedømmeren kan nu køre en opgave mod et skjult datasæt. Den kanoniske reference genberegnes på de samme data, så korrekte løsninger består fortsat, mens konstanter lånt fra det synlige eksempel falder igennem.
- Opgaven "Ældste klubmedlem" accepterer ikke længere en hardcodet
LIMIT, der er afstemt efter det synlige eksempel — kun en forespørgsel, der udtrykker "alle rækker med den mindste fødselsdato", består.
Finpudsning af prisingskortene og rettelser af "Log ind & abonner"-knappen lige efter v2.2.0.
- Pris og CTA-knap i Free- og Premium-kortene flugter nu på samme Y.
- Trimmede prisnoterne for Crypto og Visa/MC — kun navnet på betalingssystemet er tilbage.
- "Log ind & abonner"-knappen er klikbar igen for ikke-loggede-ind brugere.
Tilføjede crypto- og internationale Visa/Mastercard-betalinger plus skærpet anti-bot-forsvar på login-flowet.
- Crypto-betalinger via NowPayments — BTC, ETH, USDT og andre. $21 kvartalsvis / $28 halvårligt.
- International Visa/Mastercard via Paddle med automatisk VAT/sales tax. $21 / $28.
- Vælger af betalingsmetode på Premium-kortet: RU-kort, Crypto, Visa/MC. Valutaen skifter pr. metode.
- Cloudflare Turnstile på login og registrering — usynlig for mennesker, blokerer bots.
- Kontoen låses i 15 min. efter 5 forkerte adgangskoder (eksponentielt op til 24 t) med en eksplicit nedtælling.
- Login- og registreringsfejl er gjort menneskelige — ikke flere rå "Forbidden" eller "Invalid credentials".
- Indsendelses-rate-limit: 5/min., 30/15 min. pr. bruger. Påvirker ikke rigtige løsningssessioner.
- Efter login vender vi tilbage til den side, du kom fra — inklusive OAuth (Google, GitHub, Yandex).
- At logge ud fra en offentlig side sparker dig ikke længere ud til forsiden.
Færdiggjorde rettelsen af Telegram-, GitHub- og LinkedIn-gemning på profilsiden. Den forrige udgivelse rettede brugernavns-normalisereren på backenden, men frontend-komponenten kortsluttede onBlur — PATCH'en blev aldrig faktisk sendt. Feltet accepterede visuelt input, serveren forblev tom, og efter en genindlæsning var feltet tomt. Nu bruger blur-sammenligningen den værdi, der blev fanget ved fokus, ikke det igangværende input.
- Felterne Telegram, GitHub og LinkedIn på profilsiden gemmer nu igen. En useEffect overskrev "sidst gemte"-referencen ved hvert tastetryk, så onBlur-tjekket sammenlignede den aktuelle værdi med sig selv og sprang PATCH'en over. Blur-tjekket sammenligner nu med et snapshot taget ved fokus.
Rettede gemning af Telegram-, GitHub- og LinkedIn-handles på profilsiden: at skrive placeholder-formatet som t.me/username blev hugget ned til noget vrøvl som t.me. Nu normaliseres ethvert input — bart handle, @handle, t.me/handle eller https://t.me/handle — til et rent brugernavn.
- Felterne Telegram, GitHub og LinkedIn på profilsiden gemmer nu korrekt, når adressen skrives uden
https://. Tidligere blevt.me/durovgemt somt.me,github.com/octocatsomgithub.com, fordi normalisereren krævede ethttp(s)://-skema og ellers klippede værdien ved den første skråstreg.
Fjernede det falske premium-upsell-banner i løsningsresultatpanelet: det udløstes på gratis opgaver og endda for premium-brugere. Det var dead UI til at begynde med — premium-opgaver blokeres ved åbning af opgaven, så editoren ser dem aldrig.
- I "Korrekt!"-fejringsmodalen har pillen "+50% Power per solve — go Premium" nu ordentlig vandret padding — kronen og chevronen rører ikke længere pillens kanter.
- AI Mentor modtager nu kompakt opgavekontekst: aktiv SQL-dialekt, tabeller, relationer, forventede kolonner, eksempeluddata og den seneste bedømmelses-diff. Reference-SQL bruges kun som privat kontekst til fejlforklaringer og senere hint-niveauer.
- Upsell-banneret "Interview-opgaver — Premium" er væk fra feedback-panelet. Tidligere udløste enhver serverside-fejl, der indeholdt ordet
premiumi sin stack trace (f.eks. en manglendesolved_as_premium-kolonne lige efter en migrering), et substring-match og renderede upsellet — selv på gratis opgaver og endda for premium-brugere.
Premium giver nu +50% Power pr. løst opgave — boostet hænger ved opgaven for altid, selv efter abonnementet udløber. AI Mentor dumper ikke længere løsningen ved det første hint og optrapper nu hjælpen pr. opgave. Vi fjernede også starter-kommentaren -- Click ▶ Run fra editoren på den første opgave.
- Premium-abonnement giver en ×1,5 Power-multiplikator på hver løst opgave. Boostet låses fast i løsningsøjeblikket, så det forbliver i din samlede sum, selv hvis abonnementet senere udløber.
- "Korrekt!"-fejringsmodalen viser nu et opgraderingsnudge for gratis-brugere lige under +Power-chippen: "Få +50% Power per solve — go Premium", med link til /pricing.
- AI Mentor optrapper nu hint pr. opgave. Den første forespørgsel får et retningsangivende nudge uden operatornavne; forespørgsel 2-4 tilføjer koncept og kategori; fra forespørgsel 5 kan mentoren nævne
LIKE/WHERE/GROUP BYdirekte. Tælleren nulstilles hver 24. time. - Forklaringer på forkerte svar følger nu de samme hint-niveauer som almindelige hint — de afslører ikke længere specifikke operatorer ved den allerførste fejlede indsendelse.
- Lukkede de resterende fund fra SQL-opgavegennemgangen: rettede Tournament Winners-referencen, justerede TIMESTAMP-previews på flere opgaver og genoprettede PostgreSQL-varianten for én AI-opgave.
- Fjernede starter-kommentaren
-- Click ▶ Run — see what's in this tablefra editoren på den første opgave. Åbnede opgaver starter nu fra en tom editor.
Omarbejdede opgavekatalogets filtre: status blev en 3-trins segmenteret kontrol (Alle / Uløste / Løste) med standard på Uløste, tilføjede et dialektfilter, emne- og virksomhedschips viser nu deres aktuelle opgaveantal, aktive filtre vises som fjernbare pills med en "Nulstil alle"-mulighed.
- Dialektfilter i kataloget: Alle / PG / MySQL — sit eget segment ved siden af statuskontrollen.
- Emne- og virksomhedschips viser nu, hvor mange opgaver der matcher: "Vinduer (43)", "Tinkoff (5)". Chips med nul opgaver fader ud.
- Række med aktive filter-pills: hvert anvendt filter (søgning, sværhedsgrad, status, dialekt, favoritter, emne, tag, virksomhed, region) renderes som en fjernbar pill; "Nulstil alle" sætter alt tilbage til standard.
- Opgavestatusfilteret er nu en 3-trins segmenteret kontrol (Alle / Uløste / Løste) med standard på Uløste. Erstatter den enkelte "Skjul løste"-toggle.
- Sorteringskontrollen flyttet til topbjælken — tidligere gemt nederst og skjult bag scroll.
- Favoritter-toggle flyttet til den øverste filterbjælke — nu ved siden af de andre binære toggles.
- Filter-badget viser ikke længere "1" fra start — standardvisningen "Uløste" tæller ikke som et anvendt filter.
Katalogdækkende gennemgang: bedømmeren afviser ikke længere korrekte svar på grund af DATE-vs-TIMESTAMP-serialisering, eksempel-previews på 60+ opgaver matcher nu det, referenceløsningen faktisk returnerer, og 5 opgaver, der bruger CURRENT_DATE / NOW(), er fastlåst til en fast reference, så previews ikke længere driver dag for dag. Plus en beskrivelsesrettelse på opgaven om månedlige transaktioner fra en brugerfejlrapport.
- Bedømmer: tilføjede dato-som-timestamp-normalisering (
2024-01-01T00:00:00.000Z↔2024-01-01) — korrekte svar får ikke længere "rækkeantal matcher, indhold afviger" på grund af returtype-formatering. - Opgave "Månedlige transaktioner og chargebacks": beskrivelsen præciserer nu, at en chargeback hører til den oprindelige transaktions måned, ikke refunderingsdatoen; previewet viser datoer for den første dag i måneden i stedet for TZ-forskudte ISO-timestamps.
- Regenererede eksempel-previews på 60+ opgaver: numerisk formatering (
100→100.00), tidszonevisning (+03→+00), DATE-som-TIMESTAMP, INTERVAL-som-objekt — previewet matcher nu det, live-runneren returnerer. - Fem opgaver, der bruger
CURRENT_DATE/NOW()/CURRENT_TIMESTAMPi deres seed (#170, #601, #602, #668, #693), er nu fastlåst til2026-05-05 12:00:00 UTC. Previews driver ikke længere.
Omarbejdede bloggen: søgning, navigation efter 10 sektioner, de første 7 begyndertutorials. Kommandonavne i opgavens snydeark er nu klikbare links til artikler. Udgivelsessiden fik et versionstræ med scroll-spy.
- Blog: søgning på tværs af titler, indhold og tags + venstre sektions-sidebar. Den aktive sektion fremhæves ved scroll.
- Blog: de 7 første begyndertutorials —
SELECT … FROM,WHERE,ORDER BY,LIMIT,INNER JOIN,LEFT JOIN, aliasser. - Emne-snydeark i opgaven: kommandonavne er nu blå links til den matchende blogtutorial — åbner i en ny fane.
- Udgivelsesside: versionstræ i venstre side grupperet efter
major.minor; et klik scroller til versionen og opdaterer hash-ankeret. - "Kopiér SQL"-knap på hver række i fanen Indsendelser.
- Russisk flertalsbøjning overalt: "221 задача", "2 задачи", "5 задач" i stedet for det gamle "221 задач".
- Emne-snydearket i opgaven ryster ikke længere, når det udvides — scrollbar-sporet er nu reserveret.
- Markdown-tabeller i blogartikler renderes nu som HTML-tabeller i stedet for en enkelt almindelig tekstlinje.
Katalogdækkende kvalitetsgennemgang: 23 uløselige opgaver repareret, 66 engelske beskrivelser omskrevet, beskrivelser og eksempel-previews justeret på et par dusin flere. Plus én brugerrapporteret rettelse.
- Eksempel-previews på 50+ opgaver matcher nu det, referenceløsningen returnerer.
- Slog dublerede virksomhedstags sammen i opgavefilterchipsene.
- Reparerede 23 opgaver (pharma-*, loyal-*, hotel-*, qa-*), der ikke kunne løses på grund af et skema/seed-mismatch.
- Omskrev engelske beskrivelser på 66 lc-* / lc2-*-opgaver, der tidligere blev leveret med en stub eller et fragment.
- Opgaven "Værelser booket den 2. september 2019" accepterer ikke længere det forkerte svar.
- Ti opgaver, hvor beskrivelsen var uenig med referenceløsningen, er nu konsistente.
- Syv Tochka-opgaver blev leveret med en andens opgavetekst — vi omskrev dem.
69 nye opgaver hentet fra rigtige jobinterviews på det russiske marked (Yandex, Tinkoff, Sber, VTB, Alfa, VK, Ozon, Avito, Magnit, Samokat og 23 andre virksomheder) — bygget op om det bredere PostgreSQL-typeunivers: UUID, JSONB, ENUM, INTERVAL, TSTZRANGE, INET, NUMERIC og POINT. Plus vigtige rettelser fra brugerrapporter og en "Nyheder"-rød-prik-indikator i sidebaren.
- 69 nye opgaver taget fra rigtige interviews hos russiske virksomheder. 33 arbejdsgivere: Yandex, Tinkoff / T-Bank, Sber / SberMarket, VTB, Alfa-Bank, Gazprombank, Rosbank, Sovcombank, MTS / MTS Bank, Otkritie, Renaissance Bank, Megafon, VK, Ozon, Avito, Magnit, Lenta, Wildberries, Cian, ivi, Delimobil, Aviasales, Samokat, Domclick, Lesta, Skypro, Uchi.ru, Sravni.ru, Vizor, CloudReports og Yandex Practicum. Alle tagget Interview, tilgængelige for Premium.
- Rige PostgreSQL-typer i opgaveskemaer. De fleste opgaver plejede at bruge
INT+VARCHAR(100)— fint til lærebogseksempler, langt fra produktion. De nye opgaver introducererUUIDtil klient- og ordre-PK'er,NUMERIC(15,2)til penge ogNUMERIC(12,4)til valutakurser,TIMESTAMPTZtil hændelser,INTERVALtil opkalds- og sessionsvarigheder,TSTZRANGE/DATERANGE/NUMRANGEtil SCD2-historikker og gyldighedsvinduer,JSONBtil metadata og hændelses-payloads,ENUM(med eksplicitCREATE TYPE) til statusser og kategorier,INETtil IP'er i antifraud-opgaver,POINTtil GPS-koordinater,TEXT[]/INTEGER[]til tags og ID-arrays. Så træneren udsætter dig for de samme typer, du møder i produktion. - Rød prik-indikator på "Nyheder"-punktet i sidebaren — vises, når en ny udgivelse er kommet, som du endnu ikke har åbnet. Prikken forsvinder efter ét besøg på
/releases(flaget lever i denne browsers localStorage). Tidligere fandtes indikatoren kun i den øverste navbar; i layouts kun med sidebar var den ikke tilgængelig.
- Korrekt rendering af de nye typer i forespørgselsresultattabellen. Tidligere renderede
JSONB-,INTERVAL- ogPOINT-kolonner som "[object Object]", og arrays (TEXT[],INTEGER[]) kollapsede til kommaadskilte strenge — strukturen var usynlig. Nu renderes JSONB og arrays som læsbar JSON, INTERVAL som1d 02:30:00, POINT som(x, y). Booleans og UUID'er beholder deres tekstrendering. - ER-diagrammer på opgavesiden fik palet-poster for de nye typer: UUID violet, JSONB gul, INTERVAL lilla (samme familie som andre dato/tid-typer), TSTZRANGE / DATERANGE / NUMRANGE pink, INET cyan, POINT pink, brugerdefinerede ENUM'er rosa. Tidligere faldt disse typer tilbage til standardgrå og kunne ikke skelnes fra almindelig INT / VARCHAR.
- De seks rettede opgaver ovenfor fik også et beriget skema i samme stil som det nye interview-sæt:
UUID-primærnøgler,JSONB-payloads,ENUM-typer til køn / kategorier / statusser,NUMERIC(15,2)i stedet forINTtil lønninger og priser,INTERVALtil varigheder. Opgaveordlyden blev justeret en smule for at motivere de nye typer, men det underliggende problem er uændret. Dette er det første skridt i opgraderingen af ældre opgaver — mere i kommende udgivelser.
- Rettede en håndfuld ældre opgaver rapporteret af brugere. "Project Employees II" — ER-diagrammet viste Employee + Department i stedet for Project + Employee, mens det underliggende skema var korrekt; bragte diagrammet i overensstemmelse. "Reported Posts" — beskrivelsen angav ikke, at årsagen til rapporteringen ligger i
extra-kolonnen: nu gør den. "Sales Analysis I" — referenceløsningen brugteSUM(price), selvom skemaet har enquantity-kolonne, hvilket var forvirrende; omformuleret tilSUM(quantity * price), tættere på omsætning i den virkelige verden. "Swap Salary" — opgaven var koblet til det forkerte datasæt (Employee + Department i stedet forSalary(id, name, sex, salary)), hvilket gjorde den uløselig; genkoblet til det kanoniske datasæt. Samme stille ER-drift i "Project Employees III" og "Reported Posts II" fik den samme rettelse.
Stor udgivelse: en ny venstre-sidebar-navigation, den strenge Mock Interview-tilstand med en +25% Power-bonus, offentlige profiler og venner, e-mail-notifikationer, brandfarvede virksomhedstags, ekstra filtre og en blok med partnerkurser. Plus en vigtig privatlivsrettelse på tværs af konti og dusinvis af UX-finpudsninger.
- Partnerkursus-blok. På opgavesiden (brede skærme) viser en højre kolonne et udvalg af partnerkurser; på mobil er det et vandret karrusel over listen. Kortene linker ud til partnernes landingssider med UTM-tags — for os en måde at holde abonnementsprisen nede ved at dække infrastrukturomkostninger.
- Ny Mock Interview-tilstand — en streng simulation af et rigtigt interview. Enhver enkelt overtrædelse (faneskift, indsætning, fullscreen-udgang, > 1 sekunds vinduesfokus-tab) får sessionen til automatisk at fejle. Hint, AI Mentor og snydeark er skjult og låst. Varigheder: 5 / 10 / 15 / 30 / 60 minutter. Gratis-niveau — 1 forsøg om dagen; Premium — ubegrænset. Mens en session er aktiv, er den omgivende navigation (sidebar, "Opgaver", "Top-løsninger", "Næste opgave", "Forlad track", Prev/Next/Random) låst — den eneste vej ud er den eksplicitte "Afslut"-knap eller at lukke fanen (hvilket automatisk opgiver sessionen).
- +25% Power for hver opgave klaret i Mock Interview-tilstand — bonussen er pr. opgave og markeret på rapporten efter sessionen. Ranglisten har nu en informativ "Mock"-kolonne (samme antal vises på profilkortet og på
/u/<username>); den påvirker ikke den Power-baserede sorteringsrækkefølge. - Offentlige profiler på
/u/<username>: vælg et kort handle og slå den offentlige toggle til — enhver anonym besøgende ser din rang, Power, aktuelle stime, antal achievements, aktivitets-heatmap og GitHub- / Telegram- / LinkedIn-links. Ingen private data eksponeres. - Venner: tilføj brugere via deres offentlige handle, administrér indgående og udgående anmodninger, se en dedikeret venne-rangliste-fane med deres Power, stime og antal løste opgaver.
- Favoritter: hvert opgavekort har nu en stjerne — klik på den, og opgaven lander i "Kun favoritter"-filteret. Listen lever på serveren knyttet til din konto og overlever browserskift.
- E-mail-notifikationer (toggles i profilen). "Gem din stime" — aftenpåmindelse, når din stime er ≥ 3 dage, og du ikke har løst noget i dag. "Ugentligt resumé" — lørdag morgen-opsummering med sidste uges løste opgaver, aktuel stime og svageste kategori.
- Premium-brugere er visuelt markeret, hvor end avatarer vises: en holografisk gradient-ring (rangliste, venner, profil, sidebar, offentlig
/u/<username>-side); et lille Crown-badge i hjørnet på store avatarer. Påvirker ikke sorteringsrækkefølgen. - Brandfarvede virksomhedstags på opgavekort: gul for Yandex / Tinkoff / Beeline, grøn for Sberbank / Spotify / OpenAI, blå for VK / Ozon / Google / Meta, rød for MTS / Alfa / Tesla, lilla for Stripe / Skypro / Wayfair, orange for Amazon / Alibaba osv. Tidligere var hvert tag en enkelt lilla.
- Ekstra SQL-klausul-chips i "Emne"-filteret på opgavesiden: ud over de 8 brede kategorier (SELECT, JOIN, underforespørgsler, window, aggregater, CTE, DML, DDL) kan du nu slå
GROUP BY,COUNT,HAVINGtil. Bland dem med kategorier for skarpere filtrering. - "DB-skema"-panelet på opgavesiden kan nu foldes sammen. Toggle-knappen ved siden af opgavetitlen skjuler kolonnen og frigør bredde til editoren og resultattabellen. Sammenfoldningstilstanden huskes pr. browser, så skemaet åbner på samme måde på den næste opgave.
- 8 nye interview-opgaver fra Tochka — fra EASY til HARD. CRM-scenarier (find klienter med en aktiv ansøgning), porteføljeberegninger (struktur, vægtet-gennemsnitlig løbetid, værdidynamik), obligationsforespørgsler med vinduesfunktioner. Løsninger til både PostgreSQL og MySQL.
- Blogsektion på
/blog. Lange tutorials — vi starter med en dybdegående gennemgang af vinduesfunktioner. Tosproget indhold, slug-URL'er, OG-kort til deling på sociale medier. Tilgængelig fra footeren og bunden af sidebaren. - Tilpasset 404-side. Den gamle Next.js-standard renderede sort-på-hvid tekst — usynlig i mørk tilstand. Den nye side bruger tema-tokens og bor inde i den fælles ramme, så navigationen er inden for rækkevidde.
- Navigationen redesignet. For loggede-ind brugere inde i appen er den primære navigation flyttet til en venstre sidebar — Trainer, Fremskridt, Rangliste og de andre sektioner bor der, med Power + stime under din avatar og sprog/tema-toggles i bunden. Landingssiden, prisingen og auth-flows beholder den slanke topbjælke. Hjælpesider (Nyheder / Rapportér en fejl / Blog) arver det chrome, du kom fra.
- Premium gradient-ringen omkring avatarer vises nu på alle rangliste-faner — tidligere optrådte ringen kun på "Hele tiden"-fanen og forsvandt i det stille på "Uge" og "Måned", fordi backenden ikke udsendte abonnementsflaget for de periodiske ranglister.
- Navne- og avatar-redigeringer i din profil afspejles nu med det samme i sidebaren — ingen genindlæsning af siden nødvendig. Tidligere kunne det gamle brugerkort hænge ved indtil en fuld genindlæsning.
- Datalækager på tværs af konti ved skift mellem brugere i samme browser. Tidligere, efter logout / login med en anden konto, kunne disse blive ved: AI Mentor-chattråde, SQL-kladder i editoren, "løst"-flag pr. opgave, aktive mock-interview-sessioner, AI-genereringstæller, favoritter-cache. Nu sletter logout og enhver login-vej (formular, OAuth, e-mail-bekræftelse) alt knyttet til den forrige bruger.
- Linket "Venne-rangliste" fra profilen lander nu direkte på Venner-fanen — tidligere droppede det dig på den globale rangliste. "Start her"-begynderbanen kommer ikke længere tilbage, efter du har afvist den; tidligere blev afvisningen nulstillet ved hvert logout / login.
- Dusinvis af finpudsninger af mobil-layout og interaktion: en mere kompakt rapport-modal efter sessionen, korrekt filterafstand på smalle skærme, feedback-banneret overlapper ikke længere sidepanelet ved 1024px, navn- + e-mail-felter på fejlrapporteringssiden for anonyme indsendere.
Editor-UX-hotfix på smalle skærme: "Editor-indstillinger"-popuppen klippes ikke længere af kodepanelet og løber ikke længere ud over viewport-kanten på mobil. Den samme tandhjulsknap, som desktop har, bor nu også i mobil-værktøjslinjen, og skriftstørrelse-indstillingen anvendes endelig på mobil-editoren.
- "Editor-indstillinger"-popuppen kunne blive klippet af sidekanterne og havde ingen intern scroll — på en smal laptop eller en telefon var halvdelen af indstillingerne simpelthen usynlige. Popuppen renderes nu oven på hele siden (via en portal), klemmes automatisk ind i det synlige område og får en intern scrollbar, når indholdet overstiger viewport-højden. Headeren med titlen og luk-knappen forbliver klæbrig under scroll.
- På mobil-editorvisningen (≤1024px) manglede værktøjslinjen tandhjulet til editor-indstillinger — "Skriftstørrelse" var kun tilgængelig fra desktop. Tandhjulet sidder nu ved siden af PG/MySQL og Format, og skriftstørrelse-indstillingen skalerer faktisk mobil-editorens input.
Hotfix fra en fejlrapport: opgave #240 ("Staff Bonuses") renderede det forkerte skema — den viste Employee + Department i stedet for det rigtige Employee + Bonus, hvilket gjorde opgaveteksten uforståelig.
- Opgave #240 "Staff Bonuses": skemaviseren renderede forældede tabeller
Employee + Department(med felternedepartment_id,manager_id) og en tomDepartment-fane. Sandkassen og referenceløsningen var korrekte hele tiden — kun viser-metadataene var forkerte. Nu viser skemaet de rigtige tabellerEmployee + Bonusmed relationenBonus.empId → Employee.empId.
Berigede datasæt på tværs af 268 af 339 opgaver — fyldigere kildetabeller, flere meningsfulde rækker i det forventede output, opgaver føles ikke længere ødelagte.
- Massiv databerigelse: 268 af 339 opgaver fik fyldigere seed-data — typisk 6-12 rækker i primærtabeller i stedet for 2-4, med variation langs de filter-/JOIN-/GROUP BY-akser, som referenceløsningen anvender. 137 unikke datasæt berørt. Referenceløsninger og skemaer er uændrede. Brugerfremskridt er bevaret — allerede løste opgaver forbliver løst, Power og achievements genberegnes ikke.
- Hver beriget opgave blev valideret: referenceløsningen blev kørt mod det nye seed via executoren, sample_output regenereret fra det rigtige resultat.
- Opgave #38 (
well-paid-employees) — oprindeligt en v1.2.4-hotfix, nu en del af den bredere gennemgang.
Hotfix fra en fejlrapport: panelet "Eksempel på forventet output" præciserer nu, at rækkeantallet der ikke behøver at matche skematabellerne.
- Tilføjede en ansvarsfraskrivelse over panelet "Eksempel på forventet output": "sådan ser et korrekt svar ud — dets rækkeantal er dets eget, det behøver ikke at matche skematabellerne". Tidligere talte brugere rækker i en af skematabellerne og antog, at opgaven var ødelagt, når tallene afveg.
Hotfix fra en fejlrapport: opgave #38 "Løn højere end chefen" kører nu på et ordentligt datasæt med tre rigtige cases. Plus en lille orange prik på "Nyheder?", når en frisk udgivelse kommer.
- En lille orange prik vises på "Nyheder?"-navigationspunktet, når en frisk udgivelse kommer. Ét besøg på
/releasesrydder den indtil næste udgivelse.
- Opgave #38 (
well-paid-employees): datasættet var for tyndt — 6 medarbejdere og en enkelt "underordnet tjener mere end chefen"-case, hvilket fik det til at se ud, som om dataene var forkerte. Udvidet til 9 medarbejdere på tværs af to afdelinger med tre tydelige cases (Eve > Alice, Frank > Dave, Henry > Bob).
Ny "Rapportér en fejl"-side med skærmbilledevedhæftninger, en sekundær navigationsgruppe og en mere kompakt "Start her"-bane på mobil.
- Ny "Rapportér en fejl"-side i navbaren: emne- + beskrivelsesformular med op til 5 skærmbilleder / korte klip (drag-and-drop understøttet). Rapporter lander i vores indbakke til hurtig triage.
- Navbaren får en sekundær gruppe — "Nyheder?" og "Rapportér en fejl" — adskilt fra de primære faner af en tynd lodret skillelinje.
- Begynder-"Start her"-banen er mere kompakt på mobil — kortere titel, skjult beskrivelse, smallere kort. Frigør plads til selve opgavelisten.
- Begynder-"Start her"-banen blinker ikke længere et splitsekund, når opgavesiden åbnes — den renderes nu kun, efter
/progresser afgjort. - Release-notes-highlightet (one-lineren øverst) renderer nu backticks korrekt — viste tidligere det bogstavelige "
?lang=" i stedet for en stiliseret kode-pill. - Den fantomagtige lodrette scrollbar på "Læringstracks"-siden er væk —
min-h-screenparret med navbaren tvang ~60px ekstra højde, selv når indholdet passede.
UX-finpudsning på tværs af træneren plus en ?lang=-URL-parameter til annoncer og direkte locale-specifikke links.
- Land på et bestemt sprog via
?lang=eneller?lang=rui URL'en:https://sql.coderang.dev/?lang=en. Praktisk til annoncer og deling af locale-specifikke links; valget huskes i et år.
- Når de daglige AI-hint slipper op, bliver "Explain"-knappen til "Snydeark" og åbner emnereferencen.
- Favorit-stjernen er nu synlig på mobil og svagt synlig på desktop i stedet for skjult, indtil man holder musen over.
- Opgavebeskrivelsen hopper ikke længere, når snydearket udvides. Stjernen er lysere ved hover.
- På DDL-opgaver viser skemapanelet "ingen starttabeller; opret dem" i stedet for et tomt lærred.
- AI-knappen pulserer nu faktisk kun ved fejl (animationsklassen var aldrig defineret før).
- Power og Streak i navbaren seedes fra localStorage før serverhentningen — ikke flere "0 ⚡"-glimt.
- AI-genereringstælleren nulstilles ikke længere til 0 efter omdirigering til den genererede opgave.
- Mobile finesser: sværhedsgrads-badges med ens bredde (Star justeret), bundfanens tekst passer, skala-animation for den daglige tæller, tooltip på stime-ikonet, russiske flertalsregler.
- Russiske virksomhedsnavne (Сбербанк, Яндекс, Авито…) renderes nu i latinsk translitteration (Sberbank, Yandex, Avito) i engelsk UI; kyrillisk forbliver på russisk.
- Snydeark-postnavne (Aliasser, Skalar-underforespørgsel osv.) oversættes nu korrekt ved sprogskift.
- Den ugentlige/månedlige rangliste anvender nu første forsøg ×2-bonussen og ignorerer genindsendelser, i overensstemmelse med hvordan livstids-Power beregnes. Tidligere viste periodevisningen omtrent halvdelen af livstid — en fejl i matematikken, ikke i dataene.
- Fjernede en død Solutions-fane — ingen knap aktiverede den, men den dublerede indlæsningen.
- Backticks efterlader ikke længere et mellemrum før efterfølgende tegnsætning ("
Action."). - Tomme-tilstande i resultatruden oversættes nu korrekt til engelsk.
Finpudsning til dataændringsopgaver og generel beskrivelsesrendering.
- Bemærkning til DDL/DML-opgaver: UPDATE/INSERT/DELETE- og CREATE/ALTER/DROP-opgaver viser nu en kort "ingen afsluttende SELECT nødvendig"-besked — ikke mere gætteri om, hvad der skal udskrives.
- Emne-snydearket respekterer nu opgavetypen: DML-opgaver viser ikke længere SELECT/ORDER BY/LIMIT, DDL-opgaver viser kun skemaændringskommandoer.
- Backtickede tokens i opgavebeskrivelser (\
id = 4\, \users.email\) renderes nu som accent-kode-pills i stedet for rå tekst — beskrivelser læses præcis, som forfatterne skriver dem. - Kodeblokke i snydearket har nu en accentfarvet venstrebjælke og en diskret kant — de læses som rigtige kode-snippets i stedet for grå klatter.
Onboarding af nybegyndere: en "Start her"-bane, starter-SQL på din første opgave og et emne-snydeark inde i hver opgave. Hint ved forkert svar er nu specifikke og bruger ikke af din AI-kvote.
- "Start her"-bane øverst på opgavesiden — 8 simple SELECT-opgaver til førstegangsbrugere. Vises, indtil du løser noget; træk-for-at-scrolle med en gribe-markør.
- Starter-SQL i editoren. Den allerførste opgave, du åbner, udfylder
SELECT * FROM <first_table> LIMIT 5;på forhånd, så du straks kan trykke ▶ og se, hvordan dataene ser ud. - Emne-snydeark. Opgavepanelet har nu en sammenfoldelig referenceblok med relevante SQL-kommandoer, syntaks og en enkeltlinjeforklaring — skræddersyet pr. emne: SELECT, JOIN, aggregater, underforespørgsler, vinduer, CTE, DML, DDL.
- Banneret ved forkert svar er nu specifikt: det navngiver ekstra/manglende kolonner, rækkeforskelle, sorteringsproblemer og almindelige SQL-fejl. Kører lokalt, ingen AI-kvote forbruges.
Alias-bevidst autofuldførelse i SQL-editoren og store forbedringer af mobil-layoutet.
- Udgivelsesside: opdateringshistorikken er nu synlig på /releases.
- Alias-bevidst autofuldførelse. Efter
<alias>.afgrænses forslagene til netop den ene tabels kolonner. Aliasserne selv fuldføres på Tab. .er nu et trigger-tegn: forslag dukker automatisk op efter det, ingen Ctrl+Space nødvendig.
- Mobilmenuen overlejrer nu indholdet i stedet for at skubbe siden ned. Lukker ved tryk udenfor.
- 300+ opgavebeskrivelser omskrevet: tilføjet forretningskontekst, oplistet output-kolonner, gjort sortering og afrunding eksplicit.
- Mobil-opgavebeskrivelsen scroller nu korrekt, når teksten er lang. Den plejede at sidde fast og blokere adgangen til fanerne i bunden.
- Trænerens bundfanebjælke er nu altid synlig på enhver mobilbrowser (Yandex Browser, MIUI, Samsung Internet). Den plejede at blive klippet under viewporten.
- Mobilmenuen er nu fuldt uigennemsigtig. Tidligere skinnede 5% af baggrundsindholdet igennem på browsere uden understøttelse af backdrop-filter.
- På smalle skærme (320px og derunder) løber opgavesorteringsdropdownen ikke længere ud over højrekanten.
- Gammel autofuldførelsesfejl: at skrive
t.eefterFROM employee tindsattet.employee.salary(ugyldig SQL). Aliasset respekteres nu.
Første stabile udgivelse af SQL Arena.
- 259 udvalgte SQL-opgaver på tværs af 6 kategorier: SELECT, JOIN, aggregat, underforespørgsel, window, DML.
- 96 interview-opgaver fra førende tech-virksomheder (Google, Meta, Amazon, Stripe osv.).
- Understøttelse af to SQL-dialekter — PostgreSQL og MySQL med øjeblikkelig skift.
- AI-opgavegenerering: unikke opgaver tilpasset dit færdighedsniveau.
- AI Mentor: kontekstuelle hint uden at afsløre svaret.
- 3 læringstracks: strukturerede forløb fra grundlæggende til avanceret SQL.
- SQL-eksekvering i realtid i et sandkassemiljø med resultatbedømmelse (kolonne-/række-/rækkefølge-diff).
- OAuth-autentificering via GitHub, Google, Yandex plus tilmelding med e-mail/adgangskode.
- XP-baseret (Power) rangliste, brugerprofiler, achievements, mørkt og lyst tema.
- Premium-abonnement med YooKassa-integration og anti-bot rate limiting.
- Interaktive ER-skemadiagrammer, Monaco-editor med SQL-fremhævning og -formatering.
- Tosproget brugerflade: russisk og engelsk.