Читать в телеге. Когда-то там были посты не только от меня.
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.
Чтение тредов твиттера
В твитере люди иногда делают длинный тред с фактами (1 факт - 1 твит). Звучит по-уебански, но таки уж люди, они и в инстаграме статьи-лонгриды пишут. Так вот, есть специальный бот, чтобы из треда с сотней твитов сделать обычную статью: https://threadreaderapp.com/. Типа упоминаешь его твитом и он разворачивает тред.
Сравнение веток в Intellij Idea
Intellij Idea в новых версиях умеет сравнивать между собой ветки - причем как по логу коммитов, так и по файлам. Для этого надо в выборе ветки выбрать compare.