Pug - это препроцессор HTML и шаблонизатор, который был написан на JavaScript для Node.js.
| function memo(fn) { | |
| const cache = new Map(); | |
| return function () { | |
| if (!cache.has(fn)) { | |
| cache.set(fn, new Map()); | |
| } | |
| const argsKey = JSON.stringify(arguments); |
| /* | |
| Проблема заключалась в следующем: когда имеется интерактивный элемент с :focus стилем и вы щелкаете по этому элементу, на нём остаётся focus стиль (outline обводка). | |
| У нативной кнопки всё работает as expected, но стоит её добавить любой стиль и, как побочный эффект, меняется её поведение. | |
| Конечно outline можно убрать, но с интерактивными элементам так делать не стоит, так как он обеспечивает визуальную обратную связь для элементов, которые имеют «фокус» при навигации по документу с помощью клавиши TAB (или эквивалентной). | |
| Это особенно полезно для людей, которые не могут использовать мышь или имеют нарушения зрения. | |
| Если вы удалите outline, вы сделаете свой сайт недоступным для этих людей. | |
| */ | |
| // РЕШЕНИЕ 1 | |
| document |
| async function retry(fn, retriesLeft = 5, interval = 1000, exponential = false) { | |
| try { | |
| const val = await fn(); | |
| return val; | |
| } catch (error) { | |
| if (retriesLeft) { | |
| await new Promise(r => setTimeout(r, interval)); | |
| return retry(fn, retriesLeft - 1, exponential ? interval * 2 : interval, exponential); | |
| } else throw new Error('Max retries reached'); | |
| } |
| UPDATE Table_1 T_1 | |
| LEFT JOIN | |
| ( | |
| SELECT | |
| id_table1, | |
| Sum(CASE | |
| WHEN direction = 'one' | |
| THEN volume | |
| ELSE 0 | |
| END) AS sum_one, |
| Конвертацию БД из Win-1251 в UTF8 можно произвести разными способами, но самый быстрый и простой - использование SQL-запроса, приведенного ниже. | |
| ALTER TABLE `db_name`.`table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; | |
| При помощи этого запроса, можно конвертировать таблицу базы данных в любую, доступную в MySQL кодировку. Но что делать, если таблиц 100, 200 или больше, и все таблицы необходимо перекодировать в UTF8 из Win-1251? Для решения этой проблемы, можно отправить в MySQL запрос, который сгенерирует необходимые SQL-запросы для всех таблиц БД. При использовании PHPMyAdmin останется только скопировать результаты и запустить их как SQL-запрос: | |
| SELECT CONCAT( 'ALTER TABLE `', t.`TABLE_SCHEMA` , '`.`', t.`TABLE_NAME` , '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) AS sqlcode | |
| FROM `information_schema`.`TABLES` t | |
| WHERE 1 | |
| AND t.`TABLE_SCHEMA` = 'My_DB_for_convert' | |
| ORDER BY 1 |
У CSS есть несколько базовых проблем, которые позволяют очень быстро отстрелить себе ногу при неправильном использовании:
-
Глобальный неймспейс – в серверном программировании все что написано в файле, в файле и остается. Все же что написано в css и js засирает глобальное пространство имен со всеми вытекающими. В JS эту проблему сейчас побороли всякими модульными системами, а вот с css сложнее. В идеальном мире это должен починить Shadow DOM и настоящие Web Components, но пока их нет единственный способ с этим бороться – следовать какой-то системе именований селекторов, которая по возможности уменьшает и исключает возможные конфликты.
-
Каскадность – если на один элемент может сработать несколько правил, то они все и сработают последовательно. Если есть элемент
h1.title, на него сработают все правила для теговh1и все правила для класса.title. Так как весь html состоит из тегов, то правил которые применяются на теги без классов будут работать на все вообще.
Соответственно наз
| <script> | |
| console.log(<? echo CUtil::PhpToJSObject($arResult, false, true); ?>); | |
| </script> |
| $regexstr = '~ | |
| # Match Youtube link and embed code | |
| (?: # Group to match embed codes | |
| (?:<iframe [^>]*src=")? # If iframe match up to first quote of src | |
| |(?: # Group to match if older embed | |
| (?:<object .*>)? # Match opening Object tag | |
| (?:<param .*</param>)* # Match all param tags | |
| (?:<embed [^>]*src=")? # Match embed tag to the first quote of src | |
| )? # End older embed code group | |
| )? # End embed code groups |
| /* | |
| * String nanoTpl (String template, Object data) | |
| * | |
| * Usage: nanoTpl('Hello ${name}! (not ${name}?)', { name: 'Gandalf' }) | |
| * | |
| * Result: Hello Gandalf! (not Gandalf?) | |
| */ | |
| function nanoTpl (template, data) { | |
| var result = template; |