Искры Интеллекта
57 subscribers
45 photos
5 videos
1 file
97 links
Как зайчатки разума, только реже 🫠

Зачастую здесь лежит эта ваша цифровизация. Временами - встречается иное.

Ссылка для друзей: t.me/+TD_zGUTxfBj6YXY8

dimio.org/about
Download Telegram
List split

Долго валялось в закладках на SO - и пригодилось, наконец. Обычно - или уже была "в коробке" Guava с Lists.partition(), или - Apache Commons и его ListUtils.partition().

Деление на подмножества (каплю доработано относительно исходника на SO):
// https://stackoverflow.com/a/30072617
public static <T> Stream<List<T>> listPartition(@NotNull List<T> source, @Positive int length) {
requireNonNull(source, "Source list must not be null");
if (length <= 0) {
throw new IllegalArgumentException("Partitions length must be greater than zero");
}
int size = source.size();
if (size == 0) {
return Stream.empty();
}
if (size <= length) {
return Stream.of(source);
}
int fullChunks = (size - 1) / length;
return IntStream.range(0, fullChunks + 1)
.mapToObj(n -> source.subList(n * length, n == fullChunks ? size : (n + 1) * length));
}


Несколько тестов тут.

#java
@panykey | dimio.org
Друзья, хочу всех вас искренне поздравить с наступающими праздниками! 🥳

Здоровья и счастья, успехов, и всего наилучшего! 🎆
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉1
Забавная история описана на Хабре.

Стоит сказать, что за прошедшую неделю многие из свободных ранее доменов были куплены. И далеко не факт, что приобрели их владельцы библиотек. К примеру, домен ini4j.org куплен 23 января, а домен jdesktop.org зарегистрирован 19 января. Кто и для чего покупает домены, пока непонятно. Это могут быть как владельцы библиотек, так и злоумышленники, которые нацелены на реализацию данной атаки.
——
Таким образом, мы понимаем, что безумно важно правильно указывать порядок репозиториев и конкретные версии, с которыми работает приложение, чтобы избежать «сюрпризов» с репозиторием, из которого будет загружена библиотека.

Если по поводу использования фиксированных версий зависимостей — неожиданностей нет, то вот про порядок определения репозиториев - впервые читаю. "Автоматически" (читай - копипастно) везде стоит первым central. Но это не было осознанным решением 😞

Ну и дополнительный аргумент в пользу применения "корпоративного" BOM для всех проектов.

#java
@panykey | dimio.org
Платон - мне друг?

Почти два месяца в Тиньке! Конечно, не было времени что-то писать :) Резюмируя: - в продуктовой конторе интересно, нравится, процессы нацелены на результат, а не на "работу ради работы". Оперативно решают и общие, и узкие технические вопросы. На всех этапах собеседования был диалог
двух заинтересованных сторон. Пока все нравится!

Из мелких недочетов: здесь тоже в ходу AnyConnect.

В целом - всё приятно. Так что вброшу рефералку на вакансии 🐣
Толков - го в Тиньков
🫡

Upd: тут можно полезного поискать, я для этапа сисдиза с успехом воспользовался: https://github.com/Tinkoff/career/tree/main/interview

@panykey | Искусство реализации идей
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Лучше поздно, но не слишком :)
👇
Forwarded from GlyshAlkash
Открываем настройки демона докера
nano /etc/docker/daemon.json


И добавляем рабочее зеркало, например gcr.io
{
  "registry-mirrors": ["https://mirror.gcr.io"]
}



И рестарт
service docker restart


У вас также может быть заблокирован gcr, если вы подключаетесь по IPv6.

Еще парочка зеркал:
https://docker.mirrors.ustc.edu.cn
https://registry.docker-cn.com
https://cr.yandex/mirror/ (нельзя добавить в daemon.json; не все образы)

Полюбился сообществу, прокси до docker-hub
- https://huecker.io

Также, вы можете реализовать собственный docker-registry proxy на Sonatype Nexus

- https://help.sonatype.com/en/proxy-repository-for-docker.html

Непроверенные, но возможные зеркала
На свой страх и риск

- https://mirror.gcr.io
- https://ghcr.io
- https://mcr.microsoft.com
- https://public.ecr.aws
- https://daocloud.io
- https://registry.docker-cn.com
- https://c.163.com
- https://er-central-1.mirror.aliunc.com
- https://docker.mirrors.ustc.edu.cn

Добавление всех в одну строку
На свой страх, риск и ментальное здоровье

{
"registry-mirrors" : ["https://huecker.io", "https://yandex.cr/mirror/", "https://mirror.gcr.io", "https://ghcr.io", "https://gcr.io", "https://mcr.microsoft.com", "https://public.ecr.aws", "https://daocloud.io", "https://registry.docker-cn.com", "https://c.163.com", "https://eu-central-1.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn"]
}



Второй вариант добавления зеркала:
nano /etc/sysconfig/docker

OPTIONS='--selinux-enabled --log-driver=journald --registry-mirror=<MIRROR>'
Магия финтеха - эта жёлтая пневматическая сосиска проводила Zumba-групповуху 😁 И научила отлично делать ХОБА! 🐈

Пятнично по мотивам минувшего корпоратива :)

#TSummerPartySpb #repose
@panykey | Искусство реализации идей
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
План -- закон!

Выбирал тут планировщик для периодических заданий по обслуживанию приложения.
С Quartz что-то все устали возиться, ленились отдельную схему под его таблички выделять и кончили тем,
что возжелали свежих проблем нового, неизведанного.

И, в том числе:
* Поддержки работы со множеством узлов в кластере;
* Поддержки персистентности заданий;
* Простоты использования;
* Простоты развертывания.

Конечно - open source с подходящей лицензией. И spring-boot-starter в комплекте - для максимального удовольствия.

Первым в гонку влезает Quartz - он здесь ужé и у́же применяться не желает!
Вторым идёт истинно безликий средний JobRunr - откуда-то вынырнул и смылся куда-то.
А против всего недостаточно хорошего у нас, как пелось, есть третий путь:
молодёжный и свежий, только из-под клавиатуры -- db-scheduler!
(Если не заглядывать в git log, а мы и не будем).

Таблички все же любят? Кто нет - можно без любви, она суха и беспристрастна при любом отношении (но ориентацию предпочитает альбомную):
| Критерий               |    Quartz    |   JobRunr    | db-scheduler |
|:-----------------------|:------------:|:------------:|:------------:|
| Cluster-friendly | + | + | + |
| Персистентные задачи | + | + | + |
| История запусков | + | + | +/- |
| Простота использования | +/- | +/- | + |
| Простота развертывания | +/- | + | + |
| Служебных таблиц в БД | 11 (-) | 5 (+/-) | 1 (+) |
| Ретраи | Вручную (-) | Поставка (+) | Поставка (+) |
| Звёзд в GitHub | 6,2k | 2,3k | 1,2k |
| Дата последнего релиза | Окт 2019 (-) | Июл 2024 (+) | Июл 2024 (+) |
| Лицензия | Apache 2.0 | LGPL v3 | Apache 2.0 |


Quartz
По Кварцу понятно - он остановился в развитии (Достиг нирваны? Ждёт тепловой смерти вселенной?).
Делает много табличек - делает больно глазкам (да-да, можно и так исправить, но лень же). В поставке нет ретраев.
Создание заданий смотрится очень энтерпрайзно, если вы в Индии - хватайте Кварц!

JobRunr
У JobRunr есть UI-панелька, Healthcheck из коробки, API-шка для работы с задачами, поддержка NoSQL хранилищ - и совсем нет совести!
Нет и не было... 🧘‍♀️

Хочет много денег за такие пустячки, как: автоматический рестарт собственного служебного сервера при падениях; использование открытой Spring-транзакции в заданиях; интервал опроса задач менее 5 секунд. Всё это решается усердной ручной работой, но - без приятных ощущений.

А ещё у него тяжелые запросы во вьюшке для дашборда и построения метрик. И умирание сервера вместе с liveness пробами при потере коннекта к БД, после чего отстреливается под. И название - из семи символов! И... Ладно, не буду придираться.

db-scheduler
О, от db-scheduler веет ветром перемен! Самим свои существованием он, как будто, подбивает впасть
в грех починки исправного! 😳 Соблазняет, как в истории про змею и яблоко.
Ну и кое-что полезное имеет и умеет тоже: мало (очень) сторонних зависимостей, код понятный и простой,
Healthcheck в поставке, метрики - тоже, заявляет высокую производительность, умеет создавать задания в одном сервисе и выполнять в другом, создает впечатление просты перехода на него.

При этом - из коробки в нём нет истории выполнений задания (есть плагин) и UI-панели (тоже плагин).
И id-шник заданию при запуске надо вручную создавать. Не выглядит особо опасным занятием, если честно.

Что делать?
Простыня выше ⬆️ совершенно точно не является индивидуальной инвестиционной рекомендацией, если только вы не инвестируете в таблицы БД и строчки в редакторе (снова поприветствуем Индию!). Никакой другой рекомендацией
она не является тоже
Личный выбор каждого - TITS or GTFO, а подбор планировщика - не так уж, в сущности, важен 😎

#db #scheduler
@panykey | Искусство реализации идей
Please open Telegram to view this post
VIEW IN TELEGRAM
Увлёкся азартной игрой с государством корпорацией 🤑

Успел выиграть каплю знания — PostgreSQL умеет нативно оперировать множествами, в т.ч. — символов.

И получается очень удобно, когда словарный запас иссяк:
select word
from public.nouns
where
char_length(word) = 5
and string_to_array(word, null) @> '{с,о}'
and not string_to_array(word, null) && '{а,к,ц,и,я}'
and word like '____ь'


Легче писать и проще читать, чем комбинацию привычного like с кучей отдельных сравнений типа
and strpos(word, 'а') = 0
and strpos(word, 'к') = 0
and strpos(word, 'ц') = 0
-- ...
and strpos(word, 'о') > 0


Затем — немного "угадайки" (гостя можно было тоже отфильтровать), попыток на которую остаётся достаточно:
word |
-----+
гость|
осень|
особь|
осыпь|
смоль|


Базу существительных где-то в интернетах стянул давно, импорт был инсертами под MySQL и с каким-то мусором.
Пришлось её чистить, чтобы в PG присунуть. Цепляю в комментарий, если кому понадобится 👇

#sql #db
@panykey | Искусство реализации идей
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Путеводитель по базам данных (Владимир Комаров)

Отличное дополнение к PostgreSQL изнутри — ещё одна годная и бесплатная книга по СУБД на сайте PostgresPro — Путеводитель по базам данных.

Хороший учебник/справочник по базе баз 😜 с примерами на актуальных системах. И, сверх того, ещё и с указанием конкретных вендорских названий для реализаций тех или иных аспектов СУБД.

Есть отличный предметный указатель, с которого можно и начать - по нему хорошо прослеживаются релевантные темы и термины, т.е. можно прям "укрупнённо" быстро охватить некую предметную область.

Нет заныривания в глубины глубин и погружения в детали, не влияющие на практическое использование, но уж по приведённым примерам - будет дано и сравнение, и описание альтернатив.

Книга рассказывает об архитектурных принципах, на которых базируются все современные системы управления базами данных, а также об алгоритмах и структурах данных, которые в них используются. Особое внимание уделено сравнению реализаций одних и тех же подходов в близких по функциональности платформах.


#sql
@panykey
Итоги года - вспомнить всё

Не всё же поквартально подытоживать.

Мои итоги просты и понятны, год показал - чуть лучше, чем "на отлично 💯", я:
▪️ пою, и ещё лучше - когда молчу 😭
▪️ плаваю: вниз, вбок - ок, прямо - не ок 📐
▪️ пляшу 😕 — просто потенциал "дедушки Запорожца" роскошного олдтаймера 🧐 ещё не полностью раскрыт

И пара менее значительных вещей 🤭, речь о которых пойдёт ниже.

Перешёл в ТБанк, где участвую в создании и запуске прикольного продукта практически с нуля. Это забавно - не так давно поймали незапланированное НТ на 2,50К req/s, доблестно залогировав каждый из них! И запарно - даже не было времени в очередной #adventofcode поиграть.

Успел провести пяток интервью, из них одно успешное. И проникся смыслом наличия тех самых "тупых шаблонных вопросов, которые все знают и от которых все страдают". А за их границы и выходить-то почти не приходится - таков печальный итог 🤦🏼‍♂️🤷🏼‍♂️

Ещё здесь узнал, что тру-DBA читают select * — примерно как "селектить ежика" 🤔 — и такой фразы достаточно для успешного прохождения DBA-собеса! (Но это не точно).

А, да - курил лет двадцать, и лет двадцать же не летал самолётами (совпадение?). По-кайфу катнул на мотике по горам в Дагестане 🏍 Лишился зуба глупости - тоже не повседневная рутина (к счастью!). Были и иные утраты.

В целом - жить можно 🧘‍♀️🏄‍♂️🤯😁

И всех с наступающим Новым годом! 🌟🌟 Достижения квартальных целей! 🤦‍♂️

@panykey | dimio.org
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3
AI курильщика в завязке 😮‍💨

Утёнок Му запустил свой агрегатор доступа к LLM: https://duck.ai

Менее красноглазый 💻, чем какой-нибудь jan - интерфейс здорового человека, дающий, кстати, и http апишку к запущенным локально моделям. Ну так и ресурсов локальных не требует.

И явно менее агрегатор курильщика, чем куча расплодившихся проксей к OpenAI и подобным. Claude весьма неплоха - теперь можно без приседаний с доступом её покрутить.

Слава роботам! 🖕 (на всякий случай)

#chatgpt #AI
@panykey | dimio.org
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM