Pull to refresh
0
0
John Doe @onehell

Лень и чревоугодие

Send message

Улучшая performance review

Reading time22 min
Views69K

Про то, как в Avito работает performance review, я очень много раз рассказывал внутри компании, а этой весной ещё и на двух конференциях — TeamLeadConf и CodeFest. Мы активно вкладываемся в доработку процесса, проводим много экспериментов и собираем кучу полезных данных, поэтому каждое новое выступление стабильно включает в себя какой-то новый контент. Цель этой статьи — не выдать вам готовое коробочное решение, а поделиться всеми практиками и инсайтами, которые мы обнаружили на своем пути.


Читать дальше →

TON: Telegram Open Network. Часть 1: Вступление, сетевой уровень, ADNL, DHT, оверлейные сети

Reading time9 min
Views106K

TON: Telegram Open Network


Уже две недели Рунет шумит про Telegram и ситуацию с его бессмысленной и беспощадной блокировкой Роскомнадзором. Рикошетом задело многих, но всё это — темы для постов на Geektimes. Меня же удивило другое — я до сих пор не видел на Хабре ни одного разбора запланированной к выходу на базе Telegram сети TON — Telegram Open Network. Мне захотелось восполнить этот недостаток, ибо поизучать там есть что — даже несмотря на отсутствие официальных заявлений о нём.


Напомню — ходят слухи о том, что Telegram запустил очень масштабное закрытое ICO, уже собрав в нём невероятные суммы. Предполагается, что уже в этом году будет запущена собственная криптовалюта Gram — и у каждого пользователя Телеграма автоматически появится кошелёк, что само по себе создает немалое преимущество перед остальными криптовалютами.


К сожалению, так как официальных заявлений нет, дальше я могу отталкиваться только от документа неизвестного происхождения, о чём я сразу вас предупреждаю. Конечно, он может оказаться очень искусной подделкой, но не исключено и то, что это — реальный whitepaper будущей системы, написанный Николаем Дуровым (и слитый, вероятно, кем-то из инвесторов). Но даже если это фейк, никто нам не запретит его поизучать и обсудить, верно?


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

Итак, приступим

Ansible не так прост

Reading time8 min
Views56K
У меня есть три сервера, но я не профессиональный сисадмин. Это означает, что несмотря на четыре базы данных и стопяцот приложений, бэкапы нигде не ведутся, к любой проблеме на сервере я подхожу, шумно вздохнув и бросив тарелку в стену, а операционные системы там достигли EOL два года назад. Я бы рад обновить, но на это нужно выделить, наверное, неделю, чтобы всё забэкапить и переставить. Проще забыть про yum update и apt-get upgrade.

Конечно, это неправильно. Я давно присматривался к chef и Puppet, которые, как я думал, решат все мои проблемы. Но я смотрел на конфиги знакомых проектов и откладывал. Это же нужно изучать, разбираться с ruby, бороться с многочисленными, по отзывам, косяками и ограничениями. Две недели назад статья Георгия amarao стала животворящим пинком. Даже не сама статья, а перечисление систем управления конфигурацией. После чтения комментариев и лёгкого гугления решил: возьму Ansible. Потому что питон, и на проблемы никто не жалуется.



Что ж, тогда я первым буду.
Читать дальше →

DevOps придумали разработчики, чтобы админы больше работали

Reading time9 min
Views43K

Еще 4 года назад использование контейнеров в production было экзотикой, но сейчас это уже норма как для маленьких компаний, так и для больших корпораций. Давайте попробуем посмотреть на всю эту историю с devops/контейнерами/микросервисами ретроспективно, взглянуть еще раз свежим взглядом на то, какие задачи мы изначально пытались решить, какие решения у нас есть сейчас и чего не хватает для полного счастья?


Я буду в большей степени рассуждать про production окружение, так как основную массу нерешенных проблем я вижу именно там.

Читать дальше →

Вопросы для собеседования бэкенд-разработчика

Reading time16 min
Views201K
Этот список появился как личная памятка по темам, которые я обсуждал с коллегами и друзьями и в которых хотел разобраться поглубже…

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

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

Freeswitch: по пути наименьшего сопротивления

Reading time13 min
Views75K

Немного лирики


Сколько помню себя в кресле системного администратора (а общий стаж приближается уже годам к 15), столько вопросы офисной телефонии воспринимались мной строчкой из Californication калифорнийских же RHCP: hard core soft porn. Телефония всегда казалась параллельным измерением, в ее администрирование и настройку я старался не лезть. Точнее, вообще обходить все эти телефоновопросы по широкой дуге, скидывая все подобные задачи на «специально обученных людей».
Читать дальше →

Приватность: рождение и смерть. 3000 лет истории приватности в картинках

Reading time16 min
Views37K


В эпоху ИТ и быстрого развития технологий понятие «приватности» превратилось в фикцию. Глобальные информационные сети и множество сервисов незаметно собирают о пользователях терабайты данных, да и сами пользователи постоянно выкладывают свою жизнь на всеобщее обозрение в соцсетях. Но всё же многие из нас считают свои компьютеры, смартфоны и поведение в сети «приватными», или хотя бы стремятся к этому. А как вообще появилось понятие «приватности» в человеческой культуре?

Работа и жизнь гика с проблемами концентрации внимания

Reading time8 min
Views221K
Каждый — гениален. Но если вы будете судить рыбу по ее способности лазать по деревьям,
она всю жизнь проживет с верой в свою глупость.

Альберт Эйнштейн

Лень — это привычка отдыхать до того, как ты устанешь.

Жюль Ренар


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

Решительно сократить количество проблем можно, придерживаясь следующих рекомендаций:
  1. В голове держать не больше трех-пяти вещей за раз, объединив действия в большие смысловые блоки.
  2. Раз и навсегда выбрать решение по ежедневному набору мелочей: вносить дела к календарь, проверять утюг и т.п.
  3. Разложить все вещи по своим местам и поддерживать заведенный порядок.
  4. Дублировать необходимые и часто используемые вещи; разложить их по всем углам.
  5. Умело пользоваться календарем, мобильником и другими инструментами интернет-века.
  6. И самое главное: НЕ ОТВЛЕКАТЬСЯ ПО МЕЛОЧАМ!
Интересно? Читаем дальше!

Slack — это противоположность организационной памяти

Reading time8 min
Views42K
С 2014 по 2016 годы у меня на работе произошло много всего, но главным кошмаром стал Slack. Менеджерам он понравился, потому что «всё излагается в письменном виде», «повышается доступность сотрудников» и «быстро публикуются ответы на вопросы». Я считаю, что он разрушает способность команды думать, планировать и выполнять сложную работу.

Прерывания работы


Slack помогает вашим худшим сотрудникам подавить лучших. В этом его сходство с офисом открытого типа.

Он превращает в норму постоянные прерывания, многозадачность и отвлечения, косвенно допуская всё это в офлайне и онлайне. Он делает нормой безумно быстро отвечать на вопросы. В мире Slack люди переходят от прямого вопроса к person до обращения here за несколько минут. И правильно: ведь тут если на вопрос не ответили в течение 5 минут, то о нём вообще забывают.

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

JSR 133 (Java Memory Model) FAQ (перевод)

Reading time25 min
Views152K
Добрый день.
В рамках набора на курс «Multicore programming in Java» я делаю серию переводов классических статей по многопоточности в Java. Всякое изучение многопоточности должно начинаться с введения в модель памяти Java (New JMM), основным источником от авторов модели является «The Java Memory Model» home page, где для старта предлагается ознакомится с JSR 133 (Java Memory Model) FAQ. Вот с перевода этой статьи я и решил начать серию.
Я позволил себе несколько вставок «от себя», которые, по моему мнению, проясняют ситуацию.
Я являюсь специалистом по Java и многопоточности, а не филологом или переводчиком, посему допускаю определенные вольности или переформулировки при переводе. В случае, если Вы предложите лучший вариант — с удовольствием сделаю правку.
Этот статья также подходит в качестве учебного материала к лекции «Лекция #5.2: JMM (volatile, final, synchronized)».

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Ну и да, приходите учиться ко мне!


JSR 133 (Java Memory Model) FAQ


Jeremy Manson и Brian Goetz, февраль 2004

Содержание:
Что такое модель памяти, в конце концов?
Другие языки, такие как C++, имеют модель памяти?
Что такое JSR 133?
Что подразумевается под «переупорядочением» (reordering)?
Что было не так со старой моделью памяти?
Что вы подразумеваете под «некорректно синхронизированы»?
Что делает синхронизация?
Как может случиться, что финальная поля меняют значения?
How do final fields work under the new JMM?
Что делает volatile?
Решила ли новая модель памяти «double-checked locking» проблему?
Что если я пишу виртуальную машину?
Почему я должен беспокоиться?
Читать дальше →

Я разработчик с 9 до 17 (и ты можешь стать таким)

Reading time4 min
Views65K
Этот конкретный твит от Сафьи Абдалла сподвиг меня на некоторые размышления:
Пожалуй, непопулярное мнение (и тут немного иронии от меня).

Чтобы быть способным и отличным инженером, вам не нужно писать статьи в блоге, участвовать в проектах open source, выступать с техническими лекциями или делать что-нибудь ещё.

Можете оставить свой код в офисе — и это вполне нормально.
Такая позиция близка и мила моему сердцу, хотя я тоже понимаю иронию. Одна из вещей, которые я говорю потенциальным работодателям с тех пор как меня уволили за отказ оставаться программировать после работы — это то, что я не согласен на овертайм. По крайней мере, не на регулярной основе. Я могу иногда поучаствовать в авралах, когда критически важно срочно накатить конкретное изменение или исправить баг, но за исключением таких случаев я буду появляться, вкалывать — и пойду домой.
Читать дальше →

Команда разработчиков Renga: как мы достигли идиллии, работая без менеджеров

Reading time7 min
Views20K
7 команд и ни одного менеджера – думаете, такое возможно? Мы построили процесс, в котором показываем на каждом демо по 1-2 фичи от команды, проводим ретро команд, ретро релизов и при этом получаем реальное удовольствие от работы. Хотите организовать свою работу так же? Тогда добро пожаловать под кат.



Мы, компания Renga Software, занимаемся разработкой программных продуктов для проектирования зданий и сооружений в соответствии с технологией информационного моделирования (BIM). Идем спринтами, выпускаем релизы каждые 3-4 месяца. Пользователей системы с каждой неделей становится всё больше. Продукт совсем молодой, поэтому бэклог переполнен важными, а главное, интересными задачами. Но как в короткие сроки разработать продукт, который будет использоваться для проектирования жилых домов, детских садов, больниц и театров?
Читать дальше →

«Простое» программирование на python

Reading time6 min
Views49K


functools (это такая свалка для всяких ненужных мне вещей :-).
— Гвидо ван Россум

Может показаться, что статья о ФП, но я не собираюсь обсуждать парадигму. Речь пойдет о переиспользовании и упрощении кода — я попытаюсь доказать, что вы пишете слишком много кода, поэтому он сложный и тяжело тестируется, но самое главное: его долго читать и менять.


В статье заимствуются примеры и/или концепции из библиотеки funcy. Во-первых, она клевая, во-вторых, вы сразу же сможете начать ее использовать. И да, нам понадобится ФП.

Читать дальше →

«Правильная» структура команд для DevOps

Reading time10 min
Views25K
Привет, Хабр! Мы у себя в банке уже второй год обсуждаем в теории и на практике, как правильно организовывать наши Dev и Ops команды. Недавно дискуссия, подкрепившись новой порцией практического опыта, вышла на очередной виток, что сподвигло меня на очередной поиск идей и аргументов.

Читать дальше →

Юридические аспекты операций с криптовалютами для резидентов РФ

Reading time8 min
Views50K

image


Являются ли криптовалюты объектом гражданских прав в РФ


Да, являются.


Список объектов гражданских прав указан в ст. 128 ГК РФ:


“К объектам гражданских прав относятся вещи, включая наличные деньги и документарные ценные бумаги, иное имущество, в том числе безналичные денежные средства, бездокументарные ценные бумаги, имущественные права; результаты работ и оказание услуг; охраняемые результаты интеллектуальной деятельности и приравненные к ним средства индивидуализации (интеллектуальная собственность); нематериальные блага”

Как видно из текста закона, этот список не исключительный, и туда входят любые имущественные права, результаты работ и оказание услуг, и даже нематериальные блага (пример: "вы мне споете, а я вам станцую" — это обмен нематериальными благами)


Часто встречаемые высказывания о том, что де "нет определения криптовалюты в законодательстве РФ и поэтому операции с ними незаконны" — неграмотны.

Читать дальше →

Это Спарта

Reading time9 min
Views22K
Эта публикация — про то, как программист помогает создавать суррогаты.

Суррогат – это когда сделали не то, что нужно бизнесу. Или не так, как нужно бизнесу.

Суррогаты – это самое страшное зло, происходящее сейчас с российским бизнесом и государственным управлением. Суррогаты – это лучший в мире киллер эффективности. Что особенно приятно, мы, программисты, на этот раз не в стороне – мы на самой оси зла.

С чего все начинается


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

Программист, допустим, толковый – он понимает, что предлагаемая доработка – суррогат.

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

Переписать базу сообщений ВКонтакте с нуля и выжить

Reading time9 min
Views63K
Наши пользователи пишут друг другу сообщения, не зная усталости.

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

При таком объёме данных критически важно, чтобы логика хранения и доступа к ним была построена оптимально. Иначе в один не такой уж и прекрасный момент может выясниться, что скоро всё пойдёт не так.

Для нас этот момент наступил полтора года назад. Как мы к этому пришли и что получилось в итоге — рассказываем по порядку.
Читать дальше →

Главный принцип хорошего кода

Reading time9 min
Views86K
За двадцать лет разнообразного программирования я сформулировал, убежден, главнейший принцип хорошего кода. Опираясь на него, мне и моим коллегам удавалось приводить в порядок самый страшный код, объединять в команде малосовместимых программистов и годами поддерживать системы без лишнего нытья.

Прочтение этой статьи: 15 минут
Осмысление методики: 10 минут
Ощутимые результаты: 30 минут

Итак,

Переписываем домашний проект на микросервисы (Java, Spring Boot, Gradle)

Reading time13 min
Views74K

Введение


Image


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


Ранее у меня был домашний проект (хотя скорее даже его прототип), который было решено переписать на микросервисы. Проект представлял собой попытку сделать обучающую Java игру. То есть у игрока есть поле, на этом поле он может управлять каким-то юнитом с помощью кода. Пишет код, отправляет на сервер, там он выполняется и возвращает результат, который отображается пользователю.


Всё это было реализовано в виде прототипа — были пользователи, один урок и одна задача для него, возможность отправить код, который компилировался и исполнялся. Кое-какой фронтенд, но в статье о нём речи не будет. Технологии — Spring Boot, Spring Data, Gradle.


В статье будет реализован такой же прототип, но уже на микросервисах. Реализация будет наиболее простым путём (точнее наиболее простым, из известных мне). Реализация будет доступна любому, кто знаком со Spring.

Читать дальше →

Как JVM аллоцирует объекты?

Reading time16 min
Views37K

Как JVM создает новые объекты? Что именно происходит, когда вы пишете new Object()?


На конференциях периодически рассказывают, что для аллокации объектов используются TLAB'ы (thread-local allocation buffer): области памяти, выделенные эксклюзивно каждому потоку, создание объектов в которых очень быстрое за счет отсутствия синхронизации.


Но как правильно подобрать размер TLAB'а? Что делать, если нужно выделить 10% от размера TLAB'а, а свободно только 9%? Может ли объект быть аллоцирован вне TLAB'а? Когда (если) обнуляется выделенная память?
Задавшись этими вопросами и не найдя всех ответов, я решил написать статью, чтобы исправить ситуацию.


Перед прочтением полезно вспомнить как работает какой-нибудь сборщик мусора (например, прочитав этот цикл статей).

Читать дальше →

Information

Rating
2,261-st
Date of birth
Registered
Activity