Novità
Cronologia degli aggiornamenti di SQL Arena. Le versioni più recenti in cima.
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.
L'interfaccia ora parla tutte le lingue dell'UE — 21 nuove lingue.
- Aggiunte 21 lingue dell'UE: tedesco, francese, italiano, olandese, polacco, rumeno, greco, ceco, ungherese, svedese, danese, finlandese, slovacco, bulgaro, croato, lituano, sloveno, lettone, estone, irlandese e maltese. Scegline una nel selettore di lingua, oppure viene rilevata automaticamente in base al tuo paese e alla lingua del browser.
- La pagina «Segnala un bug» ora è «Feedback» (su /feedback) con due schede: «Segnala un bug» e «Suggerisci un miglioramento». I suggerimenti di miglioramento arrivano al team come le segnalazioni di bug.
- Nelle impostazioni del profilo ora è visibile la data di fine dell'abbonamento e la dicitura «pagamento una tantum» è stata rimossa.
- Il menu a discesa del selettore di lingua ora è più compatto.
- I profili si riaprono dalla classifica per gli utenti che hanno effettuato l'accesso: la privacy nasconde un profilo solo ai visitatori anonimi. L'identificatore URL del profilo non può più essere cancellato, quindi ogni profilo resta raggiungibile tramite link.
- Il pagamento con una carta estera (la scheda Visa/MC) sul sito russo viene ora calcolato correttamente in USD ed elaborato tramite Paddle, invece di aprire YooKassa con un importo in rubli.
Certificazione: supera un esame a tempo e ottieni un certificato di livello verificabile.
- Esami di certificazione: tre livelli (Foundations / Practitioner / Expert), 8 attività ciascuno, un timer per attività, soglia di superamento 7 su 8. Ogni tentativo riceve il proprio dataset, quindi le risposte non si possono memorizzare in anticipo.
- Un certificato verificabile con un codice QR che rimanda al tuo profilo pubblico; nel profilo compare ora una sezione dedicata ai certificati.
- Elimina il tuo account direttamente dalle impostazioni del profilo.
- Le impostazioni del profilo sono state ridisegnate in uno stile pulito a elenco per sezioni; gli utenti Premium ottengono un anello animato attorno all'avatar.
- Valutazione rafforzata su 324 attività: ora viene eseguita su un dataset nascosto, quindi non puoi più passare adattando la soluzione all'esempio visibile.
- L'autocompletamento dell'editor ora suggerisce i nomi delle CTE dichiarate tramite WITH quando digiti FROM/JOIN.
- AI Mentor ora vede il tuo errore e la query corrente anche dopo Run — un nuovo pulsante "Spiega il mio errore" ti permette di discutere qualsiasi errore, inclusi quelli di sintassi.
- Attività #91: la valutazione ora viene eseguita su un dataset nascosto — non puoi più passare adattando la soluzione all'esempio visibile (ad esempio tramite LIMIT o una lunghezza hardcoded).
- Attività #13: rimosso dal testo il suggerimento che svelava il filtro — ora devi ricavare la soluzione da solo.
- La Skill Map ora copre ogni categoria di attività (aggiunte CTE, DDL, transazioni, ottimizzazione) ed è più grande e più leggibile.
- Il suggerimento "cosa migliorare" della Skill Map ora indica l'argomento con il maggior numero di attività non risolte, invece di uno casuale.
- Il grafico dell'attività annuale mostra di nuovo i nomi completi dei mesi invece di troncarli a una sola lettera.
- Le soluzioni che restituiscono un intervallo di tempo (ad esempio la differenza tra due orari) non danno più errore all'invio.
- Attività #88: dati corretti — le partenze da Parigi ora hanno durate distinte invece di tre righe identiche.
- L'annulla (Ctrl+Z) nell'editor ora mantiene una cronologia separata per ogni scheda di query.
- Attività #624: il testo ora specifica che il prezzo medio deve essere arrotondato a 2 cifre decimali.
- I suggerimenti dell'editor SQL non si duplicano più dopo aver navigato tra le attività.
- Attività #621: i club senza iscritti ora compaiono nel risultato con ricavi pari a zero.
- Difficoltà dell'attività #831 cambiata da EXPERT a MEDIUM.
SQL Arena è ora multilingue: inglese, spagnolo e portoghese, ciascuno con i propri URL di pagina e rilevamento automatico della regione.
- Selettore di lingua: russo, inglese, spagnolo (Spagna e America Latina) e portoghese.
- Alla prima visita il sito si apre nella lingua della tua regione, e la tua scelta viene ricordata.
- Ogni lingua ha i propri URL di pagina (/en, /es, /es-419, /pt-br) che si possono condividere in sicurezza.
- Checkout Premium nella tua valuta locale: RUB, USD, EUR o BRL a seconda della regione.
- Il sito in inglese è completamente supportato; le traduzioni in spagnolo e portoghese sono in fase di rilascio.
Le attività di creazione tabelle accettano qualsiasi forma valida, i suggerimenti d'errore sono ora pertinenti, ed è stata corretta un'attività con risposta ambigua.
- L'attività "coppia di corsi più popolare": i dati di esempio ammettevano più risposte ugualmente valide mentre il valutatore ne accettava una sola. L'attività ora ha un'unica risposta corretta.
- Le attività CREATE TABLE rifiutavano una soluzione corretta quando lo studente assegnava un nome a un vincolo (ad esempio
CONSTRAINT ... PRIMARY KEY). La valutazione ora confronta la struttura della tabella — i nomi dei vincoli vengono ignorati. - Un'attività di creazione tabella fallita mostrava un suggerimento irrilevante "aggiungi ORDER BY". Il suggerimento ora è pertinente — su colonne, tipi, NOT NULL e chiavi.
Le attività di modifica dei dati si risolvono esattamente come dice il testo — senza alcun SELECT di verifica non documentato.
- Le attività INSERT/UPDATE/DELETE e di transazione (incluse UPSERT, MERGE, SKIP LOCKED) non richiedono più un SELECT di verifica non documentato. Ora vengono valutate in base allo stato finale della tabella, e la pagina dell'attività mostra una nota "non serve un SELECT finale".
- Soluzioni migliori: gli account di servizio non compaiono più nell'elenco — in linea con la classifica pubblica.
Le attività di creazione di tabelle e indici ora si risolvono esattamente come dice il testo — senza SELECT non documentato; l'aggiornamento in tempo reale della classifica funziona di nuovo.
- Le attività DDL (CREATE TABLE, ALTER, CREATE INDEX, chiavi esterne) non richiedono più un SELECT di verifica non documentato. Ora vengono valutate in base allo schema finale del database, e la pagina dell'attività mostra una nota "non serve un SELECT finale".
- Pagina della classifica: ripristinato l'aggiornamento in tempo reale — la connessione WebSocket della classifica non si interrompe più.
- Diagramma dello schema: alcune attività non mostravano collegamenti tra le tabelle — ora le frecce delle chiavi esterne compaiono sul diagramma.
- La finestra "Corretto!" non mostra più un calo di posizione come una promozione verso l'alto — il badge del rango compare solo in caso di una vera promozione.
Le attività CREATE / ALTER TABLE e altre soluzioni multi-step possono essere inviate di nuovo — il limite di istruzioni per invio era troppo restrittivo.
- Il limite di istruzioni per invio è stato aumentato da 3 a 20: le attività DDL (CREATE TABLE, ALTER, indici, trigger) e le DML multi-step non vengono più respinte con un errore "troppe istruzioni".
La variante MySQL delle attività del catalogo è di nuovo sincronizzata con PostgreSQL — alcune attività MySQL venivano valutate su dati obsoleti.
- La variante MySQL di centinaia di attività veniva eseguita su un dataset obsoleto — seed risincronizzati, la risposta MySQL corrisponde di nuovo a PostgreSQL.
- Sei attività che funzionavano solo in PostgreSQL ora hanno una variante MySQL funzionante.
- Le attività CREATE TABLE / CREATE INDEX / ALTER vengono valutate in base allo schema finale della tabella — una struttura errata non viene più accettata come corretta.
- Le attività INSERT che usano CURRENT_TIMESTAMP / NOW() non rifiutano più una risposta corretta a causa di una differenza di runtime.
- Gli output di esempio che rivelavano accidentalmente la risposta esatta sono sostituiti da campioni senza spoiler; l'ordine delle righe viene verificato quando un'attività lo richiede.
- Un audit dell'intero catalogo ha riallineato il testo, i dati di valutazione e la soluzione di riferimento su diverse decine di attività in cui si erano disallineati.
Corretta la valutazione delle soluzioni con più istruzioni — una DELETE/UPDATE con un SELECT finale ora viene valutata correttamente.
- Date e orari nei risultati delle query vengono ora visualizzati in modo pulito come
2024-01-15 08:00:00invece del formato tecnico ISO.
- Le attività DML (DELETE, UPDATE, INSERT) con un SELECT di verifica non rifiutano più una risposta corretta come "colonne in eccesso".
- Attività #768: il testo ora corrisponde alla risposta valutata.
- Il suggerimento per risposta errata non propone più di confrontare con il blocco di esempio, che intenzionalmente non è esatto.
- Le attività di solo UPDATE / DELETE / INSERT vengono ora valutate in base allo stato finale della tabella — una mutazione errata non viene più accettata come corretta.
Corrette cinque attività in cui il testo non corrispondeva allo schema e alla risposta.
- Attività #762, #763, #764, #765, #809: testo riscritto per corrispondere allo schema reale e alla risposta attesa.
- Generazione di attività con AI, AI Mentor e modulo di segnalazione bug: in caso di rate-limit mostrano ora "riprova tra N secondi" invece di "ThrottlerException".
Corretta l'attività #17 — il valutatore restituiva NULL a causa di un bug nello schema.
- Attività #17 (
average-post-hiatus): schema allineato al seed, il valutatore funziona di nuovo.
Nell'attività "Sposta le righe vecchie nell'archivio in un colpo solo — senza race condition" (#789), il testo chiedeva una colonna customer_id che non esiste nello schema. La formulazione è ora allineata allo schema reale e al valutatore: id, status, amount.
- Attività #789 (
hard-cte-atomic-archive): la descrizione menzionava una colonnacustomer_idinesistente. La formulazione ora corrisponde allo schemaorders/orders_archivee alle colonne atteseid, status, amount.
Il messaggio "Troppe richieste" mostra ora il limite esatto e i secondi rimanenti al reset invece del criptico "ThrottlerException". Il rate-limit lato server è stato aumentato, così la navigazione rapida tra le attività di un percorso non raggiunge più il limite.
- Rate-limit lato server sulle richieste API ordinarie aumentato di 5×. Il rapido andirivieni tra le attività di un percorso (oltre 10 fetch paralleli al mount) non raggiunge più il limite né genera errori 429.
- In caso di rate-limit su Invia o Run, il messaggio mostra ora il limite effettivo e i secondi esatti prima di riprovare. In precedenza compariva solo il criptico "ThrottlerException: Too Many Requests" senza alcuna indicazione sull'attesa.
Il pulsante "Inizia" sulla scheda del percorso ora avvia di nuovo davvero il percorso — un overlay invisibile sul link della scheda intercettava il clic e lo reindirizzava alla pagina di dettaglio del percorso.
- Su
/trainer/tracks, il pulsante "Inizia" sulla scheda di un percorso non porta più alla pagina di dettaglio del percorso invece di avviarlo. Il clic ovunque sulla scheda → dettagli è mantenuto.
Sandbox SQL: usa le tue tabelle e query — senza attività, senza valutazione. In più, un layout bento uniforme e ampio su classifica, progressi, percorsi, attività e sessioni.
- Nuova pagina
/sandbox— editor Monaco, pannello schema, pannello risultati, schede dati per tabella, snippet di riscaldamento. Le sessioni anonime scadono dopo 30 min di inattività, gli utenti registrati ottengono 7 giorni. - Fiddle salvati: fino a 5 nel piano gratuito, illimitati con Premium. Libreria con ricerca, copia link, eliminazione e interruttore di privacy.
- Layout ampio uniforme nelle pagine dello spazio personale — I miei fiddle, Progressi, Classifica, Sessioni, Attività, Percorsi e la pagina di dettaglio del percorso condividono ora un'unica struttura con un hero a gradiente e una griglia di schede coerente.
Le frecce di variazione di posizione nella classifica sono tornate — in precedenza la colonna era vuota perché non c'era uno snapshot di riferimento con cui confrontare.
- L'indicatore "salito / sceso / invariato" è di nuovo accanto a ogni riga della classifica. Lo snapshot di riferimento della settimana precedente è stato inizializzato; il regolare cron settimanale continuerà ad aggiornarlo.
Corretto un bug per cui reinviare un'attività già risolta toglieva silenziosamente Power — il bonus "primo tentativo" veniva cancellato. Il Power di tutti gli utenti interessati è stato ricalcolato.
- Reinviare una soluzione per un'attività già risolta non cancella più il bonus "primo tentativo" — il Power di quell'attività resta uguale a quello subito dopo il primo invio riuscito.
- L'attività #107 (ripartizione della spesa per genere di libro per il 2005) non richiede più un ordine specifico delle righe — qualsiasi ordinamento è ora accettato, in linea con la formulazione del testo.
Corretto il pannello dello schema DB in diverse attività — le linee arancioni di relazione tra le tabelle collegate non venivano disegnate.
- In alcune attività il pannello "Schema" non mostrava le relazioni tra le tabelle (le frecce arancioni 1:N) — le relazioni mancanti sono state aggiunte ai dataset.
Corretta l'attività "Suddividi i clienti in spese basse / medie / alte": la risposta di esempio e la soluzione di riferimento si erano disallineate dal testo — ora tutto usa l'id del cliente e i segmenti basso / medio / alto.
- Attività "Suddividi i clienti in spese basse / medie / alte" (#757): la risposta di esempio e la soluzione di riferimento ora corrispondono al testo — colonne
customer_id,segment, segmentilow/mid/high, ordinati percustomer_id.
Un grande rebranding "Arena": una nuova homepage, una classifica ricostruita da zero con podio e aggiornamenti in tempo reale, i punti rinominati in "Power" con un marchio a forma di ascia da battaglia, percorsi di apprendimento ricostruiti, e una generazione di attività con AI adattiva che legge davvero i tuoi invii recenti.
- Una nuova scheda "Lega" — i 30 utenti più vicini a te per Power. Filtri di difficoltà nella scheda globale (Power ricalcolato per scala). Frecce salita / discesa accanto a ogni posizione — movimento settimana su settimana.
- Obiettivi: emoji sostituite da icone vettoriali colorate per categoria, i tooltip del browser mostrano nomi localizzati; su
/statsè una griglia con popover al tocco su mobile. Nuovo obiettivo "10 Expert". - Passa il mouse su un nome nella classifica per una mini scheda utente. Un pulsante "Condividi rango" — il link rimanda al tuo profilo pubblico con un'anteprima OG.
- Homepage riscritta sotto il marchio "Arena": un titolo incisivo "Affila SQL. Prendi l'offerta.", uno scoreboard in tempo reale nell'hero, una scala dei ranghi con un segnaposto "Tu", sezioni su trainer / percorsi / AI / modalità colloquio / progressi, e una fascia di chiusura "L'ascia è nella tua mano. Colpisci.". Pronta per mobile.
- I punti sono stati rinominati in "Power". Il fulmine è sostituito da un'ascia da battaglia — ora nel logo, nella favicon e nell'anteprima di condivisione dei link.
- La pagina della classifica è stata riscritta da zero: un podio top 3 (oro / argento / bronzo), una scheda dei progressi personali con una barra verso il rango successivo, un'unica barra di filtri fissa, la scala dei ranghi subito sotto l'intestazione, una riga "tu" fissata quando sei fuori dalla top 50, e aggiornamenti in tempo reale — la tabella reagisce in modo fluido alle soluzioni altrui senza ricaricare.
- Percorsi di apprendimento ricostruiti. Analyst / Backend / QA / Data Engineering — circa 50 attività curate ciascuno: alcuni rappresentanti per ogni cella argomento×difficoltà, dal riscaldamento a EXPERT, con maggior peso ai problemi da colloquio reale. Aggiunto un percorso Data Engineering più un percorso dedicato alla preparazione ai colloqui.
- Il pulsante "Genera per me" è ora davvero adattivo: legge i tuoi ultimi 40 invii, sceglie l'argomento con la precisione recente peggiore e calibra la difficoltà sul tuo livello — uno stallo abbassa di un gradino la successiva, una serie positiva la alza.
- I nuovi visitatori atterrano sul tema "Night" per impostazione predefinita (in precedenza "Evening"). Se hai già scelto un tema, la tua scelta viene mantenuta.
- Attività "Di' in un solo numero: quanti clienti attivi" — la soluzione canonica richiedeva clienti con ≥2 ordini pagati mentre la descrizione dice "almeno una volta". Corretta per corrispondere alla descrizione.
Le attività EXPERT ora assegnano davvero 75 power per soluzione (fino a 281 con i bonus) invece dei 10 del livello EASY. Il Power complessivo degli utenti che avevano già completato un EXPERT è stato ricalcolato retroattivamente.
- La tabella delle ricompense non aveva una riga per EXPERT, quindi il valutatore ripiegava su un valore predefinito di 10 e ogni attività EXPERT pagava quanto una EASY. La base EXPERT è ora 75 power, con gli stessi moltiplicatori che si sommano (primo tentativo ×2, superamento Mock Interview ×1.25, soluzione premium ×1.5) — fino a 281 power per attività EXPERT. Una migrazione ha ricalcolato
xp_totalper ogni profilo secondo le regole corrette, così chiunque avesse già risolto un EXPERT recupera automaticamente il power mancante.
Chiusa la scappatoia per cui un'attività poteva essere "risolta" inserendo l'output di esempio in modo hardcoded: su 25 dataset il valutatore controlla ora la tua query su righe nascoste diverse da quelle mostrate nella descrizione dell'attività.
- Le soluzioni vengono ancora eseguite sulle stesse tabelle e colonne di prima, ma le righe nel seed di valutazione differiscono dal campione visibile. Qualsiasi risposta autentica basata su query continua a passare, mentre un
SELECT … UNION ALL …hardcoded che copiava i letterali dell'esempio viene ora valutato come "errato". Sono coperti 25 dataset dell'ultimo lotto del catalogo (elenchi, CTE, finestra, pivot, DML, expert).
Corretti due problemi segnalati dagli utenti: il campione disordinato in "Studenti per regione" e la descrizione che si era disallineata dallo schema nell'attività sui ricavi netti.
- Attività "Studenti per regione" (#357): il campione ora è in ordine crescente di
rn(Jack / Kim / Lars nella prima riga), e la soluzione di riferimento riporta un esplicitoORDER BY rncosì da produrre lo stesso ordine. - Attività "Utenti con ricavi netti di almeno 100" (#783): titolo e descrizione ora corrispondono ai dati reali — utenti ed eventi
purchase/refund, non prodotti esale/refund, con una soglia di 100, non 1000.
Sei attività avanzate ora includono una tabella già popolata — le soluzioni non iniziano più con un preambolo CREATE TABLE.
- Sei attività Hard / Expert (UPSERT a singola e multipla colonna, CTE con
RETURNING,INSERT … RETURNINGin blocco, codaSKIP LOCKED, espansione di array tramiteUNNEST) si sono unite al resto del catalogo avanzato: la tabella viene creata e popolata nel dataset, e la soluzione contiene solo l'operazione in esame più unSELECTfinale per la valutazione.
- La descrizione dell'attività "Contatore di visualizzazioni" non si discosta più dall'output atteso: entrambi descrivono ora la stessa tabella
counters(id, count)e cinque esecuzioni della stessa riga.
Le attività DDL non mostrano più tabelle non correlate nel pannello laterale dello schema.
- In 10 attività
CREATE TABLE(dal facile all'expert) il pannello laterale dello schema mostrava tabelle di un dataset non correlato — ad esempio un'attività sugli articoli mostravaorders. Il pannello ora è vuoto, come dovrebbe essere quando un'attività chiede di costruire la tabella da zero.
115 nuove attività, selettore di tema a tre modalità Day / Evening / Night e una palette scura più morbida.
- Il catalogo è cresciuto di 115 attività: 20 facili, 35 medie, 45 difficili e 15 expert — subquery, CTE, funzioni finestra, DML/DDL, MERGE, ottimizzazione delle query, transazioni, JSONB, ricorsione e
LATERAL. - Nuovo livello di difficoltà «Expert» con un badge violetto e un proprio filtro nel catalogo.
- Selettore di tema a tre modalità: Day (chiaro), Evening (scuro morbido) e Night (profondo) — scegli in base alla luce ambientale per affaticare meno la vista.
- Tema scuro reso più morbido: lo sfondo è passato a un grigio-blu in stile Linear (
#1B1B1F) invece del precedente quasi nero, il testo primario è sceso a zinc-300 — meno alone nelle sessioni lunghe. - In modalità «Night» il pannello dell'editor SQL è tre gradini più profondo dello sfondo con una leggera tendenza verso il nero puro — si legge come un pannello incassato nella stessa famiglia.
- Il prontuario degli argomenti nell'attività è ora consapevole della difficoltà: ai livelli Hard / Expert nasconde i
SELECT/WHERE/ORDER BY/LIMITdi base e propone invece schemi avanzati —STRING_AGG,ARRAY_AGG,GROUPING SETS,LATERAL, JSONB, indici parziali e così via. - Le pillole del filtro di difficoltà attive sono passate a un riempimento morbido in tinta brand invece del nero pieno — non stonano più con l'aspetto del tema chiaro.
- Etichette di difficoltà in russo: «Лёгкое» → «Лёгкий», «Среднее» → «Средний», «Сложное» → «Сложный».
24 nuovi articoli del blog per principianti.
- Copertura degli argomenti ampliata: DML (
INSERT/UPDATE/DELETE), DDL (CREATE TABLE/ALTER TABLE), aggregati,DISTINCT, gestione dei NULL (CASE WHEN/COALESCE/NULLIF), CTE e subquery, funzioni finestra, stringhe e date.
- Prontuario del trainer: ogni voce rimanda ora a un proprio articolo. In precedenza le quattro voci sulle funzioni finestra rimandavano a un'unica panoramica —
ROW_NUMBER,RANK/DENSE_RANK,PARTITION BYeLAG/LEADhanno ora ciascuna il proprio.
- Attività #114 "Quanti reparti di cardiologia" — rinominata la colonna di output attesa da
countawards_countcosì da non scontrarsi più visivamente con la parola chiave riservata.
Chiusa la scappatoia dell'adattamento delle risposte: le attività vengono ora valutate su un dataset nascosto.
- Il valutatore può ora eseguire un'attività su un dataset nascosto. Il riferimento canonico viene ricalcolato sugli stessi dati, così le soluzioni corrette continuano a passare mentre le costanti prese in prestito dal campione visibile falliscono.
- L'attività "Membro più anziano del club" non accetta più un
LIMIThardcoded adattato al campione visibile — passa solo una query che esprime "tutte le righe con la data di nascita minima".
Rifinitura delle schede dei prezzi e correzioni al pulsante "Accedi e abbonati" subito dopo la v2.2.0.
- Il prezzo e il pulsante CTA nelle schede Free e Premium ora si allineano alla stessa Y.
- Accorciate le note a piè di prezzo per Crypto e Visa/MC — resta solo il nome del circuito.
- Il pulsante "Accedi e abbonati" è di nuovo cliccabile per gli utenti non autenticati.
Aggiunti i pagamenti in cripto e con Visa/Mastercard internazionali, oltre a difese anti-bot rafforzate nel flusso di autenticazione.
- Pagamenti in cripto tramite NowPayments — BTC, ETH, USDT e altri. $21 trimestrale / $28 semestrale.
- Visa/Mastercard internazionali tramite Paddle con IVA/imposta sulle vendite automatica. $21 / $28.
- Selettore del metodo di pagamento sulla scheda Premium: carta RU, Crypto, Visa/MC. La valuta cambia in base al metodo.
- Cloudflare Turnstile su login e registrazione — invisibile per gli umani, blocca i bot.
- L'account si blocca per 15 min dopo 5 password errate (in modo esponenziale fino a 24 h) con un conto alla rovescia esplicito.
- Gli errori di login e registrazione sono resi più umani — niente più "Forbidden" o "Invalid credentials" grezzi.
- Limite di invio: 5/min, 30/15min per utente. Non incide sulle reali sessioni di risoluzione.
- Dopo il login torniamo alla pagina da cui sei arrivato — incluso OAuth (Google, GitHub, Yandex).
- Disconnettersi da una pagina pubblica non ti rimanda più alla home page.
Completata la correzione del salvataggio di Telegram, GitHub e LinkedIn nella pagina del profilo. La release precedente aveva corretto il normalizzatore degli username sul backend, ma il componente front-end interrompeva l'onBlur — la PATCH non partiva mai davvero. Il campo accettava visivamente l'input, il server restava vuoto e, dopo un reload, il campo era vuoto. Ora il confronto al blur usa il valore catturato al momento del focus, non l'input in corso.
- I campi Telegram, GitHub e LinkedIn nella pagina del profilo ora si salvano di nuovo. Un useEffect sovrascriveva il riferimento all'"ultimo valore salvato" a ogni battitura, così il controllo onBlur confrontava il valore corrente con se stesso e saltava la PATCH. Il controllo al blur confronta ora con uno snapshot preso al momento del focus.
Corretto il salvataggio degli handle di Telegram, GitHub e LinkedIn nella pagina del profilo: digitare il formato segnaposto come t.me/username veniva ridotto a spazzatura come t.me. Ora qualsiasi input — handle nudo, @handle, t.me/handle o https://t.me/handle — viene normalizzato in un username pulito.
- I campi Telegram, GitHub e LinkedIn nella pagina del profilo ora si salvano correttamente quando l'indirizzo viene digitato senza
https://. In precedenzat.me/durovveniva memorizzato comet.me,github.com/octocatcomegithub.com, perché il normalizzatore richiedeva uno schemahttp(s)://e altrimenti tagliava il valore alla prima barra.
Rimosso il banner upsell premium falso positivo nel pannello dei risultati: si attivava su attività gratuite e perfino per gli utenti premium. Era comunque UI morta — le attività premium sono bloccate all'apertura dell'attività, quindi l'editor non le vede mai.
- Nella finestra di celebrazione "Corretto!" la pillola "+50% Power per soluzione — passa a Premium" ha ora un padding orizzontale adeguato — la corona e il chevron non toccano più i bordi della pillola.
- AI Mentor riceve ora un contesto compatto dell'attività: dialetto SQL attivo, tabelle, relazioni, colonne attese, output di esempio e l'ultimo diff di valutazione. L'SQL di riferimento è usato solo come contesto privato per le spiegazioni degli errori e i livelli successivi di suggerimento.
- Il banner upsell "Attività da colloquio — Premium" è sparito dal pannello di feedback. In precedenza qualsiasi errore lato server contenente la parola
premiumnel suo stack trace (ad esempio una colonnasolved_as_premiummancante subito dopo una migrazione) faceva scattare una corrispondenza di sottostringa e mostrava l'upsell — anche su attività gratuite e anche per gli utenti premium.
Premium ora assegna +50% Power per attività risolta — il boost resta legato all'attività per sempre, anche dopo la scadenza dell'abbonamento. AI Mentor non scarica più la soluzione al primo suggerimento e ora aumenta l'aiuto attività per attività. Inoltre rimosso il commento iniziale -- Click ▶ Run dall'editor della prima attività.
- L'abbonamento Premium assegna un moltiplicatore Power ×1.5 su ogni attività risolta. Il boost si fissa al momento della risoluzione, quindi resta nel tuo totale anche se l'abbonamento scade in seguito.
- La finestra di celebrazione "Corretto!" mostra ora un invito all'upgrade per gli utenti gratuiti proprio sotto il chip +Power: "Ottieni +50% Power per soluzione — passa a Premium", con link a /pricing.
- AI Mentor ora aumenta i suggerimenti per attività. La prima richiesta riceve solo un'indicazione di direzione senza nomi di operatori; le richieste 2-4 aggiungono concetto e categoria; dalla richiesta 5 il mentore può nominare direttamente
LIKE/WHERE/GROUP BY. Il contatore si azzera ogni 24 ore. - Le spiegazioni delle risposte errate seguono ora gli stessi livelli dei suggerimenti normali — non rivelano più operatori specifici al primissimo invio fallito.
- Chiusi i restanti riscontri dell'audit delle attività SQL: corretto il riferimento di Tournament Winners, allineate le anteprime TIMESTAMP su diverse attività e ripristinata la variante PostgreSQL per un'attività AI.
- Rimosso il commento iniziale
-- Click ▶ Run — see what's in this tabledall'editor della prima attività. Le attività aperte ora partono da un editor vuoto.
Rivisti i filtri del catalogo delle attività: lo stato è diventato un controllo segmentato a 3 stati (Tutte / Non risolte / Risolte) con impostazione predefinita Non risolte, aggiunto un filtro per dialetto, i chip di argomento e azienda mostrano ora il conteggio attuale delle attività, i filtri attivi compaiono come pillole rimovibili con un'affordance "Reimposta tutto".
- Filtro per dialetto nel catalogo: All / PG / MySQL — un proprio segmento accanto al controllo di stato.
- I chip di argomento e azienda mostrano ora quante attività corrispondono: "Windows (43)", "Tinkoff (5)". I chip con zero attività si attenuano.
- Riga delle pillole dei filtri attivi: ogni filtro applicato (ricerca, difficoltà, stato, dialetto, preferiti, argomento, tag, azienda, regione) compare come pillola rimovibile; "Reimposta tutto" riporta tutto ai valori predefiniti.
- Il filtro di stato delle attività è ora un controllo segmentato a 3 stati (Tutte / Non risolte / Risolte), con impostazione predefinita Non risolte. Sostituisce il singolo interruttore "Nascondi risolte".
- Il controllo di ordinamento è stato spostato nella barra superiore — in precedenza era sepolto in fondo e nascosto dietro lo scroll.
- L'interruttore dei preferiti è stato spostato nella barra dei filtri superiore — ora accanto agli altri interruttori binari.
- Il badge dei filtri non mostra più "1" all'avvio — la vista predefinita "Non risolte" non viene conteggiata come filtro applicato.
Audit dell'intero catalogo: il valutatore non rifiuta più le risposte corrette a causa della serializzazione DATE-vs-TIMESTAMP, le anteprime di esempio su oltre 60 attività ora corrispondono a ciò che la soluzione di riferimento restituisce davvero, e 5 attività che usano CURRENT_DATE / NOW() sono ancorate a un riferimento fisso così le anteprime non cambiano più giorno per giorno. In più una correzione di descrizione sull'attività delle transazioni mensili da una segnalazione utente.
- Valutatore: aggiunta la normalizzazione data-come-timestamp (
2024-01-01T00:00:00.000Z↔2024-01-01) — le risposte corrette non ricevono più "il conteggio delle righe corrisponde, il contenuto differisce" a causa della formattazione del tipo restituito. - Attività "Transazioni mensili e chargeback": la descrizione chiarisce ora che un chargeback appartiene al mese della transazione originale, non alla data del rimborso; l'anteprima mostra le date del primo giorno del mese invece dei timestamp ISO con scostamento di fuso.
- Rigenerate le anteprime di esempio su oltre 60 attività: formattazione numerica (
100→100.00), visualizzazione del fuso orario (+03→+00), DATE-come-TIMESTAMP, INTERVAL-come-oggetto — l'anteprima ora corrisponde a ciò che restituisce il runner live. - Cinque attività che usano
CURRENT_DATE/NOW()/CURRENT_TIMESTAMPnel loro seed (#170, #601, #602, #668, #693) sono ora ancorate a2026-05-05 12:00:00 UTC. Le anteprime non cambiano più.
Rinnovato il blog: ricerca, navigazione per 10 sezioni, primi 7 tutorial per principianti. I nomi dei comandi nel prontuario dell'attività sono ora link cliccabili agli articoli. La pagina delle release ha ottenuto un albero delle versioni con scroll-spy.
- Blog: ricerca su titoli, contenuti e tag + barra laterale sinistra delle sezioni. La sezione attiva si evidenzia durante lo scroll.
- Blog: 7 primi tutorial per principianti —
SELECT … FROM,WHERE,ORDER BY,LIMIT,INNER JOIN,LEFT JOIN, alias. - Prontuario degli argomenti nell'attività: i nomi dei comandi sono ora link blu al tutorial corrispondente del blog — si aprono in una nuova scheda.
- Pagina delle release: albero delle versioni a sinistra raggruppato per
major.minor; cliccando si scorre fino alla versione e si aggiorna l'ancora hash. - Pulsante "Copia SQL" su ogni riga della scheda Invii.
- Concordanza dei plurali in russo ovunque: "221 задача", "2 задачи", "5 задач" invece del vecchio "221 задач".
- Il prontuario degli argomenti nell'attività non sobbalza più quando si espande — lo spazio della barra di scorrimento è ora riservato.
- Le tabelle Markdown negli articoli del blog vengono ora visualizzate come tabelle HTML invece che come un'unica riga di testo semplice.
Revisione qualitativa dell'intero catalogo: 23 attività non eseguibili riparate, 66 descrizioni inglesi riscritte, descrizioni e anteprime di esempio allineate su qualche decina di altre. In più una correzione segnalata da un utente.
- Le anteprime di esempio su oltre 50 attività ora corrispondono a ciò che restituisce la soluzione di riferimento.
- Accorpati i tag aziendali duplicati nei chip di filtro delle attività.
- Riparate 23 attività (pharma-*, loyal-*, hotel-*, qa-*) che non si potevano risolvere a causa di un disallineamento schema/seed.
- Riscritte le descrizioni inglesi di 66 attività lc-* / lc2-* che in precedenza presentavano uno stub o un frammento.
- L'attività "Stanze prenotate il 2 settembre 2019" non accetta più la risposta errata.
- Dieci attività in cui la descrizione era in disaccordo con la soluzione di riferimento sono ora coerenti.
- Sette attività Tochka presentavano il testo di un altro problema — riscritte.
69 nuove attività tratte da veri colloqui di lavoro del mercato russo (Yandex, Tinkoff, Sber, VTB, Alfa, VK, Ozon, Avito, Magnit, Samokat e altre 23 aziende) — costruite attorno all'universo più ampio dei tipi PostgreSQL: UUID, JSONB, ENUM, INTERVAL, TSTZRANGE, INET, NUMERIC e POINT. In più correzioni chiave da segnalazioni utenti e un indicatore a pallino rosso "Novità" nella barra laterale.
- 69 nuove attività tratte da veri colloqui presso aziende russe. 33 datori di lavoro: 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 e Yandex Practicum. Tutte taggate Interview, accessibili con Premium.
- Tipi PostgreSQL ricchi negli schemi delle attività. La maggior parte delle attività usava
INT+VARCHAR(100)— adatto agli esempi da manuale, lontano dalla produzione. Le nuove attività introduconoUUIDper le PK di clienti e ordini,NUMERIC(15,2)per il denaro eNUMERIC(12,4)per i tassi di cambio,TIMESTAMPTZper gli eventi,INTERVALper la durata di chiamate e sessioni,TSTZRANGE/DATERANGE/NUMRANGEper cronologie SCD2 e finestre di validità,JSONBper metadati e payload di eventi,ENUM(conCREATE TYPEesplicito) per stati e categorie,INETper gli IP nelle attività antifrode,POINTper le coordinate GPS,TEXT[]/INTEGER[]per tag e array di ID. Così il trainer ti espone agli stessi tipi che incontrerai in produzione. - Indicatore a pallino rosso sulla voce della barra laterale "Novità" — compare quando è stata rilasciata una nuova release che non hai ancora aperto. Il pallino scompare dopo una visita a
/releases(il flag risiede nel localStorage di questo browser). In precedenza l'indicatore esisteva solo nella barra di navigazione superiore; nei layout con sola barra laterale non era raggiungibile.
- Visualizzazione corretta dei nuovi tipi nella tabella dei risultati delle query. In precedenza le colonne
JSONB,INTERVALePOINTvenivano visualizzate come "[object Object]" e gli array (TEXT[],INTEGER[]) collassavano in stringhe unite da virgole — la struttura era invisibile. Ora JSONB e array vengono visualizzati come JSON leggibile, INTERVAL come1d 02:30:00, POINT come(x, y). I booleani e gli UUID mantengono la loro visualizzazione testuale. - I diagrammi ER nella pagina dell'attività hanno ottenuto voci di palette per i nuovi tipi: UUID violetto, JSONB giallo, INTERVAL viola (stessa famiglia degli altri tipi data/ora), TSTZRANGE / DATERANGE / NUMRANGE rosa, INET ciano, POINT rosa, ENUM personalizzati rosato. In precedenza questi tipi ricadevano nel grigio predefinito ed erano indistinguibili dai semplici INT / VARCHAR.
- Le sei attività corrette di cui sopra hanno ottenuto anche uno schema arricchito nello stesso stile del nuovo set da colloquio: chiavi primarie
UUID, payloadJSONB, tipiENUMper sesso / categorie / stati,NUMERIC(15,2)al posto diINTper stipendi e prezzi,INTERVALper le durate. La formulazione delle attività è stata leggermente adattata per motivare i nuovi tipi, ma il problema sottostante è invariato. Questo è il primo passo nell'aggiornamento delle attività più vecchie — altri nelle prossime release.
- Corrette alcune attività più vecchie segnalate dagli utenti. "Project Employees II" — il diagramma ER mostrava Employee + Department invece di Project + Employee, mentre lo schema sottostante era corretto; allineato il diagramma. "Reported Posts" — la descrizione non specificava che il motivo della segnalazione risiede nella colonna
extra: ora lo fa. "Sales Analysis I" — la soluzione di riferimento usavaSUM(price)benché lo schema abbia una colonnaquantity, il che creava confusione; riformulata comeSUM(quantity * price), più vicina ai ricavi del mondo reale. "Swap Salary" — l'attività era collegata al dataset sbagliato (Employee + Department invece diSalary(id, name, sex, salary)), rendendola irrisolvibile; ricollegata al dataset canonico. Lo stesso disallineamento ER silenzioso in "Project Employees III" e "Reported Posts II" ha ricevuto la stessa correzione.
Release importante: una nuova navigazione con barra laterale sinistra, la rigorosa modalità Mock Interview con un bonus +25% Power, profili pubblici e amici, notifiche email, tag aziendali colorati per brand, filtri aggiuntivi e un blocco di corsi partner. In più un'importante correzione di privacy tra account e decine di rifiniture UX.
- Blocco di corsi partner. Nella pagina delle attività (schermi ampi) una colonna a destra mostra un insieme curato di corsi partner; su mobile è un carosello orizzontale sopra l'elenco. Le schede rimandano alle landing page dei partner con tag UTM — per noi, un modo per mantenere basso il prezzo dell'abbonamento coprendo i costi dell'infrastruttura.
- Nuova modalità Mock Interview — una rigorosa simulazione di un vero colloquio. Qualsiasi singola violazione (cambio scheda, incolla, uscita dalla modalità a schermo intero, sfocatura della finestra > 1 secondo) fa fallire automaticamente la sessione. Suggerimenti, AI Mentor e prontuario sono nascosti e bloccati. Durate: 5 / 10 / 15 / 30 / 60 minuti. Piano gratuito — 1 tentativo al giorno; Premium — illimitati. Mentre una sessione è attiva la navigazione circostante (barra laterale, "Attività", "Soluzioni migliori", "Attività successiva", "Esci dal percorso", Prec/Succ/Casuale) è bloccata — l'unica via d'uscita è il pulsante esplicito "Termina" o la chiusura della scheda (che abbandona automaticamente la sessione).
- +25% Power per ogni attività completata in modalità Mock Interview — il bonus è per attività e segnalato nel report di fine sessione. La classifica ha ora una colonna informativa "Mock" (lo stesso conteggio mostrato sulla scheda del profilo e su
/u/<username>); non incide sull'ordinamento basato su Power. - Profili pubblici su
/u/<username>: scegli un handle breve e attiva l'interruttore pubblico — qualsiasi visitatore anonimo vede il tuo rango, Power, serie attuale, numero di obiettivi, mappa di calore dell'attività e i link GitHub / Telegram / LinkedIn. Nessun dato privato esposto. - Amici: aggiungi utenti tramite il loro handle pubblico, gestisci le richieste in entrata e in uscita, vedi una scheda dedicata della classifica degli amici con il loro Power, serie e attività risolte.
- Preferiti: ogni scheda di attività ha ora una stella — cliccala e l'attività finisce nel filtro "Solo preferiti". L'elenco risiede sul server legato al tuo account e sopravvive ai cambi di browser.
- Notifiche email (interruttori nel profilo). "Salva la tua serie" — promemoria serale quando la tua serie è ≥ 3 giorni e oggi non hai risolto nulla. "Riepilogo settimanale" — resoconto del sabato mattina con le attività risolte la scorsa settimana, la serie attuale e la categoria più debole.
- Gli utenti Premium sono evidenziati visivamente ovunque compaiano gli avatar: un anello a gradiente olografico (classifica, amici, profilo, barra laterale, pagina pubblica
/u/<username>); un piccolo badge Corona nell'angolo sugli avatar grandi. Non incide sull'ordinamento. - Tag aziendali colorati per brand sulle schede delle attività: giallo per Yandex / Tinkoff / Beeline, verde per Sberbank / Spotify / OpenAI, blu per VK / Ozon / Google / Meta, rosso per MTS / Alfa / Tesla, viola per Stripe / Skypro / Wayfair, arancione per Amazon / Alibaba e così via. In precedenza ogni tag era di un unico viola.
- Chip di clausole SQL aggiuntivi nel filtro "Argomento" della pagina delle attività: accanto alle 8 categorie ampie (SELECT, JOIN, subquery, finestra, aggregati, CTE, DML, DDL) puoi ora attivare
GROUP BY,COUNT,HAVING. Combinali con le categorie per un filtraggio più preciso. - Il pannello "Schema DB" nella pagina dell'attività può ora essere ridotto. L'interruttore accanto al titolo dell'attività nasconde la colonna e libera larghezza per l'editor e la tabella dei risultati. Lo stato ridotto viene ricordato per browser, così lo schema si apre allo stesso modo nell'attività successiva.
- 8 nuove attività da colloquio di Tochka — da EASY a HARD. Scenari CRM (trovare clienti con una domanda attiva), calcoli di portafoglio (struttura, scadenza media ponderata, dinamica del valore), query su obbligazioni con funzioni finestra. Soluzioni sia per PostgreSQL che per MySQL.
- Sezione blog su
/blog. Tutorial estesi — si parte con un approfondimento sulle funzioni finestra. Contenuti bilingue, URL con slug, schede OG per la condivisione social. Raggiungibile dal footer e dal fondo della barra laterale. - Pagina 404 personalizzata. Il vecchio default di Next.js mostrava testo nero su bianco — invisibile in modalità scura. La nuova pagina usa i token del tema e risiede nella struttura condivisa, mantenendo la navigazione a portata di mano.
- Navigazione ridisegnata. Per gli utenti autenticati all'interno dell'app la navigazione principale si è spostata in una barra laterale sinistra — Trainer, Progressi, Classifica e le altre sezioni risiedono lì, con Power + serie sotto il tuo avatar e gli interruttori lingua/tema in fondo. La landing page, i prezzi e i flussi di autenticazione mantengono la sottile barra superiore. Le pagine di utilità (Novità / Segnala un bug / Blog) ereditano la struttura da cui provieni.
- L'anello a gradiente Premium attorno agli avatar ora compare in ogni scheda della classifica — in precedenza l'anello appariva solo nella scheda "Sempre" e spariva silenziosamente su "Settimana" e "Mese" perché il backend non emetteva il flag dell'abbonamento per le classifiche periodiche.
- Le modifiche al nome e all'avatar nel tuo profilo si riflettono ora immediatamente nella barra laterale — senza ricaricare la pagina. In precedenza la vecchia scheda utente poteva rimanere fino a un aggiornamento completo.
- Fughe di dati tra account durante il passaggio da un utente all'altro nello stesso browser. In precedenza, dopo logout / login con un account diverso, potevano persistere: i thread della chat di AI Mentor, le bozze SQL nell'editor, i flag "risolto" per attività, le sessioni di mock interview attive, il contatore di generazione AI, la cache dei preferiti. Ora il logout e ogni percorso di login (modulo, OAuth, verifica email) cancella tutto ciò che è legato all'utente precedente.
- Il link "Classifica amici" dal profilo atterra ora direttamente sulla scheda Amici — in precedenza ti lasciava sulla classifica globale. La corsia per principianti "Inizia qui" non torna più dopo che l'hai chiusa; in precedenza la chiusura si reimpostava a ogni logout / login.
- Decine di rifiniture al layout e all'interazione mobile: una finestra di report di fine sessione più compatta, spaziatura corretta dei filtri su schermi stretti, il banner di feedback non si sovrappone più al pannello laterale a 1024px, campi nome + email nella pagina di segnalazione bug per chi invia in modo anonimo.
Hotfix UX dell'editor su schermi stretti: il popup "Impostazioni editor" non viene più tagliato dal pannello del codice né esce oltre il bordo del viewport su mobile. Lo stesso pulsante a ingranaggio del desktop ora è presente anche nella barra degli strumenti mobile, e l'impostazione della dimensione del carattere si applica finalmente all'editor mobile.
- Il popup "Impostazioni editor" poteva essere tagliato dai bordi della pagina e non aveva scorrimento interno — su un laptop stretto o un telefono, metà delle impostazioni era semplicemente invisibile. Il popup ora viene renderizzato sopra l'intera pagina (tramite un portale), si adatta automaticamente all'area visibile e fa crescere una barra di scorrimento interna quando il contenuto supera l'altezza del viewport. L'intestazione con il titolo e il pulsante di chiusura resta fissa durante lo scorrimento.
- Nella vista editor mobile (≤1024px) la barra degli strumenti non aveva l'ingranaggio delle impostazioni editor — "Dimensione carattere" era raggiungibile solo da desktop. L'ingranaggio è ora accanto a PG/MySQL e Format, e l'impostazione della dimensione del carattere scala effettivamente l'input dell'editor mobile.
Hotfix da una segnalazione bug: l'attività #240 ("Staff Bonuses") mostrava lo schema sbagliato — mostrava Employee + Department invece del vero Employee + Bonus, rendendo il testo illeggibile.
- Attività #240 "Staff Bonuses": il visualizzatore dello schema mostrava le tabelle obsolete
Employee + Department(con i campidepartment_id,manager_id) e una schedaDepartmentvuota. La sandbox e la soluzione di riferimento erano corrette fin dall'inizio — solo i metadati del visualizzatore erano errati. Ora lo schema mostra le vere tabelleEmployee + Bonuscon la relazioneBonus.empId → Employee.empId.
Dataset arricchiti su 268 attività su 339 — tabelle sorgente più complete, righe più significative nell'output atteso, le attività non sembrano più rotte.
- Arricchimento di massa dei dataset: 268 attività su 339 hanno ottenuto dati seed più completi — tipicamente 6-12 righe nelle tabelle primarie invece di 2-4, con varietà lungo gli assi filtro/JOIN/GROUP BY che la soluzione di riferimento esercita. Toccati 137 dataset unici. Soluzioni di riferimento e schemi sono invariati. I progressi degli utenti sono preservati — le attività già risolte restano risolte, Power e obiettivi non vengono ricalcolati.
- Ogni attività arricchita è stata validata: la soluzione di riferimento è stata eseguita sul nuovo seed tramite l'executor, sample_output rigenerato dal risultato reale.
- Attività #38 (
well-paid-employees) — originariamente un hotfix v1.2.4, ora parte della revisione più ampia.
Hotfix da una segnalazione bug: il pannello "Esempio di output atteso" chiarisce ora che il conteggio delle righe non deve corrispondere alle tabelle dello schema.
- Aggiunto un avviso sopra il pannello "Esempio di output atteso": "questo è l'aspetto di una risposta corretta — il suo conteggio di righe è autonomo, non deve corrispondere alle tabelle dello schema". In precedenza gli utenti contavano le righe in una delle tabelle dello schema e presumevano che l'attività fosse rotta quando i numeri differivano.
Hotfix da una segnalazione bug: l'attività #38 "Stipendio più alto del manager" ora viene eseguita su un dataset adeguato con tre casi reali. In più un piccolo pallino arancione su "Novità?" quando viene rilasciata una nuova release.
- Un piccolo pallino arancione compare sulla voce di navigazione "Novità?" quando viene rilasciata una nuova release. Una visita a
/releaseslo cancella fino alla release successiva.
- Attività #38 (
well-paid-employees): il dataset era troppo scarno — 6 dipendenti e un solo caso "il subordinato guadagna più del manager", il che faceva sembrare i dati errati. Esteso a 9 dipendenti in due reparti con tre casi chiari (Eve > Alice, Frank > Dave, Henry > Bob).
Nuova pagina "Segnala un bug" con allegati screenshot, un gruppo di navigazione secondario e una corsia "Inizia qui" più compatta su mobile.
- Nuova pagina "Segnala un bug" nella barra di navigazione: modulo con oggetto + descrizione con fino a 5 screenshot / brevi clip (drag-and-drop supportato). Le segnalazioni arrivano nella nostra casella per una rapida valutazione.
- La barra di navigazione ottiene un gruppo secondario — "Novità?" e "Segnala un bug" — separato dalle schede principali da un sottile divisore verticale.
- La corsia per principianti "Inizia qui" è più compatta su mobile — titolo più breve, descrizione nascosta, schede più strette. Libera spazio per l'elenco delle attività stesso.
- La corsia per principianti "Inizia qui" non lampeggia più per una frazione di secondo all'apertura della pagina delle attività — ora viene renderizzata solo dopo che
/progresssi è risolto. - L'highlight delle note di rilascio (la riga in cima) ora renderizza correttamente i backtick — in precedenza mostrava il letterale "
?lang=" invece di una pillola di codice stilizzata. - La barra di scorrimento verticale fantasma nella pagina "Percorsi di apprendimento" è sparita —
min-h-screenabbinato alla barra di navigazione forzava circa 60px di altezza extra anche quando il contenuto entrava.
Rifinitura UX in tutto il trainer più un parametro URL ?lang= per le pubblicità e i link diretti specifici per lingua.
- Atterra su una lingua specifica tramite
?lang=eno?lang=runell'URL:https://sql.coderang.dev/?lang=en. Comodo per le pubblicità e la condivisione di link specifici per lingua; la scelta viene ricordata per un anno.
- Quando i suggerimenti AI giornalieri si esauriscono, il pulsante "Spiega" diventa "Prontuario" e apre il riferimento dell'argomento.
- La stella dei preferiti è ora visibile su mobile e leggermente visibile su desktop invece di essere nascosta fino al passaggio del mouse.
- La descrizione dell'attività non sobbalza più quando il prontuario si espande. La stella è più luminosa al passaggio del mouse.
- Nelle attività DDL il pannello dello schema mostra "nessuna tabella iniziale; creale" invece di una tela vuota.
- Il pulsante AI ora pulsa davvero solo in caso di errori (la classe di animazione non era mai stata definita prima).
- Power e Streak nella barra di navigazione si inizializzano dal localStorage prima del fetch dal server — niente più lampeggio "0 ⚡".
- Il contatore di generazione AI non si reimposta più a 0 dopo il reindirizzamento all'attività generata.
- Accorgimenti per mobile: badge di difficoltà di uguale larghezza (Stella allineata), il testo della scheda inferiore entra, animazione di scala del contatore giornaliero, tooltip dell'icona serie, regole dei plurali russi.
- I nomi delle aziende russe (Сбербанк, Яндекс, Авито…) vengono ora visualizzati in traslitterazione latina (Sberbank, Yandex, Avito) nell'interfaccia inglese; il cirillico resta su quella russa.
- I nomi delle voci del prontuario (Alias, Subquery scalare, ecc.) ora si traducono correttamente al cambio di lingua.
- La classifica settimanale/mensile applica ora il bonus primo tentativo ×2 e ignora i reinvii, in linea con il modo in cui viene calcolato il Power complessivo. In precedenza la vista periodica mostrava circa la metà del totale complessivo — un bug nei calcoli, non nei dati.
- Rimossa una scheda Soluzioni morta — nessun pulsante la attivava ma duplicava il carico.
- I backtick non lasciano più uno spazio prima della punteggiatura finale ("
Action."). - Gli stati vuoti del pannello dei risultati ora si traducono correttamente in inglese.
Rifinitura per le attività di modifica dei dati e per il rendering complessivo delle descrizioni.
- Avviso per le attività DDL/DML: le attività UPDATE/INSERT/DELETE e CREATE/ALTER/DROP mostrano ora una breve nota "non serve un SELECT finale" — niente più indovinelli su cosa restituire.
- Il prontuario degli argomenti rispetta ora il tipo di attività: le attività DML non mostrano più SELECT/ORDER BY/LIMIT, le attività DDL mostrano solo i comandi di modifica dello schema.
- I token tra backtick nelle descrizioni delle attività (
id = 4,users.email) ora vengono renderizzati come pillole di codice in tinta accento invece che come testo grezzo — le descrizioni si leggono esattamente come gli autori le scrivono. - I blocchi di codice del prontuario hanno ora una barra accento a sinistra e un bordo sottile — si leggono come veri snippet di codice invece che come macchie grigie.
Onboarding per i nuovi arrivati: una corsia "Inizia qui", SQL di partenza nella tua prima attività e un prontuario degli argomenti dentro ogni attività. I suggerimenti per le risposte errate sono ora specifici e non consumano la tua quota AI.
- Corsia "Inizia qui" in cima alla pagina delle attività — 8 semplici attività SELECT per i principianti. Compare finché non risolvi qualcosa; si scorre trascinando con un cursore a presa.
- SQL di partenza nell'editor. La primissima attività che apri precompila
SELECT * FROM <first_table> LIMIT 5;così puoi premere ▶ subito e vedere com'è fatto il dato. - Prontuario degli argomenti. Il pannello dell'attività ha ora un blocco di riferimento richiudibile con i comandi SQL pertinenti, la sintassi e una spiegazione in una riga — su misura per argomento: SELECT, JOIN, aggregati, subquery, finestre, CTE, DML, DDL.
- Il banner per le risposte errate è ora specifico: nomina colonne in eccesso/mancanti, differenze di righe, problemi di ordinamento ed errori SQL comuni. Viene eseguito localmente, senza consumare quota AI.
Autocompletamento consapevole degli alias nell'editor SQL e importanti miglioramenti al layout mobile.
- Pagina delle release: la cronologia degli aggiornamenti è ora visibile su /releases.
- Autocompletamento consapevole degli alias. Dopo
<alias>.i suggerimenti sono limitati alle colonne di quella singola tabella. Gli alias stessi si completano con Tab. .è ora un carattere di attivazione: i suggerimenti compaiono automaticamente dopo di esso, senza bisogno di Ctrl+Space.
- Il menu mobile ora si sovrappone al contenuto invece di spingere la pagina verso il basso. Si chiude toccando all'esterno.
- Oltre 300 descrizioni di attività riscritte: aggiunto contesto di business, elencate le colonne di output, resi espliciti ordinamento e arrotondamento.
- La descrizione dell'attività su mobile ora scorre correttamente quando il testo è lungo. Prima si bloccava e impediva l'accesso alle schede in fondo.
- La barra delle schede inferiore del trainer è ora sempre visibile su qualsiasi browser mobile (Yandex Browser, MIUI, Samsung Internet). Prima veniva tagliata sotto il viewport.
- Il menu mobile è ora completamente opaco. In precedenza il 5% del contenuto di sfondo traspariva sui browser senza supporto per backdrop-filter.
- Su schermi stretti (320px e inferiori), il menu a discesa di ordinamento delle attività non esce più oltre il bordo destro.
- Vecchio bug dell'autocompletamento: digitando
t.edopoFROM employee tveniva inseritot.employee.salary(SQL non valido). L'alias è ora rispettato.
Prima release stabile di SQL Arena.
- 259 attività SQL curate in 6 categorie: SELECT, JOIN, aggregate, subquery, finestra, DML.
- 96 attività da colloquio delle migliori aziende tech (Google, Meta, Amazon, Stripe, ecc.).
- Supporto a due dialetti SQL — PostgreSQL e MySQL con commutazione istantanea.
- Generazione di attività con AI: attività uniche adattate al tuo livello di competenza.
- AI Mentor: suggerimenti contestuali senza rivelare la risposta.
- 3 percorsi di apprendimento: percorsi strutturati dalle basi all'SQL avanzato.
- Esecuzione SQL in tempo reale in un ambiente sandbox con valutazione dei risultati (diff di colonne/righe/ordine).
- Autenticazione OAuth tramite GitHub, Google, Yandex, più registrazione con email/password.
- Classifica basata su XP (Power), profili utente, obiettivi, temi scuro e chiaro.
- Abbonamento Premium con integrazione YooKassa e rate limiting anti-bot.
- Diagrammi di schema ER interattivi, editor Monaco con evidenziazione e formattazione SQL.
- Interfaccia bilingue: russo e inglese.