diff --git a/CHANGELOG.md b/CHANGELOG.md index c8ea533..05caf1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ All notable changes are documented here. The format follows [Keep a Changelog](h - The Progress page lists every solved problem, with when it was first accepted and in which languages; the solved counts link to the filtered problem list. - **Refresh content** never removes problems, solutions or test cases that an earlier import had. +### Fixed + +- `LOCALCODE_ALLOWED_HOSTS` set when starting Docker Compose now reaches the app, so it can be served under another host name as the README describes. + ### Security - The runner has no network; the app reaches it over a group-restricted Unix socket. diff --git a/README.md b/README.md index df0d3d8..4237231 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,11 @@ **Free, offline-friendly coding interview practice that runs entirely on your machine.** -About 4,100 problems · 2,830 judged against 274k hidden tests · company frequency lists for 423 companies · Python, Java, C++ and Kotlin +About 4,100 problems · 2,830 judged against 273k hidden tests · company frequency lists for 423 companies · Python, Java, C++ and Kotlin [](LICENSE)  - +  [](CONTRIBUTING.md) @@ -54,7 +54,7 @@ Interview prep sites lock the most useful features behind a subscription: compan
- Progress tracking. Solved over time, coverage by topic and by company, submission history and a JSON export.
+Progress tracking. Every problem you've solved, solved over time, coverage by topic and by company, submission history and a JSON export.
@@ -129,7 +129,7 @@ flowchart LR
I --> F["filter invalid test cases"] --> DB[(content.db)]
```
-The upstream test cases were generated by running Python solutions on synthetic inputs, and a few of them break the problems' own constraints (for example 64-bit values where a problem promises 32-bit ones). The importer removes cases the typed languages can't represent. It also applies an [exclusion list](backend/localcode/data/excluded_cases.json) of cases that the Java and C++ reference solutions reject, produced by running them over every suite with the same answer checking users get.
+The upstream test cases were generated by running Python solutions on synthetic inputs, and a few of them break the problems' own constraints (for example 64-bit values where a problem promises 32-bit ones). The importer removes cases the typed languages can't represent. It also applies an [exclusion list](backend/localcode/data/excluded_cases.json) of about 2,100 cases in 308 problems, produced by `make validate-cases`: it runs the Java and C++ reference solutions over every unfiltered suite with the same answer checking users get, and excludes cases the references reject, plus cases whose recorded answer fails the problem's own answer checker.
See [NOTICE.md](NOTICE.md) for attribution.
@@ -160,9 +160,9 @@ docker compose cp app:/data/user.db ./localcode-user-backup.db
## Known limitations
- **Kotlin reference solutions are sparse upstream**, so the Solutions tab shows Java for most Kotlin problems. Kotlin submissions are judged normally.
-- **Problems with several valid answers** are judged by checking the answer, not by matching one expected output: 74 problems ("return any valid arrangement", course orders, Gray codes, CIDR covers, …) have a checker that validates the answer against the input, and "in any order" answers are compared ignoring order (at every level where the problem allows it). A multi-answer problem without a checker yet is still compared against one expected answer; please report it.
+- **Problems with several valid answers** are judged by checking the answer, not by matching one expected output: 75 problems ("return any valid arrangement", course orders, Gray codes, CIDR covers, …) have a checker that validates the answer against the input, and "in any order" answers are compared ignoring order (at every level where the problem allows it). A multi-answer problem without a checker yet is still compared against one expected answer; please report it.
- **Design, SQL, shell and concurrency problems** can be read but not run.
-- **C++ is compiled with Clang 19 and `-std=c++23 -O2`**, as on LeetCode, but without AddressSanitizer, so some out-of-bounds bugs that LeetCode would report may go unnoticed.
+- **C++ is compiled with Clang 19 and `-std=c++23 -O2`** but without AddressSanitizer, so some out-of-bounds bugs may go unnoticed instead of failing with a runtime error.
- **Cold-start compile times** are about 1 to 2 s for Java and C++ and about 4 s for Kotlin.
## Troubleshooting
@@ -188,7 +188,7 @@ Start on another port: `LOCALCODE_PORT=8080 docker compose up -d`.