Git Product home page Git Product logo

choice's People

Contributors

fastjur avatar francisbehnen avatar joepdejong avatar julian9499 avatar matthijskok avatar praseodym avatar svenpopping avatar zedfrigg avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

choice's Issues

Put files on the filesystem instead of in the database

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.

API serves files without extension

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).

Fix Dropdown Menus

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".

Dashboard does not work, results in 404 error

Steps to reproduce:

  1. Navigate to https://ch.tudelft.nl/choice2/dashboard
  2. Log in

Expected behaviour

See the dashboard and be able to upload exams

Actual behaviour

The following error page is displayed:
screen shot 2018-09-25 at 16 56 48

There are no console messages. Also, very occasionally the page loads. But after a refresh the same error message is displayed.

System information

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

Browsers tested

Safari Version 11.1.1 (13605.2.8)
Google Chrome Version 69.0.3497.100 (Official Build) (64-bit)

Improve performance

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.

Cannot load documents

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]

Sort Exams by Year

Currently, the exams seem to be displayed unsorted on the user-end. I think it would be more user-friendly to sort them by year.
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.