Получи случайную криптовалюту за регистрацию!

progway - программирование, IT

Логотип телеграм канала @prog_way_blog — progway - программирование, IT P
Логотип телеграм канала @prog_way_blog — progway - программирование, IT
Адрес канала: @prog_way_blog
Категории: Технологии
Язык: Русский
Количество подписчиков: 359
Описание канала:

Мысли, полезные материалы и просто вещи, что мне интересны из мира IT
Посты максимум каждый день, и то если мне есть о чём рассказать
По всем вопросам: @denisputnov
github: github.com/denisputnov

Рейтинги и Отзывы

4.50

2 отзыва

Оценить канал prog_way_blog и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

1

3 звезд

0

2 звезд

0

1 звезд

0


Последние сообщения

2021-10-07 13:08:00 ​​Шпаргалка по пинципам ООП.

Один из самых частовстречающихся вопросов по ООП с собеседований. Разберёмся в этой теме кратко, такого ответа чаще всего хватит интервьюеру.

1. Наследование.

Наследование — механизм, который позволяет описать новый класс на основе существующего, то есть родительского. При этом свойства и функциональность родительского класса заимствуются новым классом.

В первую очередь это используется для переиспользования уже написанного кода, что должно упростить и ускорить разработку. Классы строятся друг на друге, что выстраивает чёткую иерархию.

2. Абстрация.

Абстрация — выделение главного. Суть заключается в выделении только самого главного и абстрагировании от незначительного. Например, у класса Auto мы создадим поля, например, fuel, mark, age, engine, а от поля lightsColor абстрагируемся, так как для нашей задачи это не важно.

3. Инкапсуляция.

Это скрытие чего либо, ограничения доступа к данным и к возможности их изменения. Как пример — код от учетной записи. Если записать его на листочке и повесить его на монитор, то любой «пользователь», севший за компьютер, получит к ней доступ и сможет поменять пароль. Так же для пользователя выглядят публичные переменные класса.

Инкапсуляция же сделает данные недоступными извне либо только для изменения, либо для любых операция в целом.

4. Полиморфизм.

Полиморфизм — возможность работать с разными типами данных, не зависимо от этого, получая подобный результат. Чтобы лучше понять о чем речь, рассмотрим такой код:
class Person {
say() {
console.log("I'm nobody")
}
}

class Programmer extends Person {
say() {
console.log("I'm programmer")
}
}

class Director extends Person {
say() {
console.log("I'm director")
}
}


У объектов классов Person, Programmer и Director, одинаковый интерфейс взаимодействия. При том, что они имеют разные типы, поведение подобное. Это и есть смысл полиморфизма.

И на этом в целом всё. Спасибо за прочтение, это важно для меня

#web #theory #javascript
441 views10:08
Открыть/Комментировать
2021-10-05 13:08:00 ​​Что такое БЭМ

БЭМ — методология разработки, созданная в Яндексе. Это компонентный подход написания HTML и CSS, который подразумевает разделение интерфейса на независимые блоки.

Вообще, БЭМ, — это далеко не единственная методология разработки, но на данный момент она, наверное, самая модная в рамках СНГ. Часто знание БЭМ требуется даже от джунов.

Описывать сам БЭМ я не буду, да это и не имеет смысла. На официальном сайте есть очень классное руководство, я не напишу лучше.

Разберёмся, скорее, почему БЭМ и действительно ли нужно его учить.

И моё субъективное мнение заключается в том, что учить нужно. Там всё равно ничего сложного, а знать для общего круга полезно, тем более что это знание, как минимум, делает вас конкурентным на рынке труда.

Я использую БЭМ и люблю его. Мне нравится этот подход разбиения на составляющие, потому что во многом это упрощает понимание кода и упрощает его поддержку. Так же, что важно, код становится переиспользуемым. Многие блоки проще перемещать со страницы на страницу или дублировать на одной странице, приходится писать меньше кода.

В моём опыте использования не было ничего плохого, что было бы связанно с БЭМ, поэтому всем советую.

На этом всё. Спасибо за прочтение, это важно для меня

#web #theory #useful
402 views10:08
Открыть/Комментировать
2021-10-03 13:08:00 ​​Абсолютный и относительный путь

Два понятия из мира файловых систем. Сейчас разберемся что это такое.

Абсолютный путь — полный путь до файла в файловой системе.

Windows:
C:\Program Files\Internet Explorer\iexplorer.exe

UNIX:
/Users/denisputnov


Относительный путь — путь до файла в файловой системе относительно исполняемого файла.

Как пример, возьмём папку рабочего стола в Unix-системах:

При запуске терминала я оказываюсь в папке /Users/denisputnov. Чтобы зайти в папку рабочего стола я могу написать cd ./Desktop или cd Desktop. Тут я использую относительный путь. Или могу использовать абсолютный и записать команду как cd /Users/denisputnov/Desktop

В этом и заключается вся разница.

В последнее время немного выгорел от постов через день. Постараюсь выпускать посты чаще, но пока всё достаточно печально в этом вопросе

В любом случае, спасибо за прочтение, это важно для меня

#useful
368 views10:08
Открыть/Комментировать
2021-10-01 13:37:49 ​​Откуда методы у примитивов

В JavaScript, как и в других языках, есть примитивы, подробнее тут, но что это в целом такое? Когда мы записываем конструкцию типа:

const year = 2021

Мы не создаём объект, мы просто задаём числовое значение переменной. Но при этом, у этого примитива доступны методы. Так как же?

Дело в том, что интерпретатор JavaScript в рантайме создаёт конструкторы-обёртки над примитивами. Я думаю все знают, что для каждого примитива существуют соответствующие классы типа Number, String...

Так вот, например, такой код:
year.toString()

Будет на деле исполняться как:
new Number(year).toString()

Мы создаём объект примитива на основе примитивного значения и у полученного объекта вызываем методы.

На этом у меня всё. Спасибо за прочтение, это важно для меня

#web #theory #javascript
362 views10:37
Открыть/Комментировать
2021-09-28 13:08:00 ​​Какой объект называется итерабельным

Сегодня поговорим о том какой объект называется итерабельным, а именно, какой объект можно проитерировать при помощи цикла for..of.

У любого итерабельного объекта в JavaScript присутствует специальный ключ [Symbol.Iterator]. По этому ключу доступен генератор, который предоставляет для итерации значения. Подробнее о работе генераторов я расскажу в другой раз.

Следовательно, чтобы сделать объект неитерабельным, необходимо удалить это свойство.

И в целом на этом всё. Спасибо за прочтение, это важно для меня

#web #theory #javascript
385 views10:08
Открыть/Комментировать
2021-09-26 13:08:00 ​​Что такое нечистый объект

Информации нет в интернете, кстати. Не знаю почему, но видел этот вопрос только на тестовом собеседовании, а вот в интернете ответа просто нет. Эксклюзив, получается

Итак, понятие "нечистый объект" появляется в контексте клонирования объекта. Нечистым объектом называется тот объект, который внутри себя содержит ссылки на себя же.

Пример:
const obj = {
foo: 1,
bar: obj
}

или

const obj = {
foo: 1,
bar: {
obj.x
},
x: obj.bar
}


Тут объект ссылается сам на себя, из-за чего при копировании код будет завершаться переполнением стека вызова.

На этом всё. Спасибо за прочтение, это важно для меня

#web #theory #javascript
376 viewsedited  10:08
Открыть/Комментировать
2021-09-24 13:08:00 ​​Что такое Spread и Rest операторы и в чём их отличие

Итак, Rest оператор — это оператор, который позволяет собрать лишние аргументы. Сразу на примере:
function foo(a, b, ...manyMoreArgs) {
console.log("a", a);
console.log("b", b);
console.log("manyMoreArgs", manyMoreArgs);
}

foo(1, 2, 3, 4, 5, 6);

// a, 1
// b, 2
// manyMoreArgs, [3, 4, 5, 6]


В объявлении функции мы используем Rest оператор, который собирает все оставшиеся поданные в функцию аргументы в массив.

Spread оператор, в свою очередь, не применяется как способ развернуть один объект в другой:
const arr1 = [1, 2]
const arr2 = [4, 5]
const arr3 = [...arr1, 3, ...arr2]

// arr3, [1, 2, 3, 4, 5]


Так же это работает не только с массивами, но и, например, с объектами.

Разница Spread и Rest оператора заключается конечно же в том, какой результат выполнения они имеют. Но можно заметить, что они имеют одинаковый синтаксис (...). Отсюда сделаем замечание, что:

Rest оператор применяется только в объявлении функции с целью создания коллекции аргументов.
— Spread оператор применяется во всех остальных случаях.

На этом у меня всё. Спасибо за прочтение, это важно для меня

#web #theory #javascript
337 views10:08
Открыть/Комментировать
2021-09-22 13:08:00 ​​Оператор объединения с null '??'

Относительно новая замена оператору || в быту разработчика. Рассмотрим вот такую ситуацию:

С сервера приходит адрес пользователя, который может быть null либо undefined. В таком случае, обработать этот кейс можно так:
const state = (json.city !== null && json.city !== undefined) ? json.city : "default"


Какая-то совсем страшная кроказябра написана сверху, не так ли?

А можно записать вот так:
const state = json.city ?? "default"


Оператор ?? возвращает первый аргумент, если он не null/undefined, иначе второй. В этой ситуации это однозначно спасает ситуацию и делает код более читаемым.

И кто-то заметит, что вместо ?? можно использовать ||. А вот и нет. Такая ситуация:

Что если в вышепредставленном json есть поле score. Оно либо ноль, либо null/undefined.

Смотрим код:
// json.score = 0

json.score || 1000 // 1000
json.score ?? 1000 // 0


Оператор ?? работает только с null и undefined, а || также обрабатывает falsy-значения.

На этом всё. Спасибо за прочтение, это важно для меня.

#web #theory #javascript
325 views10:08
Открыть/Комментировать
2021-09-20 16:08:00 ​​Преобразование строки в число

Хочу, кстати, рассказать об интересном и неявном способе преобразовать строку в число в JavaScript. Речь идет о плюсике. Об обычном плюсике, да. Выглядит это так:
const string = "20"
const num = +string
const num2 = 10 + +string
// num = 20
// num2 = 30, не ошибка


Коротко и со смыслом мне кажется, ведь на этом, по сути, и правда всё.

Спасибо за прочтение, это важно для меня

#web #theory #javascript
335 views13:08
Открыть/Комментировать
2021-09-18 13:08:00 ​​Логические операторы JavaScript

В JavaScript, как и во многих других языках, есть логические операторы для объединения различных условий. В этом посте закрепим эту тему, рассмотрим как они применяются и изучим некоторые нюансы.

Не будем опускаться до всяких базовых вещей типа записи комплексных условий. Но для галочки запишу пример:
if (x > 0 && (y === 2 || y === 7)) {
doSomething()
}

Сегодня будем говорить о чём-то более интересном.

1. Всего операторов три: &&, ||, !
2. Преобразовать значение к типу boolean быстро можно, используя двойное отрицание.
let name = "Denis"
let age
let obj = { age }

!!name // true
!!age // false
!!obj // true


3. Оператор || возвращает первое истинное значение.
const name = "Denis" || "Max" || undefined
// name = "Denis"


4. Оператор && возвращает первое ложное значение.
const age = 20 && '' && null
// age = ''


5. Операторы || и && можно использовать вместо if.
let x, y

true && (x = 2)
true || (y = 10)

// x = 2
// y = undefined


Это первое, что приходит в голову на эту тему.

Спасибо за прочтение, это важно для меня

#web #javascript #theory
396 views10:08
Открыть/Комментировать