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

Программирование *

Искусство создания компьютерных программ

Сначала показывать
Порог рейтинга
Уровень сложности

Балансировка массива для ML при недостаточном количестве миноритарных объектов в массиве

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

При моделировании какого-либо процесса с помощью ML (machine learning), одной из наиболее трудоемких и ответственных задач является создание массива данных, достаточного по объему для создания модели с высокими качественными характеристиками. Что делать, если данных недостаточно?

В рамках одной из задач по созданию математической модели, оценивающей вероятность манипулирования финансовой отчетностью, предоставляемой клиентом в банк, была зафиксирована проблема недостаточности данных для обучения модели с учителем. В качестве объекта массива была выбрана квартальная финансовая отчетность (ФО). Массив состоял из нескольких тысяч объектов, и для нашей задачи этого было достаточно. Проблема появилась при формировании значений целевой переменной. Аналитиками было выявлено всего лишь 20 доказанных случаев манипулирования финансовой отчетностью. Это крайне малое количество для массива, состоящего из нескольких тысяч объектов. При случайной разбивке массива, в нашем случае на 5 фолдов, при применении функции кросс-валидации, высока вероятность того, что какой-либо из фолдов окажется без объектов с доказанными случаями манипулирования ФО. В данном случае функционал кросс-валидации будет бесполезен и процесс по обучению модели будет завершаться ошибкой.  

На первый взгляд, есть решение данной проблемы, которое заключается в применении метода «indersampling», суть которого заключается в дублировании в массиве тех объектов, для которых в нашем случае доказаны факты манипулирования ФО.  Как оказалось, применение метода «indersampling» решило проблему кросс-валидации, но создать модель с приемлемыми метриками качества не получилось. Был сделан вывод о том, что применение метод «indersampling» не целесообразно в случае, когда количество объектов миноритарного класса и мажоритарного класса отличаются на несколько порядков. В нашем случае метод дублирования создает большое количество объектов в массиве, которые являются полными копиями своего родителя. В этом случае массив теряет свою уникальность, и обучение на такой выборке приводит к переобучению модели. Очевидность данного факта демонстрируют метрики качества модели на тестовой выборке.

Читать далее

10 ведущих технических трендов 2021 года, на которые стоит обратить внимание программистам

Время на прочтение6 мин
Количество просмотров25K
Для индустрии разработки программного обеспечения и для программистов 2020 год стал значительным годом больших прорывов во многих областях. Пандемия значительно ускорила перевод самых разных процессов в цифровую среду, в результате тренды, о которых мы сегодня поговорим, будут представлять собой более масштабные явления, чем нечто подобное в прошлом году.

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



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

Здесь мне хотелось бы рассмотреть технологические тренды 2021 года, на которые стоит обратить внимание программистам. Всё то, о чём я буду говорить, основано на фактах, цифрах и данных из надёжных источников.
Читать дальше →

Как я выбирал между .NET и Java

Время на прочтение9 мин
Количество просмотров41K
С .NET я познакомился на первом официальном месте работы: небольшой IT-компании, сотрудничающей с нефтянкой. Это продолжение истории, начало можно почитать здесь. 


Читать дальше →

Представляем Windows Package Manager 1.0

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

Мы начали путь к созданию собственного диспетчера пакетов для Windows 10, когда анонсировали предварительную версию диспетчера пакетов Windows на Microsoft Build 2020. Мы выпустили проект на GitHub как совместный с открытым исходным кодом, и участие сообщества было очень важным аспектом! И вот недавно прошла конференция Microsoft Build 2021.

И мы рады объявить о выпуске Windows Package Manager 1.0! Подробности под катом!

Читать далее

Применение интерфейса Collector для работы с потоками в реальных Java-проектах

Время на прочтение5 мин
Количество просмотров14K
Автор статьи, перевод которой мы публикуем сегодня, хочет рассказать о том, как интерфейс Collector и сопутствующие механизмы используются в реальных проектах.

В Java-программировании при работе с потоками широкое применение находят методы класса Collectors. Эти методы позволяют возвращать либо объекты, в основе которых лежит базовый класс Collection, либо — скалярные значения. В первом случае, то есть — для возврата коллекций, применяют один из методов, имя которого выглядит как toXXX(), а во втором случае используется, например, метод reducing().

Представим себе интернет-магазин, в котором есть корзина. Модель корзины выглядит так, как показано ниже.


Модель корзины

Если перевести эту диаграмму классов в код, опустив некоторые детали, то получится следующее.
Читать дальше →

Простое ускорение Java с помощью Quarkus и JHipster

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

К старту курса о разработке на Java делимся переводом вводной статьи о Quarkus — "родной" для Kubernetes Java-платформе для создания высокопроизводительных веб-, бессерверных (serverless) и нативных приложений (оптимизированных для используемых микропроцессоров). В ней используются предварительная компиляция AOT и агрессивная оптимизация, например сканирование путей к классам, перезагрузка конфигурации и предварительная конфигурация самозагрузки приложения в процессе сборки. Результатом становится впечатляющая скорость загрузки. Другими словами, приложения, созданные с Quarkus, запускаются не просто быстро, а очень быстро!

Читать далее
Привет, Хабр! На прошлой неделе завершилась конференция Microsoft Build 2021: на ней компания представила новинки и рассказала о своем видении того, как будет развиваться разработка. Мы решили пофантазировать, как могла бы выглядеть аналогичная конференция, если бы компания занималась не ПО, а котиками. Под катом подборка новостей с конференции Microsoft Cats 2021.
Больше котиков

Symfony Messenger: объединение сообщений в пакеты

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

Иногда требуется сделать так, чтобы сообщения в Symfony Messenger отправлялись потребителю пакетами, а не поодиночке. Недавно нам потребовалось отправлять через Messenger обновленные строки текста из наших программ поставщику переводческих услуг.

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

Покажем, как мы это сделали.

Читать далее

Модульный PHP монолит: рецепт приготовления

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

Статья написана по мотивам моего доклада на митапе. В нем я рассказываю историю того, как мы взяли и не распилили монолит на микросервисы, и что сделали вместо этого.

На тот момент наша команда работала над приложением, начало которому было положено еще в 2009 году не искушенными в архитектуре студентами. К 2018 это уже был типичный big ball of mud (большой ком грязи), или, этакий «монолит-копролит», как выразился один наш коллега. Думаю, многим знакомо.

Читать далее

Обнаружены незадокументированные опкоды в системе инструкций процессора x86

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

Венгерский инженер Кан Бёлюк (Can Bölük) из Verilave нашёл неиспользованные и не задокументированные операционные коды в системе инструкций процессора x86-64.

Проблема обнаружения неиспользованных операционных кодов в том, что при тестировании бывает сложно обнаружить взаимосвязи. Кан Беллюк вывел метод обнаружения практически любой инструкции процессора, используя сторонний канал. Способ интересен тем, что он обращается к нетривиальным возможностям процессора.

Делимся интересным материалом.

Читать далее

Пять причин выбрать JavaScript для IoT-проекта

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

В мире, где цифровая трансформация правит бал, Интернет вещей (IoT) играет ключевую роль в переосмыслении нашего образа жизни и бизнеса. Интернет вещей экономит наше время и повышает производительность — мы можем пользоваться устройствами умного дома, работать в едином виртуальном пространстве и взаимодействовать с коллегами, которые далеко от нас.

Согласно исследованию тенденций в области IoT, проведенному по инициативе корпорации Майкрософт, 85% респондентов в настоящее время активно внедряют IoT-технологии и три четверти планируют их внедрение. Примерно 88% респондентов считают, что Интернет вещей критически важен для развития их бизнеса.

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

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

И здесь нам не обойтись без JavaScript!

Читать далее

Путь казахстанского разработчика: как я пришел к Java

Время на прочтение4 мин
Количество просмотров7K
Привет! Меня зовут Бинали, я руководитель отдела разработки в Beeline Казахстан, работаю в компании почти год. Пришёл в Beeline 1-го июня 2020-го года на позицию Java-разработчика, сейчас я менеджер отдела по разработке ESB. Менеджмент начинает занимать много времени, но пока ещё есть время, чтобы иногда взять задачу в разработку, дабы не потерять навыки программирования.

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


Читать дальше →

Стандарт C++20: обзор новых возможностей C++. Часть 5 «Корутины»

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


25 февраля автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов рассказал о новом этапе языка C++ — Стандарте C++20. В лекции сделан обзор основных нововведений Стандарта, рассказывается, как их применять уже сейчас и чем они могут быть полезны.

При подготовке вебинара стояла цель сделать обзор всех ключевых возможностей C++20. Поэтому вебинар получился насыщенным. Он растянулся на почти 2,5 часа. Для вашего удобства мы разбили текст на шесть частей:

  1. Модули и краткая история C++.
  2. Операция «космический корабль».
  3. Концепты.
  4. Ranges.
  5. Корутины.
  6. Другие фичи ядра и стандартной библиотеки. Заключение.

Это пятая часть, кратко рассказывающая о корутинах, или сопрограммах, в современном C++.

В программировании есть два стула — эффективность и красота. И если вы пишете эффективные программы и оптимизированный код, то иногда приходится жертвовать понятностью, читаемостью и, как следствие, надёжностью.



Но существуют решения, позволяющие усидеть на двух стульях.

Мотивация


Очень часто при программировании возникает задача вернуть из функции не один объект, а целый набор. Есть несколько вариантов решения:
Читать дальше →

Ближайшие события

4 бесплатных мероприятия по Azure в июне

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

Привет, Хабр! Сегодня делимся подборкой наших крутых вебинаров и митапов по Azure в Июне. В этот раз их четыре, и один из четырех эвентов может вас заинтересовать, даже если вы не работаете с Azure: встреча разработчиков, работающих с любыми технологиями Microsoft. Присоединяйтесь!

Читать далее

Простая архитектура приложений на фреймворке Angular

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

Можете ли вы с первого взгляда определить, что находится внутри общего модуля? И, не открывая другой файл, сказать, в каких компонентах есть зависимости или привязки к другим компонентам? Каким бы ни был ваш ответ, я предлагаю вам заварить чай или кофе и разобраться со мной в основах теории атомарного дизайна, придуманной Брэдом Фростом

Читать далее

Haskell – хороший выбор с точки зрения безопасности ПО?

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


Команда Typeable понимает ценность безопасности. Мы любим Haskell, но стоит ли его выбирать, если ваша цель – создание защищенного программного обеспечения? Хотелось бы сказать «да», но как и для большинства эмпирических вопросов о разработке ПО, здесь просто нет объективного доказательства, подтверждающего, что Haskell – или ещё какой-нибудь язык программирования – обеспечивает большую безопасность, чем любой другой. Нельзя сказать, что выбор языка в Typeable не имеет значения для безопасности, но какое именно значение он имеет, еще нужно подумать.


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

Читать дальше →

Как я организую свои скрипты NPM

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

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

Читать далее

Microsoft разработала ИИ-систему, преобразующую простые текстовые запросы в код

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

Корпорация Microsoft на конференции для разработчиков Microsoft Build, которая прошла несколько дней назад, представила интересную новинку. Это модель обработки естественного языка GPT-3 от OpenAI, позволяющая создавать приложения с минимальным знанием языков программирования.

Да, здесь открывается широкий простор для шуток, но у этой разработки неплохие перспективы. Модель преобразует запросы на обычном языке — пока что лишь английском, в код. Результат преобразования не слишком сложный, все же нейросеть не в состоянии написать код на несколько тысяч строк по парочке обычных вопросов. Но потенциал у разработки есть, и немалый.
Читать дальше →

Лаконичный итератор для декларативного синтаксиса

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


Итератор (от англ. iterator ― перечислитель) — интерфейс, предоставляющий доступ к элементам коллекции (массива или контейнера) и навигацию по ним. В различных системах итераторы могут иметь разные общепринятые названия. В терминах систем управления базами данных итераторы называются курсорами.

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

Ну и судя по моим наблюдениям Хабр — ума палата, буду рад любым комментариям и предложениям, которые помогут протестировать или улучшить предлагаемое решение.
Читать дальше →

Domain-driven design, Hexagonal architecture of ports and adapters, Dependency injection и Python

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

Пролог

- Глянь, статью на Хабр подготовил.
- Эм... а почему заголовок на английском?
- "Предметно-ориентированное проектирование, Гексагональная архитектура портов и адаптеров, Внедрение зависимостей и Пайто..."

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

--

Эта техническая статья о применении практик гексагональной архитектуры и всего остального вышеперечисленного в разработке приложений. На примере рассматривается как элегантно вплести гексагональную архитектуру в устоявшуюся, консервативную и казалось бы совершенно безкомпромиссную структуру веб-приложений на Django

Читать далее

Вклад авторов