Выступление прошло вполне успешно! Конечно, есть над чем работать (как обычно), но в целом я доволен.
Чуть позже выложу презентацию и другие материалы)
Чуть позже выложу презентацию и другие материалы)
EXOZ OIDC Доклад.pdf
9.1 MB
Итак, утро начинается с блокировки российских айпишников Docker Hub
Во-первых, тут в комментах есть разные варианты настроек зеркал (а ещё срачи!)
А ещё порадовал наш ответ - https://huecker.io/ ))) Не знаю, насколько надёжно использовать именно его в качестве прокси, но инструкция там удобная и есть адрес других проксей
Во-первых, тут в комментах есть разные варианты настроек зеркал (а ещё срачи!)
А ещё порадовал наш ответ - https://huecker.io/ ))) Не знаю, насколько надёжно использовать именно его в качестве прокси, но инструкция там удобная и есть адрес других проксей
1. Введение в Elastic
2. Разворачиваем Elasticsearch
3. CRUD-операции в Elasticsearch
4. Как Elasticsearch обрабатывает текст? (вы здесь)
5. ...
Как Elasticsearch обрабатывает текст?
1. Маппинги
Маппинг в Elastic - это набор правил о том, какие поля как обрабатывать. Например мы добавляем объект с полями
Также нам доступен динамический маппинг. При такой настройке эластик сам определяет тип данных на основе первого документа, попавшего в него: если поле текстовое, будет тип text, если это число - тип number и т.д. Динамический маппинг довольно удобен, однако если в документе у вас текстовое поле, которое может содержать как числа, так и строки, и в первом документе было число (или, например, строка, которая эластиком успешно распарсилась в дату), то при попытке добавить новый документ с текстовым значением поля выпадет ошибка.
2. Анализаторы
Они отвечают за обработку и индексацию входящего текста и состоят из:
- Фильтров символов (character filter), которые обрабатывают исходный текст. Например, могут убирать html-теги, удалять спецсимволы и т.д.
- Токенизаторов (tokenizer) - преобразуют текст в массив символов по разделителю и другим правилам. Например: на вход принимаем "Этот текст написан Дмитрием", на выход -
Токенизаторы, кстати, могут быть кастомными. Например, есть токенизатор uax_url_email, который распознаёт электронную почту и вставляет её в отдельный токен, а не разбивает адрес, ну и много других. Подробнее можно почитать тут.
- Фильтр токенов (token filter) - пост-обработка массива токенов. Каждый элемент в массиве токенов может быть как-то преобразован или удалён. Например часто удаляются стоп-слова, такие как предлоги и артикли "an", "a", "the", "but" и т.д.
Flexible Coding
2. Разворачиваем Elasticsearch
3. CRUD-операции в Elasticsearch
4. Как Elasticsearch обрабатывает текст? (вы здесь)
5. ...
Как Elasticsearch обрабатывает текст?
1. Маппинги
Маппинг в Elastic - это набор правил о том, какие поля как обрабатывать. Например мы добавляем объект с полями
id
, name
и description
. Для id
и name
нам нужен поиск по точному совпадению, а по description
- полнотекстовый поиск. Мы можем настроить разные типы данных данных для этих полей: "keyword" для точного поиска, а "text" для полнотекстового.Также нам доступен динамический маппинг. При такой настройке эластик сам определяет тип данных на основе первого документа, попавшего в него: если поле текстовое, будет тип text, если это число - тип number и т.д. Динамический маппинг довольно удобен, однако если в документе у вас текстовое поле, которое может содержать как числа, так и строки, и в первом документе было число (или, например, строка, которая эластиком успешно распарсилась в дату), то при попытке добавить новый документ с текстовым значением поля выпадет ошибка.
2. Анализаторы
Они отвечают за обработку и индексацию входящего текста и состоят из:
- Фильтров символов (character filter), которые обрабатывают исходный текст. Например, могут убирать html-теги, удалять спецсимволы и т.д.
- Токенизаторов (tokenizer) - преобразуют текст в массив символов по разделителю и другим правилам. Например: на вход принимаем "Этот текст написан Дмитрием", на выход -
['этот', 'текст', 'написан', 'дмитрием']
Токенизаторы, кстати, могут быть кастомными. Например, есть токенизатор uax_url_email, который распознаёт электронную почту и вставляет её в отдельный токен, а не разбивает адрес, ну и много других. Подробнее можно почитать тут.
- Фильтр токенов (token filter) - пост-обработка массива токенов. Каждый элемент в массиве токенов может быть как-то преобразован или удалён. Например часто удаляются стоп-слова, такие как предлоги и артикли "an", "a", "the", "but" и т.д.
Flexible Coding
1. Введение в Elastic
2. Разворачиваем Elasticsearch
3. CRUD-операции в Elasticsearch
4. Как Elasticsearch обрабатывает текст?
5.Странности Ограничения Elasticsearch и Email (вы здесь)
Странности Ограничения Elasticsearch и Email
Как мы знаем из предыдущего поста - у эластика есть различные встроенные токенизаторы. Один из них -
- Результат стандартной токенизации:
- Результат токенизации uax_url_email:
В одной из систем, над которой я работал, был использован этот токенизатор для полнотекстового поиска по пользователям. И всё было прекрасно, пока не пришли... локальные домены верхнего уровня.
Домены верхнего уровня - это те самые
Поэтому идём в исходники
- Поиск по исходному коду эластика привёл к
- В файлах с реализацией UAX29URLEmailTokenizer ориентироваться довольно тяжело. Они созданы с помощью утилиты jflex, которая генерирует код на основе указанных спецификаций в специальных файлах. Тут нас интересует файл ASCIITLD.jflex, который содержит выражения для всех доменов на основе базы данных глобального регистратора IANA. На основе этих доменов elastic определяет: это собственно часть домена в адресе почты или просто строка. И в этой базе нет различных кастомных доменов, например "qwe", и никак их туда не добавить...
Какие выводы можно сделать? Если вы используете этот токенизатор и вам необходимо распознавать их эл. почту - проверьте, чтобы не использовались локальные домены
Flexible Coding
2. Разворачиваем Elasticsearch
3. CRUD-операции в Elasticsearch
4. Как Elasticsearch обрабатывает текст?
5.
Странности
Как мы знаем из предыдущего поста - у эластика есть различные встроенные токенизаторы. Один из них -
uax_url_email_tokenizer
, который работает как стандартный, но при наличии в тексте адреса электронной почты, выделяет его в отдельный токен. Например:- Результат стандартной токенизации:
[ Email, me, at, john.smith, global, international.com ]
- Результат токенизации uax_url_email:
[ Email, me, at, john.smith@global-international.com ]
В одной из систем, над которой я работал, был использован этот токенизатор для полнотекстового поиска по пользователям. И всё было прекрасно, пока не пришли... локальные домены верхнего уровня.
Домены верхнего уровня - это те самые
.ru
, .com
и т.д. А в локальной сети их можно назначить самостоятельно, например .qwe
и использовать. Ну, кто-то их и использовал, и у нас сломался поиск по пользователям. Почему сломался? Непонятно. Адреса просто разбивались как в примере со стандартным механизмом. Документация нам ответа не дала...Поэтому идём в исходники
- Поиск по исходному коду эластика привёл к
UAX29URLEmailTokenizerFactory
, который просто возвращает new UAX29URLEmailTokenizer()
. Судя по импортам в файле, он находится в Lucene. Направляемся туда.- В файлах с реализацией UAX29URLEmailTokenizer ориентироваться довольно тяжело. Они созданы с помощью утилиты jflex, которая генерирует код на основе указанных спецификаций в специальных файлах. Тут нас интересует файл ASCIITLD.jflex, который содержит выражения для всех доменов на основе базы данных глобального регистратора IANA. На основе этих доменов elastic определяет: это собственно часть домена в адресе почты или просто строка. И в этой базе нет различных кастомных доменов, например "qwe", и никак их туда не добавить...
Какие выводы можно сделать? Если вы используете этот токенизатор и вам необходимо распознавать их эл. почту - проверьте, чтобы не использовались локальные домены
Flexible Coding
Forwarded from Амбиции Петрова
Новая неделя — новый доклад 💚
Встречайте Дмитрия Бахтенкова с темой «Динамическое добавление провайдеров аутентификации OpenId Connect в .net core приложении»!
Напоминаем, что вы можете задать вопрос Дмитрию, написав его в комментариях.
Также в описании видео есть презентация с кликабельными ссылками, пользуйтесь 💬
https://youtu.be/2aC8OfQog9c
Встречайте Дмитрия Бахтенкова с темой «Динамическое добавление провайдеров аутентификации OpenId Connect в .net core приложении»!
Напоминаем, что вы можете задать вопрос Дмитрию, написав его в комментариях.
Также в описании видео есть презентация с кликабельными ссылками, пользуйтесь 💬
https://youtu.be/2aC8OfQog9c
YouTube
Динамическое добавление провайдеров аунтефикации OpenId Connect в .net - Дмитрий Бахтенков
Канал в Tg - https://t.me/exoz_tech
Сообщество в Вк - https://vk.com/exoz.tech
Канал на Дзен - https://dzen.ru/exoz
---
Презентация - https://disk.yandex.ru/i/I8a3wsSP4sFGvw
О чём доклад?
Узнаем общую информацию про протокол аутентификации OpenIdConnect…
Сообщество в Вк - https://vk.com/exoz.tech
Канал на Дзен - https://dzen.ru/exoz
---
Презентация - https://disk.yandex.ru/i/I8a3wsSP4sFGvw
О чём доклад?
Узнаем общую информацию про протокол аутентификации OpenIdConnect…
1. Введение в Elastic
2. Разворачиваем Elasticsearch
3. CRUD-операции в Elasticsearch
4. Как эластик обрабатывает текст?
5. Странности и ограничения Elasticsearch и Email
6. Тестируем анализаторы Elasticsearch (вы здесь)
Тестируем анализаторы Elasticsearch
В предыдущем посте выяснилось, что некоторые токенизаторы ведут себя не очень очевидно. Вообще, проверять анализаторы можно в самом эластике, используя эндпоинт POST /_analyze.
Примеры запросов:
Тестируем анализатор:
Тестируем токенизатор и фильтры:
А в случае примера из предыдущего поста запрос будет таким:
С помощью этих запросов можно смотреть, как эластик будет разбивать поисковый запрос или текст на токены, и корректировать анализаторы, токенизаторы и фильтры для наилучшего качества при решении вашего кейса
Flexible Coding
2. Разворачиваем Elasticsearch
3. CRUD-операции в Elasticsearch
4. Как эластик обрабатывает текст?
5. Странности и ограничения Elasticsearch и Email
6. Тестируем анализаторы Elasticsearch (вы здесь)
Тестируем анализаторы Elasticsearch
В предыдущем посте выяснилось, что некоторые токенизаторы ведут себя не очень очевидно. Вообще, проверять анализаторы можно в самом эластике, используя эндпоинт POST /_analyze.
Примеры запросов:
Тестируем анализатор:
POST _analyze
{
"analyzer": "whitespace",
"text": "Какой-то текст"
}
Тестируем токенизатор и фильтры:
POST _analyze
{
"tokenizer": "standard",
"filter": [ "lowercase" ],
"text": "Какой-то текст"
}
А в случае примера из предыдущего поста запрос будет таким:
POST _analyze
{
"tokenizer": "uax_url_email",
"filter": [ "lowercase"],
"text": "john@domain.qwe"
}
С помощью этих запросов можно смотреть, как эластик будет разбивать поисковый запрос или текст на токены, и корректировать анализаторы, токенизаторы и фильтры для наилучшего качества при решении вашего кейса
Flexible Coding
Уже довольно давно в кругах любителей продуктивности светится браузер Arc. Например, обсуждение можно найти здесь. И вот, у меня наконец-то дошли руки его попробовать.
С переездом на новую ОС мой прошлый браузер, Edge (который, кстати, совсем неплох - привычка хейтить его осталась со времён старых версий не на хромиуме), перестал справляться с задачами. Если на Windows он работал идеально, то на Mac оказался сырым и с неприятными визуальными багами. Так что я решил потестить Arc. Скачал, установил и почти сразу влюбился. Итак, что же мне понравилось?
1. Вертикальные вкладки по умолчанию. Они скрываются так, что сайт разворачивается на весь экран без лишних панелей-вкладок и всего такого.
2. Функция Tidy. Эта штука группирует вкладки по смысловому содержанию. Постоянно пользуюсь на работе, да и дома. Часто бывает, что открыто много вкладок и я уже в них запутался.
3. Easels. Холст прямо в браузере. Он простой, но при этом удобно встроен в браузер и им можно делиться (и, вероятно, даже устраивать совместную работу).
4. Ask. С помощью ctrl+f у ИИ можно спросить про контент на странице - это прикольно, на фото есть пример со статьёй на хабре (но можно лучше).
5. Spaces. Рабочие пространства сделаны гораздо удобнее, чем в Edge. Всё в одном месте, между ними можно переключаться, при этом контекст закладок, паролей и дизайна на каждое пространство свой.
6. Панель с избранными сайтами. Помимо закладок, в Arc можно вынести набор приложений для быстрого доступа в отдельное окошко - и это оказалось довольно удобно.
7. Модальные окна для сайтов из приложений. Arc открывает сайты из приложений в отдельной модалке, не создавая вкладку в основном окне браузера. Таким образом, мой браузер не забивается вкладками из страниц, которые мне прислали в телеге просто посмотреть, а я забыл их закрыть.
Из недостатков - к нему нужно привыкнуть. Адресная строка немного “спрятана”, что не всегда удобно, и не всегда корректно работает видимость вертикальных вкладок. Хотя когда привыкаешь, это перестаёт быть существенным недостатком. Dev tools обычные, сам браузер на хромиуме - это значит, что все расширения на нём корректно работают.
В общем, я призываю попробовать этот браузер - может быть, это будет вашим вторым браузером на ПК, а может вам так зайдёт, что вы перейдёте на него полностью.
#приложения
Flexible Coding
С переездом на новую ОС мой прошлый браузер, Edge (который, кстати, совсем неплох - привычка хейтить его осталась со времён старых версий не на хромиуме), перестал справляться с задачами. Если на Windows он работал идеально, то на Mac оказался сырым и с неприятными визуальными багами. Так что я решил потестить Arc. Скачал, установил и почти сразу влюбился. Итак, что же мне понравилось?
1. Вертикальные вкладки по умолчанию. Они скрываются так, что сайт разворачивается на весь экран без лишних панелей-вкладок и всего такого.
2. Функция Tidy. Эта штука группирует вкладки по смысловому содержанию. Постоянно пользуюсь на работе, да и дома. Часто бывает, что открыто много вкладок и я уже в них запутался.
3. Easels. Холст прямо в браузере. Он простой, но при этом удобно встроен в браузер и им можно делиться (и, вероятно, даже устраивать совместную работу).
4. Ask. С помощью ctrl+f у ИИ можно спросить про контент на странице - это прикольно, на фото есть пример со статьёй на хабре (но можно лучше).
5. Spaces. Рабочие пространства сделаны гораздо удобнее, чем в Edge. Всё в одном месте, между ними можно переключаться, при этом контекст закладок, паролей и дизайна на каждое пространство свой.
6. Панель с избранными сайтами. Помимо закладок, в Arc можно вынести набор приложений для быстрого доступа в отдельное окошко - и это оказалось довольно удобно.
7. Модальные окна для сайтов из приложений. Arc открывает сайты из приложений в отдельной модалке, не создавая вкладку в основном окне браузера. Таким образом, мой браузер не забивается вкладками из страниц, которые мне прислали в телеге просто посмотреть, а я забыл их закрыть.
Из недостатков - к нему нужно привыкнуть. Адресная строка немного “спрятана”, что не всегда удобно, и не всегда корректно работает видимость вертикальных вкладок. Хотя когда привыкаешь, это перестаёт быть существенным недостатком. Dev tools обычные, сам браузер на хромиуме - это значит, что все расширения на нём корректно работают.
В общем, я призываю попробовать этот браузер - может быть, это будет вашим вторым браузером на ПК, а может вам так зайдёт, что вы перейдёте на него полностью.
#приложения
Flexible Coding