Читать в телеге. Когда-то там были посты не только от меня.
Push-уведомления в браузере
В новом стандарте веба теперь тоже есть push-уведомления. Как на телефонах - сайт даже не загружен, а браузер уведомление кидает. https://www.w3.org/TR/push-api/ https://support.mozilla.org/en-US/kb/push-notifications-firefox
Что дальше? Магазин сайтов?:)
Кто пожрал все потоки в linux?
ps axo nlwp,pid,cmd | sort -n
GitHub Pages
Многие знают, что на гитхабе можно хостить статические сайты. Однако вряд ли всем известно, что там из коробки идет генератор статического сайта — Jekyll. Идея довольно прикольная: выбрал тему и/или задал несколько шаблонов, а потом клепаешь посты в markdown, не парясь о разметке и всем таком. Запушил посты в GitHub — и они уже опубликованы.
Однако есть нюансы. Как только надо что-то сделать что-то нетривиальное, приходится “преодолевать”. Например, я столкнулся со следующими проблемами:
- На GitHub Pages белый список плагинов, а некоторые встроенные - не очень (например, пагинация работает только для одного раздела). Это можно решить, генерируя сайт на своем компе, но тогда теряется все удобство использования связки jekyll и GitHub.
- В шаблонизаторе Liquid нет логического отрицания. Там есть конечно конструкция
unless
, дополняющаяif
, но какое-нибудь(a && !b) || (!a && b)
там фиг выразишь. При этомand
иor
есть. - Иногда парсер markdown ломается, особенно если его перемешать с html-тегами. И где-то для этого используются регулярки, судя по исключениям, которые я ловил.
И еще была пара мелочей. Несмотря на это, копаться в этом было занимательно, у меня даже что-то получилось. Идея мне нравится, это правильный web в моем понимании, когда для статической инфы у тебя статический сайт, а не 10 Гб node-js модулей и не какое-нибудь адище. И клево, что контент почти полностью отделен от представления (этим мне еще Latex нравился). Но с точки зрения кода из-за ограничений GitHub Pages и jekyll получилось конечно классическое.
Space от JetBrains
JetBrains в декабре анонсировала новый продукт - Space, который объединяет в себе очень многое: ведение задач, хостинг репозиториев, календари, встречи, отпуска и т.д. Я смотрел демо на ютубе и общался с тимлидом разработки. Идея сама по себе интересная, но реализация на мой взгляд странная. Это огромный монолит, который пишется с нуля. Т.е. это не интеграция продуктов JetBrains (youtrack, teamcity, upsource и т.п.), и не развитие их продукта Hub, а новый продукт. Соответственно, все есть, но в очень куцом варианте. Заменить какую-то часть на свою - фигушки. С API и интеграцией с другими вещами тоже мутно. Миграций с жиры/ютрека/гитлаба не написано. Ориентация на облачное решение, чтобы локально развертывать - не в приоритете. Лид говорил, что им много людей писали восхищенно. А на то, что на каком-нибудь хабре народ довольно резко критиковал, толком ничего не ответил. В общем, продукт довольно спорный.
Как говорят эксперты,
Список открытых файлов в системе
Как узнать, какой процесс занял порт на локалхосте, чтобы его убить?
Сколько файлов открыл и использует пользователь?
Для ответа на эти вопросы можно использовать утилиту lsof
, которая выводит список открытых файлов:
lsof -w -n -i tcp:8080
lsof -u user | wc -l
Отправка http-запросов в Intellij Idea
В Ultimate версии intellij есть возможность делать http-запросы прямо из scratch-файла. С шаблонированием и всем таким. Штука вроде как прикольная, но покупать ради этого Ultimate - имхо, оверкилл. Хотя если он и так уже есть - почему бы и нет? Подробнее: https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html.
А те, кто сидит на community, могут использовать старый добрый curl
или какой-нибудь плагин к браузеру - тысячи их.
Обработка json в командной строке
Кто-то (например, эластик) выплюнул в консоль километровый json и надо с ним что-то делать? jq
придет на помощь!
Это утилита командной строки для работы с json - фильтрация, извлечение данных и т.п. Порог вхождения высокий, но стоит того, если частый кейс.
Простейший вариант использования - красиво отформатировать json, который выплевывает curl
. Для этого надо просто добавить -s
в curl
, чтобы не писал проценты скачивания, и добавить | jq
.
Более сложный кейс - изменение данных. Например, я использовал jq
, чтобы среди тонны индексов elasticsearch найти те, у которых неправильный индекс. Выглядело это примерно так:
cat 2.json | jq -r 'keys[] as $k | "\($k) -> \(.[$k] | .mappings.post.properties."availability-feed".properties.attributes.properties."owner-id")"' | grep long
Дока по jq: https://stedolan.github.io/jq/tutorial/.
Боли docker
Докер - это не всегда клево. Когда-то в далеком 2015, мы в ОСУЗ тыкали его палкой… Но получилось не очень. С тех пор много воды утекло, и многие все в kubernetes держат, но боли от контейнеров все равно актуальны: https://habr.com/ru/post/467607/.
Сброс кэша памяти в линуксе
Если на линукс-серваке возникает вопрос - “кто же пожрал всю память?”, а в top
все скромно жрут по полмегабайта, то виновник - кэш. Его можно сбросить командой sync; echo 1 > /proc/sys/vm/drop_caches
Подробнее - тут.
Копирование пустой строки в Intellij Idea
Иногда довольно бесит, когда промазал мимо кнопки и скопировал пустую строку. Чтобы отключить это поведение (копирование пустой строки) в Intellij, можно залезть к ней в реестр настроек. Подробнее на stackoverflow.