• Распознавание номеров. Как мы получили 97% точности для Украинских номеров. Часть 2

      Nomeroff Net numberplate detection OCR example


      Продолжаем рассказ о том как распознавать номерные знаки для тех кто умеет писать приложение «hello world» на python-е! В этой части научимся тренировать модели, которые ищут регион заданного объекта, а также узнаем как написать простенькую RNN-сеть, которая будет справляться с чтением номера лучше чем некоторые коммерческие аналоги.
      В этой части я расскажу как тренировать Nomeroff Net под Ваши данные, как получить высокое качество распознавания, как настроить поддержку GPU и ускорить все на порядок…
      Читать дальше →
    • Распознавание номеров. Практическое пособие. Часть 1

        Пример распознавания номерных знаков

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

        И в один прекрасный день МВД Украины открыло доступ к реестру транспортных средств. Теперь по номерному знаку стало возможным проверять некоторую информацию про автомобиль (марку, модель, год выпуска, цвет и т.д. )! Скучная рутина линейного программирования померкла перед новой свехзадачей — считывать номера по всей базе фото и валидировать эти данные с теми, что указывал пользователь. Сами знаете как это бывает «глаза загорелись» — вызов принят, все остальные задачи на время стали скучны и монотонны… Мы принялись за работу и получили неплохие результаты, чем, собственно и решили поделиться с сообществом.
        Для справки: на сайт AUTO.RIA.com, в день добавляется около 100 000 фото.
        Датасаентисты давно уже знают и умеют решать подобные задачи, поэтому мы с dimabendera написали эту статью именно для программистов. Если вы не боитесь словосочетания «сверточные сети» и умеете писать «Hello World» на питоне — милости просим под кат…
        Читать дальше →
      • Раздача статического контента — счет на милисекунды

          image

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

          И вот мы решили ускорять то, что и так работает быстро и, заодно, поделиться опытом того, что получилось в итоге. Конечно же я расскажу о граблях, о том где не надо HTTP/2, о том почему мы покупаем 7,6Tb NVMe SSD вместо 8x1Tb SATA SSD и много другой узкоспециализированной информации.

          Давайте сразу договоримся что хранение и раздача контента это 2 разные задачи и говорить мы будем только про раздачу (продвинутый кеш)

          Начнем с железа…
          Читать дальше →
          • +13
          • 7.2k
          • 8
        • Fedora 25. Новая надежда: Wayland, Storaged, поддержка Raspberry Pi…

            Fedora 25

            22 ноября Fedora опять зарелизилась. 25-й релиз, на мой взгляд, получился очень удачный:

            • Замена старого сервера X.Org или X11 на Wayland. Поддержка сеанса на базе X11 сохранена в качестве опции
            • UDisks2 заменён на Storaged, предоставляющий унифицированный D-Bus API для управления LVM2, iSCSI, Btrfs, BCache, LSM и ZRam
            • Поддержка устройств Raspberry Pi 2 и 3

            Читать дальше →
          • Node.js 7.0.0 зарелизился. Встречайте async/await без babel

              File:Node.js logo 2015.svg

              7-я нода зарелизилась, ура! Что нового:

              • Движок V8 обновлён до версии 5.4.500.36, в которой обеспечена поддержка 98% возможностей JavaScript, определённых в спецификации ES2015 (ES6) и, частично, будущим стандартом ES2017.
              • Отмечается новый парсер URL, соответствующий стандарту оформления URL, подготовленному сообществом WHATWG.
              • Доработана работа с Buffer, Child Process, Cluster, файловой системой, промисами
              • Полный список изминений

              Для меня это долгожданный релиз, так как появилась возможность изпользовать конструкцию async/await без транспайлера babel. Включается это все ключом --harmony.

              Теперь можно без babel так:
              Читать дальше →
            • Пишем микросервис на KoaJS 2 в стиле ES2017. Часть II: Минималистичный REST

                Koa v2

                Это продожение статьи Пишем микросервис на KoaJS 2 в стиле ES2017. Часть I: Такая разная ассинхронность. Постараюсь угодить начинающему разработчику, который хочет расстаться с express, но не знает как. Кода будет много, текста мало — я ленивый но отзывчивый.
                Читать дальше →
              • Пишем микросервис на KoaJS 2 в стиле ES2017. Часть I: Такая разная ассинхронность

                  Koa v2

                  У Вас никогда не возникало желания переписать все с чистого листа, «забить» на совместимость и сделать все «по уму»? Скорее всего KoaJS создавался именно так. Этот фреймворк уже несколько лет разрабатывает команда Express. Экспресовцы про эти 2 фреймворка пишут так: Philosophically, Koa aims to «fix and replace node», whereas Express «augments node» [С филосовской точки зрения Koa стремится «пофиксить и заменить ноду» в то время как Express «расширяет ноду»].

                  Koa не обременен поддержкой legacy-кода, с первой строчки вы погружаетесь в мир современного ES6 (ES2015), а в версии 2 уже есть конструкции из будущего стандарта ES2017. В моей компании этот фреймворк в продакшене уже 2 года, один из проектов (AUTO.RIA) работает на нагрузке полмиллиона посетителей в день. Несмотря на свой уклон в сторону современных/экспериментальных стандартов фреймворк работает стабильнее Express и многих других фреймворков с CallBack-style подходом. Это обусловлено не самим фреймворком, а современными конструкциями JS, которые в нем применяются.

                  В этой статье я хочу поделиться своим опытом разработки на koa. В первой части будет описан сам фреймворк и немного теории по организации кода на нем, во второй мы создадим небольшой рест-сервис на koa2 и обойдем все грабли, на которые я уже наступил.
                  Читать дальше →
                • Нейронные сети на Javascript

                    image
                    Идея для написания этой статьи возникла прошлым летом, когда я слушал доклад на конференции BigData по нейронным сетям. Лектор «посыпал» слушателей непривычными словечками «нейрон», «обучающая выборка», «тренировать модель»… «Ничего не понял — пора в менеджеры», — подумал я. Но недавно тема нейронных сетей все же коснулась моей работы и я решил на простом примере показать, как использовать этот инструмент на языке JavaScript.

                    Мы создадим нейронную сеть, с помощью которой будем распознавать ручное написание цифры от 0 до 9. Рабочий пример займет несколько строк. Код будет понятен даже тем программистам, которые не имели дело с нейронными сетями ранее. Как это все работает, можно будет посмотреть прямо в браузере.
                    Читать дальше →
                  • Релиз Fedora 24. Гонка за версиями

                      Fedora 24
                      Вчера, 21 июня, вышла в свет новая версия Fedora. Что нового в Fedora можете почитать на oppenet. Я уже полтора месяца пользуюсь этой OS и хотел поделиться с хабралюдьми о том стоит ли переходить и вообще стоит ли так часто релизить.
                      Читать дальше →
                    • Koajs 2.0: новое поколение фреймворка нового поколения

                        KoaJS logo«Next generation web framework for node.js» — так написано в документации к версии 1.0. Звучит неплохо, я к этому добавлю что 2 года назад после внедрения koa на одном из проектов у наших программистов появился термин “псевдо-синхронный код” (Это когда код выглядит как синхронный но на самом деле исполняется асинхронно). Что за бред Как это работает я расскажу под катом.
                        Читать дальше →
                      • Повышаем отказоустойчивость системы на nodejs

                          Отказоустойчивость системы на nodejs
                          3 года назад я поверил в будущее nodejs и начал кампанию по имплементации этого языка в самые “проблемные” сервисы нашего проекта. У нас все получалось — нагрузка падала, стабильность повышалась. Но все же были грабли, о которых захотелось рассказать.

                          Это не исчерпывающее руководство к действию, просто я делюсь своим опытом, если вы профи в nodejs можете дописать в коментах свои рекомендации, на которые я с удовольствием сошлюсь в статье.
                          Читать дальше →
                        • Fedora 22 — все тренды в одной сборке


                            26 мая со станка RedHat сошла очередная Fedora.

                            Из нового, на что стоит обратить внимание


                            • Переход на новый пакетный менеджер dnf (вместо yum). Он стал заметно «легче», использует меньше памяти и так же хорош как apt для Ubuntu
                            • Ядро Linux 4.0 c мегафичей Live Kernel Patching и набора компиляторов GCC 5.1.
                            • Виртуализация GNOME Boxes
                            • Серверная сборка «по умолчанию» использует файловую систему XFS
                            • Рабочий стол GNOME 3.16
                            • наработки по снижению энергопотребления
                            • Усовершенствован GNOME Terminal (возможность вывода уведомлений при завершении длительно работающих заданий, таких как компиляция, что позволит не отвлекаться, постоянно заглядывая в терминал для оценки статуса завершения работы)
                            • Спин Fedora KDE по умолчанию переведён на окружение KDE Plasma 5. Спин Fedora Xfce обновлён до Xfce 4.12
                            • Обновлён Cockpit, web-интерфейс для настройки и мониторинга одного или нескольких серверов
                            • Есть образ Fedora Atomic Host и Fedora Cloud для использования с инструментарием Vagrant, который может использоваться для быстрого развёртывания виртуальных окружений в системах виртуализации на базе KVM и VirtualBox.
                            • Обновлены образы, которые можно использовать в качестве основы для запуска приложений в контейнерах Dockеr.
                            • Инструмент непрерывной интеграции Tunir

                            Подробнее о релизе Fedora 22 на русском
                            Читать дальше →
                          • io.js объединяется с NodeJS

                              +

                              Несколько дней назад состоялось заседание технического комитета проекта io.js, на котором принято решение о воссоединении с Node.js и дальнейшем совместном развитии под эгидой организации Node Foundation.
                              Краткое содержание предыдущих серий
                            • Релиз MooTools 1.5

                                image

                                Mootools долгое время был неотъемлемой составляющей клиентского JavaScript на Habrahabr. Печально было наблюдать за угасанием творения Valerio Proietti. С мая 2013 года записи на блоге практически не добавлялись…

                                Но сегодня утром команда mootools выдала очередной релиз и добавила нотки оптимизма в сердца ценителей этого фреймворка.
                                Что же нового в mootools 1.5
                                • +15
                                • 8.1k
                                • 2
                              • Ускоряем раздачу фоток


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

                                  Проявляется это приблизительно так: иногда 3Kb картинка грузится так, как будто бы она весит 3Mb, на ровном месте начинают «залипать» (отдаваться очень медленно) css-ы и JavaScript-ы. Вы нажимаете ctrl + reload — и уже, вроде, проблемы нет, потом спустя всего несколько минут все повторяется опять.

                                  Не всегда истинная причина «тормозов» очевидна и мы косо поглядываем то на nginx, то на хостера, то на «забитый» канал, то на «тормозной» или «глючный» браузер :)

                                  На самом деле проблема в несовершенстве современного винчестера, который до сих пор не расстался с механическими подсистемами вращения шпинделя и позиционирования головок.

                                  В этой статье я предложу Вам свое решение этой проблемы, основанное на практическом опыте использования SSD дисков совместно с web-сервером nginx.
                                  Читать дальше →
                                • Кеширование блоков с помощью nginx

                                    nginx + SSIМногим разработчикам знакома ситуация когда кешировать страницы сайта, скажем, на 5-10 минут нельзя всего из-за одного небольшого блочка, актуальность которого нужно поддерживать если не в реальном времени, то с временем «старения» не больше 5-10 секунд. При этом посещаемость сайта продолжает расти, растет время генерации страниц и c этим надо что-то делать…
                                    • Вариант решения 1: Подкрутить то, до чего не доходили руки последнее полгода. Все Вас поймут и передвинут сроки на другие задачи. Вы будете в роли «Супермена» один спасать сайт от непомерной нагрузки, решая проблему «бесплатно» (без доп. вливаний в оборудование). Вам может пригодиться статья «Тюнинг nginx».
                                       
                                    • Вариант решения 2: Улучшить техническую базу (докупить мозгов на сервер, улучшить дисковую систему, поставить под БД отдельный сервер). В принципе проблема не решена, а скорее отложена. Теперь у Вас есть время «окопаться» и подготовиться ко второй волне наплыва нагрузки, она будет больше и накроет сильнее.
                                       
                                    • Вариант решения 3: Ваш вариант, о котором я, вероятно, узнаю из комментариев.
                                       
                                    Позвольте предложить и мне проверенное и относительно простое решение на базе одной из старейших технологий в Web-разработке.
                                    Читать дальше →
                                  • Управляем Flash-объектом на Javascript

                                      Управляем Flash-объектом на JavaScript

                                      Возможности JavaScript в 95% случаев позволяют решить любую задачу для Web 2.0. Но иногда хочется чуточку больше, чуточку красивее, возможно, чуточку быстрее. В этой статье на примерах я хочу показать, как восполнить этих 5% недостающего функционала средствами Flash.
                                      Эта статья будет полезна разработчикам, которые пишут в основном на JavaScript и имеют минимальные знания ActionScript 3.

                                      Для вдохновения


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

                                      Этот пример интересен тем, что дизайн и управление контролируется средствами CSS и JavaScript. JavaScript при необходимости использует необходимый функционал из Flash.

                                      Если Вам понравилось, идем дальше: мы рассмотрим как это работает на более простом примере.
                                      Читать дальше →
                                    • Тюнинг nginx

                                        Статья написана по материалам моего доклада на CodeCamp 2009.

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

                                        У любого проекта всегда есть что оптимизировать: можно почитать советы по оптимизации на webo.in, установить eaccelerator, memcache, проиндексировать поисковые поля в базе данных. Я предполагаю, что все это уже проделано, а сайт по прежнему тормозит.

                                        Пришло время оптимизировать nginx...

                                        Читать дальше →
                                      • NGINX научился кешировать проксированные запросы

                                          Почти год назад на RIT 2008 Игорем Сысоевым была анонсирована поддержка кеширования в будущих версиях nginx. И вот сегодня вышла новая бета nginx 0.7.44, в которой появилось это долгожданное кеширование

                                          Этот функционал оценят в первую очередь разработчики высоконагруженных систем, для которых операция установления сетевого соединения с backend «дороже» обычной дисковой операции (с точки зрения затраты ресурсов)

                                          На RIT 2008 автор отмечал, что большим преимуществом nginx перед демоном squid, который тоже можно использовать как reverse proxy, является отсутствие стартового торможения, когда squid начинает сканировать директорию с кешем, что в народе называется «давать сквида».

                                          Хочется отметить, что некого подобия кеширования можно было добиться с помощью использования директив proxy_store + try_files, но управлять таким кешем было достаточно сложно и затратно.

                                          Очень интересно было бы услышать отзывы от пользовалелей замонтировавших кеш на SSD-диск.