Pull to refresh
0
@PROp0vednikread⁠-⁠only

User

Send message

Строим систему распознавания лиц на основе Golang и OpenCV

Reading time4 min
Views18K

OpenCV — библиотека, разработанная для проектов по компьютерному зрению. Ей уже около 20 лет. Я использовал ее еще в колледже и до сих пор применяю для своих проектов на C++ и Python, поскольку она имеет неплохую поддержку этих языков.

Но когда я начал изучать и использовать Go, мне стало интересно, можно ли применить OpenCV для работы с этим языком. В то время уже существовали примеры и туториалы по интеграции, но мне показалось, что они слишком сложные. Чуть позже мне в руки попался враппер, созданный командой The Hybrid Group. В этой статье я покажу, как начать с GoCV, разработав простую систему распознавания лиц с каскадами Хаара (Haar Cascades).
Читать дальше →
Total votes 27: ↑22 and ↓5+17
Comments4

Правильная типизация: недооцененный аспект чистого кода

Reading time6 min
Views11K
Здравствуйте, коллеги.

Не так давно наше внимание привлекла почти готовая книга издательства Manning «Programming with types», подробно рассматривающая важность правильной типизации и ее роль при написании чистого и долговечного кода.



При этом, в блоге автора мы обнаружили статью, написанную, по всей видимости, на ранних этапах работы над книгой и позволяющую составить впечатление об ее материале. Предлагаем обсудить, насколько интересны идеи автора и потенциально — вся книга
Читать дальше →
Total votes 34: ↑30 and ↓4+26
Comments65

Справочная: квантовая криптография на пальцах

Reading time11 min
Views34K


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

Стивен Визнер из Колумбийского университета в 1983 году предложил создать квантовые банкноты государственного образца, которые нельзя скопировать даже в том случае, если у желающего сделать это есть типографское оборудование и бумага, при помощи которых изготавливался оригинал. Вероятность изготовления точной копии оригинала, защищенного квантовыми технологиями, стремится к нулю.
Читать дальше →
Total votes 33: ↑30 and ↓3+27
Comments11

LEAN + AGILE = AGILEAN или собираем целое по частям

Reading time7 min
Views6.1K

1. Неправильный полёт неправильного шмеля. (Вступление)


Откуда взялись науки математика и физика?

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

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

Есть известный случай, когда на заре аэродинамики учёные попытались рассчитать по её законам полёт шмеля, оказалось, что он летает против законов физики. Причиной, конечно, была не «неправильность» шмеля, а несовершенная научная интерпретация законов природы, которая потом была исправлена, и счастливый шмель вновь залетал, но теперь уже в строгом соответствии с аэродинамикой.

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

2. Бизнес как слон


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

Все знают притчу о том, как слепые щупали слона за разные места и пытались описать животное. Представление у того, кто держался за хобот, сильно отличалось от того, кто держался за ногу или бивень.
Читать дальше →
Total votes 8: ↑7 and ↓1+6
Comments3

Как правильно задавать вопросы, если ты начинающий айтишник

Reading time5 min
Views50K
Привет!

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

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

Тем, кто уже стал, или еще только мечтает стать начинающим разработчиком, я могу дать следующие рекомендации:

  • Изучайте проблему самостоятельно
  • Сначала сообщайте цель, потом озвучивайте проблему
  • Пишите грамотно и по существу
  • Задавайте вопросы по адресу и делитесь решением
  • Уважайте чужое время
  • Смотрите шире

А теперь подробнее.
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments32

Встраиваем Lua интерпретатор в проект для микроконтроллера (stm32)

Reading time11 min
Views17K


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

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

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

В качестве скриптового языка я выбрал Lua.
Читать дальше →
Total votes 36: ↑35 and ↓1+34
Comments44

Как мы обучили нейронную сеть классифицировать шурупы

Reading time10 min
Views28K
Нейронная сеть может опознать котика на фотографии, найти диван, улучшить видеозапись, нарисовать картинку из щенят или простого наброска. К этому мы уже привыкли. Новости о нейросетях появляются почти каждый день и стали обыденными. Компании Grid Dynamics поставили задачу не обыденную, а сложную — научить нейросеть находить специфический шуруп или болт в огромном каталоге интернет-магазина по одной фотографии. Задачка сложнее, чем найти котика.



Проблема интернет-магазина шурупов — в ассортименте. Тысячи или десятки тысяч моделей. У каждого шурупа свое описание и характеристики, поэтому на фильтры нет надежды. Что делать? Искать вручную или искать в гипермаркете на полках? В обоих случаях это потеря времени. В итоге клиент устанет и пойдет забивать гвоздь. Чтобы помочь ему, воспользуемся нейросетью. Если она может находить котиков или диваны, то пусть занимается чем-то полезным — подбирает шурупы и болты. Как научить нейросеть подбирать для пользователя шурупы быстро и точно, расскажем в расшифровке доклада Марии Мацкевичус, которая в компании Grid Dynamics занимается анализом данных и машинным обучением.
Total votes 88: ↑84 and ↓4+80
Comments33

Игра Cities: Skylines оказалась Тьюринг-полной: создаём 4-битный сумматор

Reading time4 min
Views35K
Cities: Skylines — это игра-симулятор города, обладающий достаточной сложностью, чтобы создавать в нём универсальные логические элементы. При помощи универсальных логических элементов можно построить любую схему, в том числе и Тьюринг-полные машины. То есть как и в Minecraft, мы можем создать внутри Cities: Skylines компьютер. Однако было бы очень трудно создавать на основе этих элементов полнофункциональный компьютер, поэтому я продемонстрирую вместо него 4-битный сумматор. Всё выполняется в ванильной версии игры, не требуется ни модов, ни дополнений.

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


Основные участники, слева направо: электростанция на жидком топливе, водонапорная башня, канализационная труба. Сзади стоит ветровая турбина.
Total votes 97: ↑97 and ↓0+97
Comments20

Как не потерять деньги в черном ящике: методы тестирования биллинга

Reading time17 min
Views14K
Проверка платных сервисов — один из ключевых инженерных вопросов в тестировании Badoo. Наше приложение интегрировано с 70 платёжными провайдерами в 250 странах мира, и баг хотя бы в одном из них может привести к непредсказуемым последствиям. 

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

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



Читать дальше →
Total votes 39: ↑38 and ↓1+37
Comments9

5 причин, почему вы должны забыть о Redux в приложениях на React

Reading time3 min
Views76K
Я работаю с Реактом на протяжении почти 3 лет, использовал как Redux так и MobX и у меня к текущему моменту возник вопрос. Почему абсолютное большинство front-end разработчиков продолжают свято верить в то, что Redux + Redux Saga + Reselect + 100500 других библиотек «облегчающих» жизнь — это лучшее решение на сегодняшний момент? Я приведу 4 аргумента в пользу того, чтобы в следующем проекте вы использовали MobX вместо Redux.
Читать дальше →
Total votes 76: ↑64 and ↓12+52
Comments478

10 советов, как ревьюить код, который вам не нравится

Reading time4 min
Views18K
Я постоянно делаю коммиты в проекты open source (Red Hat и др.). И заметил, что больше всего времени отнимают негативные код-ревью, субъективные по сути. Чаще всего такое происходит с коммитами, где мейнтейнеру по какой-то причине не нравится ваше изменение. В лучшем случае такая стратегия код-ревью приводит к потере времени в бессмысленных спорах; в худшем случае он активно препятствует коммиту, создавая враждебную и элитарную среду.

Код-ревью должен быть объективным, кратким и, по возможности, содержать только определённые факты. Это не политический или эмоциональный спор, а технический. Его цель — продвижение вперёд, развитие проекта и всех участников. Любой коммит должен оцениваться только по существу, а не по субъективному мнению.
Читать дальше →
Total votes 46: ↑43 and ↓3+40
Comments35

7 штук, которые точно не надо делать при открытии кружка робототехники. Вот совсем не надо делать

Reading time5 min
Views56K


Уже 2 года я развиваю робототехнику в России. Наверно громко сказано, однако недавно устроив вечер воспоминаний понял, что за это время под моим руководством было открыто 12 кружков по России. Сегодня решил написать об основных штуках, которые я делал в процессе открытия, но Вам этого делать точно не нужно. Так сказать, концентрированный опыт в 7 пунктах. Выделил только самый сок. Приятного чтения.
Читать дальше →
Total votes 104: ↑98 and ↓6+92
Comments151

Некоторые аспекты оптимизации LINQ-запросов в C#.NET для MS SQL Server

Reading time6 min
Views24K
LINQ вошел в .NET как новый мощный язык манипуляции с данными. LINQ to SQL как часть его позволяет достаточно удобно общаться с СУБД с помощью например Entity Framework. Однако, достаточно часто применяя его, разработчики забывают смотреть на то, какой именно SQL-запрос будет генерировать queryable provider, в вашем случае — Entity Framework.
Читать дальше →
Total votes 50: ↑49 and ↓1+48
Comments379

Почему Mozilla назвали «главным злодеем интернета»?

Reading time4 min
Views54K

Личная приватность или общественная безопасность


В начале июля Ассоциация интернет-провайдеров Великобритании (ISPA-UK) подвела итоги ежегодной номинации «главный герой» и «главный злодей» интернета. В число «главных злодеев» попала организация Mozilla.

Это неожиданное решение. Широко известны Манифест и 10 принципов, в соответствии с которыми Mozilla обещает бороться за здоровье Интернета: «Открытый, глобальный Интернет — это самый мощный из известных нам ресурсов коммуникации и сотрудничества. Он воплощает наши самые глубокие надежды на прогресс человечества. Он предоставляет новые возможности для обучения, взаимопонимания и решения глобальных проблем».

Mozilla — одна из немногих организаций, которая ставит своей целью не получение прибыли, а именно развитие интернета и защиту пользователей. За что же ей присудили звание «главный злодей»? Оказывается, именно за это, то есть за «излишнюю» защиту пользователей. Яблоком раздора стал протокол DoH (DNS-over-HTTPS).
Читать дальше →
Total votes 57: ↑53 and ↓4+49
Comments137

Смок-тестирование релиз-кандидата автотестами за 15 минут

Reading time5 min
Views11K
Меня зовут Лилия, я QA Lead в одном из проектов финансовой группы БКС (сервис по подбору выгодных для клиента предложений из ряда кредитных продуктов), и сегодня я расскажу, как мы автоматизировали смок-тестирование, с какими проблемами столкнулись и какой стек технологий используем.

Сначала мы решили автоматизировать регресс-тестирование, но время шло, функциональность менялась и мы поняли, что довольно много времени тратится на поддержку уже написанных автотестов. Поэтому решили автоматизировать сначала смок-тест, а затем уже расширять его до автоматического проведения регрессионного тестирования. Перед отделом тестирования была поставлена задача в максимально сжатые сроки произвести автоматизацию смок-тестирования, т.к. проект продолжал расти и обрастать дополнительными функциями.
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments31

Пишем мультиязычное приложение на React Native

Reading time4 min
Views7K


Локализация продукции очень важна для международных компаний, осваивающих новые для себя страны и регионы. Аналогично локализация нужна и мобильным приложениям. Если разработчик начинает международную экспансию, важно дать пользователям из другой страны возможность работать с интерфейсом на родном языке. В этой статье мы создадим приложение React Native, используя пакет react-native-localize.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments2

Повтор неудачных HTTP-запросов в Angular

Reading time9 min
Views12K
Организация доступа к серверным данным — это основа почти любого одностраничного приложения. Весь динамический контент в таких приложениях загружается с бэкенда.

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

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

А что если поезд попадёт в туннель? Тут высока вероятность того, что связь с интернетом прервётся и веб-приложение не сможет «достучаться» до сервера. В этом случае пользователю придётся перезагрузить страницу приложения после того, как поезд выедет из туннеля и соединение с интернетом восстановится.

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

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



Материал, перевод которого мы сегодня публикуем, посвящён разбору нескольких способов повторения неудачных запросов в Angular-приложениях.
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments6

Как придумывать содержательные имена для вашего кода

Reading time4 min
Views13K
Перед вами перевод статьи из блога Better Programming на сайте Medium. В ней программист Daan делится простыми правилами, следуя которым вы сможете давать хорошие имена функциям и переменным.



Будучи разработчиком, вы наверняка тратите много времени на создание переменных и придумывание их имен. Имена повсюду: они нужны для файлов, классов, методов и тех самых переменных.

Так как мы проводим столько времени присваивая имена, очень важно делать это качественно. В данной статье я расскажу вам о нескольких простых правилах, следуя которым вы сможете создавать хорошие имена. Ведь это целое искусство!
Читать дальше →
Total votes 35: ↑24 and ↓11+13
Comments19

Habr Weekly #9 / Выгорание в юности, японские интерфейсы, нейросеть в Battle.net, игры и жестокость

Reading time1 min
Views5.6K
Total votes 28: ↑22 and ↓6+16
Comments1

Пишем API для React компонентов, часть 5: просто используйте композицию

Reading time5 min
Views4.6K
Пишем API для React компонентов, часть 1: не создавайте конфликтующие пропсы

Пишем API для React компонентов, часть 2: давайте названия поведению, а не способам взаимодействия

Пишем API для React компонентов, часть 3: порядок пропсов важен

Пишем API для React компонентов, часть 4: опасайтесь Апропакалипсиса!

Пишем API для React компонентов, часть 5: просто используйте композицию

Пишем API для React компонентов, часть 6: создаем связь между компонентами

У нас есть компонент значка:


badge-1


<Badge count={12} />

Вы видели их в различных приложениях, они показывают количество объектов в виде числа.


github-1


В cosmos Badge (значок) имеет несколько цветов для каждого конкретного контекста (информация, опасность и т.д.)

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments10
1
23 ...

Information

Rating
Does not participate
Registered
Activity