Читать дальше →
Denis @isden
Пользователь
Oblique frustum. Внутри скошенной пирамиды видимости
14 мин
7.5KНижеизложенный материал, вероятно, знаком, или даже хорошо известен, программистам, имевшим опыт работы с OpenGL, между тем, я счел уместным напомнить о модели oblique frustum, отчасти наблюдая (и разделяя) интерес читателей Хабра к вопросам OpenGL и в целом трёхмерного моделирования, отчасти из несогласия с позицией некоторых разработчиков вроде «…чтобы это использовать, вовсе не обязательно разбираться в том, как работает матрица проекции», отчасти из уважения и благодарности к Эрику Ленгелу|Eric Lengyel, изобретательная мысль которого обогатила приемы работы в среде OpenGL.
Если в моделируемых вами сценах присутствуют зеркальные отражения, и вы подзабыли или не слышали про «oblique frustum», то возможно, что эта статья не будет для вас бесполезной.
Несмотря на то, что я, вслед за Эриком Ленгелом, более придерживался при изложении материала представлений OpenGL, все последующие рассуждения легко распространяются на любые другие системы трёхмерного моделирования.
Если в моделируемых вами сценах присутствуют зеркальные отражения, и вы подзабыли или не слышали про «oblique frustum», то возможно, что эта статья не будет для вас бесполезной.
Несмотря на то, что я, вслед за Эриком Ленгелом, более придерживался при изложении материала представлений OpenGL, все последующие рассуждения легко распространяются на любые другие системы трёхмерного моделирования.
+15
Быстрый пул для php+websocket без прослойки nodejs на основе lua+nginx
5 мин
16KRecovery Mode

Кратко: nginx не умеет пулить websockets, а php работает per request. Нужна прослойка которая будет держать открытыми вебсокеты и при поступлении данных соединяться с php (через тот же fastcgi) и отправлять обратно ответ.
update: Здесь не идётся про решения на php, так как по сравнению даже с nodejs, они гораздо медленнее.
Тема, как оказалось, не нова, исходники тянуться аж из 2014, но, тем не менее, информации о трюке, про который здесь пойдёт речь, крайне мало. Можете погуглить "websockets php". Усугубляется тема ещё тем, что найденные примеры реализации (два, точнее) не работают, включая тот, что в документации :)
+12
Kali Linux: мониторинг и логирование
9 мин
28KПеревод
→ Часть 1. Kali Linux: политика безопасности, защита компьютеров и сетевых служб
→ Часть 2. Kali Linux: фильтрация трафика с помощью netfilter
→ Часть 3. Kali Linux: мониторинг и логирование
→ Часть 4. Kali Linux: упражнения по защите и мониторингу системы
В предыдущих двух статьях из этой серии мы говорили о политике безопасности, о защите компьютеров и сетевых служб, о фильтрации трафика в Kali Linux. Благодарим наших читателей за полезные дополнения к этим материалам. В частности — пользователя imbasoft за ссылку на SANS Best Practices и за рекомендацию ознакомиться с комплексом стандартов СТО БР ИББС для погружения в тему бизнес-процессов управления безопасностью. Этот комментарий дан к первому материалу. Спасибо пользователю loginsin, который сделал ценные замечания ко второму материалу, касающиеся правил

Сегодня мы хотим поделиться с вами переводом раздела 7.5. главы 7 книги «Kali Linux Revealed», который посвящён мониторингу и ведению журналов.
→ Часть 2. Kali Linux: фильтрация трафика с помощью netfilter
→ Часть 3. Kali Linux: мониторинг и логирование
→ Часть 4. Kali Linux: упражнения по защите и мониторингу системы
В предыдущих двух статьях из этой серии мы говорили о политике безопасности, о защите компьютеров и сетевых служб, о фильтрации трафика в Kali Linux. Благодарим наших читателей за полезные дополнения к этим материалам. В частности — пользователя imbasoft за ссылку на SANS Best Practices и за рекомендацию ознакомиться с комплексом стандартов СТО БР ИББС для погружения в тему бизнес-процессов управления безопасностью. Этот комментарий дан к первому материалу. Спасибо пользователю loginsin, который сделал ценные замечания ко второму материалу, касающиеся правил
iptables
и некоторых других тонкостей фильтрации трафика в Linux.
Сегодня мы хотим поделиться с вами переводом раздела 7.5. главы 7 книги «Kali Linux Revealed», который посвящён мониторингу и ведению журналов.
+15
О классификации методов преобразования Фурье на примерах их программной реализации средствами Python
7 мин
31KТуториал
Введение
Публикации по методу Фурье условно можно разделить на две группы. Первая группа так называемых познавательных публикаций, например, [1,2].
Вторая группа публикаций касается применения преобразований Фурье в технике, например, при спектральном анализе [3,4].
Ни в коем случае не умоляя достоинства этих групп публикации стоит признать, что без классификации, или хотя бы попытки осуществить такую классификацию, получить системное представление о методе Фурье, по моему мнению, затруднительно.
Задачи публикации
Провести классификацию методов преобразования Фурье на примерах их программной реализации средствами Python. При этом для облегчения чтения использовать формулы только в программном коде с соответствующими пояснениями.
Гармонический анализ и синтез
Гармоническим анализом называют разложение функции f(t), заданной на отрезке [0, Т] в ряд Фурье или в вычислении коэффициентов Фурье по формулам.
Гармоническим синтезом называют получение колебаний сложной формы путем суммирования их гармонических составляющих (гармоник).
Программная реализация
#!/usr/bin/python
# -*- coding: utf-8 -*
from scipy.integrate import quad # модуль для интегрирования
import matplotlib.pyplot as plt # модуль для графиков
import numpy as np # модуль для операций со списками и массивами
T=np.pi; w=2*np.pi/T# период и круговая частота
def func(t):# анализируемая функция
if t<np.pi:
p=np.cos(t)
else:
p=-np.cos(t)
return p
def func_1(t,k,w):# функция для расчёта коэффициента a[k]
if t<np.pi:
z=np.cos(t)*np.cos(w*k*t)
else:
z=-np.cos(t)*np.cos(w*k*t)
return z
def func_2(t,k,w):#функция для расчёта коэффициента b[k]
if t<np.pi:
y=np.cos(t)*np.sin(w*k*t)
else:
y=-np.cos(t)*np.sin(w*k*t)
return y
a=[];b=[];c=4;g=[];m=np.arange(0,c,1);q=np.arange(0,2*np.pi,0.01)# подготовка списков для численного анализа
a=[round(2*quad(func_1, 0, T, args=(k,w))[0]/T,3) for k in m]# интеграл для a[k], k -номер гармоники
b=[round(2*quad(func_2, 0, T, args=(k,w))[0]/T,3) for k in m]# интеграл для b[k], k -номер гармоники
F1=[a[1]*np.cos(w*1*t)+b[1]*np.sin(w*1*t) for t in q]#функции для гармоник
F2=[a[2]*np.cos(w*2*t)+b[2]*np.sin(w*2*t) for t in q]
F3=[a[3]*np.cos(w*3*t)+b[3]*np.sin(w*3*t) for t in q]
plt.figure()
plt.title("Классический гармонический анализ функции \n при t<pi f(t)=cos(t) при t>=pi f(t)=-cos(t)")
plt.plot(q, F1, label='1 гармоника')
plt.plot(q, F2 , label='2 гармоника')
plt.plot(q, F3, label='3 гармоника')
plt.xlabel("Время t")
plt.ylabel("Амплитуда А")
plt.legend(loc='best')
plt.grid(True)
F=np.array(a[0]/2)+np.array([0*t for t in q-1])# подготовка массива для анализа с a[0]/2
for k in np.arange(1,c,1):
F=F+np.array([a[k]*np.cos(w*k*t)+b[k]*np.sin(w*k*t) for t in q])# вычисление членов ряда Фурье
plt.figure()
P=[func(t) for t in q]
plt.title("Классический гармонический синтез")
plt.plot(q, P, label='f(t)')
plt.plot(q, F, label='F(t)')
plt.xlabel("Время t")
plt.ylabel("f(t),F(t)")
plt.legend(loc='best')
plt.grid(True)
plt.show()
+6
Типичное использование Observable объектов в Angular 4
5 мин
79KПредставляю вашему вниманию типичные варианты использования Observable объектов в компонентах и сервисах Angular 4.
Подписка на параметр роутера и мапинг на другой Observable
Задача: При открытии страницы example.com/#/users/42
, по userId
получить данные пользователя.
Решение: При инициализации компоненты UserDetailsComponent
мы подписываемся на параметры роутера. То есть если userId
будет меняться — будер срабатывать наша подписка. Используя полученный userId
, мы из сервиса userService
получаем Observable
с данными пользователя.
// UserDetailsComponent
ngOnInit() {
this.route.params
.pluck('userId') // получаем userId из параметров
.switchMap(userId => this.userService.getData(userId))
.subscribe(user => this.user = user);
}

+21
Иллюзия скорости
10 мин
44KПеревод
Много лет я и мои коллеги убеждали разработчиков, что чем быстрее сайт — тем лучше. Статья не о том. Я не собираюсь показывать вам статистику, насколько больше зарабатывают компании, которые оптимизируют сайт для производительности (а это так). Расслабьтесь, возьмите чашечку шоколада — мы вместе совершим путешествие во времени.

Настоящее время и воспринимаемое время

+72
Пишем для UEFI BIOS в Visual Studio. Часть 3 — русифицируем Front Page
19 мин
15KТуториал
+25
Go для больших данных
11 мин
14KПеревод

В этом посте мы расскажем об использовании библиотеки ускорения аналитики данных Intel Data Analytics Acceleration Library (Intel DAAL) с языком программирования Go для пакетной, интерактивной и распределенной обработки.
+8
Работа со смарт-контрактами через Ethereum RPC API
20 мин
29KТуториал

Всем привет. В этой статье мы рассмотрим основные приемы по публикации смарт-контрактов и взаимодействию с ними с использованием Ethereum RPC API. Обсуждаемые методы API позволяют решать такие задачи:
- Создание счёта.
- Создание корректного смарт-контракта.
- Получение информации со смарт-контракта.
- Изменение состояния смарт-контракта.
+22
Обзор GUI-интерфейсов для управления Docker-контейнерами
5 мин
182K
Работа с Docker в консоли — привычная для многих рутина. Тем не менее, бывают случаи, когда GUI-/веб-интерфейс может оказаться полезным даже для них. В статье представлен обзор наиболее заметных на сегодняшний день решений, авторы которых попытались предложить более удобные (или подходящие для каких-то случаев) интерфейсы для знакомства с Docker или даже обслуживания больших его инсталляций. Некоторые из проектов совсем молоды, а иные — наоборот, уже отмирают…
+39
9 минут на ICO: обзор альтернативы IPO для бизнеса
6 мин
6.5KRecovery Mode

Читайте оригинал статьи в Блоге DTI.
Сегодня рассмотрим способ привлечения первичного капитала для компании с использованием криптовалюты. У него довольно много преимуществ перед стандартным IPO: позволяет привлечь больше средств, затратив на это в 10+ раз меньше средств, чем при стандартной процедуре размещения акций на бирже. Называется данный способ краудсейлом, или ICO (Inicial Coin Offering).
+1
Опасность сбоев от отдельных ядерных частиц — миф или реальность?
13 мин
24KС 6 сентября 2017 года произошло 4 мощных вспышки на Солнце, одной из них был присвоен балл X9.3, что делает ее самой мощной за последние 12 лет. Ведущий научный сотрудник Пулковской обсерватории Георгий Гончаров посоветовал: «Если у вас есть возможность сегодня, завтра, послезавтра не летать на самолете, не плавать на подводной лодке, не садиться за руль — надо этим воспользоваться». Ему возразил главный научный сотрудник лаборатории «Рентгеновская астрономия Солнца» ФИАН Сергей Богачев: "… Это глупости. Дело в том, что жесткое излучение от вспышек полностью тормозится в атмосфере Земли. Воздух практически не пропускает рентгеновское излучение, и высота, до которой доходит излучение, вызванное вспышками на Солнце, — примерно 30 километров… На самолетах летать не опасно, а плавать на подводных лодках и подавно… Есть некоторые сообщения в истории, о правдивости которых не могу судить, о случаях выхода электросетей из строя. Безусловно, все это влияет и на беспроводную связь, на спутниковую связь и на связь, которая использует отражение ионосферы Земли, поскольку свойства ионосферы меняются при солнечных вспышках".
Может, и нет никакой опасности или, по крайней мере, эта опасность сильно преувеличена? Давайте разберёмся с тем, что касается отдельных ядерных частиц (ОЯЧ) — нейтронов и имеющих электрический заряд протонов и ядер атомов химических элементов. Надеюсь, что моя статья развеет как сомнения одних, так и паранойю других.
Может, и нет никакой опасности или, по крайней мере, эта опасность сильно преувеличена? Давайте разберёмся с тем, что касается отдельных ядерных частиц (ОЯЧ) — нейтронов и имеющих электрический заряд протонов и ядер атомов химических элементов. Надеюсь, что моя статья развеет как сомнения одних, так и паранойю других.
+42
Народная Политика конфиденциальности
9 мин
21KТуториал

По многочисленным просьбам
Решились на такой шаг, потому что данная форма Политики не предусматривает обработку персональных данных, и в результате не предполагает большой вариативности решения. Важно помнить, что она не подходит для сайтов, на которых обрабатываются ПДн. Например, интернет-магазины и прочие сервисы, на которых помимо номера телефона или email пользователем дополнительно предоставляются иные сведения о себе, требуют большего внимания к вопросам обработки персональных данных.
Поэтому мы подумали над вариантами составления «народной» Политики конфиденциальности с обработкой ПДн. Простым шаблоном здесь не обойдешься. Взяли за основу вышедшие в 2017 году Рекомендации Роскомнадзора (далее – «Рекомендации») по составлению документа, определяющего политику оператора в отношении обработки персональных данных (далее – «Политика). Дополнили ее живыми примерами.
Смотрим, что получилось.
+16
Погружение в CSS: метрики шрифтов, line-height и vertical-align
11 мин
45KПеревод

line-height
и vertical-align
— это простые свойства CSS. Настолько простые, что большинство из нас уверены, что понимают, как они работают и как их использовать. К сожалению, это не так — на самом деле они, пожалуй, являются самыми сложными свойствами, поскольку играют важную роль в создании малоизвестной особенности CSS под названием «строчный контекст форматирования» (inline formatting context).Например,
line-height
можно задать в виде длины или безразмерного значения, но его значение по умолчанию — normal
(стандартное). Хорошо, но что значит «стандартное»? Зачастую пишут, что это (как правило) 1, или, может быть, 1,2. Даже в спецификации CSS нет четкого ответа на данный вопрос.Нам известно, что безразмерное значение line-height зависит от значения
font-size
, но проблема в том, что font-size: 100px
выглядит по-разному для разных гарнитур. В связи с этим возникает вопрос: всегда ли line-height
будет одинаковым или может различаться? Действительно ли это значение находится в промежутке от 1 до 1,2? А как vertical-align
влияет на line-height
?Давайте углубимся в не самый простой механизм CSS…
+28
Переосмысление PID 1. Часть 4
13 мин
9.9KПеревод

Оглавление
Касательно Upstart
Прежде всего, позвольте мне подчеркнуть, что мне в действительности нравится код Upstart, он очень хорошо документирован и в нем легко ориентироваться. В общем на его примере должны учиться другие проекты (включая мой).
Я это сказал, но я не могу сказать, что в целом согласен с подходом используемом в Upstart. Но для начала, чуть больше об Upstart.
+13
Pygest #17. Релизы, статьи, интересные проекты из мира Python [29 августа 2017 — 11 сентября 2017]
2 мин
10K
Присылайте свои актуальные материалы, а также любые замечания и предложения, которые будут добавлены в ближайший дайджест.
А теперь к делу!
+17
Spring: ваш следующий Java микрофреймворк
6 мин
56KПеревод
В этой статье мы поговорим о новой концепции в готовящемся к выходу Spring Framework 5 которая называется функциональный веб-фреймворк и посмотрим, как она может помочь при разработке легковесных приложений и микросервисов.
+26
Как работает JS: о внутреннем устройстве V8 и оптимизации кода
11 мин
172KПеревод
[Советуем почитать] Другие 19 частей цикла
Часть 1: Обзор движка, механизмов времени выполнения, стека вызовов
Часть 2: О внутреннем устройстве V8 и оптимизации кода
Часть 3: Управление памятью, четыре вида утечек памяти и борьба с ними
Часть 4: Цикл событий, асинхронность и пять способов улучшения кода с помощью async / await
Часть 5: WebSocket и HTTP/2+SSE. Что выбрать?
Часть 6: Особенности и сфера применения WebAssembly
Часть 7: Веб-воркеры и пять сценариев их использования
Часть 8: Сервис-воркеры
Часть 9: Веб push-уведомления
Часть 10: Отслеживание изменений в DOM с помощью MutationObserver
Часть 11: Движки рендеринга веб-страниц и советы по оптимизации их производительности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 13: Анимация средствами CSS и JavaScript
Часть 14: Как работает JS: абстрактные синтаксические деревья, парсинг и его оптимизация
Часть 15: Как работает JS: классы и наследование, транспиляция в Babel и TypeScript
Часть 16: Как работает JS: системы хранения данных
Часть 17: Как работает JS: технология Shadow DOM и веб-компоненты
Часть 18: Как работает JS: WebRTC и механизмы P2P-коммуникаций
Часть 19: Как работает JS: пользовательские элементы
Часть 2: О внутреннем устройстве V8 и оптимизации кода
Часть 3: Управление памятью, четыре вида утечек памяти и борьба с ними
Часть 4: Цикл событий, асинхронность и пять способов улучшения кода с помощью async / await
Часть 5: WebSocket и HTTP/2+SSE. Что выбрать?
Часть 6: Особенности и сфера применения WebAssembly
Часть 7: Веб-воркеры и пять сценариев их использования
Часть 8: Сервис-воркеры
Часть 9: Веб push-уведомления
Часть 10: Отслеживание изменений в DOM с помощью MutationObserver
Часть 11: Движки рендеринга веб-страниц и советы по оптимизации их производительности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 13: Анимация средствами CSS и JavaScript
Часть 14: Как работает JS: абстрактные синтаксические деревья, парсинг и его оптимизация
Часть 15: Как работает JS: классы и наследование, транспиляция в Babel и TypeScript
Часть 16: Как работает JS: системы хранения данных
Часть 17: Как работает JS: технология Shadow DOM и веб-компоненты
Часть 18: Как работает JS: WebRTC и механизмы P2P-коммуникаций
Часть 19: Как работает JS: пользовательские элементы
Перед вами — второй материал из серии, посвящённой особенностям работы JavaScript на примере движка V8. В первом шла речь о механизмах времени выполнения V8 и о стеке вызовов. Сегодня мы углубимся в особенности V8, благодаря которым исходный код на JS превращается в исполняемую программу, и поделимся советами по оптимизации кода.

+34
36 материалов о нейросетях: книги, статьи и последние исследования
8 мин
119KЧто делать, если хочется побольше узнать про нейронные сети, методы распознавания образов, компьютерное зрение и глубокое обучение? Один из очевидных вариантов — подыскать для себя какие-либо курсы и начать активно изучать теорию и решать практические задачи. Однако на это придется выделить значительную часть личного времени. Есть другой способ — обратиться к «пассивному» источнику знаний: выбрать для себя литературу и погрузиться в тему, уделяя этому всего полчаса-час в день.
Поэтому, желая облегчить жизнь себе и читателям, мы сделали краткую подборку из книг, статей и текстов по направлению нейросетей и глубокого обучения, рекомендуемых к прочтению резидентами GitHub, Quora, Reddit и других платформ. В неё вошли материалы как для тех, кто только начинает знакомство с нейротехнологиями, так и для коллег, желающих расширить свои знания в этой области или просто подобрать «легкое чтение» на вечер.

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

+23
Информация
- В рейтинге
- 2 119-й
- Откуда
- Россия
- Зарегистрирован
- Активность