Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updating my repo #288

Merged
merged 433 commits into from
Nov 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
433 commits
Select commit Hold shift + click to select a range
976fb3b
Update Spring AOP.md
ChenJiang03 Nov 28, 2023
bcbea98
Merge branch 'main' into Spring-Security
Excelsior31 Nov 28, 2023
7fd16ee
Merge branch 'main' into Spring_AOP
ChenJiang03 Nov 28, 2023
1832c48
Add more examples for Jquery especially ajax
YuouLei Nov 28, 2023
38c69d7
Added file structure detail, typo fixes, and some more detail
EricHuang2134 Nov 28, 2023
de89476
update the advantage and disadvantage of the redux
Brenden-Yiping-Wang Nov 28, 2023
7d75c7f
Added more information based on PR reviews
Nov 28, 2023
495f127
Fix the formatting for the sources of effective leadership tips
Andyctct Nov 28, 2023
76dd775
Add common functions for all key features of Jquery.
YuouLei Nov 28, 2023
4c82220
Fix the formatting for the sources of effective leadership tips in Te…
Andyctct Nov 28, 2023
c7f9855
Add explanation to the store functions
Brenden-Yiping-Wang Nov 28, 2023
eabc863
Update CSS-FlexBox.md
Raiyankr Nov 28, 2023
4ecc2d5
Update CSS-FlexBox.md
Raiyankr Nov 28, 2023
a938876
Update CSS-FlexBox.md
Raiyankr Nov 28, 2023
1562692
Update CSS-FlexBox.md
Raiyankr Nov 28, 2023
a40a809
Update CSS-FlexBox.md
Raiyankr Nov 28, 2023
e8f9012
Update CSS-FlexBox.md
Raiyankr Nov 28, 2023
94a67d3
Update CSS-FlexBox.md
Raiyankr Nov 28, 2023
09adef7
adding additional resources + example based on feedback
whyismynamerudy Nov 28, 2023
6b19a08
Update CSS-FlexBox.md
Raiyankr Nov 28, 2023
eff2bb2
Fixed grammar in the doc
larryworm1127 Nov 28, 2023
d2b210b
Added conclusion and code for server end
wang-henry Nov 28, 2023
a93082e
Made function definition more consistent in examples
larryworm1127 Nov 28, 2023
5c885e3
Changed title
wang-henry Nov 28, 2023
1ebaee1
Merge branch 'learning-software-engineering:main' into main
larryworm1127 Nov 28, 2023
8409f3d
Added static typing in python doc to Tech_Stacks.md
larryworm1127 Nov 28, 2023
9a1eb14
Added Protobufs_and_gRPC.md to Tech_Stacks.md
wang-henry Nov 28, 2023
47e969b
Merge branch 'main' into wang-henry/proto_grpc
wang-henry Nov 28, 2023
18d861b
Introduction to Static Typing in Python (#175)
larryworm1127 Nov 28, 2023
fb2b2a9
Added Protobuf and gRPC tutorial overview in Topics/Tech_Stacks (#178)
wang-henry Nov 28, 2023
0f7e421
Add anchor link
skatshang Nov 28, 2023
e656865
added analysis tools
kaiwen-tan Nov 28, 2023
6e31e76
Merge branch 'main' into kaiwen-tan/code-review-best-practices
kaiwen-tan Nov 28, 2023
bc4db22
Code Review Best Practices (#164)
kaiwen-tan Nov 28, 2023
d0fdb44
Extends to ReactNative.md
skatshang Nov 28, 2023
73c2f8a
Improve Conclusion and add Application Section
nathan-cai Nov 28, 2023
bd0d4f9
Introduction to the Gradle Build Tool
zhaoan12 Nov 28, 2023
7d40c3f
fixed placement of product_management.md
kaiwen-tan Nov 28, 2023
e3bc460
added entry for code review document
kaiwen-tan Nov 28, 2023
b3150f1
fixed placement of product_management.md (#232)
kaiwen-tan Nov 28, 2023
c627d62
fixing error with product_management.md
kaiwen-tan Nov 28, 2023
8fc6e06
fixing error with product_management.md (#233)
kaiwen-tan Nov 28, 2023
b40d491
Update Firebase_Realtime_Database.md
mistryrohan Nov 28, 2023
837b048
Common React Native components (#161)
skatshang Nov 28, 2023
2294ac4
spelling error fix
mistryrohan Nov 28, 2023
1a672af
Add explanation to the reducer
Brenden-Yiping-Wang Nov 28, 2023
53bcdf9
Firebase for Serverless Backends and Cloud Functions (#189)
whyismynamerudy Nov 28, 2023
51de585
Added DOM introduction and traversal section
YuouLei Nov 28, 2023
4bba0d7
moved from editing CSS.md to creating a new md file
Arvingingoyon Nov 28, 2023
73f1ee9
Update Topics/Tech_Stacks/NextJS.md
czhang0312 Nov 28, 2023
18c8b31
Update Topics/Tech_Stacks/NextJS.md
czhang0312 Nov 28, 2023
461ed45
changed title in text_stacks.md
czhang0312 Nov 28, 2023
441d24a
added youtube tutorial link
czhang0312 Nov 28, 2023
0427db7
added node.js requirement
czhang0312 Nov 28, 2023
409a1c2
Fix links and refine props format
skatshang Nov 28, 2023
c947230
added to optimizations section
czhang0312 Nov 28, 2023
932d410
added to pages/routing section
czhang0312 Nov 28, 2023
ef3641c
Add scenario-based walkthrough and resources for learning
Brenden-Yiping-Wang Nov 28, 2023
27e98f5
Add a section that contains frequently asked question
YuouLei Nov 28, 2023
31e1017
merged main
czhang0312 Nov 28, 2023
fde0e92
Created topic + first draft (#198)
SpecialThing44 Nov 28, 2023
858662c
merge main again
czhang0312 Nov 28, 2023
c4cfb22
Introduction to Next.js (#173)
czhang0312 Nov 28, 2023
85b44ff
added references and additional resources
celinelumqr Nov 28, 2023
18c3eb8
Address comments
steven-mathew Nov 28, 2023
d09aa75
Merge branch 'main' of https://github.com/learning-software-engineeri…
celinelumqr Nov 28, 2023
caf2837
finished first version of the page, will make changes but the overall…
Arvingingoyon Nov 28, 2023
d6149ee
Included information on different cloud service providers.
jpablo2002 Nov 28, 2023
2716ad9
Provided resources to expand on subscription types, and fixed typos a…
jpablo2002 Nov 28, 2023
950e78b
Fixed previous content to flow with newly added content.
jpablo2002 Nov 28, 2023
8548105
Explained difference between options for deploying app service, and p…
jpablo2002 Nov 28, 2023
a260699
Explained some causes for large bills, how our deployment avoids this…
jpablo2002 Nov 28, 2023
420e46f
Added new resources referenced and helpful to reader.
jpablo2002 Nov 28, 2023
171a441
Adding purpose, examples, section for multi-directory Makefiles, fixi…
max-11-max Nov 28, 2023
d6e5f96
Added link to Node.js Azure deployment.
jpablo2002 Nov 28, 2023
b61d6aa
Made deployment options description more concise, relying on link to …
jpablo2002 Nov 28, 2023
e407c16
Merge branch 'main' into main
jpablo2002 Nov 28, 2023
029fea3
Fix header sizing for readability
zhaoan12 Nov 28, 2023
c3ea084
Address interpersonal conflict and collab tools
pokemonball34 Nov 28, 2023
8d1d2ff
Added my article on using MongoDB through JS
Spaghetti-12 Nov 28, 2023
a7e2f5e
fixed a spelling error and rearranged some text
Spaghetti-12 Nov 28, 2023
18e12fd
Added comment for ** and defined CRUD
Leuxll Nov 28, 2023
eb3b1be
Delete Topics/Software_Engineering/Design_Patterns.md
thakshaCS Nov 28, 2023
acd6ade
Merge branch 'main' into Spring-Security
Excelsior31 Nov 28, 2023
3374342
Update notes for Spring Security (#220)
Excelsior31 Nov 28, 2023
bb3caa2
added reference to testing section
thakshaCS Nov 28, 2023
bb8f95f
add serverless computing with AWS Lambda page
elsiezhu Nov 28, 2023
95bcbfa
Merge branch 'main' into Thaksha/Swift-View
thakshaCS Nov 28, 2023
403f601
adding reference to how to launch simulator sections
thakshaCS Nov 28, 2023
59499dd
Update swift.md
thakshaCS Nov 28, 2023
f20f919
Resolve conflicts with main
Nov 28, 2023
3aa0d6d
create doc skeleton/template
hellokathylee Nov 28, 2023
51c1240
centering an image
thakshaCS Nov 28, 2023
ed99a69
React Bad Practices - Prop Drilling (#219)
twhl75 Nov 28, 2023
b39e1df
add Serverless Computing with AWS Lambda page
elsiezhu Nov 28, 2023
63cc9be
revert changes
elsiezhu Nov 28, 2023
70d7f05
Merge branch 'main' into main
arielchen07 Nov 28, 2023
1cdc42b
Add A Beginner's Guide for Unity UI Design (#177)
arielchen07 Nov 28, 2023
29abf22
Merge branch 'main' of https://github.com/learning-software-engineeri…
elsiezhu Nov 28, 2023
75260f9
add page to Development Process
elsiezhu Nov 28, 2023
5cee637
write first draft aside from summary
VangoCode Nov 28, 2023
521e240
Update CSS.md
DavidZ79 Nov 28, 2023
cfc279d
Update grammar and centered pictures
thakshaCS Nov 28, 2023
3d6b830
aligned pictures so they are centered
thakshaCS Nov 28, 2023
7b25169
first
Asr161 Nov 28, 2023
dd56b45
Merge branch 'main' into Spring_AOP
ChenJiang03 Nov 28, 2023
2835cb7
Create Spring AOP.md (#221)
ChenJiang03 Nov 28, 2023
68d64ea
added info about how stacks used to combine views
thakshaCS Nov 28, 2023
b02259b
explained how views can be combined through stacks
thakshaCS Nov 28, 2023
8850db1
Add examples and list of question for reader
JoAndNight Nov 28, 2023
d3036a7
Swift View - Adding to swift.md (#172)
thakshaCS Nov 28, 2023
832bc41
Fix the grammar
pokemonball34 Nov 28, 2023
38dbd19
First draft of [Asking For Help] Section
ANQ-Nguyen Nov 28, 2023
47f7921
First draft of [Asking For Help] Section
ANQ-Nguyen Nov 28, 2023
6ebe5db
Fix typos
JoAndNight Nov 28, 2023
e221fad
Introduction to Accessibility in software practice (#204)
JoAndNight Nov 28, 2023
c7a883a
Create Spring IoC file
leoyliu Nov 28, 2023
9cb724f
Clearer Emphasis
prajogt Nov 28, 2023
2844e98
Hosting a successful retro (#209)
pokemonball34 Nov 28, 2023
c44117c
Make suggested changes
Ljime Nov 28, 2023
c5e566f
MongoDB in Docker (#187)
prajogt Nov 28, 2023
56a27f4
Revised Task_Management_Software.md
jenniferxi Nov 28, 2023
c07d970
Create Mongoose Learning Topic (#213)
Ljime Nov 28, 2023
7b7ca95
made changes
Asr161 Nov 28, 2023
dad1138
Complete GraphQL vs. REST page
VangoCode Nov 28, 2023
8211979
Merge branch 'main' into ronvarshavsky/graphql-vs-rest
VangoCode Nov 28, 2023
abe79ff
Merge branch 'main' into revert-112-patch-1
tupi2001 Nov 28, 2023
2106c02
PO vs PM Reverted Branch (#195)
tupi2001 Nov 28, 2023
105601b
Fix broken links and refine props format (#235)
skatshang Nov 28, 2023
b44058d
Update CSS.md
DavidZ79 Nov 28, 2023
076eb60
Added documentation for express.js
Yanny1344 Nov 28, 2023
54fa72d
Create Google_Cloud.md
loveillusion Nov 28, 2023
be18e15
Fixed doc based on comments
Yanny1344 Nov 28, 2023
4975943
Added inspect element image
DavidZ79 Nov 28, 2023
4214ab6
Added documentation for express.js (#255)
Laura011205 Nov 28, 2023
77ade49
react chartjs setup
Laura011205 Nov 28, 2023
65f5892
react chartjs tut
Laura011205 Nov 28, 2023
ab5ddc7
suggested updates
Laura011205 Nov 28, 2023
b5d7595
Improvements to Async_External_API_Interface_Python.md
AlmostGreenz Nov 28, 2023
d88873c
updated tech stack md
Laura011205 Nov 28, 2023
fbc9a0c
Added Documentation on Using ChartJS with React (#257)
Yanny1344 Nov 28, 2023
b4f0fc7
Update Google_Cloud.md
loveillusion Nov 28, 2023
61a0b07
[+] Peewee(ORM) and Pydantic Models Tutorial (#147)
AlmostGreenz Nov 28, 2023
57c1248
Create Page_Layout_and_Cognitive_Load.md (#104)
jeanine5 Nov 28, 2023
97a9e40
Chihan/debugging c/c++ gdb (#259)
HermesCui Nov 28, 2023
385ed19
2nd change
Asr161 Nov 28, 2023
890f267
Modified ReactNative.md file to provide introduction on Expo (#261)
zhen-s Nov 28, 2023
c86141d
Adding prerequisite knowledge, resources, examples, topic to Developm…
max-11-max Nov 28, 2023
a268838
3rd change
Asr161 Nov 28, 2023
e7d4bc2
Merge branch 'main' into nathan-cai/vertexai
nathan-cai Nov 28, 2023
6425bca
Add page on Using VertexAI (#214)
nathan-cai Nov 28, 2023
6cbc2dd
Prompt Engineering (#252)
Asr161 Nov 28, 2023
059253e
made listed 'animation' sub-property name clickable links to redirect…
Arvingingoyon Nov 28, 2023
9c22da6
added first version
Nov 29, 2023
f0fac86
rephrased information in @keyframes rules section to be more clear; p…
Arvingingoyon Nov 29, 2023
2ef4258
included a more clear explaination of 'binding' css animations in the…
Arvingingoyon Nov 29, 2023
6f16d55
fixed typos
Nov 29, 2023
e0346c3
Merge branch 'main' into leoyliu/Spring-IoC
leoyliu Nov 29, 2023
3edcd59
lifecycle hooks update
DanielZFLiu Nov 29, 2023
99ebae0
Update CSS-FlexBox.md
Raiyankr Nov 29, 2023
2e2ed21
Update CSS.md (#251)
DavidZ79 Nov 29, 2023
58963c6
Update SpringIoC.md
leoyliu Nov 29, 2023
72c5ce1
Update CSS-FlexBox.md
Raiyankr Nov 29, 2023
f915596
Update CSS-FlexBox.md
Raiyankr Nov 29, 2023
1de5b2d
created intro to rfcs file
TiareMar Nov 26, 2023
db95698
linked rfc page in Development Process topic
TiareMar Nov 26, 2023
84b60a7
Create Intro_to_Svelte.md (#203)
DanielZFLiu Nov 29, 2023
9c25154
Add examples to the document
leoyliu Nov 29, 2023
302842a
Fixed some typos/syntax errors
zhaoan12 Nov 29, 2023
7ee30fa
Merge branch 'main' into Serverless-Applications-on-Google-Cloud
loveillusion Nov 29, 2023
48d2020
moved youtube video out of 'references and links' and placed it at en…
Arvingingoyon Nov 29, 2023
6275ce7
Firebase Realtime Database Contribution (#196)
mistryrohan Nov 29, 2023
8deb7f0
Create Introduction to Jquery (#225)
YuouLei Nov 29, 2023
b85706b
a introduction to the use of redux (#226)
Brenden-Yiping-Wang Nov 29, 2023
68fa089
Update Tech_Stacks.md
NicholasMacasaet Nov 29, 2023
554c356
Update Tech_Stacks.md
NicholasMacasaet Nov 29, 2023
c958911
Adding Azure Tutorial for Deployment and CI/CD with Github Actions (#…
EricHuang2134 Nov 29, 2023
ff2196a
Adding FastAPI tutorial (#102)
jpablo2002 Nov 29, 2023
15d5dc8
Update Intro_to_Svelte.md
DanielZFLiu Nov 29, 2023
2156cdd
improvements from feedback
TiareMar Nov 29, 2023
9c5d5bd
Merge branch 'main' into main
Leuxll Nov 29, 2023
0792232
Addition of 'Asynchronous External API Interface in a Python Applicat…
Leuxll Nov 29, 2023
365bf1c
add intro & prereqs
hellokathylee Nov 29, 2023
0731de0
implement changes based on PR comments
elsiezhu Nov 29, 2023
4a770f0
addressed comments
Nov 29, 2023
913687c
Add contribution regarded graphql and apollo (#267)
ayushsahi Nov 29, 2023
df89c89
Made requested changes, added official documentation, cleaned up the …
zhaoan12 Nov 29, 2023
a99addd
Introduction to the Gradle Build Tool (#231)
zhaoan12 Nov 29, 2023
489d183
added to tech stacks page
Nov 29, 2023
821268f
Merge branch 'main' into sahiayus/graphql-apollo
ayushsahi Nov 29, 2023
859c173
added work to tech stacks page (#276)
ayushsahi Nov 29, 2023
b69c432
Merge branch 'main' into celinelumqr/bugs-tech-debt
celinelumqr Nov 29, 2023
391955a
Introduction to Azure DevOps (#202)
Kelleou Nov 29, 2023
40d63da
Merge branch 'main' into tiaremar/intro-to-rfcs
TiareMar Nov 29, 2023
60264f2
Intro to RFCs (#247)
TiareMar Nov 29, 2023
c392957
Added guide to CSS Animation (#238)
Arvingingoyon Nov 29, 2023
7333c0a
CSS FlexBox Guide (#229)
Raiyankr Nov 29, 2023
eb345b0
Handling Bugs and Technical Debt (#197)
celinelumqr Nov 29, 2023
efb887c
add Serverless Computing with AWS Lambda page (#250)
elsiezhu Nov 29, 2023
3159f05
Added examples of API and Endpoints
VangoCode Nov 29, 2023
b6a4890
improve clarity on the oversharing of REST APIs
VangoCode Nov 29, 2023
46b76fc
Merge branch 'ronvarshavsky/graphql-vs-rest' of https://github.com/le…
VangoCode Nov 29, 2023
a26f23a
Fixing example, moving outside of of Build_Requirements and organizin…
max-11-max Nov 29, 2023
b1d839e
fix spelling mistakes
VangoCode Nov 29, 2023
a30a1a5
Merge branch 'main' into ronvarshavsky/graphql-vs-rest
VangoCode Nov 29, 2023
6ddc729
Update additional reading section
VangoCode Nov 29, 2023
36ecb88
Merge branch 'ronvarshavsky/graphql-vs-rest' of https://github.com/le…
VangoCode Nov 29, 2023
5a11d9b
add steps, conclusion, resources
hellokathylee Nov 29, 2023
205d08a
Add examples of multiple queries or mutations via graphql and rest
VangoCode Nov 29, 2023
c535feb
Fixing styling and grammatical issues, and typos. Renaming sections. …
max-11-max Nov 29, 2023
0aa9eb1
Renaming section
max-11-max Nov 29, 2023
680fca5
Add GraphQL vs. REST Design Decision Overview (#260)
VangoCode Nov 29, 2023
4319af8
Fixing Styling issues
max-11-max Nov 29, 2023
a19569c
First draft of Odata wiki page.
allenchen0705 Nov 26, 2023
6783287
Added description of Odata, examples in Odata Basics section, example…
allenchen0705 Nov 26, 2023
b976484
Updated format and styling in some sections.
allenchen0705 Nov 26, 2023
1e2f1c7
Added examples for defining controllers and configuring routes. Inclu…
allenchen0705 Nov 26, 2023
2fee5e5
Fixed TOC links and added a link to OASIS standard.
allenchen0705 Nov 27, 2023
ed3b20a
Updated Tech Stacks Index.
allenchen0705 Nov 28, 2023
a7fc4b8
Update Tech_Stacks.md
allenchen0705 Nov 29, 2023
8205cf3
Outline items to discuss
Nov 29, 2023
73cbf47
Introduction to Odata. (#188)
allenchen0705 Nov 29, 2023
cc8cf75
Created a guide for prototyping
Nov 29, 2023
57b8c86
Added an intro and conclusion
Nov 29, 2023
9fd3aab
Merge branch 'main' into figma-prototype
Nov 29, 2023
a4c75f2
Adds a "Introduction to make and Makefiles" guide (#212)
max-11-max Nov 29, 2023
ea4b5e3
Adds a "A fin-troduction to `fish`" guide (#190)
steven-mathew Nov 29, 2023
dc5606b
Fixes styling issue in Development_Process.md
max-11-max Nov 29, 2023
3a00f8b
Fixes styling issue in Development_Process.md (#282)
max-11-max Nov 29, 2023
5c7e9a2
Added a guide on using GitHub Actions to Automate Testing and Deploym…
DeepSJain Nov 29, 2023
58d5661
Update SpringIoC.md
leoyliu Nov 29, 2023
0eb58cb
Create Spring IoC file (#254)
loveillusion Nov 29, 2023
e90335e
Update Google_Cloud.md
loveillusion Nov 29, 2023
75ecd83
Merge branch 'main' into Serverless-Applications-on-Google-Cloud
loveillusion Nov 29, 2023
ef2e296
elaborate on xcode suggestion
hellokathylee Nov 29, 2023
227485a
fix spelling errors, add to intro
hellokathylee Nov 29, 2023
bfb7556
add resource links
hellokathylee Nov 29, 2023
70a022c
add more details to steps, add another resource
hellokathylee Nov 29, 2023
3e888a7
Made changes based on comments
Nov 29, 2023
65169ca
add page to md file?
hellokathylee Nov 29, 2023
d786ca7
Prototyping in Figma (#283)
dalshekerchi Nov 29, 2023
7fcfdfa
Merge branch 'main' into creating-an-ios-app
hellokathylee Nov 29, 2023
5ca8f37
Creating an iOS app (#281)
hellokathylee Nov 29, 2023
d6d4016
Update Google_Cloud.md
loveillusion Nov 29, 2023
d6d3a79
Merge branch 'main' into Serverless-Applications-on-Google-Cloud
loveillusion Nov 29, 2023
e6978ef
Added Jira contribution to Task_Management_Software.md (#153)
jenniferxi Nov 29, 2023
9610774
added bit on nodejs
Spaghetti-12 Nov 29, 2023
d41e3b0
Update Google_Cloud.md
loveillusion Nov 29, 2023
b990505
Serverless applications on google cloud (#263)
leoyliu Nov 29, 2023
b4436f3
Added article on using MongoDB through Node.js (#241)
patelhrid Nov 29, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ Potential Topics--
1. Set up
8. Unity
1. Introduction to Unity Basics
2. A Beginner's Guide for Unity UI Design

- Software Tools
1. Git
Expand Down Expand Up @@ -97,3 +98,4 @@ Potential Topics--
1. Beginner's guide to product management and becoming a successful product manager with case studies.
- Other useful resources
- Teamwork
1. Effective Leadership
19 changes: 19 additions & 0 deletions Topics/Development_Process.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

### [Django Project Deployment: AWS, Vercel, and Railway](./Development_Process/Django_Deployment_AWS_Railway_Vercel.md)

### [Node.js Project Deployment: Azure](./Development_Process/Azure_webapp_deployment_with_nodejs.md)

### [Automated Frontend Deployment with Vercel](./Development_Process/Frontend_Automated_Deployment_Vercel.md)

### [Flask Application Deployment on Heroku](./Development_Process/Flask_App_Deployment_Heroku.md)
Expand All @@ -29,6 +31,9 @@

### [Requirements.txt](./Development_Process/Build_Requirements/Requirements_txt.md)

## Build tools
### [Introduction to ```make``` and Makefiles](./Development_Process/Introduction_to_make_and_Makefiles.md)

## React Testing Library

### [React Testing Library](./Development_Process/React_Testing_Library.md)
Expand All @@ -37,6 +42,14 @@

### [URL Sanitization](./Development_Process/URL_Sanitization.md)

## Design Decisions

### [GraphQL vs. REST: Which API type to use?](./Development_Process/GraphQL_VS_REST.md)

## Serverless Computing

### [Serverless Computing](./Development_Process/Serverless_AWS_Lambda.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.
Expand Down Expand Up @@ -93,3 +106,9 @@ This is only a simplification of what "Clean Architecture" is; the topic is so v

## Code Smells
### [Code Smells](./Development_Process/Code_Smells.md)

## Prompt Engineering
### [Basics of Prompt Engineering](./Development_Process/Prompt_Engineering.md)

## Technical Documents
### [Intro to Request for Comments (RFCs)](./Development_Process/Technical_Documents/Intro_to_rfcs.md)
192 changes: 189 additions & 3 deletions Topics/Development_Process/Azure_webapp_deployment_with_nodejs.md

Large diffs are not rendered by default.

12 changes: 11 additions & 1 deletion Topics/Development_Process/Docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
### [Introduction](#introduction-1)
### [Installation](#installation-1)
### [Creating Dockerfiles](#creating-dockerfiles-1)
### [Using Existing Images](#using-existing-images-1)
### [Next Steps](#next-steps-1)
### [Docker Terminology](#docker-terminology-1)

Expand Down Expand Up @@ -36,6 +37,13 @@ Once you've installed Docker, to see it in action you can follow any one of thes
- [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.)

## Using Existing Images

An alternative to manually creating images is to use existing images on 'Docker Hub'. The chances are for any purpose there is a docker image for you. From database images such as 'MySQL', 'MongoDB', 'PostgreSQL' and more, to usable out the box images such as 'Wordpress' for a Wordpress website and 'NextCloud' for a Google drive-esque cloud storage system. If you are unsure about creating your own image, you can always check out ones that other people have published.

For a quick tutorial on how to use an image:
- [Using the MongoDB image](./MongoDB_in_Docker.md#using-the-official-image)

### Automatic Dockerfile Generation

Since Docker is widely used, there is a lot of Dockerfile-related knowledge in ChatGPT's training data, and the AI is capable of generating Dockerfiles for most software architectures. If you want to easily containerize your app, you can use OpenAI's ChatGPT 3.5-turbo to generate the Dockerfile for you. To do this, you first need to gather a tree of your project directory for ChatGPT to better understand your project architecture (On Linux/macOS, run `tree -I node_modules` in your project directory). Then, you can ask ChatGPT using something similar to the following prompt:
Expand Down Expand Up @@ -189,9 +197,11 @@ services:
POSTGRES_DB: postgres
```

For an alternative, you can check out another example [using MongoDB](./MongoDB_in_Docker.md#setup-alongside-application).

Since the database is contained within the docker-compose network, it is perfectly secure to use the default `postgres` user and password, since it cannot be accessed through the wider internet. However, if you want to expose your database (which is not recommended), you can add the port `5432:5432` to the `db` service and use a stronger password.

If you are using any other database, you can find the docker image on [Docker Hub](https://hub.docker.com/search?q=&type=image&category=Database) and follow the instructions there. Please be sure to read the docker container's documentation carefully! Most questions regarding database images can be answered by reading the documentation.
If you are using any other database, you can find the docker image on [Docker Hub](https://hub.docker.com/search?q=&type=image&category=Database) and follow the instructions there. If you want a quick start tutorial, you can check out the tutorial for MongoDB above. Please be sure to read the docker container's documentation carefully! Most questions regarding database images can be answered by reading the documentation.

### Automatic Updates

Expand Down
158 changes: 158 additions & 0 deletions Topics/Development_Process/Github_Actions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
# Automating Python Testing and Deployment with GitHub Actions and SSH
GitHub Actions is a powerful workflow automation tool that allows you to automate your software development workflows directly in your GitHub repository. In this guide, we'll walk through the process of setting up automated testing and deployment for a Python project using GitHub Actions and SSH.


## Table of Contents
- [Table of Contents](#table-of-contents)
- [Prerequisites](#prerequisites)
- [Setting up the remote server](#setting-up-the-remote-server)
- [Installing Dependencies](#installing-dependencies)
- [Cloning the project](#cloning-the-project)
- [Creating a virtual environment](#creating-a-virtual-environment)
- [Deployment Script](#deployment-script)
- [What is tmux and why do we need it?](#what-is-tmux-and-why-do-we-need-it)
- [Setting up the GitHub repository](#setting-up-the-github-repository)
- [Secrets](#secrets)
- [Workflow](#workflow)
- [Testing the workflow](#testing-the-workflow)
- [Further Reading](#further-reading)
- [Conclusion](#conclusion)


## Prerequisites
Before you start, ensure you have the following:
- A python project hosted on GitHub.
- Make sure your project has a requirements.txt file containing all of the project's dependencies.
- This guide assumes that your tests have been written using the pytest framework.
- A remote server with SSH access. This can be a VPS, a dedicated server, or even a Raspberry Pi.
- Keep the hostname, port, username, and private key for the remote server handy. You'll need them later.

## Setting up the remote server
First, we'll need to set up the remote server. We'll be using a VPS running Ubuntu for this guide, but the steps should be similar for other Linux distributions.

### Installing Dependencies
First, we'll need to install the dependencies for our project. We'll be using Python 3.10 for this guide, but you can use any version of Python that your project supports.

```bash
sudo apt update # Update the package index
sudo apt install python3 python3-venv python3-pip tmux # Install Python 3, venv, pip, and tmux
```

### Cloning the project
Now, we'll clone the project from GitHub. Make sure you replace the `URL` with the URL of your project and `PROJECT_NAME` with the name of your project.

```bash
git clone [URL] # Clone the project from GitHub
cd [PROJECT_NAME] # Change into the project directory
```

### Creating a virtual environment
Next, we'll create a virtual environment for our project. This will allow us to install our project's dependencies without affecting the rest of the system.

```bash
python3 -m venv venv # Create a virtual environment named "venv"
source venv/bin/activate # Activate the virtual environment
```

### Deployment Script
Next, we'll create a deployment script. This script will be run by GitHub Actions to deploy the project to the remote server. Make sure you replace `PROJECT_NAME` with the name of your project.

```bash
cd .. # Change into the parent directory (leaving the project directory)
touch deploy.sh # Create the deployment script
chmod +x deploy.sh # Make the deployment script executable
```

Then, open the deployment script in your favorite text editor and add the following code:

```bash
#!/bin/bash

cd [PROJECT_NAME] # Change into the project directory
source venv/bin/activate # Activate the virtual environment

git pull # Pull the latest changes from GitHub

pip install -r requirements.txt # Install the project's dependencies
python -m pytest # Run the project's tests

tmux kill-session -t [PROJECT_NAME] # Kill the existing tmux session
tmux new-session -d -s [PROJECT_NAME] # Create a new tmux session
tmux send-keys -t [PROJECT_NAME] "python3 main.py" ENTER # Start the project
```

The deployment script will do the following:
1) Change into the project directory
2) Activate the virtual environment
3) Pull the latest changes from GitHub
4) Install the project's dependencies
5) Run the project's tests
6) Kill the existing tmux session
7) Create a new tmux session
8) Start the project

#### What is tmux and why do we need it?
tmux is a terminal multiplexer that allows you to run multiple terminal sessions in a single window. We'll be using tmux to run the project in the background so that we can close the SSH connection without stopping the project.

## Setting up the GitHub repository
Now that we've set up the remote server, we'll need to set up the GitHub repository. We'll be using the GitHub web interface for this guide, but you can also use the GitHub CLI if you prefer.

### Secrets
First, we'll need to add our SSH credentials to the repository as secrets. This will allow us to access the remote server without exposing our credentials in the workflow file. To do this, go to the repository settings and click on "Secrets" in the sidebar. Then, click on "New repository secret" and add the following secrets:
- `SSH_HOSTNAME`: The hostname of the remote server.
- `SSH_PORT`: The SSH port for the remote server. (Default: 22)
- `SSH_USERNAME`: The username for the remote server.
- `SSH_PRIVATE_KEY`: The private key for the remote server.

### Workflow
Next, we'll need to create a workflow file. This is a [YAML file](https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html) that tells GitHub Actions what to do when certain events occur. To do this, create a new file named `.github/workflows/main.yml` and add the following code:

```yaml
name: Test and Deploy

on:
push:
branches: [ "main" ]

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v3
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pytest
python -m pip install -r requirements.txt
- name: Test with pytest
run: |
python -m pytest
- name: Deploy
uses: appleboy/[email protected]
with:
host: ${{ secrets.SSH_HOSTNAME }}
username: ${{ secrets.SSH_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.SSH_PORT }}
script: sh deploy.sh
```
This workflow will run the following steps when we push to the main branch:
1) Install Python 3.10 in a temporary environment
2) Install the project's dependencies from `requirements.txt`
3) Run the project's tests using pytest
4) Run the `deploy.sh` script on the remote server using SSH if the tests pass.

## Testing the workflow
Now that we've set up the workflow, we'll need to test it to make sure it works. To do this, push a commit to the main branch and check the Actions tab in the repository. If everything worked correctly, you should see a green checkmark next to the commit message like in [this image](https://i.imgur.com/PYAgSb9.png). If not, check the logs for the workflow to see what went wrong by clicking the commit message and then build.

## Further Reading
If you'd like to learn more about GitHub Actions, check out the [official documentation](https://docs.github.com/en/actions).

## Conclusion
In this guide, we walked through the process of setting up automated testing and deployment for a Python project using GitHub Actions and SSH. We also tested the workflow to make sure it works correctly.
95 changes: 95 additions & 0 deletions Topics/Development_Process/Gradle_build_tool.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# The Gradle build tool for java

## Introduction
Build tools are essential in software development because they automate the process of converting our source code into executable programs. The process involves compiling code, linking resources, executing tests, and deploying the product. Without build tools, developers would have to manually execute each of these steps, which can be time-consuming and prone to human error, especially in projects with many dependencies.

Gradle is one of the most powerful and flexible build tools. Its primarily used for Java projects but can also be applied to other programming languages such as C/C++ and Python. It's designed to support complex workflows and provides a versatile way to define build logic. Unlike some other build tools, Gradle scripts are generally concise and human-readable. Gradle is also highly extensible, offering a rich API that enables developers to write custom plugins and tasks. Its incremental build capabilities save time by only running tasks that are necessary. As a result, Gradle has become a popular choice among many developers.

## Dependency management with Gradle
Dependency management is a critical feature of Gradle that allows developers to automatically download and integrate libraries and other resources that their project depends upon. Many projects organize unrelated functionality into different parts of a modular system.

Gradle allows you to define different types of dependencies. Here's an example of how you might declare dependencies in a build.gradle file, a script used in Gradle projects to define the project's build configuration, including dependencies, plugins, tasks, and other build-related settings. We will only cover a few types dependencies, but keep in mind there are more!

```
dependencies {
// Implementation dependencies are specific to a module and only used internally within the module
// Define the dependency with group:name:version
implementation 'org.apache.commons:commons-lang3:3.10'
// Use the 'api' keyword for dependencies that should be made accessible to other modules
api 'com.google.guava:guava:29.0-jre'
// Test dependencies are resources used exclusively for testing
testImplementation 'junit:junit:4.13'
}
repositories {
// Use Maven Central repository for most dependencies
mavenCentral()
}
```

During a build, Gradle finds and downloads each of the dependencies in a process called dependency resolution. It then stores resolved dependencies in a local cache called the dependency cache. Future builds use this cache to speed up the build process and avoid unnecessary network calls. This is yet another advantage of using build tools!

Gradle supports dynamic versions and classifier dependencies, which are useful for managing dependencies in a more nuanced way. For example, you can use a dynamic version like '4.+' to always use the latest 4.x.x version of a library:

```
implementation 'com.somecompany:somelibrary:4.+'
```

In addition, Gradle provides the ability to exclude certain transitive dependencies - indirect dependency relationship between software components - that you don't want to include, or to force a certain version of a library if there's a conflict between different modules:

```
implementation('com.somecompany:somelibrary:1.2.3') {
// Exclude certain dependencies
exclude group: 'log4j', module: 'log4j'
}
// Apply configuration rules to all dependency configurations in the project
configurations.all {
// In the case of a conflict, force a certain library version to be used
resolutionStrategy.force 'org.apache.commons:commons-lang3:3.9'
}
```

## Dependency Resolution in Gradle
You're likely to encounter version conflicts between dependencies. Gradle offers multiple strategies to help handle them:

### Consistent Versions with Platform Constraints
Gradle allows you to define a platform to enforce consistent versions of dependencies. A platform refers to a set of dependency versions for managing versions in order to maintain consistency and clean architecture. This is particularly useful in large multi-module projects. Here's how you might use it:

```
dependencies {
// Define your constraints under the dependencies block
constraints {
api('org.springframework:spring-framework-bom:5.2.7.RELEASE') {
// Provide a reason for using this specific version
because 'We want to align all Spring modules versions'
}
}
implementation 'org.springframework:spring-core'
implementation 'org.springframework:spring-context'
}
```

### Custom Dependency Resolution Logic
Finally, heres a sneak peak of the more advanced things that you can do with Gradle. Sometimes, you may need to apply custom logic for dependency resolution. This capability is particularly beneficial in projects where standard dependency rules don't align with project-specific requirements, such as managing version conflicts in complex multi-module projects, or when integrating with non-standard repositories. Gradle allows you to intercept and modify the dependency resolution process:

```
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
// Check if the current dependency is 'httpclient' from 'org.apache.httpcomponents'
if (details.requested.group == 'org.apache.httpcomponents' && details.requested.name == 'httpclient') {
// Force the use of a specific version of the 'httpclient' library
details.useVersion '4.5.10'
details.because 'Compatibility issues with newer versions'
}
}
}
```

Building a projects with many declared dependencies can be difficult to debug. In addition to the conflict resolution strategies listed above, Gradle has created tools to visualize and analyze a project’s dependency graph. You can use its Build Scan® tool to generate reports that tell you which dependencies failed to resolve. Read more about the Build Scan® tool here:
https://scans.gradle.com/

## Official documentation
Gradle official documentation:
https://docs.gradle.org/current/userguide/userguide.html

Loading
Loading