Как стать автором
Поиск
Написать публикацию
Обновить
17
0.3

Пользователь

Отправить сообщение

Тип данных Either как альтернатива выбрасыванию исключений

Время на прочтение8 мин
Количество просмотров12K

Исключения – это базовый элемент многих языков программирования. Они обычно используются для обработки аномальных или непредусмотренных условий, при устранении которых необходим особый подход, нарушающий нормальный поток задач в приложении. В некоторых языках, например, в C++ или Java, исключения используются повсюду. Но не все языки спроектированы так. В C# или Kotlin нет проверяемых исключений. В других языках, например, Go и Rust, исключений нет вообще.

Думаю, код, выбрасывающий исключение всякий раз, когда произойдет что-то неожиданное, сложен для понимания, и его тяжелее поддерживать. В этой статье я хочу рассказать о типе данных Either как об альтернативном способе обработки условий, приводящих к ошибкам. Примеры в этой статье даны на Kotlin, поскольку, на мой взгляд, за его синтаксисом легко следить. Но сами концепции не уникальны для Kotlin. Их, так или иначе, можно реализовать в любом языке, поддерживающем функциональное программирование.

Читать далее

Как справиться с отсутствием личных проектов

Время на прочтение4 мин
Количество просмотров11K

Постоянно читая статьи на тему того, как %user% буквально на коленке научил свою кофеварку выгуливать собаку, начинаешь чувствовать себя немного неуютно. Складывается ощущение, что вокруг тебя взрослый мир и все вокруг знают больше тебя, умеют лучше и т.д. 

Читать далее

Go: конкурентность и привязки к потокам в планировщике

Время на прочтение5 мин
Количество просмотров8.4K

Переключение горутины с одного потока ОС на другой довольно затратно и может значительно замедлить работу приложения, если это происходит слишком часто. Однако со временем эту проблему решил планировщик Go путем обеспечения привязки горутин к потоку (scheduler affinity) в условиях конкурентной работы (concurrently). А чтобы нам лучше понять всю прелесть этой доработки, давайте вернемся назад в прошлое и посмотрим, как было до.

Читать далее

Ваши боли будут утолены, или Три слона, на которых стоит Python-конференция 2021 года

Время на прочтение13 мин
Количество просмотров4.8K

Григория Петрова, Python-некроманта, совмещающего деятельность директора по техническому маркетингу (по-простому — деврела)  компании Evrone и члена программного комитета Moscow Python Conf знают уже не только питонисты.

Время от времени Григорий возглавляет Программный комитет конференции Python, меняя Валентина Домбровского, нынешнего главу ПК. Так было заведено много лет назад, чтобы каждый председатель не закостенел в организации конференции, выборе докладов и генерации идей.

Мы встретились с Григорием и узнали много интересного. Про трех китов предстоящей конференции Moscow Python Conf++ 2021. Про нейрофизиологию, которая всегда поможет. Про что будет хайп и зачем организаторам нужна фасилитация. Разумеется, мы поговорили про Python (спойлер: асинхронное программирование и Django тоже будут). Узнали, какие нас ждут доклады и какие боли питонистов будут утолены —  обо всем этом читайте под катом.

Читать далее

Вариационные автоэнкодеры для системы рекомендаций

Время на прочтение5 мин
Количество просмотров4.6K

В данной статье представлена модель вариационного автоэнкодера, а именно Standard-VAE в контексте рекомендательных систем. Это невероятно интересный подход, хотя его математика может заставить выпить не одну чашку кофе, чтоб ее поняли.

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

Узнать больше

Разработка настоящих компонентов: блок сообщения Facebook Messenger

Время на прочтение19 мин
Количество просмотров10K
Смесь любопытства и тяги к исследованиям снова привели меня к системе обмена сообщениями Facebook. Я уже изучал компоненты Facebook и писал об этом. Сейчас я обратил внимание на то, что в одни только блоки для вывода сообщений чата вложена огромная работа. На первый взгляд может показаться, что разработка компонента, реализующего чат — это просто, что у составных частей такого компонента будет не особенно много вариаций.

Если же вникнуть в тему работы с сообщениями, то окажется, что один только интерфейс чата — это такая штука, при создании которой нужно учесть невероятное количество деталей. Особенно — если это чат некоей платформы, сравнимой по масштабам с Facebook.



В этой статье я расскажу об устройстве компонента, представляющего собой блок сообщения Facebook Messenger, покажу варианты его стилизации, поделюсь некоторыми интересными находками.
Читать дальше →

ИИ  учится определять проблемы со здоровьем человека по звуку его голоса

Время на прочтение4 мин
Количество просмотров3.3K

Голосовые биомаркеры - специфические параметры голоса человека. После "извлечения" их можно проанализировать, выявив те либо иные проблемы со здоровьем того человека, чей голос изучали. Алгоритмы машинного обучения дают возможность значительно увеличить эффективность такого способа определения заболеваний.

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

Читать далее

Старые песни о главном

Время на прочтение4 мин
Количество просмотров11K

Программисты старшего (и очень старшего) возраста наверняка помнят такую книгу Фролова и Олюнина: «Практический курс программирования на языке PL/1», изданную в 80-х массовым тиражом. В те времена не было Интернета, и поэтому получить нужную информацию можно было, только купив или взяв в библиотеке или у коллеги соответствующую книгу. Поэтому и специальная литература издавалась в Советском Союзе фантастическими по нынешним меркам тиражами. Впрочем, в масштабах страны тогда и стотысячный тираж не мог обеспечить требуемыми экземплярами все библиотеки. Но даже с учетом всех этих обстоятельств, общий тираж изданий книги Фролова и Олюнина велик, он превысил 300 000! Наверное, это был самый массовый учебник по языку программирования в нашей стране. А ведь это было всего лишь учебное пособие для студентов.

Читать далее

Delphi+OpenCV

Время на прочтение13 мин
Количество просмотров9.7K

Сначала была мечта…

Что-то похожее на робототехническую систему, с двумя подвижными камерами, способностью отслеживать (направлять «взгляд» на) заданный объект и определять расстояние до объекта. И это был 2012 год. Но так как я больше программист нежели железячник, то все началось с реализации существующих в то время алгоритмов. Скоро пришло осознание, что алгоритмы и их реализация не есть цель. Цель – робототехническая система. Поэтому было принято решение воспользоваться существующими библиотеками обработки изображений. Но, к сожалению, на Object Pascal готовые библиотеки алгоритмов, которые были найдены в то время, не позволяли решать поставленные задачи.

Читать далее

ATT&CK v10: больше объектов, техник и функций

Время на прочтение4 мин
Количество просмотров1.6K

Привет! Сегодня рассказываем о том, какие обновления и функции ждут пользователей новой версии MITRE ATT&CK: v10. Свежий релиз включает в себя новые источники данных, новый контент и улучшения, связанные с техниками, группами, программного обеспечения корпоративного сегмента и мобильных устройств.

Читать далее

Python и чистая архитектура в 2021 году

Время на прочтение11 мин
Количество просмотров26K

Прошло уже почти 3 года с тех пор, как я впервые воспользовался чистой архитектурой на практике. С тех пор я побывал на многочисленных конференциях, где выступал с докладами на эту тему (вот, например, доклад Clean Architecture in Python с конференции PyGotham 2018). Кроме того, я написал статью о чистой архитектуре на Python, которая попала в рассылку RealPython.com … но сейчас заканчивается 2021 год, и мы ушли далеко вперед. Давайте рассмотрим, как развился Python, изучим разные крутые библиотеки, благодаря которым реализовывать чистую архитектуру на Python сегодня стало гораздо проще.

Сначала вспомним о том, зачем она нужна.

Читать далее

Big data. Математика на службе биологии

Время на прочтение15 мин
Количество просмотров8.7K
Автор сообщества Фанерозой, биотехнолог, Людмила Хигерович.

image
Так или иначе, каждый человек, использующий масс-медиа, краем уха слышал о “биг дата”. Однако что это такое на самом деле, за границами ИТ мало кто представляет. И еще меньше людей знают о том, насколько сильно наш сегодняшний мир, каким мы его знаем, зависит от этого малопонятного термина. При этом речь идет не только об обработке больших потоков данных новостей или запросов браузера, или социальных сетей. Сегодня мы расскажем вам о том, как технологии Big Data помогают расширять границы науки.
Читать дальше →

Сегментация изображений со спутника с помощью сверточной нейронной сети

Время на прочтение5 мин
Количество просмотров6.2K

Часто во многих сферах деятельности возникает необходимость определения местоположения объектов на изображении. Например, необходимо найти дефект при сборке деталей, провести первичную обработку медицинского снимка или составить карту местности по снимкам со спутника. Данная задача решается с помощью сегментации. Сегментация - это нахождение областей изображения, однородных по какому-либо критерию, например, по яркости или по границам объектов, находящихся на картинке.

Сейчас мы попытаемся решить похожую задачу. В данном кейсе будут проанализированы спутниковые снимки на предмет определения на них географических объектов, таких как реки, поля, дома, дороги и леса. Для решения таких задач используется сверточная нейронная сеть. Одной из распространенных её архитектур является модель U-Net. На вход нейронной сети подается изображение, и далее создается маска, которая будет определять объекты из разных классов на изображении.

Читать далее

Git. Коротко о главном

Время на прочтение15 мин
Количество просмотров72K

Привет, Хабр!

Сегодня я хочу кратко изложить, что такое Git и с чем его едят. Данный материал предназначен для тех, кто плохо знаком с системами контроля версий и только начал делать первые шаги в этом направлении.

Читать далее

ХPath: что нужно делать, а что нет

Время на прочтение5 мин
Количество просмотров20K

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

Читать далее

Как мы перестали плодить шаблонный код при работе с табличными представлениями в iOS

Время на прочтение10 мин
Количество просмотров5.1K

Девять из десяти экранов любого iOS-приложения имеют табличный вид. Неважно, как реализовано это представление — на UITableView или UICollectionView, но для его реализации необходимо каждый раз писать шаблонный код:

1) реализация табличного источника данных (UITableViewDataSource);

2) реализация табличного делегата (UITableViewDelegate);

3) реализация обратных уведомлений вью об изменениях данных;

4) типичный код по работе с различными коллекциями (плоские, секционные списки на основе массивов, упорядоченных множеств и прочих коллекций) и преобразование их к табличным структурам для источника данных коллекции;

5) все предыдущие пункты придётся повторить, если вы вдруг решите использовать UICollectionView.

Такое большое количество шаблонного кода значительно увеличивает время разработки, тестирования и ревью. Для уменьшения time-to-market мы в ПСБ создали микромодуль, который скрывает в себе весь шаблонный код. Новый модуль представляет собой набор абстрактных реализаций, лёгких в переиспользовании и достаточно универсальных для использования в 90% общих задач. В этой статье расскажем подробности.

Читать далее

Самая большая проблема в ваших проектах прямо сейчас

Время на прочтение3 мин
Количество просмотров2K

В этот четверг вечером мы проведём открытую ютуб-трансляцию небольшого QA-митапа в Санкт-Петербурге. Накануне мы задали спикерам мероприятия несколько интересных вопросов — вот их истории.

Читать далее

Как правильно внедрять изменения, которые никто не хочет

Время на прочтение10 мин
Количество просмотров17K

Типичная история тимлида. Съездил на конференцию, узнал новые вдохновляющие идеи и загорелся ими. Начал сходу внедрять то, что (по его мнению) точно сработает, и получил закономерный отпор команды: «Зачем нам вообще что-то менять?»

«Но доклад был классный! Это точно рабочий инструмент!» — думает тимлид. Он начинает поддавливать, иногда уговорами, иногда — другими способами. Команда — «в штыки». Лид получает странный опыт: пришел с благой целью, а получил негатив. Теперь он больше ничего не хочет менять, даже когда это на самом деле нужно. Команда тоже пострадала: после неумелого change-менеджмента она не готова к изменениям вообще. Знакомая история?

И что же, теперь обходить конференции и заразительные идеи стороной? Не внедрять изменения в рабочие процессы команды, пока коллеги сами их не захотят? Совсем нет. Сейчас я ведущий разработчик в облачной платформе Selectel, возглавляю команду Compute. На собственном примере расскажу, как правильно внедрять новые идеи в работу команды и можно ли собрать целый «фреймворк» для улучшений.
Читать дальше →

Платежные технологии – просто о сложном. Часть 2

Время на прочтение3 мин
Количество просмотров16K

Процесс проведения платежа с запросом финального статуса операции

Читать далее

Информация

В рейтинге
3 653-й
Зарегистрирован
Активность

Специализация

Специалист
SQL