Как стать автором
Обновить
-16
0
Михаил Мерзлютин @ardraeiss

Программист, сейчас Python и чутка C++

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

Что делать неизвестным в вашем git репозитории

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

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

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

Godot — рисование без правил

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров7.5K

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

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

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии12

Преобразование графов для процедурной генерации уровней

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

Я много занимался деконструкцией инди-игры 2017 года Unexplored Джориса Дорманса. Она идеально воплощает идею процедурно генерируемых подземелий в стиле Zelda, и я обязан был выяснить, как происходит эта магия. К счастью, основная часть логики генерации написана на специализированном языке PhantomGrammar, поэтому с помощью разработчиков я получил достаточно полное представление о том, как она работает.

Заложенные в Unexplored идеи настолько интересны, что, по моему мнению, заслуживают отдельной статьи. В основе игры лежит концепция преобразования графов, она хорошо изучена с научной точки зрения, но редко используется в играх. Эту статью я целиком посвящу данной технике, а в следующей расскажу о том, как её использует и расширяет PhantomGrammar. Далее я объясню, как эти методики используются в Unexplored для создания столь сложных уровней.
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии3

Использование лямбда-выражений в необобщённом коде C++

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

Появившиеся в C++11 лямбды стали одной из самых крутых фич нового стандарта языка, позволив сделать обобщённый код более простым и читабельным. Каждая новая версия стандарта C++ добавляет новые возможности лямбдам, делая обобщённый код ещё проще и читабельнее. Вы заметили, что слово «обобщённый» повторилось дважды? Это неспроста – лямбды действительно хорошо работают с кодом, построенным на шаблонах. Но при попытке использовать их в необобщённом, построенном на конкретных типах коде, мы сталкиваемся с рядом проблем. Статья о причинах и путях решения этих проблем.

Читать дальше
Всего голосов 18: ↑17 и ↓1+16
Комментарии6

«Вам здесь больше не рады...» Или что делать, если вы думаете, что работаете здесь, а начальник думает, что уже нет

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

Представьте, что однажды Вы приходите на любимую работу, но начальник встречает Вас нервно, напряжен как струна, и, вызвав Вас к себе, объявляет Вам, что Вы уволены. Вам это объявление портит настроение, опускает самолюбие ниже плинтуса, Вы теряетесь, не знаете, как поступить, что говорить, и о чем начинать беспокоиться в первую очередь - чем оплачивать жилье, квартиру, ипотеку или отдавать долг Сашке и т. п. Попутно Вам начальник/кадровик подсовывает в руки пустой лист бумаги и ручку и говорит написать заявление. Туман в голове, дрожащими руками Вы начинаете выводить на белоснежном листе «генеральному директору ООО «Компания» Иванову И. И., заявление» ниже «прошу уволить меня по собственному желан…» СТОП. Какая-то ерунда получается. Может сказать чудаку начальнику, что у меня желания-то увольняться совсем нет, и зачем тогда писать это заявление, если я уже уволен? Если я уволен – отдайте трудовую книжку, зарплату и отпустите восвояси. Непонятно…

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

Вам становится еще страшнее от ее уверенности, но у Вас уже просыпается любопытство, подбадриваемое логикой и верой в справедливость - «За что уволите, я ж ничего не нарушал(а)?». Инспектор, не ожидая такого поворота, багровеет еще больше и выбегает из кабинета. Немного погодя, у Вас уже разговор с начальником отдела кадров и Вашим начальником. Они участливо с Вами беседуют, но припоминают Вам Ваши старые грешки: опоздания, болезни без бюллетеня пусть даже с разрешения начальника (этожепрогул!) и убедительно описывают Вашу низкую квалификацию, не выполнение Вами поручений руководителя, невыполнение плана продаж/обзвонов и т. п. и повторно убеждают Вас, что заявление – лучший вариант. Вы послушно отправляетесь писать заявление на увольнение. Вроде все логично и ситуация знакома многим, но есть три момента, о которых обычно забываем(или не знаем) при оценке того, что Вам говорят. С тех пор, как у нас в стране отменили крепостное право многое изменилось и государство больше защищает работников, чем работодателей и при любых спорах действует презумпция невиновности работника. Именно работодатель обязан оправдываться и доказывать, что он все корректно сделал и оформил. Допустил малейшее нарушение - отмена увольнение и оплата всего времени с момента незаконного увольнения.

Читать далее
Всего голосов 167: ↑161 и ↓6+155
Комментарии148

Освещение растений белыми светодиодами — расчет светильника и grow box

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

Тоже интересно, как сэкономить на фитолампе и бродят мысли что-то сделать своими руками? Здесь можно найти теоретический расчет эффективности использования светодиодных ламп на цоколе Е27, а также узнать, во сколько обойдутся материалы, если дело дойдет до эксперимента.

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии37

Коммитите в опенсорсе, работая разработчиком? Разбираемся с правами (привет, nginx)

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


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

Давайте рассмотрим, что говорят законы о правах на код с обеих сторон:

  • Когда и какие права возникают у вас (как физлица) на код.
  • Как правильно устроена передача имущественных прав на код работодателю.
  • Тимлид, который делал ревью, — он соавтор или кто?
  • Можно ли коммитить в свой pet-project с рабочего компьютера в рабочее время?
  • Какой геморрой предстоит пройти, чтобы правильно использовать код, если вы его заказали?

И так далее.

Поехали!
Читать дальше →
Всего голосов 65: ↑65 и ↓0+65
Комментарии78

Самоподписные сертификаты кровавого энтерпрайза против вашего лампового CI/CD

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


Многие компании используют сертификаты, подписанные внутренними удостоверяющими центрами (Certificate Authority) для ресурсов в приватных сетях. Поскольку такие сертификаты по умолчанию не могут быть доверенными, почти на каждом этапе вокруг пайплайна могут возникать ошибки такого рода: x509 certificate signed by unknown authority. Из-за этого до каждого компонента необходимо доставлять корневые сертификаты, используемые в компании. В статье расскажу, как это можно сделать.


Статья подготовлена на основе моего материала в курсе «CI/CD на примере Gitlab CI», первые его темы доступны в бесплатном мини-курсе.

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

О поиске утечек памяти в С++/Qt приложениях

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

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

Эта статья посвящена разным инструментам, которые можно с той или иной степенью успешности применять для отлова утечек памяти в С++/Qt приложениях (desktop). Инструменты будут рассмотрены в связке с IDE Visual Studio 2019. В статье будут рассмотрены не все возможные инструменты, а лишь наиболее популярные и эффективные.

Наша команда давно и пристально изучает подобные инструменты и использует их в своей работе. Объем кода, на котором есть возможность проверить подобные инструменты, составляет около 1.5 миллиона строк. Опираясь на большой практический опыт, мы расскажем о плюсах и минусах разных инструментов, расскажем, что они способны найти, а что не по зубам, расскажем о неочевидных нюансах и, главное, составим сводную сравнительную таблицу по реальному примеру. Мы постараемся максимально быстро и просто ввести в курс дела (показать быстрый старт), потому даже если ты, читатель, никогда не занимался поиском утечек памяти, эта статья поможет за пару часов разобраться и найти свою первую утечку. Поехали!

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

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

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

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

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

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

Читать далее
Всего голосов 18: ↑14 и ↓4+10
Комментарии40

Симуляция эрозии в 3D-рельефе

Время на прочтение5 мин
Количество просмотров5.3K
Недавно я посмотрел видео Себастьяна Лаге о симуляции эрозии, но в его решении генерируется двухмерная карта высот. В то же время я играл в Satisfactory, наслаждаясь красивым рельефом, однако этот рельеф был тщательно спроектирован вручную. Можно ли сгенерировать подобный разнообразный рельеф процедурно? Я решил попробовать.


Скриншот красивого рельефа Satisfactory.

Первая попытка


Я хотел реализовать систему с возможностью генерации нависающих скал и пещер, вероятно, даже красивых арок из Satisfactory. Следовательно, двухмерной карты высот мне будет недостаточно. Поэтому вместо неё я решил использовать 3D-сетку, каждая ячейка которой является числом от 0 до 1, представляющим объём осадочного материала в данном кубе. После генерации сетки результат должен рендериться при помощи marching cubes.

Первый алгоритм был очень простым. Бросаем «дождевую каплю» на случайную точку рельефа. Капля перемещается к соседней точке с наименьшим количеством осадочного материала. Вычитаем часть материала. Повторяем, пока капля не останавливается, после чего запускаем следующую каплю.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии7

Мой топ полезных инструментов для Unity разработчика

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

Всем привет! Меня зовут Григорий Дядиченко, и я всё ещё разрабатываю проекты на Unity под ключ. Сегодня хочется поговорить про полезный инструментарий для Unity разработчика. У меня давно на эту тему есть свой топ ассетов или софта, которые используются почти в каждом проекте, плюс несколько своих утилит. Не будем касаться слишком широких и банальных инструментов типа adb, а составим некоторый набор того, что можно использовать почти в каждом проекте.

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Комментарии11

Best practice по общению с зарубежными партнерами в новогодние каникулы и после

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

Наступают длинные зимние каникулы. Во многих IT-компаниях уже объявлен режим freeze - заморозка новых активностей до конца праздников. Особенно длительной будет пауза у тех, кто сотрудничает с европейскими партнерами - они уходят на каникулы уже в 20х числах декабря, а российские офисы откроются после праздников лишь 3 недели спустя.

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

Читать далее
Всего голосов 12: ↑11 и ↓1+10
Комментарии8

Четырёхмерный лабиринт с видом от первого лица

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

Существует более 30 игр с дополнительным пространственным измерением (список на википедии), которые разнообразными способами визуализируют и пытаются сделать доступной для понимания наличие четвёртой координаты. Но среди тех игр, с которыми я ознакомился, не нашел для себя такой, которая сочетала бы в себе следующие факторы:

- вид от первого лица

- возможность свободного перемещения и вращения во всех направлениях, без жестко заданных траекторий и углов поворота

- простая и привычная графика, с текстурами и освещением

- отсутствие лишних геймплейных элементов и бóльшая направленность игры на исследование четырёхмерного мира

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

Читать далее
Всего голосов 122: ↑122 и ↓0+122
Комментарии72

5 инструментов геймдизайнера, которые помогут вашей игре

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


Видеоигры существуют более 50 лет. За это время технологии скакнули от текстовой The Oregon Trail до фотореалистичной Red Dead Redemption 2. Не говоря уже о VR-тайтлах вроде Half-Life: Alyx, которая выходит в конце марта.

И все же, игровая индустрии еще очень молодая. Постоянно появляются новые способы и инструменты, которые помогают изучать и улучшать геймдизайн. О пяти из таких — в переводе под катом.
Всего голосов 34: ↑34 и ↓0+34
Комментарии5

Отладка Makefile /часть 2/

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

Методы отладки


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

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

Отладка Makefile /часть 1/

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

Отладка makefile - это что-то из черной магии. К несчастью, не существует такой вещи как makefile отладчик, чтобы изучить ход выполнения конкретного правила или как разворачивается переменная. Большую часть отладки можно выполнить с помощью обычных print’ов и проверкой makefile. Конечно, GNU make немного помогает своими встроенными методами и опциями командной строки. Один из лучших методов отладки makefile это добавить отладочные перехваты (hooks) и использовать техники безопасного программирования, на которые можно будет опереться, когда дела пойдут совсем плохо. Далее представлено несколько основных техник отладки и практик безопасного программирования, которые будут, на мой взгляд, наиболее полезными.

Дай две!
Всего голосов 31: ↑31 и ↓0+31
Комментарии5

Коды ошибок — это гораздо медленнее, чем исключения

Время на прочтение12 мин
Количество просмотров20K
На современных 64-битных PC-архитектурах использование C++-исключений означает всего лишь добавление к функциям недостижимого кода с вызовами деструктора и ухудшение производительность менее чем на 1%. Такие небольшие ухудшения производительности сложно даже измерить. Обработка редких ошибок с использованием возвращаемых значений требует дополнительных операций ветвления, которые, в реалистичных сценариях, замедляют программы примерно на 5%. Такой подход, кроме того, менее удобен, чем использование исключений. Если выбрасывается исключение, то на «раскрутку» каждого кадра стека тратится примерно 2 мкс.



C считается самым быстрым языком программирования. В C++ есть возможности, которые лишь повышают удобство работы, не влияя на производительность, в сравнении с C, и возможности, которые на производительность влияют. Эти возможности очень помогают в деле улучшения качества кода. В результате ими, несмотря ни на что, достаточно часто пользуются. Полиморфизм времени выполнения — это буквально вездесущая возможность, а вот исключения распространены меньше.
Читать дальше →
Всего голосов 73: ↑60 и ↓13+47
Комментарии54

Мелкая питонячая радость #15: генераторы тестовых данных, профайлер и консольная база знаний

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

При долгой работе с большим проектом так или иначе упираешься в поиск узких мест в коде. Что только не используют для этого — от навороченных профайлеров и брейкпоинтов до выводов print и замеров времени вручную с выводом таймстампов на консоль.

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

Читать далее
Всего голосов 22: ↑22 и ↓0+22
Комментарии2

В футуристическом плену советского техдизайна

Время на прочтение9 мин
Количество просмотров14K
Будущее нельзя предвидеть, его можно изобрести. (с) Деннис Габор

Если говорить о технологических достижениях Советского Союза, первое, что приходит на ум, — это Спутник, космический корабль «Союз», самолет Туполев-144 (знаменитый «Конкордски») или огромные атомные подводные лодки. Навряд ли туда же можно отнести бытовую электронику и компьютеры, что неудивительно. И несмотря на многообещающее начало развития и разработки инновационных проектов под руководством советских пионеров таких как Сергей Лебедев и других в 1950-х и 1960-х годах, последующие периоды можно охарактеризовать как пассивная имитация самых популярных компьютеров, радиоприемников, телевизоров и другой бытовой электроники, произведенных в западном мире, особенно в США и Германии.


Парад в Берлине, 1987 год. Демонстрация одного из очень немногих оригинальных ПК, когда-либо произведенных в социалистическом государстве, VEB Robotron PC 1715, Восточная Германия

В одном из выпусков советского журнала «Эстетика Дизайна» за 1987 год вышла статья под заголовком «Дизайн и проблемы перестройки образования». В ней обсуждался принятый широкими кругами общественности документ, проливающий свет на проблему отставания от потребностей народного хозяйства, науки и культуры, пробелы в стране дизайна. В условиях ускорения социально экономического развития страны ощутимо чувствовался недостаточный уровень подготовки научно-исследовательской деятельности, дизайнерское образование хромало почти на две ноги и однозначно отставало от (на то время) современного направления в мировом дизайне. Среди таких направления выделяли: гибкую технологию, роботизацию, автоматизацию производства. Узким место считался и дефицит кадров в этой сфере.
Читать дальше →
Всего голосов 41: ↑41 и ↓0+41
Комментарии28
1
23 ...

Информация

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