├── .gitignore ├── DevOps ├── devops.png ├── new.md ├── readme.md └── roadmap_devOps.md ├── Flutter └── readme.md ├── Golang └── readme.md ├── NodeJS ├── node.png ├── readme.md └── skills2 │ ├── .gitignore │ ├── .prettierrc │ ├── fibonacci │ ├── fibonacci.js │ ├── fibonacci.test.js │ ├── fibonacci2.test.js │ └── readme.md │ ├── filterodd │ ├── filterodd.js │ ├── filterodd.test.js │ └── readme.md │ ├── fizzbuzz │ ├── fizzbuzz.js │ ├── fizzbuzz.test.js │ └── readme.md │ ├── hasduplicate │ ├── hasduplicate.js │ ├── hasduplicate.test.js │ └── readme.md │ ├── mapnumbers │ ├── mapnumbers.js │ ├── mapnumbers.test.js │ └── readme.md │ ├── oddevensum │ ├── odd_even_sum.js │ ├── odd_even_sum.test.js │ └── readme.md │ ├── package-lock.json │ ├── package.json │ ├── palindrome │ ├── palindrome.js │ ├── palindrome.test.js │ └── readme.md │ └── sortarray │ ├── readme.md │ ├── sort.js │ └── sort.test.js ├── QA └── readme.md ├── README.md ├── ReactJS └── readme.md └── VueJS └── readme.md /.gitignore: -------------------------------------------------------------------------------- 1 | .idea -------------------------------------------------------------------------------- /DevOps/devops.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevsio/roadmap/cb171898726b608b5bcc629af072a3a6d7b0baa1/DevOps/devops.png -------------------------------------------------------------------------------- /DevOps/new.md: -------------------------------------------------------------------------------- 1 | PBL -> project base learning 2 | 3 | # Linux Basics 4 | 5 | ## shell scripting basics 6 | 7 | ### shell scripting tasks 8 | 9 | 10 | # Scripting language 11 | 12 | ## Python 13 | 14 | ### Python scripting tasks 15 | 16 | 17 | # SSH 18 | 19 | 20 | # Networking basics 21 | 22 | ## videos articles to read and watch 23 | 24 | 25 | # Web Server 26 | 27 | ## Nginx test server 28 | 29 | 30 | # Containerinzation 31 | 32 | ## Dockerfile (build, pull, registry) 33 | 34 | ### Node.js, go project 35 | 36 | # Docker-compose and docker swarm 37 | 38 | ## mini microservice project 39 | 40 | # Cloud 41 | 42 | ## DO 43 | 44 | # CI 45 | 46 | ## Gitlab 47 | 48 | # CD 49 | 50 | ## Deployment types, rollback 51 | 52 | # Monitoring 53 | 54 | ## Grafana, Prometheus, exporters 55 | ## Alerts to bot 56 | 57 | # Kubernetes 58 | 59 | ## K8s basics 60 | 61 | ### PBL 62 | 63 | # Centralized logging 64 | 65 | ## Fluentd, Prometheus, grafana (Kubernetes) 66 | 67 | 68 | 69 | 70 | 71 | # New Things to learn and do 72 | 73 | ## Log tracing 74 | 75 | ## Test Automation in CI/CD 76 | 77 | ## Blue green deployment, canary 78 | 79 | ## Should know replication of dbs, one click replica setup 80 | 81 | ## File servers replication 82 | 83 | ## SSO - single sign on 84 | 85 | ## Security SecOps 86 | 87 | -------------------------------------------------------------------------------- /DevOps/readme.md: -------------------------------------------------------------------------------- 1 | # What is DevOps? 2 | 3 | DevOps is a set of practices that works to automate and 4 | integrate the processes between software development and IT 5 | teams, so they can build, test, and release software faster 6 | and more reliably. The term DevOps was formed by combining the 7 | words “development” and “operations” and signifies a cultural 8 | shift that bridges the gap between development and operation 9 | teams, which historically functioned in siloes. 10 | 11 | ![devops](devops.png) 12 | 13 | 14 | # The roadmap to become Junior DevOps engineer in Udevs 15 | 16 | 17 | ## #1 - Linux basics 18 | 19 | ### Commands to learn 20 | 21 | You can choose any distro you want. You can try all of them with vmware or virtualbox. Ubuntu or Pop is good option to start with. 22 | 23 | - Version Control 24 | - git 25 | - git add 26 | - git commit 27 | - git pull 28 | - git fetch 29 | - git branch 30 | - git checkout 31 | - git push 32 | - git remote 33 | - git revert 34 | - git merge 35 | - User permissions and management 36 | - adduser 37 | - usermod 38 | - chown 39 | - chmod 40 | - Process management 41 | - ps 42 | - top / htop 43 | - lsof 44 | - kill 45 | - pkill 46 | - Text manipulation 47 | - cat 48 | - grep 49 | - vim 50 | - unix pipelining 51 | - xarg 52 | - awk 53 | - File, Dir management 54 | - rm 55 | - touch 56 | - mkdir 57 | - mv 58 | - take 59 | - sed 60 | - cp 61 | - ranger 62 | - Disk 63 | - df 64 | - du 65 | - ncdu 66 | - Networking 67 | - ping 68 | - netstat 69 | - nmap 70 | - ufw 71 | - iptables 72 | - Folders 73 | - /etc 74 | - /var/log 75 | - /home 76 | - $PATH 77 | - aliases ( .zshrc ) 78 | - System 79 | - systemctl 80 | - service 81 | - /etc/system/systemd 82 | 83 | ### Shell scripting 84 | 85 | - Watch any shell script tutorial on youtube, read articles. 86 | - You must know to write logical functions with above linux commands. 87 | - Try to do below tasks: 88 | - 1 89 | - 2 90 | 91 | ### Makefiles 92 | - Basic understandig of Makefile 93 | 94 | ### Books to read 95 | 96 | - Linux Bible last edition 97 | 98 | ## #2 - Scripting language - Python 3 99 | 100 | You should understand Python basics, how it works, manipulation with files, dirs, unix commands and etc. 101 | 102 | You must read the book - **Python for Devops from Noah Gift**. 103 | 104 | - Complete the tasks below and you can go further, no need to read the whole book in this part of roadmap. Get familiar with Python and continue reading it. 105 | - 1. 106 | - 2. 107 | 108 | ## #3 - SSH 109 | 110 | - Generate pem files 111 | - Generate ssh key-pair 112 | - Copy public key to authorized keys 113 | - Save private key as .pem file 114 | - Generate keys 115 | - Key file permissions 116 | - Private and public keys 117 | - Understand how they work 118 | - COPY files by ssh `scp` and `rsync` 119 | - Run remote shell script 120 | - Connect to database ssh 121 | - SSH tunneling 122 | 123 | ## #4 - Networking basics 124 | 125 | - TCP / IP 126 | - OSI Model 127 | - Domains 128 | - DNS 129 | - DNS Record types 130 | - HTTP / HTTPS 131 | - SSL certificates 132 | - Generate certificate with certbot and cert-manager 133 | - FTP 134 | - Mailing protocols 135 | - POP 136 | - IMAP 137 | - SMTP 138 | - TCP / UDP 139 | - Diffirences between them 140 | 141 | Watch the playlist below from youtube. 142 | 143 | - [Networking fundamentals](https://www.youtube.com/watch?v=cNwEVYkx2Kk&list=PLDQaRcbiSnqF5U8ffMgZzS7fq1rHUI3Q8) from Network Direction channel 144 | 145 | ## #4 - Web server 146 | 147 | - Web server base concepts 148 | - Nginx 149 | - Config files / logfiles 150 | - Reverse proxy 151 | - SSL certificates 152 | - Understading of load balancing 153 | - Deploy simple frontend project with nginx (`frontend_sample` directory in repository) 154 | - Run project (read Readme.md) 155 | - Proxy a port of the service to the domain (test.roadmap.udevs.io) 156 | - Generate ssl certificate for this domain 157 | - Track the access logs 158 | - Delete certificate and stop your web server 159 | 160 | ## #5 - Containerinzation 161 | 162 | ### Docker 163 | - Understanding the main concept of Docker 164 | - Images 165 | - Containers 166 | - Docker daemon 167 | - Commands to learn 168 | - docker build 169 | - docker tag 170 | - docker push 171 | - docker run 172 | - docker pull 173 | - docker exec 174 | - docker logs 175 | - docker volumes 176 | - docker inspect 177 | - Container registries 178 | - Login / Logout 179 | - dockerhub 180 | - self-hosted registries 181 | - Gitlab container registry 182 | - Dockerfile 183 | - Understanding of Dockerfile 184 | - Syntax 185 | ##### Tasks to do: 186 | - Create Dockerfiles for sample Go (`go_sample`) and Node.js (`node_sample`) projects, build images and push them to your dockerhub account with `roadmap` tag. 187 | - Track the logs by running your image in detached mode. 188 | 189 | ## Deployment of microservices with docker-compose and docker swarm 190 | 191 | - Read about 12 factors - https://12factor.net/ 192 | - Epub version - https://12factor.net/12factor.epub 193 | 194 | ### docker-compose 195 | 196 | - Understanding the usage of docker-compose 197 | - docker-compose up / down 198 | - Port-forwarding 199 | - Environment variables 200 | - Networking between containers 201 | - Build the containers from context and image 202 | ##### Read the docs and try to do below tasks: 203 | - Deploy microservices and database with docker-compose: 204 | - Try to write docker-compose for simple microservices, database (PSQL) and API gateway in `micro_sample` 205 | - Up the docker-compse from images 206 | - Connect services to API gateway with Env variables. Check out the config files in microservices. 207 | - Expose the API gateway port and check the result from your browser. 208 | 209 | ### Docker swarm 210 | 211 | - Understanding usage of docker swarm 212 | - worker and manager nodes 213 | - services and replication 214 | - docker stack 215 | - docker service 216 | 217 | ##### Tasks to do: 218 | - Initialize manager node and join 2 worker nodes. 219 | - You can do it with vmware or virtualbox 220 | - If you can not do it, just work with manager node 221 | - Deploy `micro_sample` to your swarm as roadmap stack. 222 | - Replicate the services up to 3 (if you have worker nodes) 223 | - Update one of the services in manager node 224 | - Service should be updated in all nodes 225 | - Inspect and rollback that service 226 | - Track the logs of the service 227 | - Remove the services and deinitialize your swarm 228 | 229 | 230 | ## #6 Cloud services 231 | 232 | ### DigitalOcean 233 | 234 | - Droplets 235 | - Resizing 236 | - Taking snapshots 237 | - Creating one from snapshot 238 | - Kubernetes clusters 239 | - Load balancers 240 | - VPC 241 | - Firewall 242 | 243 | ## #7 CI / CD 244 | 245 | - Gitlab server administration 246 | - Gitlab Admin area 247 | - Monitoring the server 248 | - Gitlab container registry 249 | - Gitlab API for scripts 250 | - Gitlab CI 251 | - gitlab runners 252 | - .gitlab-ci.yml 253 | - syntax and concepts 254 | - pipeline tasks 255 | - build 256 | - test 257 | - migrate 258 | - analysis 259 | - deployment to environments 260 | - Deployment types theory-> ( https://github.com/ContainerSolutions/k8s-deployment-strategies ) 261 | - Blue green 262 | - Canary 263 | - Rollbacks 264 | 265 | ## #8 Kubernetes 266 | 267 | - Understading the main concepts and basics 268 | - contexts 269 | - namespaces 270 | - pods 271 | - replicasets 272 | - deployments / statefulsets 273 | - services (all types) 274 | - ingresses 275 | - configmaps 276 | - secrets 277 | - service accounts 278 | - cluster bindings 279 | - kubectl 280 | - etc 281 | - Node and pod affinity 282 | - Writing the manifests for microservice architecture 283 | - Load Balancing with Nginx ingress controller 284 | - Understanding the concepts of a service mesh and istio 285 | 286 | ### Tasks to do 287 | - Deploy `micro_sample` to minikube cluster with load balancer 288 | - Write deployment and service manifests for each service 289 | - Configure env variables with configmaps and secrets 290 | - Deploy services on `microservices` namespace 291 | - Deploy your load balancer on `lb` namespace 292 | - Write ingress manifest for API gateway 293 | 294 | 295 | ## #9 Monitoring and Centralized logging 296 | 297 | - Grafana 298 | - Prometheus 299 | - PMQL 300 | - Alertmanager 301 | - Alerts and rules 302 | - Forwarding alerts to Telegram groups, email 303 | - Loki 304 | - Fluentd and promtail 305 | - Scraping container logs 306 | 307 | 308 | ## #10 IaaC 309 | 310 | - Understading the IaaC 311 | - Terraform 312 | - Theory and main usage 313 | - Ansible 314 | - Theory and main usage 315 | -------------------------------------------------------------------------------- /DevOps/roadmap_devOps.md: -------------------------------------------------------------------------------- 1 | # What is DevOps? 2 | 3 | DevOps is a set of practices that works to automate and 4 | integrate the processes between software development and IT 5 | teams, so they can build, test, and release software faster 6 | and more reliably. The term DevOps was formed by combining the 7 | words “development” and “operations” and signifies a cultural 8 | shift that bridges the gap between development and operation 9 | teams, which historically functioned in siloes. 10 | 11 | ![devops](devops.png) 12 | 13 | 14 | # The roadmap to become Junior DevOps engineer in Udevs 15 | 16 | 17 | ## #1 - Linux basics 18 | 19 | ### Commands to learn 20 | 21 | You can choose any distro you want. You can try all of them with vmware or virtualbox. Ubuntu or Pop is good option to start with. 22 | 23 | - Version Control 24 | - git 25 | - git add 26 | - git commit 27 | - git pull 28 | - git fetch 29 | - git branch 30 | - git checkout 31 | - git push 32 | - git remote 33 | - git revert 34 | - git merge 35 | - User permissions and management 36 | - adduser 37 | - usermod 38 | - chown 39 | - chmod 40 | - Process management 41 | - ps 42 | - top / htop 43 | - lsof 44 | - kill 45 | - pkill 46 | - Text manipulation 47 | - cat 48 | - grep 49 | - vim 50 | - unix pipelining 51 | - xarg 52 | - awk 53 | - File, Dir management 54 | - rm 55 | - touch 56 | - mkdir 57 | - mv 58 | - take 59 | - sed 60 | - cp 61 | - ranger 62 | - Disk 63 | - df 64 | - du 65 | - ncdu 66 | - Networking 67 | - ping 68 | - netstat 69 | - nmap 70 | - ufw 71 | - iptables 72 | - Folders 73 | - /etc 74 | - /var/log 75 | - /home 76 | - $PATH 77 | - aliases ( .zshrc ) 78 | - System 79 | - systemctl 80 | - service 81 | - /etc/system/systemd 82 | 83 | ### Shell scripting 84 | 85 | - Watch any shell script tutorial on youtube, read articles. 86 | - You must know to write logical functions with above linux commands. 87 | - Try to do below tasks: 88 | - 1 89 | - 2 90 | 91 | ### Makefiles 92 | - Basic understandig of Makefile 93 | 94 | ### Books to read 95 | 96 | - Linux Bible last edition 97 | 98 | ## #2 - Scripting language - Python 3 99 | 100 | You should understand Python basics, how it works, manipulation with files, dirs, unix commands and etc. 101 | 102 | You must read the book - **Python for Devops from Noah Gift**. 103 | 104 | - Complete the tasks below and you can go further, no need to read the whole book in this part of roadmap. Get familiar with Python and continue reading it. 105 | - 1. 106 | - 2. 107 | 108 | ## #3 - SSH 109 | 110 | - Generate pem files 111 | - Generate ssh key-pair 112 | - Copy public key to authorized keys 113 | - Save private key as .pem file 114 | - Generate keys 115 | - Key file permissions 116 | - Private and public keys 117 | - Understand how they work 118 | - COPY files by ssh `scp` and `rsync` 119 | - Run remote shell script 120 | - Connect to database ssh 121 | - SSH tunneling 122 | 123 | ## #4 - Networking basics 124 | 125 | - TCP / IP 126 | - OSI Model 127 | - Domains 128 | - DNS 129 | - DNS Record types 130 | - HTTP / HTTPS 131 | - SSL certificates 132 | - Generate certificate with certbot and cert-manager 133 | - FTP 134 | - Mailing protocols 135 | - POP 136 | - IMAP 137 | - SMTP 138 | - TCP / UDP 139 | - Diffirences between them 140 | 141 | Watch the playlist below from youtube. 142 | 143 | - [Networking fundamentals](https://www.youtube.com/watch?v=cNwEVYkx2Kk&list=PLDQaRcbiSnqF5U8ffMgZzS7fq1rHUI3Q8) from Network Direction channel 144 | 145 | ## #4 - Web server 146 | 147 | - Web server base concepts 148 | - Nginx 149 | - Config files / logfiles 150 | - Reverse proxy 151 | - SSL certificates 152 | - Understading of load balancing 153 | - Deploy simple frontend project with nginx (`frontend_sample` directory in repository) 154 | - Run project (read Readme.md) 155 | - Proxy a port of the service to the domain (test.roadmap.udevs.io) 156 | - Generate ssl certificate for this domain 157 | - Track the access logs 158 | - Delete certificate and stop your web server 159 | 160 | ## #5 - Containerinzation 161 | 162 | ### Docker 163 | - Understanding the main concept of Docker 164 | - Images 165 | - Containers 166 | - Docker daemon 167 | - Commands to learn 168 | - docker build 169 | - docker tag 170 | - docker push 171 | - docker run 172 | - docker pull 173 | - docker exec 174 | - docker logs 175 | - docker volumes 176 | - docker inspect 177 | - Container registries 178 | - Login / Logout 179 | - dockerhub 180 | - self-hosted registries 181 | - Gitlab container registry 182 | - Dockerfile 183 | - Understanding of Dockerfile 184 | - Syntax 185 | ##### Tasks to do: 186 | - Create Dockerfiles for sample Go (`go_sample`) and Node.js (`node_sample`) projects, build images and push them to your dockerhub account with `roadmap` tag. 187 | - Track the logs by running your image in detached mode. 188 | 189 | ## Deployment of microservices with docker-compose and docker swarm 190 | 191 | - Read about 12 factors - https://12factor.net/ 192 | - Epub version - https://12factor.net/12factor.epub 193 | 194 | ### docker-compose 195 | 196 | - Understanding the usage of docker-compose 197 | - docker-compose up / down 198 | - Port-forwarding 199 | - Environment variables 200 | - Networking between containers 201 | - Build the containers from context and image 202 | ##### Read the docs and try to do below tasks: 203 | - Deploy microservices and database with docker-compose: 204 | - Try to write docker-compose for simple microservices, database (PSQL) and API gateway in `micro_sample` 205 | - Up the docker-compse from images 206 | - Connect services to API gateway with Env variables. Check out the config files in microservices. 207 | - Expose the API gateway port and check the result from your browser. 208 | 209 | ### Docker swarm 210 | 211 | - Understanding usage of docker swarm 212 | - worker and manager nodes 213 | - services and replication 214 | - docker stack 215 | - docker service 216 | 217 | ##### Tasks to do: 218 | - Initialize manager node and join 2 worker nodes. 219 | - You can do it with vmware or virtualbox 220 | - If you can not do it, just work with manager node 221 | - Deploy `micro_sample` to your swarm as roadmap stack. 222 | - Replicate the services up to 3 (if you have worker nodes) 223 | - Update one of the services in manager node 224 | - Service should be updated in all nodes 225 | - Inspect and rollback that service 226 | - Track the logs of the service 227 | - Remove the services and deinitialize your swarm 228 | 229 | 230 | ## #6 Cloud services 231 | 232 | ### DigitalOcean 233 | 234 | - Droplets 235 | - Resizing 236 | - Taking snapshots 237 | - Creating one from snapshot 238 | - Kubernetes clusters 239 | - Load balancers 240 | - VPC 241 | - Firewall 242 | 243 | ## #7 CI / CD 244 | 245 | - Gitlab server administration 246 | - Gitlab Admin area 247 | - Monitoring the server 248 | - Gitlab container registry 249 | - Gitlab API for scripts 250 | - Gitlab CI 251 | - gitlab runners 252 | - .gitlab-ci.yml 253 | - syntax and concepts 254 | - pipeline tasks 255 | - build 256 | - test 257 | - migrate 258 | - analysis 259 | - deployment to environments 260 | - Deployment types theory 261 | - Blue green 262 | - Canary 263 | - Rollbacks 264 | 265 | ## #8 Kubernetes 266 | 267 | - Understading the main concepts and basics 268 | - contexts 269 | - namespaces 270 | - pods 271 | - replicasets 272 | - deployments / statefulsets 273 | - services (all types) 274 | - ingresses 275 | - configmaps 276 | - secrets 277 | - service accounts 278 | - cluster bindings 279 | - kubectl 280 | - etc 281 | - Node and pod affinity 282 | - Writing the manifests for microservice architecture 283 | - Load Balancing with Nginx ingress controller 284 | - Understanding the concepts of a service mesh and istio 285 | 286 | ### Tasks to do 287 | - Deploy `micro_sample` to minikube cluster with load balancer 288 | - Write deployment and service manifests for each service 289 | - Configure env variables with configmaps and secrets 290 | - Deploy services on `microservices` namespace 291 | - Deploy your load balancer on `lb` namespace 292 | - Write ingress manifest for API gateway 293 | 294 | 295 | ## #9 Monitoring and Centralized logging 296 | 297 | - Grafana 298 | - Prometheus 299 | - PMQL 300 | - Alertmanager 301 | - Alerts and rules 302 | - Forwarding alerts to Telegram groups, email 303 | - Loki 304 | - Fluentd and promtail 305 | - Scraping container logs 306 | 307 | 308 | ## #10 IaaC 309 | 310 | - Understading the IaaC 311 | - Terraform 312 | - Theory and main usage 313 | - Ansible 314 | - Theory and main usage -------------------------------------------------------------------------------- /Flutter/readme.md: -------------------------------------------------------------------------------- 1 | **Introduction** **Cross** – **Platform** 2 | 3 | - What is Flutter ⇒ [https://flutter.dev](https://flutter.dev/) 4 | 5 | **Dart** **language** ⇒ [https://dart.dev/samples ,](https://dart.dev/samples) [https://youtu.be/Ej_Pcr4uC2Q](https://youtu.be/Ej_Pcr4uC2Q) 6 | 7 | - Variables ⇒ [https://dart.dev/guides/language/language-tour#variables](https://dart.dev/guides/language/language-tour#variables) 8 | - Control flow statements ⇒ [https://dart.dev/guides/language/language-tour#control-flow-statements](https://dart.dev/guides/language/language-tour#control-flow-statements) 9 | - Functions ⇒[https://dart.dev/guides/language/language-tour#functions](https://dart.dev/guides/language/language-tour#functions) 10 | - Classes ⇒ [https://dart.dev/guides/language/language-tour#classes](https://dart.dev/guides/language/language-tour#classes) 11 | - Inheritance ⇒ [https://dart.dev/guides/language/language-tour#extending-a-class](https://dart.dev/guides/language/language-tour#extending-a-class) 12 | - Mixins ⇒ [https://dart.dev/guides/language/language-tour#adding-features-to-a-class-mixins](https://dart.dev/guides/language/language-tour#adding-features-to-a-class-mixins) 13 | - Interfaces ⇒ [https://dart.dev/guides/language/language-tour#implicit-interfaces](https://dart.dev/guides/language/language-tour#implicit-interfaces) 14 | - Abstract classes ⇒ [https://dart.dev/guides/language/language-tour#abstract-classes](https://dart.dev/guides/language/language-tour#abstract-classes) 15 | - Async ⇒ [https://dart.dev/guides/language/language-tour#asynchrony-support](https://dart.dev/guides/language/language-tour#asynchrony-support) 16 | - Exceptions ⇒ [https://dart.dev/guides/language/language-tour#exceptions](https://dart.dev/guides/language/language-tour#exceptions) 17 | - Typedefs ⇒ [https://dart.dev/guides/language/language-tour#typedefs](https://dart.dev/guides/language/language-tour#typedefs) 18 | 19 | **User Interface** 20 | 21 | - Introduction to widgets ⇒ [https://flutter.dev/docs/development/ui/widgets-intro](https://flutter.dev/docs/development/ui/widgets-intro) 22 | 23 | [Building layouts](https://www.notion.so/Building-layouts-c298a86e1adc4d2e98b4b8c442513885) 24 | 25 | - Assets and images ⇒ [https://flutter.dev/docs/development/ui/assets-and-images](https://flutter.dev/docs/development/ui/assets-and-images) 26 | - Navigation & routing ⇒ [https://medium.com/flutter/learning-flutters-new-navigation-and-routing-system-7c9068155ade](https://medium.com/flutter/learning-flutters-new-navigation-and-routing-system-7c9068155ade) 27 | - Animations ⇒ [https://flutter.dev/docs/development/ui/animations](https://flutter.dev/docs/development/ui/animations) 28 | - Anvanced UI ⇒ [https://flutter.dev/docs/development/ui/advanced/slivers](https://flutter.dev/docs/development/ui/advanced/slivers) 29 | 30 | **Storage** 31 | 32 | - Shared Preference ⇒ [https://medium.com/flutterdevs/using-sharedpreferences-in-flutter-251755f07127](https://medium.com/flutterdevs/using-sharedpreferences-in-flutter-251755f07127) 33 | - File Storage ⇒ [https://medium.com/kick-start-fluttering/saving-data-to-local-storage-in-flutter-e20d973d88fa](https://medium.com/kick-start-fluttering/saving-data-to-local-storage-in-flutter-e20d973d88fa) 34 | - Sqlite (moor) ⇒ [https://www.youtube.com/watch?v=zpWsedYMczM](https://www.youtube.com/watch?v=zpWsedYMczM) 35 | 36 | 37 | **State management** 38 | [https://flutter.dev/docs/development/data-and-backend/state-mgmt/intro](https://flutter.dev/docs/development/data-and-backend/state-mgmt/intro) 39 | 40 | 1. Provider ⇒ [https://www.youtube.com/watch?v=MkFjtCov62g](https://www.youtube.com/watch?v=MkFjtCov62g) 41 | 2. setState 42 | 3. BLoC / Rx ⇒ [https://www.youtube.com/watch?v=THCkkQ-V1-8](https://www.youtube.com/watch?v=THCkkQ-V1-8) 43 | 4. GetX ⇒ [https://www.youtube.com/watch?v=ZnevdXDH25Q](https://www.youtube.com/watch?v=ZnevdXDH25Q) 44 | 45 | **Data & backend** 46 | 47 | - Networking & http⇒[https://flutter.dev/docs/development/data-and-backend/networking](https://flutter.dev/docs/development/data-and-backend/networking) 48 | - Dio ⇒ [https://medium.com/@ashmikattel/dio-in-flutter-ad6ba26aee36](https://medium.com/@ashmikattel/dio-in-flutter-ad6ba26aee36) 49 | - Retrofit ⇒ [https://medium.com/mindful-engineering/retrofit-the-easiest-way-to-call-rest-apis-is-flutter-fe55d1e7c5c2](https://medium.com/mindful-engineering/retrofit-the-easiest-way-to-call-rest-apis-is-flutter-fe55d1e7c5c2) 50 | - JSON and serialization ⇒ [https://flutter.dev/docs/development/data-and-backend/json](https://flutter.dev/docs/development/data-and-backend/json) 51 | - Firebase ⇒ [https://flutter.dev/docs/development/data-and-backend/firebase](https://flutter.dev/docs/development/data-and-backend/firebase) 52 | 53 | **Accessibility & Internationalizing** 54 | 55 | - Accessibility ⇒ [https://flutter.dev/docs/development/accessibility-and-localization/accessibility](https://flutter.dev/docs/development/accessibility-and-localization/accessibility) 56 | - Internationalizing ⇒ [https://flutter.dev/docs/development/accessibility-and-localization/internationalization](https://flutter.dev/docs/development/accessibility-and-localization/internationalization) 57 | 58 | **Platform integtarion** 59 | 60 | - Supported platforms ⇒ [https://flutter.dev/docs/development/tools/sdk/release-notes/supported-platforms](https://flutter.dev/docs/development/tools/sdk/release-notes/supported-platforms) 61 | - Writing custom platform-specific code ⇒ [https://flutter.dev/docs/development/platform-integration/platform-channels](https://flutter.dev/docs/development/platform-integration/platform-channels) 62 | - Hosting native Android and iOS views in your Flutter app with Platform Views ⇒ [https://flutter.dev/docs/development/platform-integration/platform-views](https://flutter.dev/docs/development/platform-integration/platform-views) 63 | 64 | **Packages & Plugins** 65 | 66 | - [https://flutter.dev/docs/development/packages-and-plugins/using-packages](https://flutter.dev/docs/development/packages-and-plugins/using-packages) 67 | 68 | **Deployment** 69 | 70 | - Build and release an Android app ⇒ [https://flutter.dev/docs/deployment/android](https://flutter.dev/docs/deployment/android) 71 | - Build and release an iOS app ⇒ [https://flutter.dev/docs/deployment/ios](https://flutter.dev/docs/deployment/ios) 72 | -------------------------------------------------------------------------------- /Golang/readme.md: -------------------------------------------------------------------------------- 1 | # roadmap for gophers 2 | 3 | 1. Install Ubuntu, Learn Linux commands(**Only install Ubuntu. Do not install other Linux distributions**) 4 | 5 | 2. Install Golang with binary file(**Do not use apt, snap**) 6 | Set environment variables in .bash_profile 7 |
8 | **For example:** 9 | ``` 10 | export GOPATH=$HOME/projects/go 11 | export GOROOT=/usr/local/go 12 | export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin 13 | ``` 14 | 3. Syntax (**tour.golang.org**) 15 | 16 | 4. **_Tasks for syntax_**: 17 | 18 | 1. Fibonacci 19 | 2. FizBuzz 20 | 3. Palindrome 21 | 4. Odd even sum 22 | 5. Has duplicate element in array 23 | 24 | 5. **_Git_** 25 | 26 | 1. Learn git commands 27 | 2. Repo 28 | 3. Remote 29 | 30 | 6. **_Tasks for git_**: 31 | 32 | 1. Generate ssh key and add git account(one of them github, bitbucket, gitlab) 33 | 2. Init 34 | 3. Add 35 | 4. Commit 36 | 5. Add remote 37 | 6. Push 38 | 7. Pull 39 | 8. Resolve conflict 40 | 9. Merge request 41 | 10. Revert, reset 42 | 43 | 7. **_Struct in Golang_**: 44 | 45 | *Description: You need to create struct and define methods on this struct. Methods should be create, update, get, getAll and delete (CRUD). Data can be stored in memory.* 46 | 47 | 1. Contact list 48 | 49 | _Fields_: ID, FirstName, LastName, Phone, Email, Position. 50 | 51 | 2. Task list 52 | 53 | _Fields_: ID, Name, Status, Priority, CreatedAt, CreatedBy, DueDate. 54 | 55 | 8. **_Unit Tests in Golang_** 56 | 57 | 1. Writing unit tests for Contact List & Task List 58 | 59 | 9. **_Package managers ( mod )_** 60 | 61 | 1. How go packaging works 62 | 63 | 10. **_Tasks for package management_** 64 | 65 | 1. init 66 | 2. install ( add ) 67 | 3. update ( update ) 68 | 69 | 11. **_Alya OOP in Golang_** 70 | 71 | 1. Struct as Class 72 | 2. Constructor 73 | 3. Interfaces 74 | 75 | 12. **_Tasks for OOP_** 76 | 77 | 1. Director → Team Lead → Programmer 78 | 1. Director → Give dev task (title str) (id int. err error) 79 | 2. Team Lead → Delegate dev task (step str) ( status str, err error ) 80 | 3. Programmer → develop (task_step str) error 81 | 82 | 13. **_Working with Postgres_** 83 | 84 | 1. Models with postgres 85 | 2. Connecting to postgres 86 | 3. Create user, database, table 87 | 4. DDL commands(Create, Drop, Alter, Truncate, Comment, Rename) 88 | 5. DML commands(Insert, Update, Delete, ) 89 | 6. DQL commands(Select) 90 | 7. Constraints(check, unique, primary key, foreign key, index ...) 91 | 8. Join (inner join, left join, right join) 92 | 9. Aggregate functions(group by, max, min, count, sum ...) 93 | 10. Ordering 94 | 95 | 14. **_Tasks for Postgres_** 96 | 97 | 1. Contact list(Add, Update, Delete, List, Get) 98 | 2. Task list(Add, Update, Delete, List, Get) 99 | 100 | 15. **_gRPC_** 101 | 102 | 1. What is the gRPC 103 | 2. Why need gRPC 104 | 3. Protocol buffers(version3) 105 | 4. Generate protocol buffers 106 | 107 | 16. **_Tasks for gRPC_** 108 | 109 | 1. Contact list with gRPC 110 | 2. Task list with gRPC 111 | 112 | 17. **_Docker_** 113 | 1. Install 114 | 2. Pull image 115 | 3. Run image 116 | 4. Docker-compose 117 | -------------------------------------------------------------------------------- /NodeJS/node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/udevsio/roadmap/cb171898726b608b5bcc629af072a3a6d7b0baa1/NodeJS/node.png -------------------------------------------------------------------------------- /NodeJS/readme.md: -------------------------------------------------------------------------------- 1 | # What is NodeJS? 2 | 3 | Node.js is an open-source, cross-platform, back-end JavaScript runtime environment that runs on the V8 engine and executes JavaScript code outside a web browser. 4 | 5 | ![nodejs](node.png) 6 | 7 | # The road map to become successful Nodejs engineer 8 | 9 | # Requirements 10 | 11 | - Install latest stable version of [Ubuntu] 12 | - Install [nodejs] 13 | - Install [mongodb] 14 | - Install [mongodb-compass] 15 | 16 | ## Skills #1 - Learning syntax 17 | 18 | - [An Introduction](https://javascript.info/getting-started) 19 | - [JavaScript Fundamentals](https://javascript.info/first-steps) 20 | - [Code quality](https://javascript.info/code-quality) 21 | - [Objects: the basics](https://javascript.info/object-basics) 22 | - [Data types](https://javascript.info/data-types) 23 | - [Advanced working with functions](https://javascript.info/advanced-functions) 24 | - [Classes](https://javascript.info/classes) 25 | - [Error handling](https://javascript.info/error-handling) 26 | - [Promises, async/await](https://javascript.info/async) 27 | - [Generators, advanced iteration](https://javascript.info/generators-iterators) 28 | - [Modules](https://javascript.info/modules) 29 | 30 | ## Skills #2 - 31 | 32 | - [Fibonacci](./skills2/fibonacci/readme.md) 33 | - [FizzBuzz](./skills2/fizzbuzz/readme.md) 34 | - [Palindrome](./skills2/palindrome/readme.md) 35 | - [Odd even sum](./skills2/oddevensum/readme.md) 36 | - [Has duplicate element in array](./skills2/hasduplicate/readme.md) 37 | - [Filter the odd numbers from array of numbers](./skills2/filterodd/readme.md) 38 | - [Map the numbers into JSON objects](./skills2/mapnumbers/readme.md) 39 | - [Sort the given numbers](./skills2/sortarray/readme.md) 40 | 41 | ## Skills #3 - Git 42 | 43 | - Learn git commands 44 | - Repo 45 | - Remote 46 | 47 | ## Skills #4 - Tasks for git 48 | 49 | - Generate ssh key and add git account(one of them github, bitbucket, gitlab) 50 | - Init 51 | - Add 52 | - Commit 53 | - Add remote 54 | - Push 55 | - Pull 56 | - Resolve conflict 57 | - Merge request 58 | - Revert, reset 59 | 60 | ## Skills #5 - Express.js 61 | 62 | #### You should use mongodb as a storage, and mongoose as lib 63 | 64 | - Contact List (Create, Update, Delete, List, Get) 65 | - Task List (Create, Update, Delete, List, Get) 66 | 67 | ## Skills #6 - gRPC, protobuffers 68 | 69 | #### You should use mongodb as a storage, and mongoose as lib 70 | 71 | - Create Hello World example with protbuffers and gRPC 72 | - Contact List (Create, Update, Delete, List, Get) 73 | - Task List (Create, Update, Delete, List, Get) 74 | 75 | ## Skills #6 - Docker 76 | 77 | - Docker 78 | - Install 79 | - Pull image 80 | - Run image 81 | - Docker-compose 82 | 83 | ##### Good luck! 84 | 85 | [ubuntu]: https://ubuntu.com/ 86 | [nodejs]: https://nodejs.org/ 87 | [mongodb]: https://www.mongodb.com/3 88 | [mongodb-compass]: https://www.mongodb.com/products/compass 89 | -------------------------------------------------------------------------------- /NodeJS/skills2/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # Snowpack dependency directory (https://snowpack.dev/) 45 | web_modules/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | .parcel-cache 78 | 79 | # Next.js build output 80 | .next 81 | out 82 | 83 | # Nuxt.js build / generate output 84 | .nuxt 85 | dist 86 | 87 | # Gatsby files 88 | .cache/ 89 | # Comment in the public line in if your project uses Gatsby and not Next.js 90 | # https://nextjs.org/blog/next-9-1#public-directory-support 91 | # public 92 | 93 | # vuepress build output 94 | .vuepress/dist 95 | 96 | # Serverless directories 97 | .serverless/ 98 | 99 | # FuseBox cache 100 | .fusebox/ 101 | 102 | # DynamoDB Local files 103 | .dynamodb/ 104 | 105 | # TernJS port file 106 | .tern-port 107 | 108 | # Stores VSCode versions used for testing VSCode extensions 109 | .vscode-test 110 | 111 | # yarn v2 112 | .yarn/cache 113 | .yarn/unplugged 114 | .yarn/build-state.yml 115 | .yarn/install-state.gz 116 | .pnp.* -------------------------------------------------------------------------------- /NodeJS/skills2/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": false, 3 | "tabWidth": 4, 4 | "trailingComma": "none", 5 | "arrowParens": "always", 6 | "bracketSpacing": true, 7 | "printWidth": 80, 8 | "semi": true 9 | } 10 | -------------------------------------------------------------------------------- /NodeJS/skills2/fibonacci/fibonacci.js: -------------------------------------------------------------------------------- 1 | /** 2 | * function that returns nth fibonacci number 3 | * @param {n} n - sequence number 4 | * @returns nth fibonacci number 5 | */ 6 | function fibonacci(n) { 7 | throw new Error("Not implemented yet"); 8 | } 9 | 10 | /** 11 | * function that returns nth fibonacci number 12 | * @param {n} n - sequence number 13 | * @returns nth fibonacci number 14 | */ 15 | function fibonacci_non_recursive(n) { 16 | throw new Error("Not implemented yet"); 17 | } 18 | 19 | module.exports = { 20 | fibonacci, 21 | fibonacci_non_recursive 22 | }; 23 | -------------------------------------------------------------------------------- /NodeJS/skills2/fibonacci/fibonacci.test.js: -------------------------------------------------------------------------------- 1 | const { fibonacci } = require("./fibonacci"); 2 | 3 | describe("Basic input outputs", () => { 4 | test("0th fibonacci number equqal to 0", () => { 5 | expect(fibonacci(0)).toBe(0); 6 | }); 7 | 8 | test("first fibonacci number equal to 1", () => { 9 | expect(fibonacci(1)).toBe(1); 10 | }); 11 | 12 | test("second fibonacci number equal to 1", () => { 13 | expect(fibonacci(2)).toBe(1); 14 | }); 15 | test("third fibonacci number equal to 2", () => { 16 | expect(fibonacci(3)).toBe(2); 17 | }); 18 | 19 | test("10th fibonacci number equal to 55", () => { 20 | expect(fibonacci(10)).toBe(55); 21 | }); 22 | 23 | test("20th fibonacci number equal to 6765", () => { 24 | expect(fibonacci(20)).toBe(6765); 25 | }); 26 | }); 27 | 28 | describe("Tricky input outputs", () => { 29 | test("Below 0 fibonacci numbers are -1", () => { 30 | expect(fibonacci(-10)).toBe(-1); 31 | }); 32 | 33 | test("Below 0 fibonacci numbers are -1", () => { 34 | expect(fibonacci(-1000)).toBe(-1); 35 | }); 36 | }); 37 | 38 | describe("Throws an error if input is not a number", () => { 39 | test("undefined input throws an error", () => { 40 | expect(() => { 41 | fibonacci(undefined); 42 | }).toThrow(TypeError("input must be integer")); 43 | }); 44 | 45 | test("null input throws an error", () => { 46 | expect(() => { 47 | fibonacci(null); 48 | }).toThrow(TypeError("input must be integer")); 49 | }); 50 | 51 | test("NaN input throws an error", () => { 52 | expect(() => { 53 | fibonacci(NaN); 54 | }).toThrow(TypeError("input must be integer")); 55 | }); 56 | 57 | test("[] input throws an error", () => { 58 | expect(() => { 59 | fibonacci([]); 60 | }).toThrow(TypeError("input must be integer")); 61 | }); 62 | 63 | test("`abc` input throws an error", () => { 64 | expect(() => { 65 | fibonacci("abc"); 66 | }).toThrow(TypeError("input must be integer")); 67 | }); 68 | }); 69 | -------------------------------------------------------------------------------- /NodeJS/skills2/fibonacci/fibonacci2.test.js: -------------------------------------------------------------------------------- 1 | const { fibonacci_non_recursive } = require("./fibonacci"); 2 | 3 | describe("Basic input outputs", () => { 4 | test("0th fibonacci_non_recursive number equqal to 0", () => { 5 | expect(fibonacci_non_recursive(0)).toBe(0); 6 | }); 7 | 8 | test("first fibonacci_non_recursive number equal to 1", () => { 9 | expect(fibonacci_non_recursive(1)).toBe(1); 10 | }); 11 | 12 | test("second fibonacci_non_recursive number equal to 1", () => { 13 | expect(fibonacci_non_recursive(2)).toBe(1); 14 | }); 15 | test("third fibonacci_non_recursive number equal to 2", () => { 16 | expect(fibonacci_non_recursive(3)).toBe(2); 17 | }); 18 | 19 | test("10th fibonacci_non_recursive number equal to 55", () => { 20 | expect(fibonacci_non_recursive(10)).toBe(55); 21 | }); 22 | 23 | test("20th fibonacci_non_recursive number equal to 6765", () => { 24 | expect(fibonacci_non_recursive(20)).toBe(6765); 25 | }); 26 | }); 27 | 28 | describe("Tricky input outputs", () => { 29 | test("Below 0 fibonacci_non_recursive numbers are -1", () => { 30 | expect(fibonacci_non_recursive(-10)).toBe(-1); 31 | }); 32 | 33 | test("Below 0 fibonacci_non_recursive numbers are -1", () => { 34 | expect(fibonacci_non_recursive(-1000)).toBe(-1); 35 | }); 36 | }); 37 | 38 | describe("Throws an error if input is not a number", () => { 39 | test("undefined input throws an error", () => { 40 | expect(() => { 41 | fibonacci_non_recursive(undefined); 42 | }).toThrow(TypeError("input must be integer")); 43 | }); 44 | 45 | test("null input throws an error", () => { 46 | expect(() => { 47 | fibonacci_non_recursive(null); 48 | }).toThrow(TypeError("input must be integer")); 49 | }); 50 | 51 | test("NaN input throws an error", () => { 52 | expect(() => { 53 | fibonacci_non_recursive(NaN); 54 | }).toThrow(TypeError("input must be integer")); 55 | }); 56 | 57 | test("[] input throws an error", () => { 58 | expect(() => { 59 | fibonacci_non_recursive([]); 60 | }).toThrow(TypeError("input must be integer")); 61 | }); 62 | 63 | test("`abc` input throws an error", () => { 64 | expect(() => { 65 | fibonacci_non_recursive("abc"); 66 | }).toThrow(TypeError("input must be integer")); 67 | }); 68 | }); 69 | -------------------------------------------------------------------------------- /NodeJS/skills2/fibonacci/readme.md: -------------------------------------------------------------------------------- 1 | # Fibonacci Sequence Function 2 | The Fibonacci sequence is a series of numbers where a number is found by adding up the two numbers before it.
3 | 4 | Let's begin by referring to Fibonacci as **F**. 5 | 6 | Now, let's write the formula for it. 7 | 8 | **F(n) = F(n-1) + F(n-2)** 9 | 10 | **Where:** 11 | - F(n) is term number n 12 | - F(n-1) is the previous term 13 | - F(n-2) is the term before that 14 | 15 | **For example,** 16 | 17 | F(11) = F(11-1) + (11-2) 18 | 19 | F(11) = 89 20 | 21 | ### INFO 22 | There are written some test cases and you need to pass them and push your codes to your github repo -------------------------------------------------------------------------------- /NodeJS/skills2/filterodd/filterodd.js: -------------------------------------------------------------------------------- 1 | /** 2 | * function that filters the odd numbers from given array of numbers 3 | * @param {numbers} numbers - numbers to be filtered 4 | * @returns filtered numbers 5 | */ 6 | function filterOddNumbers(numbers) { 7 | throw new Error("Not implemented yet"); 8 | } 9 | 10 | module.exports = filterOddNumbers; 11 | -------------------------------------------------------------------------------- /NodeJS/skills2/filterodd/filterodd.test.js: -------------------------------------------------------------------------------- 1 | const filterOddNumbers = require("./filterodd"); 2 | 3 | test("[1, 2, 3, 4, 5] should be filtered as [2, 4]", () => { 4 | expect(filterOddNumbers([1, 2, 3, 4, 5])).toEqual([2, 4]); 5 | }); 6 | 7 | test("[] should be filtered as []", () => { 8 | expect(filterOddNumbers([])).toEqual([]); 9 | }); 10 | 11 | test("[-1, -2, -3, -4, -5] should be filtered as [-2, -4]", () => { 12 | expect(filterOddNumbers([-1, -2, -3, -4, -5])).toEqual([-2, -4]); 13 | }); 14 | 15 | test("[0, 2, 4, 6, 8, 10, 1000] should be filtered as [0, 2, 4, 6, 8, 10, 1000]", () => { 16 | expect(filterOddNumbers([0, 2, 4, 6, 8, 10, 1000])).toEqual([ 17 | 0, 18 | 2, 19 | 4, 20 | 6, 21 | 8, 22 | 10, 23 | 1000 24 | ]); 25 | }); 26 | -------------------------------------------------------------------------------- /NodeJS/skills2/filterodd/readme.md: -------------------------------------------------------------------------------- 1 | # Filter Odd Numbers from Array 2 | 3 | You will be given array of numbers and you need to remove the elements that are odd.
4 | 5 | Let's begin by giving an example. 6 | 7 | ``` 8 | Given: [1, 2, 3, 4] 9 | Output: [2, 4] 10 | 11 | Given: [-1, 100, -3] 12 | Output: [100] 13 | 14 | ``` 15 | 16 | ### INFO 17 | 18 | There are written some test cases and you need to pass them and push your codes to your github repo 19 | -------------------------------------------------------------------------------- /NodeJS/skills2/fizzbuzz/fizzbuzz.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Fizz buzz function 3 | * @param {n} n - sequence number 4 | * @returns returns followings 5 | * - Fizz - if n is divisible by 3 6 | * - Buzz - if n is divisible by 5 7 | * - FizzBuzz - if n is divisible by 15 8 | * - n itself if n neither of above cases 9 | */ 10 | function fizbuzz(n) { 11 | throw new Error("Not implemented yet"); 12 | } 13 | 14 | module.exports = fizbuzz; 15 | -------------------------------------------------------------------------------- /NodeJS/skills2/fizzbuzz/fizzbuzz.test.js: -------------------------------------------------------------------------------- 1 | const fizzbuzz = require("./fizzbuzz"); 2 | 3 | test("returns 1 for the number 1", () => { 4 | expect(fizzbuzz(1)).toEqual(1); 5 | }); 6 | 7 | test("returns 7 for the number 7", () => { 8 | expect(fizzbuzz(7)).toEqual(7); 9 | }); 10 | 11 | test('returns "Fizz" for the number 3', () => { 12 | expect(fizzbuzz(3)).toEqual("Fizz"); 13 | }); 14 | 15 | test('returns "Fizz" for the number 9', () => { 16 | expect(fizzbuzz(9)).toEqual("Fizz"); 17 | }); 18 | 19 | test('returns "Buzz" for the number 5', () => { 20 | expect(fizzbuzz(5)).toEqual("Buzz"); 21 | }); 22 | 23 | test('returns "Buzz" for the number 10', () => { 24 | expect(fizzbuzz(10)).toEqual("Buzz"); 25 | }); 26 | 27 | test('returns "FizzBuzz" for the number 15', () => { 28 | expect(fizzbuzz(15)).toEqual("FizzBuzz"); 29 | }); 30 | 31 | test('returns "FizzBuzz" for the number 30', () => { 32 | expect(fizzbuzz(30)).toEqual("FizzBuzz"); 33 | }); 34 | -------------------------------------------------------------------------------- /NodeJS/skills2/fizzbuzz/readme.md: -------------------------------------------------------------------------------- 1 | # FizzBuzz 2 | 3 | Write a program that returns the number input number. But for multiples of three return “Fizz” instead of the number and for the multiples of five return “Buzz”. For numbers which are multiples of both three and five return “FizzBuzz”. 4 | 5 | ### INFO 6 | 7 | There are written some test cases and you need to pass them and push your codes to your github repo 8 | -------------------------------------------------------------------------------- /NodeJS/skills2/hasduplicate/hasduplicate.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Function that removes duplicates from array 3 | * @param {array} array - array of numbers 4 | * @returns returns array with unique elements 5 | */ 6 | function hasDuplicateInArray(array) { 7 | throw new Error("Not implemented yet"); 8 | } 9 | 10 | module.exports = hasDuplicateInArray; 11 | -------------------------------------------------------------------------------- /NodeJS/skills2/hasduplicate/hasduplicate.test.js: -------------------------------------------------------------------------------- 1 | const hasDuplicateInArray = require("./hasduplicate"); 2 | 3 | test(`[1, 1, 1, 1, 1, 1, 1, "1"] should return output -> [1, "1"]`, () => { 4 | expect(hasDuplicateInArray([1, 1, 1, 1, 1, 1, 1, "1"])).toEqual([1, "1"]); 5 | }); 6 | 7 | test(`[1, 2, 3, 4, 5, 6, 1, "1"] should return output -> [1, 2, 3, 4, 5, 6, "1"]`, () => { 8 | expect(hasDuplicateInArray([1, 2, 3, 4, 5, 6, 1, "1"])).toEqual([ 9 | 1, 10 | 2, 11 | 3, 12 | 4, 13 | 5, 14 | 6, 15 | "1" 16 | ]); 17 | }); 18 | 19 | test(`["madiyor", "Madiyor", "madiyor", "udevs", "io"] should return output -> ["madiyor", "Madiyor", "udevs", "io"]`, () => { 20 | expect( 21 | hasDuplicateInArray(["madiyor", "Madiyor", "madiyor", "udevs", "io"]) 22 | ).toEqual(["madiyor", "Madiyor", "udevs", "io"]); 23 | }); 24 | 25 | test("[] should return output -> []", () => { 26 | expect(hasDuplicateInArray([])).toEqual([]); 27 | }); 28 | 29 | test("[1] should return output -> [1]", () => { 30 | expect(hasDuplicateInArray([1])).toEqual([1]); 31 | }); 32 | -------------------------------------------------------------------------------- /NodeJS/skills2/hasduplicate/readme.md: -------------------------------------------------------------------------------- 1 | # Program that Removes Duplicates 2 | 3 | Write a program that removes the duplicates from given array. 4 | 5 | Let's give an example 6 | 7 | ``` 8 | Given: [1, 2, 1, 3, 4] 9 | Ouput: [1, 2, 3, 4] 10 | ``` 11 | 12 | ### INFO 13 | 14 | There are written some test cases and you need to pass them and push your codes to your github repo 15 | -------------------------------------------------------------------------------- /NodeJS/skills2/mapnumbers/mapnumbers.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Function that converts numbers into objects 3 | * @param {numbers} numbers - array of numbers 4 | * @returns array of objects 5 | */ 6 | function mapNumbersToJSON(numbers) { 7 | throw new Error("Not implemented yet"); 8 | } 9 | 10 | module.exports = mapNumbersToJSON; 11 | -------------------------------------------------------------------------------- /NodeJS/skills2/mapnumbers/mapnumbers.test.js: -------------------------------------------------------------------------------- 1 | const mapNumbersToJSON = require("./mapnumbers"); 2 | 3 | test("map program test 1 ", () => { 4 | expect(mapNumbersToJSON([1])).toEqual([{ id: 1 }]); 5 | }); 6 | 7 | test("map program test 2 ", () => { 8 | expect(mapNumbersToJSON([-1])).toEqual([{ id: -1 }]); 9 | }); 10 | 11 | test("map program test 3 ", () => { 12 | expect(mapNumbersToJSON([])).toEqual([]); 13 | }); 14 | 15 | test("map program test 4 ", () => { 16 | expect(mapNumbersToJSON([-1, -2, -3, -4, -5])).toEqual([ 17 | { id: -1 }, 18 | { id: -2 }, 19 | { id: -3 }, 20 | { id: -4 }, 21 | { id: -5 } 22 | ]); 23 | }); 24 | 25 | test("map program test 5 ", () => { 26 | expect(mapNumbersToJSON([1, 2, 3, 4, 5])).toEqual([ 27 | { id: 1 }, 28 | { id: 2 }, 29 | { id: 3 }, 30 | { id: 4 }, 31 | { id: 5 } 32 | ]); 33 | }); 34 | -------------------------------------------------------------------------------- /NodeJS/skills2/mapnumbers/readme.md: -------------------------------------------------------------------------------- 1 | # Map Numbers into JSON 2 | 3 | Write a program that maps the input numbers to JSON objects. 4 | 5 | Let's given an example 6 | 7 | ``` 8 | Given: [1, 2, 3, 4] 9 | Output: [{id: 1}, {id: 2}, {id: 3}, {id: 4}] 10 | ``` 11 | 12 | ### INFO 13 | 14 | There are written some test cases and you need to pass them and push your codes to your github repo 15 | -------------------------------------------------------------------------------- /NodeJS/skills2/oddevensum/odd_even_sum.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Function that takes input number and returns array [odd, even] 3 | * @param {number} number - input number 4 | */ 5 | function oddEvenSum(number) { 6 | throw new Error("Not implemented yet"); 7 | } 8 | 9 | module.exports = oddEvenSum; 10 | -------------------------------------------------------------------------------- /NodeJS/skills2/oddevensum/odd_even_sum.test.js: -------------------------------------------------------------------------------- 1 | const oddEvenSum = require("./odd_even_sum"); 2 | 3 | test("odd sum for number 12345678 is 16", () => { 4 | expect(oddEvenSum(12345678)[0]).toEqual(16); 5 | }); 6 | 7 | test("even sum for number 12345678 is 20", () => { 8 | expect(oddEvenSum(12345678)[1]).toEqual(20); 9 | }); 10 | 11 | test("odd sum for number 87654321 is 16", () => { 12 | expect(oddEvenSum(87654321)[0]).toEqual(16); 13 | }); 14 | 15 | test("even sum for number 87654321 is 20", () => { 16 | expect(oddEvenSum(87654321)[1]).toEqual(20); 17 | }); 18 | 19 | test("odd sum for number 100 is 0", () => { 20 | expect(oddEvenSum(100)[0]).toEqual(0); 21 | }); 22 | 23 | test("even sum for number 100 is 1", () => { 24 | expect(oddEvenSum(100)[1]).toEqual(1); 25 | }); 26 | 27 | test("odd sum for number 1000 is 1", () => { 28 | expect(oddEvenSum(1000)[0]).toEqual(1); 29 | }); 30 | 31 | test("even sum for number 1000 is 0", () => { 32 | expect(oddEvenSum(1000)[1]).toEqual(0); 33 | }); 34 | 35 | test("odd sum for number 56897 is 20", () => { 36 | expect(oddEvenSum(56897)[0]).toEqual(20); 37 | }); 38 | 39 | test("even sum for number 56897 is 15", () => { 40 | expect(oddEvenSum(56897)[1]).toEqual(15); 41 | }); 42 | -------------------------------------------------------------------------------- /NodeJS/skills2/oddevensum/readme.md: -------------------------------------------------------------------------------- 1 | # Odd Even Sum 2 | 3 | Write a program that calculates the odd and even positioned numbers of given number 4 | 5 | Let's given an example 6 | 7 | ``` 8 | Given: 12345 9 | ||||| 10 | 01234 11 | 12 | odds: 2, 4 = 2 + 4 = 6 13 | evens: 1, 3, 5 = 1 + 3 + 5 = 9 14 | 15 | Output: [6, 9] 16 | ``` 17 | 18 | ### INFO 19 | 20 | There are written some test cases and you need to pass them and push your codes to your github repo 21 | -------------------------------------------------------------------------------- /NodeJS/skills2/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "skill2", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "jest" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "devDependencies": { 13 | "jest": "^26.6.3" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /NodeJS/skills2/palindrome/palindrome.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Function that checks if word is palindrome 3 | * @param {word} word - word - set of chars 4 | * @returns boolean - true if input palindrome otherwise false 5 | */ 6 | function isPalindrome(word) { 7 | throw new Error("Not implemented yet"); 8 | } 9 | 10 | module.exports = isPalindrome; 11 | -------------------------------------------------------------------------------- /NodeJS/skills2/palindrome/palindrome.test.js: -------------------------------------------------------------------------------- 1 | const isPalindrome = require("./palindrome"); 2 | 3 | test("returns false for the word udevs-node", () => { 4 | expect(isPalindrome("udevs-node")).toEqual(false); 5 | }); 6 | 7 | test("returns true for the word saippuakivikauppias", () => { 8 | expect(isPalindrome("saippuakivikauppias")).toEqual(true); 9 | }); 10 | 11 | test("returns false for the word !@#^&^%$", () => { 12 | expect(isPalindrome("!@#^&^%$")).toEqual(false); 13 | }); 14 | 15 | test("returns false for the word !@#$%^&*()_+_)(*&^%$#@!", () => { 16 | expect(isPalindrome("!@#$%^&*()_+_)(*&^%$#@!")).toEqual(true); 17 | }); 18 | 19 | test("returns false for the word !№;%:?*()ЩШГНЕКУЦЙЙЦУКЕНГШЩ)(*?:%;№!", () => { 20 | expect(isPalindrome("!№;%:?*()ЩШГНЕКУЦЙЙЦУКЕНГШЩ)(*?:%;№!")).toEqual(true); 21 | }); 22 | -------------------------------------------------------------------------------- /NodeJS/skills2/palindrome/readme.md: -------------------------------------------------------------------------------- 1 | # Palindrome problem 2 | 3 | Write a program that checks if given input word is palindrome. 4 | 5 | Let's given an example 6 | 7 | ``` 8 | Given: madam 9 | Output: true 10 | 11 | Explanation: reverse the given word - madam and it equals to given word, then input is palindrome 12 | ``` 13 | 14 | ### INFO 15 | 16 | There are written some test cases and you need to pass them and push your codes to your github repo 17 | -------------------------------------------------------------------------------- /NodeJS/skills2/sortarray/readme.md: -------------------------------------------------------------------------------- 1 | # Map Numbers into JSON 2 | 3 | Write a program that sort the array of numbers in ascending order 4 | 5 | Let's given an example 6 | 7 | ``` 8 | Given: [1, 2, 1, 4] 9 | Output: [1, 1, 2, 4] 10 | ``` 11 | 12 | ### INFO 13 | 14 | There are written some test cases and you need to pass them and push your codes to your github repo 15 | -------------------------------------------------------------------------------- /NodeJS/skills2/sortarray/sort.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Function that sorts the given input array of numbers 3 | * @param {numbers} numbers - array of numbers 4 | * @returns sorted array of numbers 5 | */ 6 | function sortNumbers(numbers) { 7 | throw new Error("Not implemented yet"); 8 | } 9 | 10 | module.exports = sortNumbers; 11 | -------------------------------------------------------------------------------- /NodeJS/skills2/sortarray/sort.test.js: -------------------------------------------------------------------------------- 1 | const sortNumbers = require("./sort"); 2 | 3 | test("Test 1 ", () => { 4 | expect(sortNumbers([1, 2, 3])).toEqual([1, 2, 3]); 5 | }); 6 | 7 | test("Test 2 ", () => { 8 | expect(sortNumbers([2, 3, 1])).toEqual([1, 2, 3]); 9 | }); 10 | 11 | test("Test 3 ", () => { 12 | expect(sortNumbers([2, 3, 1, -1])).toEqual([-1, 1, 2, 3]); 13 | }); 14 | 15 | test("Test 4 ", () => { 16 | expect(sortNumbers([1, 3, 5, 3, 4, 4, 2, 6, 8, 7, 6, 9, 10])).toEqual([ 17 | 1, 18 | 2, 19 | 3, 20 | 3, 21 | 4, 22 | 4, 23 | 5, 24 | 6, 25 | 6, 26 | 7, 27 | 8, 28 | 9, 29 | 10 30 | ]); 31 | }); 32 | -------------------------------------------------------------------------------- /QA/readme.md: -------------------------------------------------------------------------------- 1 | # Road Map to Become Successful QA 2 | 3 | ## Introduction 4 | 5 | - Understanding SDLC; 6 | 7 | ## Levels of Testing 8 | 9 | - Unit testing 10 | - Integration testing 11 | - System testing 12 | - Functional 13 | - Non-functional 14 | 15 | ## Bug Report 16 | 17 | - Test login page 18 | - Write bug report 19 | 20 | ## Test Plan 21 | 22 | - Write test plan 23 | 24 | ## Test Case 25 | 26 | - Write test cases for login page; 27 | 28 | ## Prioritization 29 | 30 | - When and how to prioritize tests; 31 | 32 | ## Programming 33 | 34 | - Install ubuntu 35 | - Install IDE (vscode) 36 | - API (gRPC, REST) 37 | - API doc (Swagger) 38 | - API test (Postman) 39 | 40 | ## Learning References 41 | 42 | - REST API testing [Learn Postman](https://www.youtube.com/watch?v=juldrxDrSH0list=PLhW3qG5bs-L-oT0GenwPLcJAPD_SiFK3C) 43 | - E2E testing (Cypress) [Learn Cypress](https://www.cypress.io/how-it-works); 44 | - Load testing (Jmeter) [Learn Jmeter](https://www.youtube.com/watch?v=M-iAXz8vs48&list=PLhW3qG5bs-L-zox1h3eIL7CZh5zJmci4c) 45 | - Stress testing (Jmeter) 46 | - DB (MongoDB, Casandra, Postgres SQL) 47 | 48 | ##### Besides, all of this above, you should totally understand version control system (Git). 49 | 50 | ##### Good luck! -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Roadmap 2 | 3 | ## Roadmap contains steps to master Back-end, Front-End, Mobile, DevOps and QA 4 | 5 | What can you gain from roadmap? 6 | 7 | - Refresh your knowladge 8 | - Prepare for an interview to [Udevs](https://udevs.io) 9 | - Master Technologies like Golang, NodeJS, VueJS, ReactJS, Flutter and others 10 | 11 | ### References 12 | 13 | - [Golang](./Golang/readme.md) 14 | - [NodeJS](./NodeJS/readme.md) 15 | - [ReactJS](./ReactJS/readme.md) 16 | - [VueJS](./VueJS/readme.md) 17 | - [Flutter](./Flutter/readme.md) 18 | - [QA](./QA/readme.md) 19 | - [DevOps](./DevOps/readme.md) 20 | 21 | #### Feel free to learn and push your changes to your github repo 22 | 23 | ##### Average time needed to master one technology is 2 weeks 24 | -------------------------------------------------------------------------------- /ReactJS/readme.md: -------------------------------------------------------------------------------- 1 | # Roadmap for React developer 2 | 3 | 1. Learn the basics 4 | 5 | 1. HTML 6 | 2. CSS 7 | 3. JS basics 8 | 9 | 2. Git 10 | 11 | 1. Learn git commands 12 | 2. Repo 13 | 3. Remote 14 | 15 | 3. [Learn React](https://reactjs.org/docs/hello-world.html) 16 | 17 | 4. Package manager 18 | 19 | - [npm](https://www.npmjs.com/) 20 | 21 | 5. Styling 22 | 23 | - CSS Preprocessor - [Sass](https://sass-lang.com/) 24 | - CSS Framework - [Material UI](https://material-ui.com/) 25 | - CSS modules - [link](https://github.com/css-modules/css-modules) 26 | 27 | 6. Routing 28 | 29 | - [React-Router](https://reacttraining.com/react-router/) 30 | 31 | 7. API client 32 | 33 | - [axios](https://github.com/axios/axios) 34 | 35 | 8. Internationalization 36 | 37 | - [react-i18next](https://react.i18next.com/) 38 | 39 | 9. Server side rendering 40 | 41 | - [Next.js](https://nextjs.org/docs/getting-started) 42 | 43 | 10. Static site generator 44 | 45 | - [Gatsby.js](https://www.gatsbyjs.com/docs/quick-start/) 46 | 47 | ##### Besides, all of this above, you should totally understand version control system (Git). 48 | 49 | ##### Good luck! 50 | -------------------------------------------------------------------------------- /VueJS/readme.md: -------------------------------------------------------------------------------- 1 | ## Vue js (study program) 2 | 3 | 1. [JavaScript syntax](https://www.w3schools.com/js/default.asp) 4 | 5 | 2. Task: 6 | 7 | - Craete X / O app 8 | 9 | 3. [VueJs syntax](https://vuejs.org/v2/guide) 10 | 11 | 4. Task: 12 | 13 | - CRUD for client list (using given APIs) 14 | 15 | 5. [Vuex stores](https://vuex.vuejs.org/guide) 16 | 17 | - Add vuex to client list created before 18 | 19 | 6. [Vue CLI](https://cli.vuejs.org/guide) 20 | 21 | 7. Task: 22 | 23 | - install vue CLI 24 | - create client list using vue CLI 25 | 26 | 8. Git 27 | 28 | - Repo 29 | - Remote 30 | 31 | 9. Task: 32 | 33 | - Add client list to github/gitlab 34 | 35 | 10. [Ant design pro](https://pro.antdv.com/docs/getting-started) 36 | 37 | 11. [Ant design for VueJs](https://www.antdv.com/docs/vue/introduce-cn) 38 | 39 | 12. Task: 40 | 41 | - Use ant design components to restyle all components of client list created before 42 | 43 | ##### Besides, all of this above, you should totally understand version control system (Git). 44 | 45 | ##### Good luck! 46 | --------------------------------------------------------------------------------