Skip to content

Instantly share code, notes, and snippets.

View AMashoshyna's full-sized avatar

Anastasiya Mashoshyna AMashoshyna

View GitHub Profile
@AMashoshyna
AMashoshyna / solution.js
Last active August 4, 2017 18:10
jsninja-test-task
function drawNestedSetsTree(data, node) {
let root = document.createElement('ul')
let orderedData = data.sort((a, b) => a.left - b.left)
orderedData.forEach(node => {
let newLeaf = document.createElement('li')
newLeaf.innerHTML = node.title
if((node.right - node.left) > 1) {
let leaves = orderedData.filter(item => item.left > node.left && item.right < node.right)
orderedData.splice(0, leaves.length)
drawNestedSetsTree(leaves, newLeaf)

КУРС FRONT-END 2017

В сентябре в Киеве и Львове начнется офлайн-курс по фронтенд-разработке. Преподаватели - Андрей Листочкин, Алексей Швайка, Антон Немцев, Артем Яворский, Артем Денисов, Иван Акулов и другие. В группы набирается по 30 человек. Чтобы стать студентом, нужно заполнить форму регистрации, выполнить тестовое задание и пройти собеседование. Курс состоит из лекций, воркшопов и домашних заданий. Как проходили занятия в прошлом году можно посмотреть тут: YouTube.

Программа

Будут рассмотрены как самые современные технологии и изменения в языке, так базовые аспекты веб-разработки. Акцент сделан на фронтенд, но и основы работы с серверной частью в программе есть:

  • HTML, CSS (CSS Flexbox, CSS Grid, PostCSS), modern JavaScript
  • TDD (Mocha, Chai), ESLint, CI/CD, Webpack
  • DOM, Web Components, PWA
  • ReactJS (Mob

Make you code more DRY, SOLID and clear with OOP

This is a quick guide for people who don’t feel confident with OOP concepts yet, but want to make first steps towards improving their code using OOP principles.

Recipes

If you don’t know where to start, try to look for the following patterns and apply provided recipes. Here are some problem you can find and possible solutions:

Problem Recipes
Code repetition: literals (numbers, string) that you use more than once Use power of constants: remove code repetition (less literals in code), reduce typing errors, get better IDE support. Bonus: document your code by giving meaningful names to values.
Code repetition: expressions Look for repeated patterns and put them into functions. Same bonuses with documenting your code.

Home task

In Memory Pair Game Project:

  1. Create package.json
  2. Install eslint, prettier and pluginf for code editor/IDE
  3. Read explanations to all errors forund by eslint according to eslint-config-airbnb

Installation step-by-step

  1. Create package in a directory: Option 1:

git rebase

В общем случае команда git rebase добавляет все коммиты из ветки, на которой вы находитесь, следующими за коммитом, который вы передаете git rebase как аргумент. Если передать первым аргументом ветку, Git найдет последний общий коммит между текущей веткой и целевой веткой и добавит коммиты из текущей в целевую один за одним. Можно представить себе, что git rebase по очереди "накатывает" каждый из коммитов вашей ветки на целевой коммит. При этом у всех "накатанных" коммитов изменяются метаданные (например, родительский коммит), поэтому с точки зрения Git это теперь новые коммиты.

На семинаре мы познакомились с двумя случаями применения git rebase.

Случай 1: объединение веток, git rebase как альтернатива git merge

Для того, чтобы объединить две ветки в одну (например, когда работа над задачей закончена и нужно влить это задачу в ветку master), часто используют команду git merge. Это команда объединяет ветки путем создания отдельного коммита, у которого два родителя - комм

function sum(...numbers) {
return numbers.reduce((x, y) => x + y, this.initialValue)
}
Function.prototype.myBind = function(context, ...boundArgs) {
return (...ownArgs) => {
return this.apply(context, [...boundArgs, ...ownArgs])
}
}