Совершенный код → Шпионские страсти и PHP или паттерн SecureContainer
Не слишком вдаваясь в подробности хочу поделиться шаблоном проектирования, который использую в своей работе. Этот шаблон я называю SecureContainer, представим себе ситуацию: у нас есть некие данные, которые при передаче от одного объекта до другого, должны оставаться неизменными, допустим мы передаем внутри кода данные которые не должны увидеть или модифицировать другие разработчики, по причине того что эти данные сверхсеретны, в общем ситуация полнейшей паранойи. Так как же обеспечить неизменность данных при передаче от одного объекта другому?
Для этого и применяется паттерн SecureContainer, который позволяет валидировать не только отправителя, но и получателя данных, на пхп это легко делается через
Для этого и применяется паттерн SecureContainer, который позволяет валидировать не только отправителя, но и получателя данных, на пхп это легко делается через
debug_backtrace. Все что нам нужно — проследить откуда был вызван конструктор и кем были запрошены данные, при этом как отправителей, так и получателей может быть несколько. Давайте реализуем то о чем я сейчас говорил:JavaScript → Оптимизация JavaScript: Scope, Low level ES vs ES5 Array methods
Сегодня мы будем тестировать 2 блока кода, выполняющие следующую операцию:
Дается массив, необходимо выбрать все элементы, степень 2 которых больше 5.
В синем углу Вариант А: Низкоуровневый код — старый и страшный (поддающийся частичной оптимизации)
В красном углу Вариант Б: Высокоуровневый код — молодой и красивый (не поддающийся частичной оптимизации)
Битвы будут происходить на 3 аренах.
1. AO args — Параметры объекта активации функции.
2. AO — Локальные переменные объекта активации функции.
3. Global — Глобальные переменные.
Дается массив, необходимо выбрать все элементы, степень 2 которых больше 5.
В синем углу Вариант А: Низкоуровневый код — старый и страшный (поддающийся частичной оптимизации)
- for (i = 0, res = []; i < c; i++) {
- t = a[i];
- if (t >= 2.236067) {
- continue;
- } else {
- res.push(t * t);
- }
- }
В красном углу Вариант Б: Высокоуровневый код — молодой и красивый (не поддающийся частичной оптимизации)
- a.map(function (t) { return t * t}).filter(function (t) { return t > 5});
Битвы будут происходить на 3 аренах.
1. AO args — Параметры объекта активации функции.
2. AO — Локальные переменные объекта активации функции.
3. Global — Глобальные переменные.
JavaScript → Правильный захват контекста в Javascript
Довольно часто во многих статьях я вижу, как люди захватывают контекст this для использования в анонимной функции и удивляюсь — то, что уже стало стандартом — просто ужасная практика, которая противоречит всем канонам программирования. Вам знакома такая запись?var self = this;Может вам тоже стоит переосмыслить этот аспект?
JavaScript → Область видимости переменной в Javascript (ликбез)
Для меня одним из самых проблемных мест Javascript было управление переменными. Излагаю простым русским языком.
Opera → Спецификации протокола Scope
Ни разу до этого не писал переводы, если есть замечания, пожалуйста, в хабрапочту.
Сегодня мы рады представить спецификации протокола Scope. Этот протокол используется для связи Оперы с отладчиком Dragonfly. Он также используется в компании Опера для автоматизированного тестирования браузера.
Сегодня мы рады представить спецификации протокола Scope. Этот протокол используется для связи Оперы с отладчиком Dragonfly. Он также используется в компании Опера для автоматизированного тестирования браузера.
Веб-разработка → Практический HTML: работаем с таблицами
Примечание: ниже находится перевод статьи «Bring on the tables», в которой рассматривается использование таблиц по прямому назначению и некоторые методы по увеличению их доступности.
UPD: текст статьи полностью убран в связи с его неконтролируемыми преобразованиями с момента публикации.
UPD: текст статьи полностью убран в связи с его неконтролируемыми преобразованиями с момента публикации.