Подписаться на блог

Фрирайтинг, заметки, шитпостинг и все подряд (18+)

Позднее Ctrl + ↑

How to run TS-node with ES modules and CommonJS?

If you’ve got ERR_REQUIRE_ESM, ERR_UNKNOWN_FILE_EXTENSION for TS files, ERR_MODULE_NOT_FOUND for TS files with ES modules and other errors related to «CJS to ESM migration problem» in your NodeJS project you can fix it by following these steps.

  1. Update package.json to define modules system
"type": "module",
  1. Update tsconfig.json to support ESM in TS-node
{
  "compilerOptions": {
    "target": "esnext",
    "emitDecoratorMetadata": true,
    "module": "esnext",
    "moduleResolution": "node",
    "types": ["node"],
    "resolveJsonModule": true,
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true
  }
}
  1. Run your entry point script using node and ts-node as node loader
node --experimental-specifier-resolution=node --loader ts-node/esm src/index.ts
  1. Enjoy!

Лучший оупен-эйр 2022 в Рязани

Минувшие выходные Выходные несколько недель назад (потому что мне было лень написать пост) были самыми длинными за последний, кажется, год. И не потому, что я много отдыхал, а потому, что слишком много эмоций и событий наполняло их.

Почти два месяца мы (и здесь я очень рад, что принимал участие в подготовке) готовили опен-эир с электронной музыкой, клевыми диджеями, баром, интересными инсталляциями и декором. И у нас получилось. Очень круто, куча положительного фидбэка, респектов и вопросов «вы там ебанутые?» (в положительном ключе, конечно). Повторюсь, что безумно рад, что удалось приложить руку к этому всему.

Сначала хотел прямо такой жестко информативный лонгрид сделать, но потом подумалось, что через текст свои эмоции я недостаточно качественно могу передать, так что немного шитпоста и просто фоточек закину.

Вечер за день до мероприятия — на выходе в поля

Началось все с выбора площадки — поляны под Рязанью в чаще леса, которую ребята расчищали долго и кропотливо, сразу же намечая где и что будет: 2 чилл-зоны, бар + кухня, сцена, туалет (куда ж без него). Даже расположение мусорок было продумано! План рисовали как лучших шпионских боевиках — на скриншотах спутниковых снимков.

Чтобы дойти до поляны, нужно было топать некоторое время по полю, вокруг было очень красиво и... много комаров, но куда ж без этого. Для того, чтобы люди не терялись, был подготовлен фото-гайд с ориентирами, координатами и картой.

Я по этим полям столько кругов за эти дни намотал, столько крови там сцедил комарам, что кажется, что я теперь часть этих полей.

Одна из огромных инсталляций — цветок, свечение которого было видно почти из каждого края плейса

Декораторы и художники создали кучу красивостей: рисунки на деревьях, скульптуры, «фрески» и еще много всяких штук, название которых я не знаю, но без этого не было бы ни атмосферы, ни вайба, который плейс раздавал во время тусовки. Причем работать они начали задолго до выезда на место.

Я много наблюдал за их работой и немного помогал — непередаваемые эмоции, когда за день бесформенный кусок пенопласта превращается в крыло, цветок, рыбу — что угодно.

Чиллзона внутри бара, виден процесс подготовки и скульптура, маскот Рязани, можно сказать

Инженеры также задолго до начала начали работу: делали чертежи сцены, стойки, закупали материалы, проводили подготовительный напил, покраску и сварку всего и вся, что можно было сделать до приезда на место. Большая часть задумок изначально моделилась в 3D.

Весь тон тусовке задавала сцена высотой в несколько метров, буквально являлась центром всего. Конструкция получилась довольно устойчивой, мы на верхушке втроем спокойно находились — не спрашивайте зачем.

Окончательный выезд на место состоялся за 2 дня до мероприятия, и некоторые из организаторов там жили все это время. За день до начала приехали волонтеры и работа закипела еще сильнее, да и не прекращалась она до самого конца мероприятия.

Валежник и порубленные старые деревья максимально использовались для оформления и поддержи лесного вайба. Ближе к началу мероприятия пригнали целый фургон со светом, звуком и другим оборудованием и начали все устанавливать и отлаживать. Параллельно с этим ребята строили бар и разворачивали барное оборудование.

Люди приходили как-то очень резко и кучно, в какой-то момент я зашел в бар и увидел толпу, вышел — около него тоже увидел толпу, дошел до чиллзоны — там люди со своими раскладными стульчиками сидят и курят кальян. Красота!

Бар и довольные люди

Музыка разогналась где-то к двенадцати-часу, лайнап несколько сдвинулся, я почти не спал два предыдущих дня. И если бы два года назад я бы назвал это разминкой, то в этот раз я не выдержал и немного подремал в чиллухе на коленях у девушки.

Несколько часов лайнапа заняла прямо ебучка, которая, видимо, является чем-то вроде «ну это ваш стиль», народ вытоптал все поле, диджеи выжгли всю энергию!

Утром под разгон народа я играл свой хаус-сет, к слову, хаус никогда до этого не играл и не то чтобы любил, но мнение поменялось.

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

Есть записанный первый черновой трай моего сета. Когда-нибудь я его пересведу и выложу куда-то, но пока сыроватую версию можно и сюда.

Куча потраченных сил и энергии кучи людей, куча положительных эмоций и историй, парочка новых локальных «мемов» — как минимум поэтому лето уже удалось.

Запустили сайт NИTИ

Мы с ребятами делаем в Рязани очень крутой движ — NИTИ, я относительно недавно, но все же. Это тусовки с электронной (и не только) музыкой, крутая площадка, диджейские подкасты, музыка и еще много всего крутого.

Пару дней назад у объединения была, так сказать, годовщина. В честь этого события мы анонсировали масштабный оупен-эйр и... барабанная дробь... сайт!

Оупен-эйр — это мы в лесу будем делать тусовку с баром, чилл-зоной, арт-объектами, лайн-апом на десяток часов и кучей замечательных людей.

У нас была просто замечательная команда из трех человек, которой мы запустили сайт с нуля, у нас только концепт какой-то был и пара референсов, меньше, чем за месяц.

Наша команда была прямо фулл-ремоут, с полностью асинхронной коммуникацией и всего двумя созвонами за все время: в самом начале и в самом конце, чтобы контент поправить.

Работали по настоящему аджайлу, можно сказать, только спринты были по паре дней, утрирую, но как-то так.

Очень клевые дизайнерские идеи, очень интересные хаки в верстке, чтобы эти идеи ожили, мобильная версия с заделом под приложение — всем рекомендуем ее на телефонах сохранять на рабочий стол, чтобы оно в стэндалон режиме открывалось.

Технологически весь сайт построен на NextJS, чтобы быстро работало и вообще на острие технологий.
К слову, на релизе этот самый Next съел всю оперативу на сервере и вместо картинок юзеры получали 502 ошибку, но теперь все статически экспортируется — рантайм не нужен!

На графике посещений очень ярко выражен момент, когда мы сайт в инстаграме и телеграме анонсировали, красота! А вот та просадочка в начале — это как раз 502 ошибки, хорошо, что поймали быстро.

Осталось заделать наикрутейший интернет-магазин, но пока это в бэклоге. Сейчас в топ-приоритетах — собрать сет на грядущий движ в штанах лесу!

Как хостить MySQL на маленьких VPS

Недавно я начал хостить бложик (apache + mysql + nginx + пара сервисов на nodejs) на самом дешевом дроплете от Digital Ocean (надо ж кредитные токены DO куда-то потратить).

Внезапно столкнулся с проблемой, что контейнер MySQL периодически умирает от OOM киллера, MySQL с небольшим количеством данных съедала ну очень много памяти в простое.

Платить больше я не хотел, а воспоминания, что когда-то MySQL крутилась у меня на прямо маленьких VPS никак не давала покоя.

Оказалось, что есть такая штука, как Performance Schema.

The MySQL Performance Schema is a feature for monitoring MySQL Server execution at a low level.
The Performance Schema provides a way to inspect internal execution of the server at runtime.

Дальше я не особо читал, конечно, погуглил чуть, решил поэкспериментировать.
Добавляем в конфиг в секцию [mysqld] строчку, чтобы отключить эту фичу (я просто примонтировал новый конфиг), перезагрузил сервис и бах — случилась магия и теперь MySQL кушает гораздо меньше ресурсов. А мониторить мне пока не к чему.

Как блог в DO переезжал

Недавно Mastercard и Visa работать перестали для международных покупок, значится. Понял я, что пришло время переезжать на Digital Ocean, так как у меня там был некоторый предоплаченный период.

С одной стороны я сразу пожалел, что не написал 7 лет назад какой-то плейбук, чтобы все развернуть. С другой — у меня почти все заводилось через `docker-compose up`.

Как раз подчистил ненужные сервисы, забэкапил все, перетащил через `scp` всякую рантайм-шляпу типа логов, терять же не хочется, запустил — все отлично работает, остался рад, ушел спать.

Ночью мне написали, что часть постов не грузится, я решил посмотреть, что произошло и... я не понял, что произошло, ведь я фронтендер! Да и до сих пор не понимаю. На графиках прикольно видно мои потуги что-то починить и как все ломалось.

В какой-то момент у меня начала падать база, что-то в ней побилось. Побилось, кажется, из-за того, что у одного из PHP-скриптов Эгеи не было прав, а потом уже и сам контейнер в базой не мог писать на диск, так как там прав тоже не хватало — на предыдущей VPS у меня чудесно uid’ы юзеров совпали, и все хорошо было.

В итоге потратил некоторое время на то, чтоб права поправить, обновил MySQL наконец-то, раз 5 переустановил Эгею из бэкапов — косячил в скрипте, некоторые UTF-8 символы криво переносились.

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

Какие выводы? Выводов нет. Надо только нормально все автоматизировать или хотя бы записывать, а не вспоминать что там было 3 года назад, и за правами сразу следить.

Будни ИП — отчетность в Росстат и ЭЦП

Если вы попали на эту страницу из поиска с мыслью «я ничего не понимаю, слишком сложно» или «все работает неправильно», то спешу вас успокоить — все проще и быстрее, чем кажется.

Как сейчас оформить ЭЦП для ИП

  1. Покупаем токен для ЭЦП — в любом городе есть конторы, которые их продают, только уточните, что для налоговой и через какой софт ими пользоваться;
  2. Покупаем лицензию софта — в моем случае КриптоПРО;
  3. Через Госуслуги записываемся в налоговую на выдачу ЭЦП;
  4. Приходим, отдаем токен, расписываемся, получаем ЭЦП, уходим;
  5. На компьютер ставим софт для работы с подписью, корневой сертификат налоговой и импортируем свою ЭЦП.

Как сдать отчет в Росстат

  1. Если вам пришло письмо на почту, значит вы есть в системе сбора отчетности;
  2. Если не получается войти, восстановить пароль;
  3. Входить по паре ОКПО и пароль.

Вообще, конечно, не факт, что вы есть в системе, но письмо же не просто так пришло, в ином случае придется идти в локальный Росстат.

В какой-то момент на одной из почт во входящих я видел письмо о необходимости передачи отчетности в Росстат. Сказано — значит надо делать, решил я, и полный уверенности пошел на Госуслуги, чтобы передать отчетность.

Внезапно нашел заметочки и обрывки твитов об уникальном приключении, которое мне предстояло месяц назад и которое, скорее всего, предстоит другим ИП.

Оказалось, через Госуслуги отчетность передать нельзя, хотя год назад я вроде бы через них и передавал. Пошел в веб-кабинет Росстата, но зайти туда не смог.

Почему не смог зайти? Потому что непонятно, какой пароль. А зарегистрироваться нельзя — ведь я зарегистрирован, кажется, регистрация с Госуслуг подтянулась, но пароль не подошел.

При восстановлении пароля на почту ничего не пришло, на форуме куча тем, относящихся к ситуации. Ответ простой — надо обратиться в местный Росстат. В других же темах люди пишут, что местный Росстат посылает к поддержке веб-кабинета. Круг замыкается. Всякие темы типа «FAQ как пользоваться кабинетом» тоже полнились жалобами людей, у которых ничего не работало.

Мне же поддержка сказала, что в карточке моего ИП нет почты, но профиль почему-то был, почта оказалась зарегистрирована и ссылка на восстановление пароля туда все-таки дошла. Через пару часов.

Обрадовавшись, я кликнул по ссылке, но она оказалась просрочена.

«ШТОШ!» — подумал я и, вспомнив, как я сам косячил с асинхронной отправкой писем, сделал еще несколько реквестов на восстановление пароля в надежде, что хоть одна из ссылок еще будет живой. Так и оказалось, через час я смог перейти к экрану установки нового пароля.

Другое дело, что он не установился. Просто ошибку отдало. Следующая попытка оказалось удачной, пароль успешно поменялся, но войти по почте я опять не смог. Недолго думая, я вбил не почту, а номер ИП в Росстате и пароль и успешно вошел.

Не забываем, что прибыль надо из валюты переводить в рубли по курсу ЦБ

Быстренько накидал отчетик и нажал «отправить», в этот момент я узнал, что нужна ЭЦП.

Пошел гуглить, как ее сделать. Все лендосы и куча сервисов, что я видел, на деле оказались неактуальными. Я заплатил одному из сервисов деньги за то, что они сказали мне «сходите в налоговую, а еще вот ваш ключ КриптоПРО». Спасибо, конечно, но я и прочитать это мог я (но не прочитал).

Хотя бы мне скинули адреса центров, где я мог токен купить. Забавно, что они все оказались закрыты, но да ладно, токен я по итогу купил у небольшой местной конторки.

Как оказалось, с ЭЦП для ИП с начала 2022 года все проще: покупаем токен, записываемся в налоговую на выдачу ЭЦП.

В моей налоговой даже был вендинговый автомат с токенами, жаль, узнал я об этом по факту.

Приходим с токеном к назначенному времени, на нее запишут ЭЦП. Дома качаем КриптоПРО, ставим корневой сертификат с сайта налоговой, вставляем токен, импортируем подпись — вы великолепны. Можно подписывать отчеты.

К слову, КриптоПРО очень сильно поменялось в положительную сторону с точки зрения использования на маке за последние 5 лет (да, последний раз я юзал его в 2017). Тогда я день сидел в терминале, а сейчас все завелось в виде «далее-далее-готово».

Таким образом, я всего за 3 дня прошел стадии от «все не работает, какой-то бред» до «все работает вполне ок, надо только разобраться».

Начал профессионально диджеить

Знаете, есть вот это мнение, что ты начинаешь профессионально чем-то заниматься тогда, когда тебе за это занятие начинают платить.

Таким образом я на прошедшей праздничной неделе стал профессионально заниматься диджеингом, так как отыграл сет в баре, и мне за это заплатили.

«Кто ты без своего айти? — Алкоголик, тысячеонер, диджей!»

Ранее Ctrl + ↓