LRR/README.md

230 lines
9.3 KiB
Markdown
Raw 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
2023-07-30 16:20:11 +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'`.
2023-07-30 16:25:40 +08:00
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.
The command for exporting the database is `mysqldump -u mnc -p lrr > lrr_database_dump.txt`, where mnc after -u is MySQL's username, and lrr after -p is the database name.
2023-07-30 16:28:01 +08:00
The command for importing is `mysql -u mnc -p lrr < lrr_database_dump.txt`. 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.txt? 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-07-30 16:20:11 +08:00
## 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)