Как стать автором
Обновить
97
0
Алексей Федоров @23derevo

Организатор конференций для программистов

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

Партнерское соглашение или как не погубить бизнес на старте

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

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


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


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

Читать дальше →
Всего голосов 32: ↑31 и ↓1+46
Комментарии28

Jira против хаоса в разработке: как не терять задачи

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


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

Дано:

  • вы разрабатываете и поддерживает сложный программный продукт, работающий на нескольких клиентах;
  • у вас несколько инженерных команд (бекенд, IT Ops, iOS, Android, веб и т. д.), которые работают независимо друг от друга с отдельными беклогами;
  • у вас несколько продуктовых направлений, то есть, грубо говоря, один продуктовый менеджер ведёт несколько проектов по своему направлению, другой менеджер — по своему;
  • ваши инженерные команды функциональны, то есть они не выделены на отдельные продуктовые направления, а решают задачи всех юнитов сразу, обслуживая определённую часть технологического стека;
  • и, конечно, вы используете Jira!
Читать дальше →
Всего голосов 45: ↑45 и ↓0+45
Комментарии11

«Эмпирические результаты лишь для публикации, реальные мотивы работ — эстетические». Большое интервью с Майклом Скоттом

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

Майкл Скоттуже 34 года как профессор Computer Science в Рочестерском университетe, а в родном универститете Wisconsin–Madison был деканом в течение пяти лет. Он занимается исследованиям в области параллельного и распределённого программирования и дизайна языков и обучает этому студентов.


Мир знает Майкла по учебнику «Programming Language Pragmatics», а работа «Algorithms for scalable synchronization on shared-memory multiprocessors» получила премию Дейкстры как одна из наиболее известных в области распределённых вычислений. Также вы можете знать его как автора того самого алгоритма Майкла-Скотта.


Вместе с Дагом Ли разработал те неблокирующие алгоритмы и синхронные очереди, на которых работают библиотеки Java. Внедрение «dual data structures» в JavaSE 6 позволило в 10 раз улучшить производительность ThreadPoolExecutor.


Содержание:


  • Начало карьеры, Рочестерский университет. Проект Charlotte, язык Lynx;
  • IEEE Scalable Coherent Interface, блокировка MCS;
  • Выживание в постоянно меняющемся мире;
  • Становятся ли студенты глупее? Глобальные тренды, интернационализация;
  • Эффективная работа со студентами;
  • Как не отстать при подготовке новых курсов и книг;
  • Связь между бизнесом и академией;
  • Практическая реализация идей. MCS, MS, CLH, JSR 166, работа с Дагом Ли и многое другое;
  • Транзакционная память;
  • Новые архитектуры. Близкая победа транзакционной памяти;
  • Энергонезависимая память, Optane DIMM, сверхбыстрые устройства;
  • Следующий большой тренд. Dual data structures. Hydra.
Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии0

Бизнес на свои: книга с тактикой прохождения этой игры

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


Привет! Я хотел сказать, что вчера вышла третья наша книга, и тоже очень помогли посты с Хабра (а частично и вошли). История такая: на протяжении примерно 5 лет к нам подходили люди, которые не умели в проектное мышление, не понимали разные вопросы бизнеса и задавали одни и те же вопросы.

Мы слали их лесом. В смысле, вежливо отказывали, потому что не считали себя вправе давать советы.

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

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

Когда ты пишешь третью книгу, то уже начинаешь разбираться, что и как. Ниже истории про то, что стоит знать вам, когда вы будете писать свою. Разумеется, это моё личное мнение, а не готовая методология.
Читать дальше →
Всего голосов 162: ↑159 и ↓3+156
Комментарии171

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

Время на прочтение25 мин
Количество просмотров149K
Добрый день.
В рамках набора на курс «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» проблему?
Что если я пишу виртуальную машину?
Почему я должен беспокоиться?
Читать дальше →
Всего голосов 56: ↑51 и ↓5+46
Комментарии32

Вы — не Google

Время на прочтение7 мин
Количество просмотров103K
Мы, программисты, иногда почему-то сходим с ума. Причём по каким-то совершенно нелепым причинам. Нам нравится думать о себе, как о супер-рациональных людях, но когда дело доходит до выбора ключевой технологии нового продукта, мы погружаемся в какое-то безумие. Вдруг оказывается, что кто-то слышал что-то об одной классной вещи, а его коллега читал комментарий о другой на Хабре, а третий человек видел пост в блоге о ещё чём-то похожем… и вот мы уже пребываем в полнейшем ступоре, беспомощно барахтаясь в попытках выбора между совершенно противоположными по своей сути системами, уже и забыв, что мы вообще пытаемся выбрать и почему.

Рациональные люди не принимают решения таким образом. Но именно так программисты часто решают использовать что-то вроде MapReduce.

Вот как комментировал этот выбор Joe Hellerstein своим студентам (на 54-той минуте):

Дело в том, что в мире сейчас есть где-то 5 компаний, обрабатывающие данные подобных объёмов. Все остальные гоняют все эти данные туда-сюда, добиваясь отказоустойчивости, которая им на самом деле не нужна. Люди страдают гигантоманией и гугломанией где-то с середины 2000-ых годов: «мы сделаем всё так, как делает Google, ведь мы же строим один из крупнейших (в будущем) сервисов по обработке данных в мире!»

image

Сколько этажей в вашем датацентре? Google сейчас строит четырёхэтажные, как вот этот в Оклахоме.
Читать дальше →
Всего голосов 252: ↑249 и ↓3+246
Комментарии197

Большой пост о проекторах: технологии, назначение, выбор, перспективы развития

Время на прочтение10 мин
Количество просмотров55K
Мультимедийный проектор давно стал привычным гаджетом для офисов, презентаций, переговорных, музеев, учебных заведений. Все чаще проекторы используют дома. Эти устройства выживают в достаточно сложном конкурентном климате (плазменные, ЖК и лазерные панели –конкуренты проекторов), имея при этом лишь одно огромное преимущество — большую диагональ проецируемого изображения.



Обилие технологий, использующихся для производства проекторов, рождает проблему выбора. Как отмечают специалисты Pult.ru, покупатели, намеревающиеся приобрести проектор, редко представляют, чего именно хотят, что не редко приводит к ошибкам при выборе. Этот пост об основных критериях выбора проекторов и перспективах развития современных технологий, которые применяются при их производстве.
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии109

Выжимаем максимум из учета компьютерной техники. Часть 1

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

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

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

Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии35

О сборке JDK 8 на Ubuntu, качестве кода Hotspot и почему всё валят на C++

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

Хотел сегодня поспать, но опять не удалось. В Телеграме появилось сообщение, что у кого-то не собирается Java… и мы очнулись только через пару часов, уставшие и довольные.




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

Проблемы три:


  • Не собирается (уровень первый)
    Очень скучная часть, которую можно пропустить. Нужна только для тех, кто хочет полностью восстановить историю событий;
  • Не собирается (уровень второй)
    Интересней, потому что там есть пара типичных ошибок, некромантия, некрофилия, в чём BSD лучше GNU/Linux и почему стоит переходить на новые версии JDK.
  • Даже если собирается, падает в корку
    Более интересно. Йахууу, JVM упала в корку, давайте пинать её ногами!

Под катом показан подробный ход решения проблем, с разными побочными мыслями о жизни.


Будет много C++, кода на Java не будет вообще. Любой джавист в конце концов начинает писать только на C++…

Читать дальше →
Всего голосов 103: ↑102 и ↓1+101
Комментарии71

Мифы о CAP теореме

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

Введение


cap


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


Событие, когда какая-то статья вызывает бурю эмоций, — крайне редкое. Первый раз такое возникло, когда я прочитал про chained replication. Меня пытались убедить, что это мощный подход и что это лучшее, что могло произойти с консистентной репликацией. Я сейчас не буду приводить доводы, почему это плохо работает, а просто приведу говорящую цитату из статьи Chain Replication metadata management:


Split brain management is a thorny problem. The method presented here is one based on pragmatics. If it doesn’t work, there isn’t a serious worry, because Machi’s first serious use case all require only AP Mode. If we end up falling back to “use Riak Ensemble” or “use ZooKeeper”, then perhaps that’s fine enough.

В моем вольном пересказе это означает примерно следующее: "У нас тут есть некий алгоритм. Мы не знаем, будет ли он работать правильно или нет. Да нам это и не важно". Хотя бы честно, сэкономило кучу времени, спасибо авторам.


И тут, значит, попадается на глаза статья: Spanner, TrueTime & The CAP Theorem. Её мы разберем по полочкам ближе к концу, вооружившись понятиями и знаниями. А перед этим разберем самые распространенные мифы, связанные с CAP теоремой.

Читать дальше →
Всего голосов 38: ↑36 и ↓2+34
Комментарии70

Разбор основных концепций параллелизма

Время на прочтение17 мин
Количество просмотров70K
Всем кофе!

Завтра у нас плавненько стартует практически юбилейный поток курс «Разработчик Java» — уже шестой по счёту начиная с апреля прошлого года. А это значит, что мы снова подобрали, перевели интереснейший материал, которым делимся с вами.

Поехали!

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

РАЗДЕЛ 1

Вступление

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

РАЗДЕЛ 2

Концепции

Концепция Описание
Atomicity (атомарность) Атомарная операция — это операция, которая выполняется полностью или не выполняется совсем, частичное выполнение невозможно.
Visibility (видимость) Условия, при которых один поток видит изменения, сделанные другим потоком

Таблица 1: Концепции параллелизма

Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии12

Иллюзия движения

Время на прочтение17 мин
Количество просмотров69K
История о чувстве зрения, восприятии кадров и частоты обновления, размытости движущегося объекта и телевизионных экранах.
(также см. перевод статьи того же автора «Иллюзия скорости» — прим. пер.)

Введение


Вы могли слышать термин кадры в секунду (FPS), и что 60 FPS — действительно хороший ориентир для любой анимации. Но большинство консольных игр идут на 30 FPS, а кинофильмы обычно записывают на 24 FPS, так зачем же нам стремиться к 60 FPS?

Кадры… в секунду?


Ранние времена кинопроизводства



Съёмки голливудского фильма 1950 года «Юлий Цезарь» с Чарлтоном Хестоном

Когда первые кинематографисты начали снимать кино, многие открытия делались не научным методом, а путём проб и ошибок. Первые камеры и проекторы управлялись вручную, а плёнка была очень дорогой — настолько дорогой, что при съёмке старались использовать наименьшую возможную частоту кадров, лишь бы сэкономить плёнку. Этот порог обычно находился между 16 и 24 FPS.
Читать дальше →
Всего голосов 89: ↑89 и ↓0+89
Комментарии51

Data Science: Про любовь, имена и не только. Часть II

Время на прочтение5 мин
Количество просмотров14K
Потому что во многой мудрости много печали;
И кто умножает познания, умножает скорбь.
• Екклесиаст 1:18

Кадры из фильма Казино Рояль (2006)


Данная статья не может служить поводом для выражения нетолерантности или дискриминации по какому-либо признаку.


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


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


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

Читать дальше →
Всего голосов 36: ↑33 и ↓3+30
Комментарии38

Не виноватая я. Он сам пришел

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

Я как-то немного пропустил статью и весь всплеск обсуждений и критики Xored. Поэтому буду нагонять.

Xored — лучшее место для работы, со своей уникальной культурой, уникальным подходом к росту и открытой зарплатной сеткой. Интересные задачи, отличный сплоченный коллектив, гибкий график, возможность частичной работы, и еще много-много всего. За последние годы фирма выросла до 110 человек. При всем при этом, она сохранила и хорошие зарплаты, и интересные проекты, и командный дух.
Вот только есть одно НО
Всего голосов 327: ↑302 и ↓25+277
Комментарии407

Путешествие за бугор и обратно: как не надо устраиваться работать за рубежом

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

Тема трудовой эмиграции в IT-сообществе — одна из любимых. Кто не задумывался о том чтобы уехать туда где трава зеленее? Интернет кишит различными success story. Я же хочу показать, как вашу success story может испортить неудачный выбор места работы.


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


image
Читать дальше →
Всего голосов 414: ↑403 и ↓11+392
Комментарии1266

Так ли страшен чёрт или как мы внедряли онлайн-кассу

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

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


Онлайн-касса


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

Читать дальше →
Всего голосов 70: ↑70 и ↓0+70
Комментарии182

Как писать на Spring в 2017

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

В одной из классических статей для новичков, мелькавших недавно на Хабре, рассказывалось про создание базового Web приложения на Java. Все начиналось с сервлета, потом создания JSP страницы и, наконец, деплоймента в контейнер. Посмотрев на это свежим взглядом я понял, что для как раз для новичков это, наверняка, выглядит совершенно жутко — на фоне простых и понятных PHP или Node.js, где все просто — написал контроллер, вернул объект, он стал JSON или HTML. Чтобы немного развеять это ощущение, я решил написать "Гайд для новичков в Spring". Цель это статьи — показать, что создание Web приложений на Java, более того — на Spring Framework это не боль и мучительное продирание через web.xml, persistence.xml, beans.xml, и собирание приложения как карточного домика по кусочкам, а вполне себе быстрый и комфортный процесс. Аудитория — начинающие разработчики, разработчики на других языках, ну и те, кто видел Спринг в его не самые лучше времена.

Читать дальше →
Всего голосов 47: ↑44 и ↓3+41
Комментарии110

Увольнение – это маленькая смерть. Как сохранить ценного специалиста решившего уволиться?

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


— Нам нужно срочно поговорить! Примерно так начинаются 90% всех разговоров про увольнение. Причем кто бы не начинал разговор первым, результат обычно предсказуем. Что делать, если от вас уходит нужный человек? Под катом мнение вице-президента Parallels Николая Добровольского.
Читать дальше →
Всего голосов 148: ↑145 и ↓3+142
Комментарии370

Галерея эффектов кэшей процессоров

Время на прочтение10 мин
Количество просмотров25K
Ядро PenrynПочти все разработчики знают, что кэш процессора — это такая маленькая, но быстрая память, в которой хранятся данные из недавно посещённых областей памяти — определение краткое и довольно точное. Тем не менее, знание «скучных» подробностей относительно механизмов работы кэша необходимо для понимания факторов влияющих на производительность кода.

В этой статье мы рассмотрим ряд примеров иллюстрирующих различные особенности работы кэшей и их влияние на производительность. Примеры будут на C#, выбор языка и платформы не так сильно влияет на оценку производительности и конечные выводы. Естественно, в разумных пределах, если вы выберите язык, в котором чтение значения из массива равносильно обращению к хеш-таблице, никаких результатов пригодных к интерпретации вы не получите. Курсивом идут примечания переводчика.
Читать дальше
Всего голосов 181: ↑177 и ↓4+173
Комментарии47

Чуваки, я сейчас расскажу, как писать, если вы не умеете — и ещё в чём проблема копирайтеров

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


Привет! Это ёжик, и он теперь будет жить с нами. Конкретно, я буду вести тут время от времени рассказы о том, как писать тексты в корпоративном блоге человека-парохода Михаила, из-за которого 11 лет назад я и влез в эту тему.

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

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

Вы уже умеете писать. Просто ещё никогда этого не делали.
Читать дальше →
Всего голосов 26: ↑22 и ↓4+18
Комментарии22

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Работает в
Дата рождения
Зарегистрирован
Активность