wisvch / choice Goto Github PK
View Code? Open in Web Editor NEWCH exam archive
License: GNU General Public License v3.0
CH exam archive
License: GNU General Public License v3.0
Currently CHoice saves the exams in its PostgreSQL database. That database is currently ~700MB in size, which causes a lot of churn backups because files cannot be effectively deduplicated. It also just isn't a great idea to store large files in a database anyway.
I'd suggest the exams be moved to the filesystem (a Kubernetes persistent volume) or e.g. a Google Cloud Storage bucket whenever we're migrated into the cloud.
Searching for an exam is pretty hard when the date and course are not sorted.
Currently, the API serves PDF exams at endpoints like /api/v1/document/exam/9
. Some browsers (e.g. Firefox Developer Edition) do not append an extension to the filename, so you end up with a file called 9
instead of 9.pdf
.
It would be even better to change the name of the downloaded file to [filename].pdf
instead of [id](.pdf)
.
The TU Delft API is deprecated and should be decoupled from this project.
For example: Calculus has two predecessors, Analyse 1 & 2.
Temporary fix would be to make this a normal text field
When you select a study or study program in the dropdown menu, it doesn't change anything in the list of exams. Also, after that the search bar doesn't work anymore either. The console shows "Failed to load resource: the server responded with a status of 500 ()"
Also, the titles "study" and "study program" don't really make sense, I think they should be "study program" and "study year".
See the dashboard and be able to upload exams
The following error page is displayed:
There are no console messages. Also, very occasionally the page loads. But after a refresh the same error message is displayed.
MacBook Pro (13-inch, 2017, Two Thunderbolt 3 ports)
Processor 2,5 GHz Intel Core i7
Memory 16 GB 2133 MHz LPDDR3
Graphics Intel Iris Plus Graphics 640 1536 MB
OS: macOS High Sierre Version 10.13.5
Safari Version 11.1.1 (13605.2.8)
Google Chrome Version 69.0.3497.100 (Official Build) (64-bit)
Add health check endpoint and configure it in Kubernetes
The avarage GET /api/v1/course/active
takes 450ms (p90) and does 1046(!) SQL queries. This one comes up a lot:
select exam0_.id, exam0_.course, exam0_.date, exam0_.including_answers, exam0_.name from exam exam0_ left outer join course course1_ on exam0_.course = course1_.code where course1_.code = ?
I think simple some optimisations (eager fetching) should take care of this and improve performance.
org.postgresql.util.PSQLException: Large Objects may not be used in auto-commit mode.
at org.postgresql.largeobject.LargeObjectManager.open(LargeObjectManager.java:262) ~[postgresql-9.4.1212.jre7.jar!/:9.4.1212.jre7]
at org.postgresql.largeobject.LargeObjectManager.open(LargeObjectManager.java:248) ~[postgresql-9.4.1212.jre7.jar!/:9.4.1212.jre7]
at org.postgresql.jdbc.AbstractBlobClob.getLo(AbstractBlobClob.java:272) ~[postgresql-9.4.1212.jre7.jar!/:9.4.1212.jre7]
at org.postgresql.jdbc.AbstractBlobClob.getBinaryStream(AbstractBlobClob.java:116) ~[postgresql-9.4.1212.jre7.jar!/:9.4.1212.jre7]
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.