Роман Сакутин
104K subscribers
1.34K photos
140 videos
18 files
732 links
Основатель студии разработки игр Агава и школы ЯЮниор. Настоящий программист с опытом 10+ лет.

Служба поддержки школы - @ijuniorSupportBot

Я - @rsakutin

РКН - https://www.gosuslugi.ru/snet/67d8231025b58f3d79091b83
Download Telegram
Если интересно могу сделать сильное упрощение кода и попробовать сдать ещё раз. Что думаете?
👍3
Переделал решение

Я знаю несколько вариаций MVP-PassiveView и не знаю какой они ожидали, по этому переделал проект по следующему вектору:
1) Убрал полную чистоту модели и роутинг физики.
2) Сильно упрости инфраструктуру.
3) Все Unity компоненты отнёс к View и через богатый Presenter синхронизирую их с моделью.
4) Реакцию на физику также оставил на презентерах.

Отправил им и жду ответа. В любом случае с радостью ещё пару раз переделаю.

Текущий вариант мне теоретически нравится меньше. Но практически он более удобен к применение и честно говоря мне нравится больше.

Предлагаю ознакомиться в отдельной ветке с ним - https://github.com/HolyMonkey/Asteroids/tree/MVP-PassiveView
👍3
Ждёте игру про Хабуди Хабудая?
👍3
Почему ваша программа - это г**дон с водой?

В шахматах есть золотое правило: "не заглядывайте за спину соперника".

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

Есть две крайности: стабильность и расширяемость. Между ними мы балансируем, да к сожалению мир не полярный и всё не просто.

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

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

Другая крайность чрезмерная формализация.

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

Проектирование - это борьба с растущей сложностью системы. Чрезмерная стабильность - это такая же проблема как и чрезмерная гибкость.

Сейчас стартовал ранний набор на Напильник, вы можете записаться в первых рядах с 50% скидкой - https://ijunior.ru/napilnik?utm_source=telegram&utm_medium=socity&utm_campaign=weaksystem

ВНИМАНИЕ: Курс ещё не готов на 100%, вплоть до старта второго потока я буду над ним работать и не факт, что после старта он будет закончен. Но сейчас там уже достаточно материала, что бы полностью поменять ваше представление о коде.
👍1
👍1
Обещал вам вчера подборку, ловите.

Всего я рекомендую 9 книг разбитых на 3 категории:
1) Для начинающих. Вы не работаете или зарабатываете меньше 50 000 в месяц.
2) Для продолжающих. Получаете до 120 000 в месяц.
3) Для профи. Получаете до 200 000 в месяц.

Тут в карусели для первой категории, остальные книги вы можете получить бесплатно здесь - https://napilnik-first.minisite.ai/
👍3
Обновили раскладку по зарплатам для Unity программистов.

Получаете меньше 50 000 рублей в месяц? Тогда у вас беда и вы ещё даже не Junior разработчик. Да это правда, если у вас full-time выработка и вы получаете такую нищенскую зарплату, то подумайте о смене работы.

Сейчас у нас в студии следующие ставки:
1) 56 000 Р. - стажер.
2) 80 000 Р. - Junior.
3) 120 000 Р. - Middle.
4) 160 000 Р. - Middle

Неплохо? Да, но у нас ещё есть бонусная программа которая при полной выработке делает x2 к окладу, и тогда цифры становятся совсем сексуальные.

И это не только у нас, весь рынок готовы платить достойную ЗП программистам. Совсем недавно от нас ушёл разработчик на оклад в 170 000 в месяц, хотя 3 месяца назад он работал в другой студии за, если не ошибаюсь, тысяч 70.

Мы его кстати взяли сразу после курса напильник. Вот такой вот рост зарплаты почти в 3 раза за 3 месяца. :)

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

Прямо сейчас вы можете записаться на напильник с 50% скидкой - https://ijunior.ru/napilnik?utm_source=telegram&utm_medium=socity&utm_campaign=salaryreport

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

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

Подробней про с нуля до первой зарплаты - https://ijunior.ru/unity-start?utm_source=telegram&utm_medium=socity&utm_campaign=salaryreport
👍3
👍3
Ищите Unity разработчика?

Мы готовы поделиться с вами нашими выпускниками. Принимаем запросы от студий, hr-агенств и частных заказчиков. Оставляйте заявку здесь - https://forms.gle/Sn5PcvW6zD47jokx5
👍3
Страшная правда про программистов

Думаете все хотят хорошо зарабатывать? Нет, правда в том, что многие новички хотят зарабатывать не работая. Ну вот сидит где-то в девяткино программист, квартплата тысяч 10-15, есть компьютер, хорошая библиотека в Steam.

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

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

И вот будет у него выбор:
1) Еб**ить как конь и зарабатывать 200 000 в месяц.
2) Устроиться в левую студию, топить хавальник почти целыми днями и получать в месяц тысяч 40.

Ну очевидно, что он выберет, закроется в очередной раз в своём маленьком гробике, отпашет так несколько лет, глядя на более успешных коллег. И что он будет писать в интернете? Что в России мало платят разработчикам, что не ценят их труд.

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

И вывод звучит просто: работаешь - зарабатываешь, не зарабатываешь - значит не работаешь, или работаешь плохо. Просто и очевидно.

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

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

https://ijunior.ru/napilnik?utm_source=murino
👍3
Страшная правда про программистов

Думаете все хотят хорошо зарабатывать? Нет, правда в том, что многие новички хотят зарабатывать не работая. Ну вот сидит где-то в девяткино программист, квартплата тысяч 10-15, есть компьютер, хорошая библиотека в Steam.

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

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

И вот будет у него выбор:
1) Еб**ить как конь и зарабатывать 200 000 в месяц.
2) Устроиться в левую студию, топить хавальник почти целыми днями и получать в месяц тысяч 40.

Ну очевидно, что он выберет, закроется в очередной раз в своём маленьком гробике, отпашет так несколько лет, глядя на более успешных коллег. И что он будет писать в интернете? Что в России мало платят разработчикам, что не ценят их труд.

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

И вывод звучит просто: работаешь - зарабатываешь, не зарабатываешь - значит не работаешь, или работаешь плохо. Просто и очевидно.

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

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

https://ijunior.ru/napilnik?utm_source=murino
👍3
Начнём жару? ;)
👍3
Через dynamic в С# можно творить почти любую херню которую хочется

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

Например уже избитая реализация паттерна Visitor через dynamic.

Ребят, вы кстати как, понимаете зачем этот паттерн нужен? Или повторим тему high cohesion? Пишите если не понятно, бахну отдельный пост про Cohesion.

Короче.

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

Совсем для пряников вот пояснение как с этой хренабудолой работать:

class ClassicVisitor : IAnimalVisitor
{

public void VisitAll(IEnumerable<Animal> animals)
{
foreach (Animal animal in animals)
animal.Accept(this);
}

public void Visit(Bear bear) { Bears++; }
public void Visit(Lion lion) { Lions++; }
public void Visit(Snake snake) { Snakes++; }
public void Visit(Tiger tiger) { Tigers++; }
}

А есть способ который работает в 5 раз медленней (какой кошмар, да?), но выглядит сексуальней. Во-первых у нас исчезает интерфейс IAnimalVisitor а из Animal пропадает метод Acept.

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

class DynamicVisitor2
{
public void VisitAll(IEnumerable<Animal> animals)
{
foreach (Animal animal in animals)
Visit((dynamic) animal);
}



private void Visit(Mammal mammal) => Mammals++;
private void Visit(Reptile reptile) => Reptiles++;
}

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

Эту и прочие фишки я люблю показывать в практических блоках курса Напильник. Завтра вы потеряете 50% скидку на курс по этому записывайтесь уже сейчас - https://ijunior.ru/napilnik?utm_source=youtube&utm_medium=socity&utm_campaign=dynamic

//
(c) Замеры и примера кода взяты у Bradley Grainger

Кстати у меня давно выходил видос где я показывал как соединить Visitor и Composite для интересной задачи из мира GameDev - https://www.youtube.com/watch?v=MFwiqvk-DN8
👍2
👍2
За 3 месяца поднялся в доходе с 30 000 до 170 000.

Сделали X5 человека и при этом он по тарифу без проверок ДЗ. ;)

Домашки на этом курсе проверяю только я. Сам курс тоже веду только я.

Из тех кого проверял, надеюсь рост в зарплате будет ещё больше. :D

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

Уже сегодня вы теряете 50% скидку на курс, последний день для записи по таким условия - https://ijunior.ru/napilnik?utm_source=telegram&utm_medium=socity&utm_campaign=pankevichreport
👍2
Совсем скоро будет доступна игра: "Хабуди Хабудай получает палкой по пузу за плохой код".

Её делали ученики с курса "С нуля до первой зарплаты" - https://ijunior.ru/unity-start?utm_source=telegram&utm_medium=socity&utm_campaign=habudyjabudai1
👍2