• Иерархическая кластеризация категориальных данных в R

    • Перевод
    Перевод подготовлен для студентов курса «Прикладная аналитика на R».





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

    • Перевод
    • Tutorial
    Некоторое время назад на Quora я отвечал на вопрос: как успевать записывать за лектором конспект по математике на LaTeX. Там я объяснил свой рабочий процесс по конспектированию в LaTeX с помощью Vim и Inkscape (для рисунков). Но с тех пор многое изменилось, так что я хочу опубликовать несколько постов в блоге с описанием нового процесса. Это первая из статей.

    Я начал использовать LaTeX для конспектирования во втором семестре курса математики, и с тех пор написал более 1700 страниц. Вот несколько примеров, как выглядит конспект:


    Читать дальше →
  • Переключения языка ввода в Windows с помощью CapsLock

    Предлагаемый мной способ не является чем-то уникальным и/или неизвестным. В любой из двух поисковых системы вы легко найдёте множество заметок о том, как настроить в Windows переключение языка ввода с помощью любой кнопки клавиатуры, прямо как в Linux, только чуть сложнее и с перезагрузкой. Однако, я так и не нашёл (тут можно меня поправить и предложить в комментариях ссылку) готовой инструкции, включающей в себя и такой немаловажный пункт, как спасение буквы Ё, а равно и обратного апострофа с тильдой. Таковую инструкцию я вам и предлагаю.
    Читать дальше →
  • Стать хакером: из «Test lab» в «Корпоративные лаборатории»



      В 2013 году мы запустили уникальные лаборатории тестирования на проникновение — «Test lab». Являясь, по сути, копиями реальных корпоративных сетей (не CTF), содержащие различные уязвимости и ошибки конфигураций, лаборатории позволяют понять, как происходит реальная атака на корпоративную сеть злоумышленниками, освоить их инструменты и методологии, научиться выстраивать различные вектора атак. Без таких знаний специалистам по информационной безопасности невозможно выработать качественные защитные меры.

      Спустя 4 года «Test lab» не утратили своей уникальности и собрали более 18500 участников со всего мира. Ежедневно работая с такой аудиторией, накапливая практические навыки тестирования на проникновение, форензики и противодействия кибер-атакам, мы делаем "Корпоративные лаборатории Pentestit" — уникальные по своему составу курсы практической ИБ-подготовки.
      Читать дальше →
    • Экстренная реанимация epmd

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

        Вот, допустим, работает у вас приложение, написанное на Эрланге (ну, скажем, тот же ejabberd). Давно работает, хорошо работает, но в один прекрасный день вы пытаетесь запустить управляющий скрипт (ejabberdctl, соответственно), а он вам выдает «nodedown» или еще что-нибудь страшное в этом духе, мол, не отзывается никто. При этом само приложение прекрасно отзывается на все клиентские запросы и слыхом не слыхивало о том, что оно down. По внезапному наитию вы запускаете epmd -names и — о, ужас! — получаете пустой список.

        Программы на Эрланге используют для связи между собой нотацию node@host, физически же каждый узел (читай — системный процесс) открывает для этого случайный высокий порт. Задача сервиса epmd — связать между собой логическую адресацию по имени и физическую адресацию по номеру порта. Своего рода аналог DNS, с той разницей, что без реестра epmd кластер на Эрланге разваливается на кучку отдельных глухонемых узлов — что у нас только что по какой-то загадочной причине и произошло. Можно, конечно, начать искать виновных, но сначала все-таки неплохо бы поднять систему на место.

        Что в такой ситуации делать? Можно, конечно, просто насильно перезапустить приложение, но, с одной стороны, клиенты отвалятся, с другой, такой красивый uptime жалко… Вот если б можно было как-нибудь восстановить реестр на живой системе, а?..

        Читать дальше →
      • Как написать свой NIF в Elixir

        Совсем недавно я окунулся в мир роботики и решил запрограммировать собственного робота на основе RasPi. Для этого я использовал Elixir, сравнительно новый, к слову сказать, язык программирования, который компилируется в байткод для Erlang VM. У меня сразу же возникла трудность с управлением контактами GPIO. Тогда я нашел библиотеку, которая вроде бы решала все мои проблемы. Однако она была написана как Port, из-за чего каждый вызов ее функций занимал слишком много времени, что влияло на правильность работы моего робота.

        Немного подумав, я все-таки решился переписать библиотеку в виде NIF. Так как я не нашел много информации по этому поводу, я решил поделиться своим опытом написания NIF в Elixir с вами. Как пример я буду использовать то, что я создал.
        Читать дальше →
      • Деплой Elixir-приложений

        • Tutorial

        Deploy Exilir Applications


        Данная статья участвует в конкурсе от Wunsh.ru — русскоязычное сообщество Elixir. Практики и просто сочувствующие — присоединяйтесь!


        В статье рассмотрен процесс настройки приложения для релиза на удалённый сервер. Для такого не лёгкого дела в мире Elixir существует два хороших проекта, первый это Distillery, которой делает билд приложения и второй это Edeliver, которой позволяет осуществлять горячую замену кода. Ниже приведены базовые инструкции по использованию этих двух библиотек на примере простейшего Elixir-приложения. А также статья расскажет каким образом можно улучшить деплой благодаря использованию docker контейнеров.


        Distillery


        Distillery предназначен для автоматизации генерации релизов Elixir проектов! Является наследником Exrm от того же автора. Очень прост в использовании.


        Первым делом необходимо добавить distillery в зависимости проекта. А после выполнить mix deps.get.

        Читать дальше →
        • +16
        • 6,5k
        • 1
      • Экосистема разработчиков в Telegram

          Лого

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

          • Каналы — некий симбиоз сообщений и списков рассылки, где автор или коллектив авторов обращаются к своей аудитории, но аудитория не может влиять на содержимое канала.
          • Группы — своеобразные чаты между большим количеством пользователей, где каждый участник является полноправным представителем сообщества и может влиять на повестку дня.
          • Боты — специальные аккаунты в Telegram, созданные для того, чтобы автоматически обрабатывать и отправлять сообщения, часто используются для интеграции c сервисами.

          На днях на просторах Github, наткнулся на список каналов, групп, ботов в Telegram, который пополняется непосредственно разработчиками, использующими этот проект совместной разработки. Под катом можно увидеть саму IT-подборку, из которой каждый сможет выбрать что-то интересное для себя.
          Читать дальше →
        • Elixir: начинаем работу с Plug

          • Перевод
          • Tutorial

          В мире Elixir, Plug представляет собой спецификацию, позволяющую различным фреймворкам общаться с различными web-серверами, работающими в Erlang VM.
          Если вы знакомы с Ruby, то можете провести аналогию с Rack: Plug пытается решать те же проблемы, но только другим способом. Понимание основ работы Plug позволит лучше разобраться как с работой Phoenix, так и других web-фреймворков, созданных на языке Elixir.



          Читать дальше →
        • Моя история эмиграции, воплощение мечты админа

            Приветствую, уважаемые хабражители. Хотел бы поведать вам историю моей эмиграции из Москвы в Евросоюз. Когда-то давно мне попалась статья и я проникся окончательной идеей уехать из России, но я не думал что это будет Латвия.


            image

            Читать дальше →
          • Консоль разработчика Google Chrome: десять неочевидных полезностей

            • Перевод
            Как с помощью консоли разработчика превратить Google Chrome в подобие текстового редактора? Какой смысл в ней приобретает знакомый многим по jQuery значок $? Как вывести в консоль набор значений, оформленный в виде вполне приличной таблицы? Если сходу ответы на эти вопросы в голову не приходят, значит вкладка Console из инструментов разработчика Chrome ещё не раскрылась перед вами во всей красе.

            image

            На первый взгляд, перед нами – вполне обычная JavaScript-консоль, которая годится только на то, чтобы выводить в неё логи ответов серверов или значения переменных. Я, кстати, так ей и пользовался, когда только начал программировать. Однако, со временем набрался опыта, подучился, и неожиданно для себя обнаружил, что консоль Chrome умеет много такого, о чём я и не догадывался. Хочу об этом сегодня рассказать. Да, если вы читаете сейчас не на мобильнике, можете тут же всё это и попробовать.
            Читать дальше →
          • «Хакеры и Художники». Как мы 13 лет всем рунетом Пола Грэма переводили

              «Это началось как желание, стало приключением, а закончилось как уникальное дорожное путешествие.»
              — к/ф «Трасса 60»



              Пол Грэм написал книгу «Hackers and Painters» (оригинал в PDF на английском) когда еще был больше программистом, чем инвестором. С тех пор некоторые моменты устарели (да и arc не взлетел), но большинство мыслей остались актуальными (роль и место ботанов «хакеров» в современном мире, свободомыслие, критическое мышление, способность бросать вызов большим системам и пр). Лично я планирую перечитать всю книгу еще пару раз.

              Спасибо Байраму Аннакову за «наводку» на Пола Грэма и Николаю Кононову, который подтвердил, что я на правильном пути.

              Содержание


              Глава 1 Why Nerds Are UnpopularЗа что не любят ботанов.
              Глава 2 Hackers and PaintersХакеры и художники (Habr edition)
              Глава 3 What You Can't SayО чем вы не можете сказать.
              Глава 4 Good Bad AttitudeСлово «хакер».
              Глава 5 The Other Road AheadДругая дорога в будущее, Другая дорога в будущее, продолжение.
              Глава 6 How to Make WealthКак стать богатым.
              Глава 7 Mind the GapОсторожно, разрыв.
              Глава 8 A Plan for SpamПлан для спама.
              Глава 9 Taste for MakersВкус — созидателям.
              Глава 10 Programming Languages Explained — Языки программирования «в разрезе».
              Глава 11 The Hundred-Year LanguageЯзыки программирования через сто лет.
              Глава 12 Beating the AveragesLisp: побеждая посредственность.
              Глава 13 Revenge of the Nerds — Месть ботанов 1, 2, 3.
              Глава 14 The Dream LanguageБыть Популярным, часть 2.
              Глава 15 Design and ResearchПроектирование и исследование.

              Под катом хронология переводов и благодарности.
              Читать дальше →
            • Modest — разработка открытого движка HTML рендера на «голом» Си

                Всем привет! Меня зовут Александр Борисов и я разрабатываю Modest — открытый движок HTML-рендера на «голом» Си без использования внешних зависимостей (далее движок). Сразу хочется пояснить, что значит «без внешних зависимостей» — весь код пишется с нуля, код нигде не заимствован.

                После моей последней публикации прошло немало времени. За это время многое изменилось и я хочу поделиться с вами достижениями в разработке.
                Приступим!
              • Как «прокачать» навыки программирования… практически без программирования

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



                  / фото hackNY.org CC
                  Читать дальше →
                • Митап Haskell-программистов в «Лаборатории Касперского» (в смысле — ждем)

                    Полтора года назад адепты функционального программирования основали сообщество RuHaskell и с тех пор периодически собираются, и проводят митапы. Ну как периодически — уже два раза собирались. Мы тут, в «Лаборатории Касперского», вообще очень поддерживаем это начинание. Во-первых, потому что это интересно, во-вторых, потому что мы используем Haskell в процессе разработки наших решений, а в-третьих, потому что некоторые участники сообщества у нас работают. А потому мы решили собрать третий митап этого сообщества на нашей территории. 18 августа все заинтересованные могут прийти в наш московский офис (Ленинградское шоссе, д.39А, стр.2), послушать умных людей, обсудить Haskell, поделиться опытом, позадавать вопросы и пообщаться. Разумеется, предварительно следует зарегистрироваться вот на этой страничке.


                    Читать дальше →
                    • +23
                    • 6,1k
                    • 5
                  • Стилизация изображений с помощью нейронных сетей: никакой мистики, просто матан

                      Приветствую тебя, Хабр! Наверняка вы заметили, что тема стилизации фотографий под различные художественные стили активно обсуждается в этих ваших интернетах. Читая все эти популярные статьи, вы можете подумать, что под капотом этих приложений творится магия, и нейронная сеть действительно фантазирует и перерисовывает изображение с нуля. Так уж получилось, что наша команда столкнулась с подобной задачей: в рамках внутрикорпоративного хакатона мы сделали стилизацию видео, т.к. приложение для фоточек уже было. В этом посте мы с вами разберемся, как это сеть "перерисовывает" изображения, и разберем статьи, благодаря которым это стало возможно. Рекомендую ознакомиться с прошлым постом перед прочтением этого материала и вообще с основами сверточных нейронных сетей. Вас ждет немного формул, немного кода (примеры я буду приводить на Theano и Lasagne), а также много картинок. Этот пост построен в хронологическом порядке появления статей и, соответственно, самих идей. Иногда я буду его разбавлять нашим недавним опытом. Вот вам мальчик из ада для привлечения внимания.


                      Читать дальше →
                    • Архитектура WhatsApp, которую Facebook купил за $19 миллиардов

                      • Перевод

                      В очередной раз хочу предложить свой перевод статьи, на этот раз автор Тодд Хофф, и его статья посвященна архитектуре WhatsApp на момент его покупки Facebook.


                      Ремарка: в начале статьи содержится рассуждение автора оригинала о том, зачем Facebook купил WhatsApp за баснословные 19 миллиардов. Если это вам не интересно — просто пролистайте, описание архитектуры будет ниже.


                      Рик Рид в его предстоящем мартовском докладе, озаглавленном "Миллиард с большой 'М': Следующий уровень масштабирования в WhatsApp" раскрывает сногсшибательную статистику WhatsApp:


                      Что имеет сотни узлов, тысячи ядер, сотни терабайт RAM и надеется обслужить миллиарды смартфонов, которые вскоре станут реальностью по всему миру? Основанная на Erlang и FreeBSD архитектура WhatsApp. Мы столкнулись со многими трудностями при удовлетворении постоянно растущего спроса на наш сервис обмена сообщениями, но мы продолжаем расширять нашу систему с точки зрения размера (> 8000 ядер) и с точки зрения скорости (>70М сообщений Erlang в секунду).
                      Читать дальше →
                    • Защищенный анонимный сервис ProtonMail от разработчиков из ЦЕРН стал публичным

                        Спустя три года после создания сервис ProtonMail доступен для всех



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

                        Довольно быстро сервис стал настолько популярным, что разработчикам пришлось ввести систему инвайтов. Авторы проекта стали собирать средства на дополнительные сервера. Тем, кто жертвовал что-то, получали инвайт. В 2014 году получил инвайт и я, так что вполне могу оценить удобство и надежность сервиса в качестве пользователя. За все время работы с защищенной почтой проблемы с ней ни разу не возникали, плюс разработчики несколько раз добавляли полезные функции. Сейчас оценить ProtonMail могут уже все желающие, поскольку авторы проекта сделали его открытым для всех.
                        Читать дальше →
                      • 21 бесплатный учебный ресурс для разработчиков игр

                        • Перевод
                        В интернете полным-полно создателей контента, и каждый хочет привлечь к себе внимание. Но, как ни странно, хороший учебный ресурс найти нелегко, а бесплатный – еще сложнее. Мы публикуем перевод материала, в котором автор собрал ссылки на самые авторитетные и полезные обучающие площадки.


                        Читать дальше →
                        • +30
                        • 101k
                        • 7
                      • Произведения и копроизведения

                        • Перевод
                        Это пятая статья из цикла «Теория категорий для программистов». Предыдущие статьи уже публиковались на Хабре в переводе Monnoroch:
                        0. Теория категорий для программистов: предисловие
                        1. Категория: суть композиции
                        2. Типы и функции
                        3. Категории, большие и малые
                        4. Категории Клейсли

                        На КДПВ поросенок Петр заводит по одному трактору в каждый объект категории.

                        Следуй по стрелкам


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

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

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