Фильтр публикаций


Если вы всё еще почему-то пользуетесь iTerm2 - обновляйтесь прямо сейчас. Хотя дыра там такая, что как говорит один русскоязычный подкастер "вон из профессии". Поэтому предлагаю обновляться сразу до kitty, wezterm или ghostty.

6.1k 2 147 53 88

Мы почему-то про это не говорили, но лучший эмулятор андроида BlueStack наконец-то выпустили версию для Apple Silicon Mac. Выпустили давно, но потестировал я только сегодня и это идеальный способ запускать андроидные приложения на маке https://www.bluestacks.com/mac

8.6k 1 100 18 67

Fish Shell официально зарелизился с переездом на Rust. Поздравляю всех причастных (в перрвую очередь меня). Поучительную историю от автора читать по ссылке, там прямо многобукв https://fishshell.com/blog/rustport


Очень красивый бюджет трекер в терминале. @umputun им пользоваться не сможет, т.к. трекер на питоне, но просто оцените как красиво и функционально это все выглядит! https://github.com/EnhancedJax/Bagels

11k 1 161 78 175

я не помню, когда точно появилась в errgroup поддержка лимитов (смотри SetLimit и TryGo), но я точно этот момент упустил. Много лет использовал свой собственный враппер до этого, который добавлял туда семафор и все прочее, необходимое для ограничения конкурентности.

Если вы тоже в танке, то теперь это все можно https://medium.com/@yardenlaif/go-sync-or-go-home-errgroup-f91a0ee72d3f

Задание ему лимита гарантирует, что не больше n горутин будут запущены одновременно, когда мы вызываем eg.Go. У этого есть ожидаемый, с одной стороны, но неконцептуальный с другой, эффект, когда вызов этой Go функции может блокироваться. Т.е. понятно почему, но с точки зрения семантики запуска горутин это немного необычно.

На всякий случай, для тех, кто от темы далек - errgroup простой это способ организации выполнения конкурентных задач в Go. По сути, это обертка над каналами, контекстами и горутинами, превращающая эти, относительно низкоуровневые примитивы, в нечто, чем можно пользоваться почти не напрягая извилины мозга.


Вдруг попалось на глаза. Это прекрасно, я считаю и это один из тех моментов, когда фанаты го могут гордо сказать - “да, мы не зря его любим!”

https://danp.net/posts/synctest-experiment/

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

Тестировать такое непросто и прямого способа не было. Кривой был, например вместо time.Now использовать nowFn() и переопределять ее в тестах. Оно условно работало, но выглядело как грязный хак где нормальный код надо странно модифицировать исключительно для удобства тестов. Подобный хак можно и для Sleep навернуть, хотя тут все уже сложнее.

С этим новым synctest время внутри “пузыря” созданного synctest.Run виртуальное и может вести себя нелинейно. Тут надо смотреть на примеры, будет понятнее.


Если вам зачем-то надо рисовать диаграммы сервисов, и вы как и я беситесь от графических редакторов - вот простой способ рисовать их удобно и программно. Минус только один - на питоне :)
https://diagrams.mingrammer.com/

10.4k 0 265 44 126

попалась на глаза эта штука https://github.com/getsops/sops

они это называют “редактором для закодированных файлов” который поддерживает YAML, JSON, ENV, INI и BINARY. Насколько я понимаю, по сути это способ хранения encrypted секретов в конфигурационых файлах, чем-то напоминает мне то, как ansible-vault работает.

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


в блоге go.dev подробно описали про range functions. Для тех, кто не совсем в теме - это свежее добавление (появилось в 1.23) и по сути позволят сделать свой тип/коллекцию “обходимым” посредством стандартного range.

https://go.dev/blog/range-functions

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


У моего любимого редактора Zed запилили альтернативу копайлоту через Claude - Zed AI https://zed.dev/blog/zed-ai


Ежемесячный пост в канал и опять про шрифты: шрифт со встроенной подсветкой синтаксиса.
Правда требуется чтобы был включен OpenFont COLR, но это не так важно особенно если используется в рамках браузера https://blog.glyphdrawing.club/font-with-built-in-syntax-highlighting/


Cloudflare популярна среди гиков, несмотря на страшные истории, о которых мы рассказывали в подкасте. Вот простой скрипт, который реализует простой DDNS (они это называют NoIP Alternative). То есть, для машины с динамическим IP он обновляет DNS-запись на Cloudflare через его API.

Сделать такой скрипт самому, конечно, несложно, но здесь уже есть готовый вариант. Просто заверните его в контейнер и запустите на своем сервере/syno, и все будет готово. Хотя на syno уже есть свой DDNS, но здесь зато можно использовать любой домен.

https://github.com/devrim/cloudflare-noip


неожиданно полезная штука - https://plugins.jetbrains.com/plugin/24753-combine-and-copy-files

этот плагин для продуктов JB (IDEA и все прочие), добавляет простую вещь - возмжность выделить несколько файлов прямо в ide и все сразу добавить в clipboard.

На резонный вопрос “а зачем?”, ответ простой - чтоб потом результат можно было вставить в ChatGTP и прочие одним нажатием. Реально, мелочь, но очень полезная однако.


Я тут нашел прекрасную супер-маленькую штуку - GUI текстовый редактор, который решает только одну задачу, писать коммит-мессиджи. Но выглядит красиво и просто, есть темы, приложение нативное (для мака), рекомендую https://github.com/zorgiepoo/Komet

10k 0 34 7 80

Видео недоступно для предпросмотра
Смотреть в Telegram
Очень удобная консольная утилита, позволяющая использовать разные языковые модели. В этот раз действительно удобно, без сарказма. https://github.com/charmbracelet/mods


а вот вам гугуловая альтернатива для tmux – https://github.com/shell-pool/shpool

строго говоря, это не совсем альтернатива, но скорее только способ создать сессию и потом к ней подключиться. При этом, весь терминал становится этой сессией. Больше всего это похоже на запуск с nohup с возможностью туда вернуться.

Из преимуществ - штука простая и она не добавляет всех красот TUI, но зато никаких проблем с нативным scrollback или copy-paste.

и да, написано на расте 😉


Ежемесячная запись в Daily Geek News - очень любопытная идея, использовать языковые модели внутри lsp-сервера для текстовых редакторов. LSP сейчас поддерживает всё, что касается программирования, так что автоматом вы получаете интеграцию во всё что движется. Проект называется LSP-AI https://github.com/SilasMarvin/lsp-ai/


мелкая полезность для пользователей raycast https://github.com/marekbrze/categorized-raycast-extensions

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


Настали последние дни: гугл уволил (простите, сократил) всю свою команду разработки Python. Понятное дело, что в гугле очень мало кода на питоне (говорят, что примерно 20% кодовой базы, и эта цифра стабильна, не падает но и не растет). И понятное дело, что для того чтобы пользоваться питоном не надо держать core team разработчиков питона на зарплате. Но сигнальчик такой себе, причем не для питона, а для гугла.

https://social.coop/@Yhg1s/112332127058328855


Автор громко называет это "the hidden gem of 1.22”, но на самом деле это довольно мелкая полезность. Я, краем глаза, обратил на этот cmp.Or внимание, когда читал “что нового в 1.22”, но прошел мимо. И да, это про Go, если вдруг вы сами еще не догадались.

А вообще, это весьма полезная мелочь. Он приводит 2 основных использования:

- name := cmp.Or(jwt.Username(), "Almanack”) типа orElse для того, чтобы взять default, если первый (первые) параметры zero для этого типа.
- второе менее очевидно, но тоже весьма полезно - для упрощения цепочек сортировки по нескольким значениям.

https://blog.carlana.net/post/2024/golang-cmp-or-uses-and-history/

UPD: важно иметь ввиду, что эта функция “cannot do short-circuit evaluation”

Показано 20 последних публикаций.