Рубрика «Алгоритмы» - 49

Предыстория

Есть торговые автоматы собственной разработки. Внутри Raspberry Pi и немного обвязки на отдельной плате. Подключены монетоприёмник, купюроприёмник, банковский терминал… Управляет всем самописная программа. Вся история работы пишется в журнал на флешке (MicroSD), который потом передаётся через интернет (с помощью USB-модема) на сервер, там складывается в БД. Информация о продажах загружается в 1с, также есть простенький веб-интерфейс для мониторинга и т.п.

То есть журнал жизненно необходим — для учёта (там выручка, продажи и т.д.), мониторинга (всевозможные сбои и другие форс-мажорные обстоятельства); это, можно сказать, вся информация, которая у нас об этом автомате.

Проблема

Флешки показывают себя как очень ненадёжные устройства. Они с завидной регулярностью выходят из строя. Это приводит как к простоям автоматов, так и (если по каким-то причинам журнал не мог быть передан онлайн) к потерям данных.

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

Читать полностью »

Как проверить паспорт на действительность - 1

Реквизиты паспорта — не просто набор цифр, в них закодирован вагон информации. Если правильно расшифровывать и сопоставлять реквизиты, подозрительные документы мгновенно всплывут на поверхность. Продукты HFLabs уже 14 лет проверяют клиентские данные в банках, страховых, телекомах и другом крупном бизнесе. Расскажу, как мы распознаем ошибки в российских паспортах.
Читать полностью »

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

Чаще прочих встречается вот такая алгоритмическая идея.

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

Применение зашифрованных данных для машинного обучения без их расшифровки - 1

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

Здесь можно скачать пакет, реализующий всю магию, а здесь находится код, который рассматривается в статье.
Читать полностью »

image

Оценка того, эгоистичны или альтруистичны водители вокруг, имеет большое значение.

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

Такие сцены разыгрываются по всему миру бесчисленное количество раз в день. И это ситуация, в которой сложно понять физику движения и мотивы других водителей, о чем говорит тот факт, что в Соединенных Штатах каждый год происходит 1,4 миллиона аварий при поворотах. Теперь добавьте в эту ситуацию автономные автомобили. Обычно они ограничиваются только оценкой физических параметров и принимают более осторожные решения в ситуациях с неоднозначной обстановкой.
Читать полностью »

На одной асимптотике далеко не уедешь… - 1

Любители посоревноваться в алгоритмах часто говорят об асимптотике того или иного решения задачи. При этом нередко можно встретить высказывания, что, мол, «вот этот» алгоритм работает за O(n), а «вон тот»  – за O(n·log(n)), значит первый однозначно быстрее и, следовательно, лучше. Либо раз оба метода работают за O(n²), значит их можно считать равнозначными, и обсуждать, чем один может быть лучше другого, особого смысла нет.

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

Читать полностью »

Выявление мошенничества с помощью алгоритмов случайного леса, нейронного автокодировщика и изолирующего леса - 1

Согласно отчёту Nilson о ситуации с банковскими картами и мобильными платежами, суммарный объём потерь в результате мошенничества ещё в 2016-м достиг $22,8 млрд, что на 4,4% больше, чем в 2015-м. Это только подтверждает необходимость для банков научиться распознавать мошенничество заранее, еще до того, как оно состоялось. Читать полностью »

Жизнь Джона Конвея

Полагаю, всем программистам хорошо известен клеточный автомат жизнь (или эволюция), придуманный английским математиком Джоном Конвеем в 1970 году. Возможно, некоторые даже корпели над самописной программой, моделирующей клеточный автомат Конвея.Читать полностью »

Перевод: Привет! Представляю вашему вниманию перевод статьи "A Quick Intro to Recursion in Javascript" Yazeed Bzadough.

Примечание. Рекурсия не единожды обсуждалась на хабре, но данная статья даёт базовое понимание рекурсии. Это будет полезно начинающим разработчикам. Также, данная статья является моим первым переводом, поэтому прошу оставлять свои комментарии с конструктивной критикой по переводу и статье.

recursion_1

Функция продолжает вызывать себя пока не будет остановлена.

Начинающие разработчики часто плохо понимают рекурсию. Возможно, это вызвано тем, что в обучающих материалах часто используются алгоритмические примеры (числа Фибоначчи, связные списки).

В данной статье мы будем использовать всего один простой пример.

Читать полностью »

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

Следом за ТСД, на рынок мобильных устройств пришли смартфоны, которые в значительной мере превзошли существующие терминалы, как в аппаратной части, так и в функциональных возможностях операционных систем. Лишь относительно недавно, терминалы сбора данных получили ОС Android, однако их стоимость совершенно не сопоставима со стоимостью смартфонов.

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

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js