en
Feedback
Daily Geek News

Daily Geek News

Open in Telegram

Гиковские новости от авторов radio-t.com

Show more
5 630
Subscribers
+124 hours
+47 days
+730 days
Posts Archive
из весьма нетипично для этого канала, но вполне подходящего в категорию “для гиков” https://miniflux.app это совершенно прелестный rss self-hosted сервис и он, на самом деле, не такой минималистичный как кажется. Работает достаточно шустро, поднимается из композа без особых затей. я на него вышел случайно, когда tt-rss что я до этого использовал вдруг сломался на ровном месте. Этот я поначалу пропустил как “выглядит как-то назад в 90е”, но потом распробовал и теперь всем рекомендую

Староверы еще помнят что такое ControlPlane. Для поколения зи - это была такая штука, что умеет понимать в каком физическом контексте находится ваш mac и запускает то, что вам надо. Ну, например, при подключении к определенной wifi сети запускать vpn, при покидании этой сети - отключать. К сожалению, оно давно не поддерживается и перестало работать с современными версиями MacOS. В качестве замены я начал использовать вот эту приблуду https://www.gorgeousity.com/trypa-main она, конечно, попроще будет, и возможностей поменьше, но все что мне надо покрывает. Работает стабильно и главная килер фича - запускать маковые шорткаты по изменению контекста. Там у них даже есть форум, где можно подсмотреть разные способы использования https://www.gorgeousity.com/trypa-forum?feedType=all-posts

А вот эта штука лично у меня, вызывает ряд вопросов. Похоже, она довольно популярна в мире Go, и на вопрос “а как мне к ошибкам приложить стек трейс” часто отвечают - просто используй https://github.com/rotisserie/eris Лично мне идея добавлять (упаковывать) трейс в ошибку кажется сомнительной по двум причинам - во первых брать трейс на ошибку это дорого, и в большинстве случаев это не надо. Проблема в том, что заранее непонятно какие надо так врапить а какие не надо. Во вторых, концептуально стек вызова который довел до ошибки, это, на мой взгляд, не про ошибку, но про логинг ошибок. Для себя я это решаю иначе, и моя микро-библиотека логинга https://github.com/go-pkgz/lgr показывает стек трейсы на те ошибки, уровень которых выбран пользователем. Т.е. раскручивание стека происходит в момент логирования, а не в момент самой ошибки. Несомненно, мой подход более ограничен, и ему, например, не раскрутить стек ошибки из горутины, но, с другой сторону, ловить ошибки из горутин это экзотика, и если удастся получить стек на тот момент когда происходит некий err := gr.Wait() то это достаточно близко, на мой вкус.

интересная приблуда https://github.com/sveinbjornt/Sloth по сути это UI для lsof который пытается превратить его в нечто, что любители мышки могут использовать не читая man Но на практике довольно удобно, открывает простые в использовании возможности исследований, типа посмотреть какие файлы и кем открыты, потом глянуть на сокеты и найти что именно слушает на том или ином порту, потом глянуть на pipes и директории … все это, конечно можно делать ключиками и грепами с авками поверх lsof, но если то, что вы исследуете требует разнообразных проверок, то возможно покликать в UI будет проще и быстрее

я уже писал об этом в чатике радиота, но новость прямо просится сюда https://blog.jetbrains.com/idea/2022/12/http-client-cli-run-requests-and-tests-on-ci/ если в двух словах, то это CLI (плюс докер контейнер) чтоб запускать *.http/*.rest файлы. За исключением того, что для запуска “бинарника” надо JVM все остальное там по уму - можно передать как публичный так и приватные файлы окружения, можно переопределить (или просто задать) конкретные значение того, что в переменнных. И еще оно генерит JUnit XML, т.е. торетирчески это можно красиво привязать к любому CI. Конечно, из коробки оно уже работает с TC. я попробовал и оно таки работает. Только имейте ввиду - в отличии от запуска из IDEA эта штука гораздо более требовательна к аккуратности и корректности ваших json в env. У меня там была лишнаяя запятая (последний элемент в массиве, ну как обычно) и IDEA это разрулила. Тут падает на пугающий stacktrace не 50 строк, но если вы java пользовали, то можно догадаться что пошло не так.

Если вы как и я слушаете музыку в Spotify, но вас бесит десктопный клиент, вот идеальное решение: Spotifyd. Это висящий в фоне легковесный демон который играет музыку и позволяет управлять собой через spotify connect, те с мобильного или десктопного клиента. Включил плейлист, закрыл плейер и слушай в свое удовольствие https://github.com/Spotifyd/spotifyd

Есть у меня такая давняя “любовь на расстоянии”, язык на котором я когда-то немного писал, потом мы расстались, и с тех пор я слежу за его судьбой только по случайным новостям. OCaml и его младший брат F# (и незаконный отпрыск ReasonML) это, пожалуй, те языки за пределами Lisp семьи, которые вызывают у меня хоть какой-то всплеск интереса. До сегодняшнего дня OCaml был, конечно, не “настоящим” языком, рантайм не поддерживал многопоточность нормально. А сегодня вышел OCaml 5.0 и теперь он как большие, умеет и параллельность, и конкурентность, и async-и c await-ами. Надо будет дать ему еще один шанс, что-ли. https://ocaml.org/news/ocaml-5.0

Отладка github actions это еще та головная боль. Чтоб не засорять нормальные бранчи люди пытаются это все проверять на драфт PR но это, зачастую не тоже самое, т.к. на разные бранчи могут быть фильтры в самих actions. Вот и приходится пушить бесконечные “попытка починить actions” в репо. тут чувак придумал, как забраться в инстанс который бежит с вашими actions, прямо по ssh, что само по себе уже полезно. Но кроме того, если запустить workflow в debug режиме то там можно запускать его в ручную, без всяких новых пушей. https://github.com/mxschmitt/action-tmate

Есть такой проект, tree-sitter, он появился внутри Atom, но не умер вместе с ним. Задача tree-sitter’а - хорошо парсить исходники на большом количестве языков программирования и представлять их в виде структур данных. Очень удобно потом это всё подсвечивать, манипулировать с кодом и тп. Довольно давно его встроили в neovim, а вот на прошлой неделе его поддержку вмержили в основную ветку emacs. Получается Атом умер, но дело его живет!

Если вы бывали в ситуации “трафик в телефоне закончился, но из-за тарифа оператора работают мессенжеры” - для вас есть чудесное решение, тунели через whatsapp или через телеграм. Предупреждаю сразу - если переборищить могут забанить в мессенжере.

интересная штука, и на вид даже работает https://kellyjonbrazil.github.io/jc/ она умеет понимать текстовый вывод многих (реально многих) cli команд и преобразует результат в json или yaml. Применение такого понятное - вместо того чтоб парсить руками вывод команды послать его на jc и, по необходимости, послать на jq пример на сайте именно такого рода ``` $ dig example.com | jc --dig | jq -r '.[].answer[].data' 93.184.216.34 ```

Вполне рабочая реализация “как запускать что-то для чего обычно используют Makefile и/или набор sh скриптов”. Идея простая - в yaml прописываем “tasks”, в каждом из которых есть набор команд, и все это потом можно запустить в стиле “task foo bar” Там есть небольшие, но понятные в практическом плане навороты, типа включения других task файлов, вызов одних task из других, передача окружения и, конечно, поддержка гошных темплейтов, чтоб весь мир знал, что оно написано не на расте 😉 И да, там даже есть defer Вообще штука весьма продуманная, видно что писалась для себя. Например, можно давать зависимости для задач, в стиле CI, можно пропускать запуск по внешним условиям. https://taskfile.dev/usage/ upd: обнаружил что оно у нас уже было. Но повторение, мать. И да, я ее начал использовать немного, только сейчас

Чтобы возрадить живость канала: очень рекомендую посмотреть на генератор статических сайтов Zola. Это довольно простой, но очень, просто очень быстрый генератор, главный недостаток которого - он написан на rust (кстати, обратите внимание, на сайте об этом ни слова!) https://www.getzola.org/

полезная библиотека (для go), что позволяет реализовать health checks - https://github.com/alexliesenfeld/health Сделана как http.Handler, т.е. создаем это дело один раз и добавляем в список своих routes. При кажущейся простоте задачи, там на деле не все так просто, и эта штука позволяет разные тонкости, типа кеширования, асинхронных проверок, таймаутов и даже перехвата изменения состояния “ок/упал” Как на мой вкус, тaк в 95% случаев эти тонкости не нужны, потому когда мне подобное понадобилось, я добавил совсем простой middleware https://github.com/go-pkgz/rest/blob/master/middleware.go#L62 где только и есть, что вызов чекеров и отдача статуса

Удивительного качества опенсорсные и селфхостед карты для вашего проекта, подробности можно почитать тут, но для начала просто зацените сами карты и скорость, с которой они рендерятся. Да, конечно всё это на базе OSM https://maps.earth/

Хотя статья из серии “вредные советы” но что-то полезное в ней найти можно. Тут список вопросов, что можно (нужно?) задать своему потенциальному работодателю на интервью. Там, естественно, есть идиотские, но политкорректные вопросы типа "What percentage of the company is non-male/non-white?” но кое-что там найти таки можно. Но умоляю, не пытайтесь задавать их все, этим вы сведете потенциального работодателя с ума. Выберите то, что вам действительно важно. https://github.com/Twipped/InterviewThis

Начиная с хрома версии 106 в браузере будет выключен HTTP/2 server push, который продавали как важную причину для перехода на новую версию HTTP. При этом, конечно, ни браузеры ни серверы толком не поддерживали нормально эту идею, мы с Умпутуном ещё тогда говорили, это очевидный плохой дизайн. Клиент должен регулировать список того, что он хочет или не хочет предзагружать https://developer.chrome.com/blog/removing-push/

из мелкого, но полезного. Оказывается, с определенного момента в композе появилась поддержка профилей. Т.е. возможность объединить несколько контейнеров (сервисов в терминологии композа) в логические группы и запускать только эти контейнеры при помощи ключика —profile https://docs.docker.com/compose/profiles/

Такого у нас еще небыло в канале. Рекомендую всем посмотреть лекцию Andrej Karpathy о том, как на самом деле устроены нейронные сети и бэкпропогейшн в них, как они учатся и тп. Требуется базовое знание питона и готовность иногда останавливаться, чтобы понять кусочки школьной математики https://www.youtube.com/watch?v=VMj-3S1tku0

довольно популярная, в узких кругах, штука для вебхуков. Она позволяет создать мелкий сервер, который по вашим запросам запускает то, что сконфигурировали. Написано не-на-расте, а наооборот на go 😉 https://github.com/adnanh/webhook На мой вкус, штука несколько переусложнена для 90% случаев использования и потому у меня есть подобная, но совсем простая и прямая https://updater.umputun.dev