Pull to refresh
2
0
Владимир @vkus

Проектирую и реализую программные системы

Send message

Как работает рендеринг 3D-игр: растеризация и трассировка лучей

Reading time18 min
Views29K
image

Часть 1: обработка вершин

В этой статье мы подробнее рассмотрим то, что происходит с 3D-миром после завершения обработки всех его вершин. Нам снова придётся стряхнуть пыль с учебников по математике, освоиться в геометрии пирамид усечения и решить загадку перспектив. Также мы ненадолго погрузимся в физику трассировки лучей, освещения и материалов.

Главная тема этой статьи — важный этап рендеринга, на котором трёхмерный мир точек, отрезков и треугольников становится двухмерной сеткой разноцветных блоков. Очень часто этот процесс кажется незаметным, потому что преобразование из 3D в 2D оказывается невидимым, в отличие от процесса, описанного в предыдущей статье, где мы сразу же могли увидеть влияние вершинных шейдеров и тесселяции. Если вы пока не готовы к этому, то можете начать с нашей статьи 3D Game Rendering 101.

Подготовка к двум измерениям


Подавляющее большинство читателей читают этот веб-сайт на совершенно плоском мониторе или экране смартфона; но даже если у вас есть современная техника — изогнутый монитор, то отображаемая им картинка тоже состоит из плоской сетки разноцветных пикселей. Тем не менее, когда вы играете в новую Call of Mario: Deathduty Battleyard, изображения кажутся трёхмерными. Объекты движутся по сцене, становятся больше или меньше, приближаясь и отдаляясь от камеры.
Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments5

Как я нашел способ отследить всех водителей «Ситимобил»

Reading time5 min
Views144K
В субботу вечером я, как всегда, сидел и снифил трафик со своего телефона. Внезапно, открыв приложение «Ситимобил» я увидел, что один интересный запрос выполняется без какой-либо аутентификации.

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


Читать дальше →
Total votes 476: ↑473 and ↓3+470
Comments300

JIRA: границы проекта

Reading time17 min
Views21K
Ранее в статье «JIRA как средство от бессонницы и нервных срывов» был предложен вариант применения JIRA для управления проектом по разработке программного обеспечения в интересах крупного государственного заказчика. Однако неосторожное обращение со средствами автоматизации управления на «цифровой кухне» может не только испортить продукт приготовления, но и привести к многочисленным травмам. В серии статей «Правила своевременного приготовления вкусного программного обеспечения» предполагается подробно исследовать правила организации работ на программном проекте с использованием катализатора под названием JIRA. Приветствуется любая критика.

Источник
Читать дальше →
Total votes 64: ↑58 and ↓6+52
Comments6

«Люди думают, что бесплатное — значит бесполезное. Мне казалось, я смогу их переубедить» — Юрий Ярцев о школе Russol

Reading time8 min
Views8.7K
image

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

О своем опыте создания онлайн-школы мне рассказал Юрий Ярцев. Он создал школу стартапов Russol. Она особенная, потому что бесплатная. И конечно, это приводит к недоверию всех видов: и «бесплатное равно бесполезное», и «бесплатный сыр только в мышеловке».
Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments3

50 оттенков matplotlib — The Master Plots (с полным кодом на Python)

Reading time39 min
Views367K
Те, кто работает с данными, отлично знают, что не в нейросетке счастье — а в том, как правильно обработать данные. Но чтобы их обработать, необходимо сначала проанализировать корреляции, выбрать нужные данные, выкинуть ненужные и так далее. Для подобных целей часто используется визуализация с помощью библиотеки matplotlib.



Встретимся «внутри»!
Читать дальше →
Total votes 67: ↑67 and ↓0+67
Comments15

Как попасть в топ Google в ЕС/США в нише разработки и найти клиентов с большими бюджетами

Reading time8 min
Views8.3K
Пост лучше всего подойдет разработчикам «one-man-company» или командам. Я расскажу, как достаточно легко и просто (при отсутствии или минимальном бюджете) попасть в топ поисковой выдачи в развитых странах в нише разработки и перестать бороться за клиентов в СНГ, которые хотят круто, классно, без ТЗ (ну ты понял, бро, хотим, чтобы все было красиво) и так, чтобы за $4/час и вообще оплата по факту. В конце попробую свести все в чеклист. Кто попробует ему следовать и отпишется о результатах в комментариях, обязательно дам фидбек с советами.


Читать дальше →
Total votes 21: ↑17 and ↓4+13
Comments14

Аки Феникс

Reading time11 min
Views24K
Как я всё это ненавижу. Работу, начальника, программирование, среду разработки, задачи, систему, в которую они записаны, подчиненных с их соплями, цели, электронную почту, интернет, социальные сети, где все поразительно успешны, показушную любовь к компании, лозунги, собрания, коридоры, туалеты, лица, рожи, дресс-код, планирование. Я ненавижу всё, что происходит на работе.

Я выгорел. Давно. Еще толком не начав работать, где-то через год после института, я уже ненавидел всё, что меня окружает в этом чертовом офисе. Я приходил на работу, чтобы ненавидеть. Меня терпели, потому что за первый год я показал впечатляющий рост. Со мной возились, как с младенцем. Меня пытались замотивировать, понять, раззадорить, научить, направить. А я всё больше ненавидел.
Читать дальше →
Total votes 94: ↑66 and ↓28+38
Comments44

Я бросил работу мечты, потому что не переношу продуктовую разработку

Reading time5 min
Views52K


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

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

А я всю жизнь работал в аутстафах, и, конечно же, считаю по-другому. И я хотел осудить друга, но вспомнил как сам отказывался брать продуктовых разрабов на собеседованиях.
Читать дальше →
Total votes 125: ↑81 and ↓44+37
Comments161

5 эффективных возможностей использования технологии process mining

Reading time5 min
Views9.7K

Что такое process mining


Я решил рассказать о Process mining простыми словами: что это за технология и как она применяется на практике, каковы ее ключевые задачи. Начнем с определения. Process mining — это технология для визуализации и анализа бизнес-процессов на основе исследования логов информационных систем. Если в компании процессы достаточно хорошо автоматизированы, то process mining даёт реалистичную картину происходящего. Эта картина может очень сильно отличаться от идеальной картины (тех бизнес-процессов, что были запроектированы).

Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments3

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

Reading time4 min
Views157K

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



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


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


Я взял барный стул и попросил коллегу-немца подвинуться – лампа висела прямо над его рабочим местом. Нильс спросил, что я задумал, и я поделился с ним своей идеей. Он радостно воскликнул: «Классно, мы будем тебе очень благодарны, а то она уже всем надоела!», а потом шепотом добавил: «… но я бы не советовал тебе этого делать!»

Total votes 220: ↑200 and ↓20+180
Comments763

С чего лучше начать проект или как сделать так, что бы не было потом мучительно больно

Reading time8 min
Views25K

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

Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments5

Асинхронность в программировании

Reading time26 min
Views92K

В области разработки высоконагруженных многопоточных или распределенных приложений часто возникают дискуссии об асинхронном программировании. Сегодня мы подробно погрузимся в асинхронность и изучим, что это такое, когда она возникает, как влияет на код и язык программирования, которым мы пользуемся. Разберемся, зачем нужны Futures и Promises и затронем корутины и операционные системы. Это сделает компромиссы, возникающие во время разработки ПО, более явными.


В основе материала — расшифровка доклада Ивана Пузыревского, преподавателя школы анализа данных Яндекса.


Читать дальше →
Total votes 71: ↑67 and ↓4+63
Comments70

ИИ, школьник и большие призовые: как в 8 классе заняться machine learning

Reading time4 min
Views8.8K
Привет, Хабр!

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

Простой пример – прошлогодний хакатон Академии искусственного интеллекта для школьников. Его участникам нужно было предсказать исход игры Dota 2. Победителем соревнования тогда стал Александр Мамаев — десятиклассник из Челябинска. Его алгоритм точнее всего определил команду победителя схватки. Благодаря этому Александр получил солидные призовые — 100 тыс. рублей.



Читать дальше →
Total votes 26: ↑21 and ↓5+16
Comments10

Word2vec в картинках

Reading time14 min
Views134K


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

Мы пытаемся скопировать этот узор в нашей жизни и нашем обществе и потому любим ритм, песню, танец, различные радующие и утешающие нас формы. Однако можно разглядеть и опасность, таящуюся в поиске абсолютного совершенства, ибо очевидно, что совершенный узор — неизменен. И, приближаясь к совершенству, всё сущее идёт к смерти» — Дюна (1965)

Я считаю, что концепция вложений (embeddings) — одна из самых замечательных идей в машинном обучении. Если вы когда-нибудь использовали Siri, Google Assistant, Alexa, Google Translate или даже клавиатуру смартфона с предсказанием следующего слова, то уже работали с моделью обработки естественного языка на основе вложений. За последние десятилетия произошло значительное развитие этой концепции для нейронных моделей (последние разработки включают контекстуализированные вложения слов в передовых моделях, таких как BERT и GPT2).
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments16

Основы движков JavaScript: общие формы и Inline кэширование. Часть 1

Reading time9 min
Views20K
Привет, друзья. В конце апреля мы запускаем новый курс «Безопасность информационных систем». И уже сейчас хотим поделиться с вами переводом статьи, которая непременно будет очень полезной для курса. С оригиналом статьи можно ознакомиться тут.

В статье описаны ключевые основы, они являются общими для всех движков JavaScript, а не только для V8, над которым работают авторы движка (Бенедикт и Матиас). Как JavaScript разработчик могу сказать, что более глубокое понимание того, как работает движок JavaScript поможет разобраться в том, как писать эффективный код.


Читать дальше →
Total votes 23: ↑21 and ↓2+19
Comments2

Как создать игру, если ты ни разу не художник

Reading time127 min
Views44K

В жизни каждого программиста бывали моменты, когда он мечтал сделать интересную игру. Многие программисты эти мечты реализовывают, и даже успешно, но речь сейчас не о них. Речь о тех, кто любит играть в игры, кто (даже не имея знаний и опыта) и сам пытался их когда-то создавать, вдохновляясь примерами героев-одиночек, добившихся всемирной известности (и огромных прибылей), но в глубине души понимал, что тягаться с гуру игростроя ему не по силам.

И не надо…
Читать дальше →
Total votes 107: ↑106 and ↓1+105
Comments71

Делаем современное веб-приложение с нуля

Reading time31 min
Views146K
Итак, вы решили сделать новый проект. И проект этот — веб-приложение. Сколько времени уйдёт на создание базового прототипа? Насколько это сложно? Что должен уже со старта уметь современный веб-сайт?

В этой статье мы попробуем набросать boilerplate простейшего веб-приложения со следующей архитектурой:


Что мы покроем:

  • настройка dev-окружения в docker-compose.
  • создание бэкенда на Flask.
  • создание фронтенда на Express.
  • сборка JS с помощью Webpack.
  • React, Redux и server side rendering.
  • очереди задач с RQ.
Читать дальше →
Total votes 64: ↑56 and ↓8+48
Comments125

Наше всё

Reading time12 min
Views8.2K
Во многих видах бизнеса, особенно в ИТ, ключевое значение имеют компетенции сотрудников. Избитая, знакомая всем фраза. На сайтах большинства компаний, где присутствует раздел миссии или ценностей, написано что-нибудь вроде «наше главное богатство – это наши сотрудники».

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

И вот что получается. Успех бизнеса зависит от компетенций сотрудников. Мы, как и вы, пытаемся управлять бизнесом. Считаем деньги, выработку, управляем задачами, что-то пытаемся делать с проектами, налоги вычисляем… Управляем всем, чем можно, кроме чего? Компетенций.

То есть самым главным-то мы не управляем.
Читать дальше →
Total votes 33: ↑24 and ↓9+15
Comments24

Чеклист фронтенд-разработчика

Reading time12 min
Views70K
Глеб Летушов, редактор-фрилансер, адаптировал для блога Нетологии чеклист с Github от David Dias. Этот чеклист уже переводили, но так как на Хабре его нет, мы решили, что он пригодится. В чеклисте собран полный список элементов, которые необходимо проверить перед запуском и публикацией сайта.



Список основан на многолетнем опыте фронтенд-разработчиков, а дополнения собраны из общедоступных источников.
Читать дальше →
Total votes 30: ↑24 and ↓6+18
Comments21

Критика 1С

Reading time16 min
Views68K
Хотелось бы, чтобы эту статью прочитали сотрудники фирмы 1С: программисты, разработчики конфигураций, всякие начальники отделов, и может быть даже самый главный.

Я хочу критиковать 1С платформу и конфигурации, потому что есть проблемы, а в сети какая-то тишина, как будто всех все устраивает. Простите, но не устраивает. Хочу, чтобы статью прочитали обычные программисты 1С (не сотрудники фирмы 1C), и может быть даже поддержали меня.
Читать дальше →
Total votes 134: ↑120 and ↓14+106
Comments183

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity