• DevOps — всё

    • Translation
    [Этот материал представляет собой перевод серии твитов Майкла ДеХана, одного из создателей популярного движка автоматизации Ansible — прим.перев.]

    Итак, у opsmop — та же проблема с графиком принятия и вовлечения, что и у vespene_io, и я также не вижу смысла продолжать. Я упорно верю в саму идею, но думаю, что целый мир IT с открытыми исходниками выгорел, а я устал пытаться заинтересовать людей.
    Читать дальше →
  • Профессор, обыгравший рулетку

    • Translation

    Как известный исследователь поймал удачу, поставил в тупик владельцев казино по всему миру, и вышел из игры с целым состоянием



    Тёплым майским вечером 1969 года толпа потрясённых игроков сгрудилась вокруг изношенного рулеточного стола в районе Итальянской Ривьеры. В центре стоял долговязый 38-летний профессор медицины в мятом костюме. Он только что сделал ставку в $100 000 ($715 000 на сегодняшние деньги) на один раунд рулетки. Крупье выпустил маленький белый шарик, и комната замерла. Не может же ему настолько сильно повезти… или может?

    Однако доктор Ричард Джареки не отдавался в руки слепому случаю. Он провёл тысячи часов за разработкой гениального выигрышного способа – и он вскоре принесёт ему выигрыш, эквивалентный сегодняшним $8 млн.
    Читать дальше →
  • Я сделал PWA и выложил в трёх магазинах приложений. И вот что я выяснил

    • Translation
    Перевод I built a PWA and published it in 3 app stores. Here’s what I learned.

    Недавно я опубликовал прогрессивное веб-приложение Chavah Messianic Radio, музыкальный проигрыватель вроде Pandora, и выложил его в трёх магазинах приложений (Google Play, iOS App Store, Windows Store).







    Процесс выкладывания был тяжёлый и поучительный. Вот что я выяснил.
    Читать дальше →
  • CRM системы: что это? Простыми словами

    Где вы храните клиентов? На бумажке, в телефоне, в ежедневнике, в экселе? Или вам в который раз предлагают CRM систему, но у вас нет полного понимания, что это такое и как это работает.

    Эта информация не для программистов, айтишников и т.д. Она для владельцев бизнеса, которые хотят понять, что такое CRM система. Не читать про выгоды, пользу, кому она нужна и что это дает, а прежде всего ПОНЯТЬ. Большинство информации на эту тему написано очень умным языком. Даже простые статьи написаны так, как будто люди боятся показаться не профессионалами. И прошу меня простить, если кому-то покажется, что я написал все это слишком простым языком. Я хочу, чтобы вы поняли и разобрались в этом, так как разбираетесь в своем бизнесе, а не считали меня экспертом.



    Поэтому давайте разберем CRM систему на части. К чему CRM система относится в бизнесе? Продажи. Что нам нужно для продаж? Клиенты. Поэтому первые две самые важные вещи которые должны у нас быть, и они есть в любой CRM системе, это клиенты и продажи.
    Читать дальше →
    • +3
    • 31.3k
    • 5
  • Библиотека быстрого поиска путей на графе

      Привет, Друзья!


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


      Пример использования на огромном графе:



      Поиграться с демо можно здесь


      В библиотеке используется мало-известный вариант A* поиска, который называется NBA*. Это двунаправленный поиск, с расслабленными требованиями к функции-эвристике, и очень агрессивным критерием завершения. Не смотря на свою малоизвестность у алгоритма отличная скорость сходимости к оптимальному решению.


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

      Читать дальше →
    • Let's Encrypt и nginx: настройка в Debian и Ubuntu

      • Tutorial

      image


      Если вдруг вся эта история прошла мимо вас, Let's Encrypt — центр сертификации от некоммерческой организации ISRG, существующий при поддержке EFF и многих компаний, взявшей на себя миссию дать людям бесплатные SSL/TLS сертификаты для сайтов и серверов. Сертификаты от Let's Encrypt уже используются на более чем 10 миллионах доменов.


      Кроме очевидной бесплатности у сертификатов от Let's Encrypt есть особое, отсутствующее у любых других коммерческих сертификационных центров, достоинство: если вы однажды получили сертификат от Let's Encrypt, то, при прочих равных, это навсегда. Не нужно раз в год-два вручную обновлять сертификаты. Не нужно вообще вспоминать что сертификаты где-то есть. Получил, настроил и забыл!


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


      Организации автоматического обновления сертификатов в статье уделено пристальное внимание, с тем чтобы вы могли в полной мере оценить это принципиальное преимущество Let's Encrypt.

      Читать дальше →
    • React на ES6+

      • Translation
      Это перевод поста Steven Luscher опубликованного в блоге Babel. Steven работает в Facebook над Relay – JavaScript фрэймворком для создания приложений с использованием React и GraphQL.
      За этот год, в процессе реорганизации Instagram Web, мы насладились использованием ряда особенностей ES6+, при написании нашх React компонентов. Позвольте мне остановиться на тех моментах, когда новые возможности языка могут повлиять на то как вы пишите React приложения, и сделают этот процесс легче и веселее, чем когда-либо.
      Читать дальше →
    • Мир недокументированного React.js. Context

        Предлагаю читателям «Хабрахабра» перевод статьи «The land of undocumented react.js: The Context».

        Если мы взглянем на React компонент то мы можем увидеть некоторые свойства.

        State


        Да, каждый React компонент имеет state. Это что-то внутри компонента. Только сам компонент может читать и писать в свой собственный state и как видно из названия — state используется для хранения состояния компонента (Привет, Кэп). Не интересно, давайте дальше.

        Props


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

        Context


        Встречайте context, причину, по которой я написал этот пост. Context — это недокументированная особенность React и похожа на props, но разница в том, что props передается исключительно от родительского компонента к дочернему и они не распространяются вниз по иерархии, в то время как context просто может быть запрошен в дочернем элементе.
        Читать дальше →
      • Данные на фронтенде: шаг к приложениям будущего

          Клиент-серверная архитектура для разработчиков веб-приложений — это примерно как одна из черепах, на которой стоял мир в воззрениях наших предков. Трудно себе представить иное положение вещей. Однако бесчисленное количество веб-приложений сформировало новую потребность — управление данными на фронтенде. Пока нет единого подхода и реализации, есть только отдельные технологии, позволяющие работать с данными на клиенте. Да и с ними никто особо не заморачивается. А между прочим, пора. О том, что уже есть в плане работы с данными на фронтенде и что будет дальше, мы поговорили с Никитой Прокоповым aka tonsky.


          Читать дальше →
        • Использование сканера уязвимостей OpenVAS

            Сканеры уязвимостей — это программные или аппаратные средства, служащие для осуществления диагностики и мониторинга сетевых компьютеров, позволяющее сканировать сети, компьютеры и приложения на предмет обнаружения возможных проблем в системе безопасности, оценивать и устранять уязвимости. (Википедия).
            Известными коммерческими сканерами являются Nessus, GFI LANguard, XSpider.

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

            Читать дальше →
          • CouchApp: JavaScript приложения в CouchDB

            Когда-то давно, когда я практиковался в написании хранимых процедур, триггеров, курсоров под MSSQL, мне не давала покоя мысль о приложении, где вся бизнес-логика крутится на уровне БД, а presentation tier просто дергает базу и отвечает за отрисовку полученных результатов. С тех пор прошло много моих девелоперских лет, но возможности для реализации данной идеи так и не встретилось… до тех пор, пока я не наткнулся на CouchDB.

            Я думаю, что многие уже слышали о NoSQL базах данных и в том числе о Couch DB. Здесь я хочу рассказать о замечательной возможности встраивать JavaScript-приложения в CouchDB, название которым CouchApp.

            Читать дальше
          • Разработка плагина IntelliJ IDEA. Часть 1

            • Translation
            За последнее время у меня накопилось достаточно материалов по разработке плагинов для IntelliJ IDEA, чем и собираюсь поделиться с хабрасообществом.

            Среда разработки и инфраструктура


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

            Для разработки плагинов подойдет любая современная версия Intellij IDEA – она уже включает в себя полный набор необходимого инструментария.
            Читать дальше →
          • Пишем плагин для IntelliJ IDEA, добавляем функциональности редактору кода

            • Tutorial
            Начиная работать в IntelliJ IDEA, обнаружил отсутствие удобной комбинации клавиш, которой пользуюсь в Eclipse — Ctrl+Alt+Up. По этой комбинации выделенный блок текста или строка, копируется вверх с перемещением курсора в начало скопированного блока.
            В Idea есть действие по умолчанию на Ctrl+D, которое копирует блок вниз (Ctrl+Alt+Down в Eclipse), но невозможно добавить аналогичное действие вверх. После гугления был задан вопрос в Q&A, оставшийся без ответа. Заведён issue на jetbrains. Все эти действия не дали ответа, поэтому решено было написать небольшой плагин для Idea.
            Далее
          • Пишем плагин для Netbeans. Часть первая

            • Tutorial
            Представьте ситуацию: вы программируете в среде разработки и вам необходимо кому-то отправить небольшой кусок кода из редактора. Вы выделяете нужный кусок, копируете его, открываете браузер, заходите на pastebin, вставляете код, копируете ссылку, а затем отправляете её адресату. А как насчет того, чтобы сократить эти действия вдвое?
            Для Netbeans есть плагин PB4NB, но он не работает из-за смены API в pastebin. Поэтому мы напишем свой собственный плагин, который сами же настроим по своему вкусу, а заодно и немного разберёмся с платформой Netbeans. Заинтересованы? Добро пожаловать под кат.
            Читать дальше →
            • +20
            • 6.5k
            • 8
          • Восход разработчикономики

              От переводчика
              Почитывая несколько лет назад журнал "Форбс", я наткнулся на статью, которую нашёл крайне интересной. Ну, знаете как бывает — читаешь, читаешь, и на каждом абзаце воскликаешь: «О! Це ж про меня!». Не мог поверить, что я один такой, и никто не сподобится уж если не перевести, то хотя бы сослаться на неё в русскоязычной прессе. Однако за четыре года этого так и не произошло. Ну что ж, «хочешь сделать что-то правильно — сделай это сам», посему предоставляю вниманию почтенной публики первую половину статьи. (Стараюсь переводить художественно, поэтому работа двигается небыстро; размер оригинала — больше 30 килобайт, и, «земную жизнь пройдя до половины», я понял, что держаться нету больше сил.)

              P.S. Так и не смог разобраться, как поставить в заголовке тег «перевод».

              Восход разработчикономики


              Статья Венкатеша Рао опубликована в декабре 2011 года в журнале «Форбс».

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

              В последнее время я размышлял над этой идейкой в контексте человеческого богатства. Если только вы не являетесь профессиональным инвестором (а даже если и являетесь), в настоящее время находить места для хранения избытка капитала, где он бы был в безопасности и не амортизировался слишком быстро (не говоря уже о принесении дохода) становится всё сложнее и сложнее. Фондовый рынок всё чаще навевает мысли о кровавом пиршестве “медведей”. Волатильность и неожиданные кратковременные ралли делают игру с короткими позициями небезопасной. Даже хранение активов в долларах, похоже, таит свои опасности — благодаря угрозе девальвации и всяким новомодным словечкам вроде «количественного смягчения», которые мы, среднестатистические инвесторы, слышим впервые. Евро сейчас тоже не смотрится как радужная альтернатива. Решение инвестировать в золото — и вообще в любое сырьё — кажется, требует несколько апокалиптического взгляда на мир, и размышлений о том, как вы планируете получить доступ к собственно предмету владения в случае, если всё и правда полетит в тартарары (хочется отметить, что в настоящий момент не могу назвать такой взгляд на мир так уж неоправданным).

              Но есть одна тихая гавань — если вы знаете, как в неё вложиться: разработчики ПО.

              Читать дальше →
            • Репликация без конфликтов: CRDT в теории и на практике

                В распределённых хранилищах или редакторах каких-либо данных часто бывает нужна поддержка внесения изменений оффлайн, без блокировок и конфликтов. Для этого применяются разные подходы, один из которых — алгоритмы и типы данных conflict-free replicated data type (CRDT).

                Читать дальше →
              • Разработка собственного решения: риски и ответственность

                  Привет, Хабр! В этой статье речь пойдет о том, как мы в компании Mail.Ru Group подходим к написанию кода; когда использовать готовые решения, а когда лучше писать самим; ну, а самое главное — какие шаги нужно сделать, чтобы ваша работа не оказалась безрезультатной и принесла пользу окружающим. Все эти нюансы будут рассмотрены на примере задачи создания нашей внутренней JSSDK, которая возникла из-за необходимости объединения кодовой базы двух проектов.


                  Иллюстрация Michael Parkes
                  Продолжить
                • Цикл разработки через Github

                    Разработка



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

                    Существует 2 основных ветки: master и dev.

                    master — стабильная ветка, готовая к выкатыванию на production сервер в любой момент.

                    dev — ветка, над которой в данный момент работает команда.

                    Итак, в начале разработки master и dev ветки идентичны.

                    Читать дальше →
                  • Node.js в бою (создание кластера)

                    • Translation
                    • Tutorial
                    Когда вы используете приложения на node.js в продакшене, вам приходится задумываться о стабильности, производительности, безопасности и удобстве поддержки. Данная статья описывает мои мысли о лучших практиках использования node.js в бою.

                    К окончанию данного руководства вы получите систему из 3 серверов: балансировщик (lb) и 2 сервера приложений (app1 и app2). Балансировщик будет следить за доступностью серверов и распределять между ними траффик. Серверы приложений будут использовать комбинацию systemd и кластеризации node.js для балансировки траффика между несколькими процессами ноды на сервере. Вы сможете выкатывать код с помощью одной команды со своей машины, и при этом не будет перерывов в обслуживании или необработанных запросов.
                    Все это можно представить в виде схемы:


                    Читать дальше →
                  • RESTful API на Node.js + MongoDB

                    Я, будучи разработчиком мобильных приложений, часто нуждаюсь в backend-сервисах для хранения пользовательских данных, авторизации и прочего. Конечно, для подобных задач можно использовать BaaS (Parse, Backendless, etc…). Но свое решение — это всегда более удобно и практично.

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

                    В данной статье будет рассмотрено построение REST API для мобильного приложения на Node.js с использованием фреймворка Express.js и модуля Mongoose.js для работы с MongoDB. Для контроля доступа прибегнем к технологии OAuth 2.0 с помощью модулей OAuth2orize и Passport.js.

                    Пишу с позиции абсолютного новичка. Рад любым отзывам и поправкам по коду и логике!

                    Содержание

                    1. Node.js + Express.js, простой web-сервер
                    2. Error handling
                    3. RESTful API endpoints, CRUD
                    4. MongoDB & Mongoose.js
                    5. Access control — OAuth 2.0, Passport.js

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