├── .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 | 
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 | 
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 | 
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 |
--------------------------------------------------------------------------------