Архив за 18 апреля 2014 - 3

PHP расширение dom varimport: быстрое преобразования вложенных массивов в DOMDocumentНекоторые проекты используют XSLT в качестве основного «движка» шаблонов. Помимо известных недостатков XSLT (например, его многословности, относительной медлительности и т.д.) у него есть и преимущества: «стандартность» языка, его идеология отсутствия «побочных эффектов» и pattern matching, возможность при необходимости вызывать методы helper-классов из шаблонов (через exslt-расширение). Какое-то время назад я выкладывал библиотеку ShortXSLT, позволяющую вместо громоздких <xsl:value-of select="/root/abc"/> и <xsl:choose>...</xsl:choose> писать просто {/root/abc} и {if...}...{elseif}...{/if} без потери производительности, так что проблема многословности отчасти решается.

Но сейчас речь не о преимуществах и недостатках XSLT (я уверен, и противники, и сторонники этой технологии найдутся в изобилии). Я бы хотел описать один прием, который удобно применять в существующих проектах с XSLT-шаблонами, и привести ссылку на библиотеку, реализующую данный прием с хорошей производительностью.

Передаем данные в XSLT, минуя генерацию текстового представления XML

Представьте, что у нас есть контроллер, генерирующий некоторый вложенный PHP-список объектов для отображения на странице. Он должен этот массив преобразовать в XML, который потом пойдет на вход XSLT-шаблону. Хорошо бы, чтобы данное преобразование из структур PHP в XML выполнялось не вручную в каждом контроллере, а был некоторый промежуточный слой абстракции, который умеет применять XSLT-шаблон прямо к PHP-данным, минуя текстовое XML-представление. Так мы уменьшим вероятность ошибок, да и письмо сократится. Мы сможем работать с XSLT-шаблонами напрямую, минуя XML-представление данных.

Некоторое время назад я написал на Си PHP-расширение dom_varimport (также выложено на GitHub). Оно содержит одноименную функцию, на вход которой подается объект DOMDocument и PHP-массив любой вложенности. Функция заполняет переданный ей DOMDocument XML-представлением входного массива, и делает она это очень быстро — примерно в 20 раз быстрее, чем делал бы код, написанный на чистом PHP. Большой документ размером около 1 МБ с тысячами вложенных свойств и объектов формируется примерно за 1-2 миллисекунды.

Например, вызов:Читать полностью »

При проведении внутренних процедур контроля качества специалисты Nokia выявили проблемы с зарядным устройством AC-300, которое используется для зарядки планшетного компьютера Lumia 2520. Как отмечается, при определенных условиях пластиковая крышка сменной вилки может отделиться от насадки и оголить металлические контакты. В случае, если адаптер подключен к электросети, это может спровоцировать возникновения электротравм у пользователей. Как отмечается, проблемными оказались около 30 000 зарядок, 600 из которых было продано в США, а абсолютное большинство — в европейских странах.

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

За первые три месяца года AMD удалось получить доход в размере 1,40 млрд долларов, что на 12% меньше показателя предшествующего квартала, но на 28% больше показателя первого квартала 2013 года. Для сравнения: доход Intel за квартал сократился на 8%, а за год вырос на 1%.

Валовая прибыль AMD в первом квартале оказалась равна 35%, уменьшившись по сравнению с прошлогодним показателем, равным 41%.

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

Привет!

Сегодня у нас очередной день рождения, уже восьмой по счёту в этом тысячелетии.

С момента старта в 2006-м году и до текущего момента мы прошли огонь, воду и медные трубы, став по-настоящему большим проектом с огромной аудиторией и ежедневной посещаемостью более 1 млн посетителей в сутки. Большое спасибо, что принимаете участие в развитии проекта и наполняете Хабрахабр смыслом.

Хабрахабру — 8 лет

Продолжайте оставаться с нами и готовьте свои смартфоны – на следующей неделе мы зарелизим кое-что интересное.

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

Не так давно, я заинтересовался трудами идеологов программирования, таких как Кент Бэк, Роберт Мартин, Мартин Фаулер, Пол Дюваль.

Их книги произвели на меня впечатление и воодушивили попробовать некоторые описанные практики. Refactoring, TDD, XP, и, наконец, Continuous Integration, это то, что в последнее время интересует меня в процессе разработки программного обеспечения.

Хочу поделиться с хабросообществом тем, что я вынес из книг и с чем приходится сталкиваться в реальности.

Теория

Continuous Integration (далее CI) — это практика разработки программного обеспечения, в которой члены команды проводят интеграцию не реже чем раз в день. Результаты интеграции проверяются автоматически, используя автотесты и статический анализ кода.

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

Фактически, CI позволяет избавиться от предположений, при процессе разработки ПО. Менеджер предполагает, что продукт готов и стабилен, программист — что в коде нет ошибок и т. д. Избавиться от вопросов, таких как: «стабильна ли последняя сборка, какие фичи готовы, соответствует ли код стандартам компании» и т.д.

Всех, кому интересна тема CI прошу под кат.
Читать полностью »

В твиттере НАСА зачастую появляются очень красивые фотографии. Вот такая подборка получилась за последнее время.

Красота Вселенной в твитах НАСА

Вспышка на Солнце.

Красота Вселенной в твитах НАСА

Недавно открытая планета размером с Землю в подходящей для обитания зоне одной из звезд.

Красота Вселенной в твитах НАСА

Так выглядит из космоса свет, выделяемый при фотосинтезе растениями. Этот свет невидим для человеческого глаза.

Красота Вселенной в твитах НАСА

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

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

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

15 шаблонизаторов для фронтенд разработки
Число JS-библиотек ни в коей мере не уменьшается; наоборот, оно растёт с каждым днём. Когда мы доходим до приложений JS, лучшим выбором оказываются шаблоны, чем полноценные библиотеки, потому что это приводит к более чистому базовому коду и лучшему процессу работы с ними.

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

Привет!

BugHunt – это сервис публикации программ вознаграждения за найденные уязвимости. Мы помогаем различным организациям запустить собственные bug bounty программы и берём на себя всю рутину: разрабатываем условия программы, привлекаем к участию исследователей, обрабатываем отчёты и даём рекомендации по устранению дыр.
Получается почти как пентест, но дешевле, лучше, и платишь тут не за красивый отчёт, а за реальные дыры.
Читать полностью »

Компания Asus располагает новым вариантом планшета FonePad, основной изюминкой которого является возможность осуществлять звонки. Устройство под заводским номером K012 появилось в базе тестового пакета GFXBench, на сайте TENAA и уже доступно для заказа в некоторых интернет-магазинах Таиланда по цене около 85 евро.

Основное отличие от существующей модели FonePadЧитать полностью »


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