• Поняв Docker

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


      К вашему сведению! В этой статье мы рассматриваем само явление docker-контейнеров, а не составляем список микросервисов, которые гнездятся внутри. Этим мы займемся в следующей серии, во имя справедливости!


      UPDATE: пришлось заменить «докер» на «docker», иначе статья не ищется. Заранее прошу прощения за все «docker'ы» в тексте. Селяви.


      Что мы имеем сегодня


      • Зоопарк дубовых VPS-хостингов.
      • Дорогие IaaS и PaaS с гарантированным vendor lock in.
      • Уникальные сервера-снежинки.
      • Ворох устаревших зависимостей на неподдерживаемой операционке.
      • Скрытые связи частей приложения.
      • Незаменимый админ полубог на скейтборде.
      • Радуга окружений: development, testing, integration, staging, production.
      • Генерация конфигов для системы управления конфигами.
      • Feature flagging.
      docker run docker
    • Немного о сборке мобильного приложения

        image

        Я помню то замечательное время, когда сборка релизной версии мобильного приложения сводилась к тому, что нужно было выставить debug = false и запустить экспорт apk-файла. Проходит 2 минуты, пока пыхтит IDE, и все готово. Все усилия сосредотачивались на необходимости указать данные сертификата подписи. Это было совсем недавно. Cейчас процесс сборки того самого приложения разросся настолько, что, если мне, вдруг, потребуется выполнить все операции самостоятельно, и даже если я все вспомню и проделаю безошибочно (во что я не верю), то это займет не час, который сегодня кажется непозволительно долгим, а, скорее всего, сутки, после чего терапевт обязан будет прописать мне больничный по усталости недели на две.

        Итак, процесс сборки мобильного приложения. Попробую рассказать, из чего он у нас состоит — не потому, что в последнее время стало модным катать посты о CI той или иной мобильной команды (с покером, русалками и прочими обязательными атрибутами), а потому, что это отличный опыт, который я получил, работая над Почтой Mail.Ru для Android, и потому, что этой возможности, вероятнее всего, не было бы, работай я в другой команде, над другим проектом или в другой компании.
        Читать дальше →
      • Лоукост хостинг выделенных серверов в России. Возможно ли?

          Айхор

          В прошлой статье с похожим заголовком, мы рассказали и даже доказали, что лоукост хостинг виртуальных серверов (VPS) в России возможен. Но как обстоят дела с арендой выделенных серверов? Возможно ли в России сдавать серверы по ценам Hetzner-а, предоставляя клиентам гигабитные каналы?

          Мы решили провести небольшую аналитику и попробовать дать ответ на заголовок поста. Также мы создали лоукост-конфигуратор выделенных серверов на базе имеющегося у нас оборудования. Что из этого вышло – вы сейчас узнаете.
          Читать дальше →
        • Полезные сниппеты для Nginx конфигов



            Доброго времени суток, уважаемые хабравчане! В Elasticweb мы негласно ратуем за Nginx и, наверное, мы одни из немногих хостингов, которые не поддерживают Apache и .htaccess соответственно. В связи с этим, большое количество обращений в тех. поддержку связано с оказанием помощи в написании конфигурационного файла для Nginx. Поэтому мы решили собрать коллекцию полезных сниппетов и коллекцию готовых Nging конфигов для наиболее популярных CMS/CMF/Фреймворков на PHP.

            Читать дальше →
          • Создание VPN туннеля между двумя квартирами на базе роутеров с dd-wrt

            Предыстория:


            Собственно, задача — объединить дом 1 и дом 2. На вооружении имеем схемы:

            Дом 1: -internet пров. Beeline l2tp; psTV (196.168.2.13); dir615С2 (внут: 192.168.2.1, внеш: 95.24.х.х (будет клиентом VPN))

            Дом 2: -internet пров. Interzet с белым ip; PS4 (192.168.1.13); dir615Е4 (внеш st.IP: 188.Х.Х.Х, внут: 192.168.1.1 (будет сервер VPN)
            Читать дальше →
          • Консоль 21 века: mosh, tmux, fish

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

              Но если вы проводите за своим инструментом до 80% рабочего времени, то желательно убедиться, что вы не тратите время впустую и что работа доставляет вам удовольствие. В этой статье я бы хотел немного рассказать про те инструменты, которыми я лично пользуюсь каждый день, и про то, как они улучшают user experience (и, часто, продуктивность) при работе с консолью и с удаленными серверами в частности.

              Проблемы ssh


              При работе с удаленными серверами по ssh есть много вещей, которые могут фрустрировать, но основных проблем две, и первая из них принципиально неразрешима в рамках ssh:

              1. При высоком round-trip latency (>100 ms) пользовательский ввод появляется с ощутимой задержкой, а при использовании мобильного интернета с edge (latency 1000 ms) работа становится подобна пытке
              2. При временных проблемах (несколько минут) с доставкой пакетов, соединение может порваться с write failed: broken pipe, причем узнаете вы об этом только при попытке ввода или при использовании настроек вроде keepaliveinterval


              Первая проблема неразрешима потому, что ssh by-design является просто транспортом для байтов, и существующие приложения на это поведение расчитывают. Поскольку ssh не пытается интерпретировать этот поток байтов, он не может осуществлять предиктивный ввод. Лично для меня именно эта проблема наиболее актуальна, поскольку мне приходится работать с серверами в европе и США, и во втором случае задержка составляет около 200 мс и является принципиально неустранимой, по крайней мере до изобретения квантовой коммуникации или чего-нибудь подобного. Вторая же проблема проявляется в наших условиях относительно редко, но всё же неприятно переустанавливать все соединения при сбоях сети (и перезапускать упавшие приложения, если они почему-то не были запущены в screen).

              Читать дальше →
            • Видео доклада «Пишем #b_ правильно» с WebCamp 2015

              • Tutorial
              «Пиратское» видео доклада «Пишем #b_ правильно» с конференции «WebCamp 2015: Front-end Developers Day», прошедшей 4 июля в Одессе.

              Как сверстать сайт вручную «по-БЭМ» без классов «block__element__element», и на реальном примере со всеми его проблемами, а не меню-пункт_меню-ссылочка, как вы видели раньше. Без BEMJSON, BEM Tools, но с миксованием, модификаторами и разбором ошибок.

              Я знаком с БЭМ давно и все эти годы встречался с множеством заблуждений и стереотипов в использовании. В докладе постарался развеять популярные мифы и рассказал о своём трехлетнем опыте внедрения и использования БЭМ и связанным с этим наступании на грабли.

              Слайды: delka.github.io/talks/webcamp/2015/bem


              Читать дальше →
            • Основы успешной реализации push-уведомлений для мобильных приложений

                Наши разработчики в Techmas часто сталкиваются с задачами создания уведомлений (push notifications). Несмотря на простоту и популярность технологии, в её реализации есть ряд особенностей, о которых и пойдёт речь в этой статье.




                Читать дальше →
                • +10
                • 71.1k
                • 7
              • По-настоящему адаптивные письма. Часть… снова первая



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

                  К чему мы приходим:
                  — Использование внешних стилей и последующий прогон кода через инлайнер. Из-за усложнения кода это стало целесообразным
                  — Улучшение семантики через именование классов и сокращение участков кода
                  — Частичная поддержка the Bat! Хотя Николь на него забила.
                  — Полная поддержка всех мобильных почтовых клиентов
                  — Использование ранее опасных конструкций. Благодаря усердному тестированию проблемы решены.
                  Читать дальше →
                • 36 млн запросов в час, 10000+ постоянно работающих клиентов, на одном сервере, nginx+mysql

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

                  Первое, что я заметил — множество советов как все настроить под большую нагрузку. Читайте их внимательно, обычно в тексте найдете, что речь про «высокую нагрузку» в 15-20 тысяч клиентов в сутки. У нас клиентов примерно миллион, активных, ежедневных.

                  У нас нет денег и мы все делаем за свой счет, поэтому экономим. Итог — весь миллион клиентов обслуживается на одном сервере, вот на таком — EX-60 на hetzner.
                  Читать дальше →
                • Быстрый фильтр каталога для интернет-магазинов на основе битмапов Redis



                    Не секрет, что каждый интернет-магазин должен помогать пользователям найти то, что им нужно. Особенно, если товаров у вас много (> 10). На помощь приходит каталогизация товаров, но разбить товары по категориям — полдела. Товары внутри категории нужно уметь фильтровать по их свойствам. Особенно, если товары у вас разношёрстные, например, одежда, электроника, ювелирные изделия и т.д. И тут любой разработчик, пишущий свой e-commerce продукт, сталкивается с неприятными реалиями жизни: у товаров могут быть совершенно разные свойства, у некоторых товаров они могут отсутствовать, некоторые товары по одному свойству могут попадать под разные значения (цвет платья то ли синий, то ли голубой, соответственно, неплохо бы его показать и по синему и по голубому цвету). Проще говоря, у вас EAV. Бывает ещё, что EAV вам диагностирует заказчик ближе к концу разработки, а то и просит добавить фильтр по динамическим свойствам уже после релиза.
                    Читать дальше →
                  • Docker. Best practices на примере образа Oracle xe 11g



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

                      Сегодня можно найти тысячи образов в hub.docker.com. За счет своей простоты в создании образов, буквально за пол часа можно начать вносить свой вклад.

                      Но многие забывают о best practices, и за счет этого docker hub наполнился огромным количеством не самых лучших образов.

                      В этой статье я хочу описать на сколько просто и полезно создавать образы используя Best Practices на примере.
                      Читать дальше →
                    • Установка OpenStreetMap Nominatim для нахождения широты и долготы по введенному адресу

                      image

                      Хотел бы поведать свою историю об установке геокодера Nominatim на выделенный сервер. Изначально предполагалось, что эта задача займёт у меня около 5-7 часов, но не тут то было… Поэтому было решено написать статью c описанием разворачивания Nominatim на сервер до полной работоспособности сайта. Но обо всём по порядку.
                      Читать дальше
                    • Что нужно знать при миграции с MySQL на PostgreSQL?

                      • Tutorial
                      В продолжение статьи о теории и практике миграции хранилищ данных на PostgreSQL, мы поговорим о проблемах, с которыми вы можете столкнуться при переезде с распространенной СУБД MySQL. Дабы не утомлять всех лишней риторикой, сегодняшний рассказ будет более тезисный и проблемно-ориентированный.

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

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

                      Перейдем к делу.
                      Читать дальше →
                    • Мобильный трафик: его ультра-много, но он ультра-пассивный. Что с этим делать?

                        В начале года ComScore опубликовал интересную статистику. Для того чтобы определить долю мобильного трафика, им была проанализирована аудитория сайтов крупнейших интернет-магазинов Америки. В итоге количество посетителей с мобильных устройств превысило количество посетителей с компьютеров. Более того, примерно 38% всех пользователей сайта Amazon, 44%eBay и 59%Apple заходят на ресурсы ТОЛЬКО со смартфонов.

                        image

                        Читать дальше →
                      • С чего начать работу на бирже и как купить акции Tesla



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

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

                          В продолжение темы мы организуем образовательные семинары и вебинары, посвященных вопросам о старте работы на фондовом рынке и инвестициях в акции международных компаний.
                          Читать дальше →
                          • +4
                          • 11.6k
                          • 7
                        • Почему для спорта нужны именно Polar

                            Привет, Geektimes!

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



                            История финской компании Polar Electro O
                            В 1975 году идея создания портативных кардиомониторов родилась прямо на лыжном треке. В те времена не существовало способов точного измерения пульса во время тренировки. Всего через год с небольшим была основана компания POLAR неподалеку от финского города Оулу, края, известного своими технологическими исследованиями и окруженного одними из самых сложными условиями в Европе. Специалисты быстро определили, что это место является идеальным плацдармом для испытания предельных возможностей инновационного оборудования компании.

                            В 1979 году POLAR подала свою первую заявку на патент для беспроводного пульсометра, а в 1982 году представила широкой общественности первый в мире беспроводной кардиомонитор, предназначенный для ношения, тем самым навсегда изменив режим тренировок спортсменов. Теперь, через более чем 30 лет первой волны открытий, компания POLAR предлагает самый обширный ассортимент продукции в данной отрасли. Начиная базовыми моделями, которые мотивируют и информируют новичков и активных спортсменов-любителей, регулярно занимающихся физическими упражнениями, и заканчивая комплексными тренировочными системами, предназначенными для мировых чемпионов в различных видах спорта.

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

                            Зачем какой-то непонятный Polar (Garmin, Suunto &etc.), когда Samsung Galaxy S5, S6, Gear S, Apple Watch и еще куча разных вещей делает это? Я, без всяких шуток, встречал такие упоминания даже в сравнительных обзорах. То есть человек прямо так и написал: «Garmin проигрывает участникам теста тем, что датчик нужно крепить на груди. Что, согласитесь, не комильфо». Помнится, при чтении того обзора на этой фразе у меня глаз выпал брови на лоб залезли.
                            Читать дальше →
                          • А вот про Sphinx 3.0

                              Вот вы там все сидите и ничего не знаете, а мы, тем временем, пилим помаленьку мега-релиз поискового движка Sphinx за номером 3.0. Грядет ряд больших переделок. Часть из них, как полагается, ещё даже как следует не начата. Однако большая часть уже скорее готова, чем нет. А отдельно взятые изменения даже протекли в публичную ветку 2.3. Так что, пожалуй, настало время вкратце начинать рассказывать, чего ожидать в светлом будущем: надеюсь, не столь отдалённом. Кому интересно почитать, все под кат; кому послушать, приходите на meetup в эту субботу. Если совсем вкратце, то: прощай, концепция дополняющего основную базу движка; привет, хранилище документов, тотальный RT, репликация, REST и ряд других известных ключевых слов.
                              Читать дальше →
                            • Хардбол и камера видеомастер



                              Всем привет!

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

                              Итак, хардбол — это военно-тактическая игра, похожая чем-то на страйкбол и пейнтбол. Основное отличие хардбола от страйкбола и пейнтбола – пневматическое оружие калибром 4,5 мм и мощностью не более разрешенных законодательством 7,5 Дж.
                              Зачем хардболистам камера?
                            • Создание изоморфного приложения на React и Flummox

                              Сегодня я хочу показать, как используя React, Flummox и Express, создать полноценное изоморфное приложение.

                              Идея изоморфности давно витала в воздухе, но никто не знал этого слова, поэтому ничего особо не менялось, пока не пришел airbnb.

                              За полгода до этого появился React, позже появился Flux и множество его реализаций, одна не хуже другой. Но все эти реализации ориентировались только на работу на клиентской стороне, они работали через синглтоны и, зачастую, их нельзя было нормально использовать на сервере. Я успел попробовать несколько, но ни одна мне не понравилась. Пока два месяца назад я не наткнулся на Flummox. Как заявляет разработчик, Flummox создан как раз для изоморфных приложений, он не использует синглтоны, присущие другим реализациям, и максимально прост в использовании.

                              Ожидается, что вы имеете опыт работы с React и слышали про Flux. Итак, поехали…
                              Забрать готовый код можно тут.
                              Читать дальше →