у ссылок есть атрибут download, выглядит так
работает это всё с ограничениями same-origin policy, т.е. ссылка должна вести на тот же домен и страницу
пример на сайте w3c
https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_a_download
а ещё атрибуту download можно задать значение и оно будет использовано как имя загруженного файла
<a href="" download />он меняет поведение ссылки — вместо того чтобы открывать новую страницу, загружается файл
работает это всё с ограничениями same-origin policy, т.е. ссылка должна вести на тот же домен и страницу
пример на сайте w3c
https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_a_download
а ещё атрибуту download можно задать значение и оно будет использовано как имя загруженного файла
Forwarded from For Web — фронтенд, дизайн, программирование
Floating UI, новый движок для позиционирования тултипов и попапов от создателей Popper: новая архитектура и более удобный API, больше возможностей, меньший размер, кроссплатформенность (React Native) и другие улучшения → https://floating-ui.com
небольшая статья про то перегрузки функций в typescript
https://medium.com/@natti.davydova/%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9-%D0%B2-typescript-74c0968cae51
https://medium.com/@natti.davydova/%D0%BF%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9-%D0%B2-typescript-74c0968cae51
Medium
Перегрузки функций в Typescript
Эта статья родилась из экспериментов с перегрузками функций (Function Overloading) в TypeScript. После вводной о том, что такое перегрузки…
Forwarded from запуск завтра
Кстати, вот инструкция Apple о том, как делать компьютерные интерфейсы для людей. Прям буквально, начиная от общего поведения приложения и заканчивая оптимальным размером отдельных кнопок: Apple Human Interface Guidelines.
Аналогичные гайдлайны от Microsoft для Windows-программ и от Google — про Android.
Увлекательное чтиво, даже если ты не дизайнер.
Аналогичные гайдлайны от Microsoft для Windows-программ и от Google — про Android.
Увлекательное чтиво, даже если ты не дизайнер.
офигеть, метод 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.»