Всем привет! Предлагаю взглянуть на проблему, связанную с возникновением коммитов от «неизвестных» пользователей в вашем git репозитории. Такое может возникнуть, если один разработчик будет использовать несколько разных git конфигов. Расскажу, какие есть варианты избежать похожую ситуацию.
Программист, сейчас Python и чутка C++
Godot — рисование без правил
Иногда случается такое, что движок попросту ограничивает нескончаемый поток идей. Так, однажды и мне захотелось рисовать откуда угодно, что угодно и где угодно. Об этом и пойдет речь.
Для начала представим такую тривиальную задачу: по клику мыши нужно рисовать некоторый примитив, который задает пользователь, например, нажатием клавиш. Звучит просто, однако с Godot это может вызвать головную боль.
Преобразование графов для процедурной генерации уровней
Я много занимался деконструкцией инди-игры 2017 года Unexplored Джориса Дорманса. Она идеально воплощает идею процедурно генерируемых подземелий в стиле Zelda, и я обязан был выяснить, как происходит эта магия. К счастью, основная часть логики генерации написана на специализированном языке PhantomGrammar, поэтому с помощью разработчиков я получил достаточно полное представление о том, как она работает.
Заложенные в Unexplored идеи настолько интересны, что, по моему мнению, заслуживают отдельной статьи. В основе игры лежит концепция преобразования графов, она хорошо изучена с научной точки зрения, но редко используется в играх. Эту статью я целиком посвящу данной технике, а в следующей расскажу о том, как её использует и расширяет PhantomGrammar. Далее я объясню, как эти методики используются в Unexplored для создания столь сложных уровней.
Использование лямбда-выражений в необобщённом коде C++
Появившиеся в C++11 лямбды стали одной из самых крутых фич нового стандарта языка, позволив сделать обобщённый код более простым и читабельным. Каждая новая версия стандарта C++ добавляет новые возможности лямбдам, делая обобщённый код ещё проще и читабельнее. Вы заметили, что слово «обобщённый» повторилось дважды? Это неспроста – лямбды действительно хорошо работают с кодом, построенным на шаблонах. Но при попытке использовать их в необобщённом, построенном на конкретных типах коде, мы сталкиваемся с рядом проблем. Статья о причинах и путях решения этих проблем.
«Вам здесь больше не рады...» Или что делать, если вы думаете, что работаете здесь, а начальник думает, что уже нет
Представьте, что однажды Вы приходите на любимую работу, но начальник встречает Вас нервно, напряжен как струна, и, вызвав Вас к себе, объявляет Вам, что Вы уволены. Вам это объявление портит настроение, опускает самолюбие ниже плинтуса, Вы теряетесь, не знаете, как поступить, что говорить, и о чем начинать беспокоиться в первую очередь - чем оплачивать жилье, квартиру, ипотеку или отдавать долг Сашке и т. п. Попутно Вам начальник/кадровик подсовывает в руки пустой лист бумаги и ручку и говорит написать заявление. Туман в голове, дрожащими руками Вы начинаете выводить на белоснежном листе «генеральному директору ООО «Компания» Иванову И. И., заявление» ниже «прошу уволить меня по собственному желан…» СТОП. Какая-то ерунда получается. Может сказать чудаку начальнику, что у меня желания-то увольняться совсем нет, и зачем тогда писать это заявление, если я уже уволен? Если я уволен – отдайте трудовую книжку, зарплату и отпустите восвояси. Непонятно…
Поделившись своими сомнениями с кадровиком, Вы замечаете, что Инспектор по кадрам багровеет и рассказывает, что Ваши коллеги-соратники уже написали заявление и советует Вам сделать то же самое - это в Ваших же интересах – «иначеуволимпостатьеиотправимсволчьимбилетом».
Вам становится еще страшнее от ее уверенности, но у Вас уже просыпается любопытство, подбадриваемое логикой и верой в справедливость - «За что уволите, я ж ничего не нарушал(а)?». Инспектор, не ожидая такого поворота, багровеет еще больше и выбегает из кабинета. Немного погодя, у Вас уже разговор с начальником отдела кадров и Вашим начальником. Они участливо с Вами беседуют, но припоминают Вам Ваши старые грешки: опоздания, болезни без бюллетеня пусть даже с разрешения начальника (этожепрогул!) и убедительно описывают Вашу низкую квалификацию, не выполнение Вами поручений руководителя, невыполнение плана продаж/обзвонов и т. п. и повторно убеждают Вас, что заявление – лучший вариант. Вы послушно отправляетесь писать заявление на увольнение. Вроде все логично и ситуация знакома многим, но есть три момента, о которых обычно забываем(или не знаем) при оценке того, что Вам говорят. С тех пор, как у нас в стране отменили крепостное право многое изменилось и государство больше защищает работников, чем работодателей и при любых спорах действует презумпция невиновности работника. Именно работодатель обязан оправдываться и доказывать, что он все корректно сделал и оформил. Допустил малейшее нарушение - отмена увольнение и оплата всего времени с момента незаконного увольнения.
Освещение растений белыми светодиодами — расчет светильника и grow box
Тоже интересно, как сэкономить на фитолампе и бродят мысли что-то сделать своими руками? Здесь можно найти теоретический расчет эффективности использования светодиодных ламп на цоколе Е27, а также узнать, во сколько обойдутся материалы, если дело дойдет до эксперимента.
Коммитите в опенсорсе, работая разработчиком? Разбираемся с правами (привет, nginx)
Ситуация с правами на код в Российской Федерации довольно интересная: по закону разработчик (физлицо) защищён очень и очень сильно. Нужно как-то весьма прилично косякнуть, чтобы оказаться неправым. А вот работодателю нужно довольно много и кропотливо бегать с бубном и бумагами, чтобы получить права на тот самый код, который пишется на его же зарплату.
Давайте рассмотрим, что говорят законы о правах на код с обеих сторон:
- Когда и какие права возникают у вас (как физлица) на код.
- Как правильно устроена передача имущественных прав на код работодателю.
- Тимлид, который делал ревью, — он соавтор или кто?
- Можно ли коммитить в свой pet-project с рабочего компьютера в рабочее время?
- Какой геморрой предстоит пройти, чтобы правильно использовать код, если вы его заказали?
И так далее.
Поехали!
Самоподписные сертификаты кровавого энтерпрайза против вашего лампового CI/CD
Многие компании используют сертификаты, подписанные внутренними удостоверяющими центрами (Certificate Authority) для ресурсов в приватных сетях. Поскольку такие сертификаты по умолчанию не могут быть доверенными, почти на каждом этапе вокруг пайплайна могут возникать ошибки такого рода: x509 certificate signed by unknown authority
. Из-за этого до каждого компонента необходимо доставлять корневые сертификаты, используемые в компании. В статье расскажу, как это можно сделать.
Статья подготовлена на основе моего материала в курсе «CI/CD на примере Gitlab CI», первые его темы доступны в бесплатном мини-курсе.
О поиске утечек памяти в С++/Qt приложениях
Каждый программист, работающий с языком С++, должен уметь находить утечки памяти. Язык С++ - сложный язык, делать ошибки легко, а находить их бывает муторно. Особенно это касается утечек памяти. Ситуация с отловом утечек памяти только усугубляется, если в коде С++ используется библиотека Qt.
Эта статья посвящена разным инструментам, которые можно с той или иной степенью успешности применять для отлова утечек памяти в С++/Qt приложениях (desktop). Инструменты будут рассмотрены в связке с IDE Visual Studio 2019. В статье будут рассмотрены не все возможные инструменты, а лишь наиболее популярные и эффективные.
Наша команда давно и пристально изучает подобные инструменты и использует их в своей работе. Объем кода, на котором есть возможность проверить подобные инструменты, составляет около 1.5 миллиона строк. Опираясь на большой практический опыт, мы расскажем о плюсах и минусах разных инструментов, расскажем, что они способны найти, а что не по зубам, расскажем о неочевидных нюансах и, главное, составим сводную сравнительную таблицу по реальному примеру. Мы постараемся максимально быстро и просто ввести в курс дела (показать быстрый старт), потому даже если ты, читатель, никогда не занимался поиском утечек памяти, эта статья поможет за пару часов разобраться и найти свою первую утечку. Поехали!
Перепрошивка ограничивающих убеждений. Прокрастинация или как мотивировать себя на действия
Как часто мы задаемся вопросом о том, почему порой так сложно настроить себя на некоторые виды деятельности?
Многие из нас имеют план намеченных дел. Однако, немногим удается хотя бы что-то из этого списка просто начать делать. Причем, в некоторых случаях бывает, что настолько мы не хотим чем-либо заниматься, что в принципе перестаем делать что-либо из того, что определили для себя как нечто обязательное. Как будто кто-то внутри нас сидит, и каждый раз берет верх над нашим желанием заняться чем-то полезным, провоцирует нас на мало значимые и повторяющиеся изо дня в день действия, которые отвлекают от чего-то более важного.
Мы можем часами тратить время на различные и не всегда полезные занятия. И делаем это практически на автомате. А потом ругаем себя за то, что в очередной раз потратили продуктивное время на непродуктивные дела. Сталкиваясь с подобным поведением, мы даем себе обещание, что в следующий раз займемся тем, что запланировали. Вместо этого делаем то, что делали раньше.
Симуляция эрозии в 3D-рельефе
Скриншот красивого рельефа Satisfactory.
Первая попытка
Я хотел реализовать систему с возможностью генерации нависающих скал и пещер, вероятно, даже красивых арок из Satisfactory. Следовательно, двухмерной карты высот мне будет недостаточно. Поэтому вместо неё я решил использовать 3D-сетку, каждая ячейка которой является числом от 0 до 1, представляющим объём осадочного материала в данном кубе. После генерации сетки результат должен рендериться при помощи marching cubes.
Первый алгоритм был очень простым. Бросаем «дождевую каплю» на случайную точку рельефа. Капля перемещается к соседней точке с наименьшим количеством осадочного материала. Вычитаем часть материала. Повторяем, пока капля не останавливается, после чего запускаем следующую каплю.
Мой топ полезных инструментов для Unity разработчика
Всем привет! Меня зовут Григорий Дядиченко, и я всё ещё разрабатываю проекты на Unity под ключ. Сегодня хочется поговорить про полезный инструментарий для Unity разработчика. У меня давно на эту тему есть свой топ ассетов или софта, которые используются почти в каждом проекте, плюс несколько своих утилит. Не будем касаться слишком широких и банальных инструментов типа adb, а составим некоторый набор того, что можно использовать почти в каждом проекте.
Best practice по общению с зарубежными партнерами в новогодние каникулы и после
Наступают длинные зимние каникулы. Во многих IT-компаниях уже объявлен режим freeze - заморозка новых активностей до конца праздников. Особенно длительной будет пауза у тех, кто сотрудничает с европейскими партнерами - они уходят на каникулы уже в 20х числах декабря, а российские офисы откроются после праздников лишь 3 недели спустя.
В этой статье я расскажу, как сделать так, чтоб партнеры не потеряли вас за это время, но при этом и не дергали по пустякам. А также поделюсь конкретными речевыми оборотами, которые понадобятся, когда выйдете в офис и начнете разгребать дела.
Четырёхмерный лабиринт с видом от первого лица
Существует более 30 игр с дополнительным пространственным измерением (список на википедии), которые разнообразными способами визуализируют и пытаются сделать доступной для понимания наличие четвёртой координаты. Но среди тех игр, с которыми я ознакомился, не нашел для себя такой, которая сочетала бы в себе следующие факторы:
- вид от первого лица
- возможность свободного перемещения и вращения во всех направлениях, без жестко заданных траекторий и углов поворота
- простая и привычная графика, с текстурами и освещением
- отсутствие лишних геймплейных элементов и бóльшая направленность игры на исследование четырёхмерного мира
К тому же, было желание самому сделать нечто подобное, поэтому решил создать минимальную версию такой игры — процедурно генерируемый четырёхмерный лабиринт, с визуализацией 3D сечениями. О том, что из этого получилось, читайте далее.
5 инструментов геймдизайнера, которые помогут вашей игре
Видеоигры существуют более 50 лет. За это время технологии скакнули от текстовой The Oregon Trail до фотореалистичной Red Dead Redemption 2. Не говоря уже о VR-тайтлах вроде Half-Life: Alyx, которая выходит в конце марта.
И все же, игровая индустрии еще очень молодая. Постоянно появляются новые способы и инструменты, которые помогают изучать и улучшать геймдизайн. О пяти из таких — в переводе под катом.
Отладка Makefile /часть 2/
Методы отладки
В этой части поговорим об общих методах и проблемах отладки. В конечном итоге, отладка — это солянка из всего, что работает в данной конкретной ситуации. Эти методы работают для меня и мне приходится полагаться на них даже в случае проблем с простейшими makefile. Может быть, они помогут и тебе тоже.
Отладка Makefile /часть 1/
Отладка makefile - это что-то из черной магии. К несчастью, не существует такой вещи как makefile отладчик, чтобы изучить ход выполнения конкретного правила или как разворачивается переменная. Большую часть отладки можно выполнить с помощью обычных print’ов и проверкой makefile. Конечно, GNU make немного помогает своими встроенными методами и опциями командной строки. Один из лучших методов отладки makefile это добавить отладочные перехваты (hooks) и использовать техники безопасного программирования, на которые можно будет опереться, когда дела пойдут совсем плохо. Далее представлено несколько основных техник отладки и практик безопасного программирования, которые будут, на мой взгляд, наиболее полезными.
Коды ошибок — это гораздо медленнее, чем исключения
C считается самым быстрым языком программирования. В C++ есть возможности, которые лишь повышают удобство работы, не влияя на производительность, в сравнении с C, и возможности, которые на производительность влияют. Эти возможности очень помогают в деле улучшения качества кода. В результате ими, несмотря ни на что, достаточно часто пользуются. Полиморфизм времени выполнения — это буквально вездесущая возможность, а вот исключения распространены меньше.
Мелкая питонячая радость #15: генераторы тестовых данных, профайлер и консольная база знаний
При долгой работе с большим проектом так или иначе упираешься в поиск узких мест в коде. Что только не используют для этого — от навороченных профайлеров и брейкпоинтов до выводов print и замеров времени вручную с выводом таймстампов на консоль.
Теперь в свой арсенал можно добавить профайлер pyinstrument. Традиционные профайлеры по шагам отслеживают выполнение программы, а pyinstrument реализуется концепцию статистического профайлинга — это когда профайлер не вмешивается в выполнение кода, а лишь записывает состояние стека вызова с определенной периодичностью.
В футуристическом плену советского техдизайна
Будущее нельзя предвидеть, его можно изобрести. (с) Деннис Габор
Если говорить о технологических достижениях Советского Союза, первое, что приходит на ум, — это Спутник, космический корабль «Союз», самолет Туполев-144 (знаменитый «Конкордски») или огромные атомные подводные лодки. Навряд ли туда же можно отнести бытовую электронику и компьютеры, что неудивительно. И несмотря на многообещающее начало развития и разработки инновационных проектов под руководством советских пионеров таких как Сергей Лебедев и других в 1950-х и 1960-х годах, последующие периоды можно охарактеризовать как пассивная имитация самых популярных компьютеров, радиоприемников, телевизоров и другой бытовой электроники, произведенных в западном мире, особенно в США и Германии.
Парад в Берлине, 1987 год. Демонстрация одного из очень немногих оригинальных ПК, когда-либо произведенных в социалистическом государстве, VEB Robotron PC 1715, Восточная Германия
В одном из выпусков советского журнала «Эстетика Дизайна» за 1987 год вышла статья под заголовком «Дизайн и проблемы перестройки образования». В ней обсуждался принятый широкими кругами общественности документ, проливающий свет на проблему отставания от потребностей народного хозяйства, науки и культуры, пробелы в стране дизайна. В условиях ускорения социально экономического развития страны ощутимо чувствовался недостаточный уровень подготовки научно-исследовательской деятельности, дизайнерское образование хромало почти на две ноги и однозначно отставало от (на то время) современного направления в мировом дизайне. Среди таких направления выделяли: гибкую технологию, роботизацию, автоматизацию производства. Узким место считался и дефицит кадров в этой сфере.
Информация
- В рейтинге
- Не участвует
- Откуда
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Дата рождения
- Зарегистрирован
- Активность