#corpix
رفتن به کانال در Telegram
Пишу о своих проектах. - https://corpix.dev - https://twitter.com/iamcorpix
نمایش بیشتر386
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
اطلاعاتی وجود ندارد30 روز
در حال بارگیری داده...
کانالهای مشابه
هیچ دادهای
مشکلی وجود دارد؟ لطفاً صفحه را تازه کنید یا با مدیر پشتیبانی ما تماس بگیرید.
ابر برچسبها
هیچ دادهای
مشکلی وجود دارد؟ لطفاً صفحه را تازه کنید یا با مدیر پشتیبانی ما تماس بگیرید.
اشارات ورودی و خروجی
---
---
---
---
---
---
جذب مشترکین
ژانویه '23
ژانویه '23
+1
در 0 کانالها
دسامبر '22
+1
در 0 کانالها
Get PRO
نوامبر '220
در 0 کانالها
Get PRO
اکتبر '22
+1
در 0 کانالها
Get PRO
سپتامبر '22
+2
در 0 کانالها
Get PRO
اوت '22
+11
در 0 کانالها
Get PRO
ژوئیه '220
در 0 کانالها
Get PRO
ژوئن '22
+1
در 0 کانالها
Get PRO
مه '22
+13
در 0 کانالها
Get PRO
آوریل '220
در 0 کانالها
Get PRO
مارس '220
در 0 کانالها
Get PRO
فوریه '220
در 0 کانالها
Get PRO
ژانویه '220
در 0 کانالها
Get PRO
دسامبر '210
در 0 کانالها
Get PRO
نوامبر '210
در 0 کانالها
Get PRO
اکتبر '210
در 0 کانالها
Get PRO
سپتامبر '210
در 0 کانالها
Get PRO
اوت '210
در 0 کانالها
Get PRO
ژوئیه '210
در 0 کانالها
Get PRO
ژوئن '21
+2
در 0 کانالها
Get PRO
مه '21
+1
در 0 کانالها
Get PRO
آوریل '21
+1
در 0 کانالها
Get PRO
مارس '21
+2
در 0 کانالها
Get PRO
فوریه '210
در 0 کانالها
Get PRO
ژانویه '21
+1
در 0 کانالها
Get PRO
دسامبر '20
+458
در 0 کانالها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 12 ژانویه | +1 | |||
| 11 ژانویه | 0 | |||
| 10 ژانویه | 0 | |||
| 09 ژانویه | 0 | |||
| 08 ژانویه | 0 | |||
| 07 ژانویه | 0 | |||
| 06 ژانویه | 0 | |||
| 05 ژانویه | 0 | |||
| 04 ژانویه | 0 | |||
| 03 ژانویه | 0 | |||
| 02 ژانویه | 0 | |||
| 01 ژانویه | 0 |
پستهای کانال
Личным проектам пока уделяю меньше времени, подался в цифровое кочевничество на неопределенный срок. Хотя, есть у меня кое-чего интересное про метрики и ClickHouse, скоро выложу :)
Ищу контракт на удалёнку.
Умею в Go, Linux, люблю делать инструменты.
CV https://corpix.dev/about.html
| 2 | За время затишья я пофиксил множество неприятных багов в Terraform провайдере для NixOS.
Что позволило мне наконец-то закончить пост в бложик, в котором постарался разложить по полочкам все доступные настройки и их смысл:
https://corpix.dev/2022/08/terraforming-nixos-hosts.html
Terraform SDK очень переусложненная и хрупкая вещь. Например в виду ограниченной модели не получилось сделать слияние опций, указанных на уровне провайдера и ресурса (deep merge).
Причины две:
- невозможно отличить дефолтное значение опции от указанного пользователем
- баги при вычислении diff'а между заданными пользователем и сохраненными в Terraform state вложенными структурами
Проблемам годы. Но даже не смотря на это кажется получилось неплохо. | 2 229 |
| 3 | Упаковал Tarantool под NixOS и поставил эксперимент с поддержкой Fennel для написания кода под этот рантайм.
Деривация + сервис-модуль для NixOS доступны по ссылке.
Fennel интересен тем что это по сути минималистичный диалект lisp'а, компилирующийся в Lua, доступный соответственно везде где есть Lua.
Еще примечательно что его можно собрать в бинарник засчет luajit (правда по настоящему статический бинарь у меня получить пока не вышло). Трэд про эти эксперименты у меня в твиттере.
#nix #fennel #tarantool | 552 |
| 4 | Набросал минималистичное окружение для запуска SBCL (Common Lisp) с Quicklisp, Slynk и вендорингом из коробки.
https://github.com/corpix/xcl
Это окружение можно будет отвязать от SBCL в будущем, добавив параметров и выделив в отдельный flake (способ реиспользования кода в Nix сообществе). Но потом :) | 491 |
| 5 | Вкатываюсь тут еще в ведение заметок с использованием Emacs.
Друг посоветовал zetteldeft, который умеет строить базу знаний по тэгам & ссылкам и искать по созданной базе.
Каждая заметка создается в отдельном файле внутри директории с плоской структурой.
В моем случае все заметки лежат в отдельном git репозитории.
Пока не могу сказать что распробовал, но выглядит интересно. С таким подходом можно сделать платформу для публикации заметок & статей, быть может это будет более простой заменой для Frog, которым я сейчас пользуюсь для ведения https://corpix.dev
Параллельно с этим понадобилось иметь доступ репозиторию с заметками из всех инстансов Emacs, которых у меня может быть запущено несколько (по 1 на каждый проект).
И т.к. я использую для разработки песочницы (из которых есть весьма ограниченный доступ к файловой системе) потребовалось поддержать несколько конфигураций для инструмента, который эти песочницы создает.
#emacs #zettelkasten #nix | 207 |
| 6 | Про терраформ провайдер готовлю большой пост (чтобы заявить об инструменте в сообществе и рассказать о замысле). Но он задерживается, нужно инфраструктурку настроить (с).
Поэтому я сейчас пробую Agola CI. Первые впечатления весьма приятные, этот сервис удобно кастомизировать. Код написан на Go и на мой вкус структура всего проекта проста, а мне как раз нужны генерируемые из кода пайплайны (я ненавижу писать YAML) и собираюсь добавить поддержку Nix (в качестве источника для конфигурации), скорее всего это не составит большого труда, парсинг конфигурации очень простой.
А еще он интегрируется с Gitea, которую я также использую в своей инфраструктуре.
Оба сервиса я уже развернул и написал для них соответствующую конфигурацию.
AgolaCI понадобилось "опакетить" и сделать к ней модуль для конфигурирования, ими я с радостью поделюсь.
Но для этого всего нужна авторизация. У меня есть (собственная) реализация сервиса для решения таких задач. Что-то типа oauth2-proxy на стероидах, в котором я экспериментирую с источниками данных о пользователях (от oauth2 & OIDC до клиентских сертификатов).
Я собираюсь выложить его в опенсорс и рефакторю прямо сейчас.
В процессе я избавляюсь от гошного фреймворка echo (для моих потребностей его гибкости мало) и унифицирую код, создавая свой собственный SDK.
Пока я делаю это исключительно для своих собственных проектов, чтобы избавить их от копипаста, который (порой в безобразных количествах) кочует от проекта к проекту.
Работы навалом 😱 | 202 |
| 7 | Выпустил релиз 0.0.8 с поддержкой провайдеров секретов.
На данный момент поддерживаются:
- gopass
- command
- filesystem (используется по умолчанию)
Пример использования можно подсмотреть в тестах.
Помимо этого сделал вывод stderr от nix в логи (включаются указанием переменной окружения TF_LOG=INFO). Это нужно чтобы смотреть за прогрессом. Пока считаю эту фичу сомнительной, буду искать решение получше (чертов Terraform задизайнен так что на экран просто так ничего не напечатаешь).
#nixos #terraform | 200 |
| 8 | Некоторое время у меня был аддон для NixOS в виде модуля, предоставляющего более высокоуровневый интерфейс к фаерволу.
Я использовал его на протяжении нескольких лет чтобы "пробивать дырки" для своих хостов.
Сегодня в процессе рефакторинга инфраструктуры я сильно сократил и переработал этот модуль, так что теперь его даже не стыдно показать.
А на скриншотах показаны входные данные и правила, которые генерируются в результате.
#nixos #iptables | 294 |
| 9 | Релиз terraform провайдера пока отложил (еще пару дней), хочу попользоваться им какое-то время, чтобы ничего не поломать.
Одновременно с этим хочу обновить свою инфраструктуру.
У меня есть два сервера, как на фото. Они старые (лет 10), повидавшие жизнь.
Хочу сделать NAS в корпусах открытого типа и разобраться в FreeCAD. Показываю скриншоты процесса (модели оборудования не мои, нашел на grabcad).
Вот кстати крутой тур, который "ставит мозги на место". | 173 |
| 10 | Тестирую поддержку конфигурируемых пользователем провайдеров для предоставления секретов.
Пока поддержал:
- filesystem (читает секреты из указанных файлов)
- command (читает секреты из stdout сконфигурированной команды)
- gopass (читает секректы из инструмента gopass)
На этом пока остановлюсь, этого достаточно для релиза и позволит людям интегрироваться с практически любым инструментом для хранения секретов.
Релиз завтра (нужно еще сгладить шероховатости и попользоваться самому).
Референсы:
- Реализация
- Документация | 297 |
| 11 | Сделал начальную поддержку секретов.
Пока без шифрования (слижком много всего хочется поддержать, так что ограничимся минимумом в этой версии).
Внутри реализовано через упаковку указанных секретов в tar архив (с указанием owner+group+permissions), передачу по SSH и распаковку в корневой каталог.
Референсы:
- Реализация
- Документация
#nixos #terraform | 249 |
| 12 | Случился небольшой "ребрендинг". В последнее время это весьма не упорядоченный рабочий журнал, так что я собираюсь немного изменить формат. | 272 |
| 13 | Опубликовал первую версию Terraform провайдера для NixOS.
https://registry.terraform.io/providers/corpix/nixos/0.0.2
Некоторые идеи (такие как поддержка SSH bastion'ов) взяты из модуля от Tweag, но я считаю что мой провайдер лучше, как минимум потому что он написан на нативном для Terraform языке - Go, а не на ограниченном в своих возможностях HCL.
Документации не так много, но есть:
1) Деплой в vultr
2) Минимальные интеграционные тесты
3) Референс на сайте реестра Terraform (силами Hashicorp заблокирован для РФ) | 2 877 |
| 14 | Сегодня получился короткий стрим про возню вокруг libuv. Подключил обработку входящих соединений с вызовом коллбэка при наличии данных для чтения в сокете.
Это начальная реализация. На днях обработаю дисконнекты и создание канала, в который пользователю можно будет что-нибудь написать.
Сервер немного причесал за кадром, отделив основную логику диспетчеризации, и упростив себе управление ресурсами за счет создания контекстов (обычные struct с полями и функциями для инициализации и финализации(free)). Это позволило мне добавить libuv как бы отдельным слоем, почти не меняя кода. | 457 |
| 15 | Первая попытка стримить в телеграм.
Эта штука не анонсировалась здесь, но я пытаюсь сделать кастомный ssh сервер с использованием libssh.
Сначала на C чтобы понять как взаимодействовать с libssh на низком уровне. Позже получившийся код будет переписан на CommonLisp+CFFI в неблокирующем стиле. | 576 |
| 16 | Заметка на тему совместного редактирования текста/кода в Emacs с использованием пакета crdt.el
https://corpix.dev/2022/02/collaborative-editing-with-emacs.html
На мой вкус работает неплохо, но есть шероховатости. Например SLY (читай: Lisp IDE) REPL получилось пошарить, но хост коллаборативной сессии писать там ничего не может. | 723 |
| 17 | Немного удивляюсь что пишу такое, но в виду огромного количества облачных сервисов мы начали забывать как настраивать необходимые сервисы без них, а инструкции все чаще выглядят магическими и все больше напоминают знаменитую картинку "как нарисовать сову".
Например, как выпустить сертификат через Let's Encrypt без облачного DNS?
Мы на работе для инфраструктурного кластера используем Knot DNS. И было немного удивительно что никто еще не написал статью, описывающую концептуально: 1) как сделать динамический DNS на его основе и 2) выпускать сертификаты с DNS-01 аутентификацией используя knsupdate.
Исправляю ситуацию https://corpix.dev/2022/02/using-certbot-with-knot-dns-knsupdate.html | 720 |
| 18 | Написал простенький docker registry на go.
В основном сделано для упрощения распространения контейнеров на NixOS системы, где конфигурация системы и деплоймент контейнеров производятся через nix. Но я заложил возможность добавить дополнительные provider'ы данных в будущем.
Как этот реестр использовать:
- сохраняем (через docker save) один или несколько контейнеров в tar.gz
- распаковываем этот tar.gz в отдельную директорию (например ./example)
- добавляем контейнер в конфигурацию local provider как указано в readme (config.yml) в виде "example:latest": "./example"
- запускаем unregistry с обновленной на предыдущем шаге конфигурацией
- можем сделать docker pull 127.0.0.1:5000/example:latest
Репозиторий https://github.com/corpix/unregistry
Хайлайты по реализации:
- regexp'ы для матчинга endpoint'ов
- обработка запросов
- реализация обработчиков local provider
- preload и индексирование данных о слоях | 623 |
| 19 | Экспериментирую с DSL для описания SQL в виде s-expressions.
На картинке пример SELECT, который поддерживает только указание колонок и таблицы.
В процессе метания между диалектами схемы и common lisp переписывал свой клиент к clickhouse по нескольку раз и мне это немного надоело, хочу попробовать упростить себе жизнь, сделав несколько макросов, которые позволят расширять DSL без изменения кода самой библиотеки.
На подобный подход вдохновило изучение исходников https://common-lisp.net/project/iterate/
Полный листинг: https://github.com/corpix/clx/blob/27b41762ea82377452f14e5fc60fa6a674b8f7ad/src/sql.lisp#L9
Кстати, у меня есть twitter, где я пишу почаще https://twitter.com/iamcorpix | 500 |
| 20 | Сделал генератор парсеров, правила для которого описываются в стиле вдохновленном BNF (примеры в последней ссылке, там тесты)
https://github.com/corpix/gerbilstd/blob/109484967695565607da43b1b2032810a97cbd1b/encoding/bnf.ss
https://github.com/corpix/gerbilstd/blob/109484967695565607da43b1b2032810a97cbd1b/encoding/bnf-test.ss
Внутри устроено все очень тупо: макрос, который преобразует правила в функции, через которые пропускается объект состояния парсера, а он при наличии совпадения уже мутируется (увеличивается счетчик позиции, поглощается сматченный кусок буфера).
Реализовано под https://cons.io (называется Gerbil Scheme, это мета-диалект на Gambit-C). Перебрался на него с Racket пока искал более быструю реализацию Scheme. | 323 |
