Июль 31

[Перевод] Как мы провели пару дней, работая над ускорением Perl

Это история о значительной оптимизации интерпретатора Perl, о борьбе со сложностями кода, и о том, как мы хотели «съесть торт так, чтобы он у нас остался» [английская поговорка «You can’t have your cake and eat it», означающая невозможность достижения двух противоположных целей].

На недавнем хакатоне Booking.com у нас появилась возможность поработать над ускорением функции размещения целых чисел в интерпретаторе Perl. В случае успеха это поможет ускорить практически все программы, которые работают в нашем проекте. Оказалось, что банальная реализация идеи могла бы сработать, но это привело бы к увеличению сложности поддержки кода. Наше исследование привело нас к тому, чтобы заставить препроцессор С улучшать качество кода, одновременно давая возможность ускорить выполнение программ.

Предыстория

В perlguts и PerlGuts Illustrated написано, что представление переменных в Perl обычно состоит из двух частей – заголовка и тела (представляемых как struct). Заголовок содержит необходимые для обработки переменных данные, которые не зависят от её типа, включая указатель на возможное тело.

image

Структура тела может сильно отличаться, в зависимости от типа переменной. Простейшая переменная — SvNULL, которая представляет undef и которой не требуется тело.

У строки (PV — “pointer value”) тело имеет тип XPV:

image

Структура тела PV отличается от тела PVNV. PVNV может содержать число с плавающей точкой и строковое представление того же значения.

image

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

Раздел: Без рубрики | Комментарии к записи [Перевод] Как мы провели пару дней, работая над ускорением Perl отключены
Июль 31

Xonix на Javascript с картинками

Xonix — популярная игра времен DOS, клон видеоигры Qix.

На Javascript Xonix уже был портирован несколько раз. Лучшая и наиболее приближенная к оригиналу из существующих реализаций на сегодняшний день, пожалуй, вот эта. Ее я поначалу пытался приспособить для своей реализации/модификации… Но, к сожалению, код даже после деобфускации так и не стал понятным (во всяком случае для меня). К тому же, насколько я смог понять, код там местами не совсем эффективен, либо вовсе устаревший. Так что пришлось все писать с нуля.

В результате у меня получился такой вот «свой» Xonix, с картинками и ответами.

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

Раздел: Без рубрики | Комментарии к записи Xonix на Javascript с картинками отключены
Июль 31

Корреляция, ковариация и девиация (часть 3)

В первой части мы рассказали о сути преобразования девиации и его применении к матрице квадратов расстояний. Во второй немного напустили туману на спектры простых геометрических наборов.

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

Раздел: Без рубрики | Комментарии к записи Корреляция, ковариация и девиация (часть 3) отключены
Июль 31

Дайджест: VR и AR

Если новости реального мира уже не кажутся такими увлекательными, стоит заглянуть в наш дайджест и узнать, какие события произошли в мире VR за минувший месяц.

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

Раздел: Без рубрики | Комментарии к записи Дайджест: VR и AR отключены
Июль 31

Линейка серверов HP ProLiant Gen9

Привет, Хабр! Сегодня мы хотели бы рассказать вам о младших представителях известной линейки серверов HP ProLiant, которые относятся к девятому поколению продуктов. Это надёжные «рабочие лошадки», которые предназначены для малого и среднего бизнеса. Серверы из модельного ряда Gen9 неплохо зарекомендовали себя для решения различных несложных задач, которым, как правило, сопутствует небольшой бюджет. Наследники бренда Compaq, они достойно держатся в сравнении с более мощными собратьями и с гордостью несут имя Hewlett Packard, столь хорошо известное в «серверном» мире.

image


Впрочем, довольно лирики. Встречайте героев нашего сегодняшнего материала: HP ProLiant DL60 и DL80 Gen9, предназначенные для размещения в стойке, и «две башни» на радость поклонникам толкиеновского «Властелина Колец»: HP ProLiant ML10 v2 и НР ProLiant ML110 Gen9. Первые три относятся к серии НР ProLiant 10, которая была добавлена в каталог серверов HP совсем недавно, в результате чего данные модели попросту не имеют предшественников из восьмого поколения. Что касается сервера НР ProLiant ML110 Gen9, это один из младших представителей «сотой» серии, который позиционируется компанией как «первый сервер» для тех компаний, где ранее использовались исключительно настольные компьютеры.
Читать дальше →

Раздел: Без рубрики | Комментарии к записи Линейка серверов HP ProLiant Gen9 отключены
Июль 31

[Из песочницы] «Бездумное» использование шрифтов

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

image

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

Раздел: Без рубрики | Комментарии к записи [Из песочницы] «Бездумное» использование шрифтов отключены
Июль 31

Современный интернет ушами незрячего – Теги article и section

Всем доброго времени суток. В этой статье с подачи одного из пользователей рассматриваются теги article и section, которые появились в HTML 5. Рассматривается их влияние на поведение экранных дикторов на веб-страницах. Читать дальше →

Раздел: Без рубрики | Комментарии к записи Современный интернет ушами незрячего – Теги article и section отключены
Июль 31

[Перевод] Гаджеты как источник постоянных отвлеканий

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

Мы постоянно просматриваем какие-то сообщения: в SMS, соцсетях, электронной почте, читаем новости, развлекательные публикации и т.д. Множество людей пытаются нам что-то сообщить, донести. А с повсеместным распространением умных часов ситуация только усложнится: как метко подметил техноблогер MG Siegler, «это устройство для привлечения внимания», и если смартфон ещё можно отложить подальше, то часы постоянно на руке, в поле зрения.

Есть два способа справиться с избытком всевозможных отвлекающих событий. Первый: объяснять, спорить, доказывать всем в своём круге общения, что постоянное переключение внимания вредит здоровью (так и есть, это делает нас глупее), а затем уехать на дачу, подальше от всех. И обнаружить, что и за городом теперь хороший мобильный интернет.
Читать дальше →

Раздел: Без рубрики | Комментарии к записи [Перевод] Гаджеты как источник постоянных отвлеканий отключены
Июль 31

Azure RMS. Возможности службы

Автор статьи — Михаил Войтко, технический директор Energy Time

Этой публикацией мы хотим начать цикл статей о новых облачных и зачастую малознакомых технологиях Microsoft. В этой статье я постараюсь кратко «без воды» рассказать о работе службы Azure RMS. Ниже вы узнаете:

  1. Зачем нужен Azure RMS.
  2. Пара слов о работе.
  3. Killer features, или важные отличия от конкурентов.
  4. «Вишенка на торте» — режим суперпользователя в PowerShell.
  5. Реальные примеры использования у заказчиков.

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

Раздел: Без рубрики | Комментарии к записи Azure RMS. Возможности службы отключены
Июль 31

А вы уже поменяли $Increment на $Sequence?

Если бы это была запись для твиттера, то она была бы следующей: «Используйте $Sequence вместо $Increment для генерации Id». Но тут Хабр, поэтому придётся развернуть мысль – добро пожаловать под кат.


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

Раздел: Без рубрики | Комментарии к записи А вы уже поменяли $Increment на $Sequence? отключены