Как стать автором
Обновить
1
0
Дмитрий @zKey

Ведущий разрабочик

Отправить сообщение

Выбор и настройка Garbage Collector для Highload системы в Hotspot JVM

Время на прочтение6 мин
Количество просмотров29K


Введение


При работе в сфере RTB (Real Time Bidding) одной из ключевых характеристик является время, затраченное на показ рекламы пользователю, зашедшему на сайт. Оно складывается из нескольких этапов, один из которых – аукцион за рекламное место, проводимый SSP (Supply Side Platform) между несколькими DSP (Demand Side Platform) системами. В этом случае критической величиной является время, за которое DSP успеет ответить своим инвентарем и денежной ставкой за данный показ. Как правило, верхняя граница этого времени составляет примерно 100 миллисекунд. С учетом того, что для оптимальной производительности рекламных кампаний требуется десятки тысяч запросов в секунду, выполнение данного требования может стать весьма нетривиальной задачей.
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии21

9 ¾ действительно полезных советов по работе над крупными проектами

Время на прочтение4 мин
Количество просмотров26K

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

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

Бюрократия в этом случае – необходимое зло, тем ни менее, действующее на нервы. Чтобы избежать потерь драгоценных клеток я советую сразу подготовиться к тому, что придется поменять свой привычный workflow. Хорошая новость состоит в том, что, переучившись, вам не составит труда поступать также и на небольших проектах. Скорее всего, ваши коллеги будут приятно удивлены такой педантичностью
Читать дальше →
Всего голосов 23: ↑19 и ↓4+15
Комментарии26

Тест производительности: удивительно и просто

Время на прочтение15 мин
Количество просмотров38K
Так сложилось, что последние полгода я активно занимался тестами производительности и мне кажется, что в этой области IT царит абсолютное непонимание происходящего. В наше время, когда рост вычислительных мощностей снизился (vertical scalability), а объем задач растет с прежней скоростью, проблема производительности становится всё острее. Но прежде, чем броситься на борьбу с производительностью, необходимо получить количественную характеристику.

Краткое содержание статьи:

Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии5

Специализация по алгоритмам и структурам данных от Яндекса, Вышки, UC San Diego и CSC

Время на прочтение7 мин
Количество просмотров28K
Какие алгоритмы используют социальные сети, чтобы осуществлять поиск по графу друзей? Как телекомпании выбирают, какую рекламу показывать, чтобы максимизировать прибыль? Как собрать геном из миллионов фрагментов? Как вычислить кратчайший путь из Нью-Йорка в Маунтин Вью в тысячи раз быстрее, чем это делают классические алгоритмы?

На Coursera появилась еще одна полезная специализация, созданная при участии Яндекса, — «Алгоритмы и структуры данных». Среди преподавателей не только представители Яндекса, Вышки, петербургского Computer Science Center, но и лекторы Калифорнийского университета в Сан-Диего, поэтому на этот раз все курсы специализации англоязычные.



Всего их пять, в конце слушателей ждет финальный проект. Один из них связан с биоинформатикой, второй — с поиском кратчайших путей в настоящих дорожных сетях и графах. В формате специализации все материалы доступны бесплатно. Оплата понадобится только в том случае, если вы захотите отправлять домашние задания на проверку и получить сертификат. Тогда вам нужно будет запрограммировать и сдать около 100 задач в тестирующую систему. Сделать это можно на C, C++, C#, Haskell, Java, JavaScript, Python2, Python3, Ruby и Scala.

Сегодня начинается первый курс — Algorithmic Toolbox. Под катом — программа специализации, информация о преподавателях и их мнение о том, кому она будет полезна и почему.
Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии24

Segmentation Fault (распределение памяти компьютера)

Время на прочтение16 мин
Количество просмотров115K


Когда я делаю ошибку в коде, то обычно это приводит к появлению сообщения “segmentation fault”, зачастую сокращённого до “segfault”. И тут же мои коллеги и руководство приходят ко мне: «Ха! У нас тут для тебя есть segfault для исправления!» — «Ну да, виноват», — обычно отвечаю я. Но многие ли из вас знают, что на самом деле означает ошибка “segmentation fault”?

Чтобы ответить на этот вопрос, нам нужно вернуться в далёкие 1960-е. Я хочу объяснить, как работает компьютер, а точнее — как в современных компьютерах осуществляется доступ к памяти. Это поможет понять, откуда же берётся это странное сообщение об ошибке.

Вся представленная ниже информация — основы компьютерной архитектуры. И без нужды я не буду сильно углубляться в эту область. Также я буду применять всем известную терминологию, так что мой пост будет понятен всем, кто не совсем на «вы» с вычислительной техникой. Если же вы захотите изучить вопрос работы с памятью подробнее, то можете обратиться к многочисленной доступной литературе. А заодно не забудьте покопаться в исходном коде ядра какой-нибудь ОС, например, Linux. Я не буду излагать здесь историю вычислительной техники, некоторые вещи не будут освещаться, а некоторые сильно упрощены.
Читать дальше →
Всего голосов 74: ↑71 и ↓3+68
Комментарии10

Дюк, вынеси мусор! — 2. Serial GC и Parallel GC

Время на прочтение11 мин
Количество просмотров127K
Heap


В предыдущей статье мы познакомились с терминологией и основными идеями, лежащими в основе сборщиков мусора Java HotSpot VM и многих других виртуальных машин. Теперь мы, наконец, можем взять в руки лопату и приступить к разгребанию нашей кучи. Сегодня у нас на обзоре две лопаты два сборщика мусора, используемые огромным количеством Java-программ, зачастую даже не подозревающих об этом. Это Serial GC и Parallel GC. Их популярность объясняется просто — данные сборщики выбираются виртуальной машиной по умолчанию для большинства аппаратных конфигураций.

Используемые в этих сборщиках подходы к работе с кучей в том или ином виде применяются в более продвинутых реализациях, поэтому на данном этапе нам будет очень важно разобраться с заложенными в них идеями и возможностями.
Интересно, хочу разобраться
Всего голосов 36: ↑36 и ↓0+36
Комментарии22

Дюк, вынеси мусор! — 1. Введение

Время на прочтение13 мин
Количество просмотров221K


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

Попробуем в нескольких статьях пройти путь от описания базовых идей, лежащих в основе всех сборщиков мусора, до разбора алгоритмов работы и возможностей тонкой настройки различных сборщиков Java HotSpot VM (вы ведь знаете, что таких сборщиков четыре?). И самое главное, рассмотрим, каким образом эти знания можно использовать на практике.
Узнать
Всего голосов 36: ↑36 и ↓0+36
Комментарии7

Big Data от А до Я. Часть 1: Принципы работы с большими данными, парадигма MapReduce

Время на прочтение6 мин
Количество просмотров517K

Привет, Хабр! Этой статьёй я открываю цикл материалов, посвящённых работе с большими данными. Зачем? Хочется сохранить накопленный опыт, свой и команды, так скажем, в энциклопедическом формате – наверняка кому-то он будет полезен.



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



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


Читать дальше →
Всего голосов 58: ↑51 и ↓7+44
Комментарии35

Big Data от А до Я. Часть 2: Hadoop

Время на прочтение9 мин
Количество просмотров230K
Привет, Хабр! В предыдущей статье мы рассмотрели парадигму параллельных вычислений MapReduce. В этой статье мы перейдём от теории к практике и рассмотрим Hadoop – мощный инструментарий для работы с большими данными от Apache foundation.

В статье описано, какие инструменты и средства включает в себя Hadoop, каким образом установить Hadoop у себя, приведены инструкции и примеры разработки MapReduce-программ под Hadoop.


Читать дальше →
Всего голосов 44: ↑38 и ↓6+32
Комментарии8

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

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

Биохакинг сна: подтверждённые наукой советы

Время на прочтение11 мин
Количество просмотров289K


Сон до сих пор является одной из величайших загадок для науки, как гравитация и квантовое поле. Мы до сих пор не понимаем, для чего именно мы спим, хотя всё больше узнаём об этом. Ниже собраны советы для тех, кто долго не может уснуть, часто просыпается, не чувствует себя отдохнувшими наутро, или просто хочет улучшить качество своего сна.
Читать дальше →
Всего голосов 227: ↑173 и ↓54+119
Комментарии207

Слишком быстрый, слишком мегаморфный: что влияет на производительность вызова метода в Java?

Время на прочтение9 мин
Количество просмотров21K
От переводчика:
спор сторонников написания final везде и всюду и их противников сродни спору остроконечников и тупоконечников. Как и в некоторых других сообществах, в нашей компании этот вялотекущий спор шел годами. И только эта статья Ричарда Вэрбёртона (Richard Warburton) позволила нашим остроконечникам взять верх.


О чём речь?

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

У меня были некоторые соображения о том, возникнет регрессия производительности или нет, но я сначала попытался узнать, публиковал ли кто-нибудь уже результаты бенчмарков по этому вопросу. К сожалению, я ничего не смог найти. Это не означает, что они не существуют или что другие люди не исследовали ситуацию, но я не встречал никакого кода, прошедшего экспертную проверку. Так что самое время написать несколько бенчмарков.
Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии5

Алгоритмы и структуры данных — шпаргалка

Время на прочтение1 мин
Количество просмотров200K
Пару недель назад, необходимо было освежить информацию в голове информацию по структурам данных и алгоритмам для собеседования. Первым делом полез на www.coursera.org, где хотел пробежаться по некоторым лекциям курса Алгоритмы, там же были две сводные таблички, которые в процессе изучения курса взял на заметку — отлично помогали запомнить сложность операций. Но, к моему удивлению, материалы пройденного курса стали недоступны. Быстрое гугление, в надежде, что кто-нибудь выложил лекции на торрентах, к сожалению, не дало результатов. В итоге, я нашел полную коллекцию слайдов по данному курсу. Спешу поделиться. Самое главное, что взял из этих слайдов, — это вышеупомянутые сводные таблички. Думаю многим пригодится.
Читать дальше →
Всего голосов 76: ↑61 и ↓15+46
Комментарии43

Многопоточность в Java

Время на прочтение14 мин
Количество просмотров1.1M
Здравствуйте! В этой статье я вкратце расскажу вам о процессах, потоках, и об основах многопоточного программирования на языке Java.
Наиболее очевидная область применения многопоточности – это программирование интерфейсов. Многопоточность незаменима тогда, когда необходимо, чтобы графический интерфейс продолжал отзываться на действия пользователя во время выполнения некоторой обработки информации. Например, поток, отвечающий за интерфейс, может ждать завершения другого потока, загружающего файл из интернета, и в это время выводить некоторую анимацию или обновлять прогресс-бар. Кроме того он может остановить поток загружающий файл, если была нажата кнопка «отмена».

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

Давайте начнем. Сначала о процессах.
Читать дальше →
Всего голосов 75: ↑59 и ↓16+43
Комментарии97

Советы по C++

Время на прочтение2 мин
Количество просмотров64K

Предыстория



За 2 года, я прочитал очень много книг по C++. Лучшим вариантом запоминания информации считаю ведение конспектов.
Несколько дней назад я остался без компьютера и интернета. Чтобы не тратить время впустую решил пересмотреть все свои записи. В тот момент ко мне и пришла идея сервиса, о котором я расскажу ниже.
Читать дальше →
Всего голосов 125: ↑108 и ↓17+91
Комментарии59

Онлайн-инструменты для кодеров

Время на прочтение2 мин
Количество просмотров284K
Онлайн-сервисы становятся все популярнее, постепенно усложняя функционал и улучшая интерфейсы. В этой подборке представлены онлайн-инструменты для кодеров.

Cloud9


«Это Google Docs, только для кода» — так говорят о проекте. Облачный сервис вырос из Mozilla Bespin. Основные фишки: SSH, drag-and-drop и возможность разработки оффлайн.

Читать дальше →
Всего голосов 204: ↑191 и ↓13+178
Комментарии55

Тест Джоэла как инструмент собеседуемого

Время на прочтение5 мин
Количество просмотров68K
Многие хабровачане наверняка знакомы с тестом Джоэла (перевод). Если в двух словах, Джоэл Спольски предлагает на основе выбранных им критериев оценить любому инженеру, насколько хороша его команда.

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

Допустим, эта часть Вам понравилась и Вы задумались о том, чтобы перейти в этот проект. Потенциально Вам с этими людьми работать следующие несколько лет (ну минимум — месяцев). Поэтому имеет смысл пораспрашивать о проекте поподробнее. А заодно и будущих сокомандников прощупать — что они за перцы? ;)

И вот тут выясняется, что вышеупомянутный тест Джоэла очень хорошо подходит для выяснения подробностей о проекте. С одной существенной оговоркой — тест составлен более двенадцати лет назад. За это время отрасль существенно шагнула вперёд. Поэтому вопросы имеет смысл слегка подкоррекировать с учётом этого факта.

Читать дальше →
Всего голосов 104: ↑86 и ↓18+68
Комментарии82

Типы адаптивных макетов

Время на прочтение2 мин
Количество просмотров62K


С каждым днем появляется все больше сайтов с адаптивной версткой. При проектировании такого дизайна первое, о чем задумывается разработчик — это общее представление контента на устройствах с разным размером экранов. В этой статье я описал некоторые типы (layouts) адаптивных макетов.
Читать дальше →
Всего голосов 82: ↑67 и ↓15+52
Комментарии8

Визуализируем геоинформацию из логов на web-карте в реальном времени

Время на прочтение9 мин
Количество просмотров17K


Дабы не было двусмысленностей, обозначу суть. При приёме на новую работу мне дали тестовое задание, которое кратко можно описать так: «Написать аналог Glow для геовизуализации событий входа пользователей в кастомерку интернет-магазина». Проще говоря, необходимо мониторить лог системы на предмет возникновения определенных событий и в случае оных выполнять (в данном случае) отображение точки на карте, которая будет определяться IP-адресом пользователя. Цель реализации: создать приятную на вид «игрушку» для презентационных целей, способную погрузить смотрящего в нирвану гармонии и эстетического наслаждения. Основным условием было использование в процессе разработки стека Java-технологий, чем обусловлено принятие многих решений. Кроме этого, было решено реализовать это в виде одностраничного сайта. А поскольку с Java и web я был знаком крайне поверхностно (писал в основном на C/C++), пришлось многому научиться. Что ж, будем разбираться вместе.
Статья рассчитана на интересующихся и начинающих, однако не «разжевывает» простые вещи, с которыми можно ознакомиться с помощью документации или специализированных статей. Наиболее полезные ресурсы, ссылка на исходники (распространяются по лицензии BSD) и ссылка на рабочую версию приведены в конце статьи.

Читать дальше →
Всего голосов 37: ↑36 и ↓1+35
Комментарии24

Завяжите шнурки и подтяните свои штаны!

Время на прочтение5 мин
Количество просмотров34K
Итак, что же замедляет разработку программного обеспечения?

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

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

Казалось бы, положение должно улучшаться, ведь Вы уже давно в проекте, разве нет? Почему всё происходит наоборот?
Читать дальше →
Всего голосов 93: ↑85 и ↓8+77
Комментарии40

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность