Pull to refresh
18
0
Vasiliy Kiryanov @tag

User

Send message

Балансировка 70 тысяч запросов в секунду на HighLoad++

Reading time5 min
Views39K

Библиотека докладов


Это не просто статья — это целая библиотека докладов про внутреннее устройство тех или иных крупных и высоконагруженных проектов. Все эти доклады звучали на конференциях HighLoad++ и РИТ++ за последние несколько лет.


Читать дальше →
Total votes 43: ↑38 and ↓5+33
Comments11

Особенности оптимизации ИТ-проекта при выходе в немецкий сегмент

Reading time5 min
Views1.1K


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

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

Казалось бы, всё просто — нанял переводчика, залил переведенные страницы на сайт — и радуйся. Но реальность, как всегда, куда веселее.

Несколько лет назад мне довелось поучаствовать в выводе нескольких проектов в немецкий сегмент Сети. Ту феерию факапов и заморочек я не забыл до сих пор.

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

Статья рассчитана в первую очередь на тех, кто не знает немецкого языка и не имеет опыта работы в de-net'е.

В случае возникновения каких-либо вопросов я с радостью отвечу в комментах или личке.

Читать дальше →
Total votes 128: ↑101 and ↓27+74
Comments125

Яндекс. Директ. Анализируем конкурентное окружение

Reading time4 min
Views16K

Представьте ситуацию. Вы разрабатываете сайты. Хорошие сайты для хороших людей. Ваши рекламные кампании работают давно, вы вышли на хороший уровень ROI, заказы идут с завидной периодичностью. Все казалось бы хорошо, пока в один прекрасный день мы не получаем кучу писем от Директа, о том что мы кем-то вытеснены с насиженных позиций. Мы идем в выдачу и видим на своей любимой позиции незнакомый сайт конкурента. Естественным нашим желанием будет узнать что это за фрукт и на основании этой информации принять стратегическое решение – ввязываться ли в войну бюджетов (если это серьезный и жирный конкурент) или подпереть снизу и помочь слить бюджет (если это мелочевка).

«Но это же невозможно!» – Скажете вы. – «Любая система контекстной рекламы руководствуется принципами закрытого аукциона и не предоставляет своим рекламодателям информацию о конкурентах. Мы ведь не знаем ни ключевых запросов конкурента, ни настроек его РК. Не знаем использует он минус-слова или кавычки. Самое главное – мы не знаем его ставок и CTR»

Спокойствие, только спокойствие! (с)

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

Читать дальше →
Total votes 94: ↑89 and ↓5+84
Comments34

Яндекс.Директ. Кавычки против минус-слов или как отделить жемчужины от навоза

Reading time4 min
Views16K

Цель настройки любой рекламной кампании сводится к двум основным стремлениям рекламодателя.
— Четко нацелиться на целевую аудиторию, выжать из нее максимум посетителей себе на сайт (если кто-либо из целевой аудитории, запрашивает ключевое слово – мы должны сделать все, чтобы заполучить его себе на сайт)
— Ни в коем случае не допустить показов нецелевой аудитории (показы этой аудитории понизят драгоценный CTR и повысят стоимость клика, а возможные случайные клики этой аудитории – съедят кусок бюджета)
Для выполнения этих целей Директ предоставляет нам 2 инструмента: Оператор «кавычки» и минус-слова. О них и речь в этой статье.
Читать дальше →
Total votes 54: ↑47 and ↓7+40
Comments14

Стажировка в Google 2 (Часть 1)

Reading time7 min
Views18K
Когда-то я уже писала про то, как мне удалось постажироваться в Google в Швейцарии. Тогда же я обещала отчет о своей следующей стажировке — во второй раз в Googleplex в Калифорнии. И вот это время пришло — моя вторая стажировка подходит к концу, и мне есть что рассказать!: о)

Disclaimer: Мой личный опыт, как всегда, не претендует на универсальность.

Читать дальше →
Total votes 194: ↑184 and ↓10+174
Comments92

Стажировка в Google — Часть 1

Reading time7 min
Views95K
Не так давно я писала о том, как готовиться к интервью в больших компаниях. Тогда же я пообещала JTOne написать о том, как я применяла советы из статьи на практике и что из этого получилось. И вот, как говорится, не прошло и года… :)

Disclaimer: Все написанное основано на моем личном опыте и все сделанные мною выводы субъективны и могут отличаться от выводов других людей.

Вместо вступления

Прошлым летом я была на четырехмесячной стажировке в Google в Швейцарии. А этим летом меня ждет трехмесячная стажировка в Googleplex в Калифорнии. Поскольку информации у меня много, я решила разделить свой рассказ на две части. В этой части я опишу как я попала на стажировку, как проходили интервью и как долго процесс занял по времени. А в следующей — что, собственно, было во время самой стажировки, что мне там понравилось, что не понравилось и вообще что я обо всем это думаю. Всем интересующимся — добро пожаловать под хабракат.

Читать дальше →
Total votes 177: ↑170 and ↓7+163
Comments121

Как устроен типичный ISP (Internet Service Provider)

Reading time3 min
Views30K
Многие задаются вопросом как устроена сеть провайдера или как им самим строить сеть, в данной статье я покажу как спроектирована и работает сеть у меня, на логическом уровне. Хотя не считаю свою структуру за идеальную, можно было сделать и лучше, но это мое имхо :) ибо истина “спроси у 2-х провайдеров как строить сеть – получишь 3 разных варианта “

Теперь подробнее о том как это работает
Читать дальше →
Total votes 46: ↑46 and ↓0+46
Comments15

Тест для оценки качества бригады разработчиков (Тест Джоэла)

Reading time1 min
Views536
Кросспост из моего блога.

Самое замечательное в этом тесте то, что он не отнимет более трёх минут.

1. Пользуетесь ли вы системой управления версиями исходного кода?
2. Можете ли вы выполнить сборку продукта за один шаг?
3. Выполняете ли вы ежедневную компиляцию?
4. Ведете ли вы базу данных ошибок в программе?
5. Исправляете ли вы ошибки, прежде чем писать новый код?
6. Есть ли у вас актуальный график работы?
7. Есть ли у вас спецификации?
8. Создали ли вы спокойные условия для работы программистов?
9. Стараетесь ли вы использовать для работы лучшие из существующих инструментов?
10. Привлекаете ли вы к работе тестеров?
11. Предлагаете ли вы соискателем рабочих мест написать во время собеседования код?
12. Проводите ли вы проверку «юзабилити» на случайных людях?

Что привлекает в тесте Джоэла, так это возможность быстро ответить «да» или «нет» на каждый вопрос. В идеале вы должны набрать 12 очков. 11 очков — терпимое количество, а 10 или менее указывает на серьёзные проблемы.

Взято из книги Джоэла Спольски «Джоэл о программировании».
Total votes 19: ↑17 and ↓2+15
Comments10

Я хочу работать в Google! Телефонное интервью (часть 1)

Reading time4 min
Views31K
Привет Хабр! Давно не писал. Да это и понятно. Защита диссертации, получение PhD, а сейчас ещё и активный поиск работы — всё это занимает очень много драгоценного времени. Но разговор сегодня пойдёт не о том. Хотелось бы поделиться с Вами, уважаемые хабралюди, ресурсами и описанием процесса подготовки к телефонному техническому интервью с Гуглом, первый технический этап которого я уже прошёл, и теперь готовлюсь ко второму, который будет в пятницу.
Читать дальше →
Total votes 207: ↑182 and ↓25+157
Comments99

Алгоритм принятия чужого проекта или что делать, когда у менеджеров случается медовый месяц

Reading time1 min
Views34K
“Да потому что я постоянно этим занимаюсь” — Иван Селиховкин (selikhovkin) в ответ на вопрос, почему мы будем записывать видео именно на эту тему.

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

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

Поэтому периодически, когда выдается свободная минутка, занимаемся углублением: развиваем конкретные темы, говорим про инструменты и стараемся ответить на возникшие вопросы. В прошлом видео при помощи Ивана Селиховкина (selihovkin) разбирались с заказчиком. В сегодняшнем видео решили углубиться в алгоритм входа в уже существующий проект:



7 последовательных шагов, которые должен пройти менеджер от своего “медового месяца” к выводам о том, что делать с проектом дальше.
Все материалы про управление проектами одним списком
Total votes 40: ↑32 and ↓8+24
Comments4

Как найти показатель степени двойки за O(1) с помощью последовательности де Брёйна

Reading time2 min
Views29K

Аперитив


Всем, наверное, известно, как посчитать количество бит в числе. Например, подойдут следующие два способа:
while (n)
{
    ++count;
    n &= (n-1);
}

while (n)
{
    if (n&1)
        ++count;
    n >>= 1;
}

Упражнение: какое в среднем количество операций будет выполнено в первой и во второй реализации?

Блюдо


Пусть у нас есть n-битное число вида 2^i. Нам необходимо найти i за O(1).
Как это сделать? Пусть n = 2^k. Построим последовательность де Брёйна (de Bruijn) над алфавитом {0,1} для подстрок длины k.

Что такое последовательность де Брёйна?

Читать дальше →
Total votes 60: ↑52 and ↓8+44
Comments49

Распространенные ошибки при построении ИТ-инфраструктуры малого бизнеса

Reading time10 min
Views55K

Которые все совершают, и из-за которых потом приходится все переделывать




Подавляющее большинство ИТ-инфраструктур малого бизнеса, с которыми мне пришлось сталкиваться, имеют один существенный недостаток – они не масштабируемы. Нет, нет, проблема не в том, что к имеющимся в настоящий момент 50-ти компьютерам вы не можете подключить 51-й. Проблема в том, что заложенная изначально архитектура создает с ростом бизнеса непропорционально больше проблем и затрат, нежели приносит пользы.

У молодого бизнеса горизонт планирования, как правило, ограничен годом, а то и парой месяцев, и построение ИТ-инфраструктуры является далеко не самой насущной проблемой. Если есть быстрое и дешевое решение, пусть и с побочными эффектами в будущем, бизнес выберет его, чем более дорогое, но правильное с точки зрения дальнейших перспектив. И в этом нет ничего плохого. Плохо, когда данная практика продолжается уже после того, как бизнес окреп и уверенно смотрит в будущее.

В данной статье я освещу несколько моментов, на которые стоит вовремя обратить внимание, и которые могут помочь компаниям избежать потерь, связанных с полным переделыванием ИТ-инфраструктуры по мере роста бизнеса:
Читать дальше →
Total votes 63: ↑51 and ↓12+39
Comments82

Memory management в ядре Linux. Семинар в Яндексе

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



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

Под катом вы найдете более подробный план доклада с раскрытием основных понятий и принципов.
Читать дальше →
Total votes 113: ↑107 and ↓6+101
Comments15

Перевод учебника по алгоритмам

Reading time1 min
Views165K


Рад сообщить, что вышел перевод отличнейшего учебника Дасгупты, Пападимитриу, Вазирани «Алгоритмы», над которым я работал последние несколько лет. В книге многие алгоритмы объяснены гораздо короче и проще, чем в других учебниках: с одной стороны, без излишнего формализа, с другой — без потери математической строгости. Откройте книгу на каком-нибудь известном вам алгоритме и убедитесь в этом. =)

В общем, угощайтесь: печатный вариант перевода, электронный вариант перевода (PDF), печатный вариант оригинала, электронный вариант оригинала (PDF).
Читать дальше →
Total votes 323: ↑321 and ↓2+319
Comments109

Почему мы не тестируем. Практика проведения технического интервью

Reading time5 min
Views52K
Я руковожу разработкой ПО уже достаточно много лет. За эти годы мне пришлось провести более тысячи интервью и посчастливилось захантить больше сотни классных программистов. Естественно, у меня сложилась определенная практика проведения технических собеседований, которой я собираюсь поделиться. Возможно, это окажется кому-то полезным.

Ставим задачу
Кого ищем? Ищем эффективных бойцов. Известно, что эффективность программистов со схожим опытом может отличаться в 10 раз (Ф. Брукс) или даже в 27 раз (Р. Гласс). Сразу, оговорюсь, эффективность это не только количество трупов врагов реализованных требований к ПО на единицу трудозатрат, но и умение результативно взаимодействовать с окружающими. Это важно, потому что по моим наблюдениям 50% проектных человеко-часов тратится на коммуникации. У нас это называется «синхронизация ментальных моделей».

Поэтому задача, которую ставим себе при проведении технического собеседования это постараться оценить эффективность бойца.


Если на заводы людей нанимают за умения и обучают нужному отношению к делу, то в разработке ПО, следует поступать наоборот. Нанимать за нужное отношение к делу и учить необходимым умениям. Не следует брать людей, которые знают и умеют, а потом заниматься промыванием их мозгов и пытаться мотивировать их на эффективную работу. Их знания и умения ничего не будут стоить уже через полгода или год.
В идеале, конечно, следует стараться привлечь и знающих, и умеющих, и подходящих по своим жизненным позициям. Но если приходится выбирать, то правильнее выбрать жизненную позицию. Ищем тех, кто хочет развиться и расти, а затем, если необходимо, помогаем им получить требуемые технические навыки. Предлагаем не работу, а возможности.
Почему не тестируем
Total votes 151: ↑125 and ↓26+99
Comments220

Много бесплатных книг по программированию

Reading time7 min
Views345K
Читать дальше →
Total votes 202: ↑192 and ↓10+182
Comments42

Каверзные сетевые вопросы

Reading time14 min
Views222K
Давно была идея собрать воедино интересные вопросы, касающиеся сетей.

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

Начнём с самых низких уровней и с самых простых вопросов



В1. Почему для витой пары выбран такой странный порядок: синяя пара на 4-5, разрывая зелёную, которая на 3, 6?




Ответ
О1: Сделано это в угоду двухконтактному телефонному разъёму. Таким образом, например, в патч-панель можно вставить как телефонный кабель, так и витую пару.
Можно даже через один кабель вывести и сеть и телефонию, но я вам этого не говорил!

habrahabr.ru/post/158177.


В2. В стандарте Ethernet между кадрами всегда имеется промежуток, называемый IFG (Inter Frame Gap) длиною 12 байтов. Для чего он нужен, и почему он присутствует в современных стандартах?

Читать дальше →
Total votes 166: ↑153 and ↓13+140
Comments209

Экзамен PMP: подготовка, аудит, рекомендации

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

Однако в процессе подготовки я понял, что информации по практическим вопросам подготовки и сдачи не достаточно, особенно по прохождению аудита.

В этой статье я хочу поделиться личным опытом подготовки, процесса подачи документов, прохождения аудита и сдачи экзамена.
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments11

Про мнимые и реальные оптимизации в 10 раз, целительный SSE, и все такое

Reading time6 min
Views38K
По мотивам одного вчерашнего поста про оптимизацию условных переходов при расчете x=sign(a,b)*min(abs(a), abs(b)) якобы в 10 раз. Краткая сводка:

  • оптимизация налицо, но размер мнимый: не в 10 раз, а 2.5 раза;
  • бенчмарки надо делать правильно: не надо мерить CPU stalls, RAM bandwidth итп вместо исследуемой функции;
  • бенчмарки надо делать правильно: иначе могут дико дрожать;
  • выставлять только приоритет прикольно, но на коротких бенчмарках зря: +0.5% скорости, -15% дрожания;
  • нужно мерить исследуемую функцию и только ее, только так получаешь корректные данные;
  • нужно греть проц, нужно считать минимум из N прогонов/секунд, только так побеждаешь дрожание;
  • нужно пользовать SSE, с ним получилось 8.6 раз, причем код… читается.

В общем, опять пачка классических методологических ошибок при бенчмарке. Кому интересно, как такие ошибки НЕ делать, подробности, детальный разбор полетов, оптимизация в еще несколько раз и, главное, исходники под катом.
Читать дальше →
Total votes 166: ↑153 and ↓13+140
Comments60

N+1 полезная книга для бизнеса: часть 3

Reading time6 min
Views96K


Привет!
Прошлые два обзора полезных книг за 2010 и 2011 год собрали просто адовое количество закладок, поэтому я продолжу. Прошел ещё год, ещё около 250 прочитанных книг – и вот самые интересные под катом.

Кто сказал, что слоны не умеют танцевать? Возрождение корпорации IBM: взгляд изнутри (Герстнер Луис)


Отличная книга про то, как удалось восстановить IBM. То, что со стороны выглядело как бессистемное перемещение активов и последовательность приказов без особого смысла, через несколько лет начало складываться в единую систему.

Догнать зайца (Стивен Спир)


Отличная книга про дебаг производственных процессов. Одна из основных вещей – то, что все серьёзные проблемы возникают из-за сочетания некритичных багов. Есть примеры из американской ядерной программы, NASA и т.п. Я предлагаю прямо сейчас пойти и прочитать описание железнодорожного крушения на Каменской: один не отчитался, второй не проверил тормоза, третий зажал тангенту, четвёртый сорвал стоп-кран. Результат — катастрофа.
Читать дальше →
Total votes 66: ↑60 and ↓6+54
Comments43

Information

Rating
Does not participate
Location
Гомель, Гомельская обл., Беларусь
Registered
Activity