[Перевод] Кто убил джуниора? |
Метки: author m1rko управление проектами карьера в it-индустрии джуниор сеньор junior senior наставничество ментор зарплата |
SignalR Core. «Hello Habr!» |
Коротко: небольшой самодостаточный пример, иллюстрирующий SignalR для .NET Core 2 и разработку в IDE Rider. В самом конце — видео Dino Esposito с конференции DotNext на эту же тему.
Все привыкли к push-уведомлениям в браузере. Однако создание их требует от программиста определенного опыта и желания возиться с вебсокетами и прочими фронтовыми заморочками, позволяющими веб-приложению в нужный момент отправить обновления на браузерный клиент. Более того, не всегда вебсокеты работают хорошо, поэтому приходится создавать код для поддержки нескольких транспортов — над такой штукой надо думать и хорошо её отлаживать.
Очевидно, есть готовые библиотеки, которые берут это на себя. В мире веб-приложений ASP.NET это SignalR, она позволяет разработчику абстрагироваться от перечисленных сложностей и использовать простую программную модель для работы с push-уведомлениями.
Метки: author olegchir c# .net блог компании jug.ru group dotnext dotnext2018piter signalr signalr core .net core dotnet core |
SignalR Core. «Hello Habr!» |
Коротко: небольшой самодостаточный пример, иллюстрирующий SignalR для .NET Core 2 и разработку в IDE Rider. В самом конце — видео Dino Esposito с конференции DotNext на эту же тему.
Все привыкли к push-уведомлениям в браузере. Однако создание их требует от программиста определенного опыта и желания возиться с вебсокетами и прочими фронтовыми заморочками, позволяющими веб-приложению в нужный момент отправить обновления на браузерный клиент. Более того, не всегда вебсокеты работают хорошо, поэтому приходится создавать код для поддержки нескольких транспортов — над такой штукой надо думать и хорошо её отлаживать.
Очевидно, есть готовые библиотеки, которые берут это на себя. В мире веб-приложений ASP.NET это SignalR, она позволяет разработчику абстрагироваться от перечисленных сложностей и использовать простую программную модель для работы с push-уведомлениями.
Метки: author olegchir c# .net блог компании jug.ru group dotnext dotnext2018piter signalr signalr core .net core dotnet core |
[Перевод] Многозадачность или марихуана? |
Метки: author SmirkinDA читальный зал управление проектами управление персоналом блог компании parallels parallels it management |
[Перевод] Многозадачность или марихуана? |
Метки: author SmirkinDA читальный зал управление проектами управление персоналом блог компании parallels parallels it management |
[Перевод] Rekit Studio: IDE для React-приложений |
Метки: author ru_vds разработка веб-сайтов reactjs блог компании ruvds.com rekit react redux разработка |
[Перевод] Rekit Studio: IDE для React-приложений |
Метки: author ru_vds разработка веб-сайтов reactjs блог компании ruvds.com rekit react redux разработка |
Нужно ли бояться несбалансированности классов? |
В сети есть множество постов и ресурсов, которые учат нас бороться с несбалансированностью классов (class imbalance) в задаче классификации. Обычно они предлагают методы сэмплирования: искусственно дублировать наблюдения из редкого класса, или выкинуть часть наблюдений из популярного класса. Этим постом я хочу прояснить, что «проклятие» дисбаланса классов – это миф, важный лишь для отдельных типов задач.
Метки: author cointegrated машинное обучение математика алгоритмы data mining machine learning data science class imbalance несбалансированные классы |
Нужно ли бояться несбалансированности классов? |
В сети есть множество постов и ресурсов, которые учат нас бороться с несбалансированностью классов (class imbalance) в задаче классификации. Обычно они предлагают методы сэмплирования: искусственно дублировать наблюдения из редкого класса, или выкинуть часть наблюдений из популярного класса. Этим постом я хочу прояснить, что «проклятие» дисбаланса классов – это миф, важный лишь для отдельных типов задач.
Метки: author cointegrated машинное обучение математика алгоритмы data mining machine learning data science class imbalance несбалансированные классы |
Go 1.10 Release Party @ Badoo 24 февраля |
Метки: author alinaleena программирование высокая производительность go блог компании badoo golang meetup |
Go 1.10 Release Party @ Badoo 24 февраля |
Метки: author alinaleena программирование высокая производительность go блог компании badoo golang meetup |
[Перевод] Регулярные выражения: никакой магии |
.
: соответствие любому символу|
: соответствие abc
или cde
+
: соответствие одному или более предыдущего паттерна*
: соответствие 0 или более предыдущего паттерна(
и )
для группировкиm (t|n| ) | b
позволяющий найти субтитры к Star Wars без субтитров к Star Trek, или (..)*
для нахождения множества всех строк чётной длины.
Метки: author PatientZero регулярные выражения алгоритмы scala regexp конечные автоматы синтаксический анализ парсинг |
[Перевод] Регулярные выражения: никакой магии |
.
: соответствие любому символу|
: соответствие abc
или cde
+
: соответствие одному или более предыдущего паттерна*
: соответствие 0 или более предыдущего паттерна(
и )
для группировкиm (t|n| ) | b
позволяющий найти субтитры к Star Wars без субтитров к Star Trek, или (..)*
для нахождения множества всех строк чётной длины.
Метки: author PatientZero регулярные выражения алгоритмы scala regexp конечные автоматы синтаксический анализ парсинг |
Сборка проектов с dapp. Часть 1: Java |
Метки: author diafour системы сборки devops блог компании флант dapp java docker |
Сборка проектов с dapp. Часть 1: Java |
Метки: author diafour системы сборки devops блог компании флант dapp java docker |
[Перевод] Фейс-контроль для питомцев |
|
[Перевод] Фейс-контроль для питомцев |
|
LL(*) парсер с использованием Rust макросов |
Wow. Such Rust. Much macro. © картинка - Твиттер аккаунт Servo
Язык Rust стремительно набирает обороты. Кто-то пророчит ему стать заменой C/C++, кому-то он просто нравится. Я скорее принадлежу ко второй группе. Разработчики стараются сделать его удобным и безопасным. В нем есть конструкции и принципы, которые еще не скоро появятся в "плюсах", ввиду инерции комитета и множества других причин. Поэтому, для всех личных проектов я предпочитаю использовать именно Rust.
Так сложилось, что с переменным успехом я пишу компиляторы. Не успел правда написать ни одного, но мне более интересен сам процесс, чем результат.
Однажды, когда я в очередной раз застрял с синтаксическим анализатором (он же "парсер"), я подумал, что уж очень много я пишу однотипного кода. И этот однотипный код один в один ложится на грамматику в форме Бэкуса — Наура (БНФ).
Немного подумав, я решил, что мне надо написать генератор кода на основе грамматики. И для этой задачи как нельзя хорошо подходят макросы в Rust.
В статье описана реализация LL(*) парсера с использованием макросов. И реализован парсер простых математических выражений.
В итоге парсер для БНФ грамматики:
expr ::= sum
sum ::= mul "+" sum | mul "-" sum | mul
mul ::= atom "*" mul | atom "/" mul | atom
atom ::= "(" expr ")" | number | neg;
neg ::= "-" atom
Можно сгенерировать с помощью серии макросов:
rule!(expr, sum);
rule!(sum, or![
and![(mul, token('+'), sum) => make_operator],
and![(mul, token('-'), sum) => make_operator],
mul
]);
rule!(mul, or![
and![(atom, token('*'), mul) => make_operator],
and![(atom, token('/'), mul) => make_operator],
atom
]);
rule!(atom, or![
and![(token('('), expr, token(')')) => |_lbrace, stat, _rbrace| Some(stat)],
num,
neg
]);
rule!(neg, and![(token('-'), atom) => |_, number| Some(Box::new(expression::Expression::Negate(number)))]);
Читать дальше ->
Метки: author cosmrc программирование компиляторы rust compilers parsers parser-generator только не макросы опять |
LL(*) парсер с использованием Rust макросов |
Wow. Such Rust. Much macro. © картинка - Твиттер аккаунт Servo
Язык Rust стремительно набирает обороты. Кто-то пророчит ему стать заменой C/C++, кому-то он просто нравится. Я скорее принадлежу ко второй группе. Разработчики стараются сделать его удобным и безопасным. В нем есть конструкции и принципы, которые еще не скоро появятся в "плюсах", ввиду инерции комитета и множества других причин. Поэтому, для всех личных проектов я предпочитаю использовать именно Rust.
Так сложилось, что с переменным успехом я пишу компиляторы. Не успел правда написать ни одного, но мне более интересен сам процесс, чем результат.
Однажды, когда я в очередной раз застрял с синтаксическим анализатором (он же "парсер"), я подумал, что уж очень много я пишу однотипного кода. И этот однотипный код один в один ложится на грамматику в форме Бэкуса — Наура (БНФ).
Немного подумав, я решил, что мне надо написать генератор кода на основе грамматики. И для этой задачи как нельзя хорошо подходят макросы в Rust.
В статье описана реализация LL(*) парсера с использованием макросов. И реализован парсер простых математических выражений.
В итоге парсер для БНФ грамматики:
expr ::= sum
sum ::= mul "+" sum | mul "-" sum | mul
mul ::= atom "*" mul | atom "/" mul | atom
atom ::= "(" expr ")" | number | neg;
neg ::= "-" atom
Можно сгенерировать с помощью серии макросов:
rule!(expr, sum);
rule!(sum, or![
and![(mul, token('+'), sum) => make_operator],
and![(mul, token('-'), sum) => make_operator],
mul
]);
rule!(mul, or![
and![(atom, token('*'), mul) => make_operator],
and![(atom, token('/'), mul) => make_operator],
atom
]);
rule!(atom, or![
and![(token('('), expr, token(')')) => |_lbrace, stat, _rbrace| Some(stat)],
num,
neg
]);
rule!(neg, and![(token('-'), atom) => |_, number| Some(Box::new(expression::Expression::Negate(number)))]);
Читать дальше ->
Метки: author cosmrc программирование компиляторы rust compilers parsers parser-generator только не макросы опять |
Из спутниковых снимков в графы (cоревнование SpaceNet Road Detector) — попадание топ-10 и код (перевод) |
Привет, Хабр! Представляю вам перевод статьи.
Это Вегас с предоставленной разметкой, тестовым датасетом и вероятно белые квадраты — это отложенная валидация (приват). Выглядит прикольно. Правда эта панорама лучшая из всех четырех городов, так вышло из-за данных, но об этом чуть ниже.
Ссылка на соревнование и подробное описание.
Мы закончили предварительно на 9-м месте, но позиция может измениться после дополнительного тестирования сабмитов организаторами.
Также я потратил некоторое время на написание хорошего читаемого кода на PyTorch и генераторов данных. Его можно без застенчивости использовать для своих целей (только поставьте плюсик). Код максимально простой и модульный, плюс читайте дальше про best practices для семантической сегментации.
Кроме того, не исключено, что мы напишем пост про понимание и разбор Skeleton Network, которую в итоге использовали все финалисты в топе соревнования для преобразования маски изображения в граф.
Суть соревнования на 1 картинке
Метки: author snakers4 обработка изображений машинное обучение python big data satellite imaging pytorch computer vision machine learning data science |