Author Archives: bullgare

Оптимизация вывода длинного списка в браузере

Попросили оптимизировать вывод меню. Состоит оно из нескольких пунктов верхнего уровня, при нажатии на каждый открывается соответствующее подменю. В одном из подменю расположено более 30000(!) пунктов, и ожидается его дальнейшее увеличение.

Как не надо использовать promise

http://taoofcode.net/promise-anti-patterns/

Простой подход к реализации responsive design

Описано, как сделать сетку с использованием media queries. http://www.adamkaplan.me/grid/

Вывести элемент по центру другого

Без заранее не известной ширине и высоте. .element { position: relative; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); left: 50%; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); } Работает в ИЕ9+. JS Bin http://zerosixthree.se/vertical-align-anything-with-just-3-lines-of-css/

Git — сравнение одного файла в двух ветках

git diff —no-color —binary origin/master — .templates/ru/default/contacts-v2/messenger_message_form_options.tpl

AngularJS: особенности пробрасывания объектов в директиву

Есть у меня директива такого плана: <div my-selector initial-value=»{a: 1}»></div> Хотелось бы отслеживать изменения в директиве. Вот так она выглядит: directive(‘fbFieldObjectSelector’, [‘$rootScope’, function ($rootScope) { return { restrict: ‘A’, scope: { initialValue: ‘=’ }, template: ‘div’, link: function link($scope, $el, attrs) { … Самый простой способ: $scope.$watch(‘initialValue’, function (initialValue) { // @debug console.log(initialValue); $scope.selectProduct(initialValue); }); …

Read more

Обработчик кастомных событий на чистом js

Часто попадается на собеседованиях, сам спрашиваю;) Давно видел эту ссылку, а тут почему-то найти не могу. Вот решение от Nicholas C. Zakas:

Node.js: конвертация buffer в строку

Делал proxy на Node.js. Некоторые типы ответов сервера мне нужно было парсить и подменять небольшие кусочки. Создаю всё функцией function makeProxy(req, res, cb) { delete req.headers.host; delete req.headers[‘accept-encoding’]; // to prevent gzipping data on api server var options = { hostname: apiHost, port: 80, path: req.url, method: req.method, headers: req.headers }, proxy = http.request(options, cb …

Read more

Почему нельзя полагаться на тег script

Зашёл тут разговор про то, почему jQuery делает eval всего кода внутри всех тегов script. Связано это с тем, что при повторном исполнении скриптов они могут содержать ссылки на старые DOM-элементы, и поэтому могут отрабатывать некорректно. Ну и сложно управлять последовательностью повторного исполнения скриптов. http://stackoverflow.com/questions/3348739/force-re-eval-inline-and-included-javascript

Вопросники для тестов по javascript

http://madebyknight.com/javascript-scope/ http://javascript.ru/test http://asenbozhilov.com/articles/quiz.html http://www.nczonline.net/blog/2010/02/16/my-javascript-quiz/ http://perfectionkills.com/javascript-quiz/ http://dmitry.baranovskiy.com/post/91403200 http://dmitrysoshnikov.com/ecmascript/the-quiz/ http://james.padolsey.com/javascript/another-javascript-quiz/ http://www.techrepublic.com/blog/software-engineer/javascript-interview-questions-and-answers/