Search
Write a publication
Pull to refresh
3
0
Обидин Михаил @mrsantak

User

Send message

Российский геймдев, бессмысленный и беспощадный

Reading time2 min
Views54K
Если регулярно и внимательно просматривать ленты новостей и соцсети, может возникнуть ощущение, что теперь каждый второй — демиург от мира геймдева, а каждый первый — гениальный CG художник. Ну, наверное, миллионы все разом не ошибаются. Значит, нужно идти за мечтой. Что я, рыжий что ли?

А под окнами уже разбили табор инфоцыгане. «Ай нанэ, нанэ! Мы знаем, как монетизировать твои мечты!». Правда, в чью пользу, не уточняется. Переизбыток информации манит красочными историями успеха о цифровой хрустальной туфельке, которая превратит студента Василия из Подтахтющинска в Хидео Кодзиму.

Если бы все было так просто.

Что вас ждет? Если коротко:

  • - личная жизнь \ + адский труд бесплатно
  • - поддержка близких \ + стадо критиков
  • - стандарты качества \ + зато оригинально
  • - Я всё могу \ + депрессия средней степени тяжести

Этот список можно продолжать бесконечно.



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

Как выполнять тестовые задания для java- джуниоров/стажеров, чтобы попасть на собеседование

Reading time4 min
Views27K
Недавно в силу своей работы, мне довелось отбирать стажеров в нашу компанию. Все кто еще помнит как это — быть стажером/джуном, должны помнить как сложно без опыта воткнуться в более-менее нормальное место, где будут тратить ресурсы на твое обучение. Из-за того, что поток начинающих разработчиков очень большой, у работодателя есть возможность выбирать из этого потока если и не самых лучших, то как минимум толковых, перспективных ребят, на которых стоить потратить время на обучение, чтобы потом их у себя трудоустроить.

У каждой компании своя методика поиска таких кандидатов. Мы, на сегодняшний день, придерживаемся следующей: даем небольшое тестовое задание (около часа работы, для опытного разработчика), для выполнения которого достаточно знаний java-core и просим выложить его на гитхаб. По времени выполнения не ограничиваем. Затем, качественно выполнивших задание соискателей приглашаем на собеседование.

image

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

Распознавание лиц на стройке

Reading time6 min
Views53K


В один яркий солнечный день, когда на стройке работа просто кипит, всё вокруг ярко и позитивно, и прямо хочется вечерком пожарить шашлык, на объект проник бывший сотрудник одного из подрядчиков. Он прошёл мимо проходной, помахал рукой охраннику, который знал его в лицо (но не знал, что он уволен), и зашёл внутрь. Там он пошёл к своим друзьям из Центральной Азии. Через полчаса они уже жарили шашлык и наслаждались жизнью.

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

Один из баллонов почему-то взорвался. Как говорится, ничего не предвещало, и вот баллон почему-то повёл себя нетипично. Если вы видели, как с этими баллонами обращаются в родных для героев рассказа регионах, то можете представить себе и их искреннее недоумение от произошедшего.

Все остались живы и даже более-менее целы (ничего необратимого). Шашлык улетел, но на орбиту не вышел. Шампуры не проткнули никого внизу и сбоку. А вот к неудавшимся космонавтам приехала полиция, скорая и чуть ли не Спортлото.

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

За одного такого родственника на стройке накладывается штраф от 500 тысяч рублей и выше, и стройка может быть приостановлена от 14 до 90 дней. А это кончается очень, очень печально для генподрядчика и заказчика.

Именно после этого инцидента позвали нас решить задачу ИТ-средствами.
Читать дальше →

Легкий способ научиться слепому десятипальцевому набору

Reading time3 min
Views1.2M
Традиционно рекомендации по обучению десятипальцевой печати сводятся к двум советам:
  • тратить нервы на клавиатурные тренажеры вроде пресловутого «Соло на клавиатуре»;
  • заклеить подписи на клавишах.

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

Что если я скажу вам, что есть абсурдно простой, состоящий из одного пункта способ научиться слепой печати без этих дурацких органичений?
 

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

Я написал эту статью, ни разу не посмотрев на клавиатуру

Reading time5 min
Views118K
В начале года я почувствовал, что упёрся в потолок как инженер. Вроде бы читаешь толстые книжки, решаешь на работе сложные задачи, на конференциях выступаешь. А всё не то. Поэтому я решил вернуться к корням и по очереди закрыть навыки, которые когда-то в детстве считал базовыми для программиста.

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


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

Проблема дверей в дизайне шутеров

Reading time10 min
Views23K
Допустим, я создаю уровень для классического шутера от первого лица. Сначала я строю арену и добавляю на неё несколько монстров. Я не хочу, чтобы на игрока нападали сразу после начала уровня, поэтому присоединяю к одной из сторон арены коридор и ставлю игрока туда.


Буквами E помечены враги-монстры на арене, а буквой P — игрок, изначально находящийся в коридоре.

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

Иллюстрация проблемы (GIF)

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

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

Если расширить дверной проём, чтобы коридор выходил на арену, то мы получим другую версию той же проблемы. В чём-то она будет лучше, в чём-то хуже. Даже после увеличения порога ничто по-прежнему не привлекает игрока на арену, и ничто в коридоре не выталкивает его оттуда.
Читать дальше →

Мутационное тестирование в PHP: качественное измерение для code coverage

Reading time10 min
Views13K
Как оценивать качество тестов? Многие полагаются на самый популярный показатель, известный всем, — code coverage. Но это количественная, а не качественная метрика. Она показывает, какой объём вашего кода покрыт тестами, но не то, как хорошо эти тесты написаны. 

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

На Badoo PHP Meetup в марте я рассказывал, как организовать мутационное тестирование для PHP-кода и с какими проблемами можно столкнуться. Видео доступно по ссылке, а за текстовой версией добро пожаловать под кат.


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

Заводим Spring StateMachine

Reading time16 min
Views65K

Вступление


В проектах я встречался с тремя примерами, так или иначе связанными с теорией конечных автоматов

  • Пример 1. Занимательный говнокод код. Занимает уйму времени, на то чтоб понять что происходит. Характерной особенностью воплощения обозначенной теории в коде является довольно лютая свалка, которая местами дико напоминает процедурный код. О том что этот вариант кода лучше не трогать на проекте знает каждый технолог, методолог и продуктолог. Заходят в этот код что-то поправить в случае крайней нужды(когда совсем сломалось), о доработке каких либо фичей речи не идет. Ибо сломать страшно. Второй яркой особенностью, обосабливающий данный тип является наличие могучих таких switch, на весь экран.
    На этот счет даже есть шутеечка:
Читать дальше →

Знакомство со статическим анализатором PVS-Studio для Java

Reading time4 min
Views6K
На протяжении многих лет команда PVS-Studio развивает одноименный статический анализатор. На данный момент анализатор представляет собой сложное программное решение и предоставляет возможность анализа таких языков программирования, как C, C++, C# и Java на платформах Windows, Linux и macOS. Совсем недавно в ряд поддерживаемых языков программирования была добавлена поддержка языка Java. Если анализатор PVS-Studio за долгие годы уже зарекомендовал себя среди C++ и C# разработчиков, то для Java-аудитории PVS-Studio еще новичок. Многие даже не слышали про анализатор, а кто слышал, тот мало знаком со всеми его возможностями. Поэтому в этой статье хотелось бы познакомить вас с PVS-Studio Java, рассказать о способах запуска и его возможностях.

Рисунок 2

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

Почему отписка от рассылки занимает несколько дней?

Reading time2 min
Views45K
В одном твите спрашивали, почему отписка от рассылки может «занимать несколько дней». Пристегнитесь покрепче, я сейчас расскажу вам невероятную историю о том, как это делается в энтерпрайз-разработке™…


Есть один банк. Наверняка вы о нем слышали, а если вы живете в Великобритании — с вероятностью 10% это ваш банк. Я работал там «консультантом» на отличной зарплате.

Банк рассылает маркетинговые письма. В подвале каждого письма есть маленькая ссылка «отписаться». Люди иногда на эти ссылки кликают.
Читать дальше →

DeviceLock DLP: Цены российского черного рынка на пробив персональных данных (плюс ответ на ответ Тинькофф Банка)

Reading time4 min
Views128K

В конце прошлого года для DeviceLock DLP я делал обзор цен черного рынка на российские персональные данные, и вот пришло время его обновить и дополнить.


Заодно посмотрим изменение цен и предложений на этом «рынке», а также реакцию «Тинькофф Банка» на вот это вот все.



Поехали...

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

Разработчикам игр пора перестать слушать своих фанатов?

Reading time4 min
Views18K
Тут был спор из-за статьи и я решил выложить ее перевод на всеобщее обозрение. С одной стороны, автор говорит, что разработчики не должны потакать игрокам в вопросах сценария. Если смотреть на игры, как на искусство, то я согласен — никто не будет спрашивать у комьюнити, какую концовку ему выбрать для своей книги. С другой стороны — человек оправдывает некоторых критиков (он предусмотрительно не называет конкретные примеры, но на ум приходит недавняя история с рекламным плакатом в Cyberpunk 2077). В общем, ситуация двоякая.

Дальше только перевод, а мнение автора может не совпадать с моим по целому ряду вопросов.
Читать дальше →

TDDx2, BDD, DDD, FDD, MDD и PDD, или все, что вы хотите узнать о Driven Development

Reading time13 min
Views142K

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



  • TDD — ну, это все знают, сначала пишем тесты, а потом остальной код.
  • BDD — что-то знакомое, вроде как, тоже тесты, но особенные.
  • TDD — снова? Так, стоп, тут речь уже не о тестах совсем. Но почему называется так же?
  • DDD — bound contexts, ubiquitous language, domain...
  • FDD — да сколько можно?
  • MDD — cерьезно, на основе диаграмм?
  • PDD — ...

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


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

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

«Сгоревшие» сотрудники: есть ли выход?

Reading time18 min
Views166K
Ты работаешь в хорошей компании. Вокруг тебя крутые профессионалы, получаешь достойную зарплату, каждый день делаешь важные и нужные вещи. Илон Маск запускает спутники, Сергей Семёнович улучшает и без того лучший город Земли. Погода отличная, солнце светит, деревья цветут — живи да радуйся!

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

Что же делать? Как работать с Игнатом? Добро пожаловать под кат!


Установка имплантата: как это делается?

Reading time4 min
Views79K
image

Добрый день уважаемые друзья! Сегодня мне бы хотелось рассказать, а главное, показать вам — как проходит операция по установке имплантата — со всеми инструментами и прочим. Если про процесс удаления зуба, в частности зуба мудрости — я уже рассказывал, то настало время поговорить о чем-то более серьезном.
ВНИМАНИЕ!-Uwaga!-Pažnju!-Attention!-Achtung!-Attenzione!-ВНИМАНИЕ!-Uwaga!-Pažnju!

Ниже будут представлены фотографии сделанные во время операции! С видами зубов, дёсен, крови и расчлененки. Слабонервных прошу отказаться от прочтения данной статьи.
Читать дальше →

Lazydocker — GUI для Docker прямо в терминале

Reading time3 min
Views37K


Два года назад мы уже делали обзор GUI-интерфейсов для работы с Docker, однако мир любителей подобных решений не стоит на месте. На днях до версии 0.2 обновился, а вместе с тем и получил широкую огласку, молодой проект lazydocker, позиционирующий себя как «более ленивый путь управлять всем в Docker». Утилита стремительно набирает популярность — ещё вчера количество его GitHub stars не достигало 3000, а уже сегодня перевалило за 4000.
Читать дальше →

Как ИТ-компании мира защищаются от конкурентов в лице бывших сотрудников?

Reading time9 min
Views39K

В этой теме я сторонний наблюдатель — часто перевожу разные договоры и соглашения про эту боль для ИТ-компаний.


Однажды задался вопросом — а как в целом в разных странах, ну и в первую очередь в России, защищаются от этой беды?


Про неконкуренцию


Вообще, уход сотрудника — это 3 «полярные лисички», а не одна.



Ушедший сотрудник:


  1. создает свою компанию или устраивается к конкурентам (даже не знаю, что хуже);
  2. уносит с собой голову, в которой хранится куча конфиденциальной информации и наработок;
  3. уводит сотрудников, как правило, наиболее ценных, чем делает «лисичку» еще полнее.

Как бы ты хорошо ни относился к сотруднику, поневоле задумаешься о разных ограничительных соглашениях, обозначаемых за рубежом общим термином non-competes.


О них и поговорим.

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

Акихабара: место гнездования отаку

Reading time9 min
Views51K
В Токио есть своя «Горбушка», только называется она «долина осенних листьев». Район Канда, станция Акихабара, а так — Акиба. Название район получил от специального противопожарного храма, который теперь считается святилищем аниме. И я сейчас на полном серьёзе.


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

Сам подрайон от реки до 6 квартала ещё называется «Электрогородок», потому что там раньше торговали электроникой. «Радиовышка» или высотка Radio Kaikan 62-го года постройки — это зародыш электрогородка, откуда всё пошло, первое высокое здание в районе. Ну, это тогда оно было высоким, а сейчас просто одно из многих, и не такое уж и большое. Там были магазины, а внизу развалы с подержанной электроникой. В 2011 году, правда, высотку развалило землетрясением (была признана аварийной), но её быстро перестроили к 2014 году. И теперь внутри торговый центр кольцевого типа, где всякая куча товаров для отаку. В целом, можно бродить просто по ней и соседнему зданию, и это получится мини-Акиба.

В общем, я прогулялся по району сам, а потом нашёл местных фиксеров, которые показали его с двух разных сторон и провели на пару секретных уровней. Сразу скажу, гулять по Акибе без местного или без детального путеводителя — идея так себе.
Читать дальше →

Как мы учились эксплуатировать Java в Docker

Reading time13 min
Views51K
Под капотом hh.ru — большое количество Java-сервисов, запущенных в докер-контейнерах. За время их эксплуатации мы столкнулись с большим количеством нетривиальных проблем. Во многих случаях чтобы докопаться до решения приходилось долго гуглить, читать исходники OpenJDK и даже профилировать сервисы на продакшене. В этой статье я постараюсь передать квинтэссенцию полученного в процессе знания.


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

Блеск и нищета: еще немного о том, как зарабатывают на жизнь современные музыканты

Reading time4 min
Views12K
Завершаем наш короткий цикл статей о том, как цифровая революция повлияла на заработок музыкантов, и что теперь с этим делать — какие есть альтернативные источники дохода.

Сегодня расскажем о еще трех способах заработка и приведем примеры из индустрии.

Information

Rating
10,999-th
Location
München, Bayern, Германия
Date of birth
Registered
Activity

Specialization

Backend Developer
Java