Category Archives: Programming
Как побороться с XSS на Node.js
Чтобы экранировать пользовательский ввод, достаточно использовать что-то вроде escape(input) — replace , & and » with HTML entities https://github.com/chriso/validator.js#sanitizers
Стандарт ECMAScript-5.1
http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf
Brunch — ещё одна система тасков на node.js
Аналог grunt, но вроде быстрее — http://brunch.io/compare.html. Надо бы попробовать.
Promise и AngularJS
http://youtu.be/XcRdO5QVlqE Слайды — http://christianlilley.wordpress.com/2014/01/17/slides-im-postal-for-promises-in-angular-delivered-at-ng-conf-2014/. Более развёрнутые слайды с другой его конференции — http://christianlilley.wordpress.com/2013/09/19/promises-promises-mastering-async-io-in-javascript-with-the-promise-pattern/.
Тонкости создания большого приложения на AngularJS
Разработчики из DoubleClick рассказывают об особенностях создания большого приложения на AngularJS http://youtu.be/62RvRQuMVyg Интересное: Авторизация — профиль пользователя лучше передавать с сервера и сделать внедряемую константу (хотя лично я храню всё в localStorage) Скрытие/отображение фич можно сделать по списку доступных фич текущего профиля. Наиболее эффективно распарсивать и вырезать куски шаблона на этапе загрузки через responseInterceptor — …
История создания AngularJS
Разговор о том, как, для чего и кем AngularJS создавался и создаётся. http://youtu.be/r1A1VR0ibIQ
Что такое AngularJS
Основы AngularJS за 20 минут. Для того, чтобы понять, что это такое, и самые простые вещи, которые можно сделать с его помощью. http://youtu.be/tnXO-i7944M
Конференция по AngularJS
16-17 января 2014 года в Солт-Лэйк-Сити (США) прошла конференция по AngularJS. Вот сайт конференции — http://ng-conf.org/ Вот видео с докладов — http://www.youtube.com/user/ngconfvideos Далее буду выкладывать видео докладов со своими комментариями
AngularJS: директива для вставки html выполнением всех скриптов
Допустим, мы получаем с сервера код вида
1 2 3 |
<script>alert(1234)</script><script type="text/javascript">alert(12345)</script> <script type="asdf">alert(1234)</script><script src="/js/alert.js">alert(1234)</script> <span style="color: red;">1234</span> |
и хотим его вывести в шаблоне. Для обычного вывода с парсингом html-тегов достаточно
1 |
<div ng-bind-html="ad.html | trustAsHtml"></div> |
Но, к примеру, jQuery умеет выполнять все скрипты, которые есть в строке ad.html. AngularJS такого из коробки не умеет. Поэтому была написана директива bind-html-with-js, используется она также:
1 |
<div ng-bind-html="ad.html | trustAsHtml"></div> |
При этом все скрипты, и …
Странный вывод странного кода
1 2 3 4 5 6 |
var x = 'outer'; (function() { var x = 'inner'; eval('console.log(x)'); (1,eval)('console.log(x)'); })(); |
выведет
1 2 |
inner outer |
Почему? Вкратце — судя по всему, eval работает с контекстом корректно только при прямом вызове. А если вызвать его ненапрямую, например
1 2 |
var ev = eval; ev('console.log(x)'); |
то и в этом случае контекст сбросится на глобальный. Тут есть попытки объяснения: http://stackoverflow.com/questions/19357978/indirect-eval-call-in-strict-mode http://stackoverflow.com/questions/9107240/1-evalthis-vs-evalthis-in-javascript