Since the phpv8-v8js plugin did not fully support PHP 7.4 and there is no new package on pecl...
Every time we need to make some 魔改 on this because official provided versions are always too old...
Let's welcome brand new look made by Bootstrap 4!
Not only website but also our logo is being flat now.
The new logo uses blue as main color, to be different from original.
For us, it also shows the project has up to a new stage.
We hope that the project will get better and better.
BREAKING CHANGE: The path for users to place their images is renamed.
Logos are saved as new names too. Users should move "pictures" to "images".
Any modifications should suit the Bootstrap 4's standard.
There are some situations that need to place subfolder in data path.
If there is any file but not only folder in path, do not move.
Previous moving logic did not check about this.
For only web, there is no need to build checkers.
There are so many checkers that will slow down make speed.
Also for some situations, users can build checkers without runners.
Without bundle, now you can choose to download single container.
For example, you can only download judger container to setup a new judger.
Also, the web container now no db and judger containing, except local sandbox.
You can use docker-compose to get every single container work together from now.
Single DB this time uses the latest MySQL 8 version, so some preferences are different.
The runtime versions on faq page are very old and not edited.
If judger is not with web, we can't determine the exact version.
So set these versions as default show, won't be too much different.
We add a new way to access blog page. Now there are 3.
The switch now uses number to choose the way.
1 is for subdomain and 3 is for subfolder.
2 is for separated blog domain with its subfolder.
For example, mike's link is blog.xxx.xxx/mike.
Blog list page link on navbar will change by domain mode.
When using sub-directory blog, the 'blogof' not looks so good.
And, there are duplicate 'blog' characters, which making people uncomfortable.
So, for sub-directory blog, use 'blog' instead of 'blogof'.
'blog' is not as a sub folder or type anymore, use 'post' instead.
BREAKING CHANGE: Due to the conflict of 'blog' sub-directory, when go to blog post,
now should use 'blogs/{id}'; but when subdomain mode is on, you can still use 'blog'
to access these blog posts. 'blogof' is no longer used, and you need to inform users
that blog link is changed, to avoid the inaccessbility.
The utf8 set in MySQL is not real UTF-8.
Use utf8mb4 character set instead of utf8.
妈妈再也不用担心写东西用不了 Emoji 了~
BREAKING CHANGE: Old databases and tables need to be upgraded.
Better not use old database structure with new connect parameters.
The web interface is merged but the table is not.
Merge it into a single SQL file, without execute PHP.
Redumped database structure with mysqldump command.
When judger is polling, there will be many items under access log file.
It makes access log file very big and makes us difficult to check the log.
Move judge access log to another single file, make it easier to manage log files.
Java 7 is now out of support. A large number of people use Java 8.
As the latest Java LTS version, now add support for Java 11.
Due to the policies from Oracle, SunJDK is replaced.
Upgrade judge_client from Python 2 to Python 3.
Add back and support a new judger update method.
Remove the Makefile outside of the folder which not contain any C file.
Users rarely use hack, but it is enabled by default.
They need to disable it manually, and there are also many people do not now why should disable it.
Make the hack function disabled when creating a new problem.
* feat(install, svn): remove svn
Remove everything related to svn.
Rename uoj-svn-lib to uoj-data-lib.
Save preparing problem data to /var/uoj_data/prepare/problem_id.
* Typo: uoj_date -> uoj_data
* add: backward compatibility
BREAKING CHANGE: Preparing problem data location is changed
You need to move files from /var/svn/problem/{id}/cur/{id}/1 to
/var/uoj_data/upload/{id}
The system will get the time_limit and memory_limit from problem.conf automatically. In addition, the problem that doesn't have any data will show: time_limit: N/A memory_limit: N/A
To support subdomain cookies, an extra "." is added to the domain when setting the cookies.
However, this strategy fails on "localhost", because browsers do not recognize ".localhost".
So I add a check for this so that "localhost" is used as the cookie domain in this case.
When a blogs was saved, only links of form "/blog/id/write" was
returned, ignoring username. Under a subdomain
("user.blog.site/blog/id/write") this is fine, but it does not work if
a subdomain is not used ("site/blog/id/write"). `HTML::blog_url` should
be called to return the links.
Also, DB::insert_id is called before actually inserting the blogs to get
the new blog's id. This sometimes return a 0, especially when the user
has just deleted a blog. DB::insert_id should be called after the
insert instead.
Previous the branch in Dockerfile is specified manually in each branch.
But when someone want to change the branch or test they must modify it.
To make the process more intelligent, we will auto get the branch name.
And, to make the image smaller, we added --single-branch argument onto.
There is subfolder in the uploaded data archive file, we can now process it.
We will move files in the subfolder out to the data rootdir of current problem.
If you have some data archives with subfolder, don't need to repack them manually.
In the previous version when upload a zip online, even
if it is a real zip file the system refuses to accept.
Just simply disabled this function but it is not suitable.
We found that there is not just one MIME type for zip file.
So we add another common zip MIME types to temporarily solve it.
On Blog Preview page when someone set readmore flag will make rest of the content invisible.
Instead there will be a button for users to click and get the full article.
Because of the wrongly put link, it will make the last slash missing.
Put the blog id back in the right place to get a right link.
In the past, we make the bundle installation as two parts.
Some of the steps such as compile judger is done at local.
And, to make it work, the steps may in a wrong order.
Now we make most of the steps working online automaticly,
and if you start the container you don't need to wait for
a long time to let it prepare. It will only reset passwords.
There are also some works moved to another place in order
to make the installation flow clearer and simpler.
Using more threads to boost judge_client's make.
Deleted some old things and doing something new.
TODAY: **Merry Christmas!**
We wrote the script that can only be executed on bash.
But Ubuntu sets dash as its default shell environment.
One of the most difference is the POSIX standard echo,
another is parameter of chown can't be put to the end.
So we made some changes to let the script used widely.
And you will not face the syntax error when open this.
We've just change php7 branch as the master branch, and php5 version turned into legacy.
To make docker automated build work correctly, the branch name specify now changed.
Okay, in truth it is not really a bug.
We just change its name in php because function lacks.
For judger it will work correctly and will not crash during running the program.
But, to avoid inconsistence we use "Judgement" for all purpose.
"Judgment" or "Judgement"? They are both right.
You ask me which is better? I don't know.
I make the choice only because the word with more "e" is used almost everywhere.
Used more frequently and I don't want to edit a lot of files.
Since PHP 5.1.0 (when the date/time functions were rewritten), we need to specify the default timezone.
Otherwise the timezone will always set to UTC that may cause problem or cause confusion.
We set the default timezone to Asia/Shanghai. If you are not at the area of this timezone, you can change it manually.
When managing data, there will be a preview of test data or validator binary file.
But in PHP7 the prefiew of test data text file or problem.conf text file is not shown.
After my test it is caused by file_get_contents() when passing offset with -1.
It is strange that the manual on php.net in Chinese the default of $offset is -1,
but in English the default of $offset is 0. Use -1 will get nothing, 0 instead is fine.
The commit also change uojFilePreview() that can also be used as viewing binary file.
For backwards compatibility, we just set text as the default file type and no need to specify.
When printing the table of Judgement Failed items at super-manage, there is nothing shown.
It caused by using echoSubmissionsList(), arguments that 3 passed but exactly 4 expected.
So add the missing argument, and let the result hidden because we select an exact result.
Also, because of the typo of "Judgement", there will be nothing shown if
only fixed too few arguments. This commit changes it too.