LRR/README.md

255 lines
10 KiB
Markdown
Raw Permalink Normal View History

# About LRR
2021-10-24 13:32:03 +08:00
LRR (Lab Report Repository) is an online software application for course instructors to post, receive and mark assignments, and for students to submit assignments, or submit re-marking requests.
This software was originally developed by Mahomed Nor in 2018, a graduate student in the Department of Computer Science at the Zhejiang Normal University,
2020-03-29 16:29:56 +08:00
while he was taking a graduate course called **Advanced Software Engineering** (http://lanlab.org/course/2018f/se/homepage.html).
The LRR's project home page is at http://121.4.94.30/homepage/. For potential project contributors, we recommend that you browse its home page first to familiarize yourself with the project.
# Mission
2021-10-24 13:32:03 +08:00
Our mission is to make the experience of submitting assignments great for tens of hundreds of students in the department of computer science at the Zhejiang Normal University.
2020-03-31 22:00:13 +08:00
# Installation Instructions
2021-07-21 21:38:51 +08:00
## Hui steps
2021-07-21 21:38:51 +08:00
I spent about two hours installing LRR to a bare, remote Ubuntu server (Ubuntu 20.04 LTS).
2021-07-21 21:38:51 +08:00
LRR needs Apache and MySQL to run. I followed [How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-20-04) to set up these server applications. [How to install and configure PHP](https://ubuntu.com/server/docs/programming-php) is also a good guide.
2021-07-21 21:38:51 +08:00
LRR uses a database called `lrr`. So create this database using MySQL root account. Open MySQL's prompt using `sudo mysql`. Create the database using command `CREATE DATABASE lrr;`, and grant all privileges to MySQL user `lrr` using command `GRANT ALL PRIVILEGES ON lrr.* TO 'mnc'@'localhost' WITH GRANT OPTION;`. If MySQL user mnc does not exist, create it using command `CREATE USER 'mnc'@'localhost' IDENTIFIED BY 'password'`.
To facilitate data migration, I need to export the existing `lrr` to a plain text file (including many sql commands) and import that text file to the newly created `lrr` database on the new server.
2023-12-05 11:53:52 +08:00
The command for exporting the database is `mysqldump -u mnc -p lrr > lrr_database_dump.sql`, where mnc after -u is MySQL's username, and lrr after -p is the database name.
The command for importing is `mysql -u username -p lrr < lrr_database_dump.sql`. You must create database `lrr` first on your computer before doing the import. Read [How to Import and Export MySQL Databases in Linux](https://phoenixnap.com/kb/import-and-export-mysql-database) for more detail. Do not have lrr_database_dump.sql? You can use lrr_database.sql in this repo instead.
2021-07-21 21:38:51 +08:00
LRR also needs to store assignment submissions. We store them in a folder called `../../lrr_submission`. Note that `lrr_submission` is two levels above the project folder (where many PHP files reside). I copied this folder from the existing one. I think it is also OK if you create an empty folder.
2021-07-21 21:38:51 +08:00
We need to set a proper owner and accessibility for `lrr_submission` using the following two commands:
2021-10-18 21:39:16 +08:00
`sudo chown -R www-data:www-data lrr_submission` and `sudo chmod -R g+rw lrr_submission`. Also, remember to change the user name and password in `lrr_submission/KeepItSafe.txt` for the database connection.
2021-07-21 21:38:51 +08:00
The above steps are preparation work. Now we could clone the LRR's repository to `/var/www/html/`.
Rename LRR to lrr. Change the owner of lrr: `sudo chown -R $USER:$USER /var/www/lrr`. Edit apache configure file: `sudo nano /etc/apache2/sites-available/lrr.conf`.
<VirtualHost *:80>
ServerName lrr
ServerAlias www.lrr.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/lrr
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Enable the site lrr: `sudo a2ensite lrr`. Restart the apache server: `sudo systemctl reload apache2`.
Visit the LRR application by entering this URL in a web browser: http://121.4.94.30/.
2021-07-21 21:38:51 +08:00
2023-12-05 11:53:52 +08:00
### Solving the coding problems in the dump file
If the database contains Chinese characters, the dump file (e.g., lrr_database_dump.sql) may contain *weird* characters, e.g., `研究生`, so weird that no one can tell their meaning.
We need to correct these abnormal characters before we import them to the new database, so that the PHP program can correctly display Chinese information.
The simplest solution is using the ftfy (fixes text for you) Python package to convert them, as follows:
```
from ftfy import fix_text
with open('lrr_database_dump.sql') as f:
content = f.read()
content2 = fix_text(content)
with open('lrr_database_dump_sql_fixed.txt', 'w') as f:
f.write(content2)
```
Now, import data using lrr_database_dump_sql_*fixed*.txt.
If you encounter the 'Unknown MySQL server host' problem during import, replace all apostrophes with a space in the dump file. For example, if a database table field contains *can't*, then the apostrophe between *n* and *t* can cause that problem.
## Enock steps
2021-07-21 21:38:51 +08:00
Enock, a graduate student here, has made a tutorial about how he deployed LRR to a remote server (http://lanlab.org/course/2021s/spm/PuTTY-Server.txt).
2020-03-31 22:00:13 +08:00
# Current Status
2020-03-31 22:00:13 +08:00
This software has been actively used by students who took or are
2021-10-24 13:32:03 +08:00
taking courses taught by Hui, e.g., Introduction to Software
Engineering, Introduction to Object-oriented analysis and design,
Advanced Software Engineering, Software Architecture, and Software
Project Management.
2021-10-24 13:32:03 +08:00
There are more than 500 student accounts created since its first
2020-03-31 22:00:13 +08:00
launch in 2018.
2020-03-31 22:00:13 +08:00
A running instance of this software is at http://118.25.96.118/nor/
There are about 40 bugs (most being CRITICAL) that remain unresolved
2021-10-24 13:32:03 +08:00
before LRR can hit its Beta release. See the section *The Bug
Tracker* for more detail. Currently, there are a few students who are
taking my Advanced Software Engineering course) working on these bugs.
# The Bug Tracker
2020-03-31 22:08:11 +08:00
We use Bugzilla to track LRR's bugs and feature requests.
2021-10-24 13:32:03 +08:00
Most bugs are [recorded on Bugzilla](http://118.25.96.118/bugzilla/buglist.cgi?bug_status=__all__&list_id=1319&order=Importance&product=Lab%20Report%20Repository%20%28nor%20houzi%29&query_format=specific).
2020-03-16 15:43:50 +08:00
# TODO
2021-10-24 13:32:03 +08:00
- [Priority low] *Receiving email for password resetting*. Password resetting link is not always sent successfully.
- [Priority medium] *Discuss how assignments should be stored?* `/student-number/course-code/semester/section-number/assignement-title/submission.txt`
- [SOLVED] Editing the assignment title after uploading a new assignment (instructor).
2020-03-31 22:00:13 +08:00
- [SOLVED] A new user could not login immediately after sign up.
2020-03-31 22:09:04 +08:00
- A more complete list of TODO's is at http://lanlab.org/course/2020s/spm/decide-areas-for-improvement-review.html
2020-03-31 22:00:13 +08:00
# How to Contribute
2020-03-31 22:00:13 +08:00
We welcome your participation in this project.
2020-03-31 22:00:13 +08:00
Your participation does not have to be in the form of contributing code. You could help us on
ideas, suggestions, documentation, etc.
2021-10-24 13:32:03 +08:00
You can fork this project and start working on your fork. After you are done, please create a pull request so that we could review your changes and give you feedback.
2021-10-24 13:32:03 +08:00
You will use the feature-branching workflow (see below).
The main point of this workflow is
that you work on a branch on your local drive, push that branch to a remote
repository, and create a Pull Request (i.e., Pull Me Request) at
for other people to review your changes. If everything is
OK, then *someone* could merge your changes to the master branch in the
2021-10-24 13:32:03 +08:00
central repository.
I believe that *code review* at the Pull Request stage is important
for both improving code quality and improving team quality.
2020-03-31 22:00:13 +08:00
## The Feature-branching Workflow
We will use the feature-branching workflow for collaboration. The
idea is that you make your own branch, work on it, and push this branch to
2021-10-24 13:32:03 +08:00
the remote, online repository for code review.
2020-03-31 22:00:13 +08:00
Check the section **The feature-branching workflow** in the following link for more detail:
https://github.com/spm2020spring/TeamCollaborationTutorial/blob/master/team.rst
2021-10-24 13:32:03 +08:00
## Testing
Make sure your changes can pass all the tests in folder [./test](http://121.4.94.30:3000/mrlan/LRR/src/branch/master/test).
2021-10-24 13:32:03 +08:00
## Communications Method
2021-10-24 13:32:03 +08:00
To submit bug reports or improvement ideas, please contact Hui [lanhui at zjnu.edu.cn]. He could open a Bugzilla account for you.
We can also communicate through pull requests. You make a pull request, I review it and comment on it, and you revise your pull request until everyone is happy so that your changes get merged to the master branch.
2020-03-31 22:00:13 +08:00
## Frequently Asked Questions
2021-07-21 21:55:04 +08:00
2021-10-24 13:32:03 +08:00
1. Q: The web application's front page does not show properly, i.e., elements are not well aligned.
2021-07-21 21:58:19 +08:00
A: You missed two folders `css` and `font-awesome`. These folders include third-party js or css files and therefore are not included.
2021-07-21 21:55:04 +08:00
2021-07-21 21:58:19 +08:00
1. Q: What if I do not have any information about the `lrr` database?
2021-10-24 13:32:03 +08:00
A: You could use `lrr_database.sql` to make a new database.
2020-03-31 22:00:13 +08:00
2021-10-24 13:45:31 +08:00
# Related GitHub Repositories
2020-03-31 22:00:13 +08:00
2021-10-24 13:45:31 +08:00
- The original repository: https://github.com/EngMohamedNor/LabReportRepo
- The Lan Laboratory repository: https://github.com/lanlab-org/LRR
2021-10-26 12:45:42 +08:00
- Zhan Shenchen repository: https://github.com/SawiMg/Seleium
2021-10-24 13:45:31 +08:00
2021-10-25 09:08:08 +08:00
- Ibrahim repository: https://github.com/hema-001/LRR
2020-03-31 22:00:13 +08:00
2020-03-22 20:33:19 +08:00
# Contributor List
*Important contributors are highlighted.*
2020-03-31 22:01:20 +08:00
GitHub Account - Full Name - Student number
2022-06-17 23:19:00 +08:00
CODEwithZAKI - Omar Mohamud Mohamed - 2020041
2022-06-17 23:19:00 +08:00
BloudYoussef - Khayat Youssef - 2020042
2022-06-17 23:19:00 +08:00
TanakaMichelle - Tanaka Michelle Sandati - 2017134
2020-03-30 12:29:14 +08:00
2022-06-17 23:19:00 +08:00
WhyteAsamoah - Yeboah Martha Asamoah - 2017135
2022-06-17 23:19:00 +08:00
xiaoyusoil - ZhengXiaoyu - 2017110
2022-06-17 23:19:00 +08:00
Benny123-cell - ZhangBin - 2017127
2022-06-17 23:19:00 +08:00
421281726 - LiJiaxing - 2017118
2022-06-17 23:19:00 +08:00
zhenghongyu-david - ZhengHongyu - 2017128
2022-06-17 23:19:00 +08:00
wkytz - YeHantao - 2017125
2022-06-17 23:19:00 +08:00
zego000 - GaoZeng - 2017117
2022-06-17 23:19:00 +08:00
Richard1427 - XieJiacong - 2017123
2022-06-17 23:19:00 +08:00
yutengYing - YingYuteng - 2017126
2022-06-17 23:19:00 +08:00
Samrusike - Samantha Rusike - 2016140
*enockkays* <enockkhondowe94@yahoo.com>
2022-06-17 23:19:00 +08:00
*Teecloudy* - Ashly Tafadzwa Dhani - 201150
2022-06-17 23:19:00 +08:00
GuedaliaBonheurSPM - Guedalia Youma - 2019221
2022-06-17 23:19:00 +08:00
ACorneille - Alimasi Corneille - 2019168
2022-06-17 23:19:00 +08:00
Tabithakipanga - Kipanga Dorcas - 2019170
2020-04-26 16:53:19 +08:00
2022-06-17 23:19:00 +08:00
Mary-AK - Mary Akussah Doe - 2019173
2020-04-26 16:53:19 +08:00
2022-06-17 23:19:00 +08:00
pkkumson - Kumson Princewill Kum - 2019166
2020-04-27 14:07:36 +08:00
2022-06-17 23:19:00 +08:00
Twizere - Twizere Pacifique - 2019174
2020-04-27 14:07:36 +08:00
2022-06-17 23:19:00 +08:00
Nicole-Rutagengwa - Nicole Rutagengwa - 2019169
2021-10-25 09:08:08 +08:00
*hema-001* - Ibrahim Mohamed Ibrahim Ismail - omitted
2021-10-24 10:53:00 +08:00
*SawiMg* - Zhan Shenchen - omitted
# References
- 詹沈晨. (2020). [网页程序测试自动化 (Selenium) 测试效率](http://lanlab.org/ZhanShenchen-On-Automated-Web-Application-Test-Efficiency-with-Selenium.doc)
2021-10-24 13:45:31 +08:00
- Ibrahim. (2021). [Defect analysis for LRR](http://lanlab.org/thesis/Defect-Analysis-for-LRR.docx)