• Как я чуть не выкинул 150к на ветер или история установки приточной вентиляции в квартире

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


      Читать дальше →
    • Apple в 2019 году — это Linux в 2000 году

      • Translation
      Примечание: этот пост — ироничное наблюдение на тему цикличности истории. Это самое наблюдение не несет какой-либо практической пользы, но в сути своей — весьма меткое, так что я решил, что им стоит поделиться с аудиторией. Ну и конечно же, встретимся в комментариях.



      На прошлой неделе ноут, который я использую для разработки под MacOS, сообщил, что доступно обновление XCode. Я попытался его установить, но система сообщила, что ей недостаточно свободного места на диске для запуска программы установки. Окей, я удалил кучу файлов и попробовал снова. Все та же ошибка. Я пошел дальше и удалил еще кучу файлов и в довесок несколько неиспользуемых образов виртуальных машин. Эти манипуляции освободили на диске несколько десятков гигабайт, так что все должно было заработать. Я даже вычистил корзину, чтобы там ничего не «зависло», как это обычно бывает.

      Но даже это не помогло: я получил все ту же ошибку.
      Читать дальше →
    • Разбор задач с конференции Hydra — балансировка нагрузки и in-memory хранилища

        Несколько дней назад случилась конференция Hydra. Ребята из JUG.ru Group пригласили спикеров мечты (Лесли Лэмпорт! Клифф Клик! Мартин Клеппманн!) и посвятили два дня распределённым системам и вычислениям. Контур был одним из трёх партнёров конференции. Мы общались на стенде, рассказывали про наши распределённые хранилки, играли в бинго, решали задачки.


        Это пост с разбором задач на стенде Контура от автора их текста. Кто был на Гидре — это ваш повод вспомнить приятные впечатления, кто не был — шанс размять мозги big O-нотацией.


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



        Всего было три задачи:


        • о выборе реплик по весам для балансировки нагрузки
        • о сортировке результатов запроса к in-memory базе данных
        • о передаче состояния в распределённой системе с кольцевой топологией
        Взять и решить всё
        • +25
        • 3.7k
        • 9
      • Тюним память и сетевой стек в Linux: история перевода высоконагруженных серверов на свежий дистрибутив

          image

          До недавнего времени в Одноклассниках в качестве основного Linux-дистрибутива использовался частично обновлённый OpenSuSE 10.2. Однако, поддерживать его становилось всё труднее, поэтому с прошлого года мы перешли к активной миграции на CentOS 7. На подготовительном этапе перехода для CentOS были отработаны все внутренние процедуры, подготовлены конфиги и политики настройки (мы используем CFEngine). Поэтому сейчас во многих случаях миграция с одного дистрибутива на другой заключается в установке ОС через kickstart и развёртывании приложения с помощью системы деплоя нашей разработки — всё остальное осуществляется без участия человека. Так происходит во многих случаях, хотя и не во всех.

          Но с самыми большими проблемами мы столкнулись при миграции серверов раздачи видео. На их решение у нас ушло полгода.
          Читать дальше →
        • Собираем базу людей из открытых данных WhatsApp и VK

          Etan Hunt
          кадр из фильма Миссия Невыполнима II

          Эта история началась пару месяцев назад, в первый день рождения моего сына. На мой телефон пришло СМС-сообщение с поздравлением и пожеланиями от неизвестного номера. Думаю, если бы это был мой день рождения мне бы хватило наглости отправить в ответ, не совсем культурное, по моему мнению, «Спасибо, а Вы кто?». Однако день рождения не мой, а узнать кто передаёт поздравления было интересно.

          Первый успех


          Было решено попробовать следующий вариант:
          • Добавить неизвестный номер в адресную книгу телефона;
          • Зайти по очереди в приложения, привязанные к номеру (Viber, WhatsApp);
          • Открыть новый чат с вновь созданным контактом и по фотографии определить отправителя.

          Мне повезло и в моём случае в списке контактов Viber рядом с вновь созданным контактом появилась миниатюра фотографии, по которой я, не открывая её целиком, распознал отправителя и удовлетворенный проведенным «расследованием» написал смс с благодарностью за поздравления.

          Сразу же за секундным промежутком эйфории от удачного поиска в голове появилась идея перебором по списку номеров мобильных операторов составить базу [номер_телефона => фото]. А еще через секунду идея пропустить эти фотографии через систему распознавания лиц и связать с другими открытыми данными, например, фотографиями из социальных сетей.
          Далее перебор аккаунтов WhatsApp и VK по Москве и Ненецкому АО и распознание лиц
        • Что нового в Visual Studio 2015 для JS-разработчиков



            20 июля вышла финальная версия Visual Studio 2015 RTM, несущая в себе, в том числе, много нового для веб-разработчиков, специализирующихся на JavaScript: улучшения в редакторе, поддержка популярных библиотек и систем управления пакетами и сборки кода, возможности ES6, а также обновление поддержки Apache Cordova и Node.js.
            За подробностями прошу под кат.
          • Сборка docker контейнеров с помощью docker контейнеров

            image

            С момента начала работы с Docker, мы столкнулись с немалым количеством проблем. Одна из них — организация сборки приложений и упаковки их в контейнера. Мы решили эту задачу с помощью введения концепции сборочного контейнера. О том, что это такое, зачем нужно и как мы до этого дошли и пойдет речь в этом посте.
            Читать дальше →
          • Подводные камни A/Б-тестирования или почему 99% ваших сплит-тестов проводятся неверно?

              image

              «Горячая» и часто обсуждаемая сегодня тема оптимизации конверсии привела к безусловной популяризации А/Б-тестирования, как единственного объективного способа узнать правду о работоспособности тех или иных технологий/решений, связанных с увеличением экономической эффективности для онлайн-бизнеса.

              За этой популярностью скрывается практически полное отсутствие культуры в организации, проведении и анализе результатов экспериментов. В Retail Rocket мы накопили большую экспертизу в оценке экономической эффективности от систем персонализации в электронной коммерции. За два года был отстроен идеальный процесс проведения A/Б-тестов, которым мы и хотим поделиться в рамках этой статьи.
              Читать дальше →
            • Do not be evil

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

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

                Мы всегда верили в конкуренцию и право выбора пользователя. Настолько, что даже в наших поисковых результатах с первых дней существования Яндекса стоят ссылки на другие популярные поисковики. Если честно, я всегда был уверен, что и Гугл верит в то же. Что это компания инженеров, производящих крутые продукты. Увы, сейчас очевидно, что помимо технической компании, которая когда-то считала своим лозунгом «Do not be evil», теперь есть и совсем другая – компания, контролируемая юристами и бизнесменами.

                Android давно уже совсем не выглядит открытой OS. И уж точно не выглядит открытой политика конкуренции Google на этой платформе. Например, сейчас мы столкнулись с тем, что вендоры, чтобы продавать в России телефоны с сервисами Яндекса, должны отказаться от всех сервисов Google не только в России, но и во всех остальных странах. При этом правила получения GMS и Google Play для каждого из них могут измениться в любой момент.

                Мы хотим, чтобы в открытой OS условия и лицензии были открыты и прозрачны для всех.
                Читать дальше →
              • Свой облачный хостинг за 5 минут. Часть 1: Ansible, Docker, Docker Swarm

                  Cloud hosting

                  Привет Хабр! Последние 1.5 года я работал над своим проектом, которому был необходим надежный облачный хостинг. До этого момента я больше 10 лет занимался веб-программированием и когда я решил построить свой хостинг у меня были относительно поверхностные знания в этой области, я и сейчас не являюсь системным администратором. Все что я буду рассказывать может выполнить обычный программист в течение 5 минут, просто запустив набор сценариев для Ansible, которые я подготовил специально для вас и выложил на GitHub.
                  Читать дальше →
                • 2Mb веб-страницы — кого винить?

                  • Translation
                  Я надеялся, что это было временно. Я надеялся, что 2015 год будет годом производительности. Я ошибался. Средний вес веб-страницы возрос на 7.5% за пять месяцев, превысив 2Mb. Для этого же потребуется три 3.5-дюймовые дискеты двойной плотности!

                  Согласно отчёту на HTTP Archive за 15 мая 2015, статистика, собранная на почти половине миллиона веб-страниц, такова:
                  Читать дальше →
                • Лучший мессенджер для командной работы: Сравниваем HipChat, Slack и Kato

                    image

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

                    Компенсировать недостатки электронной почты призваны мессенджеры для корпоративных коммуникаций («team chat» в английском варианте). При этом выбрать подходящий инструмент из огромного количества предлагаемых на рынке систем бывает сложно — многие важные достоинства и недостатки конкретных продуктов выявляются только на этапе их использования, когда переключиться на другой мессенджер уже не так-то просто.

                    В сегодняшнем материале мы сравним собственный сервис Kato.im с лидерами рынка мессенджеров для командной работы Slack и HipChat.
                    Читать дальше →
                  • Data Lake – от теории к практике. Сказ про то, как мы строим ETL на Hadoop

                      В этой статье я хочу рассказать про следующий этап развития DWH в Тинькофф Банке и о переходе от парадигмы классического DWH к парадигме Data Lake.

                      Свой рассказ я хочу начать с такой вот веселой картинки:



                      Да, ещё несколько лет назад картинка была актуальной. Но сейчас, с развитием технологий, входящих в эко-систему Hadoop и развитием ETL платформ правомерно утверждать то, что ETL на Hadoop не просто существует но и то, что ETL на Hadoop ждет большое будущее. Далее в статье расскажу про то, как мы строим ETL на Hadoop в Тинькофф Банке.
                      Читать дальше →
                    • Статистика кода JDK 7

                        Захотелось получить статистику Java исходников и узнать, сколько в среднем бывает параметров у методов, методов в классах, конструкторов и т. д. Вопрос не совсем праздный, потому что на основе этих данных можно вычислить оптимальный размер по умолчанию для контейнеров для этих сущностей в программной модели кода (AST), чтобы сэкономить память. В частности, речь идет о проекте Spoon. С помощью этой библиотеки я и провел анализ, кстати.

                        Что может быть логичнее, чем протестировать статистику исходников JDK, чтобы делать некие предположения о любом Java-коде. Попутно я собрал самые необычные экземпляры — например, методы с наибольшим кол-вом параметров.
                        Читать дальше →
                      • Cocoa Developers Club — клуб iOS и OS X разработчиков

                          Все началось с того, что три месяца назад мы решили объединиться в сообщество русскоязычных iOS-разработчиков.

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

                          Для удовлетворения такого спроса мы решили использовать современный подход. В текущий момент для группового общения появились новые инструменты, такие как HipChat или Slack (подробнее про Slack здесь). Кроме того, что они используются в работе конкретной команды, их также можно использовать для объединения в сообщества по интересам. Мы выбрали Slack.
                          Читать дальше →
                        • Мой опыт внедрения Apache Cassandra

                            Как и большинство NoSQL-решений, C* подвержена одной крайне неприятной эпидемии: она является отличным инструментом для узкого класса задач, но позиционируется евангелистами как очередная серебряная пуля по хранению данных. В этой статье я расскажу о своём опыте внедрения C* в (сравнительно) нагруженный проект веб-аналитики. Она будет полезна всем, кто стоит перед выбором масштабируемого хранилища данных, и развенчает мифы и заблуждения об этом инструменте.


                            Читать дальше →
                          • Впечатления от работы с Play! Framework 2.1 + Java

                              Шла четвёртая неделя тяжёлых боёв с Play! Framework 2.1 + Java. Победа неумолимо приближалась, но до полной капитуляции было далеко.
                              После обнадёживающих новостей про развитие Play! 2.1, например в LinkedIn, было решено попробовать его в одном новом проекте. Испытать его, так сказать, в деле. Что из этого получилось? Я бы сказал, что это была небольшая война между мной и Play! 2.1. Почему? Подробности под катом, а для нетерпеливых:

                              Краткий вывод

                              Для штурма надо было брать секретное оружие под кодовым названием Scala. Если встать лицом к лицу с Play! Framework 2.1 и крикнуть со всей силы: «Ты есть Scala-фреймворк!», то он испугается такой прямоты и скромно откроет свои двери в мир больших возможностей.
                              «Не знаете Scala?» — «Используйте Play 1.2».
                              «Хорошо разбираетесь в Scala?» — «Обязательно попробуйте Play 2.1. Но всё равно запаситесь терпением».

                              Подробные сводки с фронтов
                            • Социальная сеть на Android за несколько выходных — часть II (сервер)

                              • Tutorial

                              Краткое содержание первой части


                              В ответ на непрекращающийся бум мобильных социальных приложений, мы с друзьями решили собраться в мини-хакатон и написать очередную социальную сеть на Android с целью очертить круг общих вопросов и предложить скелет, из которого каждый сможет сделать что-то новое и оригинальное. В первой части мы рассмотрели интерфейс клиента, сетевые запросы, граф друзей и обработку изображений.
                              В этой статье мы вкратце расскажем про загрузку фотографий в облачное хранилище, доставку push-уведомлений и очереди асинхронных задач на сервере.
                              Читать дальше →
                              • +11
                              • 27.4k
                              • 2
                            • Будущее файловых систем Linux

                                На прошедшем в начале марте этого года мероприятии Vault, организованным Linux Foundation в Бостоне, было много разговоров о файловых системах и хранилищах. Если думаете, что там не было сказано ничего нового, то вы ошибаетесь.


                                Читать дальше →
                              • Класс дедлоков про дедлок классов



                                  Знаете ли вы, как избежать дедлоков в своей программе? Да, этому учат, про это спрашивают на собеседованиях… И тем не менее, взаимные блокировки встречаются даже в популярных проектах серьёзных компаний вроде Google. А в Java есть особый класс дедлоков, связанный с инициализацией классов, простите за каламбур. Такие ошибки легко допустить, но трудно поймать, тем более, что сама виртуальная машина вводит программиста в заблуждение.

                                  Сегодня пойдёт речь про взаимные блокировки при инициализации классов. Я расскажу, что это такое, проиллюстрирую примерами из реальных проектов, попутно найду багу в JVM, и покажу, как не допустить такие блокировки в своём коде.

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