• «Извини, но у меня депрессия»: как работать с заболевшим сотрудником

    image

    «Извини, кажется, мне надо было раньше это сказать – я столкнулся с депрессией». Такое письмо мне пришло утром от одного из сотрудников, который уже пару дней не мог закрыть несложный тикет.

    Контекст: работаю тимлидом в крупной корпорации, в подчинении – удаленная команда из 50 человек (территориальный разброс — от Нью-Йорка до Токио). Столкнувшийся с депрессией сотрудник – мой ровесник (+- 30 лет), работает на этом месте 5 лет. Один из лучших членов команды, стабильно показывает отличные результаты, с мотивацией проблем ранее не было. Рабочий день – ненормированный: то густо, то пусто.

    Нет, это не профессиональное выгорание. Работа его всегда драйвила, ничего в ней менять не хочет (ни локацию, ни команду). «Ищу терапевта».
    Читать дальше →
  • 50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков

    • Translation
    • Tutorial


    Go — простой и забавный язык. Но в нём, как и в любых других языках, есть свои подводные камни. И во многих из них сам Go не виноват. Одни — это естественное следствие прихода программистов из других языков, другие возникают из-за ложных представлений и нехватки подробностей. Если вы найдёте время и почитаете официальные спецификации, вики, почтовые рассылки, публикации в блогах и исходный код, то многие из подводных камней станут для вас очевидны. Но далеко не каждый так начинает, и это нормально. Если вы новичок в Go, статья поможет сэкономить немало часов, которые вы бы потратили на отладку кода. Мы будем рассматривать версии Go 1.5 и ниже.
    Читать дальше →
  • суБД — Безопасность Данных

      В ходе реализации нового проекта заказчик часто задаёт вопрос о том, каким образом защищена внедряемая СУБД. Один из вероятных ответов (неправильный на мой взгляд): «БД находится во внутреннем периметре вычислительной сети и недоступна для злоумышленника». По статистике инсайдеры более опасны, так как у них есть возможность легитимно исследовать уязвимости в предоставленных сервисах.

      Предлагаю попробовать самостоятельно настроить уже имеющийся функционал, позволяющий повысить уровень защищённости вашей системы.
      Читать дальше →
      • +10
      • 9.9k
      • 3
    • Мониторинг Postgresql: запросы

        В 2008 году в списке рассылки pgsql-hackers началось обсуждение расширения по сбору статистики по запросам. Начиная с версии 8.4 расширение pg_stat_statements входит в состав постгреса и позволяет получать различную статистику о запросах, которые обрабатывает сервер.


        Обычно это расширение используется администраторами баз данных в качестве источника данных для отчетов (эти данные на самом деле являются суммой показателей с момента сброса счетчиков). Но на основе этой статистики можно сделать мониторинг запросов — посмотреть на статистику во времени. Это оказывается крайне полезно для поиска причин различных проблем и в целом для понимания, что происходит на сервере БД.


        Я расскажу, какие метрики по запросам собирает наш агент, как мы их группируем, визуализируем, так же расскажу о некоторых граблях, по которым мы прошли.

        Читать дальше →
        • +27
        • 31.1k
        • 8
      • Критическая уязвимость библиотеки OpenSSL позволяет проводить DoS-атаки



          Изображение: thehackernews.com

          В конце прошлой недели (22 сентября) организация OpenSSL Foundation объявила об устранении более десятка уязвимостей своей криптографической библиотеки. Среди найденных «багов» была и ошибка, эксплуатация которой позволяет злоумышленникам осуществлять DoS-атаки.
          Читать дальше →
          • +18
          • 9.2k
          • 8
        • 8 мифов о дедупликации

            Пришло время рассмотреть все мифы и узнать где правда в вопросах дедупликации для массивов данных.



            Несмотря на то, что технология дедупликации известна уже достаточно давно, но только сейчас технологии, применяемые в современных массивах данных, позволили ей пережить второе рождение. Во всех современных массивах данных на текущий момент используется дедупликация, но наличие этой функции в массиве еще не значит, что это даст весомые преимущества именно под ваши данные.
            К сожалению, большое количество администраторов принимают «на веру» и считают, что дедупликация обладает безграничными возможностями.
            Читать дальше →
          • Надоело молчать: правда о работе в службе технической поддержки ИТ-компании

              imageПоиск, адаптация и работа сотрудников служб технической поддержки стала темой для встречи руководителей и специалистов технической поддержки российских ИТ-компаний. Мероприятие проходило в Санкт-Петербурге на базе офиса компании Wrike. Участниками первого support-семинара стали представители более чем 20 компаний, в их числе: Parallels, Wrike, IT Summa, Git in Sky, Virtuozzo, Yota.

              В статье вы найдете ссылки на презентации спикеров. Видео запись докладов вы можете посмотреть по ссылке, а запись всего митапа доступна здесь.
              Читать дальше →
              • +11
              • 16.4k
              • 3
            • Как обезопасить Linux-систему: 10 советов

                На ежегодной конференции LinuxCon в 2015 году создатель ядра GNU/Linux Линус Торвальдс поделился своим мнением по поводу безопасности системы. Он подчеркнул необходимость смягчения эффекта от наличия тех или иных багов грамотной защитой, чтобы при нарушении работы одного компонента следующий слой перекрывал проблему.

                В этом материале мы постараемся раскрыть эту тему с практической точки зрения:



                / фото Dave Allen CC
                Читать дальше →
              • Мониторинг сетевого стека linux

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


                  Я расскажу, как достаточно простые метрики TCP/IP стека могут помочь разобраться с различными проблемами в распределенных системах.

                  Читать дальше →
                • Подборка материалов об облаках, дата-центрах и разработке сервисов

                    Сегодня мы решили разбавить вашу ленту облачным дайджестом, в котором собрали наиболее интересные материалы на разную тематику, подготовленные специалистами IaaS-провайдера 1cloud.ru и не только.



                    / фото Aurimas CC
                    Читать дальше →
                  • Анатомия веб-сервиса

                      Андрей Смирнов

                      Анатомия веб-сервиса


                      Андрей Смирнов


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


                      Какую часть я называю веб-сервисом, бэкендом, application-сервером? В классической архитектуре это то, что стоит за http rеverse proxy или load-балансировщиком, а с другой стороны у него находятся база данных, memcached и др. Вот только об этом бэкенде и будет идти речь.


                      Читать дальше →
                      • +18
                      • 22.8k
                      • 8
                    • NGINX: Перехват ошибок 5хх с помощью отладочного сервера

                      • Translation

                      Является ли ошибкой ответ 5хх, если его никто не видит? [1]


                      image

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

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

                      Для облегчения процесса поиска и отладки могут быть использованы некоторые полезные приёмы в случае, когда NGINX используется для проксирования или балансировки приложения. В этой статье будет рассмотрено особое использование директивы error_page в применении к типичной инфраструктуре приложения с проксированием через NGINX.
                      Читать дальше →
                      • +45
                      • 15.3k
                      • 4
                    • Путь к HTTP/2

                        От переводчика: перед вами краткий обзор протокола HTTP и его истории — от версии 0.9 к версии 2.


                        HTTP — протокол, пронизывающий веб. Знать его обязан каждый веб-разработчик. Понимание работы HTTP поможет вам делать более качественные веб-приложения.


                        В этой статье мы обсудим, что такое HTTP, и как он стал именно таким, каким мы видим его сегодня.

                        Читать дальше →
                      • Аудит уязвимостей Linux c Vulners.com

                          Vulners задумывался как поисковик для Security Content-а: уязвимостей, бюллетеней безопасности, эксплоитов, плагинов детекта и прочей полезной информации. Но мы подумали: если у нас уже есть разобранные бюллетени безопасности для основных Linux-дистрибутивов, почему бы нам не сделать сервис, который будет брать данные о системе, а на выходе отдавать список уязвимостей. Также, как это делают привычные сканеры уязвимостей, только быстрее и бесплатно.


                          Откуда мы получаем информацию об уязвимостях Linux? Для этого мы парсим бюллетени вендоров. Покажем процедуру разбора на примере бюллетеня безопасности Debian DSA-3638.
                          Читать дальше →
                        • Сопроцессы: -что, -как, -зачем?

                            Многие пользователи Bash знают о существании со-процессов, появившихся в 4-й версии Bash'a. Несколько меньшее количество знает о том, что сопроцессы в Bash не какая-то новая фича, а древний функционал KornShell'a появившийся ещё в реализации ksh88 в 1988 году. Ещё меньшее количество пользователей shell'ов умеющих сопроцессить знают синтаксис и помнят как это делать. Вероятно, я отношусь к четвёртой группе — знающих о сопроцессах, периодически умеющих ими пользоваться но так и не понимающих «зачем?». Я говорю «периодически», так как иногда я освежаю в голове их синтаксис, но к тому моменту, когда мне кажется что «вот тот случай когда можно применить co-proc» я уже напрочь забываю о том как это делать.

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

                            В заголовке статьи у нас 3 вопроса. Пойдём по порядку.

                            Что?


                            Что же такое co-process? Со-процессинг — это одновременное выполнение двух процедур, одна из которых считывает вывод другой. Для его реализации необходимо предварительно запустить фоновый процесс выполняющий функционал канала. При запуске фонового процесса его stdin и stdout присваиваются каналам связанными с пользовательскими процессами. Соответственно, один канал для записи, второй для чтения. Пояснять это проще на примерах, поэтому сразу перейдём ко второму вопросу.
                            Читать дальше →
                          • 9 ¾ действительно полезных советов по работе над крупными проектами


                              Я предпочитаю работать в маленьких командах: до 10 человек. Всех участников команды ты знаешь лично, чаще всего не нужно специально «бронировать время», чтобы обсудить что-то и принять решения.

                              Но случается и так, что мы беремся за работу над большими проектами. Под «большими» я понимаю композицию следующих факторов:
                              1. Более 50 проектов в solution’е. Назначение не всех из них вы знаете
                              2. Билд и выкладка длятся более 5 минут
                              3. Над кодом работают десятки или сотни человек в разных офисах (возможно и странах)
                              4. Существует четкое разделение труда и область ответственности каждой команды
                              5. Существуют строгие регламенты, стандарты оформления кода, прохождение ревью является обязательным критерием выполнения задачи
                              6. Учет рабочего времени производится позадачно, анализируются причины расхождения оценок и реальных трудозатрат

                              Бюрократия в этом случае – необходимое зло, тем ни менее, действующее на нервы. Чтобы избежать потерь драгоценных клеток я советую сразу подготовиться к тому, что придется поменять свой привычный workflow. Хорошая новость состоит в том, что, переучившись, вам не составит труда поступать также и на небольших проектах. Скорее всего, ваши коллеги будут приятно удивлены такой педантичностью
                              Читать дальше →
                            • Vulners — Гугл для хакера. Как устроен лучший поисковик по уязвимостям и как им пользоваться

                              • Tutorial


                              Часто нужно узнать всю информацию о какой-нибудь уязвимости: насколько найденный баг критичен, есть ли готовые сплоиты, какие вендоры уже выпустили патчи, каким сканером проверить наличие бага в системе. Раньше приходилось искать вручную по десятку источников (CVEDetails, SecurityFocus, Rapid7 DB, Exploit-DB, базы уязвимостей CVE от MITRE/NIST, вендорские бюллетени) и анализировать собранные данные. Сегодня эту рутину можно (и нужно!) автоматизировать с помощью специализированных сервисов. Один из таких — Vulners, крутейший поисковик по багам, причем бесплатный и с открытым API. Посмотрим, чем он может быть нам полезен.
                              Читать дальше →
                              • +45
                              • 79.9k
                              • 3
                            • Анализ производительности отдельных подсистем программы по Linux perf report

                                Обычно для подготовки отчета по профилированию на Linux я использовал только самые простые варианты запуска perf report (сами данные по производительности должны быть получены до запуска perf report командой perf record, вот тут можно подробнее прочесть с примером):


                                Отчет по модулям:


                                $ perf report --stdio --kallsyms=/boot/System.map-$(uname -r) --sort=dso -g none

                                Отчет по функциям:


                                perf report -g none --stdio --kallsyms=/boot/System.map-$(uname -r)

                                Отчет по функциям с построением callgraph:


                                perf report --stdio --kallsyms=/boot/System.map-$(uname -r) -g

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

                                Читать дальше →
                              • SO_TIMESTAMPING в картинках. Прием пакета


                                Бывает, что приложению требуется узнать точное время приема или отправки сетевого пакета. Например, для синхронизации часов (см. PTP, NTP) или тестирования задержек в сети (см. RFC2544).


                                Наивным решением будет запоминать в приложении время сразу после получения пакета от ядра (или перед отправкой ядру):


                                  recv(sock, buffer, length, flags);
                                  clock_gettime(CLOCK_REALTIME, timespec);

                                Ясно, что полученное таким образом время может заметно отличаться от момента, когда пакет был получен сетевым устройством. Для получения более точного времени нужна поддержка от операционной системы, драйвера и/или сетевого устройства.


                                Начиная с версии 2.6.30 Линукс поддерживает опцию сокета SO_TIMESTAMPING. Она позволяет пользовательскому сокету получать временные метки для отправляемых и принимаемых пакетов. Временные метки могут быть сняты самим ядром, драйвером или сетевым устройством (см. список поддерживающих устройств и драйверов). О том, что это вообще такое и как этим пользоваться, стоит почитать в Documentation/networking/timestamping.txt


                                В этой статье я расскажу о том, как пакеты доставляются от сетевого устройства пользователю, когда при этом снимаются временные метки, как они доставляются пользователю и насколько они точны. Приведенные примеры кода ядра взяты из версии 4.1.

                                Читать дальше →
                                • +21
                                • 6.9k
                                • 9
                              • Первые 10 минут на сервере

                                • Translation
                                • Tutorial

                                Азбука безопасности Ubuntu


                                «Мои первые 5 минут на сервере» Брайана Кеннеди — отличное введение, как быстро обезопасить сервер от большинства атак. У нас есть несколько исправлений для этой инструкции, чтобы дополнить ею наше полное руководство. Также хочется подробнее объяснить некоторые вещи для более юных инженеров.

                                Каждое утро я проверяю почтовые уведомления logwatch и получаю основательное удовольствие, наблюдая несколько сотен (иногда тысяч) безуспешных попыток получить доступ. (Многие довольно прозаичны — попытки авторизоваться как root с паролем 1234 снова и снова). Приведённая здесь общая методика подходит для серверов Debian/Ubuntu, которые лично мы предпочитаем всем остальным. Они обычно служат только хостами для контейнеров Docker, но принципы те же.

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

                                Примечание: Эта справка создана как базовая азбука. Её следует расширить и дополнить в соответствие с вашими потребностями.
                                Читать дальше →