Рубрика «Программирование» - 304

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

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

Внимание: просто рассматривать мой код, равно как и просто читать эту статью с чашкой чая в руке, смысла не имеет. Эта статья рассчитана на то, что вы возьмётесь за клавиатуру и напишете ваш собственный движок. Он наверняка будет лучше моего. Ну или просто смените язык программирования!

Итак, сегодня я покажу, как отрисовывать подобные картинки:
256 строчек голого C++: пишем трассировщик лучей с нуля за несколько часов - 1

Читать полностью »

«Изоморфизм» — одно из базовых понятий современной математики. На конкретных примерах на Haskell и C# я не только растолкую теорию для нематематиков (не используя при этом никаких непонятных математических символов и терминов), но и покажу как этим можно пользоваться в повседневной практике.

Читать полностью »

Злые языки утверждают, что функциональные языки программирования — «языки для написания факториалов». Чаще всего так определяют язык Haskell, мы же начнем с того функционального языка, который сильно повлиял и на Haskell, и на подмножество средств для функционального программирования многих других языков — язык Scheme. По-крайней мере, map и for-each, filter и reduce, а так же apply и eval пришли в наши любимые языки программирования если не именно из Scheme, то в том числе и оттуда.

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

У меня получилось 10 вариантов записи определений функций, которые можно свести к 3 основным способам вычисления: традиционному линейно-рекурсивному вычислительному процессу, итерации, генерации последовательности чисел с последующей сверткой умножением. Предлагаю рассмотреть эти варианты подробнее. Попутно мы рассмотрим: оптимизацию хвостовой рекурсии, функции высших порядков и метапрограммирование, отложенные вычисления, бесконечные списки, мемоизацию, способ создать статическую переменную в Scheme и гигиенические макросы.

Читать полностью »

Истоки

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

image
ha.art.pl

Сперва родился простейший компилятор PL/0, а из него постепенно вырос почти полнофункциональный компилятор Паскаля для MS-DOS. Вдохновением мне служила книга Compiler Construction, написанная создателем языка Паскаль Никлаусом Виртом. И пусть взгляды Вирта уже устарели и утратили всякую связь с реалиями ИТ, а компиляторы делают совсем не так, как учил Вирт. Однако его методы по-прежнему просты, изящны, а главное — приносят радость, ведь самостоятельно разобрать текст программы рекурсивным спуском и сгенерировать машинный код намного заманчивее, чем призывать на помощь яков, бизонов и всех их преемников.

Судьба моего компилятора оказалась не самой тривиальной. Он прожил две жизни: первую — в моих руках, вторую — в руках польских ценителей компьютерных древностей.
Читать полностью »

Конференция DEFCON 20. Захват за 60 секунд: от гостевой учётной записи до администратора домена Windows. Часть 1

Хорошо то, что мы можем войти в локальную сеть, подделав DNS. А как насчёт социальной инженерии, учитывающей предпочтения и склонности пользователей? Пентестеры знают, что в IE можно поместить теги файлов-изображений, например, формата .jpg, для сетевого пути UNC, и тогда IE будет передавать это обратно Windows и автоматически подключатся к сетевой папке, пытаясь получить запрашиваемое изображение или что-то еще, например, JavaScript, iFrame и т.д. Так что на сегодня в IE имеется автоматическая аутентификация.

Конференция DEFCON 20. Захват за 60 секунд: от гостевой учётной записи до администратора домена Windows. Часть 2 - 1

То же самое можно проделать в Firefox и Chrome, хотя люди считают, что эти браузеры более защищены. На этом скриншоте приведена консоль ошибок Firefox, в которой сообщается, что браузер не может загрузить этот файл картинки из общей сети, так как политика безопасности предотвращает загрузку файлов, которых нет в контексте безопасности браузера. Интересной особенностью нашего инструмента является то, что браузеры Firefox и Chrome можно заставить загружать файлы, просто посылая HTTP заголовки для принудительной загрузки Content-Type: application/force-download и затем открывать эти файлы из папки Temp или прямо с рабочего стола. Таким образом, мы выставили контекст безопасности файлов и активировали автоматическую аутентификацию в общем SMB, так что теперь можете заставить пользователей аутентифицироваться на вашем мошенническом сервере. Читать полностью »

Привет! Недавно мы выпустили [MPS 2018.3](https://www.jetbrains.com/mps/download/). В этой версии много новых функций, с которыми работа над проектами станет еще эффективнее. Мы улучшили планы генерации и язык описания редактора, добавили новые конструкции в язык сборки и упаковки, обновили элементы интерфейса для удобной навигации по иерархии наследования и внесли много других изменений для продуктивной работы.

image
Читать полностью »

My experience of advertising and development of Android and iOS application - 1

Let me share an interesting experience in promotion of a mobile game.

1. Introduction

I am going to describe all the benefits and of course show the final results. The example will be the mobile game Quick Brain which is available for Android и iOS. Quick Brain Android was released the first that's why its possibilities differ considerably from iOS version.

I have been always kept by the thoughts that everyone's talking about high returns in contrast with Android. I just couldn't resist such attractive prospects and started more active refinement of iOS version in order to feel less embarrassed about it.

After Google play iOS has become an absolutely new field for the games for me. During my comparative experiment I've found out that iOS version can bring comparable earnings to Android with daily audience 3 to 10 times less depending on the country.
Читать полностью »

Еще летом на The economist вышла статья о том, что Python все активнее завоевывает рынок. Но завирусилась она только сейчас. Вероятно, так произошло из-за того, что она очень неоднозначная. Ведь несмотря на такой заголовок, автор заявляет, что Python, теоретически, может повторить судьбу Фортрана или Лиспа. Чтож, обсудим. Ниже перевод этой небольшой заметки.

Python становится самым популярным языком программирования в мире - 1

Я ТОЧНО не собирался создавать язык, предназначенный для массового потребления

Так сказал Гвидо ван Россум, голландский ученый, который разработал язык программирования Python в 1989 году. Но три десятилетия спустя его изобретение обогнало почти всех своих конкурентов и дало возможность без барьеров кодить, без преувеличения, всем. За последние 12 месяцев в США «Python» гуглили чаще, чем «Ким Кардашьян» (В России «Python» по тому же принципу обогнал «Тимати». — Прим. ред.). Количество запросов утроилось с 2010 года, в то время как количество запросов по другим основным языкам программирования не изменилось или уменьшилось.
Читать полностью »

Перед вами перевод статьи пользователя под ником Constantin, опубликованной на ресурсе hackernoon.com. Под катом можно узнать, какие из языков программирования сегодня достойны того, чтобы их освоили.

К чему готовиться в 2019 году: тренды в программировании - 1
Читать полностью »

Привет!

Вы любите собеседования? И часто проводите их? Если ответ на второй вопрос «Да», то среди кандидатов вам наверняка встречались отличные и умные люди, которые отвечали на все ваши вопросы и приближались к концу зарплатной вилки.

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

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

image
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js