├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Oleksii Okhrymenko 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Frontend -> Fullstack 2 | 3 | Список материалов и данных необходимых для того чтобы стать полноценным Fullstack программистом. Навык помеченный !!! в начале - обязателен к изучению 4 | 5 | --------- 6 | 7 | ## Basics 8 | - !!! Shell scripts and basic linux commands 9 | - Basic commands 10 | - http://mally.stanford.edu/~sr/computing/basic-unix.html 11 | - Operator chaining 12 | - https://www.tecmint.com/chaining-operators-in-linux-with-practical-examples/ 13 | - !!! Brew 14 | - https://brew.sh 15 | - !!! Tmux 16 | - https://hackernoon.com/a-gentle-introduction-to-tmux-8d784c404340 17 | - !!! Vim 18 | - https://www.tutorialspoint.com/vim/vim_getting_familiar.htm 19 | - https://www.openvim.com/ 20 | - Your OWN github repository with .tmux.conf, .vimrc, etc. 21 | - https://github.com/aiboy/terminal-env 22 | - OSI Model (https://en.wikipedia.org/wiki/OSI_model) 23 | - Layer 7: Application layer 24 | - !!! HTTP 25 | - HTTP Spec 26 | - https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol 27 | - HTTP status codes 28 | - https://en.wikipedia.org/wiki/List_of_HTTP_status_codes 29 | - !!! HTTP/2 30 | - https://en.wikipedia.org/wiki/HTTP/2 31 | - !!! SMTP 32 | - https://en.wikipedia.org/wiki/SMTP 33 | - !!! NTP (network time protocol) 34 | - https://en.wikipedia.org/wiki/Network_Time_Protocol#SNTP 35 | - Layer 6: Presentation layer 36 | - Telnet 37 | - https://en.wikipedia.org/wiki/Telnet 38 | - Layer 5: Session layer 39 | - SOCKS 40 | - https://en.wikipedia.org/wiki/SOCKS 41 | - Layer 4: Transport layer 42 | - !!! TCP, Transmission Control Protocol 43 | - https://en.wikipedia.org/wiki/Transmission_Control_Protocol 44 | - !!! UDP, User Datagram Protocol 45 | - https://en.wikipedia.org/wiki/User_Datagram_Protocol 46 | - Layer 3: Network layer 47 | - IPv4/IPv6, Internet Protocol 48 | - https://en.wikipedia.org/wiki/Internet_Protocol 49 | - https://en.wikipedia.org/wiki/IPv4 50 | - https://en.wikipedia.org/wiki/IPv6 51 | - Layer 2: Data link layer 52 | - Ethernet 53 | - https://en.wikipedia.org/wiki/Ethernet 54 | - Layer 1: Physical layer 55 | - Bluetooth physical layer 56 | - Ethernet physical layer 57 | - USB physical layer 58 | - !!! Web Server vs Application Server vs Web Sites & Services 59 | - !!! Web Servers 60 | - !!! Nginx 61 | - https://en.wikipedia.org/wiki/Nginx 62 | - !!! Apache 63 | - https://en.wikipedia.org/wiki/Apache_HTTP_Server 64 | - IIS (Microsoft Windows only) 65 | - https://en.wikipedia.org/wiki/Internet_Information_Services 66 | - Application Server 67 | - https://en.wikipedia.org/wiki/Application_server 68 | - Web Sites & Services 69 | - РHP, Node.js, Java, .Net, Go.. etc. 70 | - Methodoligies of development 71 | - Waterflow 72 | - https://en.wikipedia.org/wiki/Waterfall_model 73 | - V Model 74 | - https://en.wikipedia.org/wiki/V-Model_(software_development) 75 | - !!! Agile 76 | - !!! Head First - Agile book (must read!!!) 77 | - Scrum 78 | - Kanban 79 | - Lean 80 | 81 | --------- 82 | 83 | ## Requirements Gathering Stage 84 | - Terms of reference / Техническое задание (ТЗ) 85 | - Expected Load 86 | - Ожидаемая нагрузка на сервер (10 RPS - 10 Reqest Per Second) 87 | - Service quality requirements 88 | - Uptime 89 | - Backups 90 | - Hardware Requirements 91 | - Запрос нужного железа (серверов или cloud) 92 | - Заказываем исходя из Expected Load 93 | - User Stories (Agile) 94 | - Persormance Budget 95 | - Frontend 96 | - Maximun Bundle Size 97 | - TTI, TTFB, FMP, TTFI 98 | - Backend 99 | - Minimum Response Time 100 | - Minumum RPS 101 | - MVP 102 | - https://en.wikipedia.org/wiki/Minimum_viable_product 103 | - Estimation 104 | - https://en.wikipedia.org/wiki/Software_development_effort_estimation 105 | 106 | ## Design Stage (самая первая стадия - проектирование, сбор требований) 107 | - Server deployment 108 | - Low level deployment strategies 109 | - FTP/SFTP 110 | - https://www.jetbrains.com/help/webstorm/creating-a-remote-server-configuration.html 111 | - rsync 112 | - https://habr.com/sandbox/37102/ 113 | - Github 114 | - Позволякет деплоить с помощью Git Push 115 | - https://gist.github.com/oodavid/1809044 116 | - Debianization 117 | - Позволяет деполоить с помощью apt-get install в Lunux 118 | - https://wiki.debian.org/HowToPackageForDebian 119 | - Types of servers (by time) 120 | - Development server 121 | - Testing server 122 | - Staging server 123 | - Production server 124 | - Types of servers (by location) 125 | - !!! Localserver (localhost - 127.0.0.1) 126 | - !!! LAN (hostname - 0.0.0.1:80) 127 | - Web hosting service (https://en.wikipedia.org/wiki/Web_hosting_service) 128 | - One Click Install 129 | - https://infobox.ru/hosting/wordpress/ 130 | - !!! Shared web hosting service 131 | - Старнадртные мини сервера для PHP 132 | - https://infobox.ru/hosting/linux/ 133 | - !!! Virtual Dedicated Server / Virtual Private Server (VPS) 134 | - https://en.wikipedia.org/wiki/Virtual_private_server 135 | - !!! Dedicated hosting service 136 | - https://selectel.ru/services/dedicated/ 137 | - Colocation web hosting service 138 | - Почти как Dedicated только вмес 139 | - Cloud hosting 140 | - Infrastructure as a service (IaaS) 141 | - https://en.wikipedia.org/wiki/Infrastructure_as_a_service 142 | - Platform as a service (PaaS) 143 | - https://en.wikipedia.org/wiki/Platform_as_a_service 144 | - Software as a service (SaaS) 145 | - https://en.wikipedia.org/wiki/Software_as_a_service 146 | - Mobile "backend" as a service (MBaaS) 147 | - https://en.wikipedia.org/wiki/Mobile_backend_as_a_service 148 | - Serverless computing 149 | - https://en.wikipedia.org/wiki/Serverless_computing 150 | - Function as a service (FaaS) / Serverless Apps 151 | - https://en.wikipedia.org/wiki/Function_as_a_service 152 | - Clustered hosting 153 | - Grid hosting 154 | - Home server 155 | - DBA (data base architecture) 156 | - !!! Normalization Forms 157 | - https://en.wikipedia.org/wiki/Database_normalization 158 | - !!! CAP theorem 159 | - https://en.wikipedia.org/wiki/CAP_theorem 160 | - Types 161 | - !!! SQL (relational model) 162 | - https://en.wikipedia.org/wiki/Relational_model 163 | - https://en.wikipedia.org/wiki/SQL 164 | - !!! NoSQL 165 | - https://en.wikipedia.org/wiki/NoSQL 166 | - NewSQL 167 | - https://en.wikipedia.org/wiki/NewSQL 168 | - Database Migration 169 | - http://vaidehijoshi.github.io/blog/2015/05/19/the-secret-life-of-your-database-part-1-migrations/ 170 | - Arhetecture Styles 171 | - Default Styles 172 | - !!! REST 173 | - https://en.wikipedia.org/wiki/Representational_state_transfer 174 | - !!! RPC 175 | - https://en.wikipedia.org/wiki/Remote_procedure_call 176 | - GraphQL 177 | - https://graphql.org/ 178 | - https://www.apollographql.com/ (поддерживает подписки) 179 | - Push styles 180 | - HTTP/2 181 | - https://en.wikipedia.org/wiki/HTTP/2_Server_Push 182 | - Commet 183 | - https://en.wikipedia.org/wiki/Comet_(programming) 184 | - WebSockets 185 | - https://en.wikipedia.org/wiki/WebSocket 186 | - Communication with Frontend 187 | - Same-origin policy problem 188 | - Description of problem 189 | - https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy 190 | - !!! CORS 191 | - !!! Cors In Action book (must read!) 192 | - https://en.wikipedia.org/wiki/Cross-origin_resource_sharing 193 | - JSONP (устарело) 194 | - https://en.wikipedia.org/wiki/JSONP 195 | - Iframe Comunication 196 | - PostMessage 197 | - https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage 198 | - Iframe hack (устраело - use CORS) 199 | - https://github.com/oyvindkinsey/easyXDM 200 | - Approaches 201 | - Monolit (архитектура 1 сервера) 202 | - Miscroservices 203 | - https://blog.newrelic.com/technology/microservices-what-they-are-why-to-use-them/ 204 | - https://12factor.net/ru/ 205 | - !!! Policy Review & Licence Review 206 | - !!! Check that framework & Library have good licence (never use GPL!!!) 207 | - !!! Apache v2 is dangeraous (Trademark use) 208 | - https://tldrlegal.com/ 209 | - https://choosealicense.com/licenses/ 210 | - Web Arhitecture 211 | - Example 212 | - https://engineering.videoblocks.com/web-architecture-101-a3224e126947 213 | - Load Balancers 214 | - Database Servers / Database Clusters 215 | - CDN 216 | - Caching Servers 217 | - Job Queue Servers 218 | - Full test search Servers 219 | - Services 220 | - Storage Server / Cloud Storage 221 | - Risks 222 | - Backpressure 223 | - https://medium.com/@jayphelps/backpressure-explained-the-flow-of-data-through-software-2350b3e77ce7 224 | - Scalability 225 | - Horizontal and vertical scaling 226 | - UML 227 | - Types 228 | - Class Diagrams 229 | - Sequence Diagrams 230 | - Activity Diagrams 231 | - State diagram 232 | - Tools 233 | - PlantUML 234 | - StarUML 235 | - StarUML -> JSweet -> Typescript 236 | - Design Patters 237 | - Gang of 4 book 238 | - https://sourcemaking.com/design_patterns 239 | - HeadFirst - Design patterns 240 | - CI (Continuos Integration) 241 | - Jenkins 242 | - https://www.tutorialspoint.com/jenkins/jenkins_quick_guide.htm 243 | 244 | --------- 245 | 246 | - Development Stage (разработка) 247 | - VCS (Version Control Systems) 248 | - !!! Git 249 | - !!! git-flow 250 | - Commit Message Styleguide 251 | - https://www.conventionalcommits.org/en/v1.0.0-beta.2/ 252 | - https://gist.github.com/abravalheri/34aeb7b18d61392251a2#generating-changelogmd 253 | - Auto CHANGELOG generation 254 | - https://github.com/conventional-changelog/standard-version 255 | - Subservion (SVN) 256 | - Mercurial 257 | - Concurrent Versions System (CVS) 258 | - Text Editors 259 | - VIM 260 | - Emacs 261 | - Visual Studio Code 262 | - WebStorm / PHPStorm / PyCharm 263 | - Eclipse 264 | - Linters 265 | - ESLint 266 | - TSLint 267 | - Code formatters 268 | - Prettier 269 | - CSSComb 270 | - Bootstraping 271 | - Example Github repository 272 | - Angular CLI 273 | - Vue CLI 274 | - Create React App 275 | - yeoman 276 | - slush 277 | - Scaffolding 278 | - Angular CLI Schematics 279 | - Vue CLI plugins (Generator) 280 | - https://cli.vuejs.org/dev-guide/plugin-dev.html#generator 281 | - Redux CLI 282 | - Plop 283 | - Testing 284 | - Frameworks 285 | - Mocha/Chai 286 | - Jasmine 287 | - Jest 288 | - Tests Runners 289 | - Karma 290 | - Jest 291 | - Reactoring 292 | - Code Smeels 293 | - https://sourcemaking.com/refactoring/smells 294 | - Refactoring techniques 295 | - https://sourcemaking.com/refactoring/refactorings 296 | 297 | --------- 298 | 299 | - Test Stage (тестирование) 300 | - E2E test 301 | - Cypress.io 302 | - https://www.cypress.io/ 303 | - Protractor 304 | - https://www.protractortest.org/#/ 305 | - Nightwatch 306 | - http://nightwatchjs.org/ 307 | - Puppetear 308 | - https://github.com/GoogleChrome/puppeteer 309 | - Selenium 310 | - https://www.seleniumhq.org/ 311 | - Regression Testing 312 | - Acceptence Tests 313 | 314 | --------- 315 | 316 | - Staging Stage (подготовка к релизу, выкатка в окружение похожее на production) 317 | - Load testing (нагрузочное тестирование) 318 | - About correct load testing 319 | - https://www.digitalocean.com/community/tutorials/an-introduction-to-load-testing 320 | - Tool: artilery (мой любимый) 321 | - https://artillery.io/ 322 | - Tool: ab 323 | - https://stackoverflow.com/questions/12732182/ab-load-testing 324 | - Tool: Apache JMeter 325 | - https://en.wikipedia.org/wiki/Apache_JMeter 326 | - Tool: Gatling 327 | - https://en.wikipedia.org/wiki/Gatling_(software) 328 | - OWASP Security Test 329 | - https://www.owasp.org/index.php/Web_Application_Security_Testing_Cheat_Sheet 330 | 331 | 332 | --------- 333 | 334 | - Deployment Stage (выкатка в production окружение) 335 | - Highlevel deployment strategeis 336 | - https://thenewstack.io/deployment-strategies/ 337 | - http://blog.itaysk.com/2017/11/20/deployment-strategies-defined 338 | - https://github.com/ContainerSolutions/k8s-deployment-strategies 339 | - Backup (https://en.wikipedia.org/wiki/Backup) 340 | - Data repository models 341 | - Unstructured 342 | - Full only / System imaging 343 | - Incremental 344 | - Differential 345 | - Reverse delta 346 | - Continuous data protection 347 | - Storage Media 348 | - Magnetic tape 349 | - Hard disk 350 | - Optical storage 351 | - SSD/Solid state storage 352 | - Remote backup service AKA cloud backup 353 | - Floppy disk and its derivatives 354 | - Rollback Strategies 355 | - https://www.ebayinc.com/stories/blogs/tech/zero-downtime-instant-deployment-and-rollback/ 356 | - Database Migration 357 | 358 | --------- 359 | 360 | - Maintainance Stage 361 | - Loggin 362 | - !!! Log rotation (можно делать как внешними иструментами так и средствами самого Web приложения) 363 | - Logstash, Kibana, ElasticSearch 364 | - Monitoring 365 | - Graphana 366 | - Emails 367 | - Debugging 368 | - Profiling 369 | - Core dump 370 | - Reports 371 | - Web Analitics 372 | - https://marketingplatform.google.com/about/ 373 | - SEO 374 | 375 | --------- 376 | --------------------------------------------------------------------------------