#prog #rust #rustlib
walkdir — кросс-платформерная библиотека для рекурсивного обхода директорий от Andrew Gallant aka Burntsushi.
Библиотека умеет обнаруживает циклы символьных ссылок и сообщать в этих случаях об ошибке.
Небольшое неудобство заключается в том, что
walkdir — кросс-платформерная библиотека для рекурсивного обхода директорий от Andrew Gallant aka Burntsushi.
use walkdir::WalkDir;
for entry in WalkDir::new("foo").min_depth(1).max_depth(3) {
println!("{}", entry?.path().display());
}
Библиотека умеет обнаруживает циклы символьных ссылок и сообщать в этих случаях об ошибке.
Небольшое неудобство заключается в том, что
.filter()
на итераторе не будет предотвращать заход в пропущенные директории, для этого нужно на итераторе вызвать .filter_entry()
. Пример из документации для пропуска скрытых файлов на *nix-системах:use walkdir::{DirEntry, WalkDir};
fn is_hidden(entry: &DirEntry) -> bool {
entry.file_name()
.to_str()
.map(|s| s.starts_with("."))
.unwrap_or(false)
}
for entry in WalkDir::new("foo")
.into_iter()
.filter_entry(|e| !is_hidden(e)) {
println!("{}", entry?.path().display());
}
docs.rs
walkdir - Rust
Crate `walkdir` provides an efficient and cross platform implementation of recursive directory traversal. Several options are exposed to control iteration, such as whether to follow symbolic links (default off), limit the maximum number of simultaneous open…
👍9❤🔥4
Forwarded from Сталингулаг
Группа «Алиса» перенесла три концерта тура «Гойда», потому что билеты плохо продаются.
Кажется, у нас досрочный победитель в номинации новостной заголовок года
Кажется, у нас досрочный победитель в номинации новостной заголовок года
😁22🌚1
Forwarded from Больше, чем экономика
Решившему зарегистрироваться в реестре Роскомнадзора блогеру прислали повестку в военкомат
Автор телеграм-канала «Духи наизнанку» Кирилл Хайкин подал заявку на включение в реестр блогеров и всего через шесть часов получил повестку в военкомат с требованием пройти призывную комиссию, рассказал сам Хайкин.
«За меня не волнуйтесь, я окончил военную кафедру», — отметил он, обращаясь к своим подписчикам. При этом блогер уточнил, что произошедшее может быть совпадением.
Автор телеграм-канала «Духи наизнанку» Кирилл Хайкин подал заявку на включение в реестр блогеров и всего через шесть часов получил повестку в военкомат с требованием пройти призывную комиссию, рассказал сам Хайкин.
«За меня не волнуйтесь, я окончил военную кафедру», — отметил он, обращаясь к своим подписчикам. При этом блогер уточнил, что произошедшее может быть совпадением.
🌚11
Forwarded from A Certain Scientific Impostor
Хотите трюк с поиском статей, которые не находятся на sci-hub/nexus? Нигде не встречал упоминания этого способа, а он, бывает, помогает в самых отчаянных случаях.
Если написать в гугле дорк
а затем искомый doi в кавычках (строгое совпадение), то часто находится пдфка уже любезно кем-то выложенная, например самими авторами на личных сайтах или соцсетях.
пользуйтесь)
Если написать в гугле дорк
filetype:pdf
а затем искомый doi в кавычках (строгое совпадение), то часто находится пдфка уже любезно кем-то выложенная, например самими авторами на личных сайтах или соцсетях.
filetype:pdf "doi.org/10.1038/s41586-022-05278-9"
пользуйтесь)
Nature
NMR-guided directed evolution
Nature - NMR spectroscopy has been used to guide the directed evolution of myoglobin to a Kemp eliminase with high catalytic efficiency, outlining an approach that is likely to be generally...
❤16🥰5🤯3👍2🔥1🌚1
Мужчину-гетеросексуала, который увлечён женщинами (и часто много занимается с ними сексом), зовут бабником. Слово, очевидно, образовано от "баба".
А как назвать гея, сильно увлечённого мужчинами? По идее, следуя той же логике, "мужник"?
А как тогда назвать любвеобильного би/пансексуала?
А как назвать гея, сильно увлечённого мужчинами? По идее, следуя той же логике, "мужник"?
А как тогда назвать любвеобильного би/пансексуала?
🍌3🎉1🤮1
Forwarded from Wazowski Recommends
Попав в Яндекс, мы получили проект от Ильи Сегаловича. Илья умел очень классно делиться идеями и объяснять суть. Он нам рассказал, что на самом деле Гугл в своё время выиграл у всех предыдущих поисковиков за счёт хорошо сделанных сниппетов. А теперь для нас самое главное — сделать так, чтобы поисковые результаты не были сплошь одинаковыми. Надо бороться с полу-дублями.
Только сделать это у нас не удалось. Зато мне удалось получить свою первую психологическую травму на работе.
В Яндексе тогда не было почти никакой документации. Даже как собирать проект — было тайным знанием, передающимся из уст в уста.
Когда нужно было разобраться в каком-то куске поискового кода, Макс сказал:
— Ну давай посмотрим, кто автор этого кода... Ага, некий Антон с ником pg@. Просто сходи и спроси у него, что здесь происходит.
Я сходил и спросил. Антон с ником pg@ ответил мне, чтобы я просто прочитал код.
Прочитать и понять код у меня не получилось. А так как работали мы на четверть ставки, то в следующий раз мы с Максом встретились примерно через неделю. Узнав, что прогресса особо нет, Макс сказал:
— Нет, ну так дело не пойдёт. Пойдём вместе сходим и спросим.
Сходили и спросили. На что Антон с ником pg@ просто накричал на нас обоих: какого чёрта какие-то стажёры его отвлекают и не могут даже за неделю самостоятельно прочитать код?!
С тех пор ни я, ни Макс уже больше никогда не хотели работать в Яндекс.Поиске.
#lifestories
Только сделать это у нас не удалось. Зато мне удалось получить свою первую психологическую травму на работе.
В Яндексе тогда не было почти никакой документации. Даже как собирать проект — было тайным знанием, передающимся из уст в уста.
Когда нужно было разобраться в каком-то куске поискового кода, Макс сказал:
— Ну давай посмотрим, кто автор этого кода... Ага, некий Антон с ником pg@. Просто сходи и спроси у него, что здесь происходит.
Я сходил и спросил. Антон с ником pg@ ответил мне, чтобы я просто прочитал код.
Прочитать и понять код у меня не получилось. А так как работали мы на четверть ставки, то в следующий раз мы с Максом встретились примерно через неделю. Узнав, что прогресса особо нет, Макс сказал:
— Нет, ну так дело не пойдёт. Пойдём вместе сходим и спросим.
Сходили и спросили. На что Антон с ником pg@ просто накричал на нас обоих: какого чёрта какие-то стажёры его отвлекают и не могут даже за неделю самостоятельно прочитать код?!
С тех пор ни я, ни Макс уже больше никогда не хотели работать в Яндекс.Поиске.
#lifestories
😁26🔥22👍3
Forwarded from Lasiar работает 💡
TL;DR: Для масштабирования gRPC в K8s, следует взять linkerd или нечто подобное.
Есть некий клиент (
Используя K8s можно достаточно легко горизонтально масштабировать приложение:
- Руками изменить scale.
- Настроить HPA (Horizontal Pod Autoscaling)
И вроде все хорошо — у нас n-ое количество подов, и нагрузка должна автоматом распределятся по round-robin, ведь так?
Тут уже начинаются детали.
Распределение нагрузки будет работать, в зависимости от того, по какому именно транспорту будут общаться сервисы.
K8s использует iptables как балансировщик, а он работает на уровне TCP соединений, то есть может балансировать TCP соединения.
HTTP/1.1: TCP соединения переиспользуются только после завершения HTTP запроса, то есть: в одно и тоже время в одном TCP соединении может обрабатываться только один HTTP запрос.
HTTP/2: Позволяет использовать одно и тоже TCP соединения для нескольких одновременных HTTP запросов (multiplexing).
Следовательно, при HTTP/2 у нас используется одно TCP соединение, внутри которого проходят множество запросов.
Балансировка будет выглядеть так:
Все запросы будут идти на первый сервер.
А gRPC использует HTTP/2 для транспорта.
——
То есть: балансировщик из коробки в K8s для gRPC трафика будет некорректно балансировать нагрузку, иначе говоря: балансировать TCP соединения, а не gRPC запросы.
——
Что делать?
Есть пару вариантов:
1. Взять Linkerd, он умеет балансировать gRPC с коробки.
*ИМХО самый корректный*
2. Так же, можно чуть чаще пересоздавать gRPC соединения, тут про это пишут.
*ИМХО самый простой*
2. Внутри самого сервиса: README.md.
*ИМХО самый странный*
Есть некий клиент (
c
) и некий сервер (s
) в K8s, линия обозначает TCP соединение.+--+ +--+
|c +---> s|
+--+ +--+
Используя K8s можно достаточно легко горизонтально масштабировать приложение:
- Руками изменить scale.
- Настроить HPA (Horizontal Pod Autoscaling)
И вроде все хорошо — у нас n-ое количество подов, и нагрузка должна автоматом распределятся по round-robin, ведь так?
+--+ +--+
|c +---> s|
+--+ +--+
| +--+
+-----> s|
| +--+
| +--+
+-----> s|
+--+
Тут уже начинаются детали.
Распределение нагрузки будет работать, в зависимости от того, по какому именно транспорту будут общаться сервисы.
K8s использует iptables как балансировщик, а он работает на уровне TCP соединений, то есть может балансировать TCP соединения.
HTTP/1.1: TCP соединения переиспользуются только после завершения HTTP запроса, то есть: в одно и тоже время в одном TCP соединении может обрабатываться только один HTTP запрос.
HTTP/2: Позволяет использовать одно и тоже TCP соединения для нескольких одновременных HTTP запросов (multiplexing).
Следовательно, при HTTP/2 у нас используется одно TCP соединение, внутри которого проходят множество запросов.
Балансировка будет выглядеть так:
+--+ +--+
|c +---> s|
+--+ +--+
+--+
| s|
+--+
+--+
| s|
+--+
Все запросы будут идти на первый сервер.
А gRPC использует HTTP/2 для транспорта.
——
То есть: балансировщик из коробки в K8s для gRPC трафика будет некорректно балансировать нагрузку, иначе говоря: балансировать TCP соединения, а не gRPC запросы.
——
Что делать?
Есть пару вариантов:
1. Взять Linkerd, он умеет балансировать gRPC с коробки.
*ИМХО самый корректный*
2. Так же, можно чуть чаще пересоздавать gRPC соединения, тут про это пишут.
*ИМХО самый простой*
2. Внутри самого сервиса: README.md.
*ИМХО самый странный*
👍5
Forwarded from Мемы и точка
Media is too big
VIEW IN TELEGRAM
Женщины: мужики хотят только одного
Мужики:
Мужики:
❤29🔥8🥰1