├── lecture_summary ├── tdd_workshop │ ├── README.md │ ├── package.json │ ├── index.js │ └── test.js ├── 171007_workshop_grid_layout.md ├── 171104_babel_workshop.md ├── 171212_flow.md ├── 171016_dom_api.md ├── 171107_fp.md ├── 171019_web_components.md ├── 171114_http.md ├── 171021_eslint_workshop.md ├── 171003_js_old_stuff.md ├── 170923_workshop_postcss.md └── 170921_html.md ├── assignments ├── 171019_web_components.md ├── 171016_dom_api.md └── 170921_html.md ├── assignments.md └── README.md /lecture_summary/tdd_workshop/README.md: -------------------------------------------------------------------------------- 1 | ### TDD Workshop Code -------------------------------------------------------------------------------- /lecture_summary/171007_workshop_grid_layout.md: -------------------------------------------------------------------------------- 1 | ### GRID LAYOUT by Anton Nemtsev @SilentImp 2 | 3 | 4 | ["Что нам стоит ДОМ построить?" (слайды)](https://silentimp.github.io/LayoutTalk/) 5 | 6 | [Краткое руководство по гридам](https://github.com/SilentImp/grid) 7 | -------------------------------------------------------------------------------- /lecture_summary/171104_babel_workshop.md: -------------------------------------------------------------------------------- 1 | ### Code 2 | 3 | - [awespme-equality-plugin](https://github.com/yavorsky/babel/tree/awesome-equality) 4 | - [tilde-assign-plugin](https://github.com/yavorsky/babel/tree/tilde-assign) 5 | 6 | ### Useful links 7 | 8 | - [Binary AST proposal for ECMAScript](https://github.com/syg/ecmascript-binary-ast) 9 | - [Babel preset env](https://github.com/babel/babel/tree/master/experimental/babel-preset-env) -------------------------------------------------------------------------------- /assignments/171019_web_components.md: -------------------------------------------------------------------------------- 1 | ### Web Components Practice 2 | 3 | Implement a wrapper for `select` element, which styles chosen option. 4 | 5 | #### Code template 6 | 7 | ```html 8 | 9 | 10 | 11 | 18 | 19 | ``` -------------------------------------------------------------------------------- /lecture_summary/tdd_workshop/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kata", 3 | "version": "1.0.0", 4 | "description": "tdd kata", 5 | "scripts": { 6 | "test": "mocha -r chai/register-should --harmony", 7 | "test:watch": "mocha -r chai/register-should --harmony -w" 8 | }, 9 | "author": "Kottans", 10 | "license": "MIT", 11 | "devDependencies": { 12 | "chai": "^4", 13 | "mocha": "^4" 14 | } 15 | } -------------------------------------------------------------------------------- /assignments.md: -------------------------------------------------------------------------------- 1 | ### Practice Assignments for Kottans JS Course 2017 2 | #### NB: The tasks will not be controlled by course mentors. However, feel free to ask for help if you're stuck. 3 | Date | Subject | Trainer | Task 4 | ---- | -------- | ------- | --- 5 | 19.09.2017 | Intro | [Alex Lapshyn](https://github.com/sudodoki) | [Home work](https://gist.github.com/sudodoki/5bc7551f1fcf6540d1f70fdf0726220e) 6 | 21.09.2017 | HTML | [Aleksey Shvayka](https://github.com/shvaikalesh) | [Home work](https://gist.github.com/AMashoshyna/f2af9fbf7b0c397a3b99253c7ab54ae8) 7 | -------------------------------------------------------------------------------- /assignments/171016_dom_api.md: -------------------------------------------------------------------------------- 1 | ### DOM API practice 2 | 3 | - Check your old code for refactoring opportunities (check for alternatives of `setAttribute`, `class=”hidden”` etc.) 4 | - Read articles to prepare for next lecture on web components 5 | 6 | - [Custom Elements](https://developers.google.com/web/fundamentals/web-components/customelements) 7 | 8 | - [Shadow DOM](https://developers.google.com/web/fundamentals/web-components/shadowdom) 9 | 10 | - Check your old code for possible candidates for web components: widgets that are loosely tied to application and can be reused elsewhere. 11 | -------------------------------------------------------------------------------- /lecture_summary/171212_flow.md: -------------------------------------------------------------------------------- 1 | # Flow (useful links) 2 | 3 | ## Videos 4 | ["HolyWars in a Typings World"](https://youtu.be/rv-5FtJxNic?t=2996) by Gregory Shehet 5 | 6 | [«Строгий» JavaScript: типы против реальности](https://www.youtube.com/watch?v=etKOc80-cw0) by Ilya Klimov 7 | 8 | ## Docs 9 | [Flow website](https://flow.org/en/) 10 | 11 | [Flow Cheatsheet](https://www.saltycrane.com/flow-type-cheat-sheet) 12 | 13 | [List of use cases where Flow is better than TS](https://github.com/vkurchatkin/typescript-vs-flow) 14 | 15 | ## Articles 16 | 17 | ["TypeScript vs Flow", part 1 of 3](http://patrickdesjardins.com/blog/typescript-vs-flow-part-1-of-3-who-they-are) 18 | 19 | [Opaque types in JS](https://codemix.com/opaque-types-in-javascript/) – useful article for type exporting use-case -------------------------------------------------------------------------------- /lecture_summary/171016_dom_api.md: -------------------------------------------------------------------------------- 1 | ### Specifications: 2 | - [DOM Living Standard](https://dom.spec.whatwg.org/) 3 | - [HTML Living Standard](https://html.spec.whatwg.org/) 4 | - [Webidl - DOM items and JavaScript interaction](https://heycam.github.io/webidl/) 5 | 6 | ### Important concepts: 7 | - Attribute reflection 8 | - `relList`, `classList`, `dataset` 9 | - Custom events 10 | - Event constructors 11 | - Bubbling/capturing 12 | - `preventDefault`/`stopPropagation`/`stopImmediatePropagation` 13 | - DOM elements manipulation 14 | - New Web APIs: `IntersectionObserver`, `ResizeObserver`, `MutationObserver` 15 | 16 | 17 | [Keyboard events specification](https://www.w3.org/TR/uievents-key/) 18 | 19 | [Keyboard event shim](https://github.com/shvaikalesh/shim-keyboard-event-key) by @shvaikalesh -------------------------------------------------------------------------------- /lecture_summary/171107_fp.md: -------------------------------------------------------------------------------- 1 | 2 | ### Code samples 3 | 4 | - [Intro to FP](https://github.com/roman01la/kottans-intro-into-fp) 5 | 6 | ### Useful links 7 | 8 | - [Purely Functional Data Structures by Chris Okasaki](https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf) 9 | - [Understanding Clojure's Persistent Vectors](http://hypirion.com/musings/understanding-persistent-vector-pt-1) 10 | - [Recursive Data Structures by Roman Liutikov](https://romanliutikov.com/blog/2017/07/29/recursive-data-structures.html) 11 | - [Functional-Light JavaScript (book)](https://github.com/getify/Functional-Light-JS) 12 | - [Understanding Transducers in JavaScript](https://romanliutikov.com/blog/2016/01/26/understanding-transducers-in-javascript.html) 13 | - [Transducers implementation for JavaScript](https://github.com/cognitect-labs/transducers-js) 14 | -------------------------------------------------------------------------------- /lecture_summary/171019_web_components.md: -------------------------------------------------------------------------------- 1 | ### Useful Links: 2 | 3 | - [Custom Elements Everywhere](https://custom-elements-everywhere.com/) 4 | - [Web Components The React Way](https://hackernoon.com/web-components-the-react-way-8ed5b6f4f942?gi=2815b83de472) 5 | - [Custom Elements by Rob Dodson (video)](https://www.youtube.com/watch?v=sK1ODp0nDbM) 6 | - [Web Components: Just in the Nick of Time (talk by Alex Russel)](https://www.youtube.com/watch?v=y-8Lmg5Gobw) 7 | 8 | ### Specs 9 | 10 | - [Custom Elements](https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements) 11 | - [Shadow Tree (WHATWG)](https://dom.spec.whatwg.org/#shadow-trees) 12 | - [`