Skip to content

Commit

Permalink
update progress
Browse files Browse the repository at this point in the history
  • Loading branch information
domoberzin committed Apr 14, 2024
1 parent e767502 commit 5f31711
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 3 deletions.
31 changes: 30 additions & 1 deletion students/domoberzin/knowledge.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,36 @@ Having only used `SQLite` and `MySQL` in the past, I had to familiarise myself w
Aspects Learnt:

- Learnt about PostgreSQL's architecture, including its use of processes for client connections, MVCC (Multiversion Concurrency Control), and its write-ahead logging (WAL) for data integrity
- Write-Ahead Logging (WAL) involves recording changes to a log before any changes are made to the actual database. This method is crucial for recovery after a crash, as it ensures that all committed transactions are saved.
- MVCC allows multiple users to access the database concurrently without locking the data. This means readers don't block writers and vice-versa, leading to increased performance and lower waiting times during operations, which is a significant advantage over MySQL's more traditional locking mechanisms
- Learnt about the differences between the 3 SQL database engines

Resources:
- [Differences between `MySQL`, `SQLite` and `PostgreSQL`](https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparison-of-relational-database-management-systems)
- [Differences between `MySQL`, `SQLite` and `PostgreSQL`](https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparison-of-relational-database-management-systems)


### Angular

Having had no experience utilising Angular prior to working on TEAMMATES, I was introduced to several neat features that Angular has to offer.

Aspects Learnt:

- Angular's component-based architecture makes it easy to build and maintain large applications. Each component is encapsulated with its own functionality and is responsible for a specific UI element. This modularity allowed me to quickly understand and contribute to the project, as I could focus on individual components without being overwhelmed by the entire codebase.

- Angular's dependency injection system is a design pattern in which a class receives its dependencies from external sources rather than creating them itself. This approach simplifies the development of large applications by making it easier to manage and test components.

- Angular offers the `trackBy` function, which I used in conjunction with the `*ngFor` directive to manage lists more efficiently. Normally, `*ngFor` can be inefficient because it re-renders the entire list when the data changes. However, by implementing trackBy, Angular can track each item's identity and only re-render items that have actually changed. This reduces the performance cost, especially in large lists where only a few items change.

### Google Cloud

When deploying the staging environment for the ARF upgrade, I managed to work with and gain familiarity with the deployment workflow, as well as several GCP tools and the `gcloud` sdk.

### Snapshot Testing

Snapshot testing with Jest is an effective strategy to ensure that user interfaces remain consistent despite code changes. It's important for developers to maintain updated snapshots and commit these changes as part of their regular development process.

Snapshot tests are particularly useful for detecting unexpected changes in the UI. By capturing the "snapshot" of an output, developers can compare the current component render against a stored version. If changes occur that aren't captured in a new snapshot, the test will fail, signaling the need for a review.

### E2E Testing

E2E Testing allows us to ensure that the application functions as expected from the perspective of the user. This type of testing simulates real user scenarios to validate the complete functionality of the application. Common tools for conducting E2E testing include Selenium, Playwright, and Cypress.
14 changes: 12 additions & 2 deletions students/domoberzin/progress.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,15 @@
| 11 | Reviewed PR: [[#11878] Change institute length limit #12974](https://github.com/TEAMMATES/teammates/pull/12974) |
| 11 | Reviewed PR: [[#11878] Foundation for getting by ID in account request endpoints #12957](https://github.com/TEAMMATES/teammates/pull/12957) |
| 11 | Reviewed PR: [[#11878] Add AccountRequest Rejection email generator. #12987](https://github.com/TEAMMATES/teammates/pull/12987) |
| 11 | Authored PR: [[#11878] Add Edit and Approve Account Requests functionality #12975](https://github.com/TEAMMATES/teammates/pull/12975) |
| 11 | Authored PR: [[#11878] Fix Account Request Update Search Indexing #12984](https://github.com/TEAMMATES/teammates/pull/12984) |
| 11 | Merged PR: [[#11878] Add Edit and Approve Account Requests functionality #12975](https://github.com/TEAMMATES/teammates/pull/12975) |
| 11 | Merged PR: [[#11878] Fix Account Request Update Search Indexing #12984](https://github.com/TEAMMATES/teammates/pull/12984) |
| 12 | Merged PR: [[#11878] Create Rejection Modal for Account Requests #12989](https://github.com/TEAMMATES/teammates/pull/12989) |
| 12 | Merged PR: [[#11878] Convert RejectAccountRequestAction to use transactions #13001](https://github.com/TEAMMATES/teammates/pull/13001) |
| 12 | Reviewed PR: [[#11878] Update ResetAccountRequest to reference by ID #13002](https://github.com/TEAMMATES/teammates/pull/13002) |
| 12 | Merged PR: [[#11878] Add Error Message for Approving Existing Account #13004](https://github.com/TEAMMATES/teammates/pull/13004) |
| 12 | Merged PR: [[#11878] Handle Duplicate Approved Account Requests #13009](https://github.com/TEAMMATES/teammates/pull/13009) |
| 12 | Reviewed PR: [[#11878] Merge master into feature #13011](https://github.com/TEAMMATES/teammates/pull/13011) |
| 12 | Reviewed PR: [[#11878] Remove unused modal in AdminHomePage #12998](https://github.com/TEAMMATES/teammates/pull/12998) |
| 12 | Authored PR: [[#11878] Add tests for Account Request Table #12977](https://github.com/TEAMMATES/teammates/pull/12977) |
| 12 | Authored PR: [[#11878] Add Admin E2E Tests #13020](https://github.com/TEAMMATES/teammates/pull/13020) |
| 12 | Set-up the staging environment for testing the new Account Request Form features |

0 comments on commit 5f31711

Please sign in to comment.