• 10 мифов о бешенстве

      Всем привет.

      Чуть более года назад мне пришлось столкнуться с такой неприятной штукой, как подозрение на заражение бешенством. Прочитанная вчера статья о прививках для путешественников напомнила мне о том случае — в особенности отсутствием в ней упоминаний бешенства, хотя это крайне широко распространенный (особенно в России, Азии, Африке и Америке) и очень коварный вирус. К сожалению, связанным с ним рискам далеко не всегда придается должное значение.

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

      Что среднестатистический житель России может навскидку сказать о бешенстве? Ну, есть такая болезнь. В связи с ней чаще всего вспоминают бешеных собак. Старшее поколение скорее всего еще обязательно добавит, что в случае укуса такой собаки придется делать 40 уколов в живот и на несколько месяцев забыть об алкоголе. Вот, пожалуй, и всё.

      Давайте разберемся, почему такое отношение к этому заболеванию крайне опасно.
      Читать дальше →
    • Столярная мастерская своими руками: ожидания и реальность



        Зачем вообще делать столярную мастерскую? Однозначного ответа у меня нет. Если вам просто хочется делать что-то руками из дерева, то есть мастерские, в которые можно прийти, заплатить деньги за аренду станков и рабочего места, и сделать всё там. Необязательно иметь свое помещение и собственное оснащение. Если же вы хотите заниматься деревообработкой как бизнесом, то конкуренция здесь высокая, найти свою нишу сложно. Поэтому я начну с объяснения моих собственных мотивов.
        Читать дальше →
      • Пудра для мозга или как сделать порошок для посудомойки в 9,7 раз дешевле

        • Tutorial


        Update
        Новый вариант порошка и более подробный разбор во второй части: DIY порошок для посудомойки: разбираем промышленные средства и улучшаем рецепт

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

        Есть очень много областей нашей жизни, где наше представление формирует исключительно маркетинговый буллшит. Увы, большинство людей даже не пытаются задумываться о том, что лежит в основе всего этого. Очень часто рыночная ситуация приводит к тому, что себестоимость продукта составляет 0.5% от его цены. Остальное маркетинг, наценки, логистика, упаковка и тому подобное. Почти все в курсе про концепцию продажи чернил для принтера по цене слез гималайских девственниц и настойчивые рекомендации производителей использовать только оригинальные расходные материалы. Например, совсем недавно меня озарило, что 1.5 грамма сухого вещества во флаконе удобрений для растений не могут стоить 200-250 рублей. А ведь именно такое количество может уместиться в относительно стабильном состоянии в виде раствора. Я сразу представил себе гектары полей и грузовики, которые везут тонны порошка. В результате перешел на расфасовки по 1 кг Буйских комплексных сухих удобрений. Можно ванну раствора приготовить.

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

        TLDR:

        70% прокаленной соды и 30% стирального порошка вместо моющего средства.
        Если очень лень возиться с содой, то просто порошок Биолан или его аналоги. Сода удешевляет.
        Пищевая соль «Экстра» вместо соли.
        Да начнутся адские эксперименты!
      • Обработка сообщений ядра

          Предисловие


          Страшная сказочка:
          EDAC MC0: 1 CE read ECC error on CPU#0Channel#1_DIMM#0 (channel:1 slot:0)
          EXT4-fs error: ext4_wait_block_bitmap:445: Cannot read block bitmap
          Out of memory: Kill process 95 (sshd) score 31 or sacrifice child
          CMCI storm detected: switching to poll mode
          page allocation failure: order:1, mode:0x4020
          invalid opcode: 0000 [#1] SMP

          Неприятно выглядит, правда? Список может быть очень длинным очень длинный. В этой статье я расскажу как с этим жить и что мы с ним сделали.

          Часть из этих сообщений в примерах выше заставит вас погрузиться в бездны современной архитектуры процессоров («CMCI storm», удачи в поиске дороги назад, из дебрей интернетов)… Cтранные вещи в ядре могут нарушать ожидания о том, как работают компьютеры, делая последующую отладку очень затруднённой. Отсутствие знания о том, что случилось может даже оставить с грустным ответом «какая-то неведомая фигня, ребутнули, вроде, прошло».
          Читать дальше →
        • Лицензия для вашего open-source проекта

            В этой статье я хочу немного поговорить об авторском праве и свободных лицензиях на ПО. Текст является результатом самостоятельного выбора лицензий и их применения к своим проектам.

            Статья будет полезна тем, кто хочет:

            — в общих чертах понять, что такое авторское право (но лучше обратиться к юристу);
            — подобрать свободную лицензию для своего проекта;
            — разобраться, что нужно писать в шапке файла исходного кода.
            Читать дальше →
          • Установка OS Inferno New Edition (update)

            • Tutorial
            FAQ: Что такое OS Inferno и зачем она нужна?

            Информация в предыдущем посте устарела почти на 4 года, и меня попросили её обновить. Так же попросили не смешивать в одном посте установку с настройкой, поэтому здесь будет только установка, а настройка инферно описана в отдельном посте. Update: Описание установки для Windows обновлено в июне 2014.

            Итак, мы будем устанавливать распределённую ОС Inferno. На официальном сайте есть инструкции по установке, но они не совсем корректны и тоже немного устарели. Inferno может работать в двух режимах — native (на голом железе или в qemu/etc. как все обычные ОС) и hosted (как обычное приложение под *NIX/Win). Инструкции по установке native Inferno можно найти в русской вики. Помимо этого существуют и другие варианты — например, установка Inferno на Android (англ.). Лично я смысла в использовании native Inferno на обычных компах не вижу, поэтому буду описывать установку hosted Inferno под Gentoo, Ubuntu, FreeBSD, MacOSX и Windows.
            Читать дальше →
          • Механические клавиатуры

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

            А раз уж сталкиваешься с вещью регулярно, постепенно возникает вопрос — можно ли найти для работы какие-то более удобные варианты обычных клавиатур?

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

            Механические клавиатуры. Путеводитель.

            Читать дальше →
          • Memory management в ядре Linux. Семинар в Яндексе

              Привет! Меня зовут Роман Гущин. В Яндексе я занимаюсь ядром Linux. Некторое время назад я провел для системных администраторов семинар, посвященный общему описанию подсистемы управления памятью в Linux, а также некоторым проблемам, с которыми мы сталкивались, и методам их решения. Большая часть информации описывает «ванильное» ядро Linux (3.10), но некоторая часть специфична для ядра, использующегося в Яндексе. Вполне возможно, семинар окажется интересен не только системным администраторам, но и всем, кто хочет узнать, как в Linux устроена работа с памятью.



              Основные темы, затронутые на семинаре:
              • Задачи и компоненты подсистемы управления памятью;
              • Аппаратные возможности платформы x86_64;
              • Как описывается в ядре физическая и виртуальная память;
              • API подсистемы управления памятью;
              • Высвобождение ранее занятой памяти;
              • Инструменты мониторинга;
              • Memory Cgroups;
              • Compaction — дефрагментация физической памяти.

              Под катом вы найдете более подробный план доклада с раскрытием основных понятий и принципов.
              Читать дальше →
            • Разъяснение http2

                На днях Даниэль Штенберг, один из участников группы HTTPbis IETF, которая ведёт разработку протокола http2, опубликовал в своём блоге крайне интересный документ «http2 explained». Небольшой PDF-документ на 26 страницах весьма доступным языком рассказывает о предпосылках и деталях реализации протокола http2.

                Как мне кажется, на сегодняшний день это одно из самых лучших разъяснений о том, что такое протокол http2, зачем он нужен, как он повлияет на веб-разработку и какое будущее ждёт Интернет в связи с его появлением. Думаю, что всем людям, причастным к веб-разработке и веб-строению, информация будет полезна, ведь ожидается, что стандарт http2 будет принят уже в июне этого года после завершающей встречи группы HTTPbis в Нью Йорке.
                Читать дальше →
              • Kale — open source-инструмент для обнаружения и корреляции аномалий

                  Для мониторинга IT-инфраструктуры мы используем множество инструментов, в том числе:
                  • Zabbix — о нем написано немало статей здесь на хабре. Нам очень нравятся его возможности низкоуровневого обнаружения, но его возможности визуализации данных оставляют желать лучшего.
                  • Graphite — система, которая хранит данные и имеет удобный интерфейс для их отображения. Сейчас мы импортируем в нее метрики из Zabbix и храним историю.
                  • Shinken — система мониторинга, которая основана на Nagios и написана на языке Python. Сейчас мы присматриваемся к ней. Нам нравится то, что в нее очень просто импортировать данные из системы документации сети Netdot (о ней я уже писал ранее), а также она легко интегрируется с Graphite.

                  Можно долго обсуждать преимущества/недостатки тех или иных систем мониторинга, но я хочу остановиться только на одном вопросе — выявлении аномалий. Когда в вашей системе мониторинга количество метрик измеряется сотнями, отследить аномальное поведение одной или нескольких из них не составляет труда. Но когда количество метрик измеряется десятками или сотнями тысяч, вопрос автоматического выявления аномалий становится актуальным. Ни один администратор или группа администраторов не в состоянии вручную отследить поведение сложной системы, состоящей из сотен устройств.
                  Инженеры из Etsy в свое время столкнулись с этой проблемой и разработали свой инструмент для обнаружения и корреляции аномалий. Называется он Kale и состоит из двух частей:

                  Читать дальше →
                  • +26
                  • 15.7k
                  • 7
                • Мониторинг на основе данных

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



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

                    Мы работали над системой мониторинга не меньше времени, чем над функциональной частью сервиса — и мы делимся наработанным опытом.
                    В целом, наша система мониторинга состоит из трех основных подсистем:
                    Читать дальше →
                  • Ceph: Cloud Storage без компромиссов

                      Здравствуйте, уважаемые читатели!

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

                      Ни RAID-массивы, ни «железные» СХД не способны решить все перечисленные задачи одновременно. Именно поэтому все большее распространение в индустрии хостинга приобретает Software-defined storage. Одним из ярких представителей SDS является распределенное хранилище под названием Ceph.

                      Мы решили рассказать об этом замечательном продукте, который используется в CERN, 2GIS, Mail.ru и в нашем облачном хостинге.
                      image
                      Далее...
                    • Кэш на запись и DRBD: почему полезно знать подноготную

                        Предыстория


                        Существует красивое решение для создания надёжного недорогого кластера основанное на DRBD + Proxmox VE. Страница в Wiki проекта Proxmox появилась 11 сентября 2009-го года и создана она была CEO компании Martin-ом Maurer-ом.



                        С тех самых пор это решение стало очень популярным, и никто не подозревал, что у этого решения есть скрытый подводный камень. В документации про это не пишут, а те, кто сталкивался с последствиями этой проблемы (например, зависание машины при онлайн миграции с одного хоста на другой), списывали всё на «случай». Кто-то грешил на железо, кто-то на Proxmox, а кто-то на драйверы внутри виртуальной машины. Конечно, хотелось бы, чтобы DRBD сам сообщал о своих проблемах, и, как-то подсознательно веришь в то, что он так и делает. Проверяешь /proc/drbd, видишь строку «cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate» и продолжаешь верить что DRBD не причём.
                        Читать дальше →
                      • Используем nginx, docker, skydns и skydock для обновления кода на лету (zero-downtime deployment)

                        Инструменты, которые мы будем использовать


                        Docker


                        Docker — простая и элегантная библиотека для создания легковесных изолированных друг от друга виртуальных контейнеров, в которых можно исполнять любой код. Совершенно не требователен к ресурсам, минимальный overhead.

                        Собрав контейнер один раз, его можно многократно использовать.

                        Простой пример — это БД Redis. Если нам необходимо несколько серверов Redis на одном компьютере, при обычном подходе нам придется изменять конфигурационные файлы в /etc/redis и менять файлы в /etc/init.d. Можно написать bash скрипт, но это не делает процесс легче.
                        Читать дальше →
                      • Мониторинг событий информационной безопасности с помощью ZABBIX

                          image

                          Впервые увидев Zabbix, я подумал, почему бы не попробовать использовать его в качестве решения для мониторинга событий информационной безопасности. Как известно, в ИТ инфраструктуре предприятия множество самых разных систем, генерирующих такой поток событий информационной безопасности, что просмотреть их все просто невозможно. Сейчас в нашей корпоративной системе мониторинга сотни сервисов, которые мы наблюдаем с большой степенью детализации. В данной статье, я рассматриваю особенности использования Zabbix в качестве решения по мониторингу событий ИБ.
                          Читать дальше →
                        • Strace

                            В течение минуты думал над заголовком, так ничего и не придумал…
                            Strace. Наверное нет того человека, который бы не слышал про strace. Если кто не слышал, то strace — это утилита, отслеживающая системные вызовы, которые представляют собой механизм трансляции, обеспечивающий интерфейс между процессом и операционной системой (ядром). Эти вызовы могут быть перехвачены и прочитаны. Это позволяет лучше понять, что процесс пытается сделать в заданное время. Перехватывая эти вызовы, мы можем добиться лучшего понимания поведения процессов, особенно если что-то идет не так. Функциональность операционной системы, позволяющая отслеживать системные вызовы, называется ptrace. Strace вызывает ptrace и читает данные о поведении процесса, возвращая отчет. Детали можно прочитать в вики или официальном man. Собственно вот, ну и речь конечно же о Linux. В других ОС свои аналоги.
                            Так вот, лично для меня strace это как последняя инстанция. Когда уже все логи просмотрены, все debug и verbose ключи включены, а причина проблем так и не обнаружена, я достаю из широких штанин запускаю strace. Есть одно но, strace это такой инструмент который вовсе не является серебряной пулей, которая тут же все покажет и расскажет. Для работы с strace требуется наличие определенных знаний и чем шире и глубже эти знания тем больше вероятность обнаружения проблемы.
                            В интернетах полно вводных статей, где описываются примеры запуска strace. Я же в этой статье покажу частные проблемы и их решение с помощью strace.
                            Читать дальше →
                          • LDAP. Настройка отказоустойчивого LDAP сервера

                            • Tutorial
                            The Internet Engineering Task Force (IETF)В этой статье я расскажу вам о сервере службы каталогов 389 Directory Server (он же Fedora Directory Server, он же Redhat Directory Server). Так уж повелось, что для доступа к серверу каталогов используется протокол LDAP. Если вы не работали с LDAP, я очень рекомендую ознакомиться со статьями в Wikipedia (тут про cлужбу каталогов, а тут про протокол LDAP).

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

                            Казалось бы, вполне логичен вопрос: а почему именно LDAP? Что мешает хранить учетные записи в MySQL или PostgreSQL? Ответ очевиден — ничего =)

                            Но над любой RDBMS служба каталогов обладает целым рядом преимуществ:

                            • Это стандарт. Многие приложения поддерживают аутентификацию/авторизацию через LDAP;
                            • Данные хранятся как иерархическое дерево, что позволяет делать эффективные операции поиска, выделив нужную часть дерева;
                            • Число операций чтения в тысячи раз превышают число операций записи, в связи с этим появляется огромное число плюсов: нет необходимости применения транзакций и rollback'ов, репликация работает без проблем, которые присущи RDBMS;
                            • Приложение должно видеть одну и ту же информацию на всех серверах службы каталогов, если сервер не хранит информацию, нужную клиентскому приложению, он может сам запросить ее у другого сервера или перенаправить само приложение к другому серверу;
                            • Из-за описанных выше свойств службы каталогов, этот сервис отлично масштабируется горизонтально.


                            Выбор сервера службы каталогов пал на 389 Directory Server. История этого LDAP сервера тесно связана с компанией Netscape (если интересно, почитать историю можно тут).

                            Читать дальше →
                          • Быстрая сборка образов ОС с помощью Packer

                              Repetitio est mater studiorum
                              Старинная латинская пословица

                              Если вам периодически приходится собирать образы операционных систем на базе Linux для разных сред виртуализации или даже облаков, или, тем более, вы пользуетесь Vagrant, то вам стоит взглянуть на новый инструмент от Митчела Хашимото (это создатель Vagrant) — Packer.

                              Packer — это инструмент для создания одинаковых образов ОС для различных платформ из одного описания.

                              Читать дальше →
                              • +19
                              • 18k
                              • 6
                            • Карманный PaaS c Dokku

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

                                Dokku это средство простого трансформирования Ubuntu сервера, в мини-Heroku. После установки dokku, вы получаете возможность делать:

                                $ git push production master
                                

                                для могих популярных платформ (Node.js, Java, PHP, Python etc). Результатом процесса развертования, есть запущенное приложение, к которому сразу можно получить доступ по http/https.

                                Как это работает?


                                Если открыть репозиторий проекта, то в описании можно увидеть строчку - «Docker powered mini-Heroku in around 100 lines of Bash» — около 100 строчек баш кода, который иммитирует работу Heroku. Это довольно «легкая» реализация, как для такой большой проблемы, которую он решает.

                                Все объясняется тем, что Dokku стоит на плечах таких технологий как: Docker, Heroku Buildpacks, Nginx, Git.
                                Читать дальше →
                              • Перенос данных между серверами с помощью LVM и iSCSI

                                  aquarium-PR-332-4

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

                                  Мы долго думали над этим вопросом и сегодня представляем вниманию широкой аудитории решение, которое кажется нам наиболее удачным.
                                  Читать дальше →