From 485147cb3f891df552e7d2c340729edd4fe692e4 Mon Sep 17 00:00:00 2001 From: KowanChan <44438611+KowanChan@users.noreply.github.com> Date: Thu, 2 Mar 2023 19:34:26 -0500 Subject: [PATCH 001/206] Update User_Experience.md Added user experience fields. Examples, related, and just an overview --- Topics/User_Experience.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index bff63d6b8..10da6f3f6 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -1,2 +1,28 @@ ## Resources for User Experience domain +### Overview + +User experience is a large and broad topic. It covers the overall experience of the user and how they interact with software systems and applications. The confusing part is that UI and UX design, while related can also be totally different. For example, UI could be how the interface is designed where UX is more about how users interact with said design. + +There are many notable links differentiating the two areas. Here is one of the realted websites. + +- [The Definition of User Experience](https://www.nngroup.com/articles/definition-user-experience/) + +### Areas of User Experience + +User expereience is not easy to define. There are many areas that contribute to User Expereince but there is not one answer. The following are a few examples. + +___Button Design___ +- [Amazon Button](https://medium.com/@cccalibour/how-ux-design-makes-a-difference-amazons-continue-button-901618a8b00e): The design of butt +ons that improves user experience by simplifying process. + +___Established Norms___ +- [Scrolls On Socials](https://forgeandsmith.com/blog/scrolling-vs-clicking-whats-the-preferred-user-experience/): Users are conditioned for scrolling, and now every new social media app conforms to scrolling. + +___Color Theory___ +- [Colors Influence Choice](https://usabilitygeek.com/colour-user-experience-psychology/#:~:text=Colour%20plays%20a%20crucial%20role,and%20identified%20with%20your%20industry.): Users are shown certain colors to enforce actions. For example, red is commonly linked to agressive or bad emotions and as such can be used as a cancel to dissuade people from refunding items. + + +### Related Resources + +There are many courses related to User Experience. This includes the U of T Course [The Design of Interactive Computational Media](https://artsci.calendar.utoronto.ca/course/csc318h1) which is highly reccomended if interested in this topic. From 4eaa1e611ac203d044114ddf09b524127dd2aee0 Mon Sep 17 00:00:00 2001 From: KowanChan <44438611+KowanChan@users.noreply.github.com> Date: Thu, 2 Mar 2023 21:23:12 -0500 Subject: [PATCH 002/206] Update User_Experience.md Fixed spelling mistakes --- Topics/User_Experience.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 10da6f3f6..9048d4a06 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -2,15 +2,14 @@ ### Overview -User experience is a large and broad topic. It covers the overall experience of the user and how they interact with software systems and applications. The confusing part is that UI and UX design, while related can also be totally different. For example, UI could be how the interface is designed where UX is more about how users interact with said design. - -There are many notable links differentiating the two areas. Here is one of the realted websites. +User experience is a large and broad topic. It covers the overall experience of the user and how they interact with software systems and applications. The confusing part is that UI and UX design, while related can also be totally different. For example, UI could be how the interface is designed whereas UX is more about how users interact with the said design. +There are many notable links differentiating the two areas. Here is one of the related websites. - [The Definition of User Experience](https://www.nngroup.com/articles/definition-user-experience/) ### Areas of User Experience -User expereience is not easy to define. There are many areas that contribute to User Expereince but there is not one answer. The following are a few examples. +User experience is not easy to define. There are many areas that contribute to User experience but there is not one answer. The following are a few examples. ___Button Design___ - [Amazon Button](https://medium.com/@cccalibour/how-ux-design-makes-a-difference-amazons-continue-button-901618a8b00e): The design of butt @@ -23,6 +22,6 @@ ___Color Theory___ - [Colors Influence Choice](https://usabilitygeek.com/colour-user-experience-psychology/#:~:text=Colour%20plays%20a%20crucial%20role,and%20identified%20with%20your%20industry.): Users are shown certain colors to enforce actions. For example, red is commonly linked to agressive or bad emotions and as such can be used as a cancel to dissuade people from refunding items. -### Related Resources +### Helpful Courses There are many courses related to User Experience. This includes the U of T Course [The Design of Interactive Computational Media](https://artsci.calendar.utoronto.ca/course/csc318h1) which is highly reccomended if interested in this topic. From b62704454a11f88c26576c2989e4d4a60a5d60aa Mon Sep 17 00:00:00 2001 From: KowanChan <44438611+KowanChan@users.noreply.github.com> Date: Thu, 2 Mar 2023 21:24:25 -0500 Subject: [PATCH 003/206] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 17d8a6ae1..5e57c5c01 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,9 @@ Potential Topics-- - User Experience + 1. Overview + 2. Areas of User Experience + 3. Helpful Courses - Product Management - Other useful resources -- Teamwork \ No newline at end of file +- Teamwork From ec9626258be2b80bb3ee5d84148d6f66756aff38 Mon Sep 17 00:00:00 2001 From: KowanChan <44438611+KowanChan@users.noreply.github.com> Date: Thu, 2 Mar 2023 21:27:44 -0500 Subject: [PATCH 004/206] Update User_Experience.md Added explanation to helpful courses section --- Topics/User_Experience.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 9048d4a06..30f754472 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -24,4 +24,4 @@ ___Color Theory___ ### Helpful Courses -There are many courses related to User Experience. This includes the U of T Course [The Design of Interactive Computational Media](https://artsci.calendar.utoronto.ca/course/csc318h1) which is highly reccomended if interested in this topic. +There are many courses related to User Experience. This includes the U of T Course [The Design of Interactive Computational Media](https://artsci.calendar.utoronto.ca/course/csc318h1) which is highly reccomended if interested in this topic. [The Design of Interactive Computational Media](https://artsci.calendar.utoronto.ca/course/csc318h1) expands on the work done before coding projects. For example, one of the projects is testing how users would interact with a prototype of a UI and modifying it so that the UX is better for the user. From b6c50a63958f76d3d8a9dd1d1c044520b5433145 Mon Sep 17 00:00:00 2001 From: KowanChan <44438611+KowanChan@users.noreply.github.com> Date: Thu, 2 Mar 2023 21:29:31 -0500 Subject: [PATCH 005/206] Update User_Experience.md --- Topics/User_Experience.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 30f754472..da18eefba 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -9,7 +9,7 @@ There are many notable links differentiating the two areas. Here is one of the r ### Areas of User Experience -User experience is not easy to define. There are many areas that contribute to User experience but there is not one answer. The following are a few examples. +User Experience is not easy to define. There are many areas that contribute to User Experience but there is not one answer. The following are a few examples. ___Button Design___ - [Amazon Button](https://medium.com/@cccalibour/how-ux-design-makes-a-difference-amazons-continue-button-901618a8b00e): The design of butt @@ -19,7 +19,7 @@ ___Established Norms___ - [Scrolls On Socials](https://forgeandsmith.com/blog/scrolling-vs-clicking-whats-the-preferred-user-experience/): Users are conditioned for scrolling, and now every new social media app conforms to scrolling. ___Color Theory___ -- [Colors Influence Choice](https://usabilitygeek.com/colour-user-experience-psychology/#:~:text=Colour%20plays%20a%20crucial%20role,and%20identified%20with%20your%20industry.): Users are shown certain colors to enforce actions. For example, red is commonly linked to agressive or bad emotions and as such can be used as a cancel to dissuade people from refunding items. +- [Colors Influence Choice](https://usabilitygeek.com/colour-user-experience-psychology/#:~:text=Colour%20plays%20a%20crucial%20role,and%20identified%20with%20your%20industry.): Users are shown certain colors to enforce actions. For example, red is commonly linked to aggressive or bad emotions and as such can be used as a cancel to dissuade people from refunding items. ### Helpful Courses From dc59e63691d03475ed939c3517d8fd6dcf5c96a8 Mon Sep 17 00:00:00 2001 From: THLi3 <31786494+THLi3@users.noreply.github.com> Date: Sun, 5 Mar 2023 21:19:48 -0500 Subject: [PATCH 006/206] Added useful React resources with small description for each of them --- Topics/Tech_Stacks.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 9e3921642..85d5f6b03 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1 +1,33 @@ ## Tech Stacks + +### React Info and Resources + +React is a Javascript library used to build user interfaces. As such, you're going to have to know HTML, CSS and Javascript in order to learn React. These frontend challenges for HTML, CSS and JavaScript will help you review while making projects as well. \ +https://www.frontendmentor.io/ + + +Basic React tutorial provided by the official React website. This tutorial will guide you through a very basic tutorial that you can do straight from your browser. \ +https://reactjs.org/tutorial/tutorial.html + + +React tutorial by MDN Web Docs. \ +https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started + + +Javascript frameworks tutorial provided by Microsoft. \ +https://learn.microsoft.com/en-us/windows/dev-environment/javascript/ + + +1 hour in depth tutorials about React. These Youtube crash course provides a great in depth look at React and the various important components that you will be using most often. \ +https://www.youtube.com/watch?v=w7ejDZ8SWv8 \ +https://www.youtube.com/watch?v=b9eMGE7QtTk + + +Online development environment to try React out in (Among other frontend tools). Great for testing the waters with React to see if it will be something you want to learn or not. \ +https://codepen.io/ + + +Host your React websites straight from your Github repo. Website hosting is fairly expensive, so this is here as a free, fairly good alternative for website deployment. \ +https://pages.github.com/ + + From 69882623ecc82ae98bc0de1777e403a099aab09c Mon Sep 17 00:00:00 2001 From: IbrahimBess <70774207+IbrahimBess@users.noreply.github.com> Date: Sun, 5 Mar 2023 22:48:59 -0500 Subject: [PATCH 007/206] Nuxt 3 and Tailwindcss by Ibrahim bess --- Topics/Tech_Stacks.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 9e3921642..321d1263f 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1 +1,14 @@ ## Tech Stacks + + +## My Icon Learn How to Create a Nuxt3 App +If you are looking for tutorials or documentation on creating a Nuxt3 application, be aware that many resources actually teach Nuxt2. It is important to note that Nuxt3 installation and syntax differ significantly from Nuxt2. As I faced this challenge myself, I would like to share a helpful YouTube tutorial that provides step-by-step instructions for creating a Nuxt3 app. + +The tutorial link is: https://www.youtube.com/watch?v=hj3NNlTqIJg&list=PL8HkCX2C5h0XT3xWYn71TlsAAo0kizmVc&index=1 + +Additionally, you can access further support options, such as a Discord server, by visiting this page: https://nuxt.com/support/solutions. + +It's worth mentioning that due to the confusion between Nuxt2 and Nuxt3 documentations online, Nuxt2 has more support and answered questions than Nuxt3. Therefore, you may opt to use Nuxt2 instead. However, keep in mind that installing Nuxt2 takes a longer time, so you should be patient. + +If you want to add the Tailwind CSS library to your Nuxt3 app, please follow the instructions in this link: https://tailwindcss.com/docs/guides/nuxtjs#3. +Make sure to select Nuxt3 instead of Nuxt2. From 61814701d031624da1cf642c4320347c773035b6 Mon Sep 17 00:00:00 2001 From: THLi3 <31786494+THLi3@users.noreply.github.com> Date: Sun, 5 Mar 2023 23:20:31 -0500 Subject: [PATCH 008/206] Added more resources, split resources and information section --- Topics/Tech_Stacks.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 85d5f6b03..e691de71f 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,8 +1,12 @@ ## Tech Stacks -### React Info and Resources +### React Overview +React is a Javascript library used to build user interfaces. As such, you're going to have to know HTML, CSS and Javascript in order to learn React. +It's ease of use and popularity comes from how little you actually have to code. Easily applicable for any frontend interface, if you're going to use any library/framework for frontend development, React is the safest option. -React is a Javascript library used to build user interfaces. As such, you're going to have to know HTML, CSS and Javascript in order to learn React. These frontend challenges for HTML, CSS and JavaScript will help you review while making projects as well. \ +### React Resources + +These frontend challenges for HTML, CSS and JavaScript will help you review core skills while also making interesting projects as well. \ https://www.frontendmentor.io/ From 80e70fe0695483fd2c9f5647af6092f20c3f90bf Mon Sep 17 00:00:00 2001 From: KowanChan <44438611+KowanChan@users.noreply.github.com> Date: Tue, 7 Mar 2023 13:39:58 -0500 Subject: [PATCH 009/206] Update Topics/User_Experience.md spelling mistake fixed Co-authored-by: Lucia <37385317+lmg8@users.noreply.github.com> --- Topics/User_Experience.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index da18eefba..657c85853 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -24,4 +24,4 @@ ___Color Theory___ ### Helpful Courses -There are many courses related to User Experience. This includes the U of T Course [The Design of Interactive Computational Media](https://artsci.calendar.utoronto.ca/course/csc318h1) which is highly reccomended if interested in this topic. [The Design of Interactive Computational Media](https://artsci.calendar.utoronto.ca/course/csc318h1) expands on the work done before coding projects. For example, one of the projects is testing how users would interact with a prototype of a UI and modifying it so that the UX is better for the user. +There are many courses related to User Experience. This includes the U of T Course [The Design of Interactive Computational Media](https://artsci.calendar.utoronto.ca/course/csc318h1) which is highly recommended if interested in this topic. [The Design of Interactive Computational Media](https://artsci.calendar.utoronto.ca/course/csc318h1) expands on the work done before coding projects. For example, one of the projects is testing how users would interact with a prototype of a UI and modifying it so that the UX is better for the user. From 5201144e0ea64654b3773573be6b4ae3a653497e Mon Sep 17 00:00:00 2001 From: Amir Alleyne <80076400+amir-alleyne@users.noreply.github.com> Date: Wed, 8 Mar 2023 21:07:25 -0500 Subject: [PATCH 010/206] Provided information on Task Management Software and Jira - Provided a brief summary of the importance of task management software - Talked about how it is used - Gave an example about a very popular task management software product Jira --- Topics/Teamwork.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index e68acdc11..f1f9abf91 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -1 +1,7 @@ ## Resources for Teamwork + +# Importance of Task Management Software +Task management software is essential for organizations and individuals to improve their productivity, efficiency, and organization. With the increasing complexity of modern work environments, it is easy to get overwhelmed by multiple tasks and projects. Task management software provides a centralized platform to create, organize, and track tasks and projects. It allows individuals and teams to prioritize tasks, set deadlines, assign tasks to team members, and track progress in real-time. This software also helps in preventing the duplication of efforts and ensures that everyone is on the same page. Task management software also provides insights into the overall progress of projects, enabling teams to make informed decisions and adjust their strategies if necessary. In summary, task management software is crucial in helping individuals and teams manage their workload and achieve their goals effectively. + +# Examples of Common Task Management Software: +Jira is a software development tool that allows teams to plan, track, and manage their projects effectively. It is a popular tool used by agile teams to improve their collaboration, visibility, and productivity. With Jira, teams can create tasks, assign them to team members, and track their progress in real-time. Jira also provides features such as dashboards, agile boards, and customizable workflows that help teams stay organized and focused on their goals. In addition, Jira integrates with other software development tools such as GitHub, Bitbucket, and Confluence, making it a powerful tool for software development teams. From 0ab0fd518ce13c9b0e11318d7be9e9ca00db9822 Mon Sep 17 00:00:00 2001 From: Amir Alleyne <80076400+amir-alleyne@users.noreply.github.com> Date: Thu, 9 Mar 2023 09:30:16 -0500 Subject: [PATCH 011/206] Information and Resources on Task Management Software - Provided information about the general importance of task management software - Gave examples on how to use the software - Briefly introduced Jira and its potential use cases --- Topics/Teamwork.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index f1f9abf91..d1bea7ffd 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -5,3 +5,9 @@ Task management software is essential for organizations and individuals to impro # Examples of Common Task Management Software: Jira is a software development tool that allows teams to plan, track, and manage their projects effectively. It is a popular tool used by agile teams to improve their collaboration, visibility, and productivity. With Jira, teams can create tasks, assign them to team members, and track their progress in real-time. Jira also provides features such as dashboards, agile boards, and customizable workflows that help teams stay organized and focused on their goals. In addition, Jira integrates with other software development tools such as GitHub, Bitbucket, and Confluence, making it a powerful tool for software development teams. + +Resources for Jira: + +Beginner tutorial for Jira - https://www.youtube.com/watch?v=nHuhojfjeUY + +Must Know Jira features - https://www.youtube.com/watch?v=issdcnErAU8 From 7183cbc2c0c8491f9d0e41d5a1b2b1c6065b87c4 Mon Sep 17 00:00:00 2001 From: IbrahimBess <70774207+IbrahimBess@users.noreply.github.com> Date: Thu, 9 Mar 2023 16:54:58 -0500 Subject: [PATCH 012/206] Adding "why Nuxt?" --- Topics/Tech_Stacks.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 321d1263f..a0f7ac226 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -12,3 +12,10 @@ It's worth mentioning that due to the confusion between Nuxt2 and Nuxt3 document If you want to add the Tailwind CSS library to your Nuxt3 app, please follow the instructions in this link: https://tailwindcss.com/docs/guides/nuxtjs#3. Make sure to select Nuxt3 instead of Nuxt2. + +## Why Nuxt? + +Nuxt.js provides server-side rendering, automatic routing, code organization, and pre-configured plugins. It also has a built-In static site generation. +Nuxt 3 comes with several performance improvements, including faster server startup time and smaller bundle sizes. +I think it is a nice tool, especially the auto routing and how flexible you can reuse the components, but it still lacks comprehensive documentation. + From a6aefb38f739888069cd9324ace5438e24837b3f Mon Sep 17 00:00:00 2001 From: IbrahimBess <70774207+IbrahimBess@users.noreply.github.com> Date: Thu, 9 Mar 2023 16:56:38 -0500 Subject: [PATCH 013/206] adding Nuxt3 to Tech stacks. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 17d8a6ae1..940ce788e 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Following files are present in this directory. You may contribute to any of thes Potential Topics-- - Tech stacks + 1. Nuxt3. - Software Engineering 1. Methodologies & Frameworks 1. Agile @@ -60,4 +61,4 @@ Potential Topics-- - User Experience - Product Management - Other useful resources -- Teamwork \ No newline at end of file +- Teamwork From dea2c7ea3ae4783e15dd7e1183fe20a498d7f9b1 Mon Sep 17 00:00:00 2001 From: tshafiq Date: Thu, 16 Mar 2023 21:13:40 +0300 Subject: [PATCH 014/206] Initial commit of .md file and new file structure --- .../Django_Deployment_AWS.md | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 Topics/Development_Process/Django_Deployment_AWS.md diff --git a/Topics/Development_Process/Django_Deployment_AWS.md b/Topics/Development_Process/Django_Deployment_AWS.md new file mode 100644 index 000000000..0d1fc3c84 --- /dev/null +++ b/Topics/Development_Process/Django_Deployment_AWS.md @@ -0,0 +1,134 @@ +# Django Project Deployment: An Introduction to AWS, Vercel, and Railway + +## Table of Contents: +### [Introduction](#introduction-1) +### [A Guide to Choosing the Right Hosting Service](#a-guide-to-choosing-the-right-hosting-service-1) +#### [Where to Start](#where-to-start-1) +#### [Advantages and Disadvantages (AWS, Vercel, Railway)](#advantages-and-disadvantages-aws-vercel-railway-1) +#### [How to Decide on the “Right” Hosting Service](#how-to-decide-on-the-right-hosting-service-1) +### [Deploying a Django Project on AWS](#deploying-a-django-project-on-aws-1) +#### [EC2 vs. Elastic Beanstalk (EB)](#ec2-vs-elastic-beanstalk-eb-1) +#### [Deploying on AWS: The Easy Way (EB)]() +#### [Deploying on AWS: The Hard (But Better) Way (EC2)]() +### [Alternatives to AWS]() +#### [Railway]() +#### [Vercel]() + +## Introduction + +This article will specifically focus on the deployment of a new Django project. Primarily, this will serve as an initial introduction to some current popular hosting services (AWS, Vercel, and Railway), serving as more of a guide to understanding which platform is right for you and your team before. Once you feel confident on the platform that you wish to deploy on, we will then go into detail on how to successfully deploy your new Django project. After reading this article, you should hopefully have enough knowledge and resources to know which hosting service is best for you (and your team) and start deploying your Django project. + +Note: For the sake of consistency, no prior knowledge of DevOps or deployment will be assumed. + +## A Guide to Choosing the Right Hosting Service + +### Where to Start + +Deployment and DevOps can be a dreadful and daunting task for many. While starting from the beginning it is important to remember, that like any other skill, this will probably take many iterations of past failures before success. Given the vast array of popular hosting services, it is easy to get lost before you can even choose a hosting service. To ease this process, this article collates 3 free-to-use, prominent, and reliable hosting services based on functionality, ease-of-learning, and desirability to learn DevOps: Amazon Web Services (AWS), Vercel, and Railway. + +### Advantages and Disadvantages (AWS, Vercel, Railway) + +Each of the 3 hosting services focused on in this article have their own distinct advantages and disadvantages. To compare across these platforms, we will do so in a table format. Note that for the majority of these hosting platforms, you will need a GitHub Account, and a GitHub Repository with your Django Project on it. + +It is highly suggested you read through the following table carefully to learn which service you and your team may prefer before continuing: + + +| Criteria | AWS (EC2/EB) | Vercel | Railway | +| ---------| ------------ | ------ | --------- | +| Complexity (Deployment Difficulty) | | | | +| Price of Hosting (Price Charged for Hosting Time) | | | | +| Price of Storage (Price Charged for Hosting Storage) | | | Free until 100GB of total storage | +| Security | | | | +| Longevity | | | | +| Best Features | | | | +| Pain Points | | | | + +### How to Decide on the Right Hosting Service + +Now that you have enough knowledge to know the pros and cons behind each hosting service, it is now time to proceed with one method. This section of the article will help you decide which hosting service is right for you. + +The following is a list of suggested steps and conversations you should have with both your team and your partner before deciding on which hosting platform to proceed with: + +1) Discuss with your partner if they would be willing to pay for hosting, especially for security reasons (how much are they willing to pay? Is that enough for a domain to host on AWS over HTTPS? Or can they pay enough to host on Railway provided you are not limited by their storage limit?) +2) If you are using Django as a backend framework, discuss with the Frontend team on which web application protocol you will communicate over (HTTP or HTTPS?) +3) Discuss the benefits and downfalls of each service with your DevOps/Backend team to come to a consensus on which platform you want to proceed with (are you using SQLite or another database service such as MongoDB? Can you expect the code to grow beyond what Vercel has? Can you expect your SQLite database to go beyond Railway’s storage limits? Are you willing to put in the time and effort to learn Docker and AWS the right way?) + +## Deploying a Django Project on AWS + +### EC2 vs. Elastic Beanstalk (EB) + + +- AWS itself has two main methods that are the most favourable for beginners to deploy Django projects on. In this part of the article we will discuss the differences between the two to help you decide which one you want to proceed with (should you have decided on moving forward with AWS from the last section). + +- The first key difference to note is the potential for automating your workflow. EB is known to be much more user friendly and serves much more as a personal deployment option rather than a developer’s choice. The main reasoning behind this is due to its inbuilt nature that favours a local repository rather than a group (GitHub) repository with proper workflow capabilities. On the other hand, EC2 itself does much more natively support GitHub repositories, making it a better option (for the general case). + +- The second distinction is in their setup and deployment process. EC2 is much more hands on, and should you want your application to be accessible without your computer constantly having an AWS console open in a browser tab, it will require you to learn NGINX and Docker. Conversely, EB is easier to get started with, as it abstracts away much of the development process that would otherwise be required to set up an EC2 instance (e.g. configurations, load balancers). + +- While both EC2 and EB have their own characteristics, it is important to note that the previously mentioned limitations to AWS applies to both of these. + +### Deploying on AWS: The Hard Way (EC2) + +- To deploy on EC2, the following video is highly recommended. Note that the following assumptions are made throughout this video and it ensure you meet them before starting the tutorial: + + 1) You have a GitHub repository with your Django project on it + 2) You have a GitHub Token that authorises the sharing and deploying of that repository, [click here for more information on how to set this up](https://docs.github.com/en/enterprise-server@3.4/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) + 3) You have an AWS account, click here for more information on how to set this up + 4) Install `pip` and `virtualenv` before you begin, [click here for more information on how to set this up](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/) + +- Additionally, the following are tips that are recommended to encounter as little debugging as possible: + + 1) Make your root directory for the project one level higher than the project files, as seen below: + 2) When making anything relating to your EC2 instance, ensure you note down the region of the AWS server you are working on (seen in the top right corner of the screen) + 3) You can generate a `requirements.txt` file after activating your virtual environment by using the `pipreqs` package, click here to learn more about `pipreqs` + 4) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) + +[![EC2 Tutorial](https://img.youtube.come/vi/7O1H9kr1CsA/0.jpg)](https://www.youtube.com/watch?v=7O1H9kr1CsA) + +### Deploying on AWS: The Easy Way (EB) + +- To deploy on EB, the following video is highly recommended. Note that the following assumptions are made throughout this video and it ensure you meet them before starting the tutorial: + + 1) You have an AWS account, click here for more information on how to set this up + 2) Install `pip` and `virtualenv` before you begin, [click here for more information on how to set this up](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/) + +- Additionally, the following are tips that are recommended to encounter as little debugging as possible: + + 1) When making anything relating to your EC2 instance, ensure you note down the region of the AWS server you are working on (seen in the top right of the screen) + 2) After making and activating your virtual environment, ensure you install `gunicorn` by running `pip install gunicorn` within the terminal + 3) You may need to set a third line on your `./ebextenstions/django.config` to the following line: `WSGIPath: /wsgi.py` + 4) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) + +[![EB Tutorial](https://img.youtube.come/vi/51YwXvJ9LOE/0.jpg)](https://www.youtube.com/watch?v=51YwXvJ9LOE) + + +## Alternatives to AWS + +### Railway + +- To deploy on Railway, the following video is highly recommended. Note that the following assumptions are made throughout this video and it ensure you meet them before starting the tutorial: + + 1) You have a GitHub repository with your Django project on it + 2) You have a GitHub Token that authorises the sharing and deploying of that repository, [click here for more information on how to set this up](https://docs.github.com/en/enterprise-server@3.4/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) + 4) Install `pip` and `virtualenv` before you begin, [click here for more information on how to set this up](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/) + +- Additionally, the following are tips that are recommended to encounter as little debugging as possible: + + 1) Ensure you set your root directory to the Django project in the settings, as shown here: + 2) Ensure you carefully follow the static files and directory process carefully, this is very important and you should ensure your static files are loading (by checking for common HTML/CSS elements in default Django error/admin panel web pages). This is key and necessary for CORS/CSRF and are vital should you be communicating with a Frontend + 3) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) + +[![Railway Tutorial](https://img.youtube.come/vi/NUqtNglEcCU/0.jpg)](https://www.youtube.com/watch?v=NUqtNglEcCU) + +### Vercel + +- To deploy on Railway, the following video is highly recommended. Note that the following assumptions are made throughout this video and it ensure you meet them before starting the tutorial: + + 1) You have a GitHub repository with your Django project on it + 2) You have a GitHub Token that authorises the sharing and deploying of that repository, [click here for more information on how to set this up](https://docs.github.com/en/enterprise-server@3.4/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) + 4) Install `pip` and `virtualenv` before you begin, [click here for more information on how to set this up](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/) + + Additionally, the following are tips that are recommended to encounter as little debugging as possible: + + 1) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) + +[![Vercel Tutorial](https://img.youtube.come/vi/ZjVzHcXCeMU/0.jpg)](https://www.youtube.com/watch?v=ZjVzHcXCeMU) From bdb8db4acce7751fe220d8a998beab17aea6b497 Mon Sep 17 00:00:00 2001 From: tshafiq Date: Thu, 16 Mar 2023 21:25:09 +0300 Subject: [PATCH 015/206] Reformatted .md file and trying YouTube embeds --- .../Django_Deployment_AWS.md | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/Topics/Development_Process/Django_Deployment_AWS.md b/Topics/Development_Process/Django_Deployment_AWS.md index 0d1fc3c84..a1c453e16 100644 --- a/Topics/Development_Process/Django_Deployment_AWS.md +++ b/Topics/Development_Process/Django_Deployment_AWS.md @@ -8,11 +8,10 @@ #### [How to Decide on the “Right” Hosting Service](#how-to-decide-on-the-right-hosting-service-1) ### [Deploying a Django Project on AWS](#deploying-a-django-project-on-aws-1) #### [EC2 vs. Elastic Beanstalk (EB)](#ec2-vs-elastic-beanstalk-eb-1) -#### [Deploying on AWS: The Easy Way (EB)]() -#### [Deploying on AWS: The Hard (But Better) Way (EC2)]() -### [Alternatives to AWS]() -#### [Railway]() -#### [Vercel]() +#### [Deploying on AWS: The Hard (but Better) Way (EC2)](#deploying-on-aws-the-hard-but-better-way-ec2-1) +#### [Deploying on AWS: The Easy Way (EB)](#deploying-on-aws-the-easy-way-eb-1) +### [Deploying A Django Project on Railway](#deploying-on-vercel-1) +### [Deploying A Django Project on Vercel](#deploying-on-vercel-1) ## Introduction @@ -66,7 +65,7 @@ The following is a list of suggested steps and conversations you should have wit - While both EC2 and EB have their own characteristics, it is important to note that the previously mentioned limitations to AWS applies to both of these. -### Deploying on AWS: The Hard Way (EC2) +### Deploying on AWS: The Hard (but Better) Way (EC2) - To deploy on EC2, the following video is highly recommended. Note that the following assumptions are made throughout this video and it ensure you meet them before starting the tutorial: @@ -82,7 +81,7 @@ The following is a list of suggested steps and conversations you should have wit 3) You can generate a `requirements.txt` file after activating your virtual environment by using the `pipreqs` package, click here to learn more about `pipreqs` 4) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) -[![EC2 Tutorial](https://img.youtube.come/vi/7O1H9kr1CsA/0.jpg)](https://www.youtube.com/watch?v=7O1H9kr1CsA) + ### Deploying on AWS: The Easy Way (EB) @@ -98,12 +97,9 @@ The following is a list of suggested steps and conversations you should have wit 3) You may need to set a third line on your `./ebextenstions/django.config` to the following line: `WSGIPath: /wsgi.py` 4) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) -[![EB Tutorial](https://img.youtube.come/vi/51YwXvJ9LOE/0.jpg)](https://www.youtube.com/watch?v=51YwXvJ9LOE) + - -## Alternatives to AWS - -### Railway +## Deploying on Railway - To deploy on Railway, the following video is highly recommended. Note that the following assumptions are made throughout this video and it ensure you meet them before starting the tutorial: @@ -117,9 +113,9 @@ The following is a list of suggested steps and conversations you should have wit 2) Ensure you carefully follow the static files and directory process carefully, this is very important and you should ensure your static files are loading (by checking for common HTML/CSS elements in default Django error/admin panel web pages). This is key and necessary for CORS/CSRF and are vital should you be communicating with a Frontend 3) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) -[![Railway Tutorial](https://img.youtube.come/vi/NUqtNglEcCU/0.jpg)](https://www.youtube.com/watch?v=NUqtNglEcCU) + -### Vercel +## Deploying on Vercel - To deploy on Railway, the following video is highly recommended. Note that the following assumptions are made throughout this video and it ensure you meet them before starting the tutorial: @@ -131,4 +127,4 @@ The following is a list of suggested steps and conversations you should have wit 1) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) -[![Vercel Tutorial](https://img.youtube.come/vi/ZjVzHcXCeMU/0.jpg)](https://www.youtube.com/watch?v=ZjVzHcXCeMU) + From b1dcb59e402e52eccf439ddf4fb1c46aa1d68e7b Mon Sep 17 00:00:00 2001 From: tshafiq Date: Thu, 16 Mar 2023 21:32:21 +0300 Subject: [PATCH 016/206] Reformatted document and YouTube embeds, renamed .md document --- ...=> Django_Deployment_AWS_Railway_Vercel.md} | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) rename Topics/Development_Process/{Django_Deployment_AWS.md => Django_Deployment_AWS_Railway_Vercel.md} (91%) diff --git a/Topics/Development_Process/Django_Deployment_AWS.md b/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md similarity index 91% rename from Topics/Development_Process/Django_Deployment_AWS.md rename to Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md index a1c453e16..876ef804d 100644 --- a/Topics/Development_Process/Django_Deployment_AWS.md +++ b/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md @@ -1,4 +1,4 @@ -# Django Project Deployment: An Introduction to AWS, Vercel, and Railway +# Django Project Deployment: AWS, Vercel, and Railway ## Table of Contents: ### [Introduction](#introduction-1) @@ -10,8 +10,8 @@ #### [EC2 vs. Elastic Beanstalk (EB)](#ec2-vs-elastic-beanstalk-eb-1) #### [Deploying on AWS: The Hard (but Better) Way (EC2)](#deploying-on-aws-the-hard-but-better-way-ec2-1) #### [Deploying on AWS: The Easy Way (EB)](#deploying-on-aws-the-easy-way-eb-1) -### [Deploying A Django Project on Railway](#deploying-on-vercel-1) -### [Deploying A Django Project on Vercel](#deploying-on-vercel-1) +### [Deploying A Django Project on Railway](#deploying-a-django-project-on-railway-1) +### [Deploying A Django Project on Vercel](#deploying-a-django-project-on-vercel-1) ## Introduction @@ -81,7 +81,7 @@ The following is a list of suggested steps and conversations you should have wit 3) You can generate a `requirements.txt` file after activating your virtual environment by using the `pipreqs` package, click here to learn more about `pipreqs` 4) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) - +[![](https://markdown-videos.deta.dev/youtube/7O1H9kr1CsA)](https://youtu.be/7O1H9kr1CsA) ### Deploying on AWS: The Easy Way (EB) @@ -97,9 +97,9 @@ The following is a list of suggested steps and conversations you should have wit 3) You may need to set a third line on your `./ebextenstions/django.config` to the following line: `WSGIPath: /wsgi.py` 4) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) - +[![](https://markdown-videos.deta.dev/youtube/51YwXvJ9LOE)](https://youtu.be/51YwXvJ9LOE) -## Deploying on Railway +## Deploying a Django Project on Railway - To deploy on Railway, the following video is highly recommended. Note that the following assumptions are made throughout this video and it ensure you meet them before starting the tutorial: @@ -113,9 +113,9 @@ The following is a list of suggested steps and conversations you should have wit 2) Ensure you carefully follow the static files and directory process carefully, this is very important and you should ensure your static files are loading (by checking for common HTML/CSS elements in default Django error/admin panel web pages). This is key and necessary for CORS/CSRF and are vital should you be communicating with a Frontend 3) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) - +[![](https://markdown-videos.deta.dev/youtube/NUqtNglEcCU)](https://youtu.be/NUqtNglEcCU) -## Deploying on Vercel +## Deploying a Django Project on Vercel - To deploy on Railway, the following video is highly recommended. Note that the following assumptions are made throughout this video and it ensure you meet them before starting the tutorial: @@ -127,4 +127,4 @@ The following is a list of suggested steps and conversations you should have wit 1) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) - +[![](https://markdown-videos.deta.dev/youtube/ZjVzHcXCeMU)](https://youtu.be/ZjVzHcXCeMU) From 32e752c80fbdd1f89c240228df981ff8e309e59a Mon Sep 17 00:00:00 2001 From: tshafiq Date: Thu, 16 Mar 2023 21:34:52 +0300 Subject: [PATCH 017/206] Reformatted YouTube embeds --- .../Django_Deployment_AWS_Railway_Vercel.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md b/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md index 876ef804d..ac4306c41 100644 --- a/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md +++ b/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md @@ -81,7 +81,7 @@ The following is a list of suggested steps and conversations you should have wit 3) You can generate a `requirements.txt` file after activating your virtual environment by using the `pipreqs` package, click here to learn more about `pipreqs` 4) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) -[![](https://markdown-videos.deta.dev/youtube/7O1H9kr1CsA)](https://youtu.be/7O1H9kr1CsA) +                                      [![](https://markdown-videos.deta.dev/youtube/7O1H9kr1CsA)](https://youtu.be/7O1H9kr1CsA) ### Deploying on AWS: The Easy Way (EB) @@ -97,7 +97,7 @@ The following is a list of suggested steps and conversations you should have wit 3) You may need to set a third line on your `./ebextenstions/django.config` to the following line: `WSGIPath: /wsgi.py` 4) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) -[![](https://markdown-videos.deta.dev/youtube/51YwXvJ9LOE)](https://youtu.be/51YwXvJ9LOE) +                                      [![](https://markdown-videos.deta.dev/youtube/51YwXvJ9LOE)](https://youtu.be/51YwXvJ9LOE) ## Deploying a Django Project on Railway @@ -113,7 +113,7 @@ The following is a list of suggested steps and conversations you should have wit 2) Ensure you carefully follow the static files and directory process carefully, this is very important and you should ensure your static files are loading (by checking for common HTML/CSS elements in default Django error/admin panel web pages). This is key and necessary for CORS/CSRF and are vital should you be communicating with a Frontend 3) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) -[![](https://markdown-videos.deta.dev/youtube/NUqtNglEcCU)](https://youtu.be/NUqtNglEcCU) +                                      [![](https://markdown-videos.deta.dev/youtube/NUqtNglEcCU)](https://youtu.be/NUqtNglEcCU) ## Deploying a Django Project on Vercel @@ -127,4 +127,4 @@ The following is a list of suggested steps and conversations you should have wit 1) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) -[![](https://markdown-videos.deta.dev/youtube/ZjVzHcXCeMU)](https://youtu.be/ZjVzHcXCeMU) +                                      [![](https://markdown-videos.deta.dev/youtube/ZjVzHcXCeMU)](https://youtu.be/ZjVzHcXCeMU) From ba239c6845bf2da7199d122ca183566fd65183bd Mon Sep 17 00:00:00 2001 From: tshafiq Date: Thu, 16 Mar 2023 21:44:03 +0300 Subject: [PATCH 018/206] Final edits --- .../Django_Deployment_AWS_Railway_Vercel.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md b/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md index ac4306c41..d10e3b419 100644 --- a/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md +++ b/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md @@ -17,17 +17,17 @@ This article will specifically focus on the deployment of a new Django project. Primarily, this will serve as an initial introduction to some current popular hosting services (AWS, Vercel, and Railway), serving as more of a guide to understanding which platform is right for you and your team before. Once you feel confident on the platform that you wish to deploy on, we will then go into detail on how to successfully deploy your new Django project. After reading this article, you should hopefully have enough knowledge and resources to know which hosting service is best for you (and your team) and start deploying your Django project. -Note: For the sake of consistency, no prior knowledge of DevOps or deployment will be assumed. +*Note: For the sake of consistency, no prior knowledge of DevOps or deployment will be assumed.* ## A Guide to Choosing the Right Hosting Service ### Where to Start -Deployment and DevOps can be a dreadful and daunting task for many. While starting from the beginning it is important to remember, that like any other skill, this will probably take many iterations of past failures before success. Given the vast array of popular hosting services, it is easy to get lost before you can even choose a hosting service. To ease this process, this article collates 3 free-to-use, prominent, and reliable hosting services based on functionality, ease-of-learning, and desirability to learn DevOps: Amazon Web Services (AWS), Vercel, and Railway. +- Deployment and DevOps can be a dreadful and daunting task for many. While starting from the beginning it is important to remember, that like any other skill, this will probably take many iterations of past failures before success. Given the vast array of popular hosting services, it is easy to get lost before you can even choose a hosting service. To ease this process, this article collates 3 free-to-use, prominent, and reliable hosting services based on functionality, ease-of-learning, and desirability to learn DevOps: Amazon Web Services (AWS), Vercel, and Railway. ### Advantages and Disadvantages (AWS, Vercel, Railway) -Each of the 3 hosting services focused on in this article have their own distinct advantages and disadvantages. To compare across these platforms, we will do so in a table format. Note that for the majority of these hosting platforms, you will need a GitHub Account, and a GitHub Repository with your Django Project on it. +- Each of the 3 hosting services focused on in this article have their own distinct advantages and disadvantages. To compare across these platforms, we will do so in a table format. Note that for the majority of these hosting platforms, you will need a GitHub Account, and a GitHub Repository with your Django Project on it. It is highly suggested you read through the following table carefully to learn which service you and your team may prefer before continuing: @@ -44,13 +44,13 @@ It is highly suggested you read through the following table carefully to learn w ### How to Decide on the Right Hosting Service -Now that you have enough knowledge to know the pros and cons behind each hosting service, it is now time to proceed with one method. This section of the article will help you decide which hosting service is right for you. +- Now that you have enough knowledge to know the pros and cons behind each hosting service, it is now time to proceed with one method. This section of the article will help you decide which hosting service is right for you. -The following is a list of suggested steps and conversations you should have with both your team and your partner before deciding on which hosting platform to proceed with: +- The following is a list of suggested steps and conversations you should have with both your team and your partner before deciding on which hosting platform to proceed with: -1) Discuss with your partner if they would be willing to pay for hosting, especially for security reasons (how much are they willing to pay? Is that enough for a domain to host on AWS over HTTPS? Or can they pay enough to host on Railway provided you are not limited by their storage limit?) -2) If you are using Django as a backend framework, discuss with the Frontend team on which web application protocol you will communicate over (HTTP or HTTPS?) -3) Discuss the benefits and downfalls of each service with your DevOps/Backend team to come to a consensus on which platform you want to proceed with (are you using SQLite or another database service such as MongoDB? Can you expect the code to grow beyond what Vercel has? Can you expect your SQLite database to go beyond Railway’s storage limits? Are you willing to put in the time and effort to learn Docker and AWS the right way?) + 1) Discuss with your partner if they would be willing to pay for hosting, especially for security reasons (how much are they willing to pay? Is that enough for a domain to host on AWS over HTTPS? Or can they pay enough to host on Railway provided you are not limited by their storage limit?) + 2) If you are using Django as a backend framework, discuss with the Frontend team on which web application protocol you will communicate over (HTTP or HTTPS?) + 3) Discuss the benefits and downfalls of each service with your DevOps/Backend team to come to a consensus on which platform you want to proceed with (are you using SQLite or another database service such as MongoDB? Can you expect the code to grow beyond what Vercel has? Can you expect your SQLite database to go beyond Railway’s storage limits? Are you willing to put in the time and effort to learn Docker and AWS the right way?) ## Deploying a Django Project on AWS @@ -71,14 +71,14 @@ The following is a list of suggested steps and conversations you should have wit 1) You have a GitHub repository with your Django project on it 2) You have a GitHub Token that authorises the sharing and deploying of that repository, [click here for more information on how to set this up](https://docs.github.com/en/enterprise-server@3.4/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) - 3) You have an AWS account, click here for more information on how to set this up + 3) You have an AWS account, [click here for more information on how to set this up](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/) 4) Install `pip` and `virtualenv` before you begin, [click here for more information on how to set this up](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/) - Additionally, the following are tips that are recommended to encounter as little debugging as possible: 1) Make your root directory for the project one level higher than the project files, as seen below: 2) When making anything relating to your EC2 instance, ensure you note down the region of the AWS server you are working on (seen in the top right corner of the screen) - 3) You can generate a `requirements.txt` file after activating your virtual environment by using the `pipreqs` package, click here to learn more about `pipreqs` + 3) You can generate a `requirements.txt` file after activating your virtual environment by using the `pipreqs` package, [click here to learn more about `pipreqs`](https://pypi.org/project/pipreqs/) 4) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https)                                       [![](https://markdown-videos.deta.dev/youtube/7O1H9kr1CsA)](https://youtu.be/7O1H9kr1CsA) @@ -87,7 +87,7 @@ The following is a list of suggested steps and conversations you should have wit - To deploy on EB, the following video is highly recommended. Note that the following assumptions are made throughout this video and it ensure you meet them before starting the tutorial: - 1) You have an AWS account, click here for more information on how to set this up + 1) You have an AWS account, [click here for more information on how to set this up](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/) 2) Install `pip` and `virtualenv` before you begin, [click here for more information on how to set this up](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/) - Additionally, the following are tips that are recommended to encounter as little debugging as possible: @@ -123,7 +123,7 @@ The following is a list of suggested steps and conversations you should have wit 2) You have a GitHub Token that authorises the sharing and deploying of that repository, [click here for more information on how to set this up](https://docs.github.com/en/enterprise-server@3.4/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) 4) Install `pip` and `virtualenv` before you begin, [click here for more information on how to set this up](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/) - Additionally, the following are tips that are recommended to encounter as little debugging as possible: +- Additionally, the following are tips that are recommended to encounter as little debugging as possible: 1) If you are encountering CORS/CSRF errors, [click here for potential solutions](https://stackoverflow.com/questions/38841109/csrf-validation-does-not-work-on-django-using-https) From feeaafb279e33edd1c38a1a1c8a4c12195afa954 Mon Sep 17 00:00:00 2001 From: tshafiq Date: Thu, 16 Mar 2023 21:45:36 +0300 Subject: [PATCH 019/206] Last minute edits --- .../Development_Process/Django_Deployment_AWS_Railway_Vercel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md b/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md index d10e3b419..6f522ce4d 100644 --- a/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md +++ b/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md @@ -36,7 +36,7 @@ It is highly suggested you read through the following table carefully to learn w | ---------| ------------ | ------ | --------- | | Complexity (Deployment Difficulty) |
  • The most difficult to deploy on
|
  • Relatively easy to deploy
|
  • The easiest platform to deploy on
| | Price of Hosting (Price Charged for Hosting Time) |
  • Completely free-to-use and host on (for 1 project of your choice)
|
  • Completely free-to-use and host on (for 1 project of your choice)
|
  • Free-to-use for only ~3 weeks per month
| -| Price of Storage (Price Charged for Hosting Storage) |
  • Completely free
|
  • Only enough to store code behind Django
  • No storage for SQLite Database and media files
| Free until 100GB of total storage | +| Price of Storage (Price Charged for Hosting Storage) |
  • Completely free
|
  • Only enough to store code behind Django
  • No storage for SQLite Database and media files
|
  • Free until 100GB of total storage
| | Security |
  • Minimal security
  • SSL certificate to communicate over HTTPS requires a paid for domain
  • Process to obtain SSL certificate with domain can be daunting
|
  • As Vercel own their own domain, all hosted services communicate over HTTPS for free
|
  • As Vercel own their own domain, all hosted services communicate over HTTPS for free
| | Longevity |
  • Most stable in the long-term (storage and reliability wise)
|
  • Least stable in the long term for larger backend servers
  • Consider whether usage is purely API based, or also includes storage
|
  • Relatively reliable for long term projects
  • Consider growth of backend (and potential SQLite Database)
| | Best Features |
  • Customizability (multiple ways to deploy)
  • Most valued among employees to learn
  • Essentially unlimited storage and hosting for free (for 1 hosted service)
|
  • Automated deployment is made very easy (add GitHub Action to your Forked Repo)
  • Little to no set-up required
  • Easy and free communication over HTTPS
|
  • Automated deployment is made very easy (add GitHub Action to your Forked Repo)
  • Very little set-up required
  • Easy and free communication over HTTPS
| From 1620686db02ebb2bb8a3f42a772913c9e47e53d3 Mon Sep 17 00:00:00 2001 From: tshafiq Date: Thu, 16 Mar 2023 21:54:52 +0300 Subject: [PATCH 020/206] Added link to added file to Development_Process.md --- Topics/Development_Process.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index a3c914182..4fb6f4f42 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -1 +1,3 @@ ## Resources for Development Process + +### [Django Project Deployment: AWS, Vercel, and Railway](./Development_Process/Django_Deployment_AWS_Railway_Vercel.md) \ No newline at end of file From d05192a1d8a963686b81dc8991f1c019dc000417 Mon Sep 17 00:00:00 2001 From: tshafiq Date: Thu, 16 Mar 2023 21:56:57 +0300 Subject: [PATCH 021/206] Updated README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 17d8a6ae1..0de54dc13 100644 --- a/README.md +++ b/README.md @@ -39,9 +39,10 @@ Potential Topics-- 4. Deployment 1. Heroku 2. AWS + 1. Django Project Deployment: AWS, Vercel and Railway 3. Firebase 4. Digital Ocean - 5. 6. Software development best practices: + 5. Software development best practices: 1. Designer Patterns 2. Clean Coding 1. Choose a coding style and stick to it From 2b393d07ab63f939db525f8d24a69a1e0ed641f8 Mon Sep 17 00:00:00 2001 From: Amir Alleyne <80076400+amir-alleyne@users.noreply.github.com> Date: Thu, 16 Mar 2023 19:19:19 -0400 Subject: [PATCH 022/206] Added description about SOLID Principles --- Topics/Development_Process.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index a3c914182..aff1ba072 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -1 +1,20 @@ ## Resources for Development Process +## SOLID PRINCIPLES: + +SOLID is a mnemonic acronym that represents a set of five very important software development principles which lead to code that is easier to read, maintain, and extend, leading to higher-quality software that is easier to evolve over time. + +The SOLID principles are: + + - Single Responsibility Principle (SRP): A class should only have one cause to change, according to the Single Responsibility Principle (SRP). According to this theory, a class ought to have just one duty, which implies that there ought to be just one motivation for change. This makes the class more understandable, maintainable, and reuseable as well as more flexible. + + - Open/Closed Principle (OCP): Software entities (classes, modules, functions, etc.) should be available for extension but closed for modification, according to the available/Closed Principle (OCP). According to this principle, a system should be able to introduce new functionality without requiring changes to the existing code. Interfaces, polymorphism, and generalization are used to accomplish this. + + - Liskov Substitution Principle (LSP): Subtypes must be able to be used in place of their parent types. According to this concept, it should be possible to swap out objects from a superclass for objects from a subclass without having any negative effects on the program's correctness. This necessitates abiding by the superclass's compact. + + - Interface Segregation Principle (ISP): Clients should not be forced to depend on interfaces they do not use. This principle states that a client should not be forced to implement an interface if it does not use all of the methods defined by the interface. This helps to avoid the creation of fat interfaces, which are interfaces that contain more methods than the client needs. + + - Dependency Inversion Principle (DIP): High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions. This principle suggests that classes should depend on abstractions rather than concrete implementations, which makes the system more flexible and easier to modify. + + + ## Resource that gives examples of the uses cases of SOLID principles + LINK : https://www.youtube.com/watch?v=_jDNAf3CzeY From f6e991a0189682236dc1f3b6422ed5fa29fe3d9f Mon Sep 17 00:00:00 2001 From: Amir Alleyne <80076400+amir-alleyne@users.noreply.github.com> Date: Thu, 16 Mar 2023 22:29:25 -0400 Subject: [PATCH 023/206] Update Teamwork.md --- Topics/Teamwork.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index d1bea7ffd..7d0b2c556 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -11,3 +11,5 @@ Resources for Jira: Beginner tutorial for Jira - https://www.youtube.com/watch?v=nHuhojfjeUY Must Know Jira features - https://www.youtube.com/watch?v=issdcnErAU8 + +Written Article On Jira Workflows - https://support.atlassian.com/jira-work-management/docs/how-to-create-workflows/ From bbce6984aefe6326dedee70ed68962b02ed13518 Mon Sep 17 00:00:00 2001 From: Amir Alleyne <80076400+amir-alleyne@users.noreply.github.com> Date: Thu, 16 Mar 2023 22:30:54 -0400 Subject: [PATCH 024/206] Removed info from teamwork.md --- Topics/Teamwork.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index 7d0b2c556..e68acdc11 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -1,15 +1 @@ ## Resources for Teamwork - -# Importance of Task Management Software -Task management software is essential for organizations and individuals to improve their productivity, efficiency, and organization. With the increasing complexity of modern work environments, it is easy to get overwhelmed by multiple tasks and projects. Task management software provides a centralized platform to create, organize, and track tasks and projects. It allows individuals and teams to prioritize tasks, set deadlines, assign tasks to team members, and track progress in real-time. This software also helps in preventing the duplication of efforts and ensures that everyone is on the same page. Task management software also provides insights into the overall progress of projects, enabling teams to make informed decisions and adjust their strategies if necessary. In summary, task management software is crucial in helping individuals and teams manage their workload and achieve their goals effectively. - -# Examples of Common Task Management Software: -Jira is a software development tool that allows teams to plan, track, and manage their projects effectively. It is a popular tool used by agile teams to improve their collaboration, visibility, and productivity. With Jira, teams can create tasks, assign them to team members, and track their progress in real-time. Jira also provides features such as dashboards, agile boards, and customizable workflows that help teams stay organized and focused on their goals. In addition, Jira integrates with other software development tools such as GitHub, Bitbucket, and Confluence, making it a powerful tool for software development teams. - -Resources for Jira: - -Beginner tutorial for Jira - https://www.youtube.com/watch?v=nHuhojfjeUY - -Must Know Jira features - https://www.youtube.com/watch?v=issdcnErAU8 - -Written Article On Jira Workflows - https://support.atlassian.com/jira-work-management/docs/how-to-create-workflows/ From e5971711b13ab449a5205d3e4b08960324cda09e Mon Sep 17 00:00:00 2001 From: Amir Alleyne <80076400+amir-alleyne@users.noreply.github.com> Date: Thu, 16 Mar 2023 22:31:43 -0400 Subject: [PATCH 025/206] Redirected task management information from Teamwork.md to here --- Topics/Task_Management_Software.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Topics/Task_Management_Software.md b/Topics/Task_Management_Software.md index 87ec66cba..cb63cc749 100644 --- a/Topics/Task_Management_Software.md +++ b/Topics/Task_Management_Software.md @@ -1 +1,15 @@ ## Resources for Task Management Software + +# Importance of Task Management Software +Task management software is essential for organizations and individuals to improve their productivity, efficiency, and organization. With the increasing complexity of modern work environments, it is easy to get overwhelmed by multiple tasks and projects. Task management software provides a centralized platform to create, organize, and track tasks and projects. It allows individuals and teams to prioritize tasks, set deadlines, assign tasks to team members, and track progress in real-time. This software also helps in preventing the duplication of efforts and ensures that everyone is on the same page. Task management software also provides insights into the overall progress of projects, enabling teams to make informed decisions and adjust their strategies if necessary. In summary, task management software is crucial in helping individuals and teams manage their workload and achieve their goals effectively. + +# Examples of Common Task Management Software: +Jira is a software development tool that allows teams to plan, track, and manage their projects effectively. It is a popular tool used by agile teams to improve their collaboration, visibility, and productivity. With Jira, teams can create tasks, assign them to team members, and track their progress in real-time. Jira also provides features such as dashboards, agile boards, and customizable workflows that help teams stay organized and focused on their goals. In addition, Jira integrates with other software development tools such as GitHub, Bitbucket, and Confluence, making it a powerful tool for software development teams. + +Resources for Jira: + +Beginner tutorial for Jira - https://www.youtube.com/watch?v=nHuhojfjeUY + +Must Know Jira features - https://www.youtube.com/watch?v=issdcnErAU8 + +Written Article On Jira Workflows - https://support.atlassian.com/jira-work-management/docs/how-to-create-workflows/ From daaa88f1af7dfc872b44d8bf88d02ec56eafe8b9 Mon Sep 17 00:00:00 2001 From: Tajwaar <56268814+tsh4fiq@users.noreply.github.com> Date: Fri, 17 Mar 2023 10:09:13 -0400 Subject: [PATCH 026/206] Update Django_Deployment_AWS_Railway_Vercel.md Fixed typo within the Security row under the Advantages vs Disadvantages table --- .../Development_Process/Django_Deployment_AWS_Railway_Vercel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md b/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md index 6f522ce4d..dc44d57fc 100644 --- a/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md +++ b/Topics/Development_Process/Django_Deployment_AWS_Railway_Vercel.md @@ -37,7 +37,7 @@ It is highly suggested you read through the following table carefully to learn w | Complexity (Deployment Difficulty) |
  • The most difficult to deploy on
|
  • Relatively easy to deploy
|
  • The easiest platform to deploy on
| | Price of Hosting (Price Charged for Hosting Time) |
  • Completely free-to-use and host on (for 1 project of your choice)
|
  • Completely free-to-use and host on (for 1 project of your choice)
|
  • Free-to-use for only ~3 weeks per month
| | Price of Storage (Price Charged for Hosting Storage) |
  • Completely free
|
  • Only enough to store code behind Django
  • No storage for SQLite Database and media files
|
  • Free until 100GB of total storage
| -| Security |
  • Minimal security
  • SSL certificate to communicate over HTTPS requires a paid for domain
  • Process to obtain SSL certificate with domain can be daunting
|
  • As Vercel own their own domain, all hosted services communicate over HTTPS for free
|
  • As Vercel own their own domain, all hosted services communicate over HTTPS for free
| +| Security |
  • Minimal security
  • SSL certificate to communicate over HTTPS requires a paid for domain
  • Process to obtain SSL certificate with domain can be daunting
|
  • As Vercel own their own domain, all hosted services communicate over HTTPS for free
|
  • As Railway own their own domain, all hosted services communicate over HTTPS for free
| | Longevity |
  • Most stable in the long-term (storage and reliability wise)
|
  • Least stable in the long term for larger backend servers
  • Consider whether usage is purely API based, or also includes storage
|
  • Relatively reliable for long term projects
  • Consider growth of backend (and potential SQLite Database)
| | Best Features |
  • Customizability (multiple ways to deploy)
  • Most valued among employees to learn
  • Essentially unlimited storage and hosting for free (for 1 hosted service)
|
  • Automated deployment is made very easy (add GitHub Action to your Forked Repo)
  • Little to no set-up required
  • Easy and free communication over HTTPS
|
  • Automated deployment is made very easy (add GitHub Action to your Forked Repo)
  • Very little set-up required
  • Easy and free communication over HTTPS
| | Pain Points |
  • Set-up can be long and complex
  • May require learning other tech stacks (e.g. NGINX, Docker)
  • Processes to setup automated deployment and acquiring an SSL certificate (for HTTPS communication) are long and complex
|
  • No free storage for SQLite Database and potentially even code
  • Must use external database (e.g. MongoDB) in tandem
|
  • Month-to-month expense in hosting time
  • Free storage until 100GB requires entering Credit Card information
  • Sans payment details, hosting service offers 1GB of storage
| From 2bf8413d8674e007cf375d1ecf4a63da3d59602a Mon Sep 17 00:00:00 2001 From: JustinAlianto <63857586+JustinAlianto@users.noreply.github.com> Date: Sat, 18 Mar 2023 02:12:41 -0400 Subject: [PATCH 027/206] Creating a new folder for Git-related discussions The file Git_Workflows.md explains what Git Workflows are and a brief summary of the variations of Git Workflows --- Topics/Software_Tools/Git/Git_Workflows.md | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 Topics/Software_Tools/Git/Git_Workflows.md diff --git a/Topics/Software_Tools/Git/Git_Workflows.md b/Topics/Software_Tools/Git/Git_Workflows.md new file mode 100644 index 000000000..94ec02cb8 --- /dev/null +++ b/Topics/Software_Tools/Git/Git_Workflows.md @@ -0,0 +1,63 @@ +# Git Workflows + +## Resources for Git Workflows +* [5 Different Git Workflows](https://medium.com/javarevisited/5-different-git-workflows-50f75d8783a7) +* [5 Git Workflows to Improve Development](https://rovitpm.com/5-git-workflows-to-improve-development/) +* [Comparing Workflows](https://www.atlassian.com/git/tutorials/comparing-workflows) + +## What are Git Workflows? +Git workflows are different strategies that project development teams can utilize and emulate to collaborate on a project while leveraging [Git as their version control system](https://www.knowledgehut.com/tutorials/git-tutorial/introduction-to-git). It is extremely critical for any team to be able to build something together without disrupting the team’s codebase. + +A successful Git workflow integrates the consideration of several factors such as the team culture, the project scalability, the team’s [release schedules](https://asana.com/resources/release-management), the team size, the easiness to fix mistakes and [merge conflicts](https://www.simplilearn.com/tutorials/git-tutorial/merge-conflicts-in-git), etc. + +The following are the most common workflows that have been used. + +## Variations of Git Workflows: + +### 1. Centralized (Basic) Workflow +As the name suggests, there is one repository with only one central branch, or the “master” branch. Hence, this workflow blends the staging and production environment into just 1 branch. Each developer clones this central repository to their local machine and makes changes locally. When they are ready to push their changes, they commit them to their local branch and then push them to the “master” branch directly. Other developers can then pull these changes from “master” to their own local machines. + +[Example of a Centralized Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows#centralized-workflow) + +**Pros**: Simple, straightforward + +**Cons**: High likelihood of merge conflicts when multiple programmers are working on the same files simultaneously, difficult to scale up, difficult to add complexity, difficult to maintain code cleanliness + +**When to Use**: Small teams, simple projects with minimal collaboration required. + +### 2. Feature Branch Workflow +With this workflow, developers create separate branches from the “master” branch for separate new features. This “master” branch still serves as the staging and production environment. As developers work on the features, they can make changes and commit to these separate feature branches individually. Once a feature is complete, the developers can create a pull request to merge with the “master” branch again. These pull requests will be reviewed by other developers who can provide feedback and make suggestions before the changes are approved and merged. + +[Example of a Feature Branch Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow) + +**Pros**: Easier collaboration, reduces risk or merge conflicts, still relatively simple, “master” branch should not contain broken code + +**Cons**: Requires discipline to manage and review feature branches correctly, not recommended if various versions of production or release plans are demanded, production code (the code in the “master” branch) can turn unstable + +**When to Use**: Ideal for multiple developers to work on numerous features without disturbing the main codebase. + +### 3. Gitflow Workflow (Most Common) +This workflow is the combination of the feature branch workflow with an additional “develop” branch as well as smaller release branches and hot-fix branches. With the “develop” branch, that is created from the “master” branch, it represents the staging environment, while the “master” branch serves as the stable production environment. + +Here, developers will create specific branches from the “develop” branch. These specific branches include the feature branches that we discussed previously. Once the “develop” branch has acquired enough features for a release, release branches are forked off the “develop” branch to finalize documentation, bug fixes, and other tasks related to this release only. No new features are made in these release branches. Once ready, these release branches will be merged into both the “master” branch and the “develop” branch with version numbers tagged. + +There also exist hot-fix branches, which are the only branches forked off the “master” branch. These branches are utilized to quickly patch production releases without disrupting other branches’ workflow. Once done, these branches are also merged into both the “master” branch and the “develop” branch with updated version numbers tagged too. + +[Example of a Gitflow Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) + +**Pros**: Reduces risk of introducing bugs to the stable main codebase, allows for release plans as well as multiple versions in production, flexibility in managing releases (teams can polish current release and work on new features for the next release simultaneously) and hotfixes, structured + +**Cons**: More complex, requires discipline to follow the rules and structure of the workflow, releases cannot be done quickly, multiple iterations of checking and testing can slow the building process down + +**When to Use**: Ideal for larger teams or more complex projects where a structured approach to development is needed. + +### 4. Forking Workflow +Used usually for public open-source projects, this workflow doesn’t have a central server-side repository. Developers will have to fork off the original and official server-side repository, giving themselves their own server-side repository. They will then clone the repository into their local machines to work on the projects. Features and changes are then committed to their own server-side repository. Developers can then make pull requests to the official repository for the manager of the official repository to review, suggest, and approve. + +[Example of a Forking Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/forking-workflow) + +**Pros**: Easy for multiple developers to contribute to the same project, reduces the risk of introducing bugs into the official repository + +**Cons**: High fragmentation since there are no collaboration between developers, possible duplicate efforts, likelihood of excessive contributions for the original owner(s) of the official repository to maintain and keep track + +**When to Use**: Ideal for open source projects where there are many contributors who may not be part of the same organization or team, and where there is a need for strict access controls or a clear separation between the main repository and individual developers' repositories. From d370332da280b93603d0720229267a5a8243841f Mon Sep 17 00:00:00 2001 From: Syed Ahmed <76264982+SyedTawsifAhmed@users.noreply.github.com> Date: Sat, 18 Mar 2023 15:55:12 -0400 Subject: [PATCH 028/206] Create Tech Stacks --- Topics/Tech Stacks | 1 + 1 file changed, 1 insertion(+) create mode 100644 Topics/Tech Stacks diff --git a/Topics/Tech Stacks b/Topics/Tech Stacks new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Topics/Tech Stacks @@ -0,0 +1 @@ + From c22877d7e40bfaf3be097b83506900dd9db49dd0 Mon Sep 17 00:00:00 2001 From: Syed Ahmed <76264982+SyedTawsifAhmed@users.noreply.github.com> Date: Sat, 18 Mar 2023 15:55:25 -0400 Subject: [PATCH 029/206] Delete Tech Stacks --- Topics/Tech Stacks | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Topics/Tech Stacks diff --git a/Topics/Tech Stacks b/Topics/Tech Stacks deleted file mode 100644 index 8b1378917..000000000 --- a/Topics/Tech Stacks +++ /dev/null @@ -1 +0,0 @@ - From 05e1b2671dcf2b3dac38f0d1a1714cceda957b9b Mon Sep 17 00:00:00 2001 From: Syed Ahmed <76264982+SyedTawsifAhmed@users.noreply.github.com> Date: Sat, 18 Mar 2023 15:58:34 -0400 Subject: [PATCH 030/206] Create Learning_MySQL.md --- Topics/Tech Stacks/Learning_MySQL.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Topics/Tech Stacks/Learning_MySQL.md diff --git a/Topics/Tech Stacks/Learning_MySQL.md b/Topics/Tech Stacks/Learning_MySQL.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Topics/Tech Stacks/Learning_MySQL.md @@ -0,0 +1 @@ + From 17ae1ae1efd40e6d6c069be27226e80378821ae1 Mon Sep 17 00:00:00 2001 From: Syed Ahmed <76264982+SyedTawsifAhmed@users.noreply.github.com> Date: Sat, 18 Mar 2023 16:02:26 -0400 Subject: [PATCH 031/206] Update Tech_Stacks.md Updated Tech_Stacks.md to include a hyperlink to Learning_MySQL.md --- Topics/Tech_Stacks.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 9e3921642..acf455d04 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1 +1,3 @@ ## Tech Stacks + +### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) From cb4cbd4fcd52bb9643c8497bc6ad380acdb1dc14 Mon Sep 17 00:00:00 2001 From: Syed Ahmed <76264982+SyedTawsifAhmed@users.noreply.github.com> Date: Sat, 18 Mar 2023 16:03:10 -0400 Subject: [PATCH 032/206] Delete Topics/Tech Stacks directory --- Topics/Tech Stacks/Learning_MySQL.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Topics/Tech Stacks/Learning_MySQL.md diff --git a/Topics/Tech Stacks/Learning_MySQL.md b/Topics/Tech Stacks/Learning_MySQL.md deleted file mode 100644 index 8b1378917..000000000 --- a/Topics/Tech Stacks/Learning_MySQL.md +++ /dev/null @@ -1 +0,0 @@ - From f1f6ddd9d172e4ac1723f558278a41d52c50b923 Mon Sep 17 00:00:00 2001 From: Syed Ahmed <76264982+SyedTawsifAhmed@users.noreply.github.com> Date: Sat, 18 Mar 2023 16:03:29 -0400 Subject: [PATCH 033/206] Create Learning_MySQL.md --- Topics/Tech_Stacks/Learning_MySQL.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Topics/Tech_Stacks/Learning_MySQL.md diff --git a/Topics/Tech_Stacks/Learning_MySQL.md b/Topics/Tech_Stacks/Learning_MySQL.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/Topics/Tech_Stacks/Learning_MySQL.md @@ -0,0 +1 @@ + From f5a5934b68655335f5f2f54480b57db528862e49 Mon Sep 17 00:00:00 2001 From: michaelga0 <73146524+michaelga0@users.noreply.github.com> Date: Sat, 18 Mar 2023 16:30:52 -0400 Subject: [PATCH 034/206] Added conflict resolution section in Teamwork.md --- Topics/Teamwork.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index e68acdc11..7c0c46214 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -1 +1,14 @@ ## Resources for Teamwork + + +## Conflict Resolution + +Working effectively in a team setting is a crucial yet often overlooked aspect of software engineering. Conflicts can arise in any team, and how they are resolved can have a significant impact on the team's success. Effective conflict resolution fosters a collaborative and supportive team environment where everyone's contributions are valued, and disagreements are handled constructively. + +[Avoiding Conflicts](https://dev.to/codesphere/resolving-conflicts-within-your-dev-team-1hfh) + +An important first step towards conflict resolution is learning how to avoid them in the first place. This article details possible steps to avoid many common conflicts that arise in a team setting, including managing expectations by setting clear goals and proper training, and maintaining healthy lines of communication between team members. + +[Resolving Conflicts](https://ca.indeed.com/career-advice/career-development/conflict-resolution-at-work) + +It is not always possible to avoid conflict. In work environment when people are exchanging ideas and working towards goals, a difference of opinion is inevitable. However, if handled properly, these conflicts can be resolved while keeping the negative impacts at a minimum, and even help create a better solution for the project at hand. This article covers ways that the parties in a conflict can help each other understand their own points of view, while keeping discourse respectful. It emphasizes ways that team members can help each other work towards a common goal. From 30ef6773d7c08bb5b1d93c7910aa7f2111c3f477 Mon Sep 17 00:00:00 2001 From: Youngjun Cho Date: Sat, 18 Mar 2023 17:40:23 -0400 Subject: [PATCH 035/206] Add Requirement.txt section in Development Process --- Topics/Development_Process.md | 3 ++ .../Build_Requirements/Requirement_txt.md | 52 +++++++++++++++++++ Topics/Software_Engineering.md | 1 + 3 files changed, 56 insertions(+) create mode 100644 Topics/Development_Process/Build_Requirements/Requirement_txt.md diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index 58342d4fc..888aab1d6 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -2,6 +2,9 @@ ### [Django Project Deployment: AWS, Vercel, and Railway](./Development_Process/Django_Deployment_AWS_Railway_Vercel.md) +## Build requirements +### [Requirement.txt](./Development_Process/Build_Requirements/Requirement_txt.md) + ## SOLID PRINCIPLES: SOLID is a mnemonic acronym that represents a set of five very important software development principles which lead to code that is easier to read, maintain, and extend, leading to higher-quality software that is easier to evolve over time. diff --git a/Topics/Development_Process/Build_Requirements/Requirement_txt.md b/Topics/Development_Process/Build_Requirements/Requirement_txt.md new file mode 100644 index 000000000..f82a61133 --- /dev/null +++ b/Topics/Development_Process/Build_Requirements/Requirement_txt.md @@ -0,0 +1,52 @@ +# **Requirements.txt** + +## **Introduction** + +--- + +`requirements.txt` is a crucial file in Python projects for managing dependencies. It lists all the packages required to run your project, including their specific versions. This file ensures consistency and simplifies the setup process for other developers working on the project. + + +## **How to use?** + +--- + +### **Creating a requirements.txt file** + +To create and update a `requirements.txt` file, use the following command in your terminal: + +```bash +pip freeze > requirements.txt +``` + +This command generates a list of all installed packages and their versions in your virtual environment and saves them to a `requirements.txt` file. + + +### **Installing dependencies from a requirements.txt file** + +To install the dependencies listed in a `requirements.txt` file, use the following command in your terminal: + +```bash +pip install -r requirements.txt +``` + +This command reads the packages and their versions from the **`requirements.txt`** file and installs them in your virtual environment. + +**Resources:** +- [How to Create and Maintain a requirements.txt](https://learnpython.com/blog/python-requirements-file/) + + + +## **Best Practices** + +--- + +1. **Use a virtual environment:** Always work within a virtual environment to isolate your project's dependencies from your system's global Python environment. + + [Guide to Python Virtual Environments](https://www.dataquest.io/blog/a-complete-guide-to-python-virtual-environments/) + +1. **Keep the file up-to-date:** Regularly update the `requirements.txt` file as you add, remove, or update dependencies. +2. **List only necessary dependencies:** Only list the Python modules and packages your project needs. Do not include unnecessary modules or packages, as this makes the txt file bloated and difficult to read. It is also a waste of resources. + +**More Best Practices:** +- [10 Python Requirements.txt Best Practices](https://climbtheladder.com/10-python-requirements-txt-best-practices/) diff --git a/Topics/Software_Engineering.md b/Topics/Software_Engineering.md index e9737f790..e2fa7b951 100644 --- a/Topics/Software_Engineering.md +++ b/Topics/Software_Engineering.md @@ -9,3 +9,4 @@ Potential topics-- 3. XP 2. Waterfall + From cc6f32562a11dee867e3f851d17163d06d2106f6 Mon Sep 17 00:00:00 2001 From: Tomas-Ha <90397885+Tomas-Ha@users.noreply.github.com> Date: Sat, 18 Mar 2023 17:43:07 -0400 Subject: [PATCH 036/206] Created file that teaches automated deployment This file teaches what automated deployment is, how it is used in terms of CI/CD, and a general how to set it up with GitHub actions. It also includes multiple resources on what automated deployment is, what CI/CD is, and how to set up deployment on GitHub --- Topics/Automated_Deployment.md | 66 ++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 Topics/Automated_Deployment.md diff --git a/Topics/Automated_Deployment.md b/Topics/Automated_Deployment.md new file mode 100644 index 000000000..f881030a4 --- /dev/null +++ b/Topics/Automated_Deployment.md @@ -0,0 +1,66 @@ +# Resources for GitHub Actions Automated Deployment + + + + ### What is Automated Deployment? Why is it Important? + +       According to the Google Cloud Automation Center, Automated Deployment is "what enables you to deploy your software to testing and production environments with the push of a button." Automated deployment is a set of scripts that perform the following actions: prepare the target environment (installing/configuring any software needed), deploying the build packages created by continuous integration (this will be discussed more in the next part), run deployment tasks such as migrating databases, perform tests on the deployment to ensure it is functioning and accessable. + +      This prevents programming teams from having to manually perform these tasks for every deployment, which save teams hours over the course of a project. It reduces the risk of production deployments, since it ensures that all environments are the same. It also allows developers to deploy to production environments more frequently, which will lead to fast user feedback. In short, automated deployment is important, since it saves software teams time, prevents any errors in deployments, and allows teams to more easily ensure new features are working properly. + + + + ### How is Automated Deployment Used + +      Automated Deplyment requires CI/CD to be used. CI stands for continuous integration, and CD stands for continuous delivery _or_ continuous deployment (note, there is a difference between these two). Continuous Integration ensures that the new code is ready to be deployed, and continuous delivery or deployment uses automated deployment to deploy to either staging/testing environments or a production environment, respectively. + +      Continuous integration typically consists of developers continously merging their code into the main branch. Upon merging, code executes to create a build of the new code and run automated tests against this build. This is a followed by either continuous delivery or continuous deployment. Continuous delivery consists of automated deployment of the build packages from continuous ingration to a testing or staging environment. Deployment to production can be triggered whenever the team needs. Meanwhile, continuous deployment automatically deploys new code through testing and into production and requires zero human input. + + +       There are many benefits to each step in this process. Continuous integration will lead to fewer bugs in production and easies release building as all issues with integration have already been found and solved. Furthermore, testing costs less since it is run on the CI server and less time is spent running the tests manually. However, CI requires writing automated testing for each new feature (Test Driven Development), as well as having a server where the automated tests are run. Furthermore, it requires developers to merge their work as often as possible, which may cause issues if some features or fixes take more time. + +       The benefits of continuous delivery are that your team releases more often and deploying software is less complex since it is automated. Most importantly, it releases pressure on small changes, since they can always be quickly undone or fixed with future releases. However, it requires automated deployment, which takes time to set up, and the team needs to "embrace" flaging features so that incomplete features are not released. + +      The benefits of continuous deployment are faster development, less risky releases (since there are fewer changes per release), and constant improvements for customers. Issues with releases can be fixed more quickly, since development does not need to pause for releases. Releases are also not scheduled, so there is less pressure to finish everything by a certain deadline. However, just like delivery, feature flags **must** be a part of the coding culture, and application documentation must stay up to date with deployments. This is in order to ensure clarity on the included features in each release. + +      However, most importantly, both continuous delivery and continuous deployment can only occur if the new changes pass all the tests from continuous integration. This means that in order to successfully implement continuous delivery or deployment, you need to have an extensive set of test for your code that can verify that the changes are suitable for these environments. Otherwise, continuous delivery or deployment can lead to issues within staging and testing environments, or, worse, issues for customers. + +      To summarize, automated deployment is used for continous deliver or deployment. In order for this to work, continuous integration needs to be used in order to extensively test the code and ensure it is acceptable to deploy to whichever environment (depending on if delivery or deployment is used). Although it requires a strong CI, it leads to faster development, less risky releases, and more customer feedback. + + + + ### Examples of Common Automated Deployment Software + +       Atlassian recommends using Bitbucket Pipelines, which is their "CI/CD tool that's integrated into Bitbucket Cloud," their version of GitHub. BitBucket provides extended CI/CD features that allow you to integrate with Jira, a task management software by Atlassian. However, you can implement CI/CD fairly easily with GitHub Actions. + + + ### How to Set Up Automated Deployment with GitHub Actions + +       In order to set up automated deployment, you need to know the following: when do you want deployments to occur (on pull request, on push, on workflow dispatch, etc), where do you want the deployment to be (staging or production, continuous delivery vs continuous deployment), and what are the requirements for your environment (what packages do you need to set install or software do you need to set up to deploy). + +       Once you know these things, you can start setting up your GitHub Action using a yaml file. Start with the `on:` command and put all the situations where you want deployment to occur (and on what branches). Then, under `jobs:`, create a `deployment:` section and set the environment, what os it runs on, and the steps necessary to deploy. + +      For example, for Heroku, you need to specify the Heroku key (this is the login key) and the application you are deploying to. Meanwhile, for Expo, you may need to setup node, EAS (Expo Application Services), sign into EAS, install yarn dependencies, and then use EAS to deploy. An alternate method you could use is writing a shell script that performs these actions and simply having GitHub run this shell script with a GitHub Action. + +To learn more specifics, please see the resources below. + + + ## Resources: + + To learn more about DevOps in general, please see the Google Cloud Automation Center DevOps article referenced in the above writing: https://cloud.google.com/architecture/devops + - To learn more about deployment automation specifically: https://cloud.google.com/architecture/devops/devops-tech-deployment-automation + + To learn more about CI/CD, please see the following article from Atlassian, an established software company from Australia: https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment + - To learn more about the difference between continous delivery and continuous deployment, see the following article: https://docs.github.com/en/actions/deployment/about-deployments/deploying-with-github-actions + + To learn more about how to set up automated deployment with GitHub actions, please see the following articles: + + - Deploying with GitHub Actions: https://docs.github.com/en/actions/deployment/about-deployments/deploying-with-github-actions + + - Deployment to Expo: + - https://github.com/marketplace/actions/expo-github-action + - https://levelup.gitconnected.com/seamlessly-deploying-react-native-apps-with-expo-and-github-actions-3fd8157132bb + + - Deployment to Heroku: + - https://github.com/marketplace/actions/deploy-to-heroku + - https://devcenter.heroku.com/articles/git#for-an-existing-app From 3bd123d99bbbd72e9ca8a80a31f656468a2f98be Mon Sep 17 00:00:00 2001 From: Youngjun Cho Date: Sat, 18 Mar 2023 17:43:24 -0400 Subject: [PATCH 037/206] Remove duplicated line divider. --- .../Build_Requirements/Requirement_txt.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Topics/Development_Process/Build_Requirements/Requirement_txt.md b/Topics/Development_Process/Build_Requirements/Requirement_txt.md index f82a61133..03ad1cf64 100644 --- a/Topics/Development_Process/Build_Requirements/Requirement_txt.md +++ b/Topics/Development_Process/Build_Requirements/Requirement_txt.md @@ -2,15 +2,12 @@ ## **Introduction** ---- `requirements.txt` is a crucial file in Python projects for managing dependencies. It lists all the packages required to run your project, including their specific versions. This file ensures consistency and simplifies the setup process for other developers working on the project. ## **How to use?** ---- - ### **Creating a requirements.txt file** To create and update a `requirements.txt` file, use the following command in your terminal: @@ -39,8 +36,6 @@ This command reads the packages and their versions from the **`requirements.txt` ## **Best Practices** ---- - 1. **Use a virtual environment:** Always work within a virtual environment to isolate your project's dependencies from your system's global Python environment. [Guide to Python Virtual Environments](https://www.dataquest.io/blog/a-complete-guide-to-python-virtual-environments/) From 8ccd99df77f576c67822b7846392f86fc2299465 Mon Sep 17 00:00:00 2001 From: Youngjun Cho Date: Sat, 18 Mar 2023 17:51:30 -0400 Subject: [PATCH 038/206] Remove unnecessary change --- Topics/Software_Engineering.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Topics/Software_Engineering.md b/Topics/Software_Engineering.md index e2fa7b951..e9737f790 100644 --- a/Topics/Software_Engineering.md +++ b/Topics/Software_Engineering.md @@ -9,4 +9,3 @@ Potential topics-- 3. XP 2. Waterfall - From f369d7401a350a8df34439e37bfba444c9aac1c3 Mon Sep 17 00:00:00 2001 From: Youngjun Cho Date: Sat, 18 Mar 2023 18:00:15 -0400 Subject: [PATCH 039/206] Fix typo --- Topics/Development_Process.md | 2 +- .../{Requirement_txt.md => Requirements_txt.md} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename Topics/Development_Process/Build_Requirements/{Requirement_txt.md => Requirements_txt.md} (100%) diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index 888aab1d6..eea694f15 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -3,7 +3,7 @@ ### [Django Project Deployment: AWS, Vercel, and Railway](./Development_Process/Django_Deployment_AWS_Railway_Vercel.md) ## Build requirements -### [Requirement.txt](./Development_Process/Build_Requirements/Requirement_txt.md) +### [Requirements.txt](./Development_Process/Build_Requirements/Requirement_txt.md) ## SOLID PRINCIPLES: diff --git a/Topics/Development_Process/Build_Requirements/Requirement_txt.md b/Topics/Development_Process/Build_Requirements/Requirements_txt.md similarity index 100% rename from Topics/Development_Process/Build_Requirements/Requirement_txt.md rename to Topics/Development_Process/Build_Requirements/Requirements_txt.md From 83231d2b576b8372c1259a8d6add6d3bb8905375 Mon Sep 17 00:00:00 2001 From: Youngjun Cho Date: Sat, 18 Mar 2023 18:07:35 -0400 Subject: [PATCH 040/206] Fix the link to the Requirements_txt.md --- Topics/Development_Process.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index eea694f15..f8e44651e 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -3,7 +3,7 @@ ### [Django Project Deployment: AWS, Vercel, and Railway](./Development_Process/Django_Deployment_AWS_Railway_Vercel.md) ## Build requirements -### [Requirements.txt](./Development_Process/Build_Requirements/Requirement_txt.md) +### [Requirements.txt](./Development_Process/Build_Requirements/Requirements_txt.md) ## SOLID PRINCIPLES: From 915c99f3e3d97db6b5ce864daafbea9e84b8f840 Mon Sep 17 00:00:00 2001 From: IbrahimBess Date: Sat, 18 Mar 2023 18:08:52 -0400 Subject: [PATCH 041/206] Adding a link and context --- README.md | 3 ++- Topics/Tech_Stacks/Nuxt3.md | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 Topics/Tech_Stacks/Nuxt3.md diff --git a/README.md b/README.md index 940ce788e..c7224b1ec 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,8 @@ Following files are present in this directory. You may contribute to any of thes Potential Topics-- - Tech stacks - 1. Nuxt3. + 1. [Nuxt3.] (Topics/Tech_Stacks/Nuxt3.md) + Nuxt.js provides server-side rendering, automatic routing, code organization, and pre-configured plugins. It can be used to create applications quickly and easily. - Software Engineering 1. Methodologies & Frameworks 1. Agile diff --git a/Topics/Tech_Stacks/Nuxt3.md b/Topics/Tech_Stacks/Nuxt3.md new file mode 100644 index 000000000..592973e3e --- /dev/null +++ b/Topics/Tech_Stacks/Nuxt3.md @@ -0,0 +1,17 @@ +## My Icon Learn How to Create a Nuxt3 App +If you are looking for tutorials or documentation on creating a Nuxt3 application, be aware that many resources actually teach Nuxt2. It is important to note that Nuxt3 installation and syntax differ significantly from Nuxt2. As I faced this challenge myself, I would like to share a helpful YouTube tutorial that provides step-by-step instructions for creating a Nuxt3 app. + +The tutorial link is: https://www.youtube.com/watch?v=hj3NNlTqIJg&list=PL8HkCX2C5h0XT3xWYn71TlsAAo0kizmVc&index=1 + +Additionally, you can access further support options, such as a Discord server, by visiting this page: https://nuxt.com/support/solutions. + +It's worth mentioning that due to the confusion between Nuxt2 and Nuxt3 documentations online, Nuxt2 has more support and answered questions than Nuxt3. Therefore, you may opt to use Nuxt2 instead. However, keep in mind that installing Nuxt2 takes a longer time, so you should be patient. + +If you want to add the Tailwind CSS library to your Nuxt3 app, please follow the instructions in this link: https://tailwindcss.com/docs/guides/nuxtjs#3. +Make sure to select Nuxt3 instead of Nuxt2. + +## Why Nuxt? + +Nuxt.js provides server-side rendering, automatic routing, code organization, and pre-configured plugins. It also has a built-In static site generation. +Nuxt 3 comes with several performance improvements, including faster server startup time and smaller bundle sizes. +I think it is a nice tool, especially the auto routing and how flexible you can reuse the components, but it still lacks comprehensive documentation. \ No newline at end of file From e69a78565e22b617a3048dcf45ede24bec77ef51 Mon Sep 17 00:00:00 2001 From: IbrahimBess Date: Sat, 18 Mar 2023 18:14:04 -0400 Subject: [PATCH 042/206] t1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3bedc056d..a50eb565d 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Following files are present in this directory. You may contribute to any of thes Potential Topics-- - Tech stacks - 1. [Nuxt3.] (Topics/Tech_Stacks/Nuxt3.md) + 1. [Nuxt3.] (https://github.com/IbrahimBess/learning-software-engineering.github.io/blob/patch-2/Topics/Tech_Stacks/Nuxt3.md) Nuxt.js provides server-side rendering, automatic routing, code organization, and pre-configured plugins. It can be used to create applications quickly and easily. - Software Engineering 1. Methodologies & Frameworks From d6a23bc58cd5d822ca8ad1cd8c9e7e1e16d910ae Mon Sep 17 00:00:00 2001 From: IbrahimBess Date: Sat, 18 Mar 2023 18:15:54 -0400 Subject: [PATCH 043/206] t2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a50eb565d..1f1e42cd9 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Following files are present in this directory. You may contribute to any of thes Potential Topics-- - Tech stacks - 1. [Nuxt3.] (https://github.com/IbrahimBess/learning-software-engineering.github.io/blob/patch-2/Topics/Tech_Stacks/Nuxt3.md) + 1. [Nuxt3.](https://github.com/IbrahimBess/learning-software-engineering.github.io/blob/patch-2/Topics/Tech_Stacks/Nuxt3.md) Nuxt.js provides server-side rendering, automatic routing, code organization, and pre-configured plugins. It can be used to create applications quickly and easily. - Software Engineering 1. Methodologies & Frameworks From d360ea02e2e572df17d594565875b7aad8bef1f4 Mon Sep 17 00:00:00 2001 From: IbrahimBess <70774207+IbrahimBess@users.noreply.github.com> Date: Sat, 18 Mar 2023 18:20:35 -0400 Subject: [PATCH 044/206] editing context --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1f1e42cd9..b2cb8088b 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,9 @@ Following files are present in this directory. You may contribute to any of thes Potential Topics-- - Tech stacks - 1. [Nuxt3.](https://github.com/IbrahimBess/learning-software-engineering.github.io/blob/patch-2/Topics/Tech_Stacks/Nuxt3.md) - Nuxt.js provides server-side rendering, automatic routing, code organization, and pre-configured plugins. It can be used to create applications quickly and easily. + 1. [Nuxt3](https://github.com/IbrahimBess/learning-software-engineering.github.io/blob/patch-2/Topics/Tech_Stacks/Nuxt3.md) + + Nuxt.js provides server-side rendering, automatic routing, code organization, and pre-configured plugins. It can be used to create applications quickly and easily. - Software Engineering 1. Methodologies & Frameworks 1. Agile From f504ef9c93f02fc974a9f83d3fe4b1193cfc6682 Mon Sep 17 00:00:00 2001 From: Syed Ahmed <76264982+SyedTawsifAhmed@users.noreply.github.com> Date: Sat, 18 Mar 2023 19:06:49 -0400 Subject: [PATCH 045/206] Update Learning_MySQL.md Added the first part of the comparisons to other databases --- Topics/Tech_Stacks/Learning_MySQL.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Topics/Tech_Stacks/Learning_MySQL.md b/Topics/Tech_Stacks/Learning_MySQL.md index 8b1378917..99f68444a 100644 --- a/Topics/Tech_Stacks/Learning_MySQL.md +++ b/Topics/Tech_Stacks/Learning_MySQL.md @@ -1 +1,12 @@ +# Learning MySQL +## Introduction + +The following is an introduction to MySQL with some resources to get started. This article assumes that the reader has some knowledge about Structured Query Languages (SQL). For more information about SQL in general, you can check out [this link](https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-vs-mysql/). A relational database management system (RDBMS) which is used to implement databases for any general application. MySQL is one of the most popular DBMSs because it is flexible, secure, and has high performance. For more details, [click here](https://www.hostinger.com/tutorials/what-is-mysql). + +## MySQL vs other DBMSs + +When choosing a database management system, there may be a lot of options. here are some comparisons between the most popular ones: + +* Vs PostgreSQL + * Postgres is more geared towards applications that require complex queries and large amounts of data since it boasts many features that are not present in MySQL. Some of these features include [table inheritance](https://www.postgresql.org/docs/7.2/inherit.html) and [function overloading](https://www.postgresql.org/docs/current/xfunc-overload.html) For a more detailed comparison you can check out [this link](https://www.integrate.io/blog/postgresql-vs-mysql-which-one-is-better-for-your-use-case/). From 5d398530aea3bfaeca239eec828a3b9b7532f949 Mon Sep 17 00:00:00 2001 From: Tomas-Ha <90397885+Tomas-Ha@users.noreply.github.com> Date: Sat, 18 Mar 2023 19:52:38 -0400 Subject: [PATCH 046/206] Add second link for deploying with GitHub actions --- Topics/Automated_Deployment.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Topics/Automated_Deployment.md b/Topics/Automated_Deployment.md index f881030a4..cd1031f80 100644 --- a/Topics/Automated_Deployment.md +++ b/Topics/Automated_Deployment.md @@ -55,7 +55,9 @@ To learn more specifics, please see the resources below. To learn more about how to set up automated deployment with GitHub actions, please see the following articles: - - Deploying with GitHub Actions: https://docs.github.com/en/actions/deployment/about-deployments/deploying-with-github-actions + - Deploying with GitHub Actions: + - https://docs.github.com/en/actions/deployment/about-deployments/deploying-with-github-actions + - https://techblog.geekyants.com/github-actions-for-automating-builds-for-your-app - Deployment to Expo: - https://github.com/marketplace/actions/expo-github-action From 1f8ecd5a204805cf116ca12e3b93884d77fcc11a Mon Sep 17 00:00:00 2001 From: Syed Ahmed <76264982+SyedTawsifAhmed@users.noreply.github.com> Date: Sat, 18 Mar 2023 20:51:19 -0400 Subject: [PATCH 047/206] Update Learning_MySQL.md Added client installation instructions. --- Topics/Tech_Stacks/Learning_MySQL.md | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/Topics/Tech_Stacks/Learning_MySQL.md b/Topics/Tech_Stacks/Learning_MySQL.md index 99f68444a..dd7b6e9ad 100644 --- a/Topics/Tech_Stacks/Learning_MySQL.md +++ b/Topics/Tech_Stacks/Learning_MySQL.md @@ -2,11 +2,26 @@ ## Introduction -The following is an introduction to MySQL with some resources to get started. This article assumes that the reader has some knowledge about Structured Query Languages (SQL). For more information about SQL in general, you can check out [this link](https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-vs-mysql/). A relational database management system (RDBMS) which is used to implement databases for any general application. MySQL is one of the most popular DBMSs because it is flexible, secure, and has high performance. For more details, [click here](https://www.hostinger.com/tutorials/what-is-mysql). +The following is an introduction to MySQL with some resources to get started. *This article assumes that the reader has some knowledge about Structured Query Languages (SQL). For more information about SQL in general, you can check out [this link](https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-vs-mysql/)*. A relational database management system (RDBMS) which is used to implement databases for any general application. MySQL is one of the most popular DBMSs because it is flexible, secure, and has high performance. For more details, [click here](https://www.hostinger.com/tutorials/what-is-mysql). ## MySQL vs other DBMSs When choosing a database management system, there may be a lot of options. here are some comparisons between the most popular ones: -* Vs PostgreSQL - * Postgres is more geared towards applications that require complex queries and large amounts of data since it boasts many features that are not present in MySQL. Some of these features include [table inheritance](https://www.postgresql.org/docs/7.2/inherit.html) and [function overloading](https://www.postgresql.org/docs/current/xfunc-overload.html) For a more detailed comparison you can check out [this link](https://www.integrate.io/blog/postgresql-vs-mysql-which-one-is-better-for-your-use-case/). +* Vs. PostgreSQL + * Postgres is more geared towards applications that require complex queries and large amounts of data since it boasts many features that are not present in MySQL. Some of these features include [table inheritance](https://www.postgresql.org/docs/7.2/inherit.html) and [function overloading](https://www.postgresql.org/docs/current/xfunc-overload.html). For a more detailed comparison you can check out [this link](https://www.integrate.io/blog/postgresql-vs-mysql-which-one-is-better-for-your-use-case/). +* Vs. MongoDB + * MongoDB is a NoSQL database, meaning that it does not follow SQL rules and schemas and instead uses JSON rules to store data. Therefore it is more flexible. It is also geared towards write performance and is better for [real time applications](https://www.simplilearn.com/tutorials/mongodb-tutorial/mongodb-vs-mysql#:~:text=MySQL%20is%20an%20excellent%20choice,and%20other%20types%20of%20applications.) + +## MySQL client installation + +To use the client for database configuration, do the following steps: +1) Download the client + i) **Linux** + Follow the instructions on this [this link](https://dev.mysql.com/doc/refman/8.0/en/linux-installation.html). For users using Debian or Ubuntu, use the [APT documentation here](https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install) and follow the 3 steps. + ii) **Windows** + Follow the instructions on [this link](https://dev.mysql.com/doc/refman/5.7/en/windows-installation.html#windows-installation-simple) which provides 3 steps in order to complete this step using an installer. + iii) **macOS** + Follow steps 1-8 from [this link](https://dev.mysql.com/doc/refman/8.0/en/macos-installation-pkg.html) which shows you how to nagivate the Installer Wizard. + + From 1ef9732dc66f3cb97978c863a226526d2a1126b6 Mon Sep 17 00:00:00 2001 From: Syed Ahmed <76264982+SyedTawsifAhmed@users.noreply.github.com> Date: Sat, 18 Mar 2023 20:51:59 -0400 Subject: [PATCH 048/206] Update Learning_MySQL.md --- Topics/Tech_Stacks/Learning_MySQL.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Topics/Tech_Stacks/Learning_MySQL.md b/Topics/Tech_Stacks/Learning_MySQL.md index dd7b6e9ad..af3fa1b3e 100644 --- a/Topics/Tech_Stacks/Learning_MySQL.md +++ b/Topics/Tech_Stacks/Learning_MySQL.md @@ -16,12 +16,12 @@ When choosing a database management system, there may be a lot of options. here ## MySQL client installation To use the client for database configuration, do the following steps: -1) Download the client - i) **Linux** - Follow the instructions on this [this link](https://dev.mysql.com/doc/refman/8.0/en/linux-installation.html). For users using Debian or Ubuntu, use the [APT documentation here](https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install) and follow the 3 steps. - ii) **Windows** - Follow the instructions on [this link](https://dev.mysql.com/doc/refman/5.7/en/windows-installation.html#windows-installation-simple) which provides 3 steps in order to complete this step using an installer. - iii) **macOS** +1) Download the client
+ i) **Linux**
+ Follow the instructions on this [this link](https://dev.mysql.com/doc/refman/8.0/en/linux-installation.html). For users using Debian or Ubuntu, use the [APT documentation here](https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install) and follow the 3 steps.
+ ii) **Windows**
+ Follow the instructions on [this link](https://dev.mysql.com/doc/refman/5.7/en/windows-installation.html#windows-installation-simple) which provides 3 steps in order to complete this step using an installer.
+ iii) **macOS**
Follow steps 1-8 from [this link](https://dev.mysql.com/doc/refman/8.0/en/macos-installation-pkg.html) which shows you how to nagivate the Installer Wizard. From 32b06fd0382ed78f9cdb2539a5dce37cc674c560 Mon Sep 17 00:00:00 2001 From: Syed Ahmed <76264982+SyedTawsifAhmed@users.noreply.github.com> Date: Sat, 18 Mar 2023 21:13:43 -0400 Subject: [PATCH 049/206] Update Learning_MySQL.md completed MySQL client installtion and basic operations --- Topics/Tech_Stacks/Learning_MySQL.md | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/Topics/Tech_Stacks/Learning_MySQL.md b/Topics/Tech_Stacks/Learning_MySQL.md index af3fa1b3e..b3d8ff6c0 100644 --- a/Topics/Tech_Stacks/Learning_MySQL.md +++ b/Topics/Tech_Stacks/Learning_MySQL.md @@ -13,15 +13,29 @@ When choosing a database management system, there may be a lot of options. here * Vs. MongoDB * MongoDB is a NoSQL database, meaning that it does not follow SQL rules and schemas and instead uses JSON rules to store data. Therefore it is more flexible. It is also geared towards write performance and is better for [real time applications](https://www.simplilearn.com/tutorials/mongodb-tutorial/mongodb-vs-mysql#:~:text=MySQL%20is%20an%20excellent%20choice,and%20other%20types%20of%20applications.) -## MySQL client installation +## MySQL client installation and basic operations To use the client for database configuration, do the following steps: 1) Download the client
i) **Linux**
- Follow the instructions on this [this link](https://dev.mysql.com/doc/refman/8.0/en/linux-installation.html). For users using Debian or Ubuntu, use the [APT documentation here](https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install) and follow the 3 steps.
+ Follow the instructions on this [this link](https://dev.mysql.com/doc/refman/8.0/en/linux-installation.html). For users using Debian or Ubuntu, use the [APT documentation here](https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install) and follow the 3 steps.
ii) **Windows**
- Follow the instructions on [this link](https://dev.mysql.com/doc/refman/5.7/en/windows-installation.html#windows-installation-simple) which provides 3 steps in order to complete this step using an installer.
+ Follow the instructions on [this link](https://dev.mysql.com/doc/refman/5.7/en/windows-installation.html#windows-installation-simple) which provides 3 steps in order to complete this step using an installer.
iii) **macOS**
- Follow steps 1-8 from [this link](https://dev.mysql.com/doc/refman/8.0/en/macos-installation-pkg.html) which shows you how to nagivate the Installer Wizard. + Follow steps 1-8 from [this link](https://dev.mysql.com/doc/refman/8.0/en/macos-installation-pkg.html) which shows you how to nagivate the Installer Wizard. +2) Connect to the MySQL server using the mysql client
+ i) **Linux Based Systems**
+ Enter the following in the command line terminal
+ > $`>` mysql -u root -p + ii) **Windows**
+ Go to **Start, All Programs, MySQL, MySQL 5.7 Command Line Client (or MySQL 8.0 Command Line Client, respectively)** +3) Run SQL statements to create schemas and run operations. Here are some examples + * Creating a new database. Use a [CREATE DATABASE](https://dev.mysql.com/doc/refman/8.0/en/show-databases.html) statement + * Create a table with a [CREATE TABLE](https://dev.mysql.com/doc/refman/8.0/en/create-table.html) statement + * Adding records into a table using [INSERT...VALUES](https://dev.mysql.com/doc/refman/8.0/en/insert.html) statement + * Use a [DELETE](https://dev.mysql.com/doc/refman/8.0/en/delete.html) statement to delete a record from a table + +For the fully detailed version of these steps, click [this link](https://dev.mysql.com/doc/mysql-getting-started/en/) + From ab7f2cebdaf5ab1c96029562ab78284264a77b86 Mon Sep 17 00:00:00 2001 From: Syed Ahmed <76264982+SyedTawsifAhmed@users.noreply.github.com> Date: Sat, 18 Mar 2023 22:07:29 -0400 Subject: [PATCH 050/206] Update Learning_MySQL.md Added steps for connecting to the MySQL database using node.js --- Topics/Tech_Stacks/Learning_MySQL.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/Topics/Tech_Stacks/Learning_MySQL.md b/Topics/Tech_Stacks/Learning_MySQL.md index b3d8ff6c0..ff4eab814 100644 --- a/Topics/Tech_Stacks/Learning_MySQL.md +++ b/Topics/Tech_Stacks/Learning_MySQL.md @@ -15,7 +15,7 @@ When choosing a database management system, there may be a lot of options. here ## MySQL client installation and basic operations -To use the client for database configuration, do the following steps: +The following is a summary from [this guide](https://dev.mysql.com/doc/mysql-getting-started/en/) which has many details, but here are the following steps: 1) Download the client
i) **Linux**
Follow the instructions on this [this link](https://dev.mysql.com/doc/refman/8.0/en/linux-installation.html). For users using Debian or Ubuntu, use the [APT documentation here](https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install) and follow the 3 steps.
@@ -26,7 +26,7 @@ To use the client for database configuration, do the following steps: 2) Connect to the MySQL server using the mysql client
i) **Linux Based Systems**
Enter the following in the command line terminal
- > $`>` mysql -u root -p + > $`>` mysql -u root -p
ii) **Windows**
Go to **Start, All Programs, MySQL, MySQL 5.7 Command Line Client (or MySQL 8.0 Command Line Client, respectively)** 3) Run SQL statements to create schemas and run operations. Here are some examples @@ -35,7 +35,23 @@ To use the client for database configuration, do the following steps: * Adding records into a table using [INSERT...VALUES](https://dev.mysql.com/doc/refman/8.0/en/insert.html) statement * Use a [DELETE](https://dev.mysql.com/doc/refman/8.0/en/delete.html) statement to delete a record from a table -For the fully detailed version of these steps, click [this link](https://dev.mysql.com/doc/mysql-getting-started/en/) +## MySQL integration + +There are many environments that can integrate a MySQL database. Here is how to do it in Node.js and Python + +### MySQL database connection to Node.js + +Assuming that npm and node is installed (click here for [npm instructions](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm), use the following commands in the terminal +* `npm init -y` +* `npm install mysql` +* In your mysql client use the database command `CREATE DATABASE databaseName;` to create a database to connect to +* In your .js file, use `import 'mysql';` +* Use `let connection = mysql.createConnection({host: 'localhost', user: 'root', password: '', database: 'databaseName'});` in the .js file to connect to the database server. The host, user, and password parameters can be changed to your specific usage. +* Use the form `connection.connect(function(err) {...});` to connect to the database, where the ... represents your error checking method incase the connection fails. +* To close the connection, use the form `connection.end(function(err) {...});` where ... represents the error checking method of your choice. + +For more detailed steps, check out [this link](https://www.mysqltutorial.org/mysql-nodejs/connect/) + From 1d34bb0058562f6cf318ac1b651ea4a1b44641df Mon Sep 17 00:00:00 2001 From: Syed Ahmed <76264982+SyedTawsifAhmed@users.noreply.github.com> Date: Sat, 18 Mar 2023 23:12:44 -0400 Subject: [PATCH 051/206] Update Learning_MySQL.md Added instructions for connecting and using MySQL in python --- Topics/Tech_Stacks/Learning_MySQL.md | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/Topics/Tech_Stacks/Learning_MySQL.md b/Topics/Tech_Stacks/Learning_MySQL.md index ff4eab814..84481a52a 100644 --- a/Topics/Tech_Stacks/Learning_MySQL.md +++ b/Topics/Tech_Stacks/Learning_MySQL.md @@ -16,20 +16,20 @@ When choosing a database management system, there may be a lot of options. here ## MySQL client installation and basic operations The following is a summary from [this guide](https://dev.mysql.com/doc/mysql-getting-started/en/) which has many details, but here are the following steps: -1) Download the client
+1. Download the client
i) **Linux**
Follow the instructions on this [this link](https://dev.mysql.com/doc/refman/8.0/en/linux-installation.html). For users using Debian or Ubuntu, use the [APT documentation here](https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install) and follow the 3 steps.
ii) **Windows**
Follow the instructions on [this link](https://dev.mysql.com/doc/refman/5.7/en/windows-installation.html#windows-installation-simple) which provides 3 steps in order to complete this step using an installer.
iii) **macOS**
Follow steps 1-8 from [this link](https://dev.mysql.com/doc/refman/8.0/en/macos-installation-pkg.html) which shows you how to nagivate the Installer Wizard. -2) Connect to the MySQL server using the mysql client
+2. Connect to the MySQL server using the mysql client
i) **Linux Based Systems**
Enter the following in the command line terminal
- > $`>` mysql -u root -p
+ `$> mysql -u root -p`
ii) **Windows**
- Go to **Start, All Programs, MySQL, MySQL 5.7 Command Line Client (or MySQL 8.0 Command Line Client, respectively)** -3) Run SQL statements to create schemas and run operations. Here are some examples + Go to **Start, All Programs, MySQL, MySQL (ver#) Command Line Client** +3. Run SQL statements to create schemas and run operations. Here are some examples * Creating a new database. Use a [CREATE DATABASE](https://dev.mysql.com/doc/refman/8.0/en/show-databases.html) statement * Create a table with a [CREATE TABLE](https://dev.mysql.com/doc/refman/8.0/en/create-table.html) statement * Adding records into a table using [INSERT...VALUES](https://dev.mysql.com/doc/refman/8.0/en/insert.html) statement @@ -46,12 +46,26 @@ Assuming that npm and node is installed (click here for [npm instructions](https * `npm install mysql` * In your mysql client use the database command `CREATE DATABASE databaseName;` to create a database to connect to * In your .js file, use `import 'mysql';` -* Use `let connection = mysql.createConnection({host: 'localhost', user: 'root', password: '', database: 'databaseName'});` in the .js file to connect to the database server. The host, user, and password parameters can be changed to your specific usage. +* Use the form `let connection = mysql.createConnection({host: 'localhost', user: 'root', password: '', database: 'databaseName'});` in the .js file to connect to the database server. The host, user, and password parameters can be changed to your specific usage. * Use the form `connection.connect(function(err) {...});` to connect to the database, where the ... represents your error checking method incase the connection fails. +* If you want to query the database, use the form `connection.query(queryName, function(err, results, fields) {...}` where queryName represents your SQL query in string format, and ... is your resolve function from the resulting query call. * To close the connection, use the form `connection.end(function(err) {...});` where ... represents the error checking method of your choice. For more detailed steps, check out [this link](https://www.mysqltutorial.org/mysql-nodejs/connect/) +### MySQL database connection to Python + +In order to connect to the database using Python, you need to use a database driver. Assuming that a recent version Python and pip is installed (click [here](https://pip.pypa.io/en/stable/installation/) for details installing pip), use the following commands: +* In the shell use `pip install mysql-connector-python` +* In your .py file, use `import mysql.connector` +* Use the form `connector = connect(host="localhost", user=..., password=...,)` to connect to the database server, where ... represents your own user and password methods. +* To create a database through python, use the cursor method which allows you to use SQL queries. Use the form `connector.cursor().execute('CREATE DATABASE databaseName')`, where databaseName can be changed for your own usage. +* If you want to connect to an existing database, use the form `connector = connect(host="localhost", user=..., password=..., database='databaseName',)` +* If you want to query the database, use the form `connector.cursor().execute('...')` +* To close the connection, use `connector.close()` + +For more detailed steps, check out [this link](https://realpython.com/python-mysql/) + From cef8bca5c2ace4cf6a44e044d1c6204bc664f8c1 Mon Sep 17 00:00:00 2001 From: Syed Ahmed <76264982+SyedTawsifAhmed@users.noreply.github.com> Date: Sat, 18 Mar 2023 23:38:15 -0400 Subject: [PATCH 052/206] Update Learning_MySQL.md Added additional resources and a table of contents. --- Topics/Tech_Stacks/Learning_MySQL.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Topics/Tech_Stacks/Learning_MySQL.md b/Topics/Tech_Stacks/Learning_MySQL.md index 84481a52a..7d882d86a 100644 --- a/Topics/Tech_Stacks/Learning_MySQL.md +++ b/Topics/Tech_Stacks/Learning_MySQL.md @@ -1,5 +1,12 @@ # Learning MySQL +## Table of contents +### [Introduction](#introduction-1) +### [MySQL vs other DBMSs](#mysql-vs-other-dbmss-1) +### [MySQL client installation and basic operations](#mysql-client-installation-and-basic-operations-1) +### [MySQL integration](#mysql-integration-1) +### [Additional Resources](#additional-resources-1) + ## Introduction The following is an introduction to MySQL with some resources to get started. *This article assumes that the reader has some knowledge about Structured Query Languages (SQL). For more information about SQL in general, you can check out [this link](https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-vs-mysql/)*. A relational database management system (RDBMS) which is used to implement databases for any general application. MySQL is one of the most popular DBMSs because it is flexible, secure, and has high performance. For more details, [click here](https://www.hostinger.com/tutorials/what-is-mysql). @@ -66,6 +73,8 @@ In order to connect to the database using Python, you need to use a database dri For more detailed steps, check out [this link](https://realpython.com/python-mysql/) +## Additional Resources - - +* To use MySQL with PHP, refer to [this tutorial](https://www.mysqltutorial.org/php-mysql/) by MySQLTUTORIAL +* To see examples of using the MySQL client, refer to [this link](https://dev.mysql.com/doc/mysql-tutorial-excerpt/8.0/en/examples.html) +* To troubleshoot the client, refer to [this link](https://dev.mysql.com/doc/refman/8.0/en/problems.html), where it gives instructions on how to find [problem](https://dev.mysql.com/doc/refman/8.0/en/what-is-crashing.html) and also lists [common errors](https://dev.mysql.com/doc/refman/8.0/en/common-errors.html) From ee9cfde1bcf5c0a4d0f2ce4366d0ed11a5387f92 Mon Sep 17 00:00:00 2001 From: Vim0315 <73090801+Vim0315@users.noreply.github.com> Date: Sun, 19 Mar 2023 01:49:42 -0400 Subject: [PATCH 053/206] Added Agile and Waterfall methodologies Added descriptions to two task management methodologies, Agile and Waterfall, and attached text/video learning resources for both of them. --- Topics/Task_Management_Software.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Topics/Task_Management_Software.md b/Topics/Task_Management_Software.md index cb63cc749..cf3fd0067 100644 --- a/Topics/Task_Management_Software.md +++ b/Topics/Task_Management_Software.md @@ -13,3 +13,20 @@ Beginner tutorial for Jira - https://www.youtube.com/watch?v=nHuhojfjeUY Must Know Jira features - https://www.youtube.com/watch?v=issdcnErAU8 Written Article On Jira Workflows - https://support.atlassian.com/jira-work-management/docs/how-to-create-workflows/ + + +# Examples of Modern Task Management Methodologies +- Agile +Agile is a task management methodology that is widely used in modern software development. It emphasizes flexibility, collaboration, and continuous improvement. Agile methodology focuses on delivering software features in small increments, which are known as sprints or iterations. At the start of each sprint, the team identifies the tasks that need to be completed and assigns them to team members. The team then works together to complete the tasks within the sprint period. The detailed executions may differ in different teams and projects, but there are several key principles to follow: + 1.Prioritizing tasks based on customer value: Agile task management focuses on delivering the highest value features first, rather than trying to complete all tasks at once. + 2.Collaboration and communication: Agile emphasizes close collaboration between team members, with frequent meetings and communication to ensure that everyone is on the same page. + 3.Iterative development: Agile tasks are completed in small iterations(sprints), allowing for continuous feedback and improvement. + 4.Flexibility: Agile recognizes that requirements and priorities are subject to be changed, and allows for adjustments throughout the project. +The number of teams practicing agile in organizations has grown significantly in the past years, and agile knowledge has become a factor of consideration in recruiting processes. +To learn more about Agile in text: https://www.tutorialspoint.com/agile/index.htm +To learn more about Agile in video: https://www.youtube.com/watch?v=wmJfx7zAfQI&feature=youtu.be + +- Waterfall +Waterfall is a traditional project management methodology that involves a linear, sequential approach to task management. In this approach, tasks are completed in a specific order, with each task depending on the completion of the previous task. While it is very useful for projects with well-defined requirements and a clear plan, it is much less flexible than Agile, and is also less popular in modern software development. +To learn more about Waterfall in text:https://business.adobe.com/blog/basics/waterfall +To learn more about Waterfall in video:https://www.youtube.com/watch?v=cYzuzwQEZCg From 658b326f23a28f5f8d0765c0a190ee35db253b09 Mon Sep 17 00:00:00 2001 From: Tomas-Ha <90397885+Tomas-Ha@users.noreply.github.com> Date: Sun, 19 Mar 2023 02:28:52 -0400 Subject: [PATCH 054/206] Move Automated_Deployment File into proper folder --- Topics/{ => Software_Tools/Git}/Automated_Deployment.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Topics/{ => Software_Tools/Git}/Automated_Deployment.md (100%) diff --git a/Topics/Automated_Deployment.md b/Topics/Software_Tools/Git/Automated_Deployment.md similarity index 100% rename from Topics/Automated_Deployment.md rename to Topics/Software_Tools/Git/Automated_Deployment.md From 35fe0bb0ce93f31021b8ddf0351b85bf5262562d Mon Sep 17 00:00:00 2001 From: JustinAlianto <63857586+JustinAlianto@users.noreply.github.com> Date: Sun, 19 Mar 2023 04:08:12 -0400 Subject: [PATCH 055/206] Added a section for Software_Tools folder Updated README.md to include my previously approved PR for the creation of Software_Tools folder, Git folder, and Git_Workflows.md accordingly. --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0de54dc13..a398e4690 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,9 @@ Following files are present in this directory. You may contribute to any of thes Potential Topics-- - Tech stacks +- Software Tools + 1. Git + 1. Git Workflows - Software Engineering 1. Methodologies & Frameworks 1. Agile @@ -61,4 +64,4 @@ Potential Topics-- - User Experience - Product Management - Other useful resources -- Teamwork \ No newline at end of file +- Teamwork From 8e93184cc8c64299392acb43a93b49234ea753e1 Mon Sep 17 00:00:00 2001 From: David Date: Sun, 19 Mar 2023 09:52:13 -0400 Subject: [PATCH 056/206] Revert "Nuxt 3 and Tailwindcss by Ibrahim bess" --- Topics/Tech_Stacks.md | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 1edd9dba3..acf455d04 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,21 +1,3 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) - -## My Icon Learn How to Create a Nuxt3 App -If you are looking for tutorials or documentation on creating a Nuxt3 application, be aware that many resources actually teach Nuxt2. It is important to note that Nuxt3 installation and syntax differ significantly from Nuxt2. As I faced this challenge myself, I would like to share a helpful YouTube tutorial that provides step-by-step instructions for creating a Nuxt3 app. - -The tutorial link is: https://www.youtube.com/watch?v=hj3NNlTqIJg&list=PL8HkCX2C5h0XT3xWYn71TlsAAo0kizmVc&index=1 - -Additionally, you can access further support options, such as a Discord server, by visiting this page: https://nuxt.com/support/solutions. - -It's worth mentioning that due to the confusion between Nuxt2 and Nuxt3 documentations online, Nuxt2 has more support and answered questions than Nuxt3. Therefore, you may opt to use Nuxt2 instead. However, keep in mind that installing Nuxt2 takes a longer time, so you should be patient. - -If you want to add the Tailwind CSS library to your Nuxt3 app, please follow the instructions in this link: https://tailwindcss.com/docs/guides/nuxtjs#3. -Make sure to select Nuxt3 instead of Nuxt2. - -## Why Nuxt? - -Nuxt.js provides server-side rendering, automatic routing, code organization, and pre-configured plugins. It also has a built-In static site generation. -Nuxt 3 comes with several performance improvements, including faster server startup time and smaller bundle sizes. -I think it is a nice tool, especially the auto routing and how flexible you can reuse the components, but it still lacks comprehensive documentation. \ No newline at end of file From 03a1518ddc12604405eba360fff03bb9fea6e9c1 Mon Sep 17 00:00:00 2001 From: Tomas-Ha <90397885+Tomas-Ha@users.noreply.github.com> Date: Sun, 19 Mar 2023 11:03:16 -0400 Subject: [PATCH 057/206] Integrate links into document --- .../Git/Automated_Deployment.md | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/Topics/Software_Tools/Git/Automated_Deployment.md b/Topics/Software_Tools/Git/Automated_Deployment.md index cd1031f80..9d57b510b 100644 --- a/Topics/Software_Tools/Git/Automated_Deployment.md +++ b/Topics/Software_Tools/Git/Automated_Deployment.md @@ -7,16 +7,20 @@        According to the Google Cloud Automation Center, Automated Deployment is "what enables you to deploy your software to testing and production environments with the push of a button." Automated deployment is a set of scripts that perform the following actions: prepare the target environment (installing/configuring any software needed), deploying the build packages created by continuous integration (this will be discussed more in the next part), run deployment tasks such as migrating databases, perform tests on the deployment to ensure it is functioning and accessable.       This prevents programming teams from having to manually perform these tasks for every deployment, which save teams hours over the course of a project. It reduces the risk of production deployments, since it ensures that all environments are the same. It also allows developers to deploy to production environments more frequently, which will lead to fast user feedback. In short, automated deployment is important, since it saves software teams time, prevents any errors in deployments, and allows teams to more easily ensure new features are working properly. +
+
+ To learn more about DevOps in general, please see the Google Cloud Automation Center DevOps article referenced: https://cloud.google.com/architecture/devops + - To learn more about deployment automation specifically: https://cloud.google.com/architecture/devops/devops-tech-deployment-automation - + ______ ### How is Automated Deployment Used       Automated Deplyment requires CI/CD to be used. CI stands for continuous integration, and CD stands for continuous delivery _or_ continuous deployment (note, there is a difference between these two). Continuous Integration ensures that the new code is ready to be deployed, and continuous delivery or deployment uses automated deployment to deploy to either staging/testing environments or a production environment, respectively.       Continuous integration typically consists of developers continously merging their code into the main branch. Upon merging, code executes to create a build of the new code and run automated tests against this build. This is a followed by either continuous delivery or continuous deployment. Continuous delivery consists of automated deployment of the build packages from continuous ingration to a testing or staging environment. Deployment to production can be triggered whenever the team needs. Meanwhile, continuous deployment automatically deploys new code through testing and into production and requires zero human input. - - +
+
       There are many benefits to each step in this process. Continuous integration will lead to fewer bugs in production and easies release building as all issues with integration have already been found and solved. Furthermore, testing costs less since it is run on the CI server and less time is spent running the tests manually. However, CI requires writing automated testing for each new feature (Test Driven Development), as well as having a server where the automated tests are run. Furthermore, it requires developers to merge their work as often as possible, which may cause issues if some features or fixes take more time.        The benefits of continuous delivery are that your team releases more often and deploying software is less complex since it is automated. Most importantly, it releases pressure on small changes, since they can always be quickly undone or fixed with future releases. However, it requires automated deployment, which takes time to set up, and the team needs to "embrace" flaging features so that incomplete features are not released. @@ -26,14 +30,18 @@       However, most importantly, both continuous delivery and continuous deployment can only occur if the new changes pass all the tests from continuous integration. This means that in order to successfully implement continuous delivery or deployment, you need to have an extensive set of test for your code that can verify that the changes are suitable for these environments. Otherwise, continuous delivery or deployment can lead to issues within staging and testing environments, or, worse, issues for customers.       To summarize, automated deployment is used for continous deliver or deployment. In order for this to work, continuous integration needs to be used in order to extensively test the code and ensure it is acceptable to deploy to whichever environment (depending on if delivery or deployment is used). Although it requires a strong CI, it leads to faster development, less risky releases, and more customer feedback. +
+
+To learn more about CI/CD, please see the following article from Atlassian, an established software company from Australia: https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment + - To learn more about the difference between continous delivery and continuous deployment, see the following article: https://docs.github.com/en/actions/deployment/about-deployments/deploying-with-github-actions - +______ ### Examples of Common Automated Deployment Software -       Atlassian recommends using Bitbucket Pipelines, which is their "CI/CD tool that's integrated into Bitbucket Cloud," their version of GitHub. BitBucket provides extended CI/CD features that allow you to integrate with Jira, a task management software by Atlassian. However, you can implement CI/CD fairly easily with GitHub Actions. - - +       Atlassian recommends using Bitbucket Pipelines (https://bitbucket.org/product/features/pipelines), which is their "CI/CD tool that's integrated into Bitbucket Cloud," their version of GitHub (https://bitbucket.org/product/). BitBucket provides extended CI/CD features that allow you to integrate with Jira, a task management software by Atlassian. However, you can implement CI/CD fairly easily with GitHub Actions. +
+
### How to Set Up Automated Deployment with GitHub Actions        In order to set up automated deployment, you need to know the following: when do you want deployments to occur (on pull request, on push, on workflow dispatch, etc), where do you want the deployment to be (staging or production, continuous delivery vs continuous deployment), and what are the requirements for your environment (what packages do you need to set install or software do you need to set up to deploy). @@ -41,18 +49,8 @@        Once you know these things, you can start setting up your GitHub Action using a yaml file. Start with the `on:` command and put all the situations where you want deployment to occur (and on what branches). Then, under `jobs:`, create a `deployment:` section and set the environment, what os it runs on, and the steps necessary to deploy.       For example, for Heroku, you need to specify the Heroku key (this is the login key) and the application you are deploying to. Meanwhile, for Expo, you may need to setup node, EAS (Expo Application Services), sign into EAS, install yarn dependencies, and then use EAS to deploy. An alternate method you could use is writing a shell script that performs these actions and simply having GitHub run this shell script with a GitHub Action. - -To learn more specifics, please see the resources below. - - - ## Resources: - - To learn more about DevOps in general, please see the Google Cloud Automation Center DevOps article referenced in the above writing: https://cloud.google.com/architecture/devops - - To learn more about deployment automation specifically: https://cloud.google.com/architecture/devops/devops-tech-deployment-automation - - To learn more about CI/CD, please see the following article from Atlassian, an established software company from Australia: https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment - - To learn more about the difference between continous delivery and continuous deployment, see the following article: https://docs.github.com/en/actions/deployment/about-deployments/deploying-with-github-actions - +
+
To learn more about how to set up automated deployment with GitHub actions, please see the following articles: - Deploying with GitHub Actions: From bcf404a36ebabed331724b530e03d69c8aaf335d Mon Sep 17 00:00:00 2001 From: jaren Date: Sun, 19 Mar 2023 18:34:29 -0400 Subject: [PATCH 058/206] added JS file --- Topics/Tech_Stacks/JavaScript.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Topics/Tech_Stacks/JavaScript.md diff --git a/Topics/Tech_Stacks/JavaScript.md b/Topics/Tech_Stacks/JavaScript.md new file mode 100644 index 000000000..fd736ce42 --- /dev/null +++ b/Topics/Tech_Stacks/JavaScript.md @@ -0,0 +1,11 @@ +# `JavaScript` + +JavaScript is one of the most fundamental coding languages in responsive web design and web development. It is the component that enhances a well-built HTML/CSS site and allows it to have functionality over just being a static page. The following resources are what I believe to be the best way to get started in the basics of JavaScript and also aquire a grasp of the language beyond the fundamentals. +1. [FreeCodeCamp's course on JavaScript Algorithms and Data Structures](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/) + + This is a free online resource that has many components for learning JavaScript from the very beginning. It starts with a section on Basic JavaScript that explores the language wihtout any other components like HTML/CSS to worry about. It then continues to more complex topics such as REGEX, Debugging, Data Structures and Object Oriented versus Functional Programming, just to name a few. The main benefit to this course is that is offers coding projects at the end for you to work on that not only ascertains that you have learned a lot from the course, but upon completion gives you a certificate for completing the course which could be a good resume boost. +2. [JavaScript codealong](https://youtu.be/M6etynV-IMo) + + This YouTube video is part of a series on web design by Leon Noel, one of the best coding instructors on YouTube. It has a slow, relaxed pace that allows newer coders to follow along without needing to frequently pause the video. This link is second because it requires prior knowledge of CSS and HTML but is a great gateway to the marriage of those languages with JavaScript in a more realistic example of how one will use the languages in web design. + + From 96825190bb62b3ee19f18b6f38cdd5e38e0b05cd Mon Sep 17 00:00:00 2001 From: Saad Afridi Date: Sun, 19 Mar 2023 18:37:16 -0400 Subject: [PATCH 059/206] Added Docker.md in Development Process --- Topics/Development_Process/Docker.md | 57 ++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Topics/Development_Process/Docker.md diff --git a/Topics/Development_Process/Docker.md b/Topics/Development_Process/Docker.md new file mode 100644 index 000000000..a07f5b157 --- /dev/null +++ b/Topics/Development_Process/Docker.md @@ -0,0 +1,57 @@ +# Learning Docker + +## Table of Contents +### [Introduction](#introduction-1) +### [Installation](#installation-1) +### [Getting Started](#getting-started-1) +### [Next Steps](#next-steps-1) +### [Docker Terminology](#docker-terminology-1) + +---- + +## Introduction + +This article will help readers understand what Docker is, why it is used and how to start using it. Docker is used by developers for many reasons, however, the most common reasons are for building, deploying and sharing an application quickly. Docker packages your application into something that's called a [container](#docker-terminology-1). This [container](#docker-terminology-1) is OS-agnostic meaning that developers on Mac, Windows and Linux can share their code without any worry of conflicts. Here's [Amazon's Intro to Docker](https://aws.amazon.com/docker/#:~:text=Docker%20is%20a%20software%20platform,tools%2C%20code%2C%20and%20runtime.) if you want to learn more. + +---- + +## Installation + +To start using Docker you will have to download Docker Engine. This is automatically downloaded alongside Docker Desktop (A Graphical User Interface for Docker). +[Download Docker Desktop here](https://www.docker.com/get-started/) + + +For detailed installation instructions based on specific operating systems click here: [Mac](https://docs.docker.com/desktop/install/mac-install/), [Windows](https://docs.docker.com/desktop/install/windows-install/), [Linux](https://docs.docker.com/desktop/install/linux-install/) + +---- + +## Getting Started + +Once you've installed Docker, to see it in action you can follow any one of these quick tutorials: + +- [Dockerizing a React App](https://mherman.org/blog/dockerizing-a-react-app/) (Simple and quick tutorial for containerizing a React App, contains lots of explanations. I recommend this if you want to quickly get something running plus see what the next steps look like) +- [Dockerize a Flask App](https://www.freecodecamp.org/news/how-to-dockerize-a-flask-app/) (Super detailed step-by-step explanations tutorial for containerizing a flask app. I recommend this if you want to understand *everything* that goes on) +- [Docker's official tutorial for containerizing an application](https://docs.docker.com/get-started/02_our_app/) (Can't go wrong with the official tutorial.) + +---- + +## Next Steps + +Congratulations! you have successfully learnt how to Dockerize an app and use it. You have learnt what is a `Dockerfile`, how to create a `Dockerfile`, build a Docker Container Image and start a Docker Container. Now what's next? + +Now you might want a React Container to communicate with a containerized Flask API. How do we do this? This is where [Docker Compose](https://docs.docker.com/compose/) comes in. It allows you to define, control multiple containers at once. Your next steps should be defining a `docker-compose.yml` for your project and see if you can get multiple services/containers to successfully communicate. + +---- + +## Other Resources + +Here's a [cheat sheet](https://docs.docker.com/get-started/docker_cheatsheet.pdf) of all useful Docker CLI commands and here's a [cheat sheet](https://devhints.io/docker-compose) for docker compose which should help you in your future endeavors All the best! + +---- + +## Docker Terminology +- **Container**: A package of code bundled by Docker that runs as an isolated process from your machine. The package of code can be pretty much anything, a single python file, an API, a full stack web application etc. A container is also referred to as a **containerized application**. + +- **Image**: template with a set of instructions for creating a container. *(most of the times these are pre-built so don't worry too much about making one)* + +Explained in Docker's words [here](https://docs.docker.com/get-started/) \ No newline at end of file From 08c7ec5d224ddfa508e33e58ad1d37a8837feda8 Mon Sep 17 00:00:00 2001 From: Kenneth Tran Date: Sun, 19 Mar 2023 18:56:11 -0400 Subject: [PATCH 060/206] Add link to react testing library doc --- Topics/Development_Process.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index f8e44651e..6db0506be 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -5,6 +5,9 @@ ## Build requirements ### [Requirements.txt](./Development_Process/Build_Requirements/Requirements_txt.md) +## React Testing Library +### [React Testing Library](./Development_Process/React_Testing_Library.md) + ## SOLID PRINCIPLES: SOLID is a mnemonic acronym that represents a set of five very important software development principles which lead to code that is easier to read, maintain, and extend, leading to higher-quality software that is easier to evolve over time. From 002ed6a1ad0d46d6af428db30701dfebf9942659 Mon Sep 17 00:00:00 2001 From: Kenneth Tran Date: Sun, 19 Mar 2023 18:56:26 -0400 Subject: [PATCH 061/206] Create react testing library doc --- .../React_Testing_Library.MD | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Topics/Development_Process/React_Testing_Library.MD diff --git a/Topics/Development_Process/React_Testing_Library.MD b/Topics/Development_Process/React_Testing_Library.MD new file mode 100644 index 000000000..7e4f46de9 --- /dev/null +++ b/Topics/Development_Process/React_Testing_Library.MD @@ -0,0 +1,35 @@ +## Writing tests with React Testing Library + +When writing test suites for React components, it is a good idea to write tests that do not depend on the implementation details of the components (e.g. props, attributes, state, etc.) but rather on what the components are and how they behave. For example, instead of querying an element by its ID attribute, use an accessibility role (e.g. button, list, listitem) or accessibility label. This makes tests less fragile and prone to breaking when small changes in the components are made. + +Additionally, it is a good idea to design tests that mimic the way a user would interact with the app. For example, when writing tests for a Login page/component, to test that login is successful on submission of correct credentials, the test should rougly follow the steps: + +1. Query text fields (username, password, etc.) using textbox role/label +2. Enter inputs into text fields +3. Query login button using button role/label +4. Fire press on enter button +5. Query for successful login message/home screen component/etc + + +## Example with React Native + +The following test is one way to test a successful login action. After pressing the button, the test tries to find a "Logout" button on the screen that should have been rendered. + +``` +it("should redirect to home page when logged in successfully", async () => { + render(); + const emailField = screen.getByLabelText("Email"); + const passwordField = screen.getByLabelText("Password"); + const loginButton = screen.getByRole("button", { name: "Login" }); + + fireEvent.changeText(emailField, 'user@email.com'); + fireEvent.changeText(passwordField, 'user'); + fireEvent.press(loginButton); + + const logoutText = await screen.findByText("Logout"); + expect(logoutText).toBeVisible(); +}); +``` + +## Official documentation (with more examples) +https://testing-library.com/docs/react-testing-library/example-intro \ No newline at end of file From bb4449f2967eccce022aef121e0d7a54346ef46f Mon Sep 17 00:00:00 2001 From: Kenneth Tran <10101154+kennethtran77@users.noreply.github.com> Date: Sun, 19 Mar 2023 18:59:31 -0400 Subject: [PATCH 062/206] Rename React_Testing_Library.MD to React_Testing_Library.md --- .../{React_Testing_Library.MD => React_Testing_Library.md} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Topics/Development_Process/{React_Testing_Library.MD => React_Testing_Library.md} (99%) diff --git a/Topics/Development_Process/React_Testing_Library.MD b/Topics/Development_Process/React_Testing_Library.md similarity index 99% rename from Topics/Development_Process/React_Testing_Library.MD rename to Topics/Development_Process/React_Testing_Library.md index 7e4f46de9..ca45833f5 100644 --- a/Topics/Development_Process/React_Testing_Library.MD +++ b/Topics/Development_Process/React_Testing_Library.md @@ -32,4 +32,4 @@ it("should redirect to home page when logged in successfully", async () => { ``` ## Official documentation (with more examples) -https://testing-library.com/docs/react-testing-library/example-intro \ No newline at end of file +https://testing-library.com/docs/react-testing-library/example-intro From 248369302df7ee92dc8a20d9b3b24e672d354973 Mon Sep 17 00:00:00 2001 From: Saad Afridi Date: Sun, 19 Mar 2023 19:10:16 -0400 Subject: [PATCH 063/206] Docker.md grammar fixes --- Topics/Development_Process/Docker.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Topics/Development_Process/Docker.md b/Topics/Development_Process/Docker.md index a07f5b157..54f598954 100644 --- a/Topics/Development_Process/Docker.md +++ b/Topics/Development_Process/Docker.md @@ -11,13 +11,13 @@ ## Introduction -This article will help readers understand what Docker is, why it is used and how to start using it. Docker is used by developers for many reasons, however, the most common reasons are for building, deploying and sharing an application quickly. Docker packages your application into something that's called a [container](#docker-terminology-1). This [container](#docker-terminology-1) is OS-agnostic meaning that developers on Mac, Windows and Linux can share their code without any worry of conflicts. Here's [Amazon's Intro to Docker](https://aws.amazon.com/docker/#:~:text=Docker%20is%20a%20software%20platform,tools%2C%20code%2C%20and%20runtime.) if you want to learn more. +This article will help readers understand what Docker is, why it is used and provide resources on how to start using it. Docker is used by developers for many reasons, however, the most common reasons are for building, deploying and sharing an application quickly. Docker packages your application into something that's called a [container](#docker-terminology-1). This [container](#docker-terminology-1) is OS-agnostic meaning that developers on Mac, Windows and Linux can share their code without any worry of conflicts. Here's [Amazon's Intro to Docker](https://aws.amazon.com/docker/#:~:text=Docker%20is%20a%20software%20platform,tools%2C%20code%2C%20and%20runtime.) if you want to learn more. ---- ## Installation -To start using Docker you will have to download Docker Engine. This is automatically downloaded alongside Docker Desktop (A Graphical User Interface for Docker). +To start using Docker you will have to download Docker Engine. This is automatically downloaded alongside Docker Desktop (A Graphical User Interface for Docker) which I **strongly** recommend for beginners. [Download Docker Desktop here](https://www.docker.com/get-started/) @@ -29,17 +29,17 @@ For detailed installation instructions based on specific operating systems click Once you've installed Docker, to see it in action you can follow any one of these quick tutorials: -- [Dockerizing a React App](https://mherman.org/blog/dockerizing-a-react-app/) (Simple and quick tutorial for containerizing a React App, contains lots of explanations. I recommend this if you want to quickly get something running plus see what the next steps look like) -- [Dockerize a Flask App](https://www.freecodecamp.org/news/how-to-dockerize-a-flask-app/) (Super detailed step-by-step explanations tutorial for containerizing a flask app. I recommend this if you want to understand *everything* that goes on) +- [Dockerizing a React App](https://mherman.org/blog/dockerizing-a-react-app/) (Simple and quick tutorial for containerizing a React App, contains explanations when needed. I recommend this if you want to quickly get something running plus see what the next steps look like) +- [Dockerize a Flask App](https://www.freecodecamp.org/news/how-to-dockerize-a-flask-app/) (Super detailed step-by-step explanations tutorial for containerizing a flask app. I recommend this if you want to understand the process in detail) - [Docker's official tutorial for containerizing an application](https://docs.docker.com/get-started/02_our_app/) (Can't go wrong with the official tutorial.) ---- ## Next Steps -Congratulations! you have successfully learnt how to Dockerize an app and use it. You have learnt what is a `Dockerfile`, how to create a `Dockerfile`, build a Docker Container Image and start a Docker Container. Now what's next? +Congratulations! you have successfully learnt how to Dockerize an app. In the process, you have learnt what is a `Dockerfile`, how to create a `Dockerfile`, how to build a Docker Container Image and how to start a Docker Container. Now what's next? -Now you might want a React Container to communicate with a containerized Flask API. How do we do this? This is where [Docker Compose](https://docs.docker.com/compose/) comes in. It allows you to define, control multiple containers at once. Your next steps should be defining a `docker-compose.yml` for your project and see if you can get multiple services/containers to successfully communicate. +Now you might want a React Container to communicate with a containerized Flask API. How do we do this? This is where [Docker Compose](https://docs.docker.com/compose/) comes in. It allows you to define, and control multiple containers at once. Your next goal should be defining a `docker-compose.yml` for your project and see if you can get multiple services/containers to successfully communicate. ---- @@ -54,4 +54,4 @@ Here's a [cheat sheet](https://docs.docker.com/get-started/docker_cheatsheet.pdf - **Image**: template with a set of instructions for creating a container. *(most of the times these are pre-built so don't worry too much about making one)* -Explained in Docker's words [here](https://docs.docker.com/get-started/) \ No newline at end of file +Explained in Docker's own words [here](https://docs.docker.com/get-started/) \ No newline at end of file From eb7b2da8a8e5f082216e4ff5708be873a6920624 Mon Sep 17 00:00:00 2001 From: fatimeh <43520497+fatimeh@users.noreply.github.com> Date: Sun, 19 Mar 2023 17:06:41 -0700 Subject: [PATCH 064/206] Create Usability_Heuristics.md Created the basic structure of the usability heuristics information file --- .../User_Experience/Usability_Heuristics.md | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Topics/User_Experience/Usability_Heuristics.md diff --git a/Topics/User_Experience/Usability_Heuristics.md b/Topics/User_Experience/Usability_Heuristics.md new file mode 100644 index 000000000..e33c7f999 --- /dev/null +++ b/Topics/User_Experience/Usability_Heuristics.md @@ -0,0 +1,28 @@ +# **Nielsen's 10 Usability Heuristics** + +## **Introduction** + +Nielsen's 10 usability heuristics are general principles for user interface design, which is an essential part of creating a successful user experience. These heuristics are helpful in providing guidelines that can be used in software engineering for creating various forms of software applications. Adhering to these guidelines will allow software engineers to create applications that are accessible, understandable, and usable. + +## **The Heuristics** + +### **1: Visbility of system status** + +### **2: Match between system and the real world** + +### **3: User control and freedom** + +### **4: Consistency and standards** + +### **5: Error prevention** + +### **6: Recognition rather than recall** + +### **7: Flexibility and efficiency of use** + +### **8: Aesthetic and minimalist design** + +### **9: Help users recognize, diagnose, and recover from errors** + +### **10: Help and documentation** + From dcaf696abca9661e351509f71be571dab16fab2e Mon Sep 17 00:00:00 2001 From: fatimeh <43520497+fatimeh@users.noreply.github.com> Date: Sun, 19 Mar 2023 17:43:03 -0700 Subject: [PATCH 065/206] Update Usability_Heuristics.md Added details for each heuristic --- .../User_Experience/Usability_Heuristics.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Topics/User_Experience/Usability_Heuristics.md b/Topics/User_Experience/Usability_Heuristics.md index e33c7f999..c0699092e 100644 --- a/Topics/User_Experience/Usability_Heuristics.md +++ b/Topics/User_Experience/Usability_Heuristics.md @@ -7,22 +7,53 @@ Nielsen's 10 usability heuristics are general principles for user interface desi ## **The Heuristics** ### **1: Visbility of system status** +The system should always keep users informed about what is going on within the system, through appropriate feedback that is provided within a reasonable time. Communication between the user and the system allows the user to be aware of what is happening, and make decisions based on this knowledge. + +**Example:** An application provides a loading screen or a progress bar while the user waits for an action to complete. ### **2: Match between system and the real world** +The system should use words, phrases, and concepts that are familiar to the user. Avoid using technical or system-oriented terms, and use real-world conventions that provide information in a natural and logical order that will make sense to the users of the system. If your application relates to things in the real world, ensure that the system accurately matches them. + +**Example:** An e-reading application that allows users to "highlight" words and phrases using a bright colour. ### **3: User control and freedom** +Allow users to have an "emergency exit" for when they select certain system functions by mistake and want to return to their original state. Support options for undo and redo so users have more freedom over how they interact with the system. Users will change their minds or make mistakes, and will need a way to go back to the previous state. + +**Example:** An application where a user submits a form, if they change their mind or made a mistake, they can undo the submission. ### **4: Consistency and standards** +Users should not have to guess or assume if different words, situations, or actions mean the same thing. Follow design and platform conventions. + +**Example:** An application consistently uses an "X" symbol to represent an exit, instead of using a undo button or a back button in some areas. ### **5: Error prevention** +Design the system to avoid problems from occurring in the first place by eliminating error-prone conditions or offering a solution if an error does occur. If the user makes a mistake, give them the opportunity to confirm if they would like to continue before committing to the action. + +**Example:** When a user clicks exit on an application, a prompt asking "Are you sure you want to exit?" will pop up. ### **6: Recognition rather than recall** +Minimize the user having to memorize and intake a lot of information by making objects, actions, and options clearly visible. The user should not have to remember how to get from one point of the application to another. Instructions for how to use the system should be easily accessible and visible as well if appropriate. + +**Example:** Having a navigation bar on a web application will allow users to go between different tabs without remembering how to get to them. ### **7: Flexibility and efficiency of use** +Provide accelerators or shortcuts for experienced users so they can complete common interactions in a more efficient manner. This allows both experienced and inexperienced users to utilize the system to their own personal abilities and preferences. This will allow expert users to take advantage of the feature, and newer users can ignore it. + +**Example:** Having a keyboard shortcut for a common interaction on your website. ### **8: Aesthetic and minimalist design** +Avoid providing unnecessary or irrelevant information to users. Keep dialogue concise and relevant to ensure that users are able to focus on the important aspects of the system and they are not overloaded with information that they don't need. + +**Example:** Having a simple introduction page for the website, that can be expanded upon when the "More Details" button is clicked. ### **9: Help users recognize, diagnose, and recover from errors** +Provide accurate and straightforward error messages to users so they are able to understand and potentially fix the error. Ensure that error messages are written in simple terms, they clearly indicate the issue, and suggest potential fixes. + +**Example:** When the user incorrectly enters their email to log into a website, it gives an error message saying "There is no account with this email associated. Please carefully re-enter your information or sign up." ### **10: Help and documentation** +It is better if a system can be easily used without documentation, but it may be necessary. In the case that your system is complicated and needs instructions, provide clear and concise instructions without any jargon that can be easily understood by new users. Ensure that the help documentation is easily found, searchable, and lists concrete steps. + +**Example:** A web application has a "help" tab with detailed instructions and documentation. + From 8047241a8fafb1b3e08c932dc6adc620059a6013 Mon Sep 17 00:00:00 2001 From: fatimeh <43520497+fatimeh@users.noreply.github.com> Date: Sun, 19 Mar 2023 17:47:55 -0700 Subject: [PATCH 066/206] Update Usability_Heuristics.md added additional resources section --- Topics/User_Experience/Usability_Heuristics.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Topics/User_Experience/Usability_Heuristics.md b/Topics/User_Experience/Usability_Heuristics.md index c0699092e..9a9b799af 100644 --- a/Topics/User_Experience/Usability_Heuristics.md +++ b/Topics/User_Experience/Usability_Heuristics.md @@ -56,4 +56,13 @@ It is better if a system can be easily used without documentation, but it may be **Example:** A web application has a "help" tab with detailed instructions and documentation. +## **Additional Resources** + +Heuristics Applied to Videogames: https://www.nngroup.com/articles/usability-heuristics-applied-video-games/ + +Heuristics for Web Applications: http://designingwebinterfaces.com/6-tips-for-a-great-flex-ux-part-5 + +Heuristics Applied to Everyday Life: https://www.zenhaiku.com/archives/usability_applied_to_life.html + + From d78e39b1bc6a8e2b33c60cb7b6d71813a68b1d10 Mon Sep 17 00:00:00 2001 From: fatimeh <43520497+fatimeh@users.noreply.github.com> Date: Sun, 19 Mar 2023 17:51:21 -0700 Subject: [PATCH 067/206] Update User_Experience.md Added usability heuristics link --- Topics/User_Experience.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 657c85853..8e335e5fa 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -21,6 +21,8 @@ ___Established Norms___ ___Color Theory___ - [Colors Influence Choice](https://usabilitygeek.com/colour-user-experience-psychology/#:~:text=Colour%20plays%20a%20crucial%20role,and%20identified%20with%20your%20industry.): Users are shown certain colors to enforce actions. For example, red is commonly linked to aggressive or bad emotions and as such can be used as a cancel to dissuade people from refunding items. +## Nielsen's 10 Usability Heuristics +###[Usability Heuristics](./User_Experience/Usability_Heuristics.md) ### Helpful Courses From 92eaac42d42002b65d50c37333e2457ca4d84ab5 Mon Sep 17 00:00:00 2001 From: fatimeh <43520497+fatimeh@users.noreply.github.com> Date: Sun, 19 Mar 2023 17:51:36 -0700 Subject: [PATCH 068/206] Update User_Experience.md --- Topics/User_Experience.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 8e335e5fa..68cdc3ab2 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -22,7 +22,7 @@ ___Color Theory___ - [Colors Influence Choice](https://usabilitygeek.com/colour-user-experience-psychology/#:~:text=Colour%20plays%20a%20crucial%20role,and%20identified%20with%20your%20industry.): Users are shown certain colors to enforce actions. For example, red is commonly linked to aggressive or bad emotions and as such can be used as a cancel to dissuade people from refunding items. ## Nielsen's 10 Usability Heuristics -###[Usability Heuristics](./User_Experience/Usability_Heuristics.md) +### [Usability Heuristics](./User_Experience/Usability_Heuristics.md) ### Helpful Courses From 1409e150037112ff7eed1336edf79c9b447d6c3d Mon Sep 17 00:00:00 2001 From: ed29leung Date: Sun, 19 Mar 2023 22:20:06 -0400 Subject: [PATCH 069/206] Added draft CSS section to Tech_Stacks.md --- Topics/Tech_Stacks.md | 47 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index acf455d04..741f7edb9 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,3 +1,50 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) + +## Tech Stacks + +### CSS (Cascading Style Sheets) + +CSS, or cascding style sheets, are used to add styles, like spacing and layout, to HTML web pages. While CSS can be done through in-line styles, it is common convention to have a style sheet for the webpage, or the style tag. + +CSS rules consist of a selector and a declaration block, where the selector points to the HTML element or set of elements you want to style and the declaration denotes the style. + + +image source: https://www.w3schools.com/css/css_syntax.asp + +The link below provides interactive examples and exercises for basic CSS. + +W3Schools link: https://www.w3schools.com/css/ + +#### CSS Cascade + +Because of the existence of ids and classes in selectors, often multiple CSS declaratiosn can apply to an HTML element, and they can conflict with each other. The browser needs to resolve these conflicts in order to display the final style onto the website, and this is done through CSS Cascade, which determines which declarations take precedence over others + +The folowing resource gives a detailed breakdown of CSS Cascade and its tiers. +https://wattenberger.com/blog/css-cascade + +#### CSS Layout: + +The position property in CSS determines the way an HTML element is positioned on a webpage. FOr example, it can determine whether the position of an HTML element is static and unchanging or relative to the position of other elements. The possition property has 5 possible values, which are described in the link below. +https://www.w3schools.com/css/css_positioning.asp + +Flexbox, or the flexible box layout module, is an alternative to using positioning that makes it easier for a webpage to have a responsive layout, meaning that the elements within the flexbox can more easily respond to varying screen or webpage sizes. The positions of elements in the flexbox are relative to other items. The following gaame below is designed to teach flexbox in an intuitive and fun way. + +https://flexboxfroggy.com/ + +CSS grid is also a positioning alternative that provides a grid layout module, in order to display HTML elements within a row and column format. It consists of a parent element and child elements. The link provides a game that can teach CSS grid basics in a visual, interactive and intuitive way. + +https://cssgridgarden.com/ + +#### CSS frameworks + +Native CSS can be difficult to use, so CSS frameworks have been created so developers can use pre-made styles in order to create good looking website components, such as navbars and buttons etc. in an easier and faster way without needing to know the semantics of CSS. Two popular CSS frameworks include Tailwind and Bootstrap. + +Bootstrap CSS: https://getbootstrap.com/docs/3.4/css/ + +React-Bootstrap: https://react-bootstrap.github.io/ (Bootstrap CSS framework specifically for use on react apps) + +Tailwind CSS: https://tailwindcss.com/ + +Generally, bootstrap is easier to use and will produce a good looking website in a shorter amount of time, while Tailwind CSS is more customizable and can create more unique looking elements, but requires more of a time investment and is a bit harder to learn and work with compared to bootstrap. From 4e9342915c11ae2b2fc6ab7651bbc00d23bf1b6c Mon Sep 17 00:00:00 2001 From: ed29leung Date: Sun, 19 Mar 2023 22:22:18 -0400 Subject: [PATCH 070/206] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d4698e56f..e40bde5a7 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Following files are present in this directory. You may contribute to any of thes Potential Topics-- - Tech stacks + 1. CSS (Cascading Style Sheets) - Software Tools 1. Git 1. Git Workflows From f4df5b19796a2e0a070d7310423fcb2fcc3a8e0b Mon Sep 17 00:00:00 2001 From: Edward <81656509+ed29leung@users.noreply.github.com> Date: Sun, 19 Mar 2023 22:26:03 -0400 Subject: [PATCH 071/206] Update Tech_Stacks.md Add Image to CSS section --- Topics/Tech_Stacks.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 741f7edb9..b80af576a 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -10,8 +10,10 @@ CSS, or cascding style sheets, are used to add styles, like spacing and layout, CSS rules consist of a selector and a declaration block, where the selector points to the HTML element or set of elements you want to style and the declaration denotes the style. +Capture -image source: https://www.w3schools.com/css/css_syntax.asp + +Image source: https://www.w3schools.com/css/css_syntax.asp The link below provides interactive examples and exercises for basic CSS. From ac81d5ae8e8f673148e7d685fca8820851fe36f8 Mon Sep 17 00:00:00 2001 From: sarihammad <63919507+sarihammad@users.noreply.github.com> Date: Sun, 19 Mar 2023 22:35:17 -0400 Subject: [PATCH 072/206] Create Django_Rest.md --- Topics/Tech_Stacks/Django_Rest.md | 120 ++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 Topics/Tech_Stacks/Django_Rest.md diff --git a/Topics/Tech_Stacks/Django_Rest.md b/Topics/Tech_Stacks/Django_Rest.md new file mode 100644 index 000000000..33b6f0933 --- /dev/null +++ b/Topics/Tech_Stacks/Django_Rest.md @@ -0,0 +1,120 @@ +# Building RESTful APIs using Django Rest Framework + +### Prerequisites + +Before learning Django Rest Framework, make sure that you have a working knowledge of the following: + + - [Python](https://www.python.org/): High level general purpose programming language. + - [Django](https://www.djangoproject.com/): Web framework for Python. + +### What Is Django Rest Framework? +Django Rest Framework is a popular library for building RESTful APIs with Django. It provides powerful tools for building APIs, including serialization, authentication, and permissions. You can easily create APIs that support multiple formats like JSON and XML that can be consumed by a variety of client applications. To demonstrate the power of Django Rest Framework, we will create a simple API. + +### Set-Up + + We first set up the virtual environment and activate it using ```python3 -m venv myenv ``` and ```source myenv/bin/activate``` respectively in the project directory. + + We now install Django and Django Rest Framework using the command ```pip install django djangorestframework```. + + Once installed, we can start a new Django project by running: ```django-admin startproject ```. This generates the default Django folder structure including several files. + + we may now create a new Django app by running: ```python manage.py startapp ```. + + The project structure should be similar to the following: + + ``` + project-name/ +│ +├── app-name/ +│ ├── __init__.py +│ ├── admin.py +│ ├── apps.py +│ ├── models.py +│ ├── serializers.py +│ ├── tests.py +│ ├── urls.py +│ └── views.py +│ +├── project-name/ +│ ├── __init__.py +│ ├── settings.py +│ ├── urls.py +│ └── wsgi.py +│ +└── manage.py + ``` + + In order to add Django Rest Framework to your project, open the settings.py file and add 'rest_framework' to the INSTALLED_APPS list: ```INSTALLED_APPS = [..., 'rest_framework']``` + + + ### How it Works + + + After installing and configuring Django Rest Framework, we may now create a simple API. We first create a new model to represent our API resource. To illustrate the use of Django Rest Framework, we'll create a simple model for a todo item with two fields: its title as a CharField, i.e., a string and its complete as a BooleanField, i.e., a boolean value. We first create a new file called models.py in the API app folder by adding the following code: + +``` {python} +from django.db import models + +class TodoItem(models.Model): + title = models.CharField(max_length=200) + completed = models.BooleanField(default=False) +``` + +Next, we'll create a serializer to convert our model instances to JSON. We now create a new file called serializers.py in the app API folder and add the following code: + +``` {python} +from rest_framework import serializers +from .models import TodoItem + +class TodoItemSerializer(serializers.ModelSerializer): + class Meta: + model = TodoItem + fields = ('id', 'title', 'completed') +``` + +Next, we'll create a view to handle incoming HTTP requests (GET, POST, PUT, PATCH and DELETE). We create a new file called views.py in the API app folder and add the following code: + +``` {python} +from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIView +from .models import TodoItem +from .serializers import TodoItemSerializer + +class TodoItemList(ListCreateAPIView): + queryset = TodoItem.objects.all() + serializer_class = TodoItemSerializer + +class TodoItemDetail(RetrieveUpdateDestroyAPIView): + queryset = TodoItem.objects.all() + serializer_class = TodoItemSerializer + +``` + +Finally, we can add a URL configuration for our API. We create a new file called urls.py in the API app folder and add the following code: + +``` {python} +from django.urls import path +from .views import TodoItemList, TodoItemDetail + +urlpatterns = [ + path('todos/', TodoItemList.as_view()), + path('todos//', TodoItemDetail.as_view()), +] +``` + +All in all, we have now built a simple API with the ability to list, create, update and delete todo list items. One can test the API by starting the Django development server using ``` python manage. py runserver ``` and visiting http://localhost:8000/todos/ in a web browser. + +### Extra Resources + +Here are some official documentation and helpful tutorials for getting familiar with Django Rest Framework + +#### Documentation +- [Django Rest](https://www.django-rest-framework.org/) +- [Django Rest API Guide](https://www.django-rest-framework.org/api-guide/) +- [Django Rest Views](https://www.django-rest-framework.org/api-guide/generic-views/) +- [Django Rest Testing](https://www.django-rest-framework.org/api-guide/testing/) + +#### Tutorials +- [Django for Beginners](https://www.youtube.com/watch?v=F5mRW0jo-U4) +- [Learn Django](https://learndjango.com/tutorials/official-django-rest-framework-tutorial-beginners) +- [Real Python](https://realpython.com/django-rest-framework-quick-start) +- [Youtube (Corey Schafer)](https://www.youtube.com/watch?v=Uyei2iDA4Hs&list=PL-osiE80TeTtoQCKZ03TU5fNfx2UY6U4p) From 55b7949a6fb07a992c3a43e50bfe4ed97ebeb7f6 Mon Sep 17 00:00:00 2001 From: sarihammad <63919507+sarihammad@users.noreply.github.com> Date: Sun, 19 Mar 2023 22:39:23 -0400 Subject: [PATCH 073/206] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d4698e56f..612028980 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,8 @@ Following files are present in this directory. You may contribute to any of thes Potential Topics-- - Tech stacks + 1. Django + 1. Django Rest Framework - Software Tools 1. Git 1. Git Workflows From f4d3cd77e5cdcfb02fc8feb3f16f68783f20942e Mon Sep 17 00:00:00 2001 From: Tomas-Ha <90397885+Tomas-Ha@users.noreply.github.com> Date: Sun, 19 Mar 2023 23:20:32 -0400 Subject: [PATCH 074/206] Fix wrong link and continous --- Topics/Software_Tools/Git/Automated_Deployment.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Software_Tools/Git/Automated_Deployment.md b/Topics/Software_Tools/Git/Automated_Deployment.md index 9d57b510b..d45f42988 100644 --- a/Topics/Software_Tools/Git/Automated_Deployment.md +++ b/Topics/Software_Tools/Git/Automated_Deployment.md @@ -33,7 +33,7 @@

To learn more about CI/CD, please see the following article from Atlassian, an established software company from Australia: https://www.atlassian.com/continuous-delivery/principles/continuous-integration-vs-delivery-vs-deployment - - To learn more about the difference between continous delivery and continuous deployment, see the following article: https://docs.github.com/en/actions/deployment/about-deployments/deploying-with-github-actions + - To learn more about the difference between continuous delivery and continuous deployment, see the following article: https://www.puppet.com/blog/continuous-delivery-vs-deployment ______ From 642da3df021a9e579ecad2eedb67931b028d01a2 Mon Sep 17 00:00:00 2001 From: Tomas-Ha <90397885+Tomas-Ha@users.noreply.github.com> Date: Sun, 19 Mar 2023 23:51:34 -0400 Subject: [PATCH 075/206] Add final fixes to content --- .../Git/Automated_Deployment.md | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/Topics/Software_Tools/Git/Automated_Deployment.md b/Topics/Software_Tools/Git/Automated_Deployment.md index d45f42988..831177117 100644 --- a/Topics/Software_Tools/Git/Automated_Deployment.md +++ b/Topics/Software_Tools/Git/Automated_Deployment.md @@ -39,14 +39,31 @@ ______ ### Examples of Common Automated Deployment Software -       Atlassian recommends using Bitbucket Pipelines (https://bitbucket.org/product/features/pipelines), which is their "CI/CD tool that's integrated into Bitbucket Cloud," their version of GitHub (https://bitbucket.org/product/). BitBucket provides extended CI/CD features that allow you to integrate with Jira, a task management software by Atlassian. However, you can implement CI/CD fairly easily with GitHub Actions. -
-
+       Atlassian recommends using Bitbucket Pipelines (https://bitbucket.org/product/features/pipelines), which is their "CI/CD tool that's integrated into Bitbucket Cloud," their version of GitHub (https://bitbucket.org/product/). BitBucket provides extended CI/CD features that allow you to integrate with Jira, a task management software by Atlassian. + +       CircleCI (https://circleci.com) is another great CI/CD software which offers integration with BitBucket, as well as GitHub and GitHub Enterprise. It is used by companies such as Google, Pelaton, and Asana. It offers quick debugging, easy testing, and is highly customizeable. It also supports a wide variety of OSs, such as macOS, Windows, Solaris, and more. Unfortunately, it requires a subscription to use extensively, and it runs locally, not on a cloud server. + +       GitLab (https://about.gitlab.com) is a great choice as well, as it offers a web-based Git repository manager with features such as issue tracking, analytics, and a Wiki. It also "provides container scanning, static application security testing (SAST), dynamic application security testing (DAST), and dependency scanning to deliver secure applications along with license compliance, " as well as native CI/CD features such as automated builds, integration, and delivery. Unfortunately, it only supports Linux distributions for its OS selection, and it, too, requires a subscription. + +       For an open-source alternative, consider using Jenkins (https://www.jenkins.io). It supports Windows, Linux, macOS, and Unix-like OSs, and it is completely free. It has a simple user interface, easy installation, and supports distributed builds. Furthermore, it provides easy environment configuration, and it has a huge pool of user plugins which makes Jenkins very extensible. +
+
+To learn more about these CI/CD tools and others, please see the following articles: +- Best 14 CI/CD tools from Katalon (referenced in this section): https://katalon.com/resources-center/blog/ci-cd-tools +- Top 14 CI/CD tools for DevOps from BrowserStack: https://www.browserstack.com/guide/top-ci-cd-tools + +
+Overall, the service you choose depends on the application you are building, your teams culture, and the features you need. However, you can also implement CI/CD fairly easily with GitHub Actions. This will be expanded upon in the following section. + +____ + ### How to Set Up Automated Deployment with GitHub Actions +       Here is an example of a workflow that automates deployment and breaks down the steps: https://techblog.geekyants.com/github-actions-for-automating-builds-for-your-app +        In order to set up automated deployment, you need to know the following: when do you want deployments to occur (on pull request, on push, on workflow dispatch, etc), where do you want the deployment to be (staging or production, continuous delivery vs continuous deployment), and what are the requirements for your environment (what packages do you need to set install or software do you need to set up to deploy). -       Once you know these things, you can start setting up your GitHub Action using a yaml file. Start with the `on:` command and put all the situations where you want deployment to occur (and on what branches). Then, under `jobs:`, create a `deployment:` section and set the environment, what os it runs on, and the steps necessary to deploy. +       Once you know these things, you can start setting up your GitHub Action using a yaml file. Start with the `on:` command and put all the situations where you want deployment to occur (and on what branches). Then, under `jobs:`, create a `deployment:` section and set the environment, what operating system it runs on, and the steps necessary to deploy.       For example, for Heroku, you need to specify the Heroku key (this is the login key) and the application you are deploying to. Meanwhile, for Expo, you may need to setup node, EAS (Expo Application Services), sign into EAS, install yarn dependencies, and then use EAS to deploy. An alternate method you could use is writing a shell script that performs these actions and simply having GitHub run this shell script with a GitHub Action.
@@ -55,7 +72,7 @@ ______ - Deploying with GitHub Actions: - https://docs.github.com/en/actions/deployment/about-deployments/deploying-with-github-actions - - https://techblog.geekyants.com/github-actions-for-automating-builds-for-your-app + - https://techblog.geekyants.com/github-actions-for-automating-builds-for-your-app (This is the same as the one at the start of this section) - Deployment to Expo: - https://github.com/marketplace/actions/expo-github-action From d722e758a290b761bba307855d7d59af8689f4e8 Mon Sep 17 00:00:00 2001 From: Tomas-Ha <90397885+Tomas-Ha@users.noreply.github.com> Date: Mon, 20 Mar 2023 00:04:48 -0400 Subject: [PATCH 076/206] Add table of contents --- .../Software_Tools/Git/Automated_Deployment.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Topics/Software_Tools/Git/Automated_Deployment.md b/Topics/Software_Tools/Git/Automated_Deployment.md index 831177117..e0473eaaa 100644 --- a/Topics/Software_Tools/Git/Automated_Deployment.md +++ b/Topics/Software_Tools/Git/Automated_Deployment.md @@ -1,8 +1,13 @@ # Resources for GitHub Actions Automated Deployment - - - ### What is Automated Deployment? Why is it Important? +## Table of Contents: + - ### [What is Automated Deployment](#what-is-automated-deployment-why-is-it-important) + - ### [How is Automated Deployment Used](#how-is-automated-deployment-used) + - ### [Software Examples](#examples-of-common-automated-deployment-cicd-software) + - ### [How to Setup Automated Deployment with GitHub Actions](#how-to-set-up-automated-deployment-with-github-actions) +_____ + + ## What is Automated Deployment? Why is it Important?        According to the Google Cloud Automation Center, Automated Deployment is "what enables you to deploy your software to testing and production environments with the push of a button." Automated deployment is a set of scripts that perform the following actions: prepare the target environment (installing/configuring any software needed), deploying the build packages created by continuous integration (this will be discussed more in the next part), run deployment tasks such as migrating databases, perform tests on the deployment to ensure it is functioning and accessable. @@ -14,7 +19,7 @@ ______ - ### How is Automated Deployment Used + ## How is Automated Deployment Used       Automated Deplyment requires CI/CD to be used. CI stands for continuous integration, and CD stands for continuous delivery _or_ continuous deployment (note, there is a difference between these two). Continuous Integration ensures that the new code is ready to be deployed, and continuous delivery or deployment uses automated deployment to deploy to either staging/testing environments or a production environment, respectively. @@ -37,7 +42,7 @@ To learn more about CI/CD, please see the following article from Atlassian, an e ______ - ### Examples of Common Automated Deployment Software + ## Examples of Common Automated Deployment (CI/CD) Software        Atlassian recommends using Bitbucket Pipelines (https://bitbucket.org/product/features/pipelines), which is their "CI/CD tool that's integrated into Bitbucket Cloud," their version of GitHub (https://bitbucket.org/product/). BitBucket provides extended CI/CD features that allow you to integrate with Jira, a task management software by Atlassian. @@ -57,7 +62,7 @@ Overall, the service you choose depends on the application you are building, you ____ - ### How to Set Up Automated Deployment with GitHub Actions + ## How to Set Up Automated Deployment with GitHub Actions        Here is an example of a workflow that automates deployment and breaks down the steps: https://techblog.geekyants.com/github-actions-for-automating-builds-for-your-app From 6b51a7071e59564d13919ad2d443cad70a0f576a Mon Sep 17 00:00:00 2001 From: Tomas-Ha <90397885+Tomas-Ha@users.noreply.github.com> Date: Mon, 20 Mar 2023 00:10:30 -0400 Subject: [PATCH 077/206] Move automated_deployment out of Git folder --- Topics/Software_Tools/{Git => }/Automated_Deployment.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Topics/Software_Tools/{Git => }/Automated_Deployment.md (100%) diff --git a/Topics/Software_Tools/Git/Automated_Deployment.md b/Topics/Software_Tools/Automated_Deployment.md similarity index 100% rename from Topics/Software_Tools/Git/Automated_Deployment.md rename to Topics/Software_Tools/Automated_Deployment.md From 4b120c7a307f6f60d4c18fd0fb10dd3aa8a1c53c Mon Sep 17 00:00:00 2001 From: Jonathan Date: Mon, 20 Mar 2023 08:39:58 -0400 Subject: [PATCH 078/206] Initial outline and topic breakdown --- Topics/Product_Management.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index 4089ba741..dbbc69f00 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -1 +1,13 @@ ## Resources for Product Management + +## User Stories + +### Introduction + +### Structure + +### Acceptance Criteria + +### Story Points + +### Additional Details \ No newline at end of file From a5f9cdd131ed102e2115c867d269f23cf88bac5e Mon Sep 17 00:00:00 2001 From: Corinne <85494068+CorinneLS@users.noreply.github.com> Date: Mon, 20 Mar 2023 09:21:11 -0400 Subject: [PATCH 079/206] Create salesforce_api.md --- Topics/Tech_Stacks/salesforce_api.md | 43 ++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Topics/Tech_Stacks/salesforce_api.md diff --git a/Topics/Tech_Stacks/salesforce_api.md b/Topics/Tech_Stacks/salesforce_api.md new file mode 100644 index 000000000..45d95ac50 --- /dev/null +++ b/Topics/Tech_Stacks/salesforce_api.md @@ -0,0 +1,43 @@ +# Access to Salesforce API +[Setup authentication documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/quickstart_oauth.htm) + + +## Getting authentication token +After logging into salesforce, at the top right corner, go to: +- setup > apps > app manager +- look for the name of the app you want to connect with +- click on the arrow down > view +- under **'API (Enable Oath settings)**, click on **'manage consumer details'** to get the consumer key and consumer secret + + + + + + + +
+
+ +--- +## Salesforce Objects and fields +Note: In the database language, salesforce objects refer to tables/entity sets and fields refer to the attributes of the table/entity set.

+After logging into salesforce, at the top right corner, go to: +- setup > object manager
+There will be a list of objects and their respective API name (name of the entity set) +- click on an object > **"Fields & Relationships"** tab to get its fields +
+
+ +--- +## Querying data from Salesforce + +After logging into salesforce, at the top right corner, go to **Developer console** to test queries in the **query editor**.
+The query editor uses SOQL - [Salesforce Object Query Language](https://developer.salesforce.com/docs/atlas.en-us.240.0.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_sosl_intro.htm) + + + +### Image References: +- https://blog.coupler.io/wp-content/uploads/2022/02/1-salesforce-api-setup.png +- https://lh4.googleusercontent.com/qs95ISk2oMgxsg2jRGc34XGL7XlCigtrhLlKQHFiFnbHs-R87LPZn7zWPTDxAQkCogPxZtVeXe1quPx3gVl9MRsDZfcHVKZAv9sTUbIHsBJPzpAAUcnr6FFjP5crziQBhzQFTJEp +- https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNRkGAZUW-jBmFZWukbBZbfayPEr2e-9uyGEY5GUOeeD22EXYR8PmxtiAHQnJgkwCaBmgpqFwUZKj4rGxPsEoN5hZCiN7J7rGr2AWqAWZVfJ5Okld5Cfnc3ZHewpmH61Lz9hqd4Pb12y1dPLVmeTxJm17PIM003-S9NQqAVcjQokKQmGVMjYOyMVbK/s993/Connected%20App%20Detail%20Page.jpg +- https://www.marksgroup.net/wp-content/uploads/2019/05/console1.png From f317dccb02889760854b1dd046953165aff2a237 Mon Sep 17 00:00:00 2001 From: Corinne <85494068+CorinneLS@users.noreply.github.com> Date: Mon, 20 Mar 2023 09:24:29 -0400 Subject: [PATCH 080/206] Added link to Teck_Stacks/salesforce_api.md --- Topics/Tech_Stacks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index acf455d04..0afb54774 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,3 +1,4 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) +### [How to access and use salesforce API](./Tech_Stacks/salesforce_api.md) From 5e899328e464c2930b0e3ed7a1ef0c0a06efd431 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Mon, 20 Mar 2023 09:28:58 -0400 Subject: [PATCH 081/206] Initial draft of the introduction section --- Topics/Product_Management.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index dbbc69f00..8883d47a2 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -3,9 +3,17 @@ ## User Stories ### Introduction +A user story can be described as an information explanation of a new feature or task in a software project. The purpose of a user story is to gauge how the particular feature will provide value from the perspective of the user. Therefore, user stories exist to organize and structure a large set of tasks in user-centric manner. + + ### Structure + + ### Acceptance Criteria ### Story Points From 2245a215b891398110862aa5a0f8ae6501bd7b77 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Mon, 20 Mar 2023 09:55:27 -0400 Subject: [PATCH 082/206] Initial draft for sections 2 and 3 --- Topics/Product_Management.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index 8883d47a2..4ff4cc774 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -3,19 +3,21 @@ ## User Stories ### Introduction -A user story can be described as an information explanation of a new feature or task in a software project. The purpose of a user story is to gauge how the particular feature will provide value from the perspective of the user. Therefore, user stories exist to organize and structure a large set of tasks in user-centric manner. +A user story can be described as an information explanation of a new feature or task in a software project. The purpose of a user story is to gauge how the particular feature will provide value from the perspective of the user. User stories therefore exist to organize and structure a large set of tasks in user-centric manner. ### Structure - +``` ### Acceptance Criteria +Acceptance criteria refers to a list of requirements that must be completed for a user story to be closed. This allows teams to avoid unexpected results, and allows all stakeholders to be satisfied with the end product. + ### Story Points ### Additional Details \ No newline at end of file From 02ab6225b55199b295ce7b94d7cdf98e60a41a6e Mon Sep 17 00:00:00 2001 From: Ginevs <49313437+Ginevs@users.noreply.github.com> Date: Mon, 20 Mar 2023 13:22:44 -0400 Subject: [PATCH 083/206] Added another example to the "Structure" section --- Topics/Product_Management.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index 4ff4cc774..692ebb402 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -3,20 +3,23 @@ ## User Stories ### Introduction -A user story can be described as an information explanation of a new feature or task in a software project. The purpose of a user story is to gauge how the particular feature will provide value from the perspective of the user. User stories therefore exist to organize and structure a large set of tasks in user-centric manner. - - +A user story can be described as an informal explanation of a new feature or task in a software project. The purpose of a user story is to gauge how the particular feature will provide value from the perspective of the user. User stories generally exist in a set amongst other user stories, and allow teams to organize and structure a large set of tasks in user-centric manner. ### Structure -The majority of user stories are written to follow a general pattern. Outlined below is a common example of that pattern: +The majority of user stories are written to follow a general outline or pattern. The most commonly used format is the [Connextra Template](https://www.mountaingoatsoftware.com/agile/user-stories), which is outlined below: +``` +As a , I want , so that +``` +An alternative structure which makes use of W5 can be found below: ``` -As a I can , so that +As , I want because ``` +There is no strict benefit to using one format over the other. There are many other popular formats, that each bring different value to different teams. ### Acceptance Criteria -Acceptance criteria refers to a list of requirements that must be completed for a user story to be closed. This allows teams to avoid unexpected results, and allows all stakeholders to be satisfied with the end product. +Acceptance criteria refers to a list of requirements that must be acomplished for a user story to be completed and closed. The purpose of acceptance criteria is so user stories can be fully scoped, so that developers understand the expected output and so that all stakeholders to be satisfied. ### Story Points From 7a9aad61258d0d3f38ba347efa658cf67e65981d Mon Sep 17 00:00:00 2001 From: Ginevs <49313437+Ginevs@users.noreply.github.com> Date: Mon, 20 Mar 2023 13:58:30 -0400 Subject: [PATCH 084/206] Rough draft of "Acceptance Criteria" section --- Topics/Product_Management.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index 692ebb402..b130a6520 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -3,6 +3,7 @@ ## User Stories ### Introduction + A user story can be described as an informal explanation of a new feature or task in a software project. The purpose of a user story is to gauge how the particular feature will provide value from the perspective of the user. User stories generally exist in a set amongst other user stories, and allow teams to organize and structure a large set of tasks in user-centric manner. ### Structure @@ -19,7 +20,11 @@ There is no strict benefit to using one format over the other. There are many ot ### Acceptance Criteria -Acceptance criteria refers to a list of requirements that must be acomplished for a user story to be completed and closed. The purpose of acceptance criteria is so user stories can be fully scoped, so that developers understand the expected output and so that all stakeholders to be satisfied. +Acceptance criteria refers to a list of requirements that must be acomplished for a user story to be completed and closed. The purpose of acceptance criteria is to fully scope a user stories. This is important so that developers understand the expected output and so that all stakeholders to be satisfied. + +The general formatting of acceptance criteria is not as strict as the formatting of the story itself. Firstly, all acceptance criteria should be clear, concise and readable. Beyond that, acceptance criteria should always be testable. This means that there are specific "yes/no" scenarious that can verify if the criteria has been impelmented. Lastly, acceptance criteria should provide user prespective. + +Beyond the conditions that are explicitly outlined in the acceptance criteria, there is an additionally layer of rules that must be met before a story can be completed. These conditions are generally refered to as the "Definition of Done", and are created and aggreed upon by an entire team before being used. This acts as a general set of standards that act as quality control, so that they are met by each story before it can be considered shippable. ### Story Points From 222c9fc20b7696e35ebb3d8b6f4215a42d97df37 Mon Sep 17 00:00:00 2001 From: Vim0315 <73090801+Vim0315@users.noreply.github.com> Date: Mon, 20 Mar 2023 14:56:02 -0400 Subject: [PATCH 085/206] Fixed formatting issues Add paragraphs and titles to resolve viewing issues, as mentioned in the moderator's comments. --- Topics/Task_Management_Software.md | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/Topics/Task_Management_Software.md b/Topics/Task_Management_Software.md index cf3fd0067..6ebacbd62 100644 --- a/Topics/Task_Management_Software.md +++ b/Topics/Task_Management_Software.md @@ -16,17 +16,19 @@ Written Article On Jira Workflows - https://support.atlassian.com/jira-work-mana # Examples of Modern Task Management Methodologies -- Agile -Agile is a task management methodology that is widely used in modern software development. It emphasizes flexibility, collaboration, and continuous improvement. Agile methodology focuses on delivering software features in small increments, which are known as sprints or iterations. At the start of each sprint, the team identifies the tasks that need to be completed and assigns them to team members. The team then works together to complete the tasks within the sprint period. The detailed executions may differ in different teams and projects, but there are several key principles to follow: - 1.Prioritizing tasks based on customer value: Agile task management focuses on delivering the highest value features first, rather than trying to complete all tasks at once. - 2.Collaboration and communication: Agile emphasizes close collaboration between team members, with frequent meetings and communication to ensure that everyone is on the same page. - 3.Iterative development: Agile tasks are completed in small iterations(sprints), allowing for continuous feedback and improvement. - 4.Flexibility: Agile recognizes that requirements and priorities are subject to be changed, and allows for adjustments throughout the project. -The number of teams practicing agile in organizations has grown significantly in the past years, and agile knowledge has become a factor of consideration in recruiting processes. -To learn more about Agile in text: https://www.tutorialspoint.com/agile/index.htm -To learn more about Agile in video: https://www.youtube.com/watch?v=wmJfx7zAfQI&feature=youtu.be - -- Waterfall -Waterfall is a traditional project management methodology that involves a linear, sequential approach to task management. In this approach, tasks are completed in a specific order, with each task depending on the completion of the previous task. While it is very useful for projects with well-defined requirements and a clear plan, it is much less flexible than Agile, and is also less popular in modern software development. -To learn more about Waterfall in text:https://business.adobe.com/blog/basics/waterfall -To learn more about Waterfall in video:https://www.youtube.com/watch?v=cYzuzwQEZCg +

Agile

+

Agile is a task management methodology that is widely used in modern software development. It emphasizes flexibility, collaboration, and continuous improvement. Agile methodology focuses on delivering software features in small increments, which are known as sprints or iterations. At the start of each sprint, the team identifies the tasks that need to be completed and assigns them to team members. The team then works together to complete the tasks within the sprint period. The detailed executions may differ in different teams and projects, but there are several key principles to follow:

+

1.Prioritizing tasks based on customer value: Agile task management focuses on delivering the highest value features first, rather than trying to complete all tasks at once.

+

2.Collaboration and communication: Agile emphasizes close collaboration between team members, with frequent meetings and communication to ensure that everyone is on the same page.

+

3.Iterative development: Agile tasks are completed in small iterations(sprints), allowing for continuous feedback and improvement.

+

4.Flexibility: Agile recognizes that requirements and priorities are subject to be changed, and allows for adjustments throughout the project.

+

The number of teams practicing agile in organizations has grown significantly in the past years, and agile knowledge has become a factor of consideration in recruiting processes.

+

To learn more about Agile in text: https://www.tutorialspoint.com/agile/index.htm

+

To learn more about Agile in video: https://www.youtube.com/watch?v=wmJfx7zAfQI&feature=youtu.be +

+

Waterfall

+

+Waterfall is a traditional project management methodology that involves a linear, sequential approach to task management. In this approach, tasks are completed in a specific order, with each task depending on the completion of the previous task. While it is very useful for projects with well-defined requirements and a clear plan, it is much less flexible than Agile, and is also less popular in modern software development.

+

To learn more about Waterfall in text:https://business.adobe.com/blog/basics/waterfall

+

To learn more about Waterfall in video:https://www.youtube.com/watch?v=cYzuzwQEZCg

+

From 35dee10ed8ea35c5fc2147e69648cddabed738c1 Mon Sep 17 00:00:00 2001 From: fadihareth <65694861+fadihareth@users.noreply.github.com> Date: Mon, 20 Mar 2023 15:21:34 -0400 Subject: [PATCH 086/206] initial commit with preliminary info --- Topics/Tech_Stacks/swift.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Topics/Tech_Stacks/swift.md diff --git a/Topics/Tech_Stacks/swift.md b/Topics/Tech_Stacks/swift.md new file mode 100644 index 000000000..36dc46b4f --- /dev/null +++ b/Topics/Tech_Stacks/swift.md @@ -0,0 +1,21 @@ +# Building Apple Native Software Using Swift and SwiftUI +Swift is a modern, open-source programming language developed by Apple as a replacement to their earlier language, Objective-C. + +It can be used on Mac devices to develop software that target all Apple platforms: iOS, macOS, watchOS, and tvOS, while being deeply +integrated into Apple's IDE: Xcode. + +[Swift Getting Started Documentation](https://www.swift.org/getting-started/) + +[Xcode Documentation](https://developer.apple.com/documentation/xcode) + +## Why Use Swift? +While languages such as React Native allow you to build multi-platform apps, such as for iOS and Android, using only one source code, +Swift offers many tools that make it easy to quickly build apps that work specifically throughout all of Apple's ecosystem of platforms. + +Apps built through Swift can intuitively [support iPhone and iPad screens at the same time](https://developer.apple.com/news/?id=nixcb564), +utilizing design patterns and themes that fit Apple's design policy to match the expected user experience on an iOS device. + +You will have access to an [assortment of developer kits](https://developer.apple.com/documentation/technologies?input=kit) that make +it simpler to integrate various, native features into your app. For example, [WidgetKit](https://developer.apple.com/documentation/WidgetKit) +can help set up widgets for iOS Home Screens for your app, or [HealthKit](https://developer.apple.com/documentation/healthkit) can allow you +to communicate to a user's health and fitness data, with their permission. From 3d461f489e40b8738e2e90c3f0c026742cefe701 Mon Sep 17 00:00:00 2001 From: parth-commits Date: Mon, 20 Mar 2023 15:43:10 -0400 Subject: [PATCH 087/206] update to add frontend deployment with vercel file --- .../Frontend_Automated_Deployment_Vercel.md | 130 ++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md diff --git a/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md b/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md new file mode 100644 index 000000000..4091ddac9 --- /dev/null +++ b/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md @@ -0,0 +1,130 @@ +# Using Vercel to host your Frontend the smart way + +## Table of Contents +### 1. Introduction +### 2. The Issues +### 3. Step by step solution to issues + +## 1. Introduction + +If you are building a frontend website for anything, you will eventually come across a time when you look to host it. There are many options out there, but Vercel looks like the best option for a few reasons. The main 2 being simiplicity and automation. + +## 2. The Issues +The first issue is that sometimes you will be working in a GitHub Organization repo such as a GitHub Classroom. Although GitHub Classroom provides a lot of additional resources, it pulls you down when trying to deploy with 3rd party sites. 3rd party sites see that your repo is a part of an Organization and will enforce you to upgrade to a paid plan to continue using Vercel. This is an issue because although you are part of an Organization, it's GitHub Classroom and you are a student in the course and do not want to pay for the pro membership. This guide helps work around this issue. + +The second issue is that Vercel is designed to automatically deploy when the branch that is linked to it is updated. This is great, but it can be a problem when you are working on a project with a team. This guide teaches you how to solve this probem also along the way using GitHub Actions. + +## 3. Step by step solution to issues +First let's get the prerequisites out of the way. You will need: + +- a GitHub account +- a Vercel account +- a GitHub Classroom account through your school. +- a GitHub Classroom repo that you have access to +- a frontend project in the GitHub Classroom repo that you can deploy + +If you do not have these, please create them now. + +First, lets solve the issue of deploying to Vercel using a GitHub Organization repo. This is actually quite easy. Just create a fork from the GitHub Classroom repo to your personal GitHub account. Then in Vercel, create a new project and link it to the **forked repo**. This will allow you to deploy the project without having to pay for a pro membership. This is a great solution for students who are working on projects in GitHub Classroom. + +Great! Now we have a deployed project on Vercel. But what happens when we update the main repo in GitHub Classroom? Well, Vercel will not automatically update the project. This is because the project is linked to the forked repo and not the main repo. This is a problem because we want to be able to update the project on Vercel when we update the main repo. A manual way to update the project is to go to forked repo and sync with the main repo. Once the new commits are synced, Vercel will automatically deploy the project. + +But who wants to do that manually? There must be a better way. Turns out there is! + +We can use GitHub Actions to periodically sync the forked repo with the main repo. This way, when we update the main repo, the forked repo will periodically update and Vercel will automatically deploy the project. + +To do this, we will need some things: +- A GitHub Student Account. This gives you access to 3,000 GitHub Action minutes for free (which in my experience is more than enough). Visit [here](https://education.github.com/pack) to sign up. +- A GitHub Personal Access Token for the main repo. This is needed so GitHub Actions can access the main repo. +- A GitHub Personal Access Token for the forked repo. This is needed so GitHub Actions can access the forked repo. + +### 3.1. Creating a GitHub Personal Access Token for a repo +Go to your account settings by clicking on your profile picture in the top right corner and clicking on `settings`. Then click on `Developer Settings`. Then click on `Personal Access Tokens`. Or you can just click [here](https://github.com/settings/tokens?type=beta) to go to the page. Then click on `Generate New Token`. Then give it a name and set **resource owner** to your GitHub Classroom Organization. Then for `repository access` select `Only Select Repositories` and select the main repo. Then give it the permissions. For testing purposes, give it all the permissions for now, then turn off the permissions you don't use later. Then click on Generate Token. Then copy the token and save it somewhere safe. You will need it later. + +**Do this for both the main repo and the forked repo.** + +### 3.2. Creating repository secrets +Now that we have the tokens, we need to add them to the forked repo. Go to the forked repo and click on `Settings`. Then click on `Secrets and Variables`. Then Click on `Actions`. Then click on `New Repository Secret`. Then give it a name and paste the token you created for the forked repo. Then click on Add Secret. Then do the same for the main repo. Make sure the names are distinct for each repo. + +### 3.3. Creating a GitHub Action +Now that we have the tokens, we are ready to create a GitHub Action. Go to the forked repo and click on `Actions` tab. Then click on `New Workflow`. Then click on `Set up a workflow yourself`. Then paste the following code into the editor: + +```yaml +name: Auto update and deploy from upstream + +on: + schedule: + - cron: '*/30 * * * *' + # scheduled for every 30 mins + workflow_dispatch: + # manual trigger + +jobs: + sync_latest_from_upstream: + runs-on: ubuntu-latest + name: Sync latest commits from upstream repo + + steps: + # REQUIRED step + # Step 1: run a standard checkout action, provided by github + - name: Checkout target repo + uses: actions/checkout@v2 + with: + # optional: set the branch to checkout, + # sync action checks out your 'target_sync_branch' anyway + ref: main + # REQUIRED if your upstream repo is private (see wiki) + persist-credentials: false + + # REQUIRED step + # Step 2: run the sync action + - name: Sync upstream changes + id: sync + uses: aormsby/Fork-Sync-With-Upstream-action@v3.4 + with: + target_sync_branch: main # this is the branch you want to sync to in forked repo + # REQUIRED 'target_repo_token' exactly like this! + target_repo_token: ${{ secrets.YOUR_FORKED_REPO_PAT }} + upstream_sync_branch: main # this is the branch you want to sync FROM in upstream repo + upstream_sync_repo: your-organiation/your-main-repo # this is the repo you want to sync FROM + upstream_repo_access_token: ${{ secrets.YOUR_MAIN_REPO_PAT }} + + # Set test_mode true to run tests instead of the true action!! + # test_mode: true + + # Step 3: Display a sample message based on the sync output var 'has_new_commits' + - name: New commits found + if: steps.sync.outputs.has_new_commits == 'true' + run: echo "New commits were found to sync." + + - name: No new commits + if: steps.sync.outputs.has_new_commits == 'false' + run: echo "There were no new commits." + + - name: Show value of 'has_new_commits' + run: echo ${{ steps.sync.outputs.has_new_commits }} +``` + +- Firstly change the cron job to run when you want it to. I have it set to run every 30 minutes. I feel that is reasonable enough, but you can bring it as down as 5 minutes according to GitHub. + +- Then change the `target_sync_branch` to the branch you want to sync to in the forked repo. + +- Then change the `upstream_sync_branch` to the branch you want to sync from in the main repo. + +- Then change the `upstream_sync_repo` to the repo you want to sync from. + +- Then change the `YOUR_FORKED_REPO_PAT` to the name of the secret you created for the forked repo. Then change the `YOUR_MAIN_REPO_PAT` to the name of the secret you created for the main repo. Then save the file. + +- If you have experience working with GitHub Actions, you can change stuff in step 3 for customized messages. I have left it as is for now. + +- Then save the file. + +### 3.4. Testing the GitHub Action +Go to the `Actions` tab on your forked repo and click on the workflow you just created. Then click on `Run workflow`. Then click on `Run workflow`. + +After the action runs, check to make sure its running corrcetly. If it is, then you are good to go! The action is triggered and will run every 30 minutes (or whatever time you've set it to). + +### 3.5. Looking forward +This was nice, but the deployment only deploys after x minutes depending on the cron job. What if we want to deploy immediately after the main repo is updated? We can do this too. We can use a webhook to trigger the GitHub Action. This way, when the main repo is updated, the webhook will trigger the GitHub Action and the forked repo will be updated and deployed immediately. + +Another note, deploying off of your main branch (as shown in sample code above) may be a bad idea. If you are working on a project with other people, you may want to deploy off of a different branch. Developers do this in the industry all the time. They have a deployment branch that is different from the main or development branch. After they have enough features to deploy, they merge their code into the deployment branch. Then, they deploy off of the deployment branch. This way, they can deploy whenever they want without worrying about breaking the main branch. From 5234b632fec933794948cd1156b8d6a53812e8d1 Mon Sep 17 00:00:00 2001 From: sayna Date: Mon, 20 Mar 2023 15:49:37 -0400 Subject: [PATCH 088/206] wrote first draft. Need to add resources and articles --- Topics/Tech_Stacks.md | 1 + Topics/Tech_Stacks/Postman_Backend_Testing.md | 56 +++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 Topics/Tech_Stacks/Postman_Backend_Testing.md diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index acf455d04..9df2113ab 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,3 +1,4 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) +### [Postman Backend Testing](./Tech_Stacks/Postman_Backend_Testing.md) diff --git a/Topics/Tech_Stacks/Postman_Backend_Testing.md b/Topics/Tech_Stacks/Postman_Backend_Testing.md new file mode 100644 index 000000000..8c2c3c35e --- /dev/null +++ b/Topics/Tech_Stacks/Postman_Backend_Testing.md @@ -0,0 +1,56 @@ +#Postman Backend Testing + +In this Postman application overview, We will go over how to +install the application and the details of how to tests your API endpoints. + +## Downlaad and instalation +the following link will take you to the postman website where you can +download the application if you do not have it already installed: +https://www.postman.com/downloads/ +download the specific version for your compute. + +After the donalod the following video will help you install the application: +https://www.youtube.com/watch?v=pBo_oClYjjM&ab_channel=GeekyScript +https://www.youtube.com/watch?v=sriayOzVaMM&ab_channel=Postman +https://www.youtube.com/watch?v=9ZZdl4CQbCg&ab_channel=OSTechHelp + +## Testing with Postman +#Creating a workspace +Before starting testing your API, it is best to create a workspace for the +specific project that you are working on. This way team members can access +and contribute to the test cases. +In order to do this, click on the the workspace tab and then click on the +'Create Workspace' button and name your workspace. +then click on the newly created workspace to work within it. +###Creating a Collection +In order to send request within this workspace. You need to create a new +collection which will contain all the different requests to your API endpoint. +Create a new Collection by clicking on the '+' that is location next to the +collection section. ********** +###Sending requests +Once you have created the Collection, you can now create your request. +Do this by expanding the newly created collection and clicking on add request +which is highlighted. Copy and paste the request URL of your API into the URL bar. + +To add any new requests to your collection, right click on your collection and +select a add request. Alternativly, you can right click on the previously created request +and click Duplicate. This also helps preserve the request variables. +#### POST requests +For POST requests, the request body is required, therefore to include all the data +you must fill the request body. +#### GET requests +For GET requests, the request needs to have header variables included. Click on the +header tab within the request and add the keys and values. +###Downloading collection +To export your work, you can right click on the Collection that you have been working on and +click Export which will promt you to the version you would like to export. Once finished you can +download the exported file. + +###Conclusion +This summary of Postman application showed the basics of creating a collection of requests to test +an API endpoint. After reading this, you should be able to create a workspace and collection of +requests, sending POST and GET requests to your desired API endpoint. If there are additional +information you would like to learn about, there are some useful articles and resources provided below. + +### Articles and Resources + From 64e0f1fa2c1affec7a099a49c362f1421fed94f2 Mon Sep 17 00:00:00 2001 From: fadihareth <65694861+fadihareth@users.noreply.github.com> Date: Mon, 20 Mar 2023 16:27:53 -0400 Subject: [PATCH 089/206] add swiftUI section --- Topics/Tech_Stacks/swift.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Topics/Tech_Stacks/swift.md b/Topics/Tech_Stacks/swift.md index 36dc46b4f..73c104ffa 100644 --- a/Topics/Tech_Stacks/swift.md +++ b/Topics/Tech_Stacks/swift.md @@ -4,8 +4,13 @@ Swift is a modern, open-source programming language developed by Apple as a repl It can be used on Mac devices to develop software that target all Apple platforms: iOS, macOS, watchOS, and tvOS, while being deeply integrated into Apple's IDE: Xcode. +In the following official Apple documentation, there are many other resources, such as videos, interactive demos, and guided +exercises, you can use to better understand and practice these tools. + [Swift Getting Started Documentation](https://www.swift.org/getting-started/) +[SwiftUI Documentation](https://developer.apple.com/documentation/swiftui/) + [Xcode Documentation](https://developer.apple.com/documentation/xcode) ## Why Use Swift? @@ -19,3 +24,15 @@ You will have access to an [assortment of developer kits](https://developer.appl it simpler to integrate various, native features into your app. For example, [WidgetKit](https://developer.apple.com/documentation/WidgetKit) can help set up widgets for iOS Home Screens for your app, or [HealthKit](https://developer.apple.com/documentation/healthkit) can allow you to communicate to a user's health and fitness data, with their permission. + +It comes built-in with over 4000 customizable icons and symbols that are designed to seamlessly match Apple software, which you can view and +modify through [SF Symbols 4](https://developer.apple.com/sf-symbols/). + +These are just some of the many advantages available. + +## What is SwiftUI? +In 2019, Apple introduced a new framework for building user interfaces called SwiftUI. This is a [declarative UI toolkit](https://www.hackingwithswift.com/quick-start/swiftui/what-is-swiftui), similar to React, where we can tell it what components we want +and the framework will handle performing the steps needed to get that result. + +[Hacking with Swift](https://www.hackingwithswift.com) is a great free resource for learning how to do specific things in Swift and SwiftUI +when the issues arise. From 8a6829ac56b9ec1dcfaca3d46a966fe15f6c519a Mon Sep 17 00:00:00 2001 From: fadihareth <65694861+fadihareth@users.noreply.github.com> Date: Mon, 20 Mar 2023 16:50:53 -0400 Subject: [PATCH 090/206] add testing and starting project sections --- Topics/Tech_Stacks/swift.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Topics/Tech_Stacks/swift.md b/Topics/Tech_Stacks/swift.md index 73c104ffa..c5da6dc43 100644 --- a/Topics/Tech_Stacks/swift.md +++ b/Topics/Tech_Stacks/swift.md @@ -36,3 +36,20 @@ and the framework will handle performing the steps needed to get that result. [Hacking with Swift](https://www.hackingwithswift.com) is a great free resource for learning how to do specific things in Swift and SwiftUI when the issues arise. + +## Starting a Swift Project +After launching Xcode, selecting `Create a new Xcode project`, and choosing which platform and type of app you want to make, you will then have +to fill in the following info: + +Screen Shot 2023-03-20 at 4 31 06 PM + +This information can be changed later, so for starters you can leave `Team` to be empty, as this is only necessary for deploying the app to the App Store. `Organization identifier` is used to uniquely identify your app once it is up on the App Store, so you can choose whichever name you'd like, such as your name or group's name. Do note `Organization identifier` cannot be changed once the app is uploaded to the App Store but it is purely meta data. + +Make sure to use `SwiftUI` and `Swift` as your interface and language respectively, then click `Next` to choose where to store your project, and now you're ready to start. + +## Testing Your App +Xcode has [built-in simulators for many Apple devices](https://developer.apple.com/documentation/xcode/running-your-app-in-simulator-or-on-a-device) +you can use to run your code and see how it performs. You can also download new simulators for specific a device and operating system version to test +different scenarios, such as an iPhone 11 running iOS 13. + +If you have your own Apple device, you can also connect it to your Mac device and run your app on it for testing. Note that as of iOS 14, from your device, you will have to first go to `Settings` > `Privacy & Security` > `Developer Mode` first to allow your device to run apps downloaded from Xcode. From a5519790c9d91a252f6832c92894fb4f00425104 Mon Sep 17 00:00:00 2001 From: fadihareth <65694861+fadihareth@users.noreply.github.com> Date: Mon, 20 Mar 2023 17:09:53 -0400 Subject: [PATCH 091/206] add other useful resources --- Topics/Tech_Stacks/swift.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Topics/Tech_Stacks/swift.md b/Topics/Tech_Stacks/swift.md index c5da6dc43..27feb6cf9 100644 --- a/Topics/Tech_Stacks/swift.md +++ b/Topics/Tech_Stacks/swift.md @@ -53,3 +53,11 @@ you can use to run your code and see how it performs. You can also download new different scenarios, such as an iPhone 11 running iOS 13. If you have your own Apple device, you can also connect it to your Mac device and run your app on it for testing. Note that as of iOS 14, from your device, you will have to first go to `Settings` > `Privacy & Security` > `Developer Mode` first to allow your device to run apps downloaded from Xcode. + +## Other Useful Resources +[Learn about the different data types in Swift](https://www.hackingwithswift.com/read/0/3/types-of-data). Each language has its own nuances in how +variables are declared and stored, useful to become familiar with it before starting to code. + +[SwiftUI has many property wrappers that provide different functionality to the object instances they are attached to](https://www.hackingwithswift.com/quick-start/swiftui/all-swiftui-property-wrappers-explained-and-compared). These are an important tool for making your code efficient and storing your objects properly. In particular, you should be aware of what the `@State` and `@Binding` wrappers do. + +[Learn about Protocols for defining properties object models must have](https://www.hackingwithswift.com/read/0/22/protocols). These function similar to what are known as `Interfaces` in other languages. Protocols are important as you will sometimes run into errors that require the object you are using to "conform" to some protocol. For example, if you are trying to loop over a custom object, you must first have that object [conform to Identifiable](https://www.hackingwithswift.com/quick-start/swiftui/how-to-fix-initializer-init-rowcontent-requires-that-sometype-conform-to-identifiable) so that Swift can iterate through a list of that object and recognize which entries are unique. From e486805c851a9d79209a2e0147bc5a46a0235d65 Mon Sep 17 00:00:00 2001 From: fadihareth <65694861+fadihareth@users.noreply.github.com> Date: Mon, 20 Mar 2023 17:54:39 -0400 Subject: [PATCH 092/206] update tech_stacks.md to reference new entry --- Topics/Tech_Stacks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index acf455d04..1e76f3099 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,3 +1,4 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) +### [Building Apple Native Software Using Swift and SwiftUI](./Tech_Stacks/swift.md) From 0a05248254c682afd83e618d686f9a3e4648e96f Mon Sep 17 00:00:00 2001 From: fadihareth <65694861+fadihareth@users.noreply.github.com> Date: Mon, 20 Mar 2023 17:57:32 -0400 Subject: [PATCH 093/206] add table of contents --- Topics/Tech_Stacks/swift.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Topics/Tech_Stacks/swift.md b/Topics/Tech_Stacks/swift.md index 27feb6cf9..bf55995a6 100644 --- a/Topics/Tech_Stacks/swift.md +++ b/Topics/Tech_Stacks/swift.md @@ -1,4 +1,14 @@ # Building Apple Native Software Using Swift and SwiftUI + +## Table of contents +### [Introduction](#introduction-1) +### [Why Use Swift?](#why-use-swift-1) +### [What is SwiftUI?](#what-is-swiftui-1) +### [Starting a Swift Project](#starting-a-swift-project-1) +### [Testing Your App](#testing-your-app-1) +### [Other Useful Resources](#other-useful-resources-1) + +## Introduction Swift is a modern, open-source programming language developed by Apple as a replacement to their earlier language, Objective-C. It can be used on Mac devices to develop software that target all Apple platforms: iOS, macOS, watchOS, and tvOS, while being deeply From 9100dc306732532d9b0bff1a3c85ae1cfc9e03f8 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Mon, 20 Mar 2023 18:36:22 -0400 Subject: [PATCH 094/206] Rough draft for "Story Points" section --- Topics/Product_Management.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index b130a6520..a7c0070e3 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -20,12 +20,22 @@ There is no strict benefit to using one format over the other. There are many ot ### Acceptance Criteria -Acceptance criteria refers to a list of requirements that must be acomplished for a user story to be completed and closed. The purpose of acceptance criteria is to fully scope a user stories. This is important so that developers understand the expected output and so that all stakeholders to be satisfied. +Acceptance criteria refers to a list of requirements that must be accomplished for a user story to be completed and closed. The purpose of acceptance criteria is to fully scope a user stories. This is important so that developers understand the expected output and so that all stakeholders to be satisfied. -The general formatting of acceptance criteria is not as strict as the formatting of the story itself. Firstly, all acceptance criteria should be clear, concise and readable. Beyond that, acceptance criteria should always be testable. This means that there are specific "yes/no" scenarious that can verify if the criteria has been impelmented. Lastly, acceptance criteria should provide user prespective. +The general formatting of acceptance criteria is not as strict as the formatting of the story itself. Firstly, all acceptance criteria should be clear, concise and readable. Beyond that, acceptance criteria should always be testable. This means that there are specific "yes/no" scenarios that can verify if the criteria has been implemented. Lastly, acceptance criteria should provide user perspective. -Beyond the conditions that are explicitly outlined in the acceptance criteria, there is an additionally layer of rules that must be met before a story can be completed. These conditions are generally refered to as the "Definition of Done", and are created and aggreed upon by an entire team before being used. This acts as a general set of standards that act as quality control, so that they are met by each story before it can be considered shippable. +Beyond the conditions that are explicitly outlined in the acceptance criteria, there is an additionally layer of rules that must be met before a story can be completed. These conditions are generally referred to as the "Definition of Done", and are created and agreed upon by an entire team before being used. This acts as a general set of standards that act as quality control, so that they are met by each story before it can be considered shippable. ### Story Points +Story points are a numerical estimation of the amount of effort that is required to complete a user story. Teams will generally vote and discuss the given task so that they can align themselves on the task and agree on a score. This system works so that the team can quantify the task at hand and appropriately assign it to one or multiple developers. + +When deciding the necessary points to allocate to a story, there are generally 3 points that are taken into consideration. The following is outlined below: + +- Complexity: The overall difficulty of the task +- Risk: The margin for possible error or hidden tasks arising in the future +- Repetition: The team's past experience with this line of work + +These factors are not hard considerations, but some of the most common to consider in these situations. + ### Additional Details \ No newline at end of file From ac81225f2d57b2334fa688f232c82a06f4e755d8 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Mon, 20 Mar 2023 19:00:10 -0400 Subject: [PATCH 095/206] Rough draft of the "Example User Story" section --- Topics/Product_Management.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index a7c0070e3..aa108c8ea 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -38,4 +38,18 @@ When deciding the necessary points to allocate to a story, there are generally 3 These factors are not hard considerations, but some of the most common to consider in these situations. -### Additional Details \ No newline at end of file +### Example User Story + +By combining all of the sections above, we can create the following example user story: + +--- + +**Title:** Example User Story + +**Points:** 5 + +**User Story:** As a \, I want \, so that \ + +**Acceptance Criteria:** Given \, when \, the \ + +--- \ No newline at end of file From ed98abc5a17e4765c2e5e3059fe0cddb345da387 Mon Sep 17 00:00:00 2001 From: sayna Date: Mon, 20 Mar 2023 19:17:41 -0400 Subject: [PATCH 096/206] added links and fixed spelling/grammar --- Topics/Tech_Stacks/Postman_Backend_Testing.md | 39 +++++++++++-------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/Topics/Tech_Stacks/Postman_Backend_Testing.md b/Topics/Tech_Stacks/Postman_Backend_Testing.md index 8c2c3c35e..a99355c3d 100644 --- a/Topics/Tech_Stacks/Postman_Backend_Testing.md +++ b/Topics/Tech_Stacks/Postman_Backend_Testing.md @@ -1,49 +1,52 @@ #Postman Backend Testing -In this Postman application overview, We will go over how to +In this Postman application overview, we will go over how to install the application and the details of how to tests your API endpoints. -## Downlaad and instalation +## Download and installation the following link will take you to the postman website where you can download the application if you do not have it already installed: -https://www.postman.com/downloads/ -download the specific version for your compute. +[Download](https://www.postman.com/downloads/) + + + +After the download the following video will help you install the application: + +[Windows](https://www.youtube.com/watch?v=pBo_oClYjjM&ab_channel=GeekyScript) +[Mac](https://www.youtube.com/watch?v=sriayOzVaMM&ab_channel=Postman) +[Linux](https://www.youtube.com/watch?v=9ZZdl4CQbCg&ab_channel=OSTechHelp) -After the donalod the following video will help you install the application: -https://www.youtube.com/watch?v=pBo_oClYjjM&ab_channel=GeekyScript -https://www.youtube.com/watch?v=sriayOzVaMM&ab_channel=Postman -https://www.youtube.com/watch?v=9ZZdl4CQbCg&ab_channel=OSTechHelp ## Testing with Postman -#Creating a workspace -Before starting testing your API, it is best to create a workspace for the +###Creating a workspace +Before starting to test your API, it is best to create a workspace for the specific project that you are working on. This way team members can access and contribute to the test cases. -In order to do this, click on the the workspace tab and then click on the +To do this, click on the workspace tab and then click on the 'Create Workspace' button and name your workspace. -then click on the newly created workspace to work within it. +then click on the newly created workspace to write your requests within it. ###Creating a Collection -In order to send request within this workspace. You need to create a new +To send request within this workspace. You need to create a new collection which will contain all the different requests to your API endpoint. Create a new Collection by clicking on the '+' that is location next to the -collection section. ********** +collection side tab. ###Sending requests Once you have created the Collection, you can now create your request. Do this by expanding the newly created collection and clicking on add request which is highlighted. Copy and paste the request URL of your API into the URL bar. To add any new requests to your collection, right click on your collection and -select a add request. Alternativly, you can right click on the previously created request +select a add request. Alternatively, you can right click on the previously created request and click Duplicate. This also helps preserve the request variables. #### POST requests -For POST requests, the request body is required, therefore to include all the data +For POST requests, the request body is required. To include all the data you must fill the request body. #### GET requests For GET requests, the request needs to have header variables included. Click on the header tab within the request and add the keys and values. ###Downloading collection To export your work, you can right click on the Collection that you have been working on and -click Export which will promt you to the version you would like to export. Once finished you can +click Export which will prompt you to the version you would like to export. Once selected you can download the exported file. ###Conclusion @@ -53,4 +56,6 @@ requests, sending POST and GET requests to your desired API endpoint. If there a information you would like to learn about, there are some useful articles and resources provided below. ### Articles and Resources +[Overview of Postman](https://learning.postman.com/docs/introduction/overview/) +[Postman Map](https://www.guru99.com/postman-tutorial.html) From 5fddcaa91bb267fb8092b487e4c16f335165ce09 Mon Sep 17 00:00:00 2001 From: purplepaw <88109782+purplepaw@users.noreply.github.com> Date: Mon, 20 Mar 2023 19:19:05 -0400 Subject: [PATCH 097/206] Update Postman_Backend_Testing.md --- Topics/Tech_Stacks/Postman_Backend_Testing.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks/Postman_Backend_Testing.md b/Topics/Tech_Stacks/Postman_Backend_Testing.md index a99355c3d..883f538cd 100644 --- a/Topics/Tech_Stacks/Postman_Backend_Testing.md +++ b/Topics/Tech_Stacks/Postman_Backend_Testing.md @@ -1,4 +1,5 @@ -#Postman Backend Testing + +# Postman Backend Testing In this Postman application overview, we will go over how to install the application and the details of how to tests your API endpoints. From c0485ae3906c174ce53c9d231a40fb02c3250f46 Mon Sep 17 00:00:00 2001 From: purplepaw <88109782+purplepaw@users.noreply.github.com> Date: Mon, 20 Mar 2023 19:19:40 -0400 Subject: [PATCH 098/206] Update Postman_Backend_Testing.md --- Topics/Tech_Stacks/Postman_Backend_Testing.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Topics/Tech_Stacks/Postman_Backend_Testing.md b/Topics/Tech_Stacks/Postman_Backend_Testing.md index 883f538cd..c6c12421a 100644 --- a/Topics/Tech_Stacks/Postman_Backend_Testing.md +++ b/Topics/Tech_Stacks/Postman_Backend_Testing.md @@ -26,12 +26,12 @@ and contribute to the test cases. To do this, click on the workspace tab and then click on the 'Create Workspace' button and name your workspace. then click on the newly created workspace to write your requests within it. -###Creating a Collection +### Creating a Collection To send request within this workspace. You need to create a new collection which will contain all the different requests to your API endpoint. Create a new Collection by clicking on the '+' that is location next to the collection side tab. -###Sending requests +### Sending requests Once you have created the Collection, you can now create your request. Do this by expanding the newly created collection and clicking on add request which is highlighted. Copy and paste the request URL of your API into the URL bar. @@ -45,12 +45,12 @@ you must fill the request body. #### GET requests For GET requests, the request needs to have header variables included. Click on the header tab within the request and add the keys and values. -###Downloading collection +### Downloading collection To export your work, you can right click on the Collection that you have been working on and click Export which will prompt you to the version you would like to export. Once selected you can download the exported file. -###Conclusion +### Conclusion This summary of Postman application showed the basics of creating a collection of requests to test an API endpoint. After reading this, you should be able to create a workspace and collection of requests, sending POST and GET requests to your desired API endpoint. If there are additional From 16a56b811c2b3d91ee254c4a1e80f244b43ed319 Mon Sep 17 00:00:00 2001 From: purplepaw <88109782+purplepaw@users.noreply.github.com> Date: Mon, 20 Mar 2023 19:20:00 -0400 Subject: [PATCH 099/206] Update Postman_Backend_Testing.md --- Topics/Tech_Stacks/Postman_Backend_Testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks/Postman_Backend_Testing.md b/Topics/Tech_Stacks/Postman_Backend_Testing.md index c6c12421a..3e847011a 100644 --- a/Topics/Tech_Stacks/Postman_Backend_Testing.md +++ b/Topics/Tech_Stacks/Postman_Backend_Testing.md @@ -19,7 +19,7 @@ After the download the following video will help you install the application: ## Testing with Postman -###Creating a workspace +### Creating a workspace Before starting to test your API, it is best to create a workspace for the specific project that you are working on. This way team members can access and contribute to the test cases. From 776973793d7bb142ea5ebe078d9009da66b6deca Mon Sep 17 00:00:00 2001 From: purplepaw <88109782+purplepaw@users.noreply.github.com> Date: Mon, 20 Mar 2023 19:20:20 -0400 Subject: [PATCH 100/206] Update Postman_Backend_Testing.md --- Topics/Tech_Stacks/Postman_Backend_Testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks/Postman_Backend_Testing.md b/Topics/Tech_Stacks/Postman_Backend_Testing.md index 3e847011a..038de587e 100644 --- a/Topics/Tech_Stacks/Postman_Backend_Testing.md +++ b/Topics/Tech_Stacks/Postman_Backend_Testing.md @@ -57,6 +57,6 @@ requests, sending POST and GET requests to your desired API endpoint. If there a information you would like to learn about, there are some useful articles and resources provided below. ### Articles and Resources -[Overview of Postman](https://learning.postman.com/docs/introduction/overview/) +[Overview of Postman](https://learning.postman.com/docs/introduction/overview/) [Postman Map](https://www.guru99.com/postman-tutorial.html) From 9a98ac0cac3e59ab4bcbdf8fbfc58804d379bba6 Mon Sep 17 00:00:00 2001 From: purplepaw <88109782+purplepaw@users.noreply.github.com> Date: Mon, 20 Mar 2023 19:21:30 -0400 Subject: [PATCH 101/206] Update Postman_Backend_Testing.md --- Topics/Tech_Stacks/Postman_Backend_Testing.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks/Postman_Backend_Testing.md b/Topics/Tech_Stacks/Postman_Backend_Testing.md index 038de587e..a5b3143cc 100644 --- a/Topics/Tech_Stacks/Postman_Backend_Testing.md +++ b/Topics/Tech_Stacks/Postman_Backend_Testing.md @@ -58,5 +58,7 @@ information you would like to learn about, there are some useful articles and re ### Articles and Resources [Overview of Postman](https://learning.postman.com/docs/introduction/overview/) -[Postman Map](https://www.guru99.com/postman-tutorial.html) +[Postman Map](https://www.guru99.com/postman-tutorial.html) +[Tutorial](https://www.guru99.com/postman-tutorial.html](https://www.tutorialspoint.com/postman/index.htm) + From 9e47f36ec8695b30969a2f3c562ecacf2f9ef7f3 Mon Sep 17 00:00:00 2001 From: purplepaw <88109782+purplepaw@users.noreply.github.com> Date: Mon, 20 Mar 2023 19:22:48 -0400 Subject: [PATCH 102/206] Update Postman_Backend_Testing.md --- Topics/Tech_Stacks/Postman_Backend_Testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks/Postman_Backend_Testing.md b/Topics/Tech_Stacks/Postman_Backend_Testing.md index a5b3143cc..be8bea795 100644 --- a/Topics/Tech_Stacks/Postman_Backend_Testing.md +++ b/Topics/Tech_Stacks/Postman_Backend_Testing.md @@ -59,6 +59,6 @@ information you would like to learn about, there are some useful articles and re ### Articles and Resources [Overview of Postman](https://learning.postman.com/docs/introduction/overview/) [Postman Map](https://www.guru99.com/postman-tutorial.html) -[Tutorial](https://www.guru99.com/postman-tutorial.html](https://www.tutorialspoint.com/postman/index.htm) +[Tutorial](https://www.tutorialspoint.com/postman/index.htm) From 11b6c30aeadb90fefe9adddd8c64ddc30e457a8d Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Mon, 20 Mar 2023 19:53:56 -0400 Subject: [PATCH 103/206] Add DynamoDB for Dummies --- Topics/Tech_Stacks/DynamoDB_for_Dummies.md | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 Topics/Tech_Stacks/DynamoDB_for_Dummies.md diff --git a/Topics/Tech_Stacks/DynamoDB_for_Dummies.md b/Topics/Tech_Stacks/DynamoDB_for_Dummies.md new file mode 100644 index 000000000..dadd3c316 --- /dev/null +++ b/Topics/Tech_Stacks/DynamoDB_for_Dummies.md @@ -0,0 +1,77 @@ +# DynamoDB for dummies + +## Introduction + +This is a very brief overview of DynamoDB, what it is, why you might want to use +it, why you might not want to use it, and how to go about using it effectively. + +## What is it? + +DynamoDB is a NoSQL database that is designed to be fast at any scale. + +## Why would I want to use it? + +DynamoDB has a couple of main selling points: + +1. Scalability: your database will automatically adjust to the scale required of + it. +1. Speed: due to how the database is implemented, queries will always be fast - + as long as your data is modelled appropriately for your access patterns! +1. Fully managed by AWS: it's pretty easy to quickly spin up a database that + will just work, with all the great benefits that come with AWS. + +## Why would I not want to use it? + +There are a few major details of DynamoDB that may make it the wrong choice for +your application. + +1. Inflexibility: DynamoDB is not designed to be flexible. You need to have a + pretty good idea of what your core access patterns will be at the time of + making your initial data model. If your application is changing frequently + DynamoDB might cause you more headaches than it's worth! +1. Incompatibility with certain access patterns: if your application has certain + collections of complex access patterns, DynamoDB will either take up a lot of + extra storage space or be very slow. + +## How do I use it effectively? + +If you've decided DynamoDB might be a good fit for your application, then you +should try designing a single-table data model! There are a couple of key +concepts to DynamoDB that you'll need to understand to start creating a data +model (not an exhaustive list): + +1. Partition keys & sort keys +1. Attributes +1. Global secondary indexes + +Together, an **item**'s partition key and sort key must uniquely identify it. +They should be pretty generic, since lots of different types of items may need +to be stored. Attributes are the real data you want to store. DynamoDB is +schemaless so you can store whatever attributes you want on an item, but as a +result, you must also keep your data model straight in your application code +when you're reading and writing to the database. + +Global secondary indexes can be defined on your table to account for usecases +where querying on your partition key + sort key will not be efficient. When you +define a GSI, all of the data will be replicated and stored (effectively in +another table) with your GSI as the partition key. For example, if an access +pattern we wanted to account for was to find all users with the first name +"Spencer", but it wouldn't make sense to define our partition key to be first +name, we could say that first name is a GSI on our table. This would allow us to +make an efficient query to find users with the first name "Spencer", but would +cost us some space to store the replicated data. This is a trade-off; if we had +very many situations where we needed to query on attributes, then we would +probably want to re-evaluate whether DynamoDB is the best choice for us. + +## Examples and additional resources + +- [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) + +A lot of my learning on DynamoDB has been from Alex DeBrie - he has done a bunch +of practical talks on DynamoDB and has even written "The DynamoDB Book". I'd +recommend looking into his stuff if you're interested in learning more about +DynamoDB and how to best use it. + +- [The DynamoDB Book](https://www.dynamodbbook.com/) +- [Data modelling talk at AWS re:Invent 2020](https://www.youtube.com/watch?v=fiP2e-g-r4g) +- [Alex DeBrie's website](https://www.alexdebrie.com/) From 7e93f131892225078fc495c1437769a16ff7478c Mon Sep 17 00:00:00 2001 From: Samantha Pang Date: Mon, 20 Mar 2023 21:14:06 -0400 Subject: [PATCH 104/206] Added Waterfall.md in Software_Engineering, and updated Software_Engineering.md --- Topics/Software_Engineering.md | 3 +- Topics/Software_Engineering/Waterfall.md | 48 ++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 Topics/Software_Engineering/Waterfall.md diff --git a/Topics/Software_Engineering.md b/Topics/Software_Engineering.md index e9737f790..678974b9c 100644 --- a/Topics/Software_Engineering.md +++ b/Topics/Software_Engineering.md @@ -7,5 +7,4 @@ Potential topics-- 1. Scrum 2. Kanban 3. XP - 2. Waterfall - + 2. [Waterfall](./Software_Engineering/Waterfall.md) \ No newline at end of file diff --git a/Topics/Software_Engineering/Waterfall.md b/Topics/Software_Engineering/Waterfall.md new file mode 100644 index 000000000..d93a474c1 --- /dev/null +++ b/Topics/Software_Engineering/Waterfall.md @@ -0,0 +1,48 @@ +# Waterfall Methodology + +## Table of Contents: +#### [Introduction](#introduction) +#### [Common Phases in the Waterfall Model](#common-phases-in-the-waterfall-model) +#### [When to use the Waterfall Model?](#when-to-use-the-waterfall-model-) +#### [Advantages of Waterfall Project Management](#advantages-of-waterfall-project-management) +#### [Disadvantages of Waterfall Project Management](#disadvantages-of-waterfall-project-management) +#### [Resources](#resources) + +## Introduction +Waterfall methodology, also known as the Waterfall model, is a linear sequential development process. This traditional project management approach occurs where each phase flows like a waterfall. Each phase must be completed before the next begins. + +Despite having critics and supporters since its inception, the Waterfall model is still relevant today and has a place among other methodologies that have since emerged. For example, if your team is small and the project is consistent and predictable, the Waterfall framework can provide the structure to have an organized, on-track team. + +## Common Phases in the Waterfall Model +1. Requirement Gathering and Documentation +2. System Design +3. Implementation +4. Testing +5. Delivery/Deployment +6. Maintenance + +*In-depth description and what deliverables are expected at each phase: [link](https://www.softwaretestinghelp.com/what-is-sdlc-waterfall-model/)* + +## When to use the Waterfall Model? +The Waterfall model is a traditional form of project management, allowing for thorough planning and detailed documentation. + +The Waterfall model is most suited for projects where the requirements are constant and won't change regularly, meaning the project has a well-defined end goal. The tools and technology are consistent and stay the same. The project isn't restrained by a budget or deadline, allowing the team to spend quality time on the initial phases, requirements and system design to finalize a well-defined project plan. + +## Advantages of Waterfall Project Management +- Tracking is easy as each phase has specific deliverables to measure progress. +- Team members can manage time effectively as the requirement and design phases detail the timeline well. +- The end goal is determined early. +- Transfers information well between phases to new groups of people. + +## Disadvantages of Waterfall Project Management +- Roadblocks can majorly setback the project's timeline due to the linear process. +- Backtracking to a previous phase can be challenging. +- Low amount of flexibility and adaptability after finalizing requirements and design. +- QA is late in the process, which can lead to a problematic rework if mistakes are made earlier in the process. +- Excludes the client and/or end user as this is a more internal process +- Poor model for object orientated programming and for long, on-going projects + +## Resources +- [How to set up your Waterfall workflow](https://www.wrike.com/blog/set-up-your-waterfall-workflow/) +- [Comparing Agile to Waterfall project management](https://www.atlassian.com/agile/project-management/project-management-intro) +- [Waterfall model template with a project example](https://www.teamgantt.com/waterfall-model-template) \ No newline at end of file From 8ac2864e21d7b9328ae28b08dd0fb24c69048e41 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Mon, 20 Mar 2023 21:16:42 -0400 Subject: [PATCH 105/206] structural improvements to all sections --- Topics/Product_Management.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index aa108c8ea..d04ab2823 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -4,23 +4,25 @@ ### Introduction -A user story can be described as an informal explanation of a new feature or task in a software project. The purpose of a user story is to gauge how the particular feature will provide value from the perspective of the user. User stories generally exist in a set amongst other user stories, and allow teams to organize and structure a large set of tasks in user-centric manner. +A user story is an informal description of a new feature or task in a software project. The purpose of a user story is to gauge how the particular feature will provide value from the perspective of the user. These stories generally exist within a larger set, and ultimately allow teams to organize their workflow in a user-centric manner. -### Structure +User stories all follow a general structure, and are accompanied by their associated "Acceptance Criteria" and some additional details. Each section retains the customer focused philosophy of the user story, and consists of a few non-technical descriptive sentences. By combining these sections, user stories are able to effectively scope the entirety of their task. -The majority of user stories are written to follow a general outline or pattern. The most commonly used format is the [Connextra Template](https://www.mountaingoatsoftware.com/agile/user-stories), which is outlined below: +### Story Structure + +The majority of user stories are written to follow a general outline or pattern. The most commonly used format is the [Connextra Template](https://www.mountaingoatsoftware.com/agile/user-stories), as outlined below: ``` As a , I want , so that ``` -An alternative structure which makes use of W5 can be found below: +There are many other popular formats that are derivations of the one above. However, other non-standard formats can also be used, such as the W5 example below: ``` As , I want because ``` -There is no strict benefit to using one format over the other. There are many other popular formats, that each bring different value to different teams. +Each format has its own advantages and disadvantages. Teams will generally use the format that fits their goals best and delivers the most value. ### Acceptance Criteria -Acceptance criteria refers to a list of requirements that must be accomplished for a user story to be completed and closed. The purpose of acceptance criteria is to fully scope a user stories. This is important so that developers understand the expected output and so that all stakeholders to be satisfied. +Acceptance criteria refers to a list of requirements that must be accomplished for a user story to be completed and closed. The purpose of acceptance criteria is to fully scope a user stories. This is important so that developers exactly what they need to output, and so that all stakeholders are satisfied. The general formatting of acceptance criteria is not as strict as the formatting of the story itself. Firstly, all acceptance criteria should be clear, concise and readable. Beyond that, acceptance criteria should always be testable. This means that there are specific "yes/no" scenarios that can verify if the criteria has been implemented. Lastly, acceptance criteria should provide user perspective. @@ -28,9 +30,9 @@ Beyond the conditions that are explicitly outlined in the acceptance criteria, t ### Story Points -Story points are a numerical estimation of the amount of effort that is required to complete a user story. Teams will generally vote and discuss the given task so that they can align themselves on the task and agree on a score. This system works so that the team can quantify the task at hand and appropriately assign it to one or multiple developers. +Story points are a numerical estimation of the amount of effort that is required to complete a user story. Teams will generally vote and discuss the given task so that they can align themselves and agree on a score. This system works so that the team can quantify the task at hand and appropriately assign it to one or multiple developers. -When deciding the necessary points to allocate to a story, there are generally 3 points that are taken into consideration. The following is outlined below: +When deciding the necessary points to allocate to a story, there are generally 3 points that are taken into consideration. These points are outlined below: - Complexity: The overall difficulty of the task - Risk: The margin for possible error or hidden tasks arising in the future @@ -46,7 +48,9 @@ By combining all of the sections above, we can create the following example user **Title:** Example User Story -**Points:** 5 +**Assignee:** Name(s) + +**Points:** (Numerical Value) **User Story:** As a \, I want \, so that \ From 4cfa3a3ccf6c849d8ee89435850d328b3ac55c15 Mon Sep 17 00:00:00 2001 From: parth-commits Date: Mon, 20 Mar 2023 21:16:42 -0400 Subject: [PATCH 106/206] formatting --- README.md | 1 + Topics/Development_Process.md | 1 + .../Development_Process/Frontend_Automated_Deployment_Vercel.md | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d4698e56f..17f877e2e 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ Potential Topics-- 3. Firebase 4. Digital Ocean 5. Software development best practices: + 6. Vercel Frontend Deployment (Automated) 1. Designer Patterns 2. Clean Coding 1. Choose a coding style and stick to it diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index f8e44651e..295798cb2 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -1,6 +1,7 @@ ## Resources for Development Process ### [Django Project Deployment: AWS, Vercel, and Railway](./Development_Process/Django_Deployment_AWS_Railway_Vercel.md) +### [Automated Frontend Deployment with Vercel](./Development_Process/Frontend_Automated_Deployment_Vercel.md) ## Build requirements ### [Requirements.txt](./Development_Process/Build_Requirements/Requirements_txt.md) diff --git a/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md b/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md index 4091ddac9..e1756e7e9 100644 --- a/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md +++ b/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md @@ -1,4 +1,4 @@ -# Using Vercel to host your Frontend the smart way +# Using Vercel to host your Frontend (Automated) ## Table of Contents ### 1. Introduction From d0971d13b0a1c069191c33bab08e2e5b5e90cdd4 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Mon, 20 Mar 2023 21:17:29 -0400 Subject: [PATCH 107/206] README update --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d4698e56f..c9bf4dd1b 100644 --- a/README.md +++ b/README.md @@ -66,5 +66,6 @@ Potential Topics-- 2. Areas of User Experience 3. Helpful Courses - Product Management + 1. User Stories - Other useful resources - Teamwork From 7e91ac8832c50898472d8814d86227653ecfa92d Mon Sep 17 00:00:00 2001 From: Nitin Mahtani <82001235+nitinmahtani@users.noreply.github.com> Date: Mon, 20 Mar 2023 21:40:14 -0400 Subject: [PATCH 108/206] Created Software_QA.md, intro, article skeleton Added links I want to include and the basic skeleton of the article (subtopics I want to talk about). --- Topics/Development_Process/QA_testing.md | 43 ++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Topics/Development_Process/QA_testing.md diff --git a/Topics/Development_Process/QA_testing.md b/Topics/Development_Process/QA_testing.md new file mode 100644 index 000000000..29b0844eb --- /dev/null +++ b/Topics/Development_Process/QA_testing.md @@ -0,0 +1,43 @@ +# QA Testing: What is it? Why should we do it? How do we do it? + +## Table of Contents: +### [Introduction](#introduction-1) +### [What is Software QA?](#what-is-software-qa-1) +### [Why should we test?](#why-should-we-test-1) +### [How to write test cases?](#how-to-write-test-cases-1) +### [Automated testing vs Manual testing](#automated-testing-vs-manual-testing-1) + +## Introduction + +This article will specifically focus on the testing portion of the development process. It is an essential and often overlooked part of this process and it will explain what software quality assurance or Software QA is, why it is an important part of the development process, how to do it and different methods of testing. +At the end of this article, a CSC301 student would have the basic understandings of Software QA and would be able to look into a career in the Software QA field. + + +## What is Software QA? + +The following paper is likely the greatest paper about software QA, however it is very long. Here are some of the main definitions and key takeaways: +- In order to make sure the released software is safe and functions as expected, the concept of software quality was introduced. It is often defined as “the degree of conformance to explicit or implicit requirements and expectations”. +- The purpose of QA is to set up adequate processes, introducing the standards of quality to prevent the errors and flaws in the product. This is slightly different to testing where the purpose is to detect and solve software errors and flaws. +- There are different levels of software testing, component/unit testing, integration testing, system testing then acceptance testing. + + [Quality Assurance, Quality Control and Testing — the Basics of Software Quality Management](https://www.altexsoft.com/whitepapers/quality-assurance-quality-control-and-testing-the-basics-of-software-quality-management/) + +This article gives a tease of what a software QA engineer is like, the different types of SQA engineers and their duties and responsibilities. It is the right article to figure out if you want a career in this field or you are interested in QA. +[What does a Software Quality assurance engineer do?](https://www.careerexplorer.com/careers/software-quality-assurance-engineer/) + +## Why should we test? + +Testing is a vital part of the software development life cycle. This very entertaining video shows what events prompted the creation of software testing and how it has changed. It highlights the importance of software testing as far back as 1999 with the "Y2K" problem. Every software engineer should know about this. +[Software testing explained](https://youtu.be/oLc9gVM8FBM) + + +[7 reasons why software testing is important](https://www.indiumsoftware.com/blog/why-software-testing/) + +## How to write test cases? +https://blog.testlodge.com/how-to-write-test-cases-for-software-with-sample/ + +https://www.coursera.org/articles/how-to-write-test-cases + +## Automated testing vs Manual testing + +https://www.perfecto.io/blog/automated-testing-vs-manual-testing-vs-continuous-testing#:~:text=In%20manual%20testing%2C%20a%20human,with%20other%20tools%20and%20software. From 98f1b72911ed944a3b198611eb3de03bc34ee0cb Mon Sep 17 00:00:00 2001 From: parth-commits Date: Mon, 20 Mar 2023 21:54:59 -0400 Subject: [PATCH 109/206] added links about webhooks --- .../Frontend_Automated_Deployment_Vercel.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md b/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md index e1756e7e9..6f854f9da 100644 --- a/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md +++ b/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md @@ -1,9 +1,9 @@ # Using Vercel to host your Frontend (Automated) ## Table of Contents -### 1. Introduction -### 2. The Issues -### 3. Step by step solution to issues +### [1. Introduction](#1-introduction) +### [2. The Issues](#2-the-issues) +### [3. Step by step solution to issues](#3-step-by-step-solution-to-issues) ## 1. Introduction @@ -125,6 +125,6 @@ Go to the `Actions` tab on your forked repo and click on the workflow you just c After the action runs, check to make sure its running corrcetly. If it is, then you are good to go! The action is triggered and will run every 30 minutes (or whatever time you've set it to). ### 3.5. Looking forward -This was nice, but the deployment only deploys after x minutes depending on the cron job. What if we want to deploy immediately after the main repo is updated? We can do this too. We can use a webhook to trigger the GitHub Action. This way, when the main repo is updated, the webhook will trigger the GitHub Action and the forked repo will be updated and deployed immediately. +This was nice, but the deployment only deploys after x minutes depending on the cron job. What if we want to deploy immediately after the main repo is updated? We can do this too. We can use a webhook to trigger the GitHub Action. This way, when the main repo is updated, the webhook will trigger the GitHub Action and the forked repo will be updated and deployed immediately. You can learn more about webhooks [here](https://docs.github.com/en/get-started/exploring-integrations/about-webhooks) and learn how to create them [here](https://docs.github.com/en/webhooks-and-events/webhooks/webhook-events-and-payloads). Another note, deploying off of your main branch (as shown in sample code above) may be a bad idea. If you are working on a project with other people, you may want to deploy off of a different branch. Developers do this in the industry all the time. They have a deployment branch that is different from the main or development branch. After they have enough features to deploy, they merge their code into the deployment branch. Then, they deploy off of the deployment branch. This way, they can deploy whenever they want without worrying about breaking the main branch. From d1f3573f3e580d1007eda861f6cf60d57b82b1aa Mon Sep 17 00:00:00 2001 From: parth-commits Date: Mon, 20 Mar 2023 21:59:00 -0400 Subject: [PATCH 110/206] fixed bug with linking --- .../Frontend_Automated_Deployment_Vercel.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md b/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md index 6f854f9da..404437c5f 100644 --- a/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md +++ b/Topics/Development_Process/Frontend_Automated_Deployment_Vercel.md @@ -1,9 +1,9 @@ # Using Vercel to host your Frontend (Automated) ## Table of Contents -### [1. Introduction](#1-introduction) -### [2. The Issues](#2-the-issues) -### [3. Step by step solution to issues](#3-step-by-step-solution-to-issues) +### [1. Introduction](#1-introduction-1) +### [2. The Issues](#2-the-issues-1) +### [3. Step by step solution to issues](#3-step-by-step-solution-to-issues-1) ## 1. Introduction From b26651df0d5a46fc100041c830fedd9116bee1c1 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Mon, 20 Mar 2023 21:59:13 -0400 Subject: [PATCH 111/206] Finalization of the entire document --- Topics/Product_Management.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index d04ab2823..d85f6b4cc 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -6,7 +6,7 @@ A user story is an informal description of a new feature or task in a software project. The purpose of a user story is to gauge how the particular feature will provide value from the perspective of the user. These stories generally exist within a larger set, and ultimately allow teams to organize their workflow in a user-centric manner. -User stories all follow a general structure, and are accompanied by their associated "Acceptance Criteria" and some additional details. Each section retains the customer focused philosophy of the user story, and consists of a few non-technical descriptive sentences. By combining these sections, user stories are able to effectively scope the entirety of their task. +User stories all follow a general structure and are accompanied by their associated "Acceptance Criteria" and some additional details. Each section retains the customer-focused philosophy of the user story and consists of a few non-technical descriptive sentences. By combining these sections, user stories are able to effectively scope the entirety of their task. ### Story Structure @@ -22,27 +22,32 @@ Each format has its own advantages and disadvantages. Teams will generally use t ### Acceptance Criteria -Acceptance criteria refers to a list of requirements that must be accomplished for a user story to be completed and closed. The purpose of acceptance criteria is to fully scope a user stories. This is important so that developers exactly what they need to output, and so that all stakeholders are satisfied. +Acceptance criteria refers to a set of requirements that must be accomplished for a user story to be completed and closed. The purpose of acceptance criteria is to fully scope user stories. This is important so that developers exactly what they need to output, and so that all stakeholders are satisfied. -The general formatting of acceptance criteria is not as strict as the formatting of the story itself. Firstly, all acceptance criteria should be clear, concise and readable. Beyond that, acceptance criteria should always be testable. This means that there are specific "yes/no" scenarios that can verify if the criteria has been implemented. Lastly, acceptance criteria should provide user perspective. +Like with the story itself, there are various ways to commonly organize acceptance criteria. The most common organizational strategy is the "Given/When/Then" method. This works similarly to the user story outlines, and can be utilized as follows: +``` +Given , when , the +``` + +The "Verifications List" methodology is another commonly used approach for organizing acceptance criteria. This includes a list of concise and testable criteria for ensuring that everything outlined in the user story has been properly implemented. These criteria can take the form of "yes/no" or "pass/fail", and must all be successful for the story to be considered as complete. -Beyond the conditions that are explicitly outlined in the acceptance criteria, there is an additionally layer of rules that must be met before a story can be completed. These conditions are generally referred to as the "Definition of Done", and are created and agreed upon by an entire team before being used. This acts as a general set of standards that act as quality control, so that they are met by each story before it can be considered shippable. +Beyond the conditions that are explicitly outlined in the acceptance criteria, there is an additional layer of rules that must be met before a story can be completed. These conditions are generally referred to as the "Definition of Done", and are created and agreed upon by an entire team before being used. This acts as a quality control for a teams entire codebase and ensures that developers maintain their proper implementation practices at all times. ### Story Points Story points are a numerical estimation of the amount of effort that is required to complete a user story. Teams will generally vote and discuss the given task so that they can align themselves and agree on a score. This system works so that the team can quantify the task at hand and appropriately assign it to one or multiple developers. -When deciding the necessary points to allocate to a story, there are generally 3 points that are taken into consideration. These points are outlined below: +When deciding the necessary points to allocate to a story, the following 3 factors are most commonly taken into consideration: - Complexity: The overall difficulty of the task - Risk: The margin for possible error or hidden tasks arising in the future - Repetition: The team's past experience with this line of work -These factors are not hard considerations, but some of the most common to consider in these situations. +It is not absolutely necessary for teams to follow these exact considerations. These are only common examples that have proven to be effective across various organizations. -### Example User Story +### User Story Template -By combining all of the sections above, we can create the following example user story: +By combining all of the sections above, we can create the following user story template: --- From 32d37b521253ee3f6616f857c5e9190029ad42a3 Mon Sep 17 00:00:00 2001 From: Samantha Pang Date: Mon, 20 Mar 2023 22:11:43 -0400 Subject: [PATCH 112/206] Fixed table of contents links --- Topics/Software_Engineering/Waterfall.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Topics/Software_Engineering/Waterfall.md b/Topics/Software_Engineering/Waterfall.md index d93a474c1..7e9ad2b54 100644 --- a/Topics/Software_Engineering/Waterfall.md +++ b/Topics/Software_Engineering/Waterfall.md @@ -1,12 +1,12 @@ # Waterfall Methodology ## Table of Contents: -#### [Introduction](#introduction) -#### [Common Phases in the Waterfall Model](#common-phases-in-the-waterfall-model) -#### [When to use the Waterfall Model?](#when-to-use-the-waterfall-model-) -#### [Advantages of Waterfall Project Management](#advantages-of-waterfall-project-management) -#### [Disadvantages of Waterfall Project Management](#disadvantages-of-waterfall-project-management) -#### [Resources](#resources) +#### [Introduction](#introduction-1) +#### [Common Phases in the Waterfall Model](#common-phases-in-the-waterfall-model-1) +#### [When to use the Waterfall Model](#when-to-use-the-waterfall-model-1) +#### [Advantages of Waterfall Project Management](#advantages-of-waterfall-project-management-1) +#### [Disadvantages of Waterfall Project Management](#disadvantages-of-waterfall-project-management-1) +#### [Resources](#resources-1) ## Introduction Waterfall methodology, also known as the Waterfall model, is a linear sequential development process. This traditional project management approach occurs where each phase flows like a waterfall. Each phase must be completed before the next begins. @@ -23,7 +23,7 @@ Despite having critics and supporters since its inception, the Waterfall model i *In-depth description and what deliverables are expected at each phase: [link](https://www.softwaretestinghelp.com/what-is-sdlc-waterfall-model/)* -## When to use the Waterfall Model? +## When to use the Waterfall Model The Waterfall model is a traditional form of project management, allowing for thorough planning and detailed documentation. The Waterfall model is most suited for projects where the requirements are constant and won't change regularly, meaning the project has a well-defined end goal. The tools and technology are consistent and stay the same. The project isn't restrained by a budget or deadline, allowing the team to spend quality time on the initial phases, requirements and system design to finalize a well-defined project plan. From 93bda630af4f0aebaef3d42a5df1516746f8e13e Mon Sep 17 00:00:00 2001 From: Jonathan Date: Mon, 20 Mar 2023 22:31:43 -0400 Subject: [PATCH 113/206] Added "Resources and Articles" section --- Topics/Product_Management.md | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index d85f6b4cc..d349148ca 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -14,17 +14,17 @@ The majority of user stories are written to follow a general outline or pattern. ``` As a , I want , so that ``` -There are many other popular formats that are derivations of the one above. However, other non-standard formats can also be used, such as the W5 example below: +There are many other popular formats that are derivations of the one above. However, other non-standard formats can also be used, such as this W5 example below: ``` As , I want because ``` -Each format has its own advantages and disadvantages. Teams will generally use the format that fits their goals best and delivers the most value. +Each format has its own advantages and disadvantages. Teams will generally use the format that best fits their goals and delivers the most value. ### Acceptance Criteria -Acceptance criteria refers to a set of requirements that must be accomplished for a user story to be completed and closed. The purpose of acceptance criteria is to fully scope user stories. This is important so that developers exactly what they need to output, and so that all stakeholders are satisfied. +Acceptance criteria refers to a set of requirements that must be accomplished for a user story to be completed and closed. The purpose of acceptance criteria is to fully scope user stories. This is important so that developers know exactly what they need to output, and so that all stakeholders are satisfied. -Like with the story itself, there are various ways to commonly organize acceptance criteria. The most common organizational strategy is the "Given/When/Then" method. This works similarly to the user story outlines, and can be utilized as follows: +Like with user stories, there are various ways to commonly organize acceptance criteria. The most common organizational strategy is the "Given/When/Then" method. This works similarly to the examples in the section above: ``` Given , when , the ``` @@ -61,4 +61,13 @@ By combining all of the sections above, we can create the following user story t **Acceptance Criteria:** Given \, when \, the \ ---- \ No newline at end of file +--- + +### Resources and Articles + +- [User Stories; Examples and Template - Atlassian](https://www.atlassian.com/agile/project-management/user-stories#:~:text=software%20user's%20perspective.-,A%20user%20story%20is%20an%20informal%2C%20general%20explanation%20of%20a,value%20back%20to%20the%20customer.) +- [User Stories and User Story Examples - Mike Cohn](https://www.mountaingoatsoftware.com/agile/user-stories) +- [Acceptance Criteria for User Stories: Purposes, Formats, Examples, and Best Practices - AltexSoft](https://www.altexsoft.com/blog/business/acceptance-criteria-purposes-formats-and-best-practices/) +- [What is Acceptance Criteria? - ProductPlan](https://www.productplan.com/glossary/acceptance-criteria/#:~:text=Acceptance%20Criteria%20Definition%201%3A%20%E2%80%9CConditions,meet.%E2%80%9D%20(via%20Google)) +- [What Are Agile Story Points? - Mike Cohn](https://www.mountaingoatsoftware.com/blog/what-are-story-points) +- [Story Points and Estimation - Atlassian](https://www.atlassian.com/agile/project-management/estimation) \ No newline at end of file From 213d8feacf06b3367f2e696dccec0b98b5e15739 Mon Sep 17 00:00:00 2001 From: THLi3 <31786494+THLi3@users.noreply.github.com> Date: Mon, 20 Mar 2023 22:39:01 -0400 Subject: [PATCH 114/206] changed structure format as requested --- Topics/Tech_Stacks.md | 1 + Topics/Tech_Stacks/React.md | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 Topics/Tech_Stacks/React.md diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index acf455d04..30f38e38a 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,3 +1,4 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) +### [React Resources](./Tech_Stacks/Learning_MySQL.md) \ No newline at end of file diff --git a/Topics/Tech_Stacks/React.md b/Topics/Tech_Stacks/React.md new file mode 100644 index 000000000..adcf7989f --- /dev/null +++ b/Topics/Tech_Stacks/React.md @@ -0,0 +1,37 @@ +## Tech Stacks + +### React Overview +React is a Javascript library used to build user interfaces. As such, you're going to have to know HTML, CSS and Javascript in order to learn React. +It's ease of use and popularity comes from how little you actually have to code. Easily applicable for any frontend interface, if you're going to use any library/framework for frontend development, React is the safest option. + +### React Resources + +These frontend challenges for HTML, CSS and JavaScript will help you review core skills while also making interesting projects as well. \ +https://www.frontendmentor.io/ + + +Basic React tutorial provided by the official React website. This tutorial will guide you through a very basic tutorial that you can do straight from your browser. \ +https://reactjs.org/tutorial/tutorial.html + + +React tutorial by MDN Web Docs. Useful readings for if you have time, but not necessary by any means.\ +https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started + + +Javascript frameworks tutorial provided by Microsoft. Useful readings, but not necessary to learn React. \ +https://learn.microsoft.com/en-us/windows/dev-environment/javascript/ + + +1 hour in depth tutorials about React. These Youtube crash course provides a great in depth look at React and the various important components that you will be using most often. Very useful if you are learning React under a strict time limit for whatever reason. \ +https://www.youtube.com/watch?v=w7ejDZ8SWv8 \ +https://www.youtube.com/watch?v=b9eMGE7QtTk + + +Online development environment to try React out in (Among other frontend tools). Great for testing the waters with React to see if it will be something you want to learn or not. \ +https://codepen.io/ + + +Host your React websites straight from your Github repo. Website hosting is fairly expensive, so this is here as a free alternative for website deployment. \ +https://pages.github.com/ + + From baac597010fc21d9301f7a2f74c9e17f97c0ab02 Mon Sep 17 00:00:00 2001 From: THLi3 <31786494+THLi3@users.noreply.github.com> Date: Mon, 20 Mar 2023 23:03:51 -0400 Subject: [PATCH 115/206] linked react.md --- Topics/Tech_Stacks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 30f38e38a..f0c1011f3 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,4 +1,4 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) -### [React Resources](./Tech_Stacks/Learning_MySQL.md) \ No newline at end of file +### [React Resources](./Tech_Stacks/React.md) \ No newline at end of file From fe9d1d85056e7afeb61964b0cd291c3a0786bdc9 Mon Sep 17 00:00:00 2001 From: Nitin Mahtani <82001235+nitinmahtani@users.noreply.github.com> Date: Mon, 20 Mar 2023 23:09:45 -0400 Subject: [PATCH 116/206] Added summaries for the links --- Topics/Development_Process/QA_testing.md | 30 +++++++++++++++--------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/Topics/Development_Process/QA_testing.md b/Topics/Development_Process/QA_testing.md index 29b0844eb..38b6d6114 100644 --- a/Topics/Development_Process/QA_testing.md +++ b/Topics/Development_Process/QA_testing.md @@ -5,39 +5,47 @@ ### [What is Software QA?](#what-is-software-qa-1) ### [Why should we test?](#why-should-we-test-1) ### [How to write test cases?](#how-to-write-test-cases-1) -### [Automated testing vs Manual testing](#automated-testing-vs-manual-testing-1) + ## Introduction -This article will specifically focus on the testing portion of the development process. It is an essential and often overlooked part of this process and it will explain what software quality assurance or Software QA is, why it is an important part of the development process, how to do it and different methods of testing. +This article will specifically focus on the testing portion of the development process. It is an essential and often overlooked part of this process and it will explain what software quality assurance or Software QA is, why it is an important part of the development process and how to do it. At the end of this article, a CSC301 student would have the basic understandings of Software QA and would be able to look into a career in the Software QA field. ## What is Software QA? -The following paper is likely the greatest paper about software QA, however it is very long. Here are some of the main definitions and key takeaways: +[Quality Assurance, Quality Control and Testing — the Basics of Software Quality Management](https://www.altexsoft.com/whitepapers/quality-assurance-quality-control-and-testing-the-basics-of-software-quality-management/) + +This paper is likely the greatest paper about software QA, however it is quite long. Here are some of the main definitions and key takeaways: - In order to make sure the released software is safe and functions as expected, the concept of software quality was introduced. It is often defined as “the degree of conformance to explicit or implicit requirements and expectations”. - The purpose of QA is to set up adequate processes, introducing the standards of quality to prevent the errors and flaws in the product. This is slightly different to testing where the purpose is to detect and solve software errors and flaws. - There are different levels of software testing, component/unit testing, integration testing, system testing then acceptance testing. - [Quality Assurance, Quality Control and Testing — the Basics of Software Quality Management](https://www.altexsoft.com/whitepapers/quality-assurance-quality-control-and-testing-the-basics-of-software-quality-management/) This article gives a tease of what a software QA engineer is like, the different types of SQA engineers and their duties and responsibilities. It is the right article to figure out if you want a career in this field or you are interested in QA. [What does a Software Quality assurance engineer do?](https://www.careerexplorer.com/careers/software-quality-assurance-engineer/) ## Why should we test? -Testing is a vital part of the software development life cycle. This very entertaining video shows what events prompted the creation of software testing and how it has changed. It highlights the importance of software testing as far back as 1999 with the "Y2K" problem. Every software engineer should know about this. -[Software testing explained](https://youtu.be/oLc9gVM8FBM) +Testing is a vital part of the software development life cycle. +[This very entertaining video](https://youtu.be/oLc9gVM8FBM) shows what events prompted the creation of software testing and how it has changed. The first few minutes of the video is what I would like to call attention to. It highlights the importance of software testing as far back as 1999 with the "Y2K" problem. Every software engineer should know about this. + +There are many reasons why software testing is important. This blog [7 reasons why software testing is important](https://www.indiumsoftware.com/blog/why-software-testing/) summarizes it into 7 different reasons: +- Helps in Saving money: Finding a bug, especially when it is found early in the development process reduces costs considerably. +- Security: Oftentimes software can be vulnerable to attack, or the information of users can be stolen. It is important to avoid this with proper testing. +- Quality of product: The product should function in a complete manner to ensure effective customer experience. +- Satisfaction of the Customer: This should be the primary objective of the owner and if the customer is not happy then they will use another product. +- Enhance the development process: Quality assurance allows for the developer to find a wide array of scenarios and errors. +- Easy while adding new features: When changing old code it can sometimes break it without the developer knowing. Testing is a great way to give the developer some confidence when adding a new feature. +- Determining the performance of the software: If your application has a low or reduced perfomance, it will bring a bad reputation in the market. Software testing can help identify these issues before users do. -[7 reasons why software testing is important](https://www.indiumsoftware.com/blog/why-software-testing/) ## How to write test cases? -https://blog.testlodge.com/how-to-write-test-cases-for-software-with-sample/ -https://www.coursera.org/articles/how-to-write-test-cases +[This article](https://www.coursera.org/articles/how-to-write-test-cases) describes how you should think about creating test cases. It describes a test case vs test scenario, the various types of test cases and then, more importantly, a 10 step guide on how to write a test cases. -## Automated testing vs Manual testing +Now that you know how to think about creating test cases it is important to also know how to write a test case. More specifically, how to describe the test case so it is easily understood. This is extremely useful for anyone who develops test. This is one of the skills that separates the good SQA engineers from the great ones. +Here is a [short blog](https://blog.testlodge.com/how-to-write-test-cases-for-software-with-sample/) on how to write your test cases. -https://www.perfecto.io/blog/automated-testing-vs-manual-testing-vs-continuous-testing#:~:text=In%20manual%20testing%2C%20a%20human,with%20other%20tools%20and%20software. From 32469c8ccf7231537e23b1118990a9be4a1032cb Mon Sep 17 00:00:00 2001 From: Nitin Mahtani <82001235+nitinmahtani@users.noreply.github.com> Date: Mon, 20 Mar 2023 23:15:13 -0400 Subject: [PATCH 117/206] added QA_testing.md link --- Topics/Development_Process.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index f8e44651e..08fac8707 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -2,6 +2,8 @@ ### [Django Project Deployment: AWS, Vercel, and Railway](./Development_Process/Django_Deployment_AWS_Railway_Vercel.md) +### [Quality Assurance testing](./Development_Process/QA_testing.md) + ## Build requirements ### [Requirements.txt](./Development_Process/Build_Requirements/Requirements_txt.md) From 50cfca2b0bb0a4fdfba8c31bab8045dd3238abe1 Mon Sep 17 00:00:00 2001 From: Nitin Mahtani <82001235+nitinmahtani@users.noreply.github.com> Date: Mon, 20 Mar 2023 23:17:45 -0400 Subject: [PATCH 118/206] Updated readme to include qa testing --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d4698e56f..f4dd57358 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ Potential Topics-- 1. Choose a coding style and stick to it 3. SOLID Principles 4. Code Smells + 5. QA testing - Professionalism 1. Customer engagement 1. Meeting best practices From 2512676f30682c3afb4fa0776d20fee5c51b558a Mon Sep 17 00:00:00 2001 From: Shayaan Khan <52991192+shayaanmk@users.noreply.github.com> Date: Mon, 20 Mar 2023 23:39:12 -0400 Subject: [PATCH 119/206] Update Product_Management.md Adding a brief overview of the product management role and linked a couple of articles that would be useful for CSC301 students as beginners. --- Topics/Product_Management.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index 4089ba741..dc49330a4 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -1 +1,8 @@ ## Resources for Product Management + +#### Basic Overview +Product management is an essential part of the software development lifecycle, as much a key part as the technical side to software engineering. The essence of product management is to be able to develop a new product, with a clearly defined roadmap and goals/milestones outlined from the requirements of the customer - keeping a clear view of the overall vision and strategy. This is different to the role of a project manager, who is responsible for the internal organization and operation of the development team, to make sure goals are achieved and timelines are met. + + The following article outlines the product manager role and responsibilities, the main points that it entails and some tools and methologies to promote successful product management practices: [Product Management: Main Stages and Product Manager Role](https://www.altexsoft.com/blog/business/product-management-main-stages-and-product-manager-role/#:~:text=Product%20management%20is%20a%20process,development%2C%20marketing%2C%20and%20sales.) + + This article goes into a little bit further detail from a beginner's perspective on steps to take to become a successful product manager: [Product Manager: The role and best practices for beginners](https://www.atlassian.com/agile/product-management/product-manager) From 40e267665bf20f8711c4f058d38de590a64a2ca6 Mon Sep 17 00:00:00 2001 From: Angada28 Date: Mon, 20 Mar 2023 23:46:10 -0400 Subject: [PATCH 120/206] Added Angular Resources --- Topics/Tech_Stacks.md | 1 + Topics/Tech_Stacks/Angular.md | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 Topics/Tech_Stacks/Angular.md diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index acf455d04..9b1cca964 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,3 +1,4 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) +### [Angular Resources](./Tech_Stacks/Angular.md) diff --git a/Topics/Tech_Stacks/Angular.md b/Topics/Tech_Stacks/Angular.md new file mode 100644 index 000000000..eed6da23d --- /dev/null +++ b/Topics/Tech_Stacks/Angular.md @@ -0,0 +1,24 @@ +# Angular + +## Table of contents +### [Introduction](#introduction-1) +### [Resources](#resources-1) + +## Introduction +Angualr is a framework which allows people to create responsive single page web apps. It is built on TypeScript and can be used to build scalable web apps, has a collection of well-integrated libraries which cover many features and several tools to help build, test and maintain your code. With Angular you can create single-page-application where you have a single html file where changes are rendered in the browser. Familiarity with HTML/CSS as well as JavaScript/TypeScript will be needed while building your web app. + +## Additional Resources +Official Angular documentation can be found here. \ +https://angular.io/docs + +Sololearn offers a free Angular course. \ +https://www.sololearn.com/learning/1092 + +udemy also offers a deeper and more comprehensive Angular course although you do have to pay for it. \ +https://www.udemy.com/course/the-complete-guide-to-angular-2/ + +stackblitz is a great way to test your code online for free with your github account. \ +https://stackblitz.com/ + +Angular also has its own set of official sources which can be found here. \ +https://angular.io/resources?category=community \ No newline at end of file From 3736454de0fb91991be20152a8fe63c7683609b4 Mon Sep 17 00:00:00 2001 From: Angada28 Date: Mon, 20 Mar 2023 23:49:01 -0400 Subject: [PATCH 121/206] Fixed typo --- Topics/Tech_Stacks/Angular.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks/Angular.md b/Topics/Tech_Stacks/Angular.md index eed6da23d..57cfaf4c3 100644 --- a/Topics/Tech_Stacks/Angular.md +++ b/Topics/Tech_Stacks/Angular.md @@ -5,7 +5,7 @@ ### [Resources](#resources-1) ## Introduction -Angualr is a framework which allows people to create responsive single page web apps. It is built on TypeScript and can be used to build scalable web apps, has a collection of well-integrated libraries which cover many features and several tools to help build, test and maintain your code. With Angular you can create single-page-application where you have a single html file where changes are rendered in the browser. Familiarity with HTML/CSS as well as JavaScript/TypeScript will be needed while building your web app. +Angular is a framework which allows people to create responsive single page web apps. It is built on TypeScript and can be used to build scalable web apps, has a collection of well-integrated libraries which cover many features and several tools to help build, test and maintain your code. With Angular you can create single-page-application where you have a single html file where changes are rendered in the browser. Familiarity with HTML/CSS as well as JavaScript/TypeScript will be needed while building your web app. ## Additional Resources Official Angular documentation can be found here. \ From a405927297b98ec7d3e9b3e1fc93a5880acca071 Mon Sep 17 00:00:00 2001 From: Angada28 Date: Mon, 20 Mar 2023 23:56:00 -0400 Subject: [PATCH 122/206] added space to resolve conflict --- Topics/Tech_Stacks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 9b1cca964..df7c3e287 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,4 +1,5 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) + ### [Angular Resources](./Tech_Stacks/Angular.md) From 4861cd25d53ca27f8ede59d7ccfaf930aa2839bb Mon Sep 17 00:00:00 2001 From: Richard202019Wang <82163830+Richard202019Wang@users.noreply.github.com> Date: Mon, 20 Mar 2023 23:57:48 -0400 Subject: [PATCH 123/206] Update Professionalism.md --- Topics/Professionalism.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Topics/Professionalism.md b/Topics/Professionalism.md index bdc10431e..05ad312f4 100644 --- a/Topics/Professionalism.md +++ b/Topics/Professionalism.md @@ -1 +1,3 @@ ## Professionalism + +# Importance of professionalism in software engineering From 2f4cff2e7c358aa031ef5dc21c7ee7b971345a0d Mon Sep 17 00:00:00 2001 From: Richard202019Wang <82163830+Richard202019Wang@users.noreply.github.com> Date: Tue, 21 Mar 2023 00:07:43 -0400 Subject: [PATCH 124/206] Update Professionalism.md --- Topics/Professionalism.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Topics/Professionalism.md b/Topics/Professionalism.md index 05ad312f4..2e95f6934 100644 --- a/Topics/Professionalism.md +++ b/Topics/Professionalism.md @@ -1,3 +1,9 @@ ## Professionalism # Importance of professionalism in software engineering + +### Introduction to professionalism in software engineering +Professionalism in software engineering is a combination of technical expertise, adherence to ethical standards, and exhibiting behaviors that reflect positively on oneself and the software development community. It involves taking responsibility for one's work, communicating effectively, and continuously improving one's skills. + +### Definition of professionalism +Professionalism can be defined as the conduct, behavior, and attitude exhibited by individuals in a professional setting. In software engineering, professionalism includes a range of behaviors that demonstrate a commitment to delivering high-quality work, effective collaboration, and maintaining ethical standards. From c5585983cf491793be18ac36af0c45fd2830844a Mon Sep 17 00:00:00 2001 From: Angada28 Date: Tue, 21 Mar 2023 00:08:52 -0400 Subject: [PATCH 125/206] added more space --- Topics/Tech_Stacks.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index df7c3e287..999f52664 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -2,4 +2,6 @@ ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) + + ### [Angular Resources](./Tech_Stacks/Angular.md) From 6c990c9fa338cdd4573037527df301cddfb931b9 Mon Sep 17 00:00:00 2001 From: Haarowww <75808020+Haarowww@users.noreply.github.com> Date: Tue, 21 Mar 2023 00:14:13 -0400 Subject: [PATCH 126/206] Update Ant Design tutorial in user experience --- Topics/User_Experience.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 657c85853..c378b78c6 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -25,3 +25,29 @@ ___Color Theory___ ### Helpful Courses There are many courses related to User Experience. This includes the U of T Course [The Design of Interactive Computational Media](https://artsci.calendar.utoronto.ca/course/csc318h1) which is highly recommended if interested in this topic. [The Design of Interactive Computational Media](https://artsci.calendar.utoronto.ca/course/csc318h1) expands on the work done before coding projects. For example, one of the projects is testing how users would interact with a prototype of a UI and modifying it so that the UX is better for the user. + +### Tools Can Be Used In UX Design + +In addition to Bootstrap, Ant Design is another popular UI library and design system. It is specifically designed for React applications, providing a complete set of high-quality React components that make user interface development simpler, more consistent, and modular. Ant Design is ideal for building enterprise-level applications and dashboards with a focus on high performance, usability, and aesthetics. + +Ant Design provides a wide range of UI components, including buttons, icons, form elements, tables, and navigation menus. It also offers a consistent design language, making it easier for developers to create appealing user interfaces. The design ensures that your applications look great on different devices and screen sizes. More importantly, it is easy to use for beginners. Following steps are provided for you to start using Ant Design in your project. + +First, you need to install Ant Design in your React application. You can do this by running the following command: + +**npm install antd** + +Next, you may want to import the components you want to use in your application. For example, if you want to change the style for your button in a webpage, simply import Button from antd package. + +**import { Button } from 'antd';** + +Finally, you are done. All you need to do is use the imported components in your application. Besides, Ant Design allows you to customize the default theme by modifying the less variables. For instance, you can use tools like 'craco-less' or 'react-app-rewired' to customize your theme without ejecting from Create React App. + +If you want to learn more about Ant Design. There are some useful documents or tutorials that can help you get started with Ant Design. + +- [Ant Design official documentation](https://ant.design/docs/react/introduce): Actually, official documentation is always an excellent starting point for you to get started with an unfamiliar tool. It provides a comprehensive guide on installation, components, and customization. If you meet a trouble in using a component, read this guide! + +- [ANT DESIGN - THE BEST REACT LIBRARY??](https://www.youtube.com/watch?v=IEqmSROj5Uc): This tutorial video can show you every basic thing about Ant Design in 5 minutes. After watching this video, you can have an overview about Ant Design. + +- [Reactjs with AntDesign](https://www.youtube.com/playlist?list=PL-JTnqZPF5z2qTGwNkYln3m0pA0qfgHFR): This playlist contains almost every useful components that you might want to use in your project. It is good for beginners to learn the usage of components and apply them step by step. + +By following these tutorials, I hope you can gain a solid understanding of how to use Ant Design in your React projects and create attractive, user-friendly interfaces. From ca6ff7a82e0093063937b125bb5ab287efb53b6f Mon Sep 17 00:00:00 2001 From: Richard202019Wang <82163830+Richard202019Wang@users.noreply.github.com> Date: Tue, 21 Mar 2023 00:29:56 -0400 Subject: [PATCH 127/206] Add my three topics related to Professionalism Finish A3 from Adding links to external resources that provide insight into professional development, such as articles, blog posts, or podcasts.Providing examples of best practices for maintaining a professional demeanor in various situations, including remote work environments and client interactions.Creating a page that outlines the importance of professionalism in software engineering, including examples of professional behavior and ethics. --- Topics/Professionalism.md | 58 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/Topics/Professionalism.md b/Topics/Professionalism.md index 2e95f6934..3c290bd20 100644 --- a/Topics/Professionalism.md +++ b/Topics/Professionalism.md @@ -7,3 +7,61 @@ Professionalism in software engineering is a combination of technical expertise, ### Definition of professionalism Professionalism can be defined as the conduct, behavior, and attitude exhibited by individuals in a professional setting. In software engineering, professionalism includes a range of behaviors that demonstrate a commitment to delivering high-quality work, effective collaboration, and maintaining ethical standards. + +### The role of ethics in software engineering +Ethics play a significant role in software engineering as they guide engineers in making responsible decisions that impact users, clients, and colleagues. Ethical considerations include data privacy, security, accessibility, and fairness, ensuring that the software development process benefits all stakeholders without causing harm. + +### Examples of professional behavior and ethics + +1. Adherence to coding standards: Consistently following established coding standards and best practices ensures that the code is readable, maintainable, and efficient. + +2. Clear and concise communication: Effectively conveying ideas, requirements, and progress updates to team members, clients, and other stakeholders fosters understanding and collaboration. + +3. Time management and meeting deadlines: Managing one's workload, prioritizing tasks, and delivering work on time demonstrates commitment and reliability. + +4. Accountability and responsibility for one's work: Owning one's mistakes, learning from them, and taking necessary corrective actions reflects maturity and professionalism. + +5. Collaborative and respectful teamwork: Treating colleagues with respect, actively listening to their ideas, and collaborating to achieve common goals contributes to a positive and productive work environment. + +6. Continuous learning and skill development: Pursuing ongoing learning opportunities and staying updated with industry trends and advancements showcases dedication to one's craft and adaptability. + +# External resources for professional development + +Here are the external resources for professional development: + +### Articles: +1. https://ethics.acm.org/code-of-ethics/software-engineering-code/ ----- "Teaching and Learning Guide for: Software Engineering Ethics" by Don Gotterbarn, ACM SIGCAS Computers and Society +2. https://medium.com/geekculture/soft-skills-for-software-engineers-part-2-get-things-done-cb41a49b9958 ---- Soft Skills for Software Engineers — Part 2: Get Things Done by Andrei Vlasiuk +3. https://medium.com/geekculture/soft-skills-for-software-engineers-part-3-effective-mindset-d9072d6ae7f9 ------ Soft Skills for Software Engineers — Part 3: Effective Mindset by Andrei Vlasiuk + + +### Blogs: +1. https://www.pluralsight.com/blog/it-ops/training-tips-for-it-pros ----- 4 reasons IT pros need to train (even when they think they don't) By Don Jones on August 17, 2015 + +### Podcasts: +https://www.podchaser.com/podcasts/software-engineering-daily-62587 ----- Software Engineering Daily - Daily interviews about technical software topics. + + +# Best practices for maintaining a professional demeanor in various situations + +Professionalism is essential in all aspects of software engineering, and maintaining a professional demeanor across various situations is crucial for career success. Below are examples of best practices to maintain a professional demeanor in remote work environments and client interactions. + +### Remote work environments +1. Establish a dedicated workspace: Create a separate, distraction-free area for work to maintain focus and productivity. +2. Set boundaries: Clearly define your work hours and communicate them to your household members or roommates to minimize interruptions. +3. Maintain a regular schedule: Following a consistent routine helps manage time effectively and maintain work-life balance. +4. Stay organized: Use productivity tools like task managers, calendars, and note-taking apps to keep track of tasks, deadlines, and meetings. +5. Communicate effectively with team members: Utilize appropriate communication channels, provide timely updates, and engage in virtual meetings to stay connected and aligned with the team. +6. Invest in reliable technology: Ensure that your computer, internet connection, and other essential tools are up to date and reliable to avoid technical issues during work. + +### Client interactions +1 Active listening: Pay attention to the client's needs and concerns, and ask clarifying questions to ensure a clear understanding of their requirements. +2. Professional appearance: Dress appropriately for video calls and ensure your background is tidy and uncluttered to present a professional image. +3. Setting realistic expectations: Communicate the scope, timeline, and potential challenges of a project upfront to avoid miscommunications and manage expectations. +4. Provide regular updates: Keep clients informed about project progress, milestones, and any changes or obstacles that may affect the project's outcome. +5. Delivering high-quality work: Strive for excellence in your work, thoroughly test your code, and address any issues promptly to ensure client satisfaction. +6. Handle difficult situations with grace: If conflicts or misunderstandings arise, remain calm, listen to the client's concerns, and work collaboratively to find a solution. + +By implementing these best practices, you can maintain a professional demeanor in various situations, enhancing your reputation as a software engineer and fostering positive relationships with colleagues and clients. + + From 8fd685c40d6cb74e0da22e881dccf1e8a8e2d5d9 Mon Sep 17 00:00:00 2001 From: Richard202019Wang <82163830+Richard202019Wang@users.noreply.github.com> Date: Tue, 21 Mar 2023 00:47:37 -0400 Subject: [PATCH 128/206] Update Professionalism.md --- Topics/Professionalism.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Topics/Professionalism.md b/Topics/Professionalism.md index 3c290bd20..3b384eb3c 100644 --- a/Topics/Professionalism.md +++ b/Topics/Professionalism.md @@ -41,6 +41,9 @@ Here are the external resources for professional development: ### Podcasts: https://www.podchaser.com/podcasts/software-engineering-daily-62587 ----- Software Engineering Daily - Daily interviews about technical software topics. +### School Source: +You can ask ASIP program ambassadors for help to provide related materials on how to become a professional software engineering. I cannot add the links here since the resources from ASIP are not open to public. + # Best practices for maintaining a professional demeanor in various situations From 094327d3bb209e6f70aa2b93f731c19f96e7f7b5 Mon Sep 17 00:00:00 2001 From: Richard202019Wang <82163830+Richard202019Wang@users.noreply.github.com> Date: Tue, 21 Mar 2023 00:48:31 -0400 Subject: [PATCH 129/206] Update Professionalism.md --- Topics/Professionalism.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Professionalism.md b/Topics/Professionalism.md index 3b384eb3c..188cfd949 100644 --- a/Topics/Professionalism.md +++ b/Topics/Professionalism.md @@ -41,7 +41,7 @@ Here are the external resources for professional development: ### Podcasts: https://www.podchaser.com/podcasts/software-engineering-daily-62587 ----- Software Engineering Daily - Daily interviews about technical software topics. -### School Source: +### School Resources: You can ask ASIP program ambassadors for help to provide related materials on how to become a professional software engineering. I cannot add the links here since the resources from ASIP are not open to public. From f47108f49f6d1e3ae566c776f172ca222010fbb1 Mon Sep 17 00:00:00 2001 From: Richard202019Wang <82163830+Richard202019Wang@users.noreply.github.com> Date: Tue, 21 Mar 2023 00:51:57 -0400 Subject: [PATCH 130/206] Update Professionalism.md --- Topics/Professionalism.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Topics/Professionalism.md b/Topics/Professionalism.md index 188cfd949..e5f65b1b4 100644 --- a/Topics/Professionalism.md +++ b/Topics/Professionalism.md @@ -8,6 +8,8 @@ Professionalism in software engineering is a combination of technical expertise, ### Definition of professionalism Professionalism can be defined as the conduct, behavior, and attitude exhibited by individuals in a professional setting. In software engineering, professionalism includes a range of behaviors that demonstrate a commitment to delivering high-quality work, effective collaboration, and maintaining ethical standards. +Also the definition of software engineering professionalism: Software engineering professionalism is a movement to make software engineering a profession, with aspects such as degree and certification programs, professional associations, professional ethics, and government licensing. (From Wekipedia: https://en.wikipedia.org/wiki/Software_engineering_professionalism) + ### The role of ethics in software engineering Ethics play a significant role in software engineering as they guide engineers in making responsible decisions that impact users, clients, and colleagues. Ethical considerations include data privacy, security, accessibility, and fairness, ensuring that the software development process benefits all stakeholders without causing harm. @@ -65,6 +67,9 @@ Professionalism is essential in all aspects of software engineering, and maintai 5. Delivering high-quality work: Strive for excellence in your work, thoroughly test your code, and address any issues promptly to ensure client satisfaction. 6. Handle difficult situations with grace: If conflicts or misunderstandings arise, remain calm, listen to the client's concerns, and work collaboratively to find a solution. +### Additional practices: +You can find additional practices on this website: https://engineerscanada.ca/professional-practice-in-software-engineering + By implementing these best practices, you can maintain a professional demeanor in various situations, enhancing your reputation as a software engineer and fostering positive relationships with colleagues and clients. From 93b61552b1d7c54b165831c185b867c1a349a8cc Mon Sep 17 00:00:00 2001 From: Shayaan Khan <52991192+shayaanmk@users.noreply.github.com> Date: Tue, 21 Mar 2023 11:03:53 -0400 Subject: [PATCH 131/206] Update Product_Management.md --- Topics/Product_Management.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index dc49330a4..8e8c6f4d7 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -1,8 +1,14 @@ ## Resources for Product Management -#### Basic Overview +### Beginner's guide to product management and becoming a successful product manager Product management is an essential part of the software development lifecycle, as much a key part as the technical side to software engineering. The essence of product management is to be able to develop a new product, with a clearly defined roadmap and goals/milestones outlined from the requirements of the customer - keeping a clear view of the overall vision and strategy. This is different to the role of a project manager, who is responsible for the internal organization and operation of the development team, to make sure goals are achieved and timelines are met. +Some key features of a successful product manager: +* Able to efficiently and clearly prioritize tasks. +* Understand the product, people and environment that you are working with. +* Guide your development team without being authoritative. +* If you are making tradeoffs, be sure to explain and outline the opportunity cost. + The following article outlines the product manager role and responsibilities, the main points that it entails and some tools and methologies to promote successful product management practices: [Product Management: Main Stages and Product Manager Role](https://www.altexsoft.com/blog/business/product-management-main-stages-and-product-manager-role/#:~:text=Product%20management%20is%20a%20process,development%2C%20marketing%2C%20and%20sales.) This article goes into a little bit further detail from a beginner's perspective on steps to take to become a successful product manager: [Product Manager: The role and best practices for beginners](https://www.atlassian.com/agile/product-management/product-manager) From 38329d05667f01650f91c94afd7b9180b42e22b6 Mon Sep 17 00:00:00 2001 From: sarihammad <63919507+sarihammad@users.noreply.github.com> Date: Tue, 21 Mar 2023 11:06:26 -0400 Subject: [PATCH 132/206] Added changes --- Topics/Tech_Stacks/Django_Rest.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/Topics/Tech_Stacks/Django_Rest.md b/Topics/Tech_Stacks/Django_Rest.md index 33b6f0933..fa8344709 100644 --- a/Topics/Tech_Stacks/Django_Rest.md +++ b/Topics/Tech_Stacks/Django_Rest.md @@ -12,7 +12,9 @@ Django Rest Framework is a popular library for building RESTful APIs with Django ### Set-Up - We first set up the virtual environment and activate it using ```python3 -m venv myenv ``` and ```source myenv/bin/activate``` respectively in the project directory. + We first Install virtualenv by running ```python3 -m pip install virtualenv```. This will ensure that we have the necessary package installed to create and manage virtual environments. + + We now set up the virtual environment and activate it using ```python3 -m virtualenv –p `which python3.11` venv ``` and ```source venv/bin/activate``` respectively in the project directory. Note that ```-p `which python3.11` ``` is placed to avoid common issues with python file directory locations. Also, you can replace `python3.11` with the latest available version of python. We now install Django and Django Rest Framework using the command ```pip install django djangorestframework```. @@ -60,7 +62,7 @@ class TodoItem(models.Model): completed = models.BooleanField(default=False) ``` -Next, we'll create a serializer to convert our model instances to JSON. We now create a new file called serializers.py in the app API folder and add the following code: +Assuming we want to create an API for your TodoItem model that allows clients to create, read, update, and delete TodoItem instances. We may define a serializer class in serializers.py in the app API folder that converts TodoItem instances to JSON. We add the following code in serializers.py: ``` {python} from rest_framework import serializers @@ -72,6 +74,8 @@ class TodoItemSerializer(serializers.ModelSerializer): fields = ('id', 'title', 'completed') ``` +The code above converts instances of the Todo model to JSON format so that they can be returned in HTTP responses. This is where the TodoItemSerializer class comes in. It is defined in the serializers.py file and inherits from the ModelSerializer class provided by Django Rest Framework and defines the fields that should be serialized and the model that the serializer should be based on. In our case, we want to serialize the id, title, and completed fields of the TodoItem model, so we include these fields in the Meta class of the serializer. + Next, we'll create a view to handle incoming HTTP requests (GET, POST, PUT, PATCH and DELETE). We create a new file called views.py in the API app folder and add the following code: ``` {python} @@ -80,14 +84,18 @@ from .models import TodoItem from .serializers import TodoItemSerializer class TodoItemList(ListCreateAPIView): - queryset = TodoItem.objects.all() serializer_class = TodoItemSerializer + + def get_queryset(self): + return TodoItem.objects.filter(completed=True) class TodoItemDetail(RetrieveUpdateDestroyAPIView): - queryset = TodoItem.objects.all() serializer_class = TodoItemSerializer + queryset = TodoItem.objects.all() + ``` +The code above uses the TodoItemSerializer we previously created to convert the instances to the correct JSON format. To illustrate further on this and its use cases, we consider the TodoItemList view and note that it queries the database by filtering Todo items that are completed. We do this by overriding the get_queryset method of the ListCreateAPIView class and return only the TodoItem instances where completed is True, i.e., Todo item is completed, using the filter method: ```TodoItem.objects.filter(completed=True)```. This way, when the TodoItemList view is accessed with a GET request, only the completed TodoItem instances will be returned in the response. Finally, we can add a URL configuration for our API. We create a new file called urls.py in the API app folder and add the following code: @@ -101,7 +109,7 @@ urlpatterns = [ ] ``` -All in all, we have now built a simple API with the ability to list, create, update and delete todo list items. One can test the API by starting the Django development server using ``` python manage. py runserver ``` and visiting http://localhost:8000/todos/ in a web browser. +All in all, we have now built a simple API with the ability to list, create, update and delete todo list items. One can test the API by starting the Django development server using ``` python3 manage.py runserver ``` and visiting http://localhost:8000/todos/ in a web browser. ### Extra Resources From b03e28319b3bc9bfd2bd50f46bf46a56ee4e545e Mon Sep 17 00:00:00 2001 From: Shayaan Khan <52991192+shayaanmk@users.noreply.github.com> Date: Tue, 21 Mar 2023 11:07:32 -0400 Subject: [PATCH 133/206] Update README.md Added my topic to the main README contents page --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 17f877e2e..f3603f1e4 100644 --- a/README.md +++ b/README.md @@ -67,5 +67,6 @@ Potential Topics-- 2. Areas of User Experience 3. Helpful Courses - Product Management + 1. Beginner's guide to product management and becoming a successful product manager - Other useful resources - Teamwork From 345b1f41589b6dc6f4bdeb682f968b3ad368cb49 Mon Sep 17 00:00:00 2001 From: Jaren Worme <90414176+jarenworme@users.noreply.github.com> Date: Tue, 21 Mar 2023 16:36:10 -0400 Subject: [PATCH 134/206] Update Tech_Stacks.md --- Topics/Tech_Stacks.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index acf455d04..ab34425f0 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,3 +1,4 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) +### [Learning JavaScript](./TechStacks/JavaScript.md) From 4a5fda03bf21204e1135ae515d5ec29433655fce Mon Sep 17 00:00:00 2001 From: Jaren Worme <90414176+jarenworme@users.noreply.github.com> Date: Tue, 21 Mar 2023 16:37:14 -0400 Subject: [PATCH 135/206] Update Tech_Stacks.md --- Topics/Tech_Stacks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index ab34425f0..740cb956d 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,4 +1,4 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) -### [Learning JavaScript](./TechStacks/JavaScript.md) +### [Learning JavaScript](./Tech_Stacks/JavaScript.md) From 5ce686440b6a7a400ec9f88ebc645f5b60d37509 Mon Sep 17 00:00:00 2001 From: Jaren Worme <90414176+jarenworme@users.noreply.github.com> Date: Tue, 21 Mar 2023 16:40:02 -0400 Subject: [PATCH 136/206] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d4698e56f..70b0cdd1c 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Following files are present in this directory. You may contribute to any of thes Potential Topics-- - Tech stacks + 1. JavaScript - Software Tools 1. Git 1. Git Workflows From 015fbe3c68d1dc9c4c6c67a49fa54204702bd0e1 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Tue, 21 Mar 2023 19:42:01 -0400 Subject: [PATCH 137/206] Remove header --- Topics/Product_Management.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index d349148ca..6d59a6f00 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -1,5 +1,3 @@ -## Resources for Product Management - ## User Stories ### Introduction From a27d49dd412ba1816db739ae190b2691a2e059e2 Mon Sep 17 00:00:00 2001 From: Kenneth Tran <10101154+kennethtran77@users.noreply.github.com> Date: Tue, 21 Mar 2023 23:17:00 -0400 Subject: [PATCH 138/206] Added explanations to example --- Topics/Development_Process/React_Testing_Library.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Development_Process/React_Testing_Library.md b/Topics/Development_Process/React_Testing_Library.md index ca45833f5..09598a8fc 100644 --- a/Topics/Development_Process/React_Testing_Library.md +++ b/Topics/Development_Process/React_Testing_Library.md @@ -13,7 +13,7 @@ Additionally, it is a good idea to design tests that mimic the way a user would ## Example with React Native -The following test is one way to test a successful login action. After pressing the button, the test tries to find a "Logout" button on the screen that should have been rendered. +The following test is one way to test a successful login action. After pressing the button, the test tries to find a "Logout" button on the screen that should have been rendered. There are many other ways to do this depending on your application screens, but the goal of the test is to detect some change in the screen that only could have occured if the login was successful. ``` it("should redirect to home page when logged in successfully", async () => { From e90f07a6ae37b87c4fe89200a1c9b372347e823b Mon Sep 17 00:00:00 2001 From: jeremiahwong007 <73967834+jeremiahwong007@users.noreply.github.com> Date: Tue, 21 Mar 2023 23:49:53 -0400 Subject: [PATCH 139/206] PostgreSQL and psycopg2 --- Topics/Tech_Stacks.md | 1 + Topics/Tech_Stacks/PostgreSQL_psycopg2.md | 63 +++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 Topics/Tech_Stacks/PostgreSQL_psycopg2.md diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index d37422b95..b235d6554 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -4,3 +4,4 @@ ### [How to access and use salesforce API](./Tech_Stacks/salesforce_api.md) ### [React Resources](./Tech_Stacks/React.md) ### [Angular Resources](./Tech_Stacks/Angular.md) +### [Learning PostgreSQL and psycopg2](./Tech_Stacks/PostgreSQL_psycopg2.md) \ No newline at end of file diff --git a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md new file mode 100644 index 000000000..c31200f0c --- /dev/null +++ b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md @@ -0,0 +1,63 @@ +# Learning PostgreSQL and psycopg2 + +### Prerequisites +Before learning about PostgreSQL and psycopg2, ensure that you have knowledge about the following: +- [Python](https://www.python.org/): High level general purpose programming language. +- Relational Algebra and Database Theory (e.g. What is a relation? What is a query?) + +### Introduction +PostgreSQL is an open-source DBMS. As the name states, PostgreSQL is a relational DBMS based on relations and queries and is great for dealing with large amounts of data and complex queries. It's also good for referencing data quickly and allowing the user to have some flexibility in how they want to represent their data. Furthermore, PostgreSQL supports table inheritance and function overloading. + +pyscopg2 is an adapter for Python that allows you to easily integrate PostgreSQL into your program. It's commonly used with other Python libraries like Flask, which allows you to use a PostgreSQL database in you application easily. + +### PostgreSQL and psycopg2 installation +The following link is to download PostgreSQL onto your computer: https://www.postgresql.org/download/ . This link also shows the different versions of PostgreSQL to match your computer. Follow the instructions after downloading. For your convenience, here is the links to download the installer for PostgreSQL on different OS: +- Windows: https://www.postgresql.org/download/windows/ +- MacOS: https://www.postgresql.org/download/macosx/ +- Linux: https://www.postgresql.org/download/linux/ + +Once installed, you can create a database, relation, and tables with the PostgreSQL client called "pgAdmin". You can also perform queries on relations and tables through its query tool. More information on how to use pgAdmin can be found from this [link](https://www.pgadmin.org/docs/pgadmin4/6.21/index.html). + + +To install psycopg2, you can use pip to install its funcionality by using the command: +"pip install psycopg2". After installing this in your desired directory, you can import psycopg2 into your python files and perform PostgreSQL queries very intuitively. + +### Basic Operations +A very very quick and basic runover of PostgreSQL. + +To select data from a certain column in a table, you can use a query like: +``` + SELECT column1, column2 FROM table_name; +``` +This gives you a smaller table that only contains column1 and column2 from your selected table in your relation. + +You can also merge two different tables by changing the FROM clause to contain 2 tables: +``` + SELECT col1_table1, col2_table2 FROM table1_name, table2_name; +``` +This operation, first, performs a cross product between table1 and table2, where every row of one table is matched with every other row the other table. Then it selects the data present in the new cross products table from columns col1_table1 and col2_table2. + +In addition, you can perform filtering on tables: +``` +SELECT col1_table1, col2_table2 FROM table1_name, table2_name WHERE col1_table1 > 1; +``` +Here it only shows that data from the previous table where the value of col1_table1 is greater than 1. This is the syntax for when the table and column names between table 1 and table 2 are unique. + +Specifics of syntax of PostreSQL can be found in this [link](https://www.postgresql.org/docs/current/sql-syntax.html). + +As a quick runover, to start using PostgreSQL in you Python script, you must first setup the psycopg2 module in the Python file. + +This can be done by: + +1. + +Specifics of syntax and module use of psycopg2 can be found in this [link](https://www.psycopg.org/docs/usage.html#passing-parameters-to-sql-queries). The syntax that involves making queries in psycopg2 is the same as PostgreSQL. + + + +### psycopg2 integration + +Here is a link on operations and commands to use psycopg2 in Python: +https://pynative.com/python-postgresql-tutorial/#h-python-postgresql-database-connection + +### Additional Resources \ No newline at end of file From a5e7d1c2c74cf886e71e9cdead0d6b40b8780b28 Mon Sep 17 00:00:00 2001 From: Berjis Karbhari <68819197+BKPrograms@users.noreply.github.com> Date: Wed, 22 Mar 2023 00:22:10 -0400 Subject: [PATCH 140/206] Added Axios.md Discussed Axios and it's uses, along with providing code examples and resource links --- Topics/Tech_Stacks/Axios.md | 78 +++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 Topics/Tech_Stacks/Axios.md diff --git a/Topics/Tech_Stacks/Axios.md b/Topics/Tech_Stacks/Axios.md new file mode 100644 index 000000000..1ec765f90 --- /dev/null +++ b/Topics/Tech_Stacks/Axios.md @@ -0,0 +1,78 @@ +# Axios: An all-in-one HTTP tool + +## What is Axios? + +Axios is a JavaScript framework that enables developers to send a variety of HTTP requests, performs automatic and contextual serialization of response data, protects +against [XSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery) attacks, and even allows for request cancellation amongst much more. It can be used in both +the backend and frontend of a full stack application, making it a versatile addition to any JavaScript based application. + +## Quick setup and Installation: +If you are using npm the installation command is simply: + +``` +npm install axios +``` + +If you are using yarn: + +``` +yarn add axios +``` + +Once installed, make sure to include the following at the top of any .js file that makes use of axios: + +``` JavaScript +const axios = require('axios'); +``` + +## Examples: +Here are a few examples of common use cases of Axios: + +### Sending a GET request and working with it's response (Using Arrow functions): + +``` JavaScript +Axios.get("https://www.website.com").then( +(res) => { console.log(res.data); } // This just logs response data but you would do much more +).catch( +(err) => { console.log(err); } // In the case of an error, we would need to provide some kind of handler +) +``` + +You can also use regular functions as opposed to Arrow functions, as demonstrated in the next section + +### Sending a POST request and working with it's response (Using Regular functions): + +``` JavaScript +Axios.post("https://www.website.com", someData).then( + function(res){ + console.log(res.data); + } +).catch( + function(err){ + console.log(err); + } +) +``` + +Along with `.get()` and `.post()`, Axios also supports `.put()`, `.patch()`, `.delete()`, and the entirety of the HTTP request frameworks. + +### Using async and await to send form data: + +``` JavaScript +await Axios.post('https://website.com', { + username: 'User1', + password: '12345' + }, { + headers: { + 'Content-Type': 'multipart/form-data' + } + } +) +``` +Axios also supports `async` and `await` so that we can wait for the necessary data and for the state of the connection to be valid. + +## Some Useful Links: +* [Official Axios Documentation](https://axios-http.com/docs/intro) +* [Axios Tutorial](https://www.youtube.com/watch?v=6LyagkoRWYA) +* [Axios GitHub](https://github.com/axios/axios) +* [A thorough article on Axios requests](https://reflectoring.io/tutorial-guide-axios/) From fd50d668f97e446d1577fc372c5afe0394a614af Mon Sep 17 00:00:00 2001 From: jeremiahwong007 <73967834+jeremiahwong007@users.noreply.github.com> Date: Wed, 22 Mar 2023 00:30:06 -0400 Subject: [PATCH 141/206] Added some more information on installation and queries. PostgreSQL and psycopg2. --- Topics/Tech_Stacks/PostgreSQL_psycopg2.md | 35 ++++++++++++++--------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md index c31200f0c..36ebd0155 100644 --- a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md +++ b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md @@ -18,6 +18,11 @@ The following link is to download PostgreSQL onto your computer: https://www.pos Once installed, you can create a database, relation, and tables with the PostgreSQL client called "pgAdmin". You can also perform queries on relations and tables through its query tool. More information on how to use pgAdmin can be found from this [link](https://www.pgadmin.org/docs/pgadmin4/6.21/index.html). +If you are using MacOS, you can also run the command "brew install postgresql" in your terminal. Note that you also have to have Homebrew installed for this command to work. "brew install postgresql" allows the user to use PostgreSQL on their command line by simply initiating a PostgreSQL environment with the command "psql". + +For windows users, it's better for the user to download PostgreSQL through the link provided above. If the user wants to utilize PostgreSQL on the command line, they must (after installation): +1. Add the PostgreSQL bin directory path to the PATH environment variable. +2. Run the command "psql -U username" To install psycopg2, you can use pip to install its funcionality by using the command: "pip install psycopg2". After installing this in your desired directory, you can import psycopg2 into your python files and perform PostgreSQL queries very intuitively. @@ -27,7 +32,7 @@ A very very quick and basic runover of PostgreSQL. To select data from a certain column in a table, you can use a query like: ``` - SELECT column1, column2 FROM table_name; + SELECT col_name1, col_name2 FROM table_name; ``` This gives you a smaller table that only contains column1 and column2 from your selected table in your relation. @@ -43,21 +48,25 @@ SELECT col1_table1, col2_table2 FROM table1_name, table2_name WHERE col1_table1 ``` Here it only shows that data from the previous table where the value of col1_table1 is greater than 1. This is the syntax for when the table and column names between table 1 and table 2 are unique. -Specifics of syntax of PostreSQL can be found in this [link](https://www.postgresql.org/docs/current/sql-syntax.html). - -As a quick runover, to start using PostgreSQL in you Python script, you must first setup the psycopg2 module in the Python file. - -This can be done by: - -1. +There are many other features of PostgreSQL. -Specifics of syntax and module use of psycopg2 can be found in this [link](https://www.psycopg.org/docs/usage.html#passing-parameters-to-sql-queries). The syntax that involves making queries in psycopg2 is the same as PostgreSQL. +Specifics of syntax of PostgreSQL can be found in this [link](https://www.postgresql.org/docs/current/sql-syntax.html). +As a quick runover, to start using PostgreSQL in a Python program, you must first setup the psycopg2 module in a Python file. +This can be done by: -### psycopg2 integration +1. Create a database in PostgreSQL +Next, all steps are in your python script. +2. "import psycopg2" at the start of your python script. +3. Connect to the new database by running, for example : "conn = psycopg2.connect("dbname=test user=postgres")" +4. Initialize a cursor with the connection to be able to perform PostgreSQL operations on the database. You can do this by "cur = conn.cursor()" +5. You can execute any PostgreSQL command through this cursor. For example: "cur.execute("SELECT * FROM test;")". +6. You can use "conn.commit()" to save the changes to your database. + +Specifics of syntax, such as passing in python variables as values in a query, and module use of psycopg2 can be found in this [link](https://www.psycopg.org/docs/usage.html#passing-parameters-to-sql-queries). The syntax that involves making queries in psycopg2 is the same as PostgreSQL. -Here is a link on operations and commands to use psycopg2 in Python: -https://pynative.com/python-postgresql-tutorial/#h-python-postgresql-database-connection +There are good examples in the link provided. Here is a link with even more examples to aid you in using psycopg2: https://wiki.postgresql.org/wiki/Psycopg2_Tutorial -### Additional Resources \ No newline at end of file +### Additional Resources +- This link provides some information on how to link psycopg2 and flask: https://www.geeksforgeeks.org/making-a-flask-app-using-a-postgresql-database/ From ec9fb1049b281e195165aa1165941561166db592 Mon Sep 17 00:00:00 2001 From: jeremiahwong007 <73967834+jeremiahwong007@users.noreply.github.com> Date: Wed, 22 Mar 2023 00:33:16 -0400 Subject: [PATCH 142/206] changed prerequisites --- Topics/Tech_Stacks/PostgreSQL_psycopg2.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md index 36ebd0155..63cd9f543 100644 --- a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md +++ b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md @@ -3,7 +3,9 @@ ### Prerequisites Before learning about PostgreSQL and psycopg2, ensure that you have knowledge about the following: - [Python](https://www.python.org/): High level general purpose programming language. -- Relational Algebra and Database Theory (e.g. What is a relation? What is a query?) +- Relational Algebra +- Database Theory +- Basic understanding of SQL ### Introduction PostgreSQL is an open-source DBMS. As the name states, PostgreSQL is a relational DBMS based on relations and queries and is great for dealing with large amounts of data and complex queries. It's also good for referencing data quickly and allowing the user to have some flexibility in how they want to represent their data. Furthermore, PostgreSQL supports table inheritance and function overloading. From 9778255cf45d6fc8f0a85dde799b5f5e9c94d7b4 Mon Sep 17 00:00:00 2001 From: Ansh Malhotra <67304812+Ansh757@users.noreply.github.com> Date: Wed, 22 Mar 2023 00:34:52 -0400 Subject: [PATCH 143/206] Edited the User Experience Page. Added the Responsive Design under Areas of User Experience --- Topics/User_Experience.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 657c85853..722f4d87b 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -2,7 +2,7 @@ ### Overview -User experience is a large and broad topic. It covers the overall experience of the user and how they interact with software systems and applications. The confusing part is that UI and UX design, while related can also be totally different. For example, UI could be how the interface is designed whereas UX is more about how users interact with the said design. +User experience is a large and broad topic. It covers the overall experience of the user and how they interact with software systems and applications. The main focus of User Experience is to make assessible, easy to follow, user-friendly, and be adaptable to the user's needs. Although, there is no set standard rules that make up a "Great" User Experience, it often differs on the product and the consumers that are using the products. It is very often confused with UI (User Interface) and UX design, while related can also be totally different. For example, UI could be how the interface is designed whereas UX is more about how users interact with the said design. There are many notable links differentiating the two areas. Here is one of the related websites. - [The Definition of User Experience](https://www.nngroup.com/articles/definition-user-experience/) @@ -21,6 +21,14 @@ ___Established Norms___ ___Color Theory___ - [Colors Influence Choice](https://usabilitygeek.com/colour-user-experience-psychology/#:~:text=Colour%20plays%20a%20crucial%20role,and%20identified%20with%20your%20industry.): Users are shown certain colors to enforce actions. For example, red is commonly linked to aggressive or bad emotions and as such can be used as a cancel to dissuade people from refunding items. +___Responsive Design___ +- [Responsive Design](https://devrix.com/tutorial/important-responsive-design/): Demonstrates important and benefits of responsive design, flexiblity they provide, easiblity for the consumers upon making the said software. + +### Additional UX + +There are some things that have become a crucial part in making a software: Universal Design Principles. +___Accessiblity Features___ +- [Universal Design Principles](https://www.buffalo.edu/access/help-and-support/topic3/universaldesignprinciples.html): This article provides the 7 Universal Design Principle that makes a software accessible to all users, which plays a important role in diversifying the User Experience. ### Helpful Courses From c95052e09e07e4b3b84c7380a652c917e2b10f9c Mon Sep 17 00:00:00 2001 From: jeremiahwong007 <73967834+jeremiahwong007@users.noreply.github.com> Date: Wed, 22 Mar 2023 00:36:14 -0400 Subject: [PATCH 144/206] clarifying sentences --- Topics/Tech_Stacks/PostgreSQL_psycopg2.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md index 63cd9f543..886462058 100644 --- a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md +++ b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md @@ -36,7 +36,7 @@ To select data from a certain column in a table, you can use a query like: ``` SELECT col_name1, col_name2 FROM table_name; ``` -This gives you a smaller table that only contains column1 and column2 from your selected table in your relation. +This gives you a smaller table that only contains the columns "col_name1" and "col_name2" from your selected table in your relation. You can also merge two different tables by changing the FROM clause to contain 2 tables: ``` @@ -48,7 +48,7 @@ In addition, you can perform filtering on tables: ``` SELECT col1_table1, col2_table2 FROM table1_name, table2_name WHERE col1_table1 > 1; ``` -Here it only shows that data from the previous table where the value of col1_table1 is greater than 1. This is the syntax for when the table and column names between table 1 and table 2 are unique. +Here it only shows that data from the previous table where the value of a row in the column "col1_table1" is greater than 1. This is the syntax for when the table and column names between table 1 and table 2 are unique. There are many other features of PostgreSQL. From 9fe7c7351bc6e3eff890c8d6833e3403a5d83aaa Mon Sep 17 00:00:00 2001 From: jeremiahwong007 <73967834+jeremiahwong007@users.noreply.github.com> Date: Wed, 22 Mar 2023 00:46:54 -0400 Subject: [PATCH 145/206] grammar --- Topics/Tech_Stacks/PostgreSQL_psycopg2.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md index 886462058..c0589ab28 100644 --- a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md +++ b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md @@ -10,10 +10,10 @@ Before learning about PostgreSQL and psycopg2, ensure that you have knowledge ab ### Introduction PostgreSQL is an open-source DBMS. As the name states, PostgreSQL is a relational DBMS based on relations and queries and is great for dealing with large amounts of data and complex queries. It's also good for referencing data quickly and allowing the user to have some flexibility in how they want to represent their data. Furthermore, PostgreSQL supports table inheritance and function overloading. -pyscopg2 is an adapter for Python that allows you to easily integrate PostgreSQL into your program. It's commonly used with other Python libraries like Flask, which allows you to use a PostgreSQL database in you application easily. +pyscopg2 is an adapter for Python that allows you to easily integrate PostgreSQL into your program. It's commonly used with other Python libraries like Flask, which allows you to use a PostgreSQL database in your application easily. ### PostgreSQL and psycopg2 installation -The following link is to download PostgreSQL onto your computer: https://www.postgresql.org/download/ . This link also shows the different versions of PostgreSQL to match your computer. Follow the instructions after downloading. For your convenience, here is the links to download the installer for PostgreSQL on different OS: +The following link is to download PostgreSQL onto your computer: https://www.postgresql.org/download/ . This link also shows the different versions of PostgreSQL to match your computer. Follow the instructions after downloading. For your convenience, here are the links to download the installer for PostgreSQL on different OS: - Windows: https://www.postgresql.org/download/windows/ - MacOS: https://www.postgresql.org/download/macosx/ - Linux: https://www.postgresql.org/download/linux/ @@ -22,11 +22,11 @@ Once installed, you can create a database, relation, and tables with the Postgre If you are using MacOS, you can also run the command "brew install postgresql" in your terminal. Note that you also have to have Homebrew installed for this command to work. "brew install postgresql" allows the user to use PostgreSQL on their command line by simply initiating a PostgreSQL environment with the command "psql". -For windows users, it's better for the user to download PostgreSQL through the link provided above. If the user wants to utilize PostgreSQL on the command line, they must (after installation): +For Windows users, it's better for the user to download PostgreSQL through the link provided above. If the user wants to utilize PostgreSQL on the command line, they must (after installation): 1. Add the PostgreSQL bin directory path to the PATH environment variable. 2. Run the command "psql -U username" -To install psycopg2, you can use pip to install its funcionality by using the command: +To install psycopg2, you can use pip to install its functionality by using the command: "pip install psycopg2". After installing this in your desired directory, you can import psycopg2 into your python files and perform PostgreSQL queries very intuitively. ### Basic Operations @@ -42,17 +42,17 @@ You can also merge two different tables by changing the FROM clause to contain 2 ``` SELECT col1_table1, col2_table2 FROM table1_name, table2_name; ``` -This operation, first, performs a cross product between table1 and table2, where every row of one table is matched with every other row the other table. Then it selects the data present in the new cross products table from columns col1_table1 and col2_table2. +This operation, first, performs a cross product between table1 and table2, where every row of one table is matched with every other row of the other table. Then it selects the data present in the new cross-products table from columns col1_table1 and col2_table2. In addition, you can perform filtering on tables: ``` SELECT col1_table1, col2_table2 FROM table1_name, table2_name WHERE col1_table1 > 1; ``` -Here it only shows that data from the previous table where the value of a row in the column "col1_table1" is greater than 1. This is the syntax for when the table and column names between table 1 and table 2 are unique. +Here it only shows data from the previous table where the value of a row in the column "col1_table1" is greater than 1. This is the syntax for when the table and column names between table 1 and table 2 are unique. There are many other features of PostgreSQL. -Specifics of syntax of PostgreSQL can be found in this [link](https://www.postgresql.org/docs/current/sql-syntax.html). +Specifics of the syntax of PostgreSQL can be found in this [link](https://www.postgresql.org/docs/current/sql-syntax.html). As a quick runover, to start using PostgreSQL in a Python program, you must first setup the psycopg2 module in a Python file. @@ -61,7 +61,7 @@ This can be done by: 1. Create a database in PostgreSQL Next, all steps are in your python script. 2. "import psycopg2" at the start of your python script. -3. Connect to the new database by running, for example : "conn = psycopg2.connect("dbname=test user=postgres")" +3. Connect to the new database by running, for example: "conn = psycopg2.connect("dbname=test user=postgres")" 4. Initialize a cursor with the connection to be able to perform PostgreSQL operations on the database. You can do this by "cur = conn.cursor()" 5. You can execute any PostgreSQL command through this cursor. For example: "cur.execute("SELECT * FROM test;")". 6. You can use "conn.commit()" to save the changes to your database. From 9cfab6e84965a301138be634a29bdadfd63bc61c Mon Sep 17 00:00:00 2001 From: Eric Zhu Date: Sat, 18 Mar 2023 17:57:01 -0400 Subject: [PATCH 146/206] Add Automated Testing on the DevOps Development Process file The addition are for the automated testing on the devops portion of the `Development_Process.md` file. It goes over background of automated testing and various frameworks for unit testing and integration testing. --- Topics/Development_Process.md | 3 + .../Development_Process/Automated_Testing.md | 67 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 Topics/Development_Process/Automated_Testing.md diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index 58342d4fc..9d3b15b4e 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -2,6 +2,8 @@ ### [Django Project Deployment: AWS, Vercel, and Railway](./Development_Process/Django_Deployment_AWS_Railway_Vercel.md) +### [Automated Testing](./Development_Process/Automated_Testing.md) + ## SOLID PRINCIPLES: SOLID is a mnemonic acronym that represents a set of five very important software development principles which lead to code that is easier to read, maintain, and extend, leading to higher-quality software that is easier to evolve over time. @@ -21,3 +23,4 @@ The SOLID principles are: ## Resource that gives examples of the uses cases of SOLID principles LINK : https://www.youtube.com/watch?v=_jDNAf3CzeY + diff --git a/Topics/Development_Process/Automated_Testing.md b/Topics/Development_Process/Automated_Testing.md new file mode 100644 index 000000000..0de52072b --- /dev/null +++ b/Topics/Development_Process/Automated_Testing.md @@ -0,0 +1,67 @@ +### Automated Testing + +Automated testing is an important part of industry software engineering development, and is +virtually present at all major companies. While in certain companies, this role will be covered by a +dedicated QA team, in others, it will be the responsibility of the developers themselves, e.g., at +Amazon. Regardless, understanding and being able to write unit tests is important for a SWE to be +able to communicate and standby their code. + +The automated testing process is part of the wider build/development process and is usually run as +part of the CI/CD pipeline. The ultimate goal of automated testing is to ensure that the code +functions as expected, and that any changes to the codebase do not break existing functionality. + +As background, most companies to implement their CI/CD pipeline with their Git implementation (of +which are usually internal), and so we will be talking about unit testing and integration testing +from the point of you pushing your code to a Git repository. So imagine that all of these tests will +be executed from the moment that you push your code to your project repository. + +Further, there are usually "pipelines" for each project (e.g., +[AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome-introducing.html)), +and each of your code commits "flows" through your project pipeline. Generally, pipelines are +usually composed of a series of "stages" that are executed sequentially. For example, after some +cloud machine builds your code, the first testing stage might be to run the unit tests, and the +second testing stage might be to run the integration tests. These setups vary from project to +project, and you may be able to override passing criteria, but testing can lead credence to your +implementation, and can support allow your code to promote (pass on to) production. + +![AWS CodePipeline Diagram](https://docs.aws.amazon.com/images/codepipeline/latest/userguide/images/pipeline-elements-workflow-application.png) + +#### Unit Testing + +Unit tests are meant to test your code commit(s) specifically, rather than dependencies and other modules that +may be present in the code base. So unit tests go well with the +[microservices architecture](https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/microservices). +The industry will use various frameworks for unit testing, depending on the stack, e.g., language. +For example, Python uses [unittest](https://docs.python.org/3/library/unittest.html), Java uses +[JUnit](https://junit.org/junit5/) or [Mockito](https://site.mockito.org/), and +JavaScript/TypeScript uses [Jest](https://jestjs.io/). A good choice is one that supports mocking, +spies, and other features that allow you to avoid testing 3rd party function calls (don't run them). +Instead you should assume some expected behaviour from 3rd party function calls, and write tests +that cover every "branch" of your code (code coverage). With that stated, some resources for the +most important parts of unit testing are: + +- **Test Coverage**: + - Atlassian: [What is Test Coverage?](https://www.atlassian.com/continuous-delivery/software-testing/code-coverage) + - Microsoft: [Code Coverage](https://learn.microsoft.com/en-us/visualstudio/test/using-code-coverage-to-determine-how-much-code-is-being-tested?view=vs-2022&tabs=csharp) +- **Unit Test Cases**: + - Guru99: [Unit Testing Tutorial](https://www.guru99.com/unit-testing-guide.html) + - AWS Unit Testing: [Getting started with testing serverless applications](https://aws.amazon.com/blogs/compute/getting-started-with-testing-serverless-applications/) + - Coursera: [How to Write Test Cases: A Step-by-Step QA Guide](https://www.coursera.org/articles/how-to-write-test-cases) +- **Mocking**: + - Mocking in Python: [Mocking in Python](https://realpython.com/python-mock-library/) + - Mocking in Java: [Mockito Tutorial](https://www.vogella.com/tutorials/Mockito/article.html) + - Mocking in JavaScript: [A guide to module mocking with Jest](https://www.emgoto.com/mocking-with-jest/) + +#### Integration Testing + +Integration testing, in contrast to unit testing, is meant to verify that your code works with other components/modules/services. We want to test that overall the entire system works as expected. They often execute after setting a production-like environment, and integration test frameworks can differ between projects, but while there aren't really any ubiquitous integration testing specific frameworks, services like CircleCI can help automate the process, and [Selenium](https://www.selenium.dev/) is a popular tool for testing web applications. Some resources for the most important parts of integration testing approaches are: + +- **General**: + - Guru99: [Integration Testing Tutorial](https://www.guru99.com/integration-testing.html) + - Educative: [What are the different approaches to integration testing?](https://www.educative.io/edpresso/what-are-the-different-approaches-to-integration-testing) +- **Big Bang Approach**: + - Educative: [What is big bang testing?](https://www.educative.io/edpresso/what-is-big-bang-testing) +- **Incremental Approach**: + - Educative: [What is incremental testing?](https://www.educative.io/edpresso/what-is-incremental-testing) +- **Sandwich/Hybrid Approach**: + - Educative: [What is the hybrid testing approach?](https://www.educative.io/answers/what-is-hybrid-integration-testing) \ No newline at end of file From cf78319b83ce34920c0ff7ee45222f31af5ca46d Mon Sep 17 00:00:00 2001 From: Eric Zhu Date: Wed, 22 Mar 2023 01:18:40 -0400 Subject: [PATCH 147/206] Fix issue with automated testing link placement --- Topics/Development_Process.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index c771e0061..50cf286a5 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -2,12 +2,11 @@ ### [Django Project Deployment: AWS, Vercel, and Railway](./Development_Process/Django_Deployment_AWS_Railway_Vercel.md) ### [Automated Frontend Deployment with Vercel](./Development_Process/Frontend_Automated_Deployment_Vercel.md) +### [Automated Testing](./Development_Process/Automated_Testing.md) ## Build requirements ### [Requirements.txt](./Development_Process/Build_Requirements/Requirements_txt.md) -### [Automated Testing](./Development_Process/Automated_Testing.md) - ## SOLID PRINCIPLES: SOLID is a mnemonic acronym that represents a set of five very important software development principles which lead to code that is easier to read, maintain, and extend, leading to higher-quality software that is easier to evolve over time. From 2bd1562112f752dc8e688d2db284108287160459 Mon Sep 17 00:00:00 2001 From: Saad Afridi Date: Wed, 22 Mar 2023 02:12:51 -0400 Subject: [PATCH 148/206] Linked Docker Page in Development_Process.md --- Topics/Development_Process.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index f8e44651e..232ccf7c1 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -2,6 +2,8 @@ ### [Django Project Deployment: AWS, Vercel, and Railway](./Development_Process/Django_Deployment_AWS_Railway_Vercel.md) +### [Getting Started With Docker](./Development_Process/Docker.md) + ## Build requirements ### [Requirements.txt](./Development_Process/Build_Requirements/Requirements_txt.md) From bbaac9355dca54f369c7c6ea13aaa8396f8213b1 Mon Sep 17 00:00:00 2001 From: Saad Afridi <64696754+saad-afridi@users.noreply.github.com> Date: Wed, 22 Mar 2023 02:15:02 -0400 Subject: [PATCH 149/206] Minor grammar fix in Docker.md Co-authored-by: Lucia <37385317+lmg8@users.noreply.github.com> --- Topics/Development_Process/Docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Development_Process/Docker.md b/Topics/Development_Process/Docker.md index 54f598954..5eaa1487a 100644 --- a/Topics/Development_Process/Docker.md +++ b/Topics/Development_Process/Docker.md @@ -45,7 +45,7 @@ Now you might want a React Container to communicate with a containerized Flask A ## Other Resources -Here's a [cheat sheet](https://docs.docker.com/get-started/docker_cheatsheet.pdf) of all useful Docker CLI commands and here's a [cheat sheet](https://devhints.io/docker-compose) for docker compose which should help you in your future endeavors All the best! +Here's a [cheat sheet](https://docs.docker.com/get-started/docker_cheatsheet.pdf) of all useful Docker CLI commands and here's a [cheat sheet](https://devhints.io/docker-compose) for docker compose which should help you in your future endeavors. All the best! ---- From e2d3d09768dfad531702262a7f9d367b0459b59c Mon Sep 17 00:00:00 2001 From: Nitin Mahtani <82001235+nitinmahtani@users.noreply.github.com> Date: Wed, 22 Mar 2023 02:24:35 -0400 Subject: [PATCH 150/206] spelling change in QA_testing.md Co-authored-by: Lucia <37385317+lmg8@users.noreply.github.com> --- Topics/Development_Process/QA_testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Development_Process/QA_testing.md b/Topics/Development_Process/QA_testing.md index 38b6d6114..03a859a88 100644 --- a/Topics/Development_Process/QA_testing.md +++ b/Topics/Development_Process/QA_testing.md @@ -39,7 +39,7 @@ There are many reasons why software testing is important. This blog [7 reasons w - Satisfaction of the Customer: This should be the primary objective of the owner and if the customer is not happy then they will use another product. - Enhance the development process: Quality assurance allows for the developer to find a wide array of scenarios and errors. - Easy while adding new features: When changing old code it can sometimes break it without the developer knowing. Testing is a great way to give the developer some confidence when adding a new feature. -- Determining the performance of the software: If your application has a low or reduced perfomance, it will bring a bad reputation in the market. Software testing can help identify these issues before users do. +- Determining the performance of the software: If your application has a low or reduced performance, it will bring a bad reputation in the market. Software testing can help identify these issues before users do. ## How to write test cases? From c800c0746da07be571052c14815c38fab26e8152 Mon Sep 17 00:00:00 2001 From: IbrahimBess <70774207+IbrahimBess@users.noreply.github.com> Date: Wed, 22 Mar 2023 02:49:08 -0400 Subject: [PATCH 151/206] Update Tech_Stacks.md --- Topics/Tech_Stacks.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index acf455d04..3cf9e2aa7 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,3 +1,5 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) + +### [Nuxt3](https://github.com/IbrahimBess/learning-software-engineering.github.io/blob/patch-2/Topics/Tech_Stacks/Nuxt3.md) From 7a5192e222228810f65bd12771b7e7983d9cd717 Mon Sep 17 00:00:00 2001 From: Vraj-Patel1 <90832450+Vraj-Patel1@users.noreply.github.com> Date: Wed, 22 Mar 2023 03:00:50 -0400 Subject: [PATCH 152/206] Adding User Experience Oriented Games section to User_Experience.md This section is a short description on why playing UX oriented games can help develop and practice UX skills. Then it's followed by 6 listed games/interactive websites with their names and short summary/descriptions for each game. The paragraphs also have an explanation on why this can help the user. --- Topics/User_Experience.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 657c85853..4e6f31484 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -25,3 +25,22 @@ ___Color Theory___ ### Helpful Courses There are many courses related to User Experience. This includes the U of T Course [The Design of Interactive Computational Media](https://artsci.calendar.utoronto.ca/course/csc318h1) which is highly recommended if interested in this topic. [The Design of Interactive Computational Media](https://artsci.calendar.utoronto.ca/course/csc318h1) expands on the work done before coding projects. For example, one of the projects is testing how users would interact with a prototype of a UI and modifying it so that the UX is better for the user. + +### User Experience Orientated Games + +User experience is unique, as practicing user experience design can be challenging. Since user experience has to do a lot with visuals, you can learn user design by playing games. User experience orientated games can be an engaging and fun way to get familiar with common UX practices. Here are unique games that can help develop better UX design skills. + +- [Can't Unsee](https://cantunsee.space/): The game of choice! Can't Unsee is a game that presents the user with two designs and challenges the user to pick the most correct user experience design. Feedback on each selection allows the user to learn from their mistakes. Sharpen your knowledge of common user experience design practices while testing your attention to detail. + + +- [Designercize](https://designercize.com/): Leetcode for designers. This unique game gives the user a unique interview-style design challenge to prepare for future interviews. Each challenge comes with a set of constraints containing a time limit, providing a realistic scenario for practicing your design and problem-solving skills. From common user experience practices to visual design, this game is a great way to improve your on-the-fly design abilities and creativity. + +- [Laws of UX](https://lawsofux.com/): This is an interactive website with beautiful cards Informing users of the common laws of UX. Each card provides an example of how the principle can be applied in real-world design scenarios, making this a very valuable tool for learning and practicing user experience design. + +- [It’s Centered that](https://www.supremo.co.uk/designers-eye/): Creating designs with alignment is an important concept for user experience. This game tests your designer’s eye by asking the user if the dot is centered or not on a shape. + +- [Boolean](https://boolean.method.ac/): Boolean is a fun and interactive game that challenges users to create an interface using essential user experience design elements. The game provides the user with different design challenges to help practice creating effective and visually appealing user interfaces. Each challenge tests the user's ability to apply specific design principles and create user-friendly interfaces. + +- [Betterwebtype](https://betterwebtype.com/triangle/): This game was created by Better Web Type to help designers and developers use "The Equilateral Triangle of a Perfect Paragraph" user experience theory. This theory consists of three interconnected points, size, line height and length. It states that these are the three main factors that impact the legibility and readability of typography on the web. The game gives the user text and challenges the user to adjust the heights and widths of it in order to find the "perfect paragraph" size. This unique and interactive game is very informative and helps provide a simple and intuitive learning space for the most optimal typographic results for user experience. + + From a01d74770c487e8d1e3dee5c1e9758e0c34781e2 Mon Sep 17 00:00:00 2001 From: Lucia <37385317+lmg8@users.noreply.github.com> Date: Wed, 22 Mar 2023 09:08:42 -0400 Subject: [PATCH 153/206] Fix Nuxt3 link --- Topics/Tech_Stacks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 064ca7f4e..5234da9a6 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,7 +1,7 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) -### [Nuxt3](https://github.com/IbrahimBess/learning-software-engineering.github.io/blob/patch-2/Topics/Tech_Stacks/Nuxt3.md) +### [Nuxt3](./Tech_Stacks/Nuxt3.md) ### [Building Apple Native Software Using Swift and SwiftUI](./Tech_Stacks/swift.md) ### [How to access and use salesforce API](./Tech_Stacks/salesforce_api.md) ### [React Resources](./Tech_Stacks/React.md) From 804247ded03b9a9a9f2d49aa2edf6389a14a8e98 Mon Sep 17 00:00:00 2001 From: Lucia <37385317+lmg8@users.noreply.github.com> Date: Wed, 22 Mar 2023 09:10:36 -0400 Subject: [PATCH 154/206] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0acad0b6f..abee69d25 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Following files are present in this directory. You may contribute to any of thes Potential Topics-- - Tech stacks - 1. [Nuxt3](https://github.com/IbrahimBess/learning-software-engineering.github.io/blob/patch-2/Topics/Tech_Stacks/Nuxt3.md) + 1. [Nuxt3](https://github.com/learning-software-engineering/learning-software-engineering.github.io/blob/main/Topics/Tech_Stacks/Nuxt3.md) Nuxt.js provides server-side rendering, automatic routing, code organization, and pre-configured plugins. It can be used to create applications quickly and easily. From e9c04e3f83a539fecc72c5ef056c4b928079e5d5 Mon Sep 17 00:00:00 2001 From: lanmanc <90670601+lanmanc@users.noreply.github.com> Date: Wed, 22 Mar 2023 11:03:57 -0400 Subject: [PATCH 155/206] Update User_Experience.md --- Topics/User_Experience.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 68cdc3ab2..e7d96a4fd 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -21,8 +21,8 @@ ___Established Norms___ ___Color Theory___ - [Colors Influence Choice](https://usabilitygeek.com/colour-user-experience-psychology/#:~:text=Colour%20plays%20a%20crucial%20role,and%20identified%20with%20your%20industry.): Users are shown certain colors to enforce actions. For example, red is commonly linked to aggressive or bad emotions and as such can be used as a cancel to dissuade people from refunding items. -## Nielsen's 10 Usability Heuristics -### [Usability Heuristics](./User_Experience/Usability_Heuristics.md) +___ Nielsen's 10 Usability Heuristics___ +- [Usability Heuristics](./User_Experience/Usability_Heuristics.md) ### Helpful Courses From 3755db9ef961f848704d935c9238e8ccb7f93ac0 Mon Sep 17 00:00:00 2001 From: lanmanc <90670601+lanmanc@users.noreply.github.com> Date: Wed, 22 Mar 2023 11:07:13 -0400 Subject: [PATCH 156/206] Change to API testing instead of backend testing --- Topics/Tech_Stacks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 9df2113ab..cb913dcd9 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,4 +1,4 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) -### [Postman Backend Testing](./Tech_Stacks/Postman_Backend_Testing.md) +### [Postman API Testing](./Tech_Stacks/Postman_Backend_Testing.md) From 4be272e672b01c817453e02409c72b6392bcb5c9 Mon Sep 17 00:00:00 2001 From: ed29leung Date: Wed, 22 Mar 2023 11:16:19 -0400 Subject: [PATCH 157/206] Changed Links To markdown --- Topics/Tech_Stacks.md | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 741f7edb9..91331d42f 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -11,40 +11,29 @@ CSS, or cascding style sheets, are used to add styles, like spacing and layout, CSS rules consist of a selector and a declaration block, where the selector points to the HTML element or set of elements you want to style and the declaration denotes the style. -image source: https://www.w3schools.com/css/css_syntax.asp +[Image source](https://www.w3schools.com/css/css_syntax.asp) -The link below provides interactive examples and exercises for basic CSS. - -W3Schools link: https://www.w3schools.com/css/ +[W3Schools](https://www.w3schools.com/css/) provides interactive examples and exercises for basic CSS. below provides interactive examples and exercises for basic CSS. #### CSS Cascade -Because of the existence of ids and classes in selectors, often multiple CSS declaratiosn can apply to an HTML element, and they can conflict with each other. The browser needs to resolve these conflicts in order to display the final style onto the website, and this is done through CSS Cascade, which determines which declarations take precedence over others +Because of the existence of ids and classes in selectors, often multiple CSS declarations can apply to an HTML element, and they can conflict with each other. The browser needs to resolve these conflicts in order to display the final style onto the website, and this is done through CSS Cascade, which determines which declarations take precedence over others. + +[This website](https://wattenberger.com/blog/css-cascade) gives a detailed breakdown of CSS Cascade and its tiers. -The folowing resource gives a detailed breakdown of CSS Cascade and its tiers. -https://wattenberger.com/blog/css-cascade #### CSS Layout: -The position property in CSS determines the way an HTML element is positioned on a webpage. FOr example, it can determine whether the position of an HTML element is static and unchanging or relative to the position of other elements. The possition property has 5 possible values, which are described in the link below. -https://www.w3schools.com/css/css_positioning.asp +The position property in CSS determines the way an HTML element is positioned on a webpage. For example, it can determine whether the position of an HTML element is static and unchanging or relative to the position of other elements. The possition property has 5 possible values, which are described [here](https://www.w3schools.com/css/css_positioning.asp). -Flexbox, or the flexible box layout module, is an alternative to using positioning that makes it easier for a webpage to have a responsive layout, meaning that the elements within the flexbox can more easily respond to varying screen or webpage sizes. The positions of elements in the flexbox are relative to other items. The following gaame below is designed to teach flexbox in an intuitive and fun way. - -https://flexboxfroggy.com/ +Flexbox, or the flexible box layout module, is an alternative to using positioning that makes it easier for a webpage to have a responsive layout, meaning that the elements within the flexbox can more easily respond to varying screen or webpage sizes. The positions of elements in the flexbox are relative to other items. [This game](https://flexboxfroggy.com/) is designed to teach Flexbox in an intuitive and fun way. -CSS grid is also a positioning alternative that provides a grid layout module, in order to display HTML elements within a row and column format. It consists of a parent element and child elements. The link provides a game that can teach CSS grid basics in a visual, interactive and intuitive way. - -https://cssgridgarden.com/ +CSS grid is also a positioning alternative that provides a grid layout module, in order to display HTML elements within a row and column format. It consists of a parent element and child elements. [This game](https://cssgridgarden.com/) can teach CSS grid basics in a visual, interactive and intuitive way. #### CSS frameworks -Native CSS can be difficult to use, so CSS frameworks have been created so developers can use pre-made styles in order to create good looking website components, such as navbars and buttons etc. in an easier and faster way without needing to know the semantics of CSS. Two popular CSS frameworks include Tailwind and Bootstrap. - -Bootstrap CSS: https://getbootstrap.com/docs/3.4/css/ - -React-Bootstrap: https://react-bootstrap.github.io/ (Bootstrap CSS framework specifically for use on react apps) +Native CSS can be difficult to use, so CSS frameworks have been created so developers can use pre-made styles in order to create good looking website components, navigation bars, buttons, etc. in an easier and faster way without needing to know the semantics of CSS. Two popular CSS frameworks include [Tailwind CSS](https://tailwindcss.com/) and [Bootstrap CSS](https://getbootstrap.com/docs/3.4/css/). -Tailwind CSS: https://tailwindcss.com/ +[React-Bootstrap](https://react-bootstrap.github.io/) is a Bootstrap CSS framework specifically for use on React apps. -Generally, bootstrap is easier to use and will produce a good looking website in a shorter amount of time, while Tailwind CSS is more customizable and can create more unique looking elements, but requires more of a time investment and is a bit harder to learn and work with compared to bootstrap. +Generally, Bootstrap is easier to use and will produce a good looking website in a shorter amount of time, while Tailwind CSS is more customizable and can create more unique looking elements, but requires more of a time investment and is a bit harder to learn and work with compared to Bootstrap. From 05087022b216cb3658de4a08209e32cd588c457e Mon Sep 17 00:00:00 2001 From: lanmanc <90670601+lanmanc@users.noreply.github.com> Date: Wed, 22 Mar 2023 11:17:17 -0400 Subject: [PATCH 158/206] Update Postman_Backend_Testing.md --- Topics/Tech_Stacks/Postman_Backend_Testing.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Topics/Tech_Stacks/Postman_Backend_Testing.md b/Topics/Tech_Stacks/Postman_Backend_Testing.md index be8bea795..c6c59a633 100644 --- a/Topics/Tech_Stacks/Postman_Backend_Testing.md +++ b/Topics/Tech_Stacks/Postman_Backend_Testing.md @@ -1,8 +1,9 @@ -# Postman Backend Testing +# Postman API Testing In this Postman application overview, we will go over how to -install the application and the details of how to tests your API endpoints. +install the application and the details of how to tests your API endpoints +specifically for GET and Post method. ## Download and installation the following link will take you to the postman website where you can @@ -22,7 +23,8 @@ After the download the following video will help you install the application: ### Creating a workspace Before starting to test your API, it is best to create a workspace for the specific project that you are working on. This way team members can access -and contribute to the test cases. +and contribute to the test cases. However, if you are short on time you can +jump to the next step "Creating a Collection". To do this, click on the workspace tab and then click on the 'Create Workspace' button and name your workspace. then click on the newly created workspace to write your requests within it. @@ -33,10 +35,10 @@ Create a new Collection by clicking on the '+' that is location next to the collection side tab. ### Sending requests Once you have created the Collection, you can now create your request. -Do this by expanding the newly created collection and clicking on add request +Do this by expanding the newly created collection on the left panel and clicking on add request which is highlighted. Copy and paste the request URL of your API into the URL bar. -To add any new requests to your collection, right click on your collection and +To add any new requests to your collection, right click on your collection on the left panel and select a add request. Alternatively, you can right click on the previously created request and click Duplicate. This also helps preserve the request variables. #### POST requests From 3889142dcdec9850889f5ba80228657a6642d2b1 Mon Sep 17 00:00:00 2001 From: Corinne <85494068+CorinneLS@users.noreply.github.com> Date: Wed, 22 Mar 2023 11:42:18 -0400 Subject: [PATCH 159/206] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index abee69d25..6b56f2590 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ Potential Topics-- 2. Django 1. Django Rest Framework + 3. Salesforce API - Software Tools 1. Git From 452c80d1f80f5a16fe9f5a36893ea5a8f634ab4f Mon Sep 17 00:00:00 2001 From: Nitin Mahtani <82001235+nitinmahtani@users.noreply.github.com> Date: Wed, 22 Mar 2023 13:35:04 -0400 Subject: [PATCH 160/206] added suggested change QA_testing.md Co-authored-by: Lucia <37385317+lmg8@users.noreply.github.com> --- Topics/Development_Process/QA_testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Development_Process/QA_testing.md b/Topics/Development_Process/QA_testing.md index 03a859a88..2d5eaeaa3 100644 --- a/Topics/Development_Process/QA_testing.md +++ b/Topics/Development_Process/QA_testing.md @@ -20,7 +20,7 @@ At the end of this article, a CSC301 student would have the basic understandings This paper is likely the greatest paper about software QA, however it is quite long. Here are some of the main definitions and key takeaways: - In order to make sure the released software is safe and functions as expected, the concept of software quality was introduced. It is often defined as “the degree of conformance to explicit or implicit requirements and expectations”. - The purpose of QA is to set up adequate processes, introducing the standards of quality to prevent the errors and flaws in the product. This is slightly different to testing where the purpose is to detect and solve software errors and flaws. -- There are different levels of software testing, component/unit testing, integration testing, system testing then acceptance testing. +- There are different levels of software testing: component/unit testing, integration testing, system testing, and acceptance testing. This article gives a tease of what a software QA engineer is like, the different types of SQA engineers and their duties and responsibilities. It is the right article to figure out if you want a career in this field or you are interested in QA. From 8027c9799e6241666e2177d907f38332b4898721 Mon Sep 17 00:00:00 2001 From: Nitin Mahtani <82001235+nitinmahtani@users.noreply.github.com> Date: Wed, 22 Mar 2023 14:07:12 -0400 Subject: [PATCH 161/206] Updated QA_testing to include automated testing. --- Topics/Development_Process/QA_testing.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Topics/Development_Process/QA_testing.md b/Topics/Development_Process/QA_testing.md index 2d5eaeaa3..6fa344dec 100644 --- a/Topics/Development_Process/QA_testing.md +++ b/Topics/Development_Process/QA_testing.md @@ -5,11 +5,12 @@ ### [What is Software QA?](#what-is-software-qa-1) ### [Why should we test?](#why-should-we-test-1) ### [How to write test cases?](#how-to-write-test-cases-1) +### [Automated testing](#automated-testing-1) ## Introduction -This article will specifically focus on the testing portion of the development process. It is an essential and often overlooked part of this process and it will explain what software quality assurance or Software QA is, why it is an important part of the development process and how to do it. +This article will specifically focus on the testing portion of the development process. It is an essential and often overlooked part of this process and it will explain what software quality assurance or Software QA is, why it is an important part of the development process, how to do it and links to an overview of automated testing (a useful tool in QA). At the end of this article, a CSC301 student would have the basic understandings of Software QA and would be able to look into a career in the Software QA field. @@ -49,3 +50,6 @@ There are many reasons why software testing is important. This blog [7 reasons w Now that you know how to think about creating test cases it is important to also know how to write a test case. More specifically, how to describe the test case so it is easily understood. This is extremely useful for anyone who develops test. This is one of the skills that separates the good SQA engineers from the great ones. Here is a [short blog](https://blog.testlodge.com/how-to-write-test-cases-for-software-with-sample/) on how to write your test cases. +## Automated testing + +[This article](./Automated_Testing.md) provides a nice overview of automated testing, which is an important tool in QA testing. From 9297514c08fc9b3288233b0d9f7ac3d78ba524de Mon Sep 17 00:00:00 2001 From: Nitin Mahtani <82001235+nitinmahtani@users.noreply.github.com> Date: Wed, 22 Mar 2023 14:09:33 -0400 Subject: [PATCH 162/206] edited Development_process to have Automated testing as a subsection --- Topics/Development_Process.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index 1579e8e89..f1faf6077 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -2,8 +2,8 @@ ### [Django Project Deployment: AWS, Vercel, and Railway](./Development_Process/Django_Deployment_AWS_Railway_Vercel.md) ### [Automated Frontend Deployment with Vercel](./Development_Process/Frontend_Automated_Deployment_Vercel.md) -### [Automated Testing](./Development_Process/Automated_Testing.md) ### [Quality Assurance testing](./Development_Process/QA_testing.md) +- [Automated Testing](./Development_Process/Automated_Testing.md) ### [Getting Started With Docker](./Development_Process/Docker.md) From b67fa547fdc7cd0518d013c026b2f0dabf2847bf Mon Sep 17 00:00:00 2001 From: Nitin Mahtani <82001235+nitinmahtani@users.noreply.github.com> Date: Wed, 22 Mar 2023 15:37:31 -0400 Subject: [PATCH 163/206] made order of link consistent as requested --- Topics/Development_Process/QA_testing.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Topics/Development_Process/QA_testing.md b/Topics/Development_Process/QA_testing.md index 6fa344dec..15511775f 100644 --- a/Topics/Development_Process/QA_testing.md +++ b/Topics/Development_Process/QA_testing.md @@ -23,9 +23,10 @@ This paper is likely the greatest paper about software QA, however it is quite l - The purpose of QA is to set up adequate processes, introducing the standards of quality to prevent the errors and flaws in the product. This is slightly different to testing where the purpose is to detect and solve software errors and flaws. - There are different levels of software testing: component/unit testing, integration testing, system testing, and acceptance testing. +[What does a Software Quality assurance engineer do?](https://www.careerexplorer.com/careers/software-quality-assurance-engineer/) This article gives a tease of what a software QA engineer is like, the different types of SQA engineers and their duties and responsibilities. It is the right article to figure out if you want a career in this field or you are interested in QA. -[What does a Software Quality assurance engineer do?](https://www.careerexplorer.com/careers/software-quality-assurance-engineer/) + ## Why should we test? From b802e8a0b98550df8aff68c2cf4081a9ba1c9feb Mon Sep 17 00:00:00 2001 From: ed29leung Date: Wed, 22 Mar 2023 15:53:14 -0400 Subject: [PATCH 164/206] Moved Content to CSS.md --- Topics/Tech_Stacks.md | 38 +-------------------------------- Topics/Tech_Stacks/CSS.md | 44 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 37 deletions(-) create mode 100644 Topics/Tech_Stacks/CSS.md diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index ab1fe1149..b09e6b82a 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -2,41 +2,5 @@ ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) -## Tech Stacks - -### CSS (Cascading Style Sheets) - -CSS, or cascding style sheets, are used to add styles, like spacing and layout, to HTML web pages. While CSS can be done through in-line styles, it is common convention to have a style sheet for the webpage, or the style tag. - -CSS rules consist of a selector and a declaration block, where the selector points to the HTML element or set of elements you want to style and the declaration denotes the style. - -Capture - -Capture - -[Image source](https://www.w3schools.com/css/css_syntax.asp) - -[W3Schools](https://www.w3schools.com/css/) provides interactive examples and exercises for basic CSS. below provides interactive examples and exercises for basic CSS. - -#### CSS Cascade - -Because of the existence of ids and classes in selectors, often multiple CSS declarations can apply to an HTML element, and they can conflict with each other. The browser needs to resolve these conflicts in order to display the final style onto the website, and this is done through CSS Cascade, which determines which declarations take precedence over others. - -[This website](https://wattenberger.com/blog/css-cascade) gives a detailed breakdown of CSS Cascade and its tiers. - - -#### CSS Layout: - -The position property in CSS determines the way an HTML element is positioned on a webpage. For example, it can determine whether the position of an HTML element is static and unchanging or relative to the position of other elements. The possition property has 5 possible values, which are described [here](https://www.w3schools.com/css/css_positioning.asp). - -Flexbox, or the flexible box layout module, is an alternative to using positioning that makes it easier for a webpage to have a responsive layout, meaning that the elements within the flexbox can more easily respond to varying screen or webpage sizes. The positions of elements in the flexbox are relative to other items. [This game](https://flexboxfroggy.com/) is designed to teach Flexbox in an intuitive and fun way. - -CSS grid is also a positioning alternative that provides a grid layout module, in order to display HTML elements within a row and column format. It consists of a parent element and child elements. [This game](https://cssgridgarden.com/) can teach CSS grid basics in a visual, interactive and intuitive way. - -#### CSS frameworks - -Native CSS can be difficult to use, so CSS frameworks have been created so developers can use pre-made styles in order to create good looking website components, navigation bars, buttons, etc. in an easier and faster way without needing to know the semantics of CSS. Two popular CSS frameworks include [Tailwind CSS](https://tailwindcss.com/) and [Bootstrap CSS](https://getbootstrap.com/docs/3.4/css/). - -[React-Bootstrap](https://react-bootstrap.github.io/) is a Bootstrap CSS framework specifically for use on React apps. +### [CSS](./Tech_Stacks/CSS.md) -Generally, Bootstrap is easier to use and will produce a good looking website in a shorter amount of time, while Tailwind CSS is more customizable and can create more unique looking elements, but requires more of a time investment and is a bit harder to learn and work with compared to Bootstrap. diff --git a/Topics/Tech_Stacks/CSS.md b/Topics/Tech_Stacks/CSS.md new file mode 100644 index 000000000..a74bc1721 --- /dev/null +++ b/Topics/Tech_Stacks/CSS.md @@ -0,0 +1,44 @@ +# CSS (Cascading Style Sheets) + +## Table of contents +### [Introduction](#introduction-1) +### [CSS Cascade](#css-cascade-1) +### [CSS Layout](#css-layout-1) +### [CSS Frameworks](#css-frameworks-1) + +## Introduction + +CSS, or cascding style sheets, are used to add styles, like spacing and layout, to HTML web pages. While CSS can be done through in-line styles, it is common convention to have a style sheet for the webpage, or the style tag. + +CSS rules consist of a selector and a declaration block, where the selector points to the HTML element or set of elements you want to style and the declaration denotes the style. + +Capture + +Capture + +[Image source](https://www.w3schools.com/css/css_syntax.asp) + +[W3Schools](https://www.w3schools.com/css/) provides interactive examples and exercises for basic CSS. below provides interactive examples and exercises for basic CSS. + +## CSS Cascade + +Because of the existence of ids and classes in selectors, often multiple CSS declarations can apply to an HTML element, and they can conflict with each other. The browser needs to resolve these conflicts in order to display the final style onto the website, and this is done through CSS Cascade, which determines which declarations take precedence over others. + +[This website](https://wattenberger.com/blog/css-cascade) gives a detailed breakdown of CSS Cascade and its tiers. + + +## CSS Layout: + +The position property in CSS determines the way an HTML element is positioned on a webpage. For example, it can determine whether the position of an HTML element is static and unchanging or relative to the position of other elements. The possition property has 5 possible values, which are described [here](https://www.w3schools.com/css/css_positioning.asp). + +Flexbox, or the flexible box layout module, is an alternative to using positioning that makes it easier for a webpage to have a responsive layout, meaning that the elements within the flexbox can more easily respond to varying screen or webpage sizes. The positions of elements in the flexbox are relative to other items. [This game](https://flexboxfroggy.com/) is designed to teach Flexbox in an intuitive and fun way. + +CSS grid is also a positioning alternative that provides a grid layout module, in order to display HTML elements within a row and column format. It consists of a parent element and child elements. [This game](https://cssgridgarden.com/) can teach CSS grid basics in a visual, interactive and intuitive way. + +## CSS Frameworks + +Native CSS can be difficult to use, so CSS frameworks have been created so developers can use pre-made styles in order to create good looking website components, navigation bars, buttons, etc. in an easier and faster way without needing to know the semantics of CSS. Two popular CSS frameworks include [Tailwind CSS](https://tailwindcss.com/) and [Bootstrap CSS](https://getbootstrap.com/docs/3.4/css/). + +[React-Bootstrap](https://react-bootstrap.github.io/) is a Bootstrap CSS framework specifically for use on React apps. + +Generally, Bootstrap is easier to use and will produce a good looking website in a shorter amount of time, while Tailwind CSS is more customizable and can create more unique looking elements, but requires more of a time investment and is a bit harder to learn and work with compared to Bootstrap. From b587569d4348caec11b6fc86d7ab75e0a408865f Mon Sep 17 00:00:00 2001 From: jaren Date: Wed, 22 Mar 2023 16:41:51 -0400 Subject: [PATCH 165/206] fixed md issues --- README.md | 11 ++++++++++- Topics/Tech_Stacks.md | 7 +++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 70b0cdd1c..9bbcf425d 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,16 @@ Following files are present in this directory. You may contribute to any of thes Potential Topics-- - Tech stacks - 1. JavaScript + 1. [Nuxt3](https://github.com/learning-software-engineering/learning-software-engineering.github.io/blob/main/Topics/Tech_Stacks/Nuxt3.md) + + Nuxt.js provides server-side rendering, automatic routing, code organization, and pre-configured plugins. It can be used to create applications quickly and easily. + + 2. Django + 1. Django Rest Framework + 3. Salesforce API + + 4. CSS (Cascading Style Sheets) + 5. JavaSCript - Software Tools 1. Git 1. Git Workflows diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 740cb956d..7b16e3390 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -1,4 +1,11 @@ ## Tech Stacks ### [Learning MySQL for databases](./Tech_Stacks/Learning_MySQL.md) +### [Postman API Testing](./Tech_Stacks/Postman_Backend_Testing.md) +### [Nuxt3](./Tech_Stacks/Nuxt3.md) +### [Building Apple Native Software Using Swift and SwiftUI](./Tech_Stacks/swift.md) +### [How to access and use salesforce API](./Tech_Stacks/salesforce_api.md) +### [React Resources](./Tech_Stacks/React.md) +### [Angular Resources](./Tech_Stacks/Angular.md) +### [CSS](./Tech_Stacks/CSS.md) ### [Learning JavaScript](./Tech_Stacks/JavaScript.md) From 1045dbb2d72157b9592b78056f793c28861d295c Mon Sep 17 00:00:00 2001 From: armaan-mann <75923742+armaan-mann@users.noreply.github.com> Date: Wed, 22 Mar 2023 16:56:04 -0400 Subject: [PATCH 166/206] Added Clean Architecture to Development Process Added a simplified version of what Clean Architecture is, why it may be used and further resources that go further into the topic. --- Topics/Development_Process.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index 576c34d0a..958c19733 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -31,4 +31,32 @@ The SOLID principles are: ## Resource that gives examples of the uses cases of SOLID principles LINK : https://www.youtube.com/watch?v=_jDNAf3CzeY + + ## Clean Architecture: + +A system's design that divides it into logical parts and specifies how those parts may communicate with one another is referred to as clean architecture. The objective is to make the software system easier to design, deploy, operate, and maintain while still keeping as many options open  for as long as possible. + +Clean Architecture works on the well-defined division of layers. It is important to understand what the different layers are and which layers are allowed to interact with each other. The independence that clean architecute introduced to the a software system is vital since it reduces dependancies within the system. In clean architecture, the elements of the inner most layers should not have any information about the outermost layers. Anything declared in an outer layer must not be used anywhere within the inner layer of the code. + +![image](https://user-images.githubusercontent.com/75923742/227027780-b5fbf347-ff78-49fa-a122-8f9ac4ef53d4.png) + + +Some of the Layers are (Simplified): +- Business Rules: + - Entity: a component of our computer system that represents a condensed set of critical business rules that are applied to crucial business data + - Use Case: Gives specifics on the input the user must supply and the output the system must deliver to the user. Additionally, it includes the processing steps required to create the result. + +- Entities: Contains functions, variables and other structures which hold the main objectives of our application, they must be general and be the highest level of rules. +- Interface Adaptors: Responsible for communicating between the layers, takes data in and transformed it such that it can be sent to lower levels. +- Framworks and Drivers: Contains framworks and databases responsible for communicating with the interface adapters. + + +This is only a simplification of what Clean Architecture, the topic is so vast that there have been texts that have been dedicated to this topic. Some resources that can be beneficial in understanding and clearifying any doubts about the topic have been linked below. +- Text that goes into greater depth about each layer: + - https://dev.to/rubemfsv/clean-architecture-the-concept-behind-the-code-52do#:~:text=The%20main%20rule%20for%20Clean,elements%20of%20an%20outermost%20layer. + +- Article Summerizing Clean Architecture(Examples and Code) + - https://pusher.com/tutorials/clean-architecture-introduction/ +- Very Detailed explanation of Clean Architecture by Robert C. Martin or Uncle Bob + - https://www.youtube.com/watch?v=2dKZ-dWaCiU From a5b8ed695ecb5efac9e870441dc2f522a0b95e3f Mon Sep 17 00:00:00 2001 From: armaan-mann <75923742+armaan-mann@users.noreply.github.com> Date: Wed, 22 Mar 2023 17:12:55 -0400 Subject: [PATCH 167/206] Fixed Grammatical errors fixed some grammatical errors --- Topics/Development_Process.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index 958c19733..0408c339b 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -41,22 +41,24 @@ Clean Architecture works on the well-defined division of layers. It is important ![image](https://user-images.githubusercontent.com/75923742/227027780-b5fbf347-ff78-49fa-a122-8f9ac4ef53d4.png) -Some of the Layers are (Simplified): +Some of the layers are (Simplified): - Business Rules: - - Entity: a component of our computer system that represents a condensed set of critical business rules that are applied to crucial business data + - Entity: A component of our computer system that represents a condensed set of critical business rules that are applied to crucial business data. - Use Case: Gives specifics on the input the user must supply and the output the system must deliver to the user. Additionally, it includes the processing steps required to create the result. -- Entities: Contains functions, variables and other structures which hold the main objectives of our application, they must be general and be the highest level of rules. -- Interface Adaptors: Responsible for communicating between the layers, takes data in and transformed it such that it can be sent to lower levels. -- Framworks and Drivers: Contains framworks and databases responsible for communicating with the interface adapters. +- Entities: Contains functions, variables, and other structures that hold the main objectives of our application, they must be general and have the highest level of rules. +- Interface Adaptors: Responsible for communicating between the layers, takes data in and transforms it such that it can be sent to lower levels. +- Framworks and Drivers: This section contains frameworks and databases responsible for communicating with the interface adapters. -This is only a simplification of what Clean Architecture, the topic is so vast that there have been texts that have been dedicated to this topic. Some resources that can be beneficial in understanding and clearifying any doubts about the topic have been linked below. +This is only a simplification of what "Clean Architecture" is; the topic is so vast that there have been texts that have been dedicated to this topic. Some resources that can be beneficial in understanding and clearing up any doubts about the topic have been linked below. + - Text that goes into greater depth about each layer: - https://dev.to/rubemfsv/clean-architecture-the-concept-behind-the-code-52do#:~:text=The%20main%20rule%20for%20Clean,elements%20of%20an%20outermost%20layer. -- Article Summerizing Clean Architecture(Examples and Code) +- Article Summarizing Clean Architecture (Examples and Code) - https://pusher.com/tutorials/clean-architecture-introduction/ -- Very Detailed explanation of Clean Architecture by Robert C. Martin or Uncle Bob +- A very detailed explanation of Clean Architecture by Robert C. Martin or Uncle Bob and his book - https://www.youtube.com/watch?v=2dKZ-dWaCiU + - https://github.com/ropalma/ICMC-USP/blob/master/Book%20-%20Clean%20Architecture%20-%20Robert%20Cecil%20Martin.pdf From cbd3f48bce5d27f4339d1b6fe0861de9265ac54e Mon Sep 17 00:00:00 2001 From: Ansh Malhotra <67304812+Ansh757@users.noreply.github.com> Date: Wed, 22 Mar 2023 17:19:42 -0400 Subject: [PATCH 168/206] Update User_Expierence.md Fixed the issues that were addressed in the previous PR. Please let me know if there is anything that needs to resolves. --- Topics/User_Experience.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 67f847cca..8e6fb74eb 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -2,8 +2,8 @@ ### Overview -User experience is a large and broad topic. It covers the overall experience of the user and how they interact with software systems and applications. The main focus of User Experience is to make assessible, easy to follow, user-friendly, and be adaptable to the user's needs. Although, there is no set standard rules that make up a "Great" User Experience, it often differs on the product and the consumers that are using the products. It is very often confused with UI (User Interface) and UX design, while related can also be totally different. For example, UI could be how the interface is designed whereas UX is more about how users interact with the said design. -There are many notable links differentiating the two areas. Here is one of the related websites. +User Experience (UX) is a large and broad topic. It covers the overall experience of the user and how they interact with software systems and applications. The main focus of User Experience is to make a piece of software accessible, easy to follow (ie: user-friendly) and adaptable to the user's needs. There is no set of standard rules that make up a "great" user experience, as it often differs on the product and the consumers that are using the products. User Experience is not to be confused with UI and UX Design. While these topics have similarities with User Experience, they are also different in their ways. For example, UI could be how the interface is designed whereas UX is more about how users interact with the said design. Many notable links are differentiating the two areas. Here is one of the related websites. + - [The Definition of User Experience](https://www.nngroup.com/articles/definition-user-experience/) @@ -22,7 +22,7 @@ ___Color Theory___ - [Colors Influence Choice](https://usabilitygeek.com/colour-user-experience-psychology/#:~:text=Colour%20plays%20a%20crucial%20role,and%20identified%20with%20your%20industry.): Users are shown certain colors to enforce actions. For example, red is commonly linked to aggressive or bad emotions and as such can be used as a cancel to dissuade people from refunding items. ___Responsive Design___ -- [Responsive Design](https://devrix.com/tutorial/important-responsive-design/): Demonstrates important and benefits of responsive design, flexiblity they provide, easiblity for the consumers upon making the said software. +- [Responsive Design](https://devrix.com/tutorial/important-responsive-design/): Responsive Design generally refers to a design where the software is adaptable to the consumer's device. The responsive design can be many things including screen sizes, collapsing of navbars, adjusting texts based on the screens, scrolling effects and more. The benefits of a responsive design make your software accessible across varying devices and overall improves the user experience. The article demonstrates the importance and benefits of responsive design, the flexibility they provide, and the easiblity for the consumers upon making the said software. ___ Nielsen's 10 Usability Heuristics___ - [Usability Heuristics](./User_Experience/Usability_Heuristics.md) @@ -31,7 +31,8 @@ ___ Nielsen's 10 Usability Heuristics___ There are some things that have become a crucial part in making a software: Universal Design Principles. ___Accessiblity Features___ -- [Universal Design Principles](https://www.buffalo.edu/access/help-and-support/topic3/universaldesignprinciples.html): This article provides the 7 Universal Design Principle that makes a software accessible to all users, which plays a important role in diversifying the User Experience. +- [Universal Design Principles](https://www.buffalo.edu/access/help-and-support/topic3/universaldesignprinciples.html): Universal Design Principles are not only used for software, but can be incorporated generally as well. These 7 principles ensure accessiblitly, consistenty, make software user-friendly. +This article provides the 7 Universal Design Principles that makes a software accessible to all users, which plays a important role in diversifying the User Experience. ### Helpful Courses From 4d0fa2b05c0c9f8a1a08c3023ea72dd6b483eb69 Mon Sep 17 00:00:00 2001 From: aielaayaz <79423798+aielaayaz@users.noreply.github.com> Date: Wed, 22 Mar 2023 17:33:08 -0400 Subject: [PATCH 169/206] Update Teamwork.md --- Topics/Teamwork.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index 7c0c46214..2f12a4c52 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -1,5 +1,7 @@ ## Resources for Teamwork +## Communication + ## Conflict Resolution From b5356dfba24ccbf0d3ec6a0e6276c2aea00dc129 Mon Sep 17 00:00:00 2001 From: aielaayaz <79423798+aielaayaz@users.noreply.github.com> Date: Wed, 22 Mar 2023 17:38:29 -0400 Subject: [PATCH 170/206] Update Teamwork.md --- Topics/Teamwork.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index 2f12a4c52..b97e6aeda 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -2,6 +2,7 @@ ## Communication +Communication is one of the most essential skills an individual can have as part of a software engineering team. This is because ## Conflict Resolution From 2206ad3796763556237dd5fd33cdc2141b04ea3d Mon Sep 17 00:00:00 2001 From: Ansh Malhotra <67304812+Ansh757@users.noreply.github.com> Date: Wed, 22 Mar 2023 17:59:49 -0400 Subject: [PATCH 171/206] Update User_Experience.md Additional changes that were requested are done. --- Topics/User_Experience.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 8e6fb74eb..1e14deafa 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -31,7 +31,7 @@ ___ Nielsen's 10 Usability Heuristics___ There are some things that have become a crucial part in making a software: Universal Design Principles. ___Accessiblity Features___ -- [Universal Design Principles](https://www.buffalo.edu/access/help-and-support/topic3/universaldesignprinciples.html): Universal Design Principles are not only used for software, but can be incorporated generally as well. These 7 principles ensure accessiblitly, consistenty, make software user-friendly. +- [Universal Design Principles](https://www.buffalo.edu/access/help-and-support/topic3/universaldesignprinciples.html): Universal Design Principles are not only used for software, but can be incorporated generally as well. These 7 principles ensure accessibility, consistency, and user-friendly software. This article provides the 7 Universal Design Principles that makes a software accessible to all users, which plays a important role in diversifying the User Experience. ### Helpful Courses From 81cdd959f01cf358c30035f36b619ca0b877fec0 Mon Sep 17 00:00:00 2001 From: aielaayaz <79423798+aielaayaz@users.noreply.github.com> Date: Wed, 22 Mar 2023 18:13:02 -0400 Subject: [PATCH 172/206] Update Teamwork.md --- Topics/Teamwork.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index b97e6aeda..8f426c421 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -2,7 +2,10 @@ ## Communication -Communication is one of the most essential skills an individual can have as part of a software engineering team. This is because +Communication is one of the most essential parts of a successful software engineering team. This is because software engineering teams are often composed of multiple individuals with different experiences, skills, schedules and responsibilites and without effective communication the team will not be able to successfuly work together on completing their project. + + + ## Conflict Resolution From 5a9398b4fbbd9033d773a9480bf2632122ec7fc0 Mon Sep 17 00:00:00 2001 From: Ansh Malhotra <67304812+Ansh757@users.noreply.github.com> Date: Wed, 22 Mar 2023 18:16:35 -0400 Subject: [PATCH 173/206] Update User_Experience.md Back-spaced on the "Nielsen's 10 Usability Heuristics" --- Topics/User_Experience.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 1e14deafa..ebe8fc782 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -24,7 +24,7 @@ ___Color Theory___ ___Responsive Design___ - [Responsive Design](https://devrix.com/tutorial/important-responsive-design/): Responsive Design generally refers to a design where the software is adaptable to the consumer's device. The responsive design can be many things including screen sizes, collapsing of navbars, adjusting texts based on the screens, scrolling effects and more. The benefits of a responsive design make your software accessible across varying devices and overall improves the user experience. The article demonstrates the importance and benefits of responsive design, the flexibility they provide, and the easiblity for the consumers upon making the said software. -___ Nielsen's 10 Usability Heuristics___ +___Nielsen's 10 Usability Heuristics___ - [Usability Heuristics](./User_Experience/Usability_Heuristics.md) ### Additional UX From 1708acef1fb126c184402e0e08b957db9f4ad78b Mon Sep 17 00:00:00 2001 From: Vraj-Patel1 <90832450+Vraj-Patel1@users.noreply.github.com> Date: Wed, 22 Mar 2023 18:20:22 -0400 Subject: [PATCH 174/206] Updated Topics/User_Experience.md with minor word choice Changed capitalization and word choice for the "It's Centered That" bullet point Co-authored-by: Lucia <37385317+lmg8@users.noreply.github.com> --- Topics/User_Experience.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 4e6f31484..ab89f44ad 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -37,7 +37,7 @@ User experience is unique, as practicing user experience design can be challengi - [Laws of UX](https://lawsofux.com/): This is an interactive website with beautiful cards Informing users of the common laws of UX. Each card provides an example of how the principle can be applied in real-world design scenarios, making this a very valuable tool for learning and practicing user experience design. -- [It’s Centered that](https://www.supremo.co.uk/designers-eye/): Creating designs with alignment is an important concept for user experience. This game tests your designer’s eye by asking the user if the dot is centered or not on a shape. +- [It’s Centered That](https://www.supremo.co.uk/designers-eye/): Creating designs with alignment is an important concept for user experience. This game tests your designer’s eye by asking the user if the dot is centered or not on a shape. - [Boolean](https://boolean.method.ac/): Boolean is a fun and interactive game that challenges users to create an interface using essential user experience design elements. The game provides the user with different design challenges to help practice creating effective and visually appealing user interfaces. Each challenge tests the user's ability to apply specific design principles and create user-friendly interfaces. From 3d5de26f5014f250b6ec533f9bc078cb311519ad Mon Sep 17 00:00:00 2001 From: Mehrdad Ghannad Date: Wed, 22 Mar 2023 18:27:14 -0400 Subject: [PATCH 175/206] fixed merge conflicts, adding TypeScript --- Topics/Tech_Stacks.md | 2 +- Topics/Tech_Stacks/TypeScript.md | 64 ++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 Topics/Tech_Stacks/TypeScript.md diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 55e246589..ca1fde94f 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -8,4 +8,4 @@ ### [React Resources](./Tech_Stacks/React.md) ### [Angular Resources](./Tech_Stacks/Angular.md) ### [CSS](./Tech_Stacks/CSS.md) - +### [Learning TypeScript](./Tech_Stacks/TypeScript.md) diff --git a/Topics/Tech_Stacks/TypeScript.md b/Topics/Tech_Stacks/TypeScript.md new file mode 100644 index 000000000..355263bef --- /dev/null +++ b/Topics/Tech_Stacks/TypeScript.md @@ -0,0 +1,64 @@ +# Learning TypeScript + +## Table of contents +### [Introduction](#introduction-1) +### [Why use TypeScript](#why-use-typescript-1) +### [How to use TypeScript](#how-to-use-typescript-1) +### [Additional Resources](#additional-resources-1) + + +## Introduction + +TypeScript is a programming language that extends JavaScript's capabilities by including optional static type checking and other features. TypeScript is a superset of JavaScript. In other words, TypeScript adds new features on top of the existing JavaScript language, such as optional static typing, classes, interfaces, and more, while still maintaining compatibility with the existing JavaScript ecosystem. + +If you aren't that familiar with JavaScript, you can learn about JavaScript and TypeScript and their relationship [here](https://www.typescriptlang.org/docs/handbook/typescript-from-scratch.html). + +If you are already familiar with JavaScript, you can learn more about TypeScript and see some examples [here](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html). + +To play around with and experiment using TypeScript, feel free to visit the [playground page](https://www.typescriptlang.org/play). + +## Why use TypeScript + +TypeScript allows developers to catch potential errors early in the development process (at compile-time instead of runtime) and write more maintainable and scalable code. This can greatly reduce the likelihood of bugs and make code more reliable and easier to maintain, as well as improve code readability and make it easier to write reusable code. This makes TypeScript the preferred choice when building large-scale applications, especially in web development. Its syntax is similar to JavaScript, making it easy to learn and adopt for developers familiar with JavaScript. + +To learn more about why you should consider using TypeScript over JavaScript, visit [this blog here](https://www.geeksforgeeks.org/8-reasons-why-you-should-pick-typescript-over-javascript/). + +## How to use TypeScript + +You can integrate TypeScript into any JavaScript code, but it is most commonly used for web development using JavaScript frameworks such as React and Angular. + +Here is how to create projects with the above frameworks using TypeScript. + +### React + +You can find the complete guide [here](https://create-react-app.dev/docs/adding-typescript/). To learn more about React and TypeScript, you can also follow [this YouTube video by Ben Awad](https://www.youtube.com/watch?v=Z5iWr6Srsj8&t=28s&ab_channel=BenAwad). + +To create a React project with TypeScript enabled, follow these basic steps: + +1. Make sure you have Node.js installed on your machine. If you don't have Node.js installed, you can visit the official Node.js page [here](https://nodejs.org/en) and follow the installation steps. +2. Open a terminal and navigate to the directory where you want to create your app. +3. Run the following command to create a new React app with TypeScript: + + `npx create-react-app my-app --template typescript` + +That's it! Now you can use TypeScript files in your React project! + +### Angular + +Angular comes with TypeScript enabled by default. In fact, Angular is built entirely in TypeScript, and is the recommended language for developing Angular applications. This is a summary of the guide found [here](https://angular.io/guide/setup-local). To learn more about Angular and TypeScript, you can watch [this in-depth YouTube course by Mosh](https://www.youtube.com/watch?v=k5E2AVpwsko&t=1692s&ab_channel=ProgrammingwithMosh). + +1. Make sure you have Node.js installed on your machine. If you don't have Node.js installed, you can visit the official Node.js page [here](https://nodejs.org/en) and follow the installation steps. + +2. Open a terminal and install the Angular CLI by using the following command + + `npm install -g @angular/cli` +3. Open a terminal and navigate to the directory where you want to create your app. +4. Run the following command to create a new workspace and initial starter app: + + `ng new my-app`' + +## Additional Resources + +- If you are interested, you can take a look at [this free course by codecademy on TypeScript](https://www.codecademy.com/learn/learn-typescript). +- [This guide by freecodecamp](https://www.freecodecamp.org/news/learn-typescript-beginners-guide/) is another great resource for learning how to use TypeScript. +- To learn more about TypeScript features in depth, you can watch [this YouTube playlist by The Net Ninja](https://www.youtube.com/playlist?list=PL4cUxeGkcC9gUgr39Q_yD6v-bSyMwKPUI) \ No newline at end of file From fc1b292306a9d20e7b4a4d4d0ab2da2bf18002f2 Mon Sep 17 00:00:00 2001 From: Aabid Anas <77357622+aanas1010@users.noreply.github.com> Date: Wed, 22 Mar 2023 19:06:44 -0400 Subject: [PATCH 176/206] Added how to handle a non-responsive team member --- Topics/Teamwork.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index 7c0c46214..d82f6043e 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -12,3 +12,14 @@ An important first step towards conflict resolution is learning how to avoid the [Resolving Conflicts](https://ca.indeed.com/career-advice/career-development/conflict-resolution-at-work) It is not always possible to avoid conflict. In work environment when people are exchanging ideas and working towards goals, a difference of opinion is inevitable. However, if handled properly, these conflicts can be resolved while keeping the negative impacts at a minimum, and even help create a better solution for the project at hand. This article covers ways that the parties in a conflict can help each other understand their own points of view, while keeping discourse respectful. It emphasizes ways that team members can help each other work towards a common goal. + + +## Handling Non-responsive Team Members + +Handling a non-responsive and unmotivated team member in software engineering can be especially challenging due to the importance of collaboration and communication in the development process. There are several steps that can be taken to increase the chances of the conflict being resolved peacefully: + +1. First, the team leader or manager should first schedule a meeting with the team member to discuss their concerns and understand the root cause of their lack of motivation. It could be due to a variety of factors such as workload, personal issues or lack of interest in the project. +2. Once the root cause is identified, the leader should work with the team member to develop a plan to improve their performance, such as redefining their role, providing training or mentorship or reassigning tasks. +3. Additionally, the team leader can try to increase the team member's motivation by setting clear goals and providing feedback, recognition and incentives for their contributions. + +However, if the team member continues to be non-responsive and unmotivated despite efforts to help them, the leader may need to consider alternative solutions such as disciplinary action or reassignment to a different project or team. This, of course, is the worst-case scenario. And while this should not happen frequently given that all the team members are mature enough to resolve the conflict without getting to this point, it does still occur — both in work placements and school courses. From caa2f64cb73e9ad8f6c44271a6fbbc85cc8d0689 Mon Sep 17 00:00:00 2001 From: Aabid Anas <77357622+aanas1010@users.noreply.github.com> Date: Wed, 22 Mar 2023 19:32:40 -0400 Subject: [PATCH 177/206] Fixed a grammatical error --- Topics/Teamwork.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index d82f6043e..9c41c40bd 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -18,7 +18,7 @@ It is not always possible to avoid conflict. In work environment when people are Handling a non-responsive and unmotivated team member in software engineering can be especially challenging due to the importance of collaboration and communication in the development process. There are several steps that can be taken to increase the chances of the conflict being resolved peacefully: -1. First, the team leader or manager should first schedule a meeting with the team member to discuss their concerns and understand the root cause of their lack of motivation. It could be due to a variety of factors such as workload, personal issues or lack of interest in the project. +1. First, the team leader or manager should schedule a meeting with the team member to discuss their concerns and understand the root cause of their lack of motivation. It could be due to a variety of factors such as workload, personal issues or lack of interest in the project. 2. Once the root cause is identified, the leader should work with the team member to develop a plan to improve their performance, such as redefining their role, providing training or mentorship or reassigning tasks. 3. Additionally, the team leader can try to increase the team member's motivation by setting clear goals and providing feedback, recognition and incentives for their contributions. From 7ce92df98815128a62ecf33d205abf5f4cc090bf Mon Sep 17 00:00:00 2001 From: Mehrdad Ghannad Date: Wed, 22 Mar 2023 19:56:12 -0400 Subject: [PATCH 178/206] added typescript to readme.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 90cd6f2d0..5d2203ed8 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,8 @@ Potential Topics-- 3. Salesforce API 4. CSS (Cascading Style Sheets) + + 5. TypeScript - Software Tools 1. Git From 4c82ab8928ad33a89f70b33e78df1986e3c0f65e Mon Sep 17 00:00:00 2001 From: Berjis Karbhari <68819197+BKPrograms@users.noreply.github.com> Date: Wed, 22 Mar 2023 21:51:02 -0400 Subject: [PATCH 179/206] Updated Axios.md with Moderator Feedback --- Topics/Tech_Stacks/Axios.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks/Axios.md b/Topics/Tech_Stacks/Axios.md index 1ec765f90..c202c50b0 100644 --- a/Topics/Tech_Stacks/Axios.md +++ b/Topics/Tech_Stacks/Axios.md @@ -2,7 +2,7 @@ ## What is Axios? -Axios is a JavaScript framework that enables developers to send a variety of HTTP requests, performs automatic and contextual serialization of response data, protects +Axios is a JavaScript library that enables developers to send a variety of HTTP requests, performs automatic and contextual serialization of response data, protects against [XSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery) attacks, and even allows for request cancellation amongst much more. It can be used in both the backend and frontend of a full stack application, making it a versatile addition to any JavaScript based application. @@ -53,6 +53,14 @@ Axios.post("https://www.website.com", someData).then( } ) ``` +When using Axios.post(), the `someData` parameter could represent any kind of data that needs to be sent in the request body, such as a JSON object. +In addition, `res` is a JSON object that encapsulates the entire response and `err` is a similar JSON object for the error. Usually, `res` has the following attributes: + +* `res.status`, the HTTP response code such as 404, 200, 500, etc. +* `res.statusText`, the text of the HTTP response code such as 'OK', 'PAGE NOT FOUND, 'INTERNAL SERVER ERROR', etc. +* `res.data`, the actual information request contained in a JSON format. The format can vary depending on the backend/server response. +* `res.headers`, the headers of the response that usually instruct the browser or receiver to perform a certain protocol/instruction. +* `res.request`, is the is the request that generated this response. It is the last ClientRequest instance in node.js and an XMLHttpRequest instance in the browser. Along with `.get()` and `.post()`, Axios also supports `.put()`, `.patch()`, `.delete()`, and the entirety of the HTTP request frameworks. From 290dcda610f949ba81b5f51bcffefd9d22f3d1a4 Mon Sep 17 00:00:00 2001 From: Vraj-Patel1 <90832450+Vraj-Patel1@users.noreply.github.com> Date: Wed, 22 Mar 2023 22:06:18 -0400 Subject: [PATCH 180/206] Added User Experience Orientated Games section under User Experience --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5d2203ed8..c53b4a2f6 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,7 @@ Potential Topics-- 1. Overview 2. Areas of User Experience 3. Helpful Courses + 4. User Experience Orientated Games - Product Management 1. Beginner's guide to product management and becoming a successful product manager - Other useful resources From 078ed18f9ca6566ded317156ceb5427ab3badfcb Mon Sep 17 00:00:00 2001 From: Nitin Mahtani <82001235+nitinmahtani@users.noreply.github.com> Date: Wed, 22 Mar 2023 22:53:49 -0400 Subject: [PATCH 181/206] capitalized T in testing as requested in development_Process.md Co-authored-by: Lucia <37385317+lmg8@users.noreply.github.com> --- Topics/Development_Process.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index f1faf6077..b0c5a8771 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -2,7 +2,7 @@ ### [Django Project Deployment: AWS, Vercel, and Railway](./Development_Process/Django_Deployment_AWS_Railway_Vercel.md) ### [Automated Frontend Deployment with Vercel](./Development_Process/Frontend_Automated_Deployment_Vercel.md) -### [Quality Assurance testing](./Development_Process/QA_testing.md) +### [Quality Assurance Testing](./Development_Process/QA_testing.md) - [Automated Testing](./Development_Process/Automated_Testing.md) ### [Getting Started With Docker](./Development_Process/Docker.md) From 280397e2914b7c7b5f1ffbd845322949b38b9258 Mon Sep 17 00:00:00 2001 From: aielaayaz <79423798+aielaayaz@users.noreply.github.com> Date: Wed, 22 Mar 2023 23:16:26 -0400 Subject: [PATCH 182/206] Update Teamwork.md --- Topics/Teamwork.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index 8f426c421..6117ece5d 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -2,9 +2,16 @@ ## Communication -Communication is one of the most essential parts of a successful software engineering team. This is because software engineering teams are often composed of multiple individuals with different experiences, skills, schedules and responsibilites and without effective communication the team will not be able to successfuly work together on completing their project. +Communication is one of the most essential parts of a successful software engineering team. This is because software engineering teams are often composed of multiple individuals with a diverse set of skills, experiences, schedules and responsibilites. Clear communication helps team members divide work efficiently, ensuring that each member has a clear understanding of their responsibilities and deadlines. This helps to avoid overlap or confusion in the workflow, leading to smoother collaboration and faster delivery. +Communication is essential for positive collaboration. In software development, problems are bound to arise, and effective communication is key to resolving them quickly. By discussing issues openly and honestly, team members can brainstorm solutions, use their collective expertise, and work together to resolve issues in a timely manner. Effective communication also leads to the development of high-quality software products. + +[7 tips for more effective communication in the workplace](https://asana.com/resources/effective-communication-workplace) + +Team members must update each other on their ideas, progress and any obstacles they might be facing in their work. If they don't there will be a drop in productivity and even a delay in their project. If a team member is facing issues it is important for them to discuss them with their co-workers so they are aware of the problem and they might be able to help resolve the issue. Communication is also integral for voicing your concerns to your team members. Team members should be able to communciate their concerns with each other and resolve them in a professional and constructive manner. This maintains an important sense of accountability between the team members. + +[How to Approach a Co-Worker](https://adm.viu.ca/workplace-conflict/direct-discussion-how-approach-co-worker) ## Conflict Resolution From e92636f24c449c7fc9c1a65680cc5b349f289891 Mon Sep 17 00:00:00 2001 From: aielaayaz <79423798+aielaayaz@users.noreply.github.com> Date: Wed, 22 Mar 2023 23:18:55 -0400 Subject: [PATCH 183/206] Update Teamwork.md --- Topics/Teamwork.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index 6117ece5d..8823fb878 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -9,7 +9,7 @@ Communication is essential for positive collaboration. In software development, [7 tips for more effective communication in the workplace](https://asana.com/resources/effective-communication-workplace) -Team members must update each other on their ideas, progress and any obstacles they might be facing in their work. If they don't there will be a drop in productivity and even a delay in their project. If a team member is facing issues it is important for them to discuss them with their co-workers so they are aware of the problem and they might be able to help resolve the issue. Communication is also integral for voicing your concerns to your team members. Team members should be able to communciate their concerns with each other and resolve them in a professional and constructive manner. This maintains an important sense of accountability between the team members. +Team members must update each other on their ideas, progress and any obstacles they might be facing in their work. Otherwise there might be a drop productivity and even a delay in their project. If a team member is facing issues it is important for them to discuss them with their co-workers so they are aware of the problem and they might also be able to help resolve the issue. Communication is also integral for voicing your concerns to your team members. Team members should be able to communciate their concerns with each other and resolve them in a professional and constructive manner. This maintains an important sense of accountability between the team members. [How to Approach a Co-Worker](https://adm.viu.ca/workplace-conflict/direct-discussion-how-approach-co-worker) From 6fedaaf45ee280a36bb839e54c379663971979a3 Mon Sep 17 00:00:00 2001 From: aielaayaz <79423798+aielaayaz@users.noreply.github.com> Date: Wed, 22 Mar 2023 23:19:31 -0400 Subject: [PATCH 184/206] Update Teamwork.md --- Topics/Teamwork.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index 8823fb878..52a4046dc 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -5,7 +5,7 @@ Communication is one of the most essential parts of a successful software engineering team. This is because software engineering teams are often composed of multiple individuals with a diverse set of skills, experiences, schedules and responsibilites. Clear communication helps team members divide work efficiently, ensuring that each member has a clear understanding of their responsibilities and deadlines. This helps to avoid overlap or confusion in the workflow, leading to smoother collaboration and faster delivery. -Communication is essential for positive collaboration. In software development, problems are bound to arise, and effective communication is key to resolving them quickly. By discussing issues openly and honestly, team members can brainstorm solutions, use their collective expertise, and work together to resolve issues in a timely manner. Effective communication also leads to the development of high-quality software products. +Communication is essential for positive collaboration. In software development, different problems can arise, and effective communication is key to resolving them quickly. By discussing issues openly and honestly, team members can brainstorm solutions, use their collective expertise, and work together to resolve issues in a timely manner. Effective communication also leads to the development of high-quality software products. [7 tips for more effective communication in the workplace](https://asana.com/resources/effective-communication-workplace) From f0d09d5e4e83ebbd44d6c8646d57783159bef25c Mon Sep 17 00:00:00 2001 From: jeremiahwong007 <73967834+jeremiahwong007@users.noreply.github.com> Date: Wed, 22 Mar 2023 23:20:58 -0400 Subject: [PATCH 185/206] changes based on PR review --- Topics/Tech_Stacks/PostgreSQL_psycopg2.md | 106 ++++++++++++++++++---- 1 file changed, 89 insertions(+), 17 deletions(-) diff --git a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md index c0589ab28..f425c4f31 100644 --- a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md +++ b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md @@ -1,38 +1,109 @@ # Learning PostgreSQL and psycopg2 -### Prerequisites +## Table of contents +### [Prerequisites](#prerequisites-1) +### [Introduction](#introduction-1) +### [PostgreSQL installation](#PostgreSQL-installation-1) +### [psycopg2 installation](#psycopg2-installation-1) +### [Setup and Basic Table Operations in PostgreSQL](#setup-and-basic-table-operations-in-postgresql-1) +### [Setup and PostgreSQL Operations in psycopg2](#Setup-and-PostgreSQL-Operations-in-psycopg2-1) +### [Additional Resources](#additional-resources-1) + +## Prerequisites Before learning about PostgreSQL and psycopg2, ensure that you have knowledge about the following: - [Python](https://www.python.org/): High level general purpose programming language. -- Relational Algebra -- Database Theory -- Basic understanding of SQL +- Relational Algebra: Understanding the behaviour of relational operations. +- Database Theory: Understanding of constraints, tables, relations, and schemas. +- Basic understanding of SQL: Understand the restrictions of SQL and what information is required to perform operations. -### Introduction -PostgreSQL is an open-source DBMS. As the name states, PostgreSQL is a relational DBMS based on relations and queries and is great for dealing with large amounts of data and complex queries. It's also good for referencing data quickly and allowing the user to have some flexibility in how they want to represent their data. Furthermore, PostgreSQL supports table inheritance and function overloading. +## Introduction +PostgreSQL is an open-source DBMS. As the name states, PostgreSQL is a relational Database Management System (DBMS) based on relations and queries and is great for dealing with large amounts of data and complex queries. It's also good for referencing data quickly and allowing the user to have some flexibility in how they want to represent their data. Furthermore, PostgreSQL supports table inheritance and function overloading. pyscopg2 is an adapter for Python that allows you to easily integrate PostgreSQL into your program. It's commonly used with other Python libraries like Flask, which allows you to use a PostgreSQL database in your application easily. -### PostgreSQL and psycopg2 installation +## PostgreSQL installation The following link is to download PostgreSQL onto your computer: https://www.postgresql.org/download/ . This link also shows the different versions of PostgreSQL to match your computer. Follow the instructions after downloading. For your convenience, here are the links to download the installer for PostgreSQL on different OS: - Windows: https://www.postgresql.org/download/windows/ - MacOS: https://www.postgresql.org/download/macosx/ - Linux: https://www.postgresql.org/download/linux/ -Once installed, you can create a database, relation, and tables with the PostgreSQL client called "pgAdmin". You can also perform queries on relations and tables through its query tool. More information on how to use pgAdmin can be found from this [link](https://www.pgadmin.org/docs/pgadmin4/6.21/index.html). +Once installed, you can create a database, relation, and tables with the PostgreSQL client called "pgAdmin". pgAdmin is automatically downloaded when using the links above and can be accessed by searching your task bar. You can also perform queries on relations and tables through its query tool. More information on how to use pgAdmin can be found at this [link](https://www.pgadmin.org/docs/pgadmin4/6.21/index.html). If you are using MacOS, you can also run the command "brew install postgresql" in your terminal. Note that you also have to have Homebrew installed for this command to work. "brew install postgresql" allows the user to use PostgreSQL on their command line by simply initiating a PostgreSQL environment with the command "psql". -For Windows users, it's better for the user to download PostgreSQL through the link provided above. If the user wants to utilize PostgreSQL on the command line, they must (after installation): +For Windows users, the user should download PostgreSQL through the link provided above. If the user wants to utilize PostgreSQL on the command line, they must (after installation): 1. Add the PostgreSQL bin directory path to the PATH environment variable. 2. Run the command "psql -U username" +## psycopg2 installation To install psycopg2, you can use pip to install its functionality by using the command: "pip install psycopg2". After installing this in your desired directory, you can import psycopg2 into your python files and perform PostgreSQL queries very intuitively. -### Basic Operations -A very very quick and basic runover of PostgreSQL. +## Setup Database and Basic Table Operations in PostgreSQL +A quick and basic runover of PostgreSQL. + +### Create Database +To create a database in PostgreSQL, you can either use pgAdmin or the command line. + +In pgAdmin, you can: +1. Open pgAdmin on your computer. +2. Click on "Servers". +3. Click on "PostgreSQL". The version of PostgreSQL should follow after the name. +4. Right click on "Databases" and click "Create" +5. Follow the instructions in pgAdmin. + +In the command line: +1. Type "psql" to initialize the PostgreSQL environment. +2. Type "CREATE DATABASE" followed by the name of the database. For example, "CREATE DATABASE CourseInfo". +3. For any errors, you can refer to this [link](https://www.postgresql.org/docs/current/sql-createdatabase.html) + + +### Create Schema +To create a table, you must first create a schema in your database. + +To do this in pgAdmin: +1. Click on your desired database. +2. Find the "Schemas" directory. +3. Right click and select "Create" +4. Follow the rest of the instructions in pgAdmin + +To do this in the command line: +1. Type "psql" to initialize the PostgreSQL environment. +2. Type "\c DBNAME" where DBNAME is the name of the desired database +2. Type "CREATE SCHEMA" followed by the name of the schema. For example, "CREATE SCHEMA SchoolSchema". + + +### Create Tables +After creating your schema you can create tables/relations to perform operations on. + +To create a table in pgAdmin: +1. Right click on your desired schema. +2. Select "Create" +3. Select "Table" +4. Follow the instructions in pgAdmin + +To create a table in the command line: +1. Type "psql" to initialize the PostgreSQL environment. +2. Type "\c DBNAME" where DBNAME is the name of the desired database +3. Type "SET search_path TO schema_name;" where schema_name is the name of the desired schema you want to put your table in. +4. Type "CREATE TABLE table_name (column1 int PRIMARY KEY, ...);", where table_name is the desired name of the table. Inside the round braces is a list of the columns that you want in the table. For each column, you must specify a name and datatype. For example, a table can be created like this: + +``` CREATE TABLE accounts ( + id serial PRIMARY KEY, + username VARCHAR ( 50 ) UNIQUE NOT NULL, + password VARCHAR ( 50 ) NOT NULL, + email VARCHAR ( 255 ) UNIQUE NOT NULL, +); +``` +The text after the datatypes (e.g. UNIQUE NOT NULL) are optional. + +Here is a link for information on datatypes in PostgreSQL: https://www.postgresql.org/docs/current/datatype.html + +Here is a link for more details and examples of how to create a table: https://www.postgresql.org/docs/current/sql-createtable.html + -To select data from a certain column in a table, you can use a query like: +### Table Operations +Moving onto table operations. To select data from a certain column in a table, you can use a query like: ``` SELECT col_name1, col_name2 FROM table_name; ``` @@ -54,21 +125,22 @@ There are many other features of PostgreSQL. Specifics of the syntax of PostgreSQL can be found in this [link](https://www.postgresql.org/docs/current/sql-syntax.html). -As a quick runover, to start using PostgreSQL in a Python program, you must first setup the psycopg2 module in a Python file. +## Setup and PostgreSQL Operations in psycopg2 +As a quick run over, to start using PostgreSQL in a Python program, you must first set up the psycopg2 module in a Python file. This can be done by: -1. Create a database in PostgreSQL +1. Create a database in PostgreSQL. This can be done through the command line or pgAdmin. Next, all steps are in your python script. 2. "import psycopg2" at the start of your python script. -3. Connect to the new database by running, for example: "conn = psycopg2.connect("dbname=test user=postgres")" +3. Connect to the new database by running, for example: "conn = psycopg2.connect("dbname=test user=postgres")". In this example, "test" is the name of the database that you created and "postgres" is the default username when you install PostgreSQL. 4. Initialize a cursor with the connection to be able to perform PostgreSQL operations on the database. You can do this by "cur = conn.cursor()" -5. You can execute any PostgreSQL command through this cursor. For example: "cur.execute("SELECT * FROM test;")". +5. You can execute any PostgreSQL command through this cursor. For example: "cur.execute("SELECT * FROM test;")". This includes commands like creating tables using PostgreSQL syntax. 6. You can use "conn.commit()" to save the changes to your database. Specifics of syntax, such as passing in python variables as values in a query, and module use of psycopg2 can be found in this [link](https://www.psycopg.org/docs/usage.html#passing-parameters-to-sql-queries). The syntax that involves making queries in psycopg2 is the same as PostgreSQL. There are good examples in the link provided. Here is a link with even more examples to aid you in using psycopg2: https://wiki.postgresql.org/wiki/Psycopg2_Tutorial -### Additional Resources +## Additional Resources - This link provides some information on how to link psycopg2 and flask: https://www.geeksforgeeks.org/making-a-flask-app-using-a-postgresql-database/ From 9d64d7d3ae9fb60e275614533e5c7428aacafb64 Mon Sep 17 00:00:00 2001 From: aielaayaz <79423798+aielaayaz@users.noreply.github.com> Date: Wed, 22 Mar 2023 23:23:38 -0400 Subject: [PATCH 186/206] Update Teamwork.md --- Topics/Teamwork.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index 52a4046dc..8793a7912 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -5,11 +5,13 @@ Communication is one of the most essential parts of a successful software engineering team. This is because software engineering teams are often composed of multiple individuals with a diverse set of skills, experiences, schedules and responsibilites. Clear communication helps team members divide work efficiently, ensuring that each member has a clear understanding of their responsibilities and deadlines. This helps to avoid overlap or confusion in the workflow, leading to smoother collaboration and faster delivery. -Communication is essential for positive collaboration. In software development, different problems can arise, and effective communication is key to resolving them quickly. By discussing issues openly and honestly, team members can brainstorm solutions, use their collective expertise, and work together to resolve issues in a timely manner. Effective communication also leads to the development of high-quality software products. +Communication is essential for positive collaboration. In software development different problems can arise and effective communication is key to resolving them quickly. By discussing issues openly and honestly, team members can brainstorm solutions and use their collective expertise to work together and resolve issues in a timely manner. Effective communication, therefore, leads to the development of high-quality software products. [7 tips for more effective communication in the workplace](https://asana.com/resources/effective-communication-workplace) -Team members must update each other on their ideas, progress and any obstacles they might be facing in their work. Otherwise there might be a drop productivity and even a delay in their project. If a team member is facing issues it is important for them to discuss them with their co-workers so they are aware of the problem and they might also be able to help resolve the issue. Communication is also integral for voicing your concerns to your team members. Team members should be able to communciate their concerns with each other and resolve them in a professional and constructive manner. This maintains an important sense of accountability between the team members. +Team members must update each other on their ideas, progress and any obstacles they might be facing in their work. Otherwise, there might be a drop in productivity and even a delay in the project. If a team member is facing issues it is important for them to discuss these with their co-workers as they might be able to help resolve the issue. + +Communication is integral for voicing your concerns to your team members. Team members should communciate their concerns with each other respectfully and resolve these concerns in a professional and constructive manner. This maintains an important sense of accountability between the team members. [How to Approach a Co-Worker](https://adm.viu.ca/workplace-conflict/direct-discussion-how-approach-co-worker) From ec5a40bc7e4c0dfba78e31e4a2df4734710e4100 Mon Sep 17 00:00:00 2001 From: jeremiahwong007 <73967834+jeremiahwong007@users.noreply.github.com> Date: Wed, 22 Mar 2023 23:23:58 -0400 Subject: [PATCH 187/206] fixed table of contents error --- Topics/Tech_Stacks/PostgreSQL_psycopg2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md index f425c4f31..6059b1931 100644 --- a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md +++ b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md @@ -5,7 +5,7 @@ ### [Introduction](#introduction-1) ### [PostgreSQL installation](#PostgreSQL-installation-1) ### [psycopg2 installation](#psycopg2-installation-1) -### [Setup and Basic Table Operations in PostgreSQL](#setup-and-basic-table-operations-in-postgresql-1) +### [Setup Database and Basic Table Operations in PostgreSQL](#Setup-Database-and-Basic-Table-Operations-in-PostgreSQL-1) ### [Setup and PostgreSQL Operations in psycopg2](#Setup-and-PostgreSQL-Operations-in-psycopg2-1) ### [Additional Resources](#additional-resources-1) From 8e87e85834f0e4ac96a27b714f4e1cc405b1d5b5 Mon Sep 17 00:00:00 2001 From: aielaayaz <79423798+aielaayaz@users.noreply.github.com> Date: Wed, 22 Mar 2023 23:30:44 -0400 Subject: [PATCH 188/206] Update Teamwork.md Added Communication --- Topics/Teamwork.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index 8793a7912..7f062353f 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -3,7 +3,9 @@ ## Communication -Communication is one of the most essential parts of a successful software engineering team. This is because software engineering teams are often composed of multiple individuals with a diverse set of skills, experiences, schedules and responsibilites. Clear communication helps team members divide work efficiently, ensuring that each member has a clear understanding of their responsibilities and deadlines. This helps to avoid overlap or confusion in the workflow, leading to smoother collaboration and faster delivery. +Communication is one of the most essential parts of a successful software engineering team. This is because software engineering teams are often composed of multiple individuals with a diverse set of skills, experiences, schedules and responsibilites. Clear communication helps team members divide work efficiently, ensuring that each member has a clear understanding of their responsibilities and deadlines. This helps to avoid overlap or misunderstandings in the workflow, leading to smoother collaboration and faster delivery. + +[How to avoid misunderstandings in the workplace](https://www.roberthalf.cn/en/management-advice/team/how-avoid-misunderstandings-workplace) Communication is essential for positive collaboration. In software development different problems can arise and effective communication is key to resolving them quickly. By discussing issues openly and honestly, team members can brainstorm solutions and use their collective expertise to work together and resolve issues in a timely manner. Effective communication, therefore, leads to the development of high-quality software products. From b774567fe10f08d31c936f9b0b6eaa1651e8d1ec Mon Sep 17 00:00:00 2001 From: aielaayaz <79423798+aielaayaz@users.noreply.github.com> Date: Wed, 22 Mar 2023 23:55:04 -0400 Subject: [PATCH 189/206] Update Teamwork.md --- Topics/Teamwork.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index 7f062353f..9950c6edb 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -17,6 +17,9 @@ Communication is integral for voicing your concerns to your team members. Team m [How to Approach a Co-Worker](https://adm.viu.ca/workplace-conflict/direct-discussion-how-approach-co-worker) +Effective communication is crucial for any software engineering team to work well together and achieve their goals. The importance of this can be shown through the following article. + +[Statistics on why effective communication is important in the workplace.](https://www.linkedin.com/pulse/statistics-why-effective-communication-important-/?trk=pulse-article_more-articles_related-content-card) ## Conflict Resolution From c9cc444d0c25ee268c0313b9a9f1d667b9e336d8 Mon Sep 17 00:00:00 2001 From: aielaayaz <79423798+aielaayaz@users.noreply.github.com> Date: Wed, 22 Mar 2023 23:56:39 -0400 Subject: [PATCH 190/206] Update Teamwork.md Added study which shows importance of effective communication --- Topics/Teamwork.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index 9950c6edb..fad1e61ae 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -7,7 +7,7 @@ Communication is one of the most essential parts of a successful software engine [How to avoid misunderstandings in the workplace](https://www.roberthalf.cn/en/management-advice/team/how-avoid-misunderstandings-workplace) -Communication is essential for positive collaboration. In software development different problems can arise and effective communication is key to resolving them quickly. By discussing issues openly and honestly, team members can brainstorm solutions and use their collective expertise to work together and resolve issues in a timely manner. Effective communication, therefore, leads to the development of high-quality software products. +Communication is essential for positive collaboration. In software engineering different problems can arise and effective communication is key to resolving them quickly. By discussing issues openly and honestly, team members can brainstorm solutions and use their collective expertise to work together and resolve issues in a timely manner. Effective communication, therefore, leads to the development of high-quality software products. [7 tips for more effective communication in the workplace](https://asana.com/resources/effective-communication-workplace) @@ -17,7 +17,7 @@ Communication is integral for voicing your concerns to your team members. Team m [How to Approach a Co-Worker](https://adm.viu.ca/workplace-conflict/direct-discussion-how-approach-co-worker) -Effective communication is crucial for any software engineering team to work well together and achieve their goals. The importance of this can be shown through the following article. +Effective communication is crucial for any software engineering team to work well together and achieve their goals in a timely and organized manner. [Statistics on why effective communication is important in the workplace.](https://www.linkedin.com/pulse/statistics-why-effective-communication-important-/?trk=pulse-article_more-articles_related-content-card) From eaa569d71b2ac255c703fc37c315a667f11a845a Mon Sep 17 00:00:00 2001 From: lmg8 <37385317+lmg8@users.noreply.github.com> Date: Thu, 23 Mar 2023 00:16:05 -0400 Subject: [PATCH 191/206] Update styling for links in Nuxt3.md and spacing in Development_Process.md --- Topics/Development_Process.md | 1 + Topics/Tech_Stacks/Nuxt3.md | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Topics/Development_Process.md b/Topics/Development_Process.md index 7f7511fb5..7bf1329f8 100644 --- a/Topics/Development_Process.md +++ b/Topics/Development_Process.md @@ -4,6 +4,7 @@ ### [Automated Frontend Deployment with Vercel](./Development_Process/Frontend_Automated_Deployment_Vercel.md) ### [Quality Assurance Testing](./Development_Process/QA_testing.md) - [Automated Testing](./Development_Process/Automated_Testing.md) + ### [Getting Started With Docker](./Development_Process/Docker.md) diff --git a/Topics/Tech_Stacks/Nuxt3.md b/Topics/Tech_Stacks/Nuxt3.md index 592973e3e..a58f5a1ef 100644 --- a/Topics/Tech_Stacks/Nuxt3.md +++ b/Topics/Tech_Stacks/Nuxt3.md @@ -1,13 +1,13 @@ ## My Icon Learn How to Create a Nuxt3 App If you are looking for tutorials or documentation on creating a Nuxt3 application, be aware that many resources actually teach Nuxt2. It is important to note that Nuxt3 installation and syntax differ significantly from Nuxt2. As I faced this challenge myself, I would like to share a helpful YouTube tutorial that provides step-by-step instructions for creating a Nuxt3 app. -The tutorial link is: https://www.youtube.com/watch?v=hj3NNlTqIJg&list=PL8HkCX2C5h0XT3xWYn71TlsAAo0kizmVc&index=1 +The tutorial link is: [https://www.youtube.com/watch?v=hj3NNlTqIJg&list=PL8HkCX2C5h0XT3xWYn71TlsAAo0kizmVc&index=1](https://www.youtube.com/watch?v=hj3NNlTqIJg&list=PL8HkCX2C5h0XT3xWYn71TlsAAo0kizmVc&index=1) -Additionally, you can access further support options, such as a Discord server, by visiting this page: https://nuxt.com/support/solutions. +Additionally, you can access further support options, such as a Discord server, by visiting this page: [https://nuxt.com/support/solutions](https://www.youtube.com/watch?v=hj3NNlTqIJg&list=PL8HkCX2C5h0XT3xWYn71TlsAAo0kizmVc&index=1). It's worth mentioning that due to the confusion between Nuxt2 and Nuxt3 documentations online, Nuxt2 has more support and answered questions than Nuxt3. Therefore, you may opt to use Nuxt2 instead. However, keep in mind that installing Nuxt2 takes a longer time, so you should be patient. -If you want to add the Tailwind CSS library to your Nuxt3 app, please follow the instructions in this link: https://tailwindcss.com/docs/guides/nuxtjs#3. +If you want to add the Tailwind CSS library to your Nuxt3 app, please follow the instructions in this link: [https://tailwindcss.com/docs/guides/nuxtjs#3](https://www.youtube.com/watch?v=hj3NNlTqIJg&list=PL8HkCX2C5h0XT3xWYn71TlsAAo0kizmVc&index=1). Make sure to select Nuxt3 instead of Nuxt2. ## Why Nuxt? From ba0e3fe25561990936af1c3d79061b2f7740de31 Mon Sep 17 00:00:00 2001 From: aielaayaz <79423798+aielaayaz@users.noreply.github.com> Date: Thu, 23 Mar 2023 16:30:15 -0400 Subject: [PATCH 192/206] Update Teamwork.md Implemented suggested changes --- Topics/Teamwork.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index fad1e61ae..d3b43a0b6 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -3,11 +3,13 @@ ## Communication -Communication is one of the most essential parts of a successful software engineering team. This is because software engineering teams are often composed of multiple individuals with a diverse set of skills, experiences, schedules and responsibilites. Clear communication helps team members divide work efficiently, ensuring that each member has a clear understanding of their responsibilities and deadlines. This helps to avoid overlap or misunderstandings in the workflow, leading to smoother collaboration and faster delivery. +Communication is one of the most essential parts of a successful software engineering team. This is because software engineering teams are often composed of multiple individuals with a diverse set of skills, experiences, schedules and responsibilites. Clear communication helps team members divide work efficiently, ensuring that each member has a clear understanding of their responsibilities and deadlines. This helps to avoid misunderstandings and leads to smoother collaborations and faster delivery. [How to avoid misunderstandings in the workplace](https://www.roberthalf.cn/en/management-advice/team/how-avoid-misunderstandings-workplace) -Communication is essential for positive collaboration. In software engineering different problems can arise and effective communication is key to resolving them quickly. By discussing issues openly and honestly, team members can brainstorm solutions and use their collective expertise to work together and resolve issues in a timely manner. Effective communication, therefore, leads to the development of high-quality software products. +Communication is essential for positive collaboration. In software engineering different problems can arise and effective communication is key to resolving them quickly. By discussing issues openly and honestly, team members can brainstorm solutions and use their collective expertise to work together and resolve issues in a timely manner. Effective communication, therefore, leads to the development of high-quality software products. + +Some examples of effective communication include [active listening](https://myseco.militaryonesource.mil/portal/article/active-listening-in-the-workplace), timely communication, clear messages and honest feedback. [7 tips for more effective communication in the workplace](https://asana.com/resources/effective-communication-workplace) @@ -17,7 +19,9 @@ Communication is integral for voicing your concerns to your team members. Team m [How to Approach a Co-Worker](https://adm.viu.ca/workplace-conflict/direct-discussion-how-approach-co-worker) -Effective communication is crucial for any software engineering team to work well together and achieve their goals in a timely and organized manner. +Effective communication is crucial for any software engineering team to work well together and achieve their goals in a timely and organized manner. It can, however, be difficult to communicate with your team due to a number of challenges. In a globalized workplace, where employees come from different cultural backgrounds, language barriers can pose significant challenges and can lead to misunderstandings and misinterpretations. + +Letting your emotions overwhelm you can also hinder effective communication in the workplace. Emotions such as anxiety, stress, and anger can all negatively impact communication and professional relationships. It is essential for team members to work together on overcoming these challnges to maintain a productive and healthy work enviornment. [Statistics on why effective communication is important in the workplace.](https://www.linkedin.com/pulse/statistics-why-effective-communication-important-/?trk=pulse-article_more-articles_related-content-card) From a4970d5fa556c1849fa240310b11d5f609d7ba2c Mon Sep 17 00:00:00 2001 From: Rafee Rahman <59676643+rafeerahman@users.noreply.github.com> Date: Thu, 23 Mar 2023 16:46:23 -0400 Subject: [PATCH 193/206] Fixed table of contents and code formatting Fixed table of contents and code formatting for the github pages. --- Topics/Tech_Stacks/PostgreSQL_psycopg2.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md index 6059b1931..595d391c0 100644 --- a/Topics/Tech_Stacks/PostgreSQL_psycopg2.md +++ b/Topics/Tech_Stacks/PostgreSQL_psycopg2.md @@ -3,10 +3,10 @@ ## Table of contents ### [Prerequisites](#prerequisites-1) ### [Introduction](#introduction-1) -### [PostgreSQL installation](#PostgreSQL-installation-1) +### [PostgreSQL installation](#postgresql-installation-1) ### [psycopg2 installation](#psycopg2-installation-1) -### [Setup Database and Basic Table Operations in PostgreSQL](#Setup-Database-and-Basic-Table-Operations-in-PostgreSQL-1) -### [Setup and PostgreSQL Operations in psycopg2](#Setup-and-PostgreSQL-Operations-in-psycopg2-1) +### [Setup Database and Basic Table Operations in PostgreSQL](#setup-database-and-basic-table-operations-in-postgresql-1) +### [Setup and PostgreSQL Operations in psycopg2](#setup-and-postgresql-operations-in-psycopg2-1) ### [Additional Resources](#additional-resources-1) ## Prerequisites @@ -88,11 +88,12 @@ To create a table in the command line: 3. Type "SET search_path TO schema_name;" where schema_name is the name of the desired schema you want to put your table in. 4. Type "CREATE TABLE table_name (column1 int PRIMARY KEY, ...);", where table_name is the desired name of the table. Inside the round braces is a list of the columns that you want in the table. For each column, you must specify a name and datatype. For example, a table can be created like this: -``` CREATE TABLE accounts ( +``` +CREATE TABLE accounts ( id serial PRIMARY KEY, username VARCHAR ( 50 ) UNIQUE NOT NULL, password VARCHAR ( 50 ) NOT NULL, - email VARCHAR ( 255 ) UNIQUE NOT NULL, + email VARCHAR ( 255 ) UNIQUE NOT NULL ); ``` The text after the datatypes (e.g. UNIQUE NOT NULL) are optional. From f966ffef468b38ee551f27806ecc0b8be6796d05 Mon Sep 17 00:00:00 2001 From: aielaayaz <79423798+aielaayaz@users.noreply.github.com> Date: Thu, 23 Mar 2023 16:48:32 -0400 Subject: [PATCH 194/206] Update Teamwork.md --- Topics/Teamwork.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Topics/Teamwork.md b/Topics/Teamwork.md index d3b43a0b6..0f3600cf1 100644 --- a/Topics/Teamwork.md +++ b/Topics/Teamwork.md @@ -7,7 +7,7 @@ Communication is one of the most essential parts of a successful software engine [How to avoid misunderstandings in the workplace](https://www.roberthalf.cn/en/management-advice/team/how-avoid-misunderstandings-workplace) -Communication is essential for positive collaboration. In software engineering different problems can arise and effective communication is key to resolving them quickly. By discussing issues openly and honestly, team members can brainstorm solutions and use their collective expertise to work together and resolve issues in a timely manner. Effective communication, therefore, leads to the development of high-quality software products. +Communication is essential for positive collaboration. In software engineering different problems can arise and effective communication is key to resolving them quickly. By discussing issues openly and honestly, team members can brainstorm solutions and use their collective expertise to work together and resolve issues in a timely manner. This leads to the development of high-quality software products. Some examples of effective communication include [active listening](https://myseco.militaryonesource.mil/portal/article/active-listening-in-the-workplace), timely communication, clear messages and honest feedback. @@ -15,7 +15,7 @@ Some examples of effective communication include [active listening](https://myse Team members must update each other on their ideas, progress and any obstacles they might be facing in their work. Otherwise, there might be a drop in productivity and even a delay in the project. If a team member is facing issues it is important for them to discuss these with their co-workers as they might be able to help resolve the issue. -Communication is integral for voicing your concerns to your team members. Team members should communciate their concerns with each other respectfully and resolve these concerns in a professional and constructive manner. This maintains an important sense of accountability between the team members. +Communication is integral for voicing your concerns to your team members. Team members should express their concerns with each other respectfully and resolve these concerns in a professional and constructive manner. This maintains an important sense of accountability between the team members. [How to Approach a Co-Worker](https://adm.viu.ca/workplace-conflict/direct-discussion-how-approach-co-worker) From 504779eb03c60a6c90a011e0d2db356382e6c090 Mon Sep 17 00:00:00 2001 From: Rafee Rahman <59676643+rafeerahman@users.noreply.github.com> Date: Thu, 23 Mar 2023 18:40:52 -0400 Subject: [PATCH 195/206] minor change to header --- Topics/User_Experience.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 80893f26f..bcf059973 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -27,10 +27,11 @@ ___Responsive Design___ ___Nielsen's 10 Usability Heuristics___ - [Usability Heuristics](./User_Experience/Usability_Heuristics.md) -### Additional UX +### Accessibility Features of User Experience There are some things that have become a crucial part in making a software: Universal Design Principles. -___Accessiblity Features___ + +___The 7 Universal Design Principles___ - [Universal Design Principles](https://www.buffalo.edu/access/help-and-support/topic3/universaldesignprinciples.html): Universal Design Principles are not only used for software, but can be incorporated generally as well. These 7 principles ensure accessibility, consistency, and user-friendly software. This article provides the 7 Universal Design Principles that makes a software accessible to all users, which plays a important role in diversifying the User Experience. From 2cc740cd5385d3fa07f8e86aae424179d0cdfb4a Mon Sep 17 00:00:00 2001 From: jaren Date: Thu, 23 Mar 2023 20:15:05 -0400 Subject: [PATCH 196/206] update --- README.md | 10 +++++++++- Topics/Tech_Stacks.md | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9bbcf425d..002207d64 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,11 @@ Potential Topics-- 3. Salesforce API 4. CSS (Cascading Style Sheets) - 5. JavaSCript + + 5. TypeScript + + 6. JavaScript + - Software Tools 1. Git 1. Git Workflows @@ -56,11 +60,13 @@ Potential Topics-- 3. Firebase 4. Digital Ocean 5. Software development best practices: + 6. Vercel Frontend Deployment (Automated) 1. Designer Patterns 2. Clean Coding 1. Choose a coding style and stick to it 3. SOLID Principles 4. Code Smells + 5. QA testing - Professionalism 1. Customer engagement 1. Meeting best practices @@ -75,6 +81,8 @@ Potential Topics-- 1. Overview 2. Areas of User Experience 3. Helpful Courses + 4. User Experience Orientated Games - Product Management + 1. Beginner's guide to product management and becoming a successful product manager - Other useful resources - Teamwork diff --git a/Topics/Tech_Stacks.md b/Topics/Tech_Stacks.md index 7b16e3390..7735b415e 100644 --- a/Topics/Tech_Stacks.md +++ b/Topics/Tech_Stacks.md @@ -7,5 +7,7 @@ ### [How to access and use salesforce API](./Tech_Stacks/salesforce_api.md) ### [React Resources](./Tech_Stacks/React.md) ### [Angular Resources](./Tech_Stacks/Angular.md) +### [Learning PostgreSQL and psycopg2](./Tech_Stacks/PostgreSQL_psycopg2.md) ### [CSS](./Tech_Stacks/CSS.md) +### [Learning TypeScript](./Tech_Stacks/TypeScript.md) ### [Learning JavaScript](./Tech_Stacks/JavaScript.md) From 18bba8ecce1299b5fe9766e37d98b87d4e1e48c9 Mon Sep 17 00:00:00 2001 From: Haarowww <75808020+Haarowww@users.noreply.github.com> Date: Thu, 23 Mar 2023 23:45:53 -0400 Subject: [PATCH 197/206] Fix some inaccurate description --- Topics/User_Experience.md | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/Topics/User_Experience.md b/Topics/User_Experience.md index 2b94e5868..6ad4f96c9 100644 --- a/Topics/User_Experience.md +++ b/Topics/User_Experience.md @@ -42,11 +42,11 @@ There are many courses related to User Experience. This includes the U of T Cour ### Tools Can Be Used In UX Design -In addition to Bootstrap, Ant Design is another popular UI library and design system. It is specifically designed for React applications, providing a complete set of high-quality React components that make user interface development simpler, more consistent, and modular. Ant Design is ideal for building enterprise-level applications and dashboards with a focus on high performance, usability, and aesthetics. +In addition to Bootstrap, Ant Design is another popular UI library and design system. It is specifically designed for React applications and other frontend frameworks like Vue, Angular and etc, providing a complete set of high-quality React components that make user interface development simpler, more consistent, and modular. Ant Design is ideal for building enterprise-level applications and dashboards with a focus on high performance, usability, and aesthetics. Ant Design provides a wide range of UI components, including buttons, icons, form elements, tables, and navigation menus. It also offers a consistent design language, making it easier for developers to create appealing user interfaces. The design ensures that your applications look great on different devices and screen sizes. More importantly, it is easy to use for beginners. Following steps are provided for you to start using Ant Design in your project. -First, you need to install Ant Design in your React application. You can do this by running the following command: +First, you need to install Ant Design in your React application. You can do this by running the following command (also you can use yarn command to install, here I provide method using npm): **npm install antd** @@ -54,7 +54,20 @@ Next, you may want to import the components you want to use in your application. **import { Button } from 'antd';** -Finally, you are done. All you need to do is use the imported components in your application. Besides, Ant Design allows you to customize the default theme by modifying the less variables. For instance, you can use tools like 'craco-less' or 'react-app-rewired' to customize your theme without ejecting from Create React App. +Finally, you are almost done. All you need to do is use the imported components in your application. For example, below code is a example using Button from antd package: + +function App() { + return ( +
+ +
+ ); +} + +export default App; + + +Besides, Ant Design allows you to customize the default theme by modifying the less variables. For instance, you can use tools like 'craco-less' or 'react-app-rewired' to customize your theme without ejecting from Create React App. If you want to learn more about Ant Design. There are some useful documents or tutorials that can help you get started with Ant Design. From 6106d1a68b725ff3d712aa96190ab19e2a987af8 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Fri, 24 Mar 2023 00:06:18 -0400 Subject: [PATCH 198/206] Separate section from main file --- Topics/User_Stories.md | 71 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Topics/User_Stories.md diff --git a/Topics/User_Stories.md b/Topics/User_Stories.md new file mode 100644 index 000000000..6d59a6f00 --- /dev/null +++ b/Topics/User_Stories.md @@ -0,0 +1,71 @@ +## User Stories + +### Introduction + +A user story is an informal description of a new feature or task in a software project. The purpose of a user story is to gauge how the particular feature will provide value from the perspective of the user. These stories generally exist within a larger set, and ultimately allow teams to organize their workflow in a user-centric manner. + +User stories all follow a general structure and are accompanied by their associated "Acceptance Criteria" and some additional details. Each section retains the customer-focused philosophy of the user story and consists of a few non-technical descriptive sentences. By combining these sections, user stories are able to effectively scope the entirety of their task. + +### Story Structure + +The majority of user stories are written to follow a general outline or pattern. The most commonly used format is the [Connextra Template](https://www.mountaingoatsoftware.com/agile/user-stories), as outlined below: +``` +As a , I want , so that +``` +There are many other popular formats that are derivations of the one above. However, other non-standard formats can also be used, such as this W5 example below: +``` +As , I want because +``` +Each format has its own advantages and disadvantages. Teams will generally use the format that best fits their goals and delivers the most value. + +### Acceptance Criteria + +Acceptance criteria refers to a set of requirements that must be accomplished for a user story to be completed and closed. The purpose of acceptance criteria is to fully scope user stories. This is important so that developers know exactly what they need to output, and so that all stakeholders are satisfied. + +Like with user stories, there are various ways to commonly organize acceptance criteria. The most common organizational strategy is the "Given/When/Then" method. This works similarly to the examples in the section above: +``` +Given , when , the
+``` + +The "Verifications List" methodology is another commonly used approach for organizing acceptance criteria. This includes a list of concise and testable criteria for ensuring that everything outlined in the user story has been properly implemented. These criteria can take the form of "yes/no" or "pass/fail", and must all be successful for the story to be considered as complete. + +Beyond the conditions that are explicitly outlined in the acceptance criteria, there is an additional layer of rules that must be met before a story can be completed. These conditions are generally referred to as the "Definition of Done", and are created and agreed upon by an entire team before being used. This acts as a quality control for a teams entire codebase and ensures that developers maintain their proper implementation practices at all times. + +### Story Points + +Story points are a numerical estimation of the amount of effort that is required to complete a user story. Teams will generally vote and discuss the given task so that they can align themselves and agree on a score. This system works so that the team can quantify the task at hand and appropriately assign it to one or multiple developers. + +When deciding the necessary points to allocate to a story, the following 3 factors are most commonly taken into consideration: + +- Complexity: The overall difficulty of the task +- Risk: The margin for possible error or hidden tasks arising in the future +- Repetition: The team's past experience with this line of work + +It is not absolutely necessary for teams to follow these exact considerations. These are only common examples that have proven to be effective across various organizations. + +### User Story Template + +By combining all of the sections above, we can create the following user story template: + +--- + +**Title:** Example User Story + +**Assignee:** Name(s) + +**Points:** (Numerical Value) + +**User Story:** As a \, I want \, so that \ + +**Acceptance Criteria:** Given \, when \, the \ + +--- + +### Resources and Articles + +- [User Stories; Examples and Template - Atlassian](https://www.atlassian.com/agile/project-management/user-stories#:~:text=software%20user's%20perspective.-,A%20user%20story%20is%20an%20informal%2C%20general%20explanation%20of%20a,value%20back%20to%20the%20customer.) +- [User Stories and User Story Examples - Mike Cohn](https://www.mountaingoatsoftware.com/agile/user-stories) +- [Acceptance Criteria for User Stories: Purposes, Formats, Examples, and Best Practices - AltexSoft](https://www.altexsoft.com/blog/business/acceptance-criteria-purposes-formats-and-best-practices/) +- [What is Acceptance Criteria? - ProductPlan](https://www.productplan.com/glossary/acceptance-criteria/#:~:text=Acceptance%20Criteria%20Definition%201%3A%20%E2%80%9CConditions,meet.%E2%80%9D%20(via%20Google)) +- [What Are Agile Story Points? - Mike Cohn](https://www.mountaingoatsoftware.com/blog/what-are-story-points) +- [Story Points and Estimation - Atlassian](https://www.atlassian.com/agile/project-management/estimation) \ No newline at end of file From 4aff30c319e5bd494715d7033f608eea38d13e62 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Fri, 24 Mar 2023 00:09:51 -0400 Subject: [PATCH 199/206] resolve conflicts --- Topics/Product_Management.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index a66a9ed09..0f18b0322 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -1 +1,14 @@ -## Resources for Product Management \ No newline at end of file +## Resources for Product Management + +### Beginner's guide to product management and becoming a successful product manager +Product management is an essential part of the software development lifecycle, as much a key part as the technical side to software engineering. The essence of product management is to be able to develop a new product, with a clearly defined roadmap and goals/milestones outlined from the requirements of the customer - keeping a clear view of the overall vision and strategy. This is different to the role of a project manager, who is responsible for the internal organization and operation of the development team, to make sure goals are achieved and timelines are met. + +Some key features of a successful product manager: +* Able to efficiently and clearly prioritize tasks. +* Understand the product, people and environment that you are working with. +* Guide your development team without being authoritative. +* If you are making tradeoffs, be sure to explain and outline the opportunity cost. + + The following article outlines the product manager role and responsibilities, the main points that it entails and some tools and methologies to promote successful product management practices: [Product Management: Main Stages and Product Manager Role](https://www.altexsoft.com/blog/business/product-management-main-stages-and-product-manager-role/#:~:text=Product%20management%20is%20a%20process,development%2C%20marketing%2C%20and%20sales.) + + This article goes into a little bit further detail from a beginner's perspective on steps to take to become a successful product manager: [Product Manager: The role and best practices for beginners](https://www.atlassian.com/agile/product-management/product-manager) \ No newline at end of file From 8bb82bc87a0dfac105c66a22dc7f79c677203042 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Fri, 24 Mar 2023 00:16:32 -0400 Subject: [PATCH 200/206] resolve conflicts --- Topics/Product_Management.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index 0f18b0322..b3fdd1b91 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -10,5 +10,5 @@ Some key features of a successful product manager: * If you are making tradeoffs, be sure to explain and outline the opportunity cost. The following article outlines the product manager role and responsibilities, the main points that it entails and some tools and methologies to promote successful product management practices: [Product Management: Main Stages and Product Manager Role](https://www.altexsoft.com/blog/business/product-management-main-stages-and-product-manager-role/#:~:text=Product%20management%20is%20a%20process,development%2C%20marketing%2C%20and%20sales.) - + This article goes into a little bit further detail from a beginner's perspective on steps to take to become a successful product manager: [Product Manager: The role and best practices for beginners](https://www.atlassian.com/agile/product-management/product-manager) \ No newline at end of file From 8cdd8e38f69e500c584279a440332a3e8aefc365 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Fri, 24 Mar 2023 00:28:16 -0400 Subject: [PATCH 201/206] Revert Product_Management.md to previous state --- Topics/Product_Management.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Product_Management.md b/Topics/Product_Management.md index b3fdd1b91..8e8c6f4d7 100644 --- a/Topics/Product_Management.md +++ b/Topics/Product_Management.md @@ -11,4 +11,4 @@ Some key features of a successful product manager: The following article outlines the product manager role and responsibilities, the main points that it entails and some tools and methologies to promote successful product management practices: [Product Management: Main Stages and Product Manager Role](https://www.altexsoft.com/blog/business/product-management-main-stages-and-product-manager-role/#:~:text=Product%20management%20is%20a%20process,development%2C%20marketing%2C%20and%20sales.) - This article goes into a little bit further detail from a beginner's perspective on steps to take to become a successful product manager: [Product Manager: The role and best practices for beginners](https://www.atlassian.com/agile/product-management/product-manager) \ No newline at end of file + This article goes into a little bit further detail from a beginner's perspective on steps to take to become a successful product manager: [Product Manager: The role and best practices for beginners](https://www.atlassian.com/agile/product-management/product-manager) From 19f15804bf0ddc8d18fddcd8610b52efeb979d9b Mon Sep 17 00:00:00 2001 From: Jonathan Date: Fri, 24 Mar 2023 00:31:50 -0400 Subject: [PATCH 202/206] Update user stories document location --- README.md | 1 + Topics/Software_Engineering.md | 1 + Topics/{ => Software_Engineering}/User_Stories.md | 0 3 files changed, 2 insertions(+) rename Topics/{ => Software_Engineering}/User_Stories.md (100%) diff --git a/README.md b/README.md index 002207d64..dbab31c7c 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ Potential Topics-- 1. Methodologies & Frameworks 1. Agile 1. Scrum + 1. User Stories 2. Kanban 3. XP 2. Waterfall diff --git a/Topics/Software_Engineering.md b/Topics/Software_Engineering.md index 678974b9c..85f0aaed1 100644 --- a/Topics/Software_Engineering.md +++ b/Topics/Software_Engineering.md @@ -5,6 +5,7 @@ Potential topics-- 1. Methodologies & Frameworks 1. Agile 1. Scrum + 1. [User Stories](./Software_Engineering/User_Stories.md) 2. Kanban 3. XP 2. [Waterfall](./Software_Engineering/Waterfall.md) \ No newline at end of file diff --git a/Topics/User_Stories.md b/Topics/Software_Engineering/User_Stories.md similarity index 100% rename from Topics/User_Stories.md rename to Topics/Software_Engineering/User_Stories.md From 6e342e671e8ba342a5e4882c57263572684431cc Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Sat, 25 Mar 2023 21:33:32 -0400 Subject: [PATCH 203/206] Add table of contents --- Topics/Tech_Stacks/DynamoDB_for_Dummies.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks/DynamoDB_for_Dummies.md b/Topics/Tech_Stacks/DynamoDB_for_Dummies.md index dadd3c316..0ef647fc2 100644 --- a/Topics/Tech_Stacks/DynamoDB_for_Dummies.md +++ b/Topics/Tech_Stacks/DynamoDB_for_Dummies.md @@ -1,5 +1,13 @@ # DynamoDB for dummies +## Table of contents + +### [Introduction](#introduction) +### [Why would I want to use it?](#why-would-i-want-to-use-it-1) +### [Why would I not want to use it?](#why-would-i-not-want-to-use-it-1) +### [How do I use it effectively?](#how-do-i-use-it-effectively-1) +### [Additional resources](#additional-resources-1) + ## Introduction This is a very brief overview of DynamoDB, what it is, why you might want to use @@ -63,7 +71,7 @@ cost us some space to store the replicated data. This is a trade-off; if we had very many situations where we needed to query on attributes, then we would probably want to re-evaluate whether DynamoDB is the best choice for us. -## Examples and additional resources +## Additional resources - [AWS Documentation](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) From 721f71fafa86d6277ced60fb33bdb6b5b26401b6 Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Sat, 25 Mar 2023 21:35:08 -0400 Subject: [PATCH 204/206] Update title --- Topics/Tech_Stacks/DynamoDB_for_Dummies.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks/DynamoDB_for_Dummies.md b/Topics/Tech_Stacks/DynamoDB_for_Dummies.md index 0ef647fc2..08ff0ea8a 100644 --- a/Topics/Tech_Stacks/DynamoDB_for_Dummies.md +++ b/Topics/Tech_Stacks/DynamoDB_for_Dummies.md @@ -1,4 +1,4 @@ -# DynamoDB for dummies +# Learning DynamoDB ## Table of contents From 19cbd71a6bd669c69a17bae1a79deee7e0f80a21 Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Sat, 25 Mar 2023 21:38:57 -0400 Subject: [PATCH 205/206] Update 'What is it?' section with additional information --- Topics/Tech_Stacks/DynamoDB_for_Dummies.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Topics/Tech_Stacks/DynamoDB_for_Dummies.md b/Topics/Tech_Stacks/DynamoDB_for_Dummies.md index 08ff0ea8a..208439708 100644 --- a/Topics/Tech_Stacks/DynamoDB_for_Dummies.md +++ b/Topics/Tech_Stacks/DynamoDB_for_Dummies.md @@ -3,9 +3,13 @@ ## Table of contents ### [Introduction](#introduction) + ### [Why would I want to use it?](#why-would-i-want-to-use-it-1) + ### [Why would I not want to use it?](#why-would-i-not-want-to-use-it-1) + ### [How do I use it effectively?](#how-do-i-use-it-effectively-1) + ### [Additional resources](#additional-resources-1) ## Introduction @@ -15,7 +19,9 @@ it, why you might not want to use it, and how to go about using it effectively. ## What is it? -DynamoDB is a NoSQL database that is designed to be fast at any scale. +DynamoDB is a [NoSQL database](https://en.wikipedia.org/wiki/NoSQL) that is +designed to be fast at any scale. It is developed by Amazon and is available +through Amazon Web Services. ## Why would I want to use it? From cb8fae55275b9991219424091eeab889c9dcff6e Mon Sep 17 00:00:00 2001 From: Spencer Murray Date: Sat, 25 Mar 2023 21:44:58 -0400 Subject: [PATCH 206/206] Add example for DynamoDB incompatibility bullet --- Topics/Tech_Stacks/DynamoDB_for_Dummies.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Topics/Tech_Stacks/DynamoDB_for_Dummies.md b/Topics/Tech_Stacks/DynamoDB_for_Dummies.md index 208439708..ab3be2e53 100644 --- a/Topics/Tech_Stacks/DynamoDB_for_Dummies.md +++ b/Topics/Tech_Stacks/DynamoDB_for_Dummies.md @@ -44,8 +44,12 @@ your application. making your initial data model. If your application is changing frequently DynamoDB might cause you more headaches than it's worth! 1. Incompatibility with certain access patterns: if your application has certain - collections of complex access patterns, DynamoDB will either take up a lot of - extra storage space or be very slow. + collections of access patterns, DynamoDB will either take up a lot of extra + storage space or be very slow. An example of such an application would be + storing analytics data. Generally our access patterns will be a lot of + complex queries involving the attributes of our items. This kind of demand is + better suited for something relational that better supports lots of ad-hoc + queries. ## How do I use it effectively?