• Компьютерное зрение на примере приложения для IKEA. Часть 1

    • Tutorial
    Готовился к очередному хакатону, решил обновить свои знания в области компьютерного зрения. В прошлый раз задачу распознавания номеров авто в видеопотоке я так и не смог решить быстро «в лоб». Сейчас, поразмыслив, решил немного упростить задачу. Было много идей, листал фотки в телефоне и наткнулся на привычный кейс для всех, кто бывал в магазине ikea — фотографию с чеком, где указан номер товара и его положение на складе самообслуживания.

    Читать дальше →
  • Комментарии в телеграм-канале

      Знакомство с телеграм-ботами вышло сумбурно — на работе нужно было опередить команду коллег, и, неплохо зная внутренний API, был написан бот за несколько дней (впоследствии доработанный и получивший ru telegram verify badge)

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

      В очередной раз поигравшись в прототип, я хотел придумать, что ещё интересного можно быстро написать в телеграм-стеке. Выбор пал на комментарии.
      Читать дальше →
    • Как перевести речевой аудио-файл в текст с помощью Google translate

      • Tutorial


      Обычно Google translate используют для перевода речи транслируемой микрофоном.


      Но в один момент, автору потребовалось перевести подкаст Медузы в текст.


      Идея лежала на поверхности и наверняка программы для этого должны были присутствовать. Так -же как сделано в Gogle translate.


      Но, гуглением, программы не нашлось, кроме двух сайтов. Которые использовали по уверениям их авторов всю мощь искусственного интеллекта Google.


      Первый нашелся русскоязычный сайт https://speechpad.ru/blog/windows-integration/



      Но, как бы не было обидно, магия не сработала…

      Читать дальше →
    • Универсальный API для получения информации по чекам

        Привет жителям Хабра.

        В данной статье хотелось бы рассказать про API для получения чеков, которое нам не предоставила всеми любимая ФНС.

        Когда только появились QR-коды на чеках я подумал «Вау, как круто! Ты сканируешь код и видишь если не всю инфу по чеку, то ссылку на него». И какого же было мое разочарование, когда просканировав такой код я увидел что-то вроде

        t=20180518T220500&s=975.88&fn=8710000101125654&i=99456&fp=1250448795&n=1

        Но расстраиваться я не стал и подумал, что ФНС позаботилась о нас и предоставила API для получения такой информации. Погуглив некоторое время я понял, что ФНС нам предоставила только мобильное приложение для проверки чека и просмотра той информации, что поступила к ним от магазина.
        Читать дальше →
      • Собираем пользовательскую активность в WPF

          Недавно мы рассказывали о том, как можно логировать действия пользователей в WinForms приложениях: Оно само упало, или следствие ведут колобки. Но что делать, если у вас WPF? Да нет проблем, и в WPF есть жизнь!



          В WPF не надо будет вешать никаких хуков и трогать страшный винапи, собственно за пределы WPF мы и не выйдем. Для начала вспомним, что у нас есть routed events, и на них можно подписываться. В принципе, это все, что нам надо знать, чтобы реализовать поставленную задачу :)
          Читать дальше →
        • Руководство для дизайнера по DPI



          Это руководство — начальный материал о кросс-DPI и кроссплатформенном дизайне для начинающих и средних дизайнеров, желающих узнать о нем с самого начала или получить больше знаний. Без сложных математических и непонятных диаграмм, только непосредственные объяснения, упорядоченные в небольших разделах, для понимания и применения их непосредственно к вашей дизайнерской работе.

          Автор — Sebastien Gabriel.

          Я не знаю всего, так что, если по вашему мнению я где то ошибаюсь или вам нужно уточнить что-то, либо у вас есть предложения или вопросы для улучшения данного руководства, отправьте письмо (на англ) на sgabriel.contact@gmail.com. Вы также можете найти на меня Twitter, G+ или Facebook.
          Читать дальше →
        • Социнжиниринг в военной пропаганде



            Во время Второй мировой англичане достали личные дела командиров немецких подлодок. Вроде бы не очень важная информация для военных целей – лодки-то уже вышли на задания, что им сделаешь. Но к делу подключились тёртые специалисты по пропаганде. У союзников были ежедневные радиопередачи, и вот пример:
            — Мы обращаемся к вам, командир подводной лодки «U-507» капитан-лейтенант Блюм. С вашей стороны было очень опрометчиво оставить свою жену в Бремене, где в настоящее время проводит свой отпуск ваш друг капитан-лейтенант Гроссберг. Их уже, минимум, трижды видели вместе в ресторане, а ваша соседка фрау Моглер утверждает: ваши дети отправлены к матери в Мекленбург…
            Цитата из «Операция «Гроза» — И. Бунич
            Красота, правда? И, главное, в точности соответствует одному из базовых методов социнжинирингового проникновения внутрь инфраструктуры при направленной атаке.

            В общем, так получилось, что многие современные методы пиара пошли от наших, английских и немецких разработок времён Второй Мировой войны. И пока я писал книгу про то, как рассказывать людям о своей компании, понадобилось залезть для подтверждения и поднять пару исторических фактов. Заодно вскрылся отличный слой совершенно диких — ну или прекрасных — историй и методик убеждения. Про них и расскажу.
            Читать дальше →
          • Как настроить командную работу и сохранять спокойствие в чатах Телеграма, если всё горит, и все в аду

              У нас беспокойная работа — с сайтами, которые мы поддерживаем, постоянно что-то происходит, и на любую аварию мы должны среагировать за 15 минут — все это в режиме 24/7, семь дней в неделю. Задачи для админов невозможно запланировать — сложно представить себе такой план на неделю: случится 25 аварий, и мы их устраним одну за другой. О том, как мы пытаемся с этим жить, я и хочу рассказать.

              image
              Читать дальше →
            • Релиз кросс-платформенного XAML UI-фреймворка AvaloniaUI 0.5

                Состоялся релиз версии 0.5 кросслплатформенного XAML UI фреймворка AvaloniaUI (раннее назывался Perspex). Фреймворк сделан по тем же принципам, что и WPF/UWP, т. е. используется XAML, биндинги и шаблонизированные элементы управления. На текущий момент это единственный способ сделать UI на настоящем XAML, который будет работать на Windows, OS X и Linux (так же имеется экспериментальная поддержка iOS и Android).


                КПДВ


                Каталог встроенных контролов (gif 3MB)


                Начать работать с фреймворком можно скачав дополнение для Visual Studio 2017 и создав проект из шаблона. Так же стоит ознакомиться с документацией на wiki.


                В этом релизе: Поддержка .NET Core, переход на GTK3 для *nix-систем, поддержка вывода через Linux fbdev, система расширений, исправлено множество ошибок.

                Читать дальше →
              • Давайте разберём, почему покупатели задают «тупые» вопросы



                  — Добрый день! Почём мороженое?
                  — Вот же ценник!

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

                  Очень много явно странных вопросов имеют совсем не то значение, которое озвучивается. Это касается и продаж, и обычной жизни. Давайте разберём ещё пару примеров. Начнём с риторических вопросов в духе «А этот пазл точно собирается? Там все детали внутри?».
                  Читать дальше →
                • Слушаем пользовательский ввод с помощью “Raw Input API” для управления фоновым приложением


                    Пожалуй, почти не осталось людей, не знающих, что такое Ctrl+C и Ctrl+V. Более опытные пользователи знают горячие клавиши часто используемых приложений. Есть те, кто использует более сложные комбинации: например, для управления плеером, находящимся в фоне. Для разработчиков реализация подобной функциональности обычно не вызывает больших трудностей, т.к. эта задача широко распространена, а о её решении уже многое написано. Но как быть, если надо в свернутом состоянии слушать пользовательский ввод с джойстика или презентера, да к тому же ещё и разбираться, от какого именно устройства пришло событие? Скажем честно, для нас эта задача оказалась чем-то новым. Под катом мы расскажем, как мы её решили на C# в WPF приложении с помощью "Raw Input API".
                    Читать дальше →
                  • Скованные одной цепью, или добавим комфорта комментариям Вконтакте

                    Скованные одной цепью

                    Обычным вечером заглянул в комментарии одного из сообществ Вконтакте и решился поучаствовать в дискуссии. Но не тут-то было! Чтобы прочесть „беседу“ нескольких ораторов потребовалось пролистать обсуждение и отсеять десятки лишних реплик, не участвовавших в нужном мне диалоге. Очевидная рутина, которую очень хочется спихнуть на механические мозги. Но инструмента, позволяющего вычленить только нужное у Вконтакта почему-то нет. „Что ж? За дело!“ — прокричал один из внутренних голосов, а остальные единогласно поддержали.

                    Так я начал пилить расширение для браузера Google Chrome‎, позволяющее смотреть цепочки связанных комментариев в обсуждениях Вконтакта.
                    Описание сего действа под катом
                  • Навигатор 2ГИС: Экстраполяция позиции автомобиля



                      В приложении 2ГИС теперь есть навигатор. Мы научились «ехать» по треку, озвучивать манёвры, автоматически перестраивать маршрут, рассчитывать время в пути, доводить пользователя до входа в здание или организацию, учитывая заборы и шлагбаумы, — и всё это в честном офлайне. Пробки (вот разве что для них нужен интернет), разведённые мосты и перекрытые улицы учитываем давно. Пока в нашем навигаторе — необходимый минимум. Чуть позже научим его предупреждать о слишком высокой скорости, лежачих полицейских и камерах ГИБДД, настроим ночной режим, сделаем маршруты по платным и грунтовым дорогам опциональными. Чтобы воспользоваться им, нужно обновить 2ГИС в своем смартфоне или скачать в AppStore или Windows Store. Для Android обновление выходит постепенно, начиная с 22 августа (будет доступно на всю аудиторию к сентябрю).

                      А сегодня расскажем, как навигатор 2ГИС предугадывает положение автомобиля и плавно перемещает стрелочку по маршруту. Ведь именно качество ведения пользователя по маршруту определяет эргономику интерфейса любого современного навигатора, простоту ориентирования на местности и своевременность совершения манёвров.
                      Читать дальше →
                    • Мультипротокольный бот через Microsoft Bot Connector REST API v3.0

                      В этой статье я хочу описать простой пример работы мультипротокольного бота через Microsoft Bot Connector API — v3.0. На тему skype подобных ботов уже есть статьи на Хабре: «Как создать своего бота для Skype. Что не написано в документации» от and7ey и «Hello, Bot! Чат-боты – следующее поколение приложений?» от shwars. Но в первой идёт речь про работу через apis.skype и описанный там вариант не мультипротокольный, а во второй описана реализация через C#, а я в него не умею.

                      Кому и зачем нужна эта статья


                      Во-первых, «тому парню», который хочет сделать своего бота, но не умеет в C#, а умеет в REST.
                      Читать дальше →
                    • Работаем с состояниями экранов в Xamarin.Forms

                        Друзья! Мы рады представить новый материал на тему разработки мобильных приложений на Xamarin.

                        В новой статье мы рассмотрим, как в Xamarin.Forms реализовывать управлениями состояниями окон (идет загрузка данных, отсутствует интернет и другие) на XAML.

                        Все статьи из колонки можно найти и прочитать по ссылке #xamarincolumn

                        Один экран, много состояний


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



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


                        Читать дальше →
                        • +23
                        • 10.4k
                        • 5
                      • Интерфейс выкладки (и пара маленьких советов, как не облажаться, выбирая товар)



                          Когда вы открываете холодильник дома, там вас встречает интерфейс выкладки — у кого-то есть система, у кого-то нет, а кто-то держит там ствол и носки. Так вот, в магазине — выкладка это то, где вы видите товар, откуда его берёте пощупать и где его часто покупаете.

                          Очевидно, как и любой другой интерфейс в реальном мире, выкладка учитывает особенности пользователя. Две руки, глаза выше хватательных органов, дефицит внимания и вирус собачьего бешенства (точнее, нехватка времени). Поэтому всё «по умолчанию» и продающееся чаще всего лежит ровно перед вами. Точнее, там, где вы привыкли разглядывать товар: в фокусе глаз и локусе рук. То есть на уровне груди.

                          Скоропортящийся товар учитывает вашу лень. Поэтому в группе одинаковых бутылок молока, например, магазин заинтересован продать вам самую близкую к дедлайну. Она будет лежать первой. Самой далёкой будет лежать самая свежая — её заберут последней. Поэтому, возможно, имеет смысл завести привычку на автопилоте брать что-то поглубже на любых холодных полках.
                          Читать дальше →
                        • Облако Mail.ru в Total Commander

                            Да, это именно то, что вы представили. Доступ к cloud.mail.ru как к диску прямо внутри файлового менеджера. Ссылка в конце статьи.

                            А ещё TC научился показывать иконки во вкладках!

                            Будем откровенны: безальтернативный механизм работы с облаком Mail.ru через синхронизацию очень неудобен. По сути, у пользователя нет полноценного контроля над единичными файлами; всё, что предлагает ему стандартный клиент — двустороннее зеркалирование указанных им данных. Если же нужно отойти от этого сценария, скажем, скачать из облачного архива единственный файл на несинхронизированном устройстве — приходится запускать браузер и пытаться сделать что-то через веб-интерфейс, в котором даже поиска нет. Учитывая, что содержимое облачных каталогов подгружается по мере прокрутки, поиск в браузере может и не помочь.
                            Есть и другие кейсы, при которых работа с облаком становится затруднительна. Доступ к облаку по webdav, который решил бы все проблемы, отключён (хотя работал какое-то время после запуска сервиса).
                            При этом сервис бесплатно предоставляет довольно значительный объём хранилища (раздачу террабайтов все помнят?), лимитирования скорости я ни разу не замечал, и за всё время работы с сервисом нареканий к нему не возникло. Для резервирования и пересылки не слишком приватных данных облако Mail.ru подходит очень хорошо. Ограниченность клиента — единственная проблема.

                            Раз она есть — надо её решать.
                            Читать дальше →
                          • Женщина заехала в озеро по GPS-навигатору



                              Чрезмерная зависимость от технологий может довести до беды. На своём примере это доказала 23-летняя гражданка Канады, которая строго следовала инструкциям GPS-навигатора и заехала на своём Toyota Yaris прямо в озеро Гурон.

                              Как сообщает газета Toronto Sun, инцидент произошёл в ночь с 12 на 13 мая в городе Тобермори, провинция Онтарио.

                              По понятным причинам девушка попросила не называть её имя.
                              Читать дальше →
                            • Multiple dispatch в C#

                                Мы уже рассмотрели две статьи, где функционал C# dynamic мог привести к неожиданному поведению кода.
                                На этот раз я бы хотел показать позитивную сторону, где динамическая диспетчеризация позволяет упростить код, оставаясь при этом строго-типизированным.

                                В этом посте мы узнаем:
                                • возможные варианты реализации шаблона множественная диспетчеризация (multiple/double dispatch & co.)
                                • как избавиться от реализовать Exception Handling Block из Enterprise Library за пару минут. И, конечно же, упростить policy-based модель обработки ошибок
                                • dynamic – эффективнее Вашего кода

                                Читать дальше →
                              • Видео: птицы Антарктики способны узнать конкретного человека

                                  То, что вороны, попугаи, сороки и пересмешники узнают человека, давно известно — эти птицы живут среди людей. Оказалось, что и птицы Антарктики, а именно — бурые поморники, способны на это: они узнают конкретного человека, который до этого осматривал их гнёзда. И отличают его от остальных гостей.

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