• Docker Compose: упрощение работы с использованием Makefile

    • Translation
    Каждые несколько лет в индустрии разработки ПО происходит смена парадигмы. Одним из таких явлений можно признать рост интереса к концепции микросервисов. Хотя микросервисы — это технология не самая новая, лишь в последнее время её популярность буквально взлетела до небес.

    Большие монолитные сервисы в наши дни заменяют независимыми автономными микросервисами. Микросервис можно рассматривать как приложение, которое служит единственной и очень специфической цели. Например — это может быть реляционная СУБД, Express-приложение, Solr-сервис.



    В наши дни сложно представить себе разработку новой программной системы без применения микросервисов. А эта ситуация, в свою очередь, ведёт нас к платформе Docker.
    Читать дальше →
  • Программисты и депрессия

          Это перевод (причем достаточно вольный) выступления 2013 года программиста на Ruby по имени Greg Bauges, посвященного депрессии и психическим расстройствам в среде программистов. Выступление старое, но проблема вечная. Вот само видео с конференции:



          Итак, начнем, меня зовут Грег. Я работаю в компании Table XI в Чикаго. Мы что-то вроде веб-студии из 30 человек. Я программировал большую часть своей жизни, начав еще с TRS-80, когда мне было только 6 или 7 лет. Там были кассеты и Basic, я даже еще помню ежемесячный журнал 3-2-1 Contact, который печатал на заднем развороте программы для BASIC. Тогда я не мог копипастить и мне оставалось только перепечатывать программу чтобы запустить, заставляя меняться цвета на экране и делать прочие непотребства… Я провел большую часть моей жизни пытаясь усидеть на двух стульях — программируя и работая с клиентами. И еще у меня биполярное расстройство второго типа(БАР2) и СДВ, и сегодня я хочу рассказать вам свою историю, друзья. Рассказать вам почему мы должны уделять внимание депрессии и психическим заболеваниям на подобных встречах, конференциях, и в разговорах с коллегами.
      Читать дальше →
    • Ваш персональный курс по Big Data

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

        После публикации нескольких статей по Big Data и Машинному обучению, ко мне пришло немало писем от читателей с вопросами. За последние несколько месяцев мне удалось помочь многим людям сделать быстрый старт, некоторые из них — уже решают прикладные задачи и делают успехи. А кто-то уже устроился на работу и занимается решением реальных задач. Моя цель — чтобы вокруг меня были умные люди, с которыми в том числе и я смогу работать в дальнейшем. Поэтому я хочу помочь тем, кто действительно хочет научиться решать настоящие задачи на практике. В сети присутствует большое количество мануалов о том, как стать ученым по данным (Data Scientist). В свое время я прошел все, что там есть. Однако, на практике порой нужны совсем другие знания. О том, какие именно навыки нужны — я расскажу в сегодняшней статье и постараюсь ответить на все Ваши вопросы.
        Читать дальше →
      • Дискретные структуры: матан для айтишников



        Посмотришь на любую программу обучения по IT-специальности, и тут же увидишь дисциплину «Дискретная математика» (возможно, под другим названием), обычно для перво- или второкурсников. И её наличие вполне разумно, поскольку дискретная математика и непрерывная математика (представленная на первом курсе институтов с незапамятных времён математическим анализом) — две грани единой Математики, — красивой, могучей науки.

        Хотя раньше такого понятия, как «дискретная математика» вовсе не было, это не значит, что не возникало дискретных задач: Абель, Дирихле, Фибоначчи, Эйлер, чьи имена возникают по ходу изучения дискретной математики, — отнюдь не наши современники! Но просто в те времена для выделения самостоятельной ветви математики ещё не сложилось критической массы задач и приёмов, не было видно взаимосвязей между ними. А большое количество плодотворных взаимосвязей между, на первый взгляд, различными понятиями, — то, что математики в своей науке очень ценят.

        Ну хорошо, математикам всё математическое интересно. А зачем дискретная математика программисту?
        Читать дальше →
      • Как инкрементальные обновления влияют на скорость загрузки. Опыт Яндекс.Почты

          Яндекс.Почта — большое и сложное веб-приложение. Для первоначальной загрузки ей необходимо более 1 МБ статических ресурсов (JS/CSS/Шаблонов). При этом Яндекс.Почта обновляется два раза в неделю, а иногда и чаще.

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


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

          Мы подумали: «А что если хранить где-то старую версию файлов (например, в localStorage), а при выходе новой передавать только diff между ней и той, которая сохранена у пользователя?» В браузере же останется просто наложить патч на клиенте. О том, что из этого получилось и каким выводам мы с Panya пришли, читайте под катом.
          Читать дальше →
        • Теория модерирования



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

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

            В конце заметки вы найдёте список того что оказалось совсем не так как я ожидал до того как пришёл в модерирование.
            Читать дальше →
            • +24
            • 11.3k
            • 8
          • Закрываем ИП: как правильно свернуть бизнес

            • Tutorial

            Держать бездействующий статус ИП нет никакого смысла, это только добавляет вам лишних забот в виде обязательной отчетности и перечисления страховых взносов. Предприниматель без деятельности и дохода все равно обязан заплатить в ПФР 20 727,53 рублей за 2014 год. Если случилось так, что ваш бизнес не оправдал надежд или вы просто решили приостановить деятельность – закрывайте ИП. Когда понадобится, вы сможете очень быстро зарегистрироваться снова в любой момент.

            Красивые и умные эксперты Эльбы подготовили для вас инструкцию, которая подскажет вам что и в какой срок нужно сделать, чтобы закрыть свое дело.
            Читать прямо сейчас
          • Надоела среда оформления Windows? Вас спасет BlackBox 4 Win

              В связи с этим постом, и потугами выбрать WM для старенького компьютера со свежеустановленной FreeBSD, я вспомнил одну старую, но все же интересную вещь. А точнее — BlackBox — легковесный оконный менеджер, как две капли газированной воды, похожий на все другие *box`ы, и при этом настолько опенсорцный, и кроссплатформенный, что есть даже для Windows…
              Дальше - больше. И значительно интереснее!
            • Несколько 3D-игр для Linux

                Товарищи из блога Online Games составили неплохой список 3D-игр под ОС Linux. Причем взятых не рандомно с потолка, а получивших какое-никакое, а признание от игровых журналов в виде обзоров и, в некоторых случаях, наград. Многие из игрушек приведенного ниже списка кроссплатформенные, но все из них полностью бесплатны и поставляются с инсталлером под Linux, так что тот же Wine для их запуска не понадобится.
                Игры с небольшим описанием и скриншотами...
              • Сообщества. Баланс?

                  Сообщества — великая сила (привет, маркетологи! :) ). Конечно, есть вариант сделать сайт (далее — Сайт), положить туда кучу всякого-интересного (по теме будущего нишевого бренда, назовем это так), сделать на сайте форум, закурить, и… И ждать :)

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

                  Будем считать, что Сайт (сообщество, не обязательно с web-2.0-прибабахами, но точно — с web-2.0-схемой, когда контент Сайта создается посетителями) создан не просто так, а с маркетинговым прицелом.

                  Пытливый ум (владельца Сайта) задастся целью — «развивать и применять в хозяйстве».

                  Поможем ему? :)
                  Читать дальше →
                • Снижаем битрейт подкастов онлайн

                    Регулярно вижу в комментариях к подкастам заявления о том, что мол подкаст записан со слишком высоким битрейтом и весит много. Неудобно качать на медленном соединении, или дорого при платном трафике.
                    Авторы подкастов зачастую битрейт снижать не хотят, т.к. это ухудшит качество звучания, над которым они так долго работали.
                    Я согласен с авторами, если есть хоть какая–то возможность скачать и послушать в оригинальном качестве, сделайте это. Но, если возможности нет совсем, на помощь можно призвать онлайн–сервисы.
                    О варианте решения приведённой выше проблемы я и хочу рассказать.
                    Читать дальше →
                  • Фабрика иконок

                      Iconfactory
                      Я давно слежу за сайтом под названием IconFactory.

                      Это действительно настоящая фабрика. Здесь в архиве можно найти массу бесплатных наборов иконок как для Mac OS, так и для Windows.

                      Вот замечательный пример:
                      Iconfactory
                      Читать дальше →
                    • Обзор наиболее интересных материалов по анализу данных и машинному обучению №15 (22 — 28 сентября 2014)


                        Представляю вашему вниманию очередной выпуск обзора наиболее интересных материалов, посвященных теме анализа данных и машинного обучения.
                        Читать дальше →
                        • +23
                        • 11.6k
                        • 2
                      • Анализ существующих подходов к распознаванию лиц

                          С завидной регулярностью на Хабре появляются статьи, рассказывающие о тех или иных методах распознавания лиц. Мы решили не просто поддержать эту замечательную тему, но выложить наш внутренний документ, который освещает пусть и не все, но многие подходы к распознаванию лиц, их сильные и слабые места. Он был составлен Андреем Гусаком, нашим инженером, для молодых сотрудников отдела машинного зрения, в образовательных, так сказать, целях. Сегодня предлагаем его все желающим. В конце статьи – впечатляющих размеров список литературы для самых любознательных.
                          Читать дальше →
                        • Работа с геолокациями в режиме highload

                            При разработке ПО часто возникают интересные задачи. Одна из таких: работа с гео-координатами пользователей. Если вашим сервисом пользуются миллионы пользователей и запросы к РСУБД происходят часто, то выбор алгоритма играет важную роль. О том как оптимально обрабатывать большое количество запросов и искать ближайшие гео-позиции рассказано под катом.

                            image
                            Читать дальше →
                          • 10 самых распространённых ошибок при программировании на JavaScript

                            • Translation


                            Сегодня JavaScript лежит в основе большинства современных веб-приложений. При этом за последние годы появилось большое количество JavaScript-библиотек и фреймворков для разработчиков Single Page Application (SPA), графики, анимации и даже серверных платформ. Для веб-разработки JavaScript используется повсеместно, и поэтому качество кода обретает всё большее значение.

                            На первый взгляд, этот язык может показаться довольно простым. Встраивание в веб-страницу базового функционала JavaScript — это не проблема для любого опытного разработчика, даже если он ранее не сталкивался с этим языком. Однако это обманчивое впечатление, поскольку JavaScript гораздо сложнее, мощнее и чувствительнее к нюансам, чем кажется поначалу. Немало тонкостей в этом языке приводит к большому количеству распространённых ошибок. Сегодня мы рассмотрим некоторые из них. На эти ошибки нужно обратить особое внимание, если вы хотите отлично программировать на JavaScript.
                            Читать дальше →
                          • Переход на PHP 5.5 и юнит-тесты

                              С момента перехода с PHP 4.4 на PHP 5.3 в Badoo прошло уже 4 года, пришла пора обновлять PHP, на этот раз сразу на версию PHP 5.5. Помимо новых фич, новая версия PHP в очередной раз принесла нам существенное увеличение производительности, поэтому у нас было много причин для апгрейда. В этой статье мы расскажем о том, как мы переходили на PHP 5.5, какие «грабли» собрали, и зачем в очередной раз переписывали нашу систему для запуска юнит-тестов на основе PHPUnit.


                              Рис 1. Общая архитектура

                              «Грабли» при переходе с PHP 5.3 на PHP 5.5


                              В прошлый раз мы переходили с четвертой версии PHP на пятую, причём наша версия PHP 5.3 содержала патчи, чтобы работал «старый» синтаксис PHP, например, $a = &new ClassName();, и чтобы наша кодовая база могла работать на PHP4 и PHP5 одновременно. На этот раз у нас таких ограничений не было, поэтому при переходе мы просто нашли и заменили все устаревшие конструкции на более актуальные, и на этом переписывание кода было закончено.

                              Основные проблемы, которые у нас возникли:
                              • часть deprecated-фич языка была убрана;
                              • расширение mysql стало deprecated;
                              • низкая производительность расширения runkit, которое мы используем при написании юнит-тестов.


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

                              Читать дальше →
                              • +51
                              • 18.7k
                              • 7
                            • 8 ловушек программирования



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

                                Однако я верю в то, что их можно избежать, если знать в какие ловушки можно попасть и как из них выбираться. Возможно эта вера — очередная ловушка.
                                Читать дальше →
                              • Terms of Service, Privacy Policy и License Agreement: ликбез для мобильного инди-разработчика

                                  Мы познакомились с Владиславом Архиповым во время питерской конференции WNCONF, где он выступал с докладом. В его выступлении особое внимание уделялось важной для нас теме трактовки gambling для social casino. В ходе разговора, в котором участвовали и другие коллеги, выяснилось, что юридическим моментам в своей работе инди-девелоперы уделяют очень мало внимания, создавая необходимые документы по остаточному принципу. Мы решили восполнить этот пробел и провести вместе с практикующим юристом небольшой “ликбез”.
                                  Читать дальше →
                                  • +20
                                  • 15.1k
                                  • 5