Вынесение констант в переменные

Одна из вещей, которых нас не учили на программировании в универе — делать именованные константы. Просто один пример на JavaScript:

function convertTimeToTicks(unixTimestampMs) {
    return (unixTimestampMs - (3600 * 3 * 1000)) * 10000 + 621355968000000000;
}

Ну как? Хорошо ещё название функции хоть как-то подсказывает, что происходит. А вот так было бы с именованными константами:

function convertTimeToTicks(unixTimestampMs) {
    let millisecondsInHour = 3600000;
    let timezoneCorrectionMs = millisecondsInHour * 3;
    let ticksInMs = 10000;
    let ticksBeforeUnixTimestamp = 621355968000000000;
    return (unixTimestampMs - timezoneCorrectionMs) * ticksInMs + ticksBeforeUnixTimestamp;
}

Да, много строк, да кажется что печатаешь лишнее. Но зато постороннему (и вам через пару лет) сразу ясно, что берётся время в миллисекундах от начала эпохи UnixTimestamp, делается коррекция часового пояса, конвертируется в тики.

Ну а тики нужны для работы с системой электронного документооборота, это уже другая история.

Он-лайн чат на азбуке Морзе

Всем привет! Я сделал чат на азбуке Морзе 🙂

https://morse.arikado.ru/

Краткая инструкция:
1) После входа вы видите сообщение .-- .- ---- / .--. --- --.. -.-- .-- -. --- .---, это значит что нужно ввести ваши позывные. Введите туда что-нибудь (чтобы вас отличать в чате)
2) После ввода позывных нажмите кнопку .-- .... --- -..
3) Вы увидите чат с сообщениями на азбуке Морзе. Показываются последние 10 сообщений. Чтобы прослушать конкретное сообщение, нажимайте на позывной оставившего сообщение.
4) Новые сообщения будут автоматически проигрываться при получении. Ваши сообщения тоже.

Ввод ключом
В верхней части страницы есть кнопка с надписью -.- .-.. ..-- ---., это ключ. Краткое нажатие на кнопку — точка, длинное — тире. Длительность тире можно установить в блоке настроек под чатом.
Под кнопкой есть два индикатора (прогресс-бара), один обозначает границу буквы, второй — границу слова. Чтобы начать вводить следующую букву дождитесь когда заполнится индикатор буквы. Чтобы начать вводить следующее слово, дождитесь, когда заполнится нижний индикатор.

Ввод с клавиатуры
Можно просто писать точки и тире с клавиатуры. При этом можно использовать тире (-), тильду «~», подчёркивание «_» как тире; точку «.», звёздочку «*», одиночную кавычку «‘» как точку. Между буквами один пробел. Между словами нужно ставить пробел, наклонную черту, ещё пробел.
Если вы ввели недопустимые символы, появится сообщение об ошибке --- ---- .. -… -.- .- / -. . -.. --- .--. ..- … - .. -- -.-- . / … .. -- .-- --- .-.. -.--
Телефоны иногда пытаются два дефиса переделать в тире. Чтобы этого не происходило, используйте, например, тильду «~» вместо тире.

Настройки
В нижней части, под чатом, можно настроить частоту звука, длительность точки в звуке; длительность тире, буквы и слова при вводе.
Я плохо воспринимаю на слух пока, поэтому длительность точки по умолчанию — 200 мс. Кто хорошо воспринимает может поставить стандартные 75 мс.

Если у кого-то не работает — сообщайте, я попробую исправить.

Надеюсь вам понравится.

Преобразование русского текста в звуки азбуки Морзе

Сделал небольшую страничку, куда можно ввести текст на русском и прослушать его в виде морзянки.

Ссылка: https://arikado.ru/morse/

Сейчас азбука Морзе, конечно, не так востребована и популярна, но парочку применений для себя я вижу:

  • Можно поставить имя звонящего на виброзвонок, и слышать по вибрации кто звонит
  • Отладка программ для микроконтроллеров — вывод произвольного сообщения через один светодиод
  • Ну и может пригодится в случае апокалипсиса 🙂

Поисковик по фанфиков с fanfics.me

Скачал все фанфики с fanfics.me, проиндексировал тексты, составил частотные словари, и вот, представляю вашему вниманию поисковик — https://fanfics.arikado.ru/

Сегодня обнаружил что запретили скачивать фанфики неавторизованным пользователям. Упс. Надеюсь не из-за меня.