• Шпаргалки по безопасности: JWT



      Многие приложения используют JSON Web Tokens (JWT), чтобы позволить клиенту идентифицировать себя для дальнейшего обмена информацией после аутентификации.

      JSON Web Token – это открытый стандарт (RFC 7519), который определяет компактный и автономный способ безопасной передачи информации между сторонами в виде объекта JSON.
      Читать дальше →
    • Зачем изучать непопулярные языки. Пример сообщества F#



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

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

        Я попытался узнать, в чем причина. И вообще — кто те люди, которые на нем пишут, и зачем они это делают, если язык не нужен бизнесу? Для этого я постучался поговорить в русскоязычное сообщество F# в «Телеграме». Здесь — наш круглый стол.
        Читать дальше →
      • Yew — Rust&WebAssembly-фреймворк для фронтенда

          Yew — аналог React и Elm, написанный полностью на Rust и компилируемый в честный WebAssembly. В статье Денис Колодин, разработчик Yew, рассказывает о том, как можно создать фреймворк без сборщика мусора, эффективно обеспечить immutable, без необходимости копирования состояния благодаря правилам владения данными Rust, и какие есть особенности при трансляции Rust в WebAssembly.



          Пост подготовлен по материалам доклада Дениса на конференции HolyJS 2018 Piter. Под катом — видео и текстовая расшифровка доклада.
          Читать дальше →
        • angular-ngrx-data — state management и CRUD за пять минут

          • Tutorial
          image
          На сегодняшний день ни одно большое SPA приложение не обходится без state management (управления состоянием). Для Angular по данному направлению есть несколько решений. Самым популярным из них является NgRx. Он реализует Redux паттерн с использованием библиотеки RxJs и обладает хорошим инструментарием.

          В данной статье мы кратко пройдемся по основным модулям NgRx и более детально сосредоточимся на библиотеке angular-ngrx-data, которая позволяет сделать полноценный CRUD со state management за пять минут.
          Читать дальше →
        • [DotNetBook] Span, Memory и ReadOnlyMemory

          • Tutorial

          Этой статьей я продолжаю публиковать целую серию статей, результатом которой будет книга по работе .NET CLR, и .NET в целом. За ссылками — добро пожаловать под кат.


          Memory<T> и ReadOnlyMemory<T>


          Визуальных отличий Memory<T> от Span<T> два. Первое — тип Memory<T> не содержит ограничения ref в заголовке типа. Т.е., другими словами, тип Memory<T> имеет право находиться не только на стеке, являясь либо локальной переменной либо параметром метода либо его возвращаемым значением, но и находиться в куче, ссылаясь оттуда на некоторые данные в памяти. Однако эта маленькая разница создает огромную разницу в поведении и возможностях Memory<T> в сравнении с Span<T>. В отличии от Span<T>, который представляет собой средство пользования неким буфером данных для некоторых методов, тип Memory<T> предназначен для хранения информации о буфере, а не для работы с ним.


          Примечание


          Глава, опубликованная на Хабре не обновляется и возможно, уже несколько устарела. А потому, прошу обратиться за более свежим текстом к оригиналу:


          Читать дальше →
          • +38
          • 7,7k
          • 2
        • Изучаем синтаксические парсеры для русского языка

            Привет! Меня зовут Денис Кирьянов, я работаю в Сбербанке и занимаюсь проблемами обработки естественного языка (NLP). Однажды нам понадобилось выбрать синтаксический парсер для работы с русским языком. Для этого мы углубились в дебри морфологии и токенизации, протестировали разные варианты и оценили их применение. Делимся опытом в этом посте.


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



              Для создания пользовательских интерфейсов существует большое количество инструментов (ваш К.О., не благодарите). Один из наиболее эффективных — React. Наверное, на Хабре нет нужды рассказывать о том, что это такое и зачем.

              Сегодня мы решили опубликовать подборку классных вспомогательных элементов для разработчиков, которые используют React. Вероятно, подборка не исчерпывающая, но зато позволит дополнить инструментарий. Если вы используете еще что-то, чего нет в подборке, делитесь в комментариях, а мы скажем дружно спасибо и добавим классные предложения в подборку. Предупреждение — под катом довольно много гифок, у кого платный трафик — осторожнее, ребята.
              Читать дальше →
            • Авторизация клиентов в nginx посредством SSL сертификатов

                Введение:


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

                Поскольку на моём сервере используется nginx, то был установлен модуль SSL
                Гугл не выдал ни одного работоспособного howto, но информация в сети есть по частям.

                Итак, пошаговое руководство по настройке nginx на авторизацию клиентов через SSL-сертификаты.
                Читать дальше →
              • Cжатие и улучшение рукописных конспектов

                • Перевод
                Я написал программу для очистки отсканированных конспектов с одновременным уменьшением размера файла.

                Исходное изображение и результат:


                Слева: исходный скан на 300 DPI, 7,2 МБ PNG / 790 КБ JPG. Справа: результат с тем же разрешением, 121 КБ PNG [1]

                Примечание: описанный здесь процесс более-менее совпадает с работой приложения Office Lens. Есть другие аналогичные программы. Я не утверждаю, что придумал нечто радикальное новое — это просто моя реализация полезного инструмента.

                Если торопитесь, просто посмотрите репозиторий GitHub или перейдите в раздел результатов, где можно поиграться с интерактивными 3D-диаграммами цветовых кластеров.
                Читать дальше →
              • Бесплатная GPU Tesla K80 для ваших экспериментов с нейросетями


                  Около месяца назад Google сервис Colaboratory, предоставляющий доступ к Jupyter ноутбукам, включил возможность бесплатно использовать GPU Tesla K80 с 13 Гб видеопамяти на борту. Если до сих пор единственным препятствием для погружения в мир нейросетей могло быть отсутствие доступа к GPU, теперь Вы можете смело сказать, “Держись Deep Learning, я иду!”.


                  Я попробовал использовать Colaboratory для работы над kaggle задачами. Мне больше всего не хватало возможности удобно сохранять натренированные tensorflow модели и использовать tensorboard. В данном посте, я хочу поделиться опытом и рассказать, как эти возможности добавить в colab. А напоследок покажу, как можно получить доступ к контейнеру по ssh и пользоваться привычными удобными инструментами bash, screen, rsync.

                  Читать дальше →
                • Я разработчик с 9 до 17 (и ты можешь стать таким)

                  • Перевод
                  Этот конкретный твит от Сафьи Абдалла сподвиг меня на некоторые размышления:
                  Пожалуй, непопулярное мнение (и тут немного иронии от меня).

                  Чтобы быть способным и отличным инженером, вам не нужно писать статьи в блоге, участвовать в проектах open source, выступать с техническими лекциями или делать что-нибудь ещё.

                  Можете оставить свой код в офисе — и это вполне нормально.
                  Такая позиция близка и мила моему сердцу, хотя я тоже понимаю иронию. Одна из вещей, которые я говорю потенциальным работодателям с тех пор как меня уволили за отказ оставаться программировать после работы — это то, что я не согласен на овертайм. По крайней мере, не на регулярной основе. Я могу иногда поучаствовать в авралах, когда критически важно срочно накатить конкретное изменение или исправить баг, но за исключением таких случаев я буду появляться, вкалывать — и пойду домой.
                  Читать дальше →
                • Настройка репликации между PostgreSQL и PipelineDB

                  Данная статья может быть интересна тем, кто уже имеет поверхностное представление о видах и проблематике репликации внутри кластера PostgreSQL, а так же тем, кто решил использовать стриминговую СУБД PipelineDB в качестве реплики в подобном кластере.

                  PipelineDB — одна из реализаций ныне набирающих популярность стриминговых СУБД. О преимуществах стриминговых СУБД в различных кейсах Вы можете без труда прочитать сегодня на множестве ресурсов. Очень просто принцип их работы визуализирован на сайте www.pipelinedb.com в разделе “How It Works”.

                  Конкретно PipelineDB это форк PostgreSQL с дополнительной функциональностью, позволяющей хранить только агрегированные данные, рассчитывая дельту из поступающего стрима (отсюда и название этого типа СУБД) на лету. Эти данные хранятся в специальных объектах PipelineDB, называемых continuous views. Сам же стрим в простейшем случае формируется из обычных таблиц, хранимых в этой же БД. Использование данного инструмента позволяет нам избавиться от необходимости создания и поддержки ETL-слоя при подготовке данных для систем отчетности, и может сэкономить Вам кучу времени и нервов. Но я полагаю, что раз Вы это читаете, то Вы уже что-то знаете об этом в объеме достаточном для появления интереса к описываемым здесь событиям.

                  Мы рассмотрим кейс, в котором на продуктовой среде у нас уже работает СУБД PostgreSQL версии 9.4+, а нам нужно получить ее риалтайм (ну или практически риалтайм) реплику для того, чтобы разгрузить основную базу от множественных и тяжелых SELECT-запросов, получаемых от, например, систем отчетности, DWH или наших витрин данных. И после изучения вопроса Вы можете решить, что именно стриминговая СУБД очень хорошо подходит для такой задачи.
                  Читать дальше →
                • Для чего нужен Apache Ignite / GridGain, на примере .NET & C#

                    В последнее время имена GridGain и Apache Ignite нередко мелькают в интернетах. Однако, судя по комментариям (например, здесь), мало кто понимает, что же это за продукт и с чем его едят.


                    В этой статье я попытаюсь доступным языком объяснить, и на примерах кода показать, что умеет Apache Ignite.


                    Apache Ignite Logo


                    Читать дальше →
                  • Генерируем OfficeOpenXML-документы за 5 минут

                      Часто надо бывает из приложения на ASP.NET сгенерировать отчёт на сервере в OpenXML-формате.

                      Есть несколько привычных способов сделать это:
                      1. «Нашёл, слинковал, заюзал» – идём в Гугл, ищем библиотеку для генерации docx или xlsx, подключаем, разбираемся, генерируем. Это привычно, но долго.
                      2. «Фу» – использовать COM. Это не рекомендуется, требует установленного Microsoft Office на сервере, не очень thread-safe, с x64 не дружит и вообще старомодно.
                      3. «Ъ» – разобраться с форматом, собрать из XML и зазипать. Брутально.
                      4. «Microsoft way» – об этом способе рассказывается под катом.

                      Читать дальше →
                    • Топливо для ИИ: подборка открытых датасетов для машинного обучения


                        Связанные проекты сообщества Open Data (проект Linked Open Data Cloud). Многие датасеты на этой диаграмме могут включать в себя данные, защищенные авторским правом, и они не упоминаются в данной статье


                        Если вы прямо сейчас не делаете свой ИИ, то другие будут делать его вместо вас для себя. Ничто более не мешает вам создать систему на основе машинного обучения. Есть открытая библиотека глубинного обучения TensorFlow, большое количество алгоритмов для обучения в библиотеке Torch, фреймворк для реализации распределенной обработки неструктурированных и слабоструктурированных данных Spark и множество других инструментов, облегчающих работу.


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


                        Мы разобрались в этом вопросе и собрали данные по датасетам, удовлетворяющим критериям открытости, востребованности, скорости работы и близости к реальным задачам.

                        Читать дальше →
                      • Рассчитываем реальный эффект от платной рекламы на Youtube

                          Задача следующая: необходимо рассчитать реальный эффект от платной рекламы на youtube. Для этого есть заказчик — онлайн-ритейлер по продаже электроники. После тестового двухнедельного периода на протяжении трех месяцев велась TrueView In-stream youtube-кампания. Дневной бюджет после тестирования составил $200. Всего за период 3 месяца в рекламную кампанию было инвестировано $18.051. За эти деньги Youtube показал платную рекламу 584.780 раз. В 118.650 случаях пользователи реагировали на рекламу, т.е. случайно либо целенаправленно переходили на сайт онлайн-ритейлера.



                          Наша задача рассчитать общий интерес со стороны потенциальных покупателей, прибыльность и возврат инвестиций.
                          Читать дальше →
                        • Вещи, которые вызывают недоверие и отталкивают ваших клиентов от сайта

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

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

                            Счетчики, таймеры, купить сейчас


                            image

                            Вы наверняка с ними сталкивались. Те самые счетчики, по истечении времени которых акция на товар или услугу пропадёт, цена снова взлетит до потолка или вообще так желаемая вами вещь пропадет со складов компании. Но это в лучшем случае.
                            Читать дальше →
                          • Системы ИИ научились создавать умные модели для ML: дайджест для начинающих

                              В ноябре участники исследовательского проекта Google Brain опубликовали результаты эксперимента AutoML. Им удалось создать систему, которая порождает новые ИИ-модели, используя метод обучения с подкреплением. Реализованный таким образом алгоритм уже справляется с задачей лучше решений, полностью написанных человеком.

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

                              Читать дальше →
                              • +15
                              • 13k
                              • 7
                            • Как научить свою нейросеть анализировать морфологию

                              Недавно мы рассказывали про генератор стихов. Одной из особенностей языковой модели, лежащей в его основе, было использование морфологической разметки для получения лучшей согласованности между словами. Однако же у использованной морфоразметки был один фатальный недостаток: она была получена с помощью “закрытой” модели, недоступной для общего использования. Если точнее, выборка, на которой мы обучались, была размечена моделью, созданной для Диалога-2017 и основанной на закрытых технологиях и словарях ABBYY.


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


                              Вместо морфологического движка ABBYY я использовал широко известный pymorphy2. Что в итоге получилось? Спойлер — получилось неплохо.

                              Читать дальше →
                            • Сколько должен стоить ваш SaaS? Я проанализировал 1530 сервисов и получил такие графики

                                image

                                Прайсинг SaaS-сервисов — штука хитрая. Малейшая ошибка может запросто стоить вам целого состояния в долгосрочной перспективе. Поэтому сложно переоценить необходимость анализа конкурентов в вашей нише и уровня цен в среднем по больнице.

                                Но есть хорошие новости — я уже сделал этот анализ за вас (по крайней мере, в некоторых нишах) и предлагаю вашему вниманию россыпь цветных картинок, которые нарисованы на основе анализа 1530 цен самых разных сервисов.
                                Читать дальше →