[Перевод] Reflective Shadow Maps: Часть 2 ― Реализация

Привет, Хабр! В данной статье представлена простая реализация Reflective Shadow Maps (алгоритм описан в предыдущей статье). Далее я объясню, как я это сделал и какие подводные камни были. Также будут рассмотрены некоторые возможные оптимизации. Рисунок 1: Слева направо: без RSM, с RSM, разница Читать дальше → …

[Перевод] Reflective Shadow Maps: Часть 2 ― Реализация

Julia и рой частиц

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

Julia и рой частиц

Внутренние и вложенные классы java. Часть 3

Внутренние и вложенные классы java. Часть 3 << Часть 1 << Часть 2 Локальные классы Локальный класс — это вложенный класс, объявленный внутри другого класса и некоторого блока кода этого класса, то есть объявленный между фигурными скобками {}. Этот блок может быть статическим блоком, циклом, телом if-ов и т.д. Можно объявить вложенный класс внутри блока кода, например метода, конструктора или блока инициализации. Чаще всего локальные классы объявляются внутри тела метода. Локальный класс объявленный внутри блока кода другого класса не является членом класса, к которому относится блок, а принадлежит самому блоку, точно так же,…

EcmaScript 10 — JavaScript в этом году

Стандартизация JS перешла на годичный цикл обновлений, а начало года — отличное время для того чтобы узнать, что нас ждёт в юбилейной — уже десятой редакции EcmaScript! ES9 — актуальная версия спецификации. ES10 — всё ещё черновик. На сегодняшний день в Stage 4 # — всего несколько предложений. А в Stage 3 # — целая дюжина! Из них, на мой взгляд, самые интересные — приватные поля классов #, шебанг грамматика для скриптов #, числа произвольной точности #, доступ к глобальному контексту # и динамические импорты #.           Автор фото: kasper.green; Жёлтый магнит: elfafeya.art & kasper.green Читать дальше → …

EcmaScript 10 — JavaScript в этом году

[Перевод] Цикл уроков по SDL 2.0: урок 4 — Обработка событий

От переводчика: Это продолжение серии переводов туториалов от Twinklebear, в оригинале доступных тут. Перевод отчасти вольный и может содержать незначительные поправки или дополнения от переводчика. Читать дальше → …

[Перевод] Цикл уроков по SDL 2.0: урок 4 — Обработка событий

Байт-машина для форта (и не только) по-индейски (часть 3)

Наступил год 2019. Новогодние праздники подходят к концу. Самое время начать вспоминать байты, команды, переменные, циклы… Что-то я все уже забыл с этими праздниками. Придется вспоминать вместе! Сегодня сделаем интерпретатор для нашей байт-машины. Это третья статья, первые части тут: часть 1, часть 2. Всех с новым годом, и добро пожаловать под кат! Читать дальше → …

Байт-машина для форта (и не только) по-индейски (часть 3)

[Перевод] Основы внедрения зависимостей

В этой статье я расскажу об основах внедрения зависимостей (англ. Dependency Injection, DI) простым языком, а также расскажу о причинах использования этого подхода. Эта статья предназначена для тех, кто не знает, что такое внедрение зависимостей, или сомневается в необходимости использования этого приёма. Итак, начнём. Читать дальше → …

[Перевод] Основы внедрения зависимостей

История одного запроса

Представьте ваш первый день на новой работе. Офис находится в районе совершенно незнакомой вам станции метро Курская. Приближается время обеда. Вы открываете поисковое приложение, пишете «поесть на Курской» и получаете подборку вариантов, где можно отобедать. Что стоит за запросом «поесть на Курской» и как он обрабатывается, чтобы найти именно то, что нужно вам? В статье я расскажу, как команда Поиска 2ГИС делает всё возможное для того, чтобы жизнь в городах была удобнее и комфортнее для пользователей. Прочитать за обедом …

История одного запроса

[Из песочницы] Решаем проблемы типов данных в Ruby или Make data reliable again

В этой статье я хотел бы рассказать о том, какие проблемы с типами данных есть в Ruby, с какими проблемами столкнулся я, как их можно решить и как сделать так, чтобы на данные, с которыми мы работаем, можно было положиться. Читать дальше → …

[Из песочницы] Решаем проблемы типов данных в Ruby или Make data reliable again

Сортировка «Ханойская башня»

Ханойские башни Про знаменитую игру Эдуарда Люка́ на Хабре не писа́л только ленивый. Кажется, все покровы сорваны и что-то ещё по поводу алгоритма добавить уже невозможно. Но нет, у данной темы есть ещё скрытые ресурсы. Сегодня, в частности, мы переделаем алгоритм решения этой головоломки в полноценную сортировку. (Зачем? Just for fun. В пятницу можно.) Сортировка Ханойская башня …

Сортировка «Ханойская башня»

OpenSceneGraph: Групповые узлы, узлы трансформации и узлы-переключатели

Введение Когда происходит рисование точки, линии или сложного полигона в трехмерном мире, финальный результат, в конечном итоге, будет изображен на плоском, двухмерном экране. Соответственно, трехмерные объекты проходят некий путь преобразования, превращаясь в набор пикселей, выводимых в двумерное окно. Развитие программных инструментов, реализующих трехмерную графику пришло, вне зависимости от того, какой из них вы выбираете, примерно к одинаковой концепции как математического, так и алгоритмического описания вышеупомянутых трансформаций. Идеологически и «чистые» графические API типа OpenGL, и крутые игровые движки типа Unity и Unreal, используют схожие механизмы описания преобразования трехмерной сцены. Не является исключением и OpenSceneGraph. В этой статье мы…

OpenSceneGraph: Групповые узлы, узлы трансформации и узлы-переключатели

[Перевод] Конференция BLACK HAT USA. Ботнет из миллиона браузеров. Часть 2

Конференция BLACK HAT USA. Ботнет из миллиона браузеров. Часть 1

Мэтт Йохансон: сейчас я покажу, как вводить этот код. Существует множество рекламных сетей, но мы выбрали эту, потому что она позволяет нам делать то, что мы хотим.

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

[Перевод] Конференция BLACK HAT USA. Ботнет из миллиона браузеров. Часть 2

Секреты невозможных вычислений на GPU

Наш опыт использования вычислительного кластера из 480 GPU AMD RX 480 при решении математических задач. В качестве задачи мы взяли доказательство теоремы из статьи профессора Чуднова А.М. “Циклические разложения множеств, разделяющие орграфы и циклические классы игр с гарантированным выигрышем“. Задача заключается в поиске минимального числа участников одной коалиции в коалиционных играх Ним-типа, гарантирующее выигрыш одной из сторон.

Читать дальше → …

Секреты невозможных вычислений на GPU

[Перевод] Вам следует задуматься о часах практики

Если вы музыкант или знаете кого-то из музыкантов, то вам знакомы такие понятия как «практика» и «репетиция». Они имеют совершенно разное значение.

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

Читать дальше → …

[Перевод] Вам следует задуматься о часах практики

7 советов, как не взбесить коллегу-тестировщика в его праздник

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

Фото: David Goehring CC BY Читать дальше → …

7 советов, как не взбесить коллегу-тестировщика в его праздник