Как стать автором
Обновить

Компания Maxifier Development временно не ведёт блог на Хабре

Сначала показывать

Ускоряем процесс разработки с помощью Vagrant

Время на прочтение 10 мин
Количество просмотров 67K
image Как часто вам приходится разрабатывать и запускать приложение локально и упорно искать проблемы, потому что на продакшене приложение ведёт себя не совсем так, как вы этого хотели? А как часто вам присылают тикеты для решения проблемы в приложении, хотя на самом деле проблема именно в несовместимости версий разных приложений? А как долго вам приходится ждать виртуалку, когда для запуска новой версии приложения недостаточно ресурсов локальной машины? Для нас эти вопросы были довольно больными, и мы сломали тысячи копий в спорах, стараясь решить их. Практика показывает, что одним из вариантов для решения этих проблем может стать Vagrant.
Читать дальше →
Всего голосов 25: ↑23 и ↓2 +21
Комментарии 10

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

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


О чём речь?

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

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

Утечка памяти с ThreadLocal

Время на прочтение 3 мин
Количество просмотров 19K
Дамы и господа, хочу поделиться с вами знатным способом выстрелить себе в ногу, которым я снес себе одну конечность по колено, хоть и мнил себя экспертом в области concurrency-библиотеки. Но подвела меня такая простая штука, как ThreadLocal, нежданно-негаданно бесследно поглотив пару лишних гигабайт памяти сервера.

Безусловно, памяти ваших серверов можно найти лучшее применение, чем хранение мусора. Поэтому не повторяйте мою ошибку. А именно: не стоит пытаться хранить в ThreadLocal ссылки на этот самый ThreadLocal, или на какой-то граф объектов, в конечном итоге ссылающийся на этот самый ThreadLocal.

image

Как же так?!
Всего голосов 35: ↑33 и ↓2 +31
Комментарии 6

Собираем и анализируем логи с помощью Lumberjack+Logstash+Elasticsearch+RabbitMQ

Время на прочтение 9 мин
Количество просмотров 43K
Добрый день.

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

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

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

Почему? Maxifier представляет собой SaaS-продукт с клиентами в США, Бразилии, в нескольких странах Европы и в Японии, так что у нас около сотни серверов, раскиданных по всему миру. Для оперативной работы нам необходимо иметь удобный доступ к логам наших приложений и быстрый поиск ошибок в них в случае проблем на сторонних сервисах/api, появления некорректных данных т.д. Кстати, похожей системой сборки логов пользуются The Guardian (одни из наших клиентов).

После нескольких случаев сборки логов Rsync-ом со множества серверов мы задумались над альтернативой, менее долгой и трудоемкой. И недавно мы разработали свою систему сборки логов для разных приложений. Поделюсь собственным опытом и описанием, как это работает.
image
Читать дальше →
Всего голосов 35: ↑31 и ↓4 +27
Комментарии 19

Написание диссертации. Инструкция к применению. Взгляд с другой стороны баррикад

Время на прочтение 12 мин
Количество просмотров 199K
image
На Хабре регулярно появляются статьи, ориентированные на помощь при написании и защите диссертации (например, здесь и здесь). Лично мне в свое время помогли шуточные заповеди диссертанта, коим уже не один десяток лет (вариант, который впервые увидел я, был еще рукописным, причем потрепанным не хуже древнерусских летописей).

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

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

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

При этом обращу внимание, что все нижесказанное ни в коей мере не официальная позиция ученых советов или, наоборот, тайное знание клана профессоров, а просто субъективное мнение отдельно взятого меня.
Итак, поехали.
Всего голосов 115: ↑112 и ↓3 +109
Комментарии 99

Я параноик или Почему Большой Брат уже следит за нами

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

Дело в том, что я занимаюсь технологиями data mining и text mining последние лет пятнадцать. И поэтому все недавние скандалы, связанные с делом Сноудена и PRISM, XKeyScore, Muscular, СОРМ, чтением почты Гуглом, передачей конфиденциальных и гео данных с мобильников, и множество прочих оставили меня абсолютно равнодушным.

По очень простой причине – я уже знаю, что Большой Брат давно существует.

image

Если точнее, я абсолютно в этом уверен – так же, как не могу знать, что Солнце завтра взойдет, но весьма и весьма в этом убежден. И все новые доказательства существования Большого Брата полезны, но уже не обязательны.
А объяснение уверенности очень простое: при наличии необходимых ресурсов я сам мог бы его построить.
Читать дальше →
Всего голосов 210: ↑167 и ↓43 +124
Комментарии 328

Поведенческая реклама ≠ правительственная слежка. Пора внести ясность

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

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

Когда мы начинали разрабатывать алгоритмы для оптимизации интернет-рекламы в Maxifier, то вопрос доступности и конфиденциальности данных был одним из первых, от которых зависели и потенциальные возможности нашего продукта, и общее позиционирование компании. Для себя мы однозначно решили, что не будем использовать персонифицированные данные о пользователе, а работать только с усредненными статистическими данными. Да, это несколько обедняет алгоритмы. Да, результат для каждого конкретного человека будет чуть менее точным — т.к. мы будем использовать автоматически реконструированные шаблоны поведения, но не знания о поведении в сети этого конкретного пользователя. Создали самообучающуюся систему; со временем она становится все более «умной» — статистические знания о пользователях накапливаются, шаблоны уточняются. Такое решение позволило нам избежать всех проблем с последовавшими законами о конфиденциальности данных в Европе, например, из-за которых потом сильно пострадали все системы behavior targeting'a. А то, что мы изначально строили алгоритмы, предполагая высокий уровень шума и загрубленность данных, в дальнейшем нам даже позволило сделать это дополнительным конкурентным преимуществом — т.к. наш продукт работает в случаях недостатка информации или отсутствия доступа к ней из-за политики сайтов и рекламных сетей – в ситуациях, когда решения конкурентов- обладателей баз данных не справлялись по показателям качества.

Читать дальше →
Всего голосов 26: ↑15 и ↓11 +4
Комментарии 5

Запад есть Запад, Восток есть Восток. О разнице культур и взаимодействии внутри международной компании

Время на прочтение 5 мин
Количество просмотров 59K
Разница менталитетов и национальных деловых культур – тема вечная и актуальности своей не теряющая: чужая душа – по-прежнему потемки, а чужая заокеанная душа – еще и неиссякаемый источник курьезов и недопониманий. Поэтому хочу остановиться на одном принципиальном различии в мировоззрении двух культур. Сразу скажу, в данном сравнении речь пойдет только о русских и американцах (или, точнее, носителях русской и американской культур и ментальности). По англичанам мой опыт несколько другой, а по другим нациям не столь большая выборка, чтобы делать какие-либо выводы.

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

Наверное, я мог бы попробовать сформулировать разницу в одном предложении, но для полного понимания приведу красивую теоретическую базу, подтверждающую опыт.
Иллюстрация
Читать далее
Всего голосов 109: ↑92 и ↓17 +75
Комментарии 63

Сериализация в Java: как заглянуть внутрь черного ящика

Время на прочтение 9 мин
Количество просмотров 16K
Испокон веку в Java есть чудесный механизм сериализации, который позволяет, не прилагая особых умственных усилий, сохранять в виде последовательности байт сколь угодно сложные графы объектов. Формат хранения хорошо документирован, есть куча примеров, сериализованные объекты «весят» вполне себе немного, пересылаются по сети на раз, есть куча возможностей для кастомизации… Все это звучит прекрасно, но только до тех пор, пока вы не останетесь один на один каким-нибудь многомегабайтным бинарным файлом, содержащим очень-очень ценные и нужные именно сейчас данные.

Как голыми руками залезть в этот файл, и понять, что же хранится внутри этого огромного сериализованного графа объектов, не имея исходного кода? На эти и многие другие вопросы может ответить Serialysis – библиотека, которая позволит вам детально проанализировать сериализованные java-объекты (сериализованная форма — это мой вариант перевода выражения serial forms, решил не уходить далеко от оригинала). Таким образом можно получить информацию об объекте, которая не доступна через его публичный API. Библиотека также является полезным инструментом при тестировании сериализации ваших собственных классов.
Читать дальше →
Всего голосов 24: ↑22 и ↓2 +20
Комментарии 1

Хит-парад факапов: top-5 наших любимых багов в честь Дня тестировщика

Время на прочтение 6 мин
Количество просмотров 59K
Иллюстрация В Интернете уже есть немало подборок очень интересных багов – самых забавных и тех, что принесли максимальный урон (например, здесь).

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

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

Здесь я осознанно не привожу случаи, когда проблема на стороне пользователя или связана с недопониманием продавца, такие ситуации, конечно, заслуживают отдельного исследования, а сегодня – только наши собственные ошибки и ляпы.

Чтобы сохранять некоторую интригу, каждый случай будет состоять из двух частей – как это выглядело изначально, и что мы выяснили в итоге.
Итак —
Читать дальше →
Всего голосов 101: ↑94 и ↓7 +87
Комментарии 39

Опыт построения b2b-продукта: 3 континента за 6 лет и полведра набитых шишек

Время на прочтение 21 мин
Количество просмотров 26K
Сегодня нам, компании Maxifier Development, исполняется 6 лет… Ну ладно, соврал, не сегодня. На самом деле случилось это недели две назад, но только сейчас, когда я возвращаюсь из нашего нью-йоркского офиса обратно в родную Самару, наконец-то дошли руки что-то написать по этому поводу.

За шесть лет мы прошли путь от идеи на бумажке до международной компании стоимостью в десятки миллионов долларов. Создали сложный программный продукт в области оптимизации Интернет-рекламы, которым ежедневно пользуются крупные медиа-компании в Европе и Америке и уже подтягивается Россия. Открыли офисы в США, Японии и Англии.

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

Я надеюсь, что теперь мы будем регулярно публиковать статьи, связанные как с нашей предметной областью, так и просто посвященные вопросам разработки, менеджмента, взаимодействия с клиентами и прочим «интересностям» в ИТ. Но в этой, начальной статье хочется просто оглянуться назад, на основные вехи развития нашей компании.
наши скромные завоевания
Читать дальше →
Всего голосов 39: ↑37 и ↓2 +35
Комментарии 16

Как мы отметили «Хэллоуин»’2012!

Время на прочтение 2 мин
Количество просмотров 3.3K
За суетой рабочих дней не замечаешь, как быстро летит время.
Тем более это касается программистов, тестировщиков и бизнес-аналитиков, людей, которые проводят за компьютером большую часть своей жизни и находятся в постоянном процессе интеллектуальной деятельности. Им просто необходимо временами получать заряд положительных эмоций и впечатлений – это нас и заставляет тщательно подходить к организации праздников, кооперативов и просто небольших посиделок в офисе.

А повод для мероприятия нам найти никогда не сложно! У нас иностранная компания, и мы можем воспользоваться случаем и отметить любой зарубежный праздник. Также наши ребята часто ездят в командировки за границу, и по приезду мы обязательно собираемся все вместе, чтобы дать им возможность поделиться впечатлениями и угостить нас хорошим заграничным алкоголем. ))

В этот раз у нас были 2 хороших повода повеселиться: приближался Halloween, таинственный праздник всего сверхъестественного и необъяснимого, и долгожданное продление контракта с одним из наших ключевых клиентов.
Читать дальше →
Всего голосов 10: ↑3 и ↓7 -4
Комментарии 3