• Внедряем Sign in with Apple — систему авторизации от Apple

      Привет, Хабр!

      Этим летом на конференции WWDC 2019 Apple представила собственную систему авторизации Sign in with Apple  и сделала ее обязательной для всех приложений в App Store, которые используют вход через соцсети. Исключение составляют образовательные, корпоративные, правительственные и бизнес-приложения, использующие собственную авторизацию. К Sign in with Apple Apple сделала качественную документацию, и в этой статье мы на примере ЦИАН расскажем, как внедрить ее в свой сервис.


      Читать дальше →
    • То, что нужно знать о проверке чека App Store (App Store receipt)

      • Tutorial

      В StackOverflow по-прежнему появляется много вопросов о валидации App Store чеков, поэтому мы решили написать статью на эту тему в формате вопросов и ответов.


      image

      Читать дальше →
      • +13
      • 11.8k
      • 5
    • Разворачиваем сервер для проверки In-app purchase за 60 минут

      • Tutorial

      Всем привет! Сегодня расскажу вам как развернуть сервер для проверки In-app Purchase и In-app Subscription для iOS и Android (server-server validation).


      На хабре есть статья от 2013 года про серверную проверку покупок. В статье говорится о том, что валидация в первую очередь необходима для предотвращения доступа к платному контенту при помощи джейлбрейка и другого софта. На мой взгляд в 2020 году эта проблема не так актуальна, и в первую очередь сервер с проверкой покупок необходима для синхронизации покупок в рамках одного аккаунта на нескольких устройствах


      В проверке чеков покупок нет никакой технической сложности, по факту сервер просто «проксирует» запрос и сохраняет данные о покупке.



      Читать дальше →
    • Ярче звезд: ребрендинг HGST и пополнение линейки Ultrastar


        В конце прошлого года бренд Ultrastar отпраздновал свой 25-летний юбилей. За время существования данная марка корпоративных накопителей стала поистине легендарной: именно под ее знаменем свет увидели инновационные продукты, навсегда изменившие рынок жестких дисков. Столь важная дата (что уж тут скромничать) в истории целой индустрии практически совпала с завершением ребрендинга HGST, необходимость которого уже давно назревала в силу обстоятельств юридического характера. Чтобы вам было проще разобраться в текущем портфолио Western Digital Ultrastar, мы подготовили сегодняшний материал, заодно решив провести небольшой экскурс в историю легендарного бренда.
        Читать дальше →
      • Как не нужно составлять согласие на обработку персональных данных

          И какие согласия не стоит подписывать.



          Доброго времени суток, Хабр!

          Эта статья родилась совершенно спонтанно из такой вот истории.

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

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

          Под катом разберемся, что с согласием не так и почему оно незаконно.
          Читать дальше →
        • Что слышно в радиоэфире? Принимаем и декодируем наиболее интересные сигналы

            Привет, Хабр.

            На дворе уже 21й век, и казалось бы, передать данные можно в HD-качестве даже на Марс. Однако, до сих пор в радиоэфире работает немало интересных устройств и можно услышать немало интересных сигналов.


            Все из них рассмотреть разумеется, нереально, попробуем выбрать самые интересные, те которые можно принять и декодировать самостоятельно с помощью компьютера. Для приема сигналов мы воспользуемся голландским онлайн-приемником WebSDR, декодером MultiPSK и программой Virtual Audio Cable.
            Читать дальше →
          • Нет, вам не нужно машинное обучение. Вам нужен SQL

            • Translation
            Некоторое время назад я опубликовал серию твитов об использовании традиционных инструментов вместо новомодных и сложных технологий.

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

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

            Годы проходят, и вы наблюдаете появление некоторых интересных технологий и концепций: машинное обучение, блокчейн, искусственный интеллект, виртуальная реальность, дополненная реальность и т. д. — в то время как некоторые прежние технологии уходят на задний план. Сегодня несложно услышать о разработке каких-то фантастических продуктов на блокчейне. Я видел блокчейн-сервисы для электронной коммерции, социальных сетей и недвижимости. Список можно продолжить. Я слышу слова: чтобы вам быстрее и раньше закрыть раунд финансирования, нужно использовать слово «блокчейн», даже если оно не имеет отношения к проекту.
            Читать дальше →
          • Познаём Нирвану – универсальную вычислительную платформу Яндекса

              Машинное обучение превратилось в модный термин, но при работе с большими объёмами данных оно уже много лет является жизненной необходимостью. Яндекс обрабатывает более 200 миллионов запросов ежедневно! Когда-то в интернете было так мало сайтов, что наилучшие из них помещались в каталог, а теперь за релевантность ссылок на страницы в выдаче отвечают сложные формулы, обучающиеся на новых и новых данных. Задача ложится на так называемые конвейеры, регулярные процессы, обучающие и контролирующие эти формулы.

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



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

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

              Мы расскажем, с какими проблемами столкнулись при использовании предыдущего решения, опишем ключевые компоненты Нирваны и объясним, почему для платформы было выбрано именно такое название. А потом посмотрим на скриншот и перейдем к задачам, для которых полезна платформа.
              Читать дальше →
            • Yargy-парсер и библиотека Natasha. Извлечения структурированной информации из текстов на русском языке

                В 2020 году библиотека Natasha значительно обновилась, на Хабре опубликована статья про актуальную версию. Чтобы использовать инструменты, описанные в этом тексте, установите старую версию библиотеки pip install natasha<1 yargy<0.13.

                Раздел про Yargy-парсер актуален и сейчас.


                Есть стандартная задача извлечения именованных сущностей из текста (NER). На входе текст, на выходе структурированные, нормализованные объекты, например, с именами, адресами, датами:



                Задача старая и хорошо изученная, для английского языка существует масса коммерческих и открытых решений: Spacy, Stanford NER, OpenNLP, NLTK, MITIE, Google Natural Language API, ParallelDots, Aylien, Rosette, TextRazor. Для русского тоже есть хорошие решения, но они в основном закрытые: DaData, Pullenti, Abbyy Infoextractor, Dictum, Eureka, Promt, RCO, AOT, Ahunter. Из открытого мне известен только Томита-парсер и свежий Deepmipt NER.

                Я занимаюсь анализом данных, задача обработки текстов одна из самых частых. На практике оказывается, что, например, извлечь имена из русского текста совсем непросто. Есть готовое решение в Томита-парсере, но там неудобная интеграция с Python. Недавно появилось решение от ребят из iPavlov, но там имена не приводятся к нормальной форме. Для извлечения, например, адресов («ул. 8 Марта, д.4», «Ленинский проезд, 15») открытых решений мне не известно, есть pypostal, но он чтобы парсить адреса, а не искать их в тексте. C нестандартными задачами типа извлечения ссылок на нормативные акты («ст. 11 ГК РФ», «п. 1 ст. 6 Закона № 122-ФЗ») вообще непонятно, что делать.

                Год назад Дима Веселов начал проект Natasha. С тех пор код был значительно доработан. Natasha была использована в нескольких крупных проектах. Сейчас мы готовы рассказать о ней пользователям Хабра.
                Natasha — это аналог Томита-парсера для Python (Yargy-парсер) плюс набор готовых правил для извлечения имён, адресов, дат, сумм денег и других сущностей.
                В статье показано, как использовать готовые правила из Natasha и, самое главное, как добавлять свои с помощью Yargy-парсера.
                Читать дальше →
              • Тяжелый FPV-квадрокоптер — продолжение: APM 2.5 и активный подвес для камеры



                  Часть первая — в которой я придумал и построил свой квадрокоптер.

                  Продолжаю рассказ о своем квадрокоптере. Со времени опубликования первой статьи я налетал немало часов, и проделал множество модификаций на коптере. Обо всех мелких деталях рассказывать — будет долго, да и малоинтересно. Поэтому ограничусь основными изменениями, а именно:
                  • Новый полетный контроллер — простенькая платка Crius MultiWii SE уступила место новому ArduPilot Mega 2.5, резко улучшив летные характеристики и добавив коптеру некое кол-во продвинутых фич.
                  • Активный подвес для камеры — GoPro теперь не жестко закреплена, а установлена на стабилизирующем подвесе, который удерживает ее в горизонтальном положении при любом положении коптера.
                  • Новые моторы — в связи с выросшим весом коптера (а также с внезапной смертью одного из старых моторов) были установлены новые, болеe мощные и значительно более качественные моторы.
                  • Отдельная FPV-камера — GoPro теперь используется толькo для записи, для полета через видеоочки используется отдельная жестко монтированная камера.

                  Но обо всем по порядку…
                  Под катом многo текста и видео с подвеса
                • Тяжелый FPV-квадрокоптер — разработка, сборка и первый полет

                    image

                    Я занимаюсь квадрокоптерами в качестве хобби уже почти полгода. На свой последний аппарат я навесил камеру (GoPro HD Hero 2) и видеопередатчик, и летал на нем через видеоочки — крутейшее ощущение, я вам хочу сказать. Нo техника была нe идеальной. Старая рама X525 с алюминиевыми балками была недостаточно стабильной для веса в 1.8кг, коптер в воздухе потряхивало, да и выглядело это всe достаточно колхозно. Поэтому было принятo решение строить новый квад, на собственноручно разработанной раме, с учетом всех потребностей. А потребности были следующие:

                    • Место под всe оборудование. На новой раме должно былo быть достаточно места для камеры (без пропеллеров в картинке), передатчика, OSD, большого аккумулятора, плюс электроники управления (плата контроллера полета и GPS).
                    • Стабильность. Рама должна быть максимально жесткой, но в то же время обеспечивать виброизоляцию камеры от моторов.
                    • Внешний вид. Хотелось сделать коптер таким, чтобы было приятно на него смотреть, а не типичным для начинающих комком проводов и стяжек на стандартной крестовидной раме.
                    • (Вторично) Вес. Коптер на базe X525 весил 1.8кг с камерой и батарейкой, хотелось эту цифру слегка уменьшить, заодно и приподнять время полета на одном аккумуляторе.

                    Пораскинув мозгами и приняв решение, как всe это будет выглядеть, я установил LibreCAD и принялся за работу.
                    Под катом много фотографий, текста и видео первого полета
                  • Улучшаем релевантность поиска в sphinxsearch

                    Sphinxsearch является поисковым движком для быстрого fulltextsearch, может получать данные из mysql, oracle и mssql, может выступать сам хранилищем(realtime индексы). Также sphinx имеет режим работы через api и через sphinxql — аналог протокола sql(с некоторыми ограничениями), что позволяет подключить поиск через sphinx на сайте с минимальным изменением кода. Это один из немногих великих, крупных и открытых проектов разработанный в России. На моей жизни я видел как sphinx обрабатывает порядка 100-200 поисковых запросов на 2 миллиона записей из mysql и при этом сервер свободно дышал и его не тошнило, mysql начинает умирать уже на 10 запросах в секунду на аналогичном конфиге.

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

                    Sphinx содержит две независимые программы indexer и searchd. Первый строит индексы по данным взятым из базы данных, второй производит поиск по построенном индексу. А теперь перейдем к настройкам поиска в sphinx.

                    morphology

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

                    Пример нормализации слова стеммингом на русском.
                    Слова “яблоко”, “яблока”, “яблоку” будут обрезаны в “яблок” и любой поисковый запрос с вариацией слова “яблока” будет тоже нормализован и найдет записи со словами которые были описаны выше.
                    Читать дальше →
                  • «Воскрешаем» HDD

                    Хочу поделиться опытом восстановления жесткого диска Seagate Barracuda 7200.11 ST3500320AS после сбоя. Короткая предыстория: один мой друг решил сделать полное форматирование своему жесткому диску, после чего тот больше не определялся в BIOS. Выкидывать 500-гигабайтный винчестер было жалко, и он отдал жесткий диск мне на растерзание. Забегая наперед, скажу, что прокачанные навыки «гугление» и «очумелые ручки» позволили добиться отличных результатов.
                    Читать дальше →
                  • В 20 раз дешевле, в 2,5 раза точнее и вдвое удобнее

                      Приветствую, уважаемое сообщество!

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

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

                      Так вот, в честь юбилея моего присутствия на Хабре, я решил написать серию статей, в которой расскажу о некоторых проектах и разработках, сделанных в ходе работы над этими проектами. Конечно, я буду рассказывать только о разработках, которые по тем или иным причинам не принял заказчик (соответственно все права на интеллектуальную собственность принадлежат мне) или которые я делал вне проектов, для себя. И естественно, все проекты будут технической направленности, это около 40% всех проектов (остальные относятся к области маркетинга, HR, экономики).

                      Долго думать с какого проекта начать, не пришлось, логично начать с самого первого проекта. Тем более решение, которое я опишу, получилось действительно эффективное и простое (у Трабл-шутеров часто решения на столько простые, что заказчик хватается за голову: «Как же я сам не догадался?»). В теме поста нет никакого обмана, действительно разработанное оборудование получилось минимум в 20 раз дешевле аналогов (для некоторых брендов конкурентов, этот показатель достигает и 40х), в 2,5 раза точнее и значительно удобнее.

                      И так, как вы уже поняли разрабатывали мы в этом проекте не ПО, не процессы, а оборудование (железку). Под катом вы узнаете все подробности о проекте.
                      Читать дальше →
                    • Реализация отказа в MS SQL Server 2017 Standard

                      • Tutorial

                      Предисловие


                      Достаточно нередко можно встретить задачу об обеспечении отказоустойчивости СУБД MS SQL Server. Еще интереснее становится, когда нет лицензии Enterprise, а только Standard.

                      Сразу отметим, что рассматриваться лицензия Express не будет, т к по данному экземпляру есть существенные ограничения. Да, некоторые из них можно обойти. Например, максимальный размер БД в 10 ГБ легко решается путем декомпозиции большой БД на более маленькие (например, по какому-то признаку создавать новую БД, а в главной БД в представлениях объединять выборки из одних таблиц разных БД). Но отказоустойчивость в Express будет достигаться либо силами системного администратора, либо использованием собственно разработанного (или стороннего) ПО.

                      В данной статье будут вкратце разобраны все существующие стандартные технологии отказоустойчивости для MS SQL Server 2017 и будет рассмотрен пример реализации отказа наиболее подходящего унифицированного из них в лицензии Standard.
                      Читать дальше →
                    • OpenVPN: создание сервера на Windows

                      Openvpn — виртуальная частная сеть. С ее помощью мы можем:
                      • Создать защищенный канал свзяи, в то время, когда мы сидим с бесплатного Wi-Fi в кафе.
                      • Обмениваться файлами между участниками сети.
                      • Раздавать интернет испульзуя общий шлюз.

                      Основные преимущества:
                      • Простота настройки.
                      • Безопасность.
                      • Не требует дополнительного оборудования.
                      • Высокая скорость и стабильность.

                      Как и автор статьи об установке OpenVPN на Linux, я не нашел нормальной статьи, да еще и такой, чтоб описывалось все до мелочей. В этой статье на Хабрахабре я постараюсь максимально доступно все объяснить. Итак, поехали!
                      Читать дальше →
                    • Microsoft добавил средство сбора телеметрии в Windows 7/8/8.1

                        Сегодня на MS Windows 7 и 8.1 прилетели обновления KB3080149 и KB3075249. Телеметрическая информация передаётся на следующие сервера:
                        vortex-win.data.microsoft.com
                        settings-win.data.microsoft.com

                        Передача осуществляется через TCP по порту 443 с использованием SSL.
                        Для параноиков людей, беспокоящихся о несанкционированной передаче информации Microsoft (далее возможно и третьим лицам), предлагаю добавить сервера в список исключений маршрутизатора, а следующие строчки в файл hosts (%windir%\System32\drivers\etc\hosts):
                        127.0.0.1 vortex-win.data.microsoft.com
                        127.0.0.1 settings-win.data.microsoft.com
                      • Как сделать онлайн просмотр документов

                        • Tutorial
                        Первый рабочий день. Первая задача в Redmine. Первая спецификация в формате doc. На новой рабочей машине. К чтению спецификации удалось приступить часа через 3. Пока скачался и установился MS Office. Вспоминая этот случай, я был уверен, что в нашей системе управления задачами надо сделать онлайн просмотр документов. Вот только идей по реализации за разумное время и трудозатраты не было. Недавно мы нашли способ – Microsoft Office Web Apps.

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

                          Что такое онлайн-видео?


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

                          В этой статье речь будет идти не об организации видеохостинга, а об организации видеовещания в прямом эфире. Это две принципиально разные задачи, и обычно способы их решения существенно отличаются друг от друга.
                          Читать дальше →
                        • Онлайн вещание через Nginx-RTMP: несколько готовых рецептов

                            Недавно я наткнулся на топик "Сервер онлайн-вещаний на базе nginx" о замечательном модуле Романа Арутюняна (@rarutyunyan) для nginx: nginx-rtmp-module. Модуль очень прост в настройке и позволяет на основе nginx создать сервер публикации видеозаписей и живого вещания.

                            Про сам модуль можно прочитать на его странице на GitHub, я же хочу привести несколько простых примеров использования. Надеюсь, топик поможет новичкам в видеоделах (таким как я).

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