Learn OpenGL. Урок 5.1 — Продвинутое освещение. Модель Блинна-Фонга

Автор: admin от 8-04-2018, 23:25, посмотрело: 202

Learn OpenGL. Урок 5.1 — Продвинутое освещение. Модель Блинна-Фонга

Продвинутое освещение


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

Категория: Программирование

 

Анализ данных — основы и терминология

Автор: admin от 8-04-2018, 23:25, посмотрело: 86

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



Согласно википедии,
Анализ данных — это область математики и информатики, занимающаяся построением и исследованием наиболее общих математических методов и вычислительных алгоритмов извлечения знаний из экспериментальных (в широком смысле) данных; процесс исследования, фильтрации, преобразования и моделирования данных с целью извлечения полезной информации и принятия решений.
Говоря чуть более простым языком, я бы предложил понимать под анализом данных совокупность методов и приложений, связанных с алгоритмами обработки данных и не имеющих четко зафиксированного ответа на каждый входящий объект. Это будет отличать их от классических алгоритмов, например реализующих сортировку или словарь.

Категория: Программирование

 

PHP-Дайджест № 128 (25 марта – 8 апреля 2018)

Автор: admin от 8-04-2018, 23:25, посмотрело: 77

PHP-Дайджест № 128 (25 марта – 8 апреля 2018)


Свежая подборка со ссылками на новости и материалы. В выпуске: PhpStorm 2018.1 и другие релизы, критическая уязвимость в Drupal, видеозаписи докладов, порция полезных инструментов, и многое другое.

Приятного чтения!

Категория: Программирование

 

Учебник Thymeleaf: Глава 20. Приложение C: Синтаксис селектора разметки

Автор: admin от 7-04-2018, 21:35, посмотрело: 110

Оглавление



20 Приложение C: Синтаксис селектора разметки



Селекторы разметки Thymeleaf напрямую заимствованы из библиотеки парсера Thymeleaf: AttoParser.



Синтаксис для этих селекторов имеет большое сходство с синтаксисом селекторов в XPath, CSS и jQuery, что делает их удобными для большинства пользователей. Вы можете взглянуть на полную ссылку на синтаксис в документации AttoParser.

Категория: Программирование

 

Самоуправляемые виртуальные инфраструктуры: VMware обновляет vRealize Suite

Автор: admin от 7-04-2018, 21:35, посмотрело: 86

На прошлой неделе VMware объявили об обновлении своей платформы управления облаком vRealize Suite. Оно выйдет 4 мая этого года, направлено на упрощение работы с SDDC (программно-определяемым ЦОД) и включает ряд новых функций.



Подробнее о некоторых из них расскажем под катом.



Самоуправляемые виртуальные инфраструктуры: VMware обновляет vRealize Suite

Категория: Программирование

 

Разбор задачек от Одноклассников на JPoint 2018

Автор: admin от 7-04-2018, 21:35, посмотрело: 110

Алоха!



Самым, наверное, интересным событием на этой неделе в мире Java стала конференция JPoint, которая прошла в Центре Международной Торговли в Москве. Одноклассники предложили посетителям тоже поучаствовать в разработке самой высоконагруженной системы на Java и помочь нашим разработчикам в решении практических задач, с которыми они сталкиваются в своей работе.



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

Категория: Программирование

 

Проверяй входящие данные. Исходная причина уязвимости и атаки на Cisco IOS

Автор: admin от 7-04-2018, 21:35, посмотрело: 119

Проверяй входящие данные. Исходная причина уязвимости и атаки на Cisco IOS


В пятницу 6 апреля 2018 началась мощная атака на оборудование Cisco.



Много пишут о том, что главная причина, по которой эта атака успешна, это открытые во внешние сети сервисные порты Cisco Smart Install.



Эти порты открыты по умолчанию. А люди в массе своей оставляют то, что сконфигурировано/выбрано/настроено таким, каким оно было по умолчанию. Как видим, на примере этого случая, это касается не только домашних роутеров, но и серьёзного оборудования в крупных компаниях, где цена ошибки значительно выше.



При создании системы вы не имеете права расчитывать на то, что значения по умолчанию, которые следует изменить будут изменены, причём в нужную сторону.



Вы лишь можете заставить изменить эти значения с помощью каких либо ограничивающих использование приёмов. Чему многие будут не рады. «Защита от дурака» это один из примеров этих обязывающих ограничений.





Я хочу обратить внимание на корень самой уязвимости. В отчёте есть такая часть:

Категория: Программирование

 

Паттерны внедрения зависимостей. Часть 2

Автор: admin от 7-04-2018, 21:35, посмотрело: 96

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

Категория: Программирование

 

Мессенджеры, пора делать следующий шаг

Автор: admin от 7-04-2018, 05:55, посмотрело: 79

Мессенджеры, пора делать следующий шаг


В последние пару лет, мессенджеры изменили привычный ход потребления контента, whatsapp, telegram, viber, простите. Теперь весь контент сосредоточен в них, аудитория растет дикими темпами, они многое изменили, но самое главное — им еще предстоит — способ доставки контента, а если точнее — P2P CDN.

Почему P2P CDN это необходимый шаг и как все может работать (и что это вообще такое?!) — всё это рассмотрим в посте.

Категория: Программирование

 

Что будет если объединить ArrayList и LinkedList?

Автор: admin от 7-04-2018, 05:55, посмотрело: 93

Приветствую вас!

После изучения коллекций, а именно такие реализации List, как ArrayList и LinkedList, возникла идея, а почему бы не объединить эти структуры данных в одну и посмотреть, что из этого получится.



Зачем это нужно?




  • Проблема ArrayList — у него есть начальный размер по умолчанию DEFAULT_CAPACITY или заданный размер initialCapacity, при превышении этого размера, создается новый массив большего размера, при этом туда копируются данные из старого массива, что по времени очень затратно и именно это дает в наихудшем случае алгоритмическую сложность O(n)

  • Проблема LinkedList — здесь наоборот, добавить новый элемент, это всего лишь добавить новую связь (создать еще одну Node и добавить ссылку на неё), но операция получения элемента по индексу очень затратна, т.к. нужно будет пройтись по всему списку от начала, что очень затратно и дает O(n)



Решение



Что если создать такую структуру данных, при которой вставка и получение любого элемента будет за константное время. Буду использовать технологию ArrayList без пересоздания массива, что конечно же проигрывает по памяти, но выигрывает в скорости, т.к. память дешевая и её очень много, выигрыш в производительности считаю приоритетным.

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

Что будет если объединить ArrayList и LinkedList?

Категория: Программирование