Skip to content

Instantly share code, notes, and snippets.

View helloris25's full-sized avatar
😎

helloris25

😎
View GitHub Profile
function memo(fn) {
const cache = new Map();
return function () {
if (!cache.has(fn)) {
cache.set(fn, new Map());
}
const argsKey = JSON.stringify(arguments);
@helloris25
helloris25 / index.js
Last active January 22, 2020 12:35
Не ставить фокус по клику на элемент
/*
Проблема заключалась в следующем: когда имеется интерактивный элемент с :focus стилем и вы щелкаете по этому элементу, на нём остаётся focus стиль (outline обводка).
У нативной кнопки всё работает as expected, но стоит её добавить любой стиль и, как побочный эффект, меняется её поведение.
Конечно outline можно убрать, но с интерактивными элементам так делать не стоит, так как он обеспечивает визуальную обратную связь для элементов, которые имеют «фокус» при навигации по документу с помощью клавиши TAB (или эквивалентной).
Это особенно полезно для людей, которые не могут использовать мышь или имеют нарушения зрения.
Если вы удалите outline, вы сделаете свой сайт недоступным для этих людей.
*/
// РЕШЕНИЕ 1
document
@helloris25
helloris25 / retry.js
Created May 15, 2019 12:00
Retry async function when was reject
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');
}
@helloris25
helloris25 / pug.md
Created October 5, 2018 09:32 — forked from neretin-trike/pug.md
Туториал по HTML препроцессору Pug (Jade)
@helloris25
helloris25 / sql
Last active July 21, 2017 14:10
Обновление полей в которых суммы из другой таблицы с условием
UPDATE Table_1 T_1
LEFT JOIN
(
SELECT
id_table1,
Sum(CASE
WHEN direction = 'one'
THEN volume
ELSE 0
END) AS sum_one,
@helloris25
helloris25 / gist:86dd4769c5860f4efb00b4e2d036d4c7
Created June 30, 2017 11:35
Конвертация всех таблицы в нужную кодировку
Конвертацию БД из 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
@helloris25
helloris25 / .md
Created October 16, 2015 08:58 — forked from iAdramelk/.md
Длинная телега про Бутстрап

Вводная часть

У CSS есть несколько базовых проблем, которые позволяют очень быстро отстрелить себе ногу при неправильном использовании:

  1. Глобальный неймспейс – в серверном программировании все что написано в файле, в файле и остается. Все же что написано в css и js засирает глобальное пространство имен со всеми вытекающими. В JS эту проблему сейчас побороли всякими модульными системами, а вот с css сложнее. В идеальном мире это должен починить Shadow DOM и настоящие Web Components, но пока их нет единственный способ с этим бороться – следовать какой-то системе именований селекторов, которая по возможности уменьшает и исключает возможные конфликты.

  2. Каскадность – если на один элемент может сработать несколько правил, то они все и сработают последовательно. Если есть элемент h1.title, на него сработают все правила для тегов h1 и все правила для класса .title. Так как весь html состоит из тегов, то правил которые применяются на теги без классов будут работать на все вообще.

Соответственно наз

@helloris25
helloris25 / index.php
Created September 28, 2015 10:50
Вывести массив PHP как объект JS в Битркис
<script>
console.log(<? echo CUtil::PhpToJSObject($arResult, false, true); ?>);
</script>
@helloris25
helloris25 / RegExp YouTube video iFrame | object
Created September 16, 2015 14:31
RegExp YouTube video iFrame | object
$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
@helloris25
helloris25 / nanoTpl.js
Last active August 29, 2015 14:27
Simplest JS template engine
/*
* 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;