офигеть, метод includes работает с объектами
https://stackoverflow.com/questions/53748605/does-include-works-with-array-of-objects
https://stackoverflow.com/questions/53748605/does-include-works-with-array-of-objects
Stack Overflow
does include works with array of objects?
i'm trying to use includes to see if an object is inside the array like so:
arr=[{name:'Dan',id:2}]
and I want to check like so:
arr.includes({name:'Dan',id:2})
and this returns false, is there...
arr=[{name:'Dan',id:2}]
and I want to check like so:
arr.includes({name:'Dan',id:2})
and this returns false, is there...
плагин для подсветки синтаксиса и автодополнения css-in-js
https://marketplace.visualstudio.com/items?itemName=styled-components.vscode-styled-components
https://marketplace.visualstudio.com/items?itemName=styled-components.vscode-styled-components
Visualstudio
vscode-styled-components - Visual Studio Marketplace
Extension for Visual Studio Code - Syntax highlighting for styled-components
https://alphahydrae.com/2021/02/how-to-display-an-image-protected-by-header-based-authentication/
чего так сложно....... были же просто картинки..... господе
чего так сложно....... были же просто картинки..... господе
AlphaHydrae
How to display an image protected by header-based authentication
I recently had to work with an API that serves images protected by header-based authentication. You have to send a bearer token in the Authorization header for all requests, including images. How do you display such an image in a web page?
хотите добавить кнопочку для копирования текста?
можно сделать это одной строкой css
https://developer.mozilla.org/en-US/docs/Web/CSS/caption-side
можно сделать это одной строкой css
https://developer.mozilla.org/en-US/docs/Web/CSS/caption-side
MDN Web Docs
caption-side - CSS | MDN
The caption-side CSS property puts the content of a table's <caption> on the specified side. The values are relative to the writing-mode of the table.
чем отличаются авторизация и аутентификация
https://www.kaspersky.ru/blog/identification-authentication-authorization-difference/
https://www.kaspersky.ru/blog/identification-authentication-authorization-difference/
www.kaspersky.ru
Чем отличаются друг от друга идентификация, аутентификация и авторизация
Чем аутентификация отличается от идентификации и авторизации — и почему все они важны для безопасности вашей информации.
сегодня я узнала что перед тем как рибейзить стоит использовать префикс
-i, тогда можно будет клево отредактировать историю коммитов (собственно ради чего мы и затеваем всю движуху с рибейзами)git rebase -i develop
Forwarded from Стой под стрелой (Nikita Prokopov)
Давайте регэкспам научу за один пост?
Регэксп описывает шаблон, который вы хотите найти внутри строки.
Самый простой — буквальный. Что написано, то и ищем:
Какой-то символ может повторяться. Если сколько угодно раз (1 или больше), то плюсик:
Если сколько угодно раз или ни разу (0 или больше), то звездочка:
Если один раз или ни разу, то вопрос:
Все три применяются только к символу, который идет непосредственно перед:
Теперь про сами символы. На одной букве далеко не уедешь, поэтому есть выбор.
Внутри квадратных скобок можно писать диапазоны:
Но в эпоху юникода использовать
У квадратных скобок есть еще одна особенность: можно сказать отрицание, то есть «что угодно кроме перечисленного»:
Полезно, например, чтобы делить строку по разделителю. Можно написать «что угодно кроме двоеточия ноль или более раз»:
Еще один важный класс: пробел.
Точка. Точка значит «что угодно вообще»:
Крышечка и доллар — начало и конец строки. Обычно регрексп будет искать вам ПОДстроку. Чтобы проверить всю строку целиком, заверните ее:
Наконец, «или». Когда нужно выбрать из нескольких сильно разных вариантов — скобки и пайп:
По использованию. В простейшей версии регэкспом вы просто проверяете, есть ли внутри строки подстрока, соответствующая шаблону:
Но иногда строку хочется распарсить. Для этого интересующие вас части заверните в круглые скобки:
Штуки в скобках называются «capturing groups».
Тут проблема, потому что скобки могут быть чисто техническими и использоваться просто для группировки. В этом случае пишут
Теперь про недостатки. Самое неудобное — что каждый символ внутри значимый. То есть нельзя разбить регэксп для удобства чтения. Если вставите где-то лишний пробел, регэксп будет искать его в строке:
Второе — многие нормальные символы имеют специальное значение и их нужно эскейпить. Это очень трудно читать:
Особенно легко попасть на точке:
Так что читать регэкспы сильно сложнее, чем писать. Понимать — легко, а вот продраться через мешанину символов, где что начинается или заканчивается — сложно.
Поэтому простых регэкспов не бойтесь — их читать как раз несложно. Сложные иногда можно потерпеть ради компактной записи и перформанса.
Факультативно почитайте про lookahead/lookbehing, quantifier, named groups, greedy/lazy, флаги ignore case, unicode, multiline.
Как-то так.
Регэксп описывает шаблон, который вы хотите найти внутри строки.
Самый простой — буквальный. Что написано, то и ищем:
/abcd/ => ✅ "abcd", ⛔️ все остальное
Какой-то символ может повторяться. Если сколько угодно раз (1 или больше), то плюсик:
/a+/ => ✅ "a", "aa", "aaa"
Если сколько угодно раз или ни разу (0 или больше), то звездочка:
/a*/ => ✅ "", "a", "aa", "aaa"
Если один раз или ни разу, то вопрос:
/a?/ => ✅ "", "a", ⛔️ "aa", "aaa", "aaaaaaa"
Все три применяются только к символу, который идет непосредственно перед:
/https?/ => ✅ "http", "https", ⛔️ "htt", ""
Теперь про сами символы. На одной букве далеко не уедешь, поэтому есть выбор.
[abc] значит любой из a, b или c:
/[abc]/ => ✅ "a", "b", "c", ⛔️ "d"
Внутри квадратных скобок можно писать диапазоны:
/[a-z]+/ => ✅ "abc", ⛔️ "123", "ab12"
/[0-9]+/ => ✅ "123", ⛔️ "abc", "ab12"
Но в эпоху юникода использовать
a-z не рекомендуется. Вместо этого есть Юникодный класс “Letter”:
/\p{L}+/ => ✅ "abc", "абв", "åbč", ⛔️ "1234"
У квадратных скобок есть еще одна особенность: можно сказать отрицание, то есть «что угодно кроме перечисленного»:
/[^a-z]+/ => ✅ "123", "абв", ⛔️ "a", "abc"
Полезно, например, чтобы делить строку по разделителю. Можно написать «что угодно кроме двоеточия ноль или более раз»:
/[^:]*/ => ✅ "", "123", "абв", ⛔️ "a:b", ":"
Еще один важный класс: пробел.
\s включает все возможные варианты пробелов (неразрывные, em/em spaces, табы и т.п.):
/\s*/ => ✅ "", " ", " ", ⛔️ "abc"
\s* часто используется при парсинге «человекочитаемых форматов», т.к. люди любят пробельчиками отбивать все, или делать вид, что их не видят.Точка. Точка значит «что угодно вообще»:
/.*/ => ✅ "", "123", "абв"
Крышечка и доллар — начало и конец строки. Обычно регрексп будет искать вам ПОДстроку. Чтобы проверить всю строку целиком, заверните ее:
/^[a-z]+$/ => ✅ "abcd", ⛔️ "abcd1"
Наконец, «или». Когда нужно выбрать из нескольких сильно разных вариантов — скобки и пайп:
/(http|ssh)/ => ✅ "http", "ssh", ⛔️ "htsh"
По использованию. В простейшей версии регэкспом вы просто проверяете, есть ли внутри строки подстрока, соответствующая шаблону:
/[a-z]+/.test("1abc2") => true
/[a-z]+/.test("123") => false
Но иногда строку хочется распарсить. Для этого интересующие вас части заверните в круглые скобки:
"__abc123__".match(/([a-z]+)([0-9]+)/) => ["abc123", "abc", "123"]
Штуки в скобках называются «capturing groups».
match вернет вам сматчившуюся подстроку целиком плюс значения всех capturing groups.Тут проблема, потому что скобки могут быть чисто техническими и использоваться просто для группировки. В этом случае пишут
(?:), «non-capturing group». По сути те же скобки, но в результат match-а они не попадут.
"__abc123__".match(/(?:a|b|c)+([0-9]+)/) => ["abc123", "123"]
Теперь про недостатки. Самое неудобное — что каждый символ внутри значимый. То есть нельзя разбить регэксп для удобства чтения. Если вставите где-то лишний пробел, регэксп будет искать его в строке:
/( abc | def )/ => ⛔️ "abc", "def", ✅ " abc ", " def "
Второе — многие нормальные символы имеют специальное значение и их нужно эскейпить. Это очень трудно читать:
/(\(|\))/ => ✅ "(", ")"
Особенно легко попасть на точке:
/.*.jpg/ => ✅ "abcjpg"
/.*\.jpg/ => ⛔️ "abcjpg"
Так что читать регэкспы сильно сложнее, чем писать. Понимать — легко, а вот продраться через мешанину символов, где что начинается или заканчивается — сложно.
Поэтому простых регэкспов не бойтесь — их читать как раз несложно. Сложные иногда можно потерпеть ради компактной записи и перформанса.
Факультативно почитайте про lookahead/lookbehing, quantifier, named groups, greedy/lazy, флаги ignore case, unicode, multiline.
Как-то так.
когда-то я готовилась к собеседованиям по вот этому списку задачек
https://github.com/lydiahallie/javascript-questions/blob/master/ru-RU/README.md
https://github.com/lydiahallie/javascript-questions/blob/master/ru-RU/README.md
GitHub
javascript-questions/ru-RU/README.md at master · lydiahallie/javascript-questions
A long list of (advanced) JavaScript questions, and their explanations :sparkles: - lydiahallie/javascript-questions
задачки для собеседований от хекслета
https://ru.hexlet.io/blog/posts/kakie-voprosy-ob-otladke-chasto-zadayut-na-sobesedovanii-js-razrabotchikam-primery-i-ob-yasneniya
https://ru.hexlet.io/blog/posts/kakie-voprosy-ob-otladke-chasto-zadayut-na-sobesedovanii-js-razrabotchikam-primery-i-ob-yasneniya
Хекслет
Какие вопросы об отладке часто задают на собеседовании JS-разработчикам: примеры и объяснения
В подборку попали типичные вопросы об отладке, с которыми сталкиваются на собеседованиях разработчики на JavaScript. Попытайтесь ответить на них самостоятельно, а потом сравните ответ с правильным решением.
code_notes pinned «what is hoisting when all variables declared anywhere in a scope are treated as if they're declared at the beginning of the scope»
code_notes pinned «what is closure closure is when a function remembers and continues to access variables from outside its scope, even when the function is executed in a different scope.»
code_notes
https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif отличная статья про ивент луп
https://www.jsv9000.app/
песочница для ивент-лупа, макротасок/микротасок
красивое
мой код для примера
песочница для ивент-лупа, макротасок/микротасок
красивое
мой код для примера
console.log('first')
Promise.resolve().then(function promise() { console.log('second')})
setTimeout(function time() {console.log('third'), 5000})отличия map от weakmap
ключи
map любого типа
weakmap только объекты
итерация и методы keys(), values(), entries()
map поддерживает
weakmap не поддерживает
это происходит пушто garbage collector удаляет из weakmap пары ключ-значение если на ключ (который очевидно объект) больше нет ссылок
поскольку garbage collector делает это довольно непредсказуемо, weakmap не поддерживает итерацию
ключи
map любого типа
weakmap только объекты
итерация и методы keys(), values(), entries()
map поддерживает
weakmap не поддерживает
это происходит пушто garbage collector удаляет из weakmap пары ключ-значение если на ключ (который очевидно объект) больше нет ссылок
поскольку garbage collector делает это довольно непредсказуемо, weakmap не поддерживает итерацию