• Эликсир для джавистов. Часть первая

    • Перевод


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


    Рубистам хорошо знакомо название этого языка, а также, возможно, имя создателя – Джозе Валима. Однако у пришедших из более многословных языков шансы быть знакомыми с Эликсиром довольно низки.


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

    Читать дальше →
  • Искусственный интеллект трансформирует информационную безопасность, но не стоит ждать мгновенных перемен



      Хоть искусственный разум и появился еще в далеких 50х, по сей день он представляет собой одну из самых обсуждаемых, интересных и спорных технологий во всем мире.

      Искусственный интеллект – это универсальный термин, описывающий набор технологий, которые позволяют компьютеру выполнять различные функции подобно человеку, к примеру, обработка и озвучивание текста, обработка естественного языка, компьютерное зрение.
      Читать дальше →
    • Паттерн передачи scala.concurrent.Promise в актор: особенности использования и альтернативы

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


      Интересно почитать много примеров асинхронного кода на Scala, с промисами, фьючами и акторами? Добро пожаловать под кат!

      Читать дальше →
    • Mail for Good: как сообщество программистов помогает НКО

      • Перевод
      image

      Нашей некоммерческой организации требовался более дешевый инструмент для емейл-рассылок. Поэтому мы его разработали.

      Каждую неделю я делаю рассылку миллионам людей, которые подписаны на freeCodeCamp.org.

      Рассылка является строго адресной и осуществляется через Amazon Web Services, что стоит нам $0.0001 за письмо.

      Т.е. я могу разослать 1 млн. писем, обходя большинство спам-фильтров, всего за 100 долларов.

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

      • HTML шаблоны;
      • аналитические панели;
      • отслеживание открытия писем (трекинговые пиксели);
      • отслеживание переходов по ссылкам;
      • встраиваемые виджеты для подписки;
      • функция отказа от рассылки;
      • список импортируемых/экспортируемых данных;
      • ролевое разграничение доступа.

      Этот инструмент — наша внутренняя разработка.
      Он абсолютно бесплатный.
      С полностью open source.
      Он называется — Mail for Good.

      И сегодня мы представляем его публике. Это бета-версия. Некоммерческие организации со всего мира могут сразу начать пользоваться им.
      Читать дальше →
    • История о том, как П и Х игру «поделили»

        Это реальная история. События, о которых рассказывается в посте, произошли в США в 2015-2016 годах. Имена персонажей были изменены, однако всё остальное описано так, как было на самом деле.

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

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

        На всякий случай, предупреждаю — ваш покорный слуга не имеет к этой истории никакого отношения, однако считает её вполне себе показательным примером классической ситуации.
        Читать дальше →
      • Zabbix: LLD-мониторинг дисков без UserParameter и скриптов на агентах

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

          Идея простая: все необходимое от smartmontools Zabbix-сервер будет получать через внешнюю обработку и zabbix_get, парсить и передавать далее в зависимые элементы (появились в Zabbix 3.4). Такие образом не только сокращается количество обращений к наблюдаемому серверу, но и не расходуются его ресурсы, так как парсинг происходит на стороне Zabbix-сервера.

          Одно ограничение на данный момент: мониторинг дисков только формата /dev/sd*. Формат /dev/csmi*,* (Intel Matrix RAID) не поддерживается ввиду того, что zabbix_get считает запятую вторым аргументом. Поправьте меня, если я ошибаюсь.

          Что понадобится для реализации:

          • Шаблон
          • Скрипт
          • zabbix_get на сервере
          • smartmontools на агентах
          Читать дальше →
        • AdBlock похитил этот баннер, но баннеры не зубы — отрастут

          Подробнее
          Реклама
        • Как мы вооружили мерчандайзеров и наладили тотальный контроль качества дистрибуции: кейс

            Каждая компания хочет, чтобы её товары стояли на полках всех магазинов — чистенькие, с нормальным сроком годности, этикеткой к покупателю, на проходном месте и на удобной высоте. Бери и неси на кассу. Но жизнь, как говорится, вносит свои коррективы. Поэтому мерчандайзер регулярно объезжает магазины, чтобы проверить, как всё расставлено на самом деле.


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


            Мы сделали решение на базе мобильного приложения и портала, которые оцифровали работу мерчандайзера. Ниже опишем подробности, поделимся примерами кода и техническими идеями, которые помогли упростить работу пользователей и снизили риски недобросовестного отношения и мошенничества. Мы решили рассказать всё это, потому что самим интересно посмотреть со стороны, как оцифровывается процесс с бумаги — это словно построить самолет на кульмане или в 3D-виде.


            image
            Читать дальше →
          • Поиск проблем производительности NodeJs приложения (с примерами)

            Из-за однопоточной архитектуры Node.js важно быть настороже высокой производительности вашего приложения и избегать узких мест в коде, которые могут привести к просадкам в производительности и отнимать ценные ресурсы CPU у серверного приложения.
            В этой статье речь пойдет о том, как производить мониторинг загрузки CPU nodejs-приложения, обнаружить ресурсоемкие участки кода, решить возможные проблемы со 100% загрузкой ядра CPU.

            Читать дальше →
          • Проблемы локализации iOS и macOS

            image


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


            К сожалению, у Apple с локализацией наблюдаются реальные проблемы. В этой статье я хочу рассмотреть ряд примеров, на которых становится очевидным недостаточно качественный подход компании к адаптации iOS и macOS под российского пользователя. Я бы даже сказал, местами откровенно наплевательский.


            Это моя первая публикация на Хабре, надеюсь, вам понравится.

            Читать дальше →
          • Проекционное моделированние

              Вступление


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

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

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

              Я претендую на создание подобного языка, но для описания более сложных объектов: операций, функций, объектов. Об этом языке сегодня мой рассказ.
              Читать дальше →
            Самое читаемое