• Разбор всех заданий отборочной игры Yandex.Root

      Сегодня ночью завершилась первая игра отборочного тура Yandex.Root — олимпиады для Unix-инженеров и системных администраторов. В ней приняло участие 456 человек из 229 команд, 194 из которых выполнили хотя бы одно задание. Со всеми девятью справилось 38 команд.

      Мы проводим Root в четвёртый раз, но впервые решили опубликовать на Хабре разбор тасков. Задачи, которые мы даём на олимпиаде, сопоставимы с теми, что регулярно решают наши системные администраторы. В Яндексе почти каждый день что-то выкатывается и, когда что-то идёт не так, нужно оперативно распознать это и эффективно отреагировать.



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

      Мы будем благодарны, если вы нам об этом расскажете и поделитесь своим мнением, как сделать лучше. Кстати, если хотите, то можете и попробовать себя в реальной игре. Вторая часть первого тура пройдёт через четыре дня — во вторник 14 апреля, и на неё ещё можно зарегистрироваться.

      Игра Shannon


      Мы решили назвать все игры в память о людях, которые внесли вклад в современные технологии, которые используются в нашей работе. Эта посвящена Клоду Шеннону, инженеру и математику, который среди прочего подарил нам слово «бит». Кстати, сам сервис root.yandex.ru запущен на compute узлах private cloud Яндекса.
      Читать дальше →
    • 500 слов в минуту без подготовки



        Обычная скорость чтения на русском языке составляет 120—180 слов в минуту. С помощью долгих тренировок можно повысить её где-то до 600 слов в минуту. Совсем недавно небольшой стартап из Бостона представил новую технологию под названием Spritz.

        Мне удалось без подготовки читать со скоростью 500 слов в минуту. Разработчики утверждают, что можно достигнуть 1000; без ущерба для смысла. Более того, утверждается, что использование Spritz также увеличивает скорость чтения обычных текстов.

        Вероятно, теперь можно ожидать появления устройств с крошечными экранами, которые составят конкуренцию традиционным электронным книгам. Очень рекомендую ознакомиться с демкой на сайте.
      • Есть на Хабре такие люди, которые играют в Го (китайская игра Вей-чи или Weiqi)?

           

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

          Есть на Хабре такие люди, которые играют в Го (китайская игра Вей-чи или Weiqi)?

          • 0%Слышал, но не играл0
          • 100%Играл1
          • 0%Никогда не слышал0
        • Геопланировщик для Android

            В повседневной жизни мы делаем большое количество однообразных действий, которые хотелось бы автоматизировать. К примеру, когда вы приезжаете на пары или на работу, вам нужно выключить громкий звонок телефона, а когда покидаете это место — нужно включить обратно. Или когда вы приходите в пиццерию, где есть бесплатный WiFi, было бы неплохо включить его обратно.

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

            Android геопланировщикHIPPOAPP.RU — разработка мобильных приложений
            Читать дальше →
          • Как решать проблемы пользователей не за сутки, а за минуты: ускоряем поиск по логам

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

              Чтобы оценить целесообразность разработки системы для оптимизации поиска по логам, мы воспользовались вот этой таблицей с XKCD:



              (на самом деле нет, но нам она все равно нравится).

              Итак, мы всерьез взялись за оптимизацию. Итогом нашей работы стала разработка системы, благодаря которой мы можем поднять историю действий примерно в 100 000 (сто тысяч, это не опечатка) раз быстрее. Мы разработали big-data сервис, который позволяет хранить петабайты информации в структурированном виде: каждому ключу у нас соответствует лог каких-то событий. Хранилище устроено так, что оно способно работать и на самых дешевых SATA-дисках, и на больших многодисковых хранилищах с минимальным количеством процессорного времени, при этом оно полностью fault-толерантно — если вдруг какая-то машина выйдет из строя, это ни на что не влияет. Если в системе заканчивается место, в нее просто добавляется сервер или несколько: система автоматически увидит их и начнет записывать данные. Чтение данных происходит почти моментально.
              Читать дальше →
            • Советы front-end разработчику



              Привет, читатель хабра.

              Наверное, ты сразу спросишь меня: «Да кто ты такой, чтобы давать мне советы?». Итак, немного обо мне.

              Первое мое общение с HTML и CSS было 10 лет назад, еще в школе, когда у меня только появился интернет, и я понял что тоже хочу делать странички, которые сможет увидеть весь мир. С тех пор у меня есть как минимум 5 полных лет опыта разработки сайтов по-взрослому. Сейчас я могу без лишней скромности сказать, что сверстал я уже пару сотен сайтов, большинство из которых, как ни странно, совершенно не совпадают с моими текущими требованиями к верстке.

              Я не хочу рассказывать как надо делать, эта статья результат моего опыта и попытка написать рекомендации тем, кто только начинает, хотя и для матерых верстальщиков (слово режущие слух) здесь могут найтись интересные идеи.
              Если ты заинтересовался прошу под кат…
              Читать дальше →
            • Маленькая админская история: как поймать OOM

                Админская загадка: На сервере произошло три oom kill'а, а мониторинг сказал только про два. Почему?

                Конфигурация

                Для мониторинга всего у нас настроена связка ganglia-shinken-logstash-elasticsearch-kibana. Полное описание довольно обширно, так что ограничусь только частью, имеющей отношение к проблеме.

                В logstash присылаются логи со всех серверов. Он складывает их в elasticsearch. В конфиге logstash'а настроена реакция на всякие странные сообщения, которые свидетельствуют о проблемах. Если сообщение появляется, присылается event мониторингу (shinken), который разными методами начинает беспокоить админов.

                Помимо syslog'ов, которые шлют сообщения от большинства приложений, у нас настроена ещё и отправка netconsole от всех ядер. Сама технология проста до невозможности — ядро помимо dmesg'а посылает сообщения в виде UDP-датаграмм на указанный IP и mac-адрес. MAC-адрес нужен потому, что netconsole очень низкоуровневая и заниматься разгадыванием «как из IP сделать MAC» (то есть ARP) не собирается. Благодаря низкоуровневости сообщения проходят даже в ситуациях полного катаклизма. Например, если программный коммутатор перестал работать (и сеть недоступна), сообщения всё равно будут посылаться. Более того, они будут посылаться, даже если в iptables сказано -j drop_vsyo_nafig. И, самое главное и ценное, эти сообщения успешно будут отправлены, если дисковая подсистема полностью не работает. То есть для post-mortem исследований «что именно случилось с зависшим сервером» — самое оно.

                Очевидным кандидатом в «плохие» сообщения является сообщение от oom-killer'а.

                [517935.914380] ntpd invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0
                [517935.914730] Call Trace:
                [517935.914807]  [<ffffffff816e14ce>] dump_header+0x83/0xbb
                [517935.914877]  [<ffffffff816e155b>] oom_kill_process.part.6+0x55/0x2cf
                ...
                с финальным торжествующим: 
                [517935.951044] Out of memory: Kill process 4550 (apache2) score 247 or sacrifice child
                [517935.951203] Killed process 4550 (apache2) total-vm:2610268kB, anon-rss:2012696kB, file-rss:3928kB
                


                Итак, возвращаемся к загадке. Идёт пусконаладка, предпродакшен, как, вдруг, апач (точнее, wsgi-приложение) насасывается данных до неприличия, и его прибивают со словами «go be fat somewhere else». Админам приходит сообщение. Казалось бы всё хорошо (ну, в админском смысле «хорошо»). Но…

                Случилось три oom'а, сообщения пришли о двух. Мониторинг в порядке, netconsole в порядке. Загадка? Проблемы? Симптомы таинственной неведомой фигни? Звать придворного шамана с бубном?
                forensic system administration
              • Управленческие инструменты: 5 вопросов для прояснения целей или для чего нужен BMW X5?

                  Давным давно в одной из компаний, лидере мирового производства микропроцессоров, меня однажды поразила менеджерская напасть. Решил, знаете ли, заняться развитием сотрудников. (Периодически, такое с менеджерами случается, да.)

                  Подхожу к своему сотруднику — назовем его Серега:

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

                  — Сань, ну голова варит уже не очень, возраст… (Серега старше меня на 3 года) Поэтому, наверное, в менеджерскую.


                  Ну, в менеджерскую — так в менеджерскую. Я ж на тот момент был менеджер опытный, уже 4 года опыта! Энергии много, желания помочь людям — через край!

                  Короче, Серега стал моим заместителем, начал посещать всякие тренинги. Взял в управление какой-то мощный студенческий проект, там ребята что-то делали.

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

                  Заодно поговорим, что делать, если вы обнаружили себя и/или своих сотрудников в квадрате C в статье:

                  Читать дальше →
                • Изучаем внутреннюю кухню ядра Linux с помощью /proc для быстрой диагностики и решения проблем

                  • Перевод
                  Данная статья касается современных линуксов. Например, RHEL6 с ядрами 2.6.3х — подойдёт, а вот RHEL5 с ядрами 2.6.18 (кстати, наиболее популярный в продакшне) — увы, нет. И ещё — здесь не будет описания ядерных отладчиков или скриптов SytemTap; только старые-добрые простые команды вида «cat /proc/PID/xyz» в отношении некоторых полезных узлов файловой системы /proc.

                  Диагностика «тормозящего» процесса


                  Вот хороший пример часто возникающей проблемы, которую я воспроизвёл на своём лаптопе: пользователь жалуется, что команда find работает «значительно медленнее», при этом не возвращая никаких результатов. Зная, в чём дело, мы решили проблему. Однако меня попросили изложить систематический подход к решению подобных задач.

                  К счастью, система работает под управлением OEL6, т.е. на достаточно свежем ядре (а именно — 2.6.39 UEK2)

                  Итак, приступим к диагностике.
                  Подробности
                • Тетрис на JavaScript с исходным кодом, который можно твитнуть

                    image

                    Любопытный пример минимализма продемонстрировал пользователь GitHub c ником Aemkei.

                    На скриншоте — известная игра Тетрис, справа — её исходный код. В игре нельзя вращать фигуры, нет подсчета очков — зато она может похвастаться размером JS-кода: менее 140 байт.

                    Поиграть можно здесь.

                    Github автора c его комментариями.

                    UPD: Судя по всему, автор — Мартин Клеппе — занят любимым делом: у него также есть реализации игры «Жизнь» на JavaScript (140 байт) и на Ruby (140 символов).
                  • Быстрая настройка tinderbox для тестирования портов FreeBSD

                      Предлагаемый текст адресован в первую очередь майнтейнерам портов FreeBSD и собственно коммитерам, но даже если вы пока не посылали ни одного PR категории ports, но собираетесь это сделать, или же просто не прочь узнать о методах QA применительно к коллекции портов, то думаю, вам тоже будет небезынтересно.
                      Читать дальше →
                    • Анонимности нет, смиритесь! (русские субтитры)

                      • Перевод

                      Выступление Стива Рамбама на конференции Hackers On Planet Earth (часть I)


                      Это выступление Стива Рамбама на последней конференции H.O.P.E. (Hackers On Planet Earth)

                      Стив выступает на каждой хакерской конференции H.O.P.E. с 1994 года.
                      Если вы не знаете про Стива и не видели его выступления — обязательно посмотрите это видео.

                      Покажите его тем, кто плохо знаком с миром IT: бухгалтерам, продажникам, маркетологам…
                      Обычным людям.

                      Видео с русскими субтитрами на Universal Subtitles
                      (хабр не позволил вставить скрипт):
                      Ctrl+ www.amara.org/ru/videos/YSEgofMg2wgv/info/steven-rambam-privacy-is-dead-get-over-it-part-1

                      Это же видео без наложенных субтитров, для англоговорящих:

                      Читать дальше →
                    • NetPing: конструктор для администратора и досуг для программиста



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

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

                        Речь пойдет про устройства NetPing. Эта российская разработка периодически упоминается на хабре, но детального рассказа я не встречал. Пусть эта статья будет продолжением серии «Оборудование российского производства». Мне достался самый универсальный прибор линейки – UniPing RS-232. Основная сфера его применения – удаленный мониторинг и управление множеством устройств в квартире, доме, офисе. Конечно, давно существует понятие «умный дом», но, как правило, это преподносится как вариант для состоятельных людей, хотя получают они черный ящик с жестко заданным, пусть и большим, набором функций. Однако, можно ведь все собрать и запрограммировать самому!

                        Интересно?
                      • Добавление диска в MDADM RAID 5/6 «на лету»

                          Сегодня хочу поделиться с вами краткой инструкцией, как добавить диск в существующий RAID 5/6 не пересобирая массив (зачастую это просто нереально — забэкапить 4-10Тб данных) и не останавливая работу сервера на сутки-другие. Данная инструкция написана для линуксовых софтрейдов через mdadm, с аппаратными контроллерами/виндой разговор особый и зачастую очень короткий (никак и все).

                          Итак, приступим (система — Ubuntu 10.04, но работать должно практически везде).
                          Читать дальше →
                        • Первые шаги для пауэршельшиков

                            Приди ко мне брате в Консоль!
                            — Админ Долгорукий.

                            Много ярлыков улетело в корзину со времён выхода в свет 2008 Windows. Люди попроще дивились новому синему окошку, которое ребята из Майкрософт зачем-то вставили в свои новые продукты. Люди, которые сидят на блогах и знают программирование начали изучать это окошко.



                            В итоге к народу начало приходить осознание того, что Майкрософт действительно разработали что-то новое и интересное.
                            И так, зачем вам это нужно? В основном, программа под названием PowerShell (в дальнейшем PS) предназначена для администраторов и программистов. Она позволяет автоматизировать примерно 99% всех действий в системе. С помощью неё вы можете настраивать удалённые компьютеры, запускать и перезапускать сервисы и производить обслуживание большиства серверных приложений. Как выяснилось, возможности у программы потрясающие.

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

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

                            Читать дальше →
                          • yourfilms.org — твои фильмы

                              Я люблю кино и смотрю довольно много фильмов. И у меня давно была потребность как-то удобно их каталогизировать. Долгое время я делал это с помощью Имхонета, то есть оценивал каждый просмотренный фильм и ставил дату просмотра. Там это сделано довольно неудобно: во-первых, все привязано к оценкам (а ставить оценку хочется не всегда), во-вторых, нельзя добавить информацию о пересмотрах фильма, да и вообще полезной (для меня) функциональности крайне мало, зато много ненужной.
                              Поэтому я решил сделать свой сервис, который бы позволял хранить полную историю просмотров фильмов и показывал бы всякую интересную статистику. Я большой поклонник Last.fm, и мне очень нравится принцип его работы: когда вся слушаемая тобой музыка сохраняется и раскладывается по полочкам. И я подумал, что будет интересно сделать нечто подобное для фильмов.
                              Получился из этого небольшой сайт под названием «yourfilms.org». Вот основное из того, что он умеет: собирает фильмы, которые пользователь смотрит, и, по аналогии с Last.fm, генерирует чарты актеров и режиссеров. Выглядит это примерно так:

                              image
                              Читать дальше →
                            • Легкий способ борьбы с ленью

                                UPD: Легкий способ борьбы с ленью, версия 2.0 (оптимизированная)


                                (название статьи взято по аналогии с книгами Аллена Карра, но статью написал не он, а я).:)

                                Я хочу рассказать о своем способе борьбы с ленью. Чтобы его применять, не нужна сила воли, не нужен особый склад ума, обладание энтузиазмом, отсутствие депрессии, шило в заднице, курсы НЛП и монастырь Шао-линя. Достаточно лишь совершить действия, на которые способен даже самый ленивый человек на свете.
                                Читать дальше →
                              • Краткое введение в терминалы и консоль

                                  Тут живут драконы и нет ментейнеров (вместо эпиграфа)

                                  Очень сжатое боевое описание «что есть псевдо-терминал» и «консоль».

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

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

                                  Как легко понять по кабелю, есть два конца: терминал и то, что ему посылает байтики в кабель.

                                  Когда запускается шелл, то он получает в своё распоряжение виртуальное устройство /dev/tty, которое у каждого процесса своё — это «обратная» часть терминала. Передняя часть в случае кабеля реализуется путти+компьютер, в случае консоли компьютера, специализированным ядерным драйвером (виртуальными консолями). Важно: драйвер эмулирует наличие терминала.
                                  Читать дальше →
                                • Google Body Browser


                                    Сегодня наткнулся на Google Body Browser. Имхо просто потрясающая вещь даже для тех, кто не занимается медициной.

                                    Хотя действительно интересно наглядно посмотреть-покрутить где находится желудок, как идут нервы и т.д., но для меня, как веб-разработчика это первый действительно наглядный пример толкового использования WebGL — без установки никакого плагина в Chrome 9+ и FireFox4. Кроме того используется декомпрессия ресурсов на клиенте.

                                    Отдельно отмечу возможности передачи прямых ссылок на определенный вид/орган, например вот так и возможности поиска органов с чем-то похожим на Google Instant (справа сверху — инпутбокс легко можно не заметить).

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

                                    Видео с демонстрации Google Web Browser'a с WebGL Camp'а можно посмотреть тут.
                                  • Начало коммерческой эксплуатации облака

                                      Пример интерфейса облакаОбещанное этим летом облако Селектела, в котором оплачиваются только потреблённые ресурсы, наконец-то, готово.

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

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