{"id":25271748,"url":"https://github.com/parvez-ahammed/cdp","last_synced_at":"2025-04-06T07:18:18.482Z","repository":{"id":222706988,"uuid":"758157724","full_name":"parvez-ahammed/cdp","owner":"parvez-ahammed","description":"CDP is a program run by Spring Rain Private Ltd. to teach future developers. This repository contains assignments and materials provided by the program.","archived":false,"fork":false,"pushed_at":"2024-12-12T18:43:13.000Z","size":1133,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-12T12:49:22.824Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parvez-ahammed.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-15T18:28:07.000Z","updated_at":"2024-12-12T18:43:17.000Z","dependencies_parsed_at":"2024-05-03T11:07:34.147Z","dependency_job_id":"970e7cf4-bd79-4b31-81cd-2beafa6b6099","html_url":"https://github.com/parvez-ahammed/cdp","commit_stats":null,"previous_names":["piru72/cdp","parvez-ahammed/cdp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parvez-ahammed%2Fcdp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parvez-ahammed%2Fcdp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parvez-ahammed%2Fcdp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parvez-ahammed%2Fcdp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parvez-ahammed","download_url":"https://codeload.github.com/parvez-ahammed/cdp/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247445666,"owners_count":20939961,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-12T12:35:32.378Z","updated_at":"2025-04-06T07:18:18.460Z","avatar_url":"https://github.com/parvez-ahammed.png","language":"JavaScript","readme":"# CDP Batch 7 By Spring Rain\n\n## Class 1\n- HTML\n- CSS\n- Git\n\n## Class 2\n- JavaScript\n\n## Class 3\n- JavaScript\n- Hoisted up of JS\n- Array of JS\n- - Push , Pop, Shift, Unshift \n- Deep copy and shallow copy\n- Spread operator\n- Slice and Splice\n- Filter\n- Doule equal and triple equal\n- Reduce - sum of array\n- foreach with array\n- map with array\n- DOM\n- BOM\n- - Window.location\n- - Window.history\n- - Window.navigator\n- - Window.screen\n-  browser local storage\n-  browser session storage\n\n## Class 4\n\n- Callback\n- Promise\n- Async and Await\n- Fetch API\n- JSON\n- Worker with JS\n\n### Assignment\nBy clicking a button the worker will fetch data from jsonplaceholder and show the table data in the browser.\nUse async and await , worker , callback.\n\n## Class 5\n\n- Folder structure\n- GitHub Commit should be meaningful\n- Git flow(Basically a framework for managing your branches)\n- Clickup (Project management tool)\n- Generative AI\n- ZZZCODE.ai (Code generation tool)\n- Github AUCorp(Github Account)\n- Microservices vs Monolithic (Architecture)\n- microservices.io ( A website for microservices)\n- Serverless(Will be discussed in the next class)\n\n## Class 6\n### SDLC\nThe SDLC contains\n```mermaid\ngraph LR\nA[Planning] --\u003e B[Defining]\nB --\u003e C[Designing]\nC --\u003e D[Building]\nD --\u003e E[Testing]\nE --\u003e F[Deployment]\n```\n\nDifferent types of SDLC\n- Waterfall\n- Agile\n- Spiral\n\nhttps://www.atlassian.com/agile\n#### Agile\nClient is always involved in the development process. It is a continuous process. It is a flexible process. It is a fast process. It is a cost-effective process.\n\nAgile has four main point\n\n- Individuals and interactions over processes and tools ( Discuss about what you did and what you are going to do and who is blocked for you)\n- Working software over comprehensive documentation ( MVP first then add more features)\n- Customer collaboration over contract negotiation\n- Responding to change over following a plan\n\n#### Sprint or Scrum\n- Story point\n- Overestimation\n\n#### Kanban\n- Always ready for new work\n\n#### Iterative\n- More like sprint\n- Here work can be moved from one sprint to another sprint\n\n### DevOps\n\nIt supports agile proces. It is a combination of development and operation.\n\n- A CI/CD pipeline is maintained in DevOps.\n- Integration works with sonarqube , unit test, code coverage, etc.\n\n### Retrospective\nRetrospective meeting disucss about what went wrong and what went right , what could be better . Retro meeting is done after every sprint.\n\n### Six Sigma\n- DMAIC (Define, Measure, Analyze, Improve, Control)\n- DMADV (Define, Measure, Analyze, Design, Verify)\n\n### Design Pattern\n\nRefactoring Guru\n\n- Creational\n    - Factory Pattern\n    - Singleton Pattern (Database connection)\n- Structural\n    - Adapter Pattern\n- Behavioral\n    - Chain of Responsibility\n\n### DDD\n#### An example of DDD\n- Described an decomposed an real life application along with a discussion of why microservices are used.\n\n- Circuit Breaker Pattern\n\n### Pros and Cons of JS\n- Functional Programming\n- No strict type\n\n\n## Class 7\n- NODE\n   - runtime environment\n- NVM\n- imperative vs declarative\n    - imperative programming repeats code\n    - declarative programming more like a function\n- VDOM\n    - copies the real DOM\n    - compares the real DOM with the VDOM\n    - updates the real DOM\n    - only updates the part of the real DOM\n- React compares in reconciliation\n    - React will compare the VDOM with the real DOM\n    - React will update the real DOM\n    - React will only update the part of the real DOM\n- CSSOM\n    - CSS Object Model\n- merging CSSOM and browser DOM is slow\n```mermaid\ngraph LR\nA[Browser DOM] --\u003e|fast| B[Merging]\nC[CSSOM] --\u003e|Slow| B\nB --\u003e|Slow| D[UI]\n```\n\n- Why react?\n    - Declarative\n    - Reusable\n    - One Way data flow / One Way binding\n    - updates in batch\n    - Effcient update of the DOM\n- Why react is bad for SEO?\n- Vite provides a faster development environment throught hot reload\n- React Project Initialization With Vite\n- Advantages of Component \n    - Fundamental building block\n    - Reusability\n    - Modularity\n- Folder Structure of Boilerplate\n- Details of JSX\n    - Every tag must be closed or self-closed\n    - Will return only one parent element\n    - JSX transpiled to js(babel)\n    - Class is replaced by className\n    - Wrap js wi th {}\n    - Is a syntax extension of JS\n\n- Functional Component\n- Class Component\n    - State Management\n    - Constructor\n    - Render\n    - Bind method\n\n- State is Immutable\n- Immer.js\n## Class 8 \n- LifeCycle Method\n    - ComponentDidMount()\n        - Called after the component is mounted for the first time\n        - Making Network Request / api call / interect with DOM\n    - shouldComponentUpdate()\n        - return boolean Value(true/false)\n        - called before rendering\n        - unnecessary rendering can be avoided\n        - optimization in performance\n    - componentDidUpdate()\n        - Called after the component is updated\n    - componentWillUnmount()\n        - Called before the component is removed from the DOM\n\n\n## Class 14\n### Class Work\nProcess\n- Version \n- platform\n- cpu usage\n\nOS Module\n- Cpu details\n- Usage\n\nFS Module\n- file write\n\n### Class topic\n- Why Koa.js?\n- Server using Koa.js\n- Middleware\n\n## Class 15\n- https://www.w3resource.com/node.js/nodejs-programming-model.php\n- Work with modules by making small functions\n- HTTPS status code\n- validator js\n- JWT Token\n\n## Class 16\n- Koa router\n- CORS (Cross-Origin Resource Sharing)\n- CORS and Koa\n\n## Class 17\n- Router\n- MVC Pattern\n- Response Handler\n- Error Handler\n- Usage of Koa-Body package instead of body-parser\n\n## Class 18\nList of things to Install \n- DynamoDB local\n- NoSQL workbench\n- Docker Desktop\n- LocalStack ( Github Repo - Gives More felxibility,Docker Image)  -\u003e Gives Proper AWS Environment in Local Experience\n\n\n\n\nSQL DB  Design Thinking Process\n1. Relation\n2. Normalization\n3. Indexing\n4. Query Optimization\n5. Diamond Table (Intermediate Table between two tables)\n\nSQL Works well with Monolithic Architecture . But creates problem with Scaling Issues and Horizonta Scaling is costly in SQL.\n\nNO SQL DB Design Thinking Process\n- Query Driven\n- Write Heavy and Read simple  (Store as many relavant data as possible)\n- LSI , GSI\n    - LSI - Local Secondary Index\n    - GSI - Global Secondary Index\n- How data is stored in the engine\n\n\nDaynamoDB\n- NoSQL Database\n- Works in Key-Value Pair\n- DDB Key - PK - HashKey + SortKey /RangeKey(Composite Key)\n- Supporing operation (scan[] , query[], get{} ,put  , batch write)\n    - Scan - Get all the data from the table\n    - Query - Get the data based on the key\n    - Get - Get the data based on the key\n    - Put - Insert the data\n- Avoid Scanning as it is costly\n\nDifference between MongoDB and DynamoDB\n- MongoDB has incosistent data\n- MongoDB connectivity issue and configuration with AWS\n\n\nFinancial Service -\n- middleware - logger - error handler - response handler\n- helper - arrayHelper\n- utils - datePicker  , inputField  , jsonto Object\n - Model\n    - Payment DB Call\n    - all DB in model\n- Controller\n    - Payment business logic handle\n    - handle model\n    - no DB call in controller\n- Service\n    - Payment Service\n        - 3rd party services call\n        - Stripe\n        - appex\n        - account service\n        - handle model\n\n\nFrontend -\u003e api GW -\u003e AlB -\u003e Service -\u003e Queuing System -\u003e Worker\n                            Adpater                      Adapter\n\n### Service\n- Has a public api endpoint \n- It can be called by the frontend\n- It will assign workers to do the job and it will be done in the background.\n\n\n### Worker\n- Worker has no connection with third party services.\n- It works internally inside the VPS. \n- Worker can not call services . \n- Worker does all the heavy works.\n- Worker can call other workers.\n\n### Adapter\n- Does outgoing calls to third party services.\n\ntally 3rd api -\n\n\nInitial setup\n\nservice1 -\u003e tally\n\nservice2 -\u003e tally\n\nservice3 -\u003e tally\n\nservice4 -\u003e tally\n\nAdapter setup\nservice1 -\u003e Adapter\n\nservice2 -\u003e Adapter\n\nservice3 -\u003e Adapter    --\u003e tally1 ( Will call tally single time)\n\nservice4 -\u003e Adapter\n\n## Class 19\nCode Was reviewed.\n- Use query api for GSI (Global Secondary Index)\n\n## Class 23\n- Serverless Handson\n- EDD\n- MFS\n- SQS\n- SAM CLI\n\n## Class 24\n- SQS\n- SNS\n- API Gate away\n- Visibility Timeout\n- Microservices ram size is at max 2 GB\n- EC2 ram size is at max 32 GB\n- Middy boilerplate for CRUD operation with DynamoDB\n- Load Balancer \n\n![alt text](class-note-24-0.png)\n\n## Project Meeting \n- Discussed about the project\n- Business Logic Provided\n\n\n## Tools Used \n### Postman\n- Used for API Testing and Documentation\n\n## Extetrnal Resources\n\n| Topic Name | Link |\n| --- | --- |\n| Gitflow | [Link](https://danielkummer.github.io/git-flow-cheatsheet/)|\n|  Event Loop | [Link](https://lnkd.in/gVBuzDsg) |\n| Hoisting | [Link](https://lnkd.in/gJcTMmT3) |\n| Scope (Chain) | [Link](https://lnkd.in/gEjUXsXu) |\n| the JavaScript Engine | [Link](https://lnkd.in/g9azp4Mg) |\n| Prototypal Inheritance | [Link](https://lnkd.in/grVwbyxg) |\n| Generators and Iterators | [Link](https://lnkd.in/gXFM9puE) |\n| Promises \u0026 Async/Await | [Link](https://lnkd.in/grUvzjQG) |\n| posts from the V8 team | [Link](https://v8.dev/blog) |\n|NPM | [Link](https://www.w3resource.com/slides/node-package-manager-commands-slides-presentation.php)|\n|DynamDB| [Link](https://www.w3resource.com/slides/node-package-manager-commands-slides-presentation.php)|\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparvez-ahammed%2Fcdp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparvez-ahammed%2Fcdp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparvez-ahammed%2Fcdp/lists"}