• Kinect — продвинутый датчик для роботов



      Такой замечательный девайс, как Kinect не мог не обратить на себя внимание различных самоделкиных. И через неделю после начала продаж протокол контроллера был взломан.

      Уже работает сайт openkinect.org и теперь Kinect можно попробовать использовать для различных инстралляций или в качестве продвинутого сенсора робота.
      Читать дальше →
    • Очевидные 3 правила безопасности

        Правило №1. Делайте все авторизационные куки HttpOnly


        Куки с флагом HttpOnly не видны браузерному коду, а отправляются только на сервер. На практике у вас почти никогда нет необходимости получать их содержимое со стороны клиента (если такая необходимость почему-то у вас возникла — пересмотрите архитектуру авторизации, скорее всего, там что-то не так). А вот злоумышленнику, нашедшему XSS — а XSS так или иначе когда-нибудь где-нибудь найдется — отсутствие HttpOnly на авторизационных куках доставит много радости.

        Читать дальше →
      • [Перевод] Современный веб-разработчик, или 6 вещей, которые вы должны знать, чтобы выжить

        Это статья об изменениях, которые произошли в мире веб-разработки. Я наблюдаю огромное количество веб-разработчиков, которые буквально застряли в устаревших технологиях, особенно в мире .NET. Если вы еще не начали совершенствовать свои навыки, и адаптироваться к изменяющимся трендам, вы должны начинать уже сегодня.
        Читать дальше →
      • Подборка инструментов для фронт-энд разработки

        • Перевод
        Как разработчику, мне очень нравятся инструменты, которые помогают сэкономить время или упростить процесс разработки фронт-энда. В этой статье я собрал мои любимые веб-инструменты для упрощения разработки веб-интерфейсов.

        Картинки кликабельны.

        Form builder


        Формы являются очень важной частью любого веб-сайта, но их верстка может занять продолжительное время. Этот очень удобный инструмент, поможет вам создать красивую веб-форму очень быстро.
        image
        Читать дальше →
      • Загрузка файлов на сервер в 2012 году

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

          Я работаю в Почте Mail.Ru, и моей прямой обязанностью является работа с JavaScript во всех его проявлениях. Прикрепление файлов к письму — одна из основных функций любой почты. Мы тут не исключение: у нас уже был Flash-загрузчик, который вполне исправно работал и долгое время нас устраивал. Однако у него был ряд недостатков. Вся верстка, графика, бизнес-логика, и даже локализация были зашиты в нем, в результате чего решение было громоздким, а внести правки мог только Flash-разработчик. В какой-то момент мы поняли, что нам необходим новый механизм. О том, как его создать, пойдет речь в этой статье.

          Читать дальше →
        • Нечёткий поиск в тексте и словаре

            Введение


            Алгоритмы нечеткого поиска (также известного как поиск по сходству или fuzzy string search) являются основой систем проверки орфографии и полноценных поисковых систем вроде Google или Yandex. Например, такие алгоритмы используются для функций наподобие «Возможно вы имели в виду …» в тех же поисковых системах.

            В этой обзорной статье я рассмотрю следующие понятия, методы и алгоритмы:
            • Расстояние Левенштейна
            • Расстояние Дамерау-Левенштейна
            • Алгоритм Bitap с модификациями от Wu и Manber
            • Алгоритм расширения выборки
            • Метод N-грамм
            • Хеширование по сигнатуре
            • BK-деревья
            А также проведу сравнительное тестирование качества и производительности алгоритмов.
            Читать дальше →
          • Фильтрация ложных соответствий между изображениями при помощи динамического графа соответствий


              Многие современные алгоритмы компьютерного зрения строятся на основе детектирования и сопоставления особых точек визуальных образов. По этой теме было написано немало статей на хабре(например SURF, SIFT). Но в большинстве работ не уделяется должного вниманию такому важному этапу, как фильтрация ложных соответствий между изображениями. Чаще всего для этих целей применяют RANSAC-метод и на этом останавливаются. Но это не единственный подход для решения данной задачи.
              Данная статья посвящена одному из альтернативных способов фильтрации ложных соответствий.
              Читать дальше →
            • Обёртки для создания классов: зло или добро?

                Раз за разом я читаю, что удобные библиотеки для создания классов на Javascript, видите ли, не соответствуют идеологии языка и тем, кто их использует просто необходимо учить язык. Такое говорят невежды, которые и сами толком не разобрались ни в самом языке ни в библиотеках, которые они критикуют. И так часто говорят, что я решил написать этот топик и просто давать ссылку
                var Foo = new Class({
                	Extends: Bar,
                	initialize: function(firstname, lastname) {
                		this.parent(firstname);
                		this.lastname = lastname;
                	},
                	sayHello: function(){
                		alert(this.lastname || this.firstname);
                	}
                });
                

                Читать дальше →
              • Ещё семь фич HTML5, о которых вы могли не знать

                • Tutorial
                Доброго времени суток!

                Все мы достаточно наслышаны об HTML5 и его возможностях. Например, элементы audio и video, которые у всех на слуху. Но несмотря на это, существует парочка тегов, о которых знают далеко не все, и о которых не знал я до недавнего времени. Итак, вот чем я хочу с вами поделиться.
                Читать дальше →
                • +139
                • 86,1k
                • 96
              • Понимание ООП в JavaScript [Часть 1]

                • Перевод
                • Tutorial
                — Прототипное наследование — это прекрасно
                JavaScript — это объектно-ориентированный (ОО) язык, уходящий корнями в язык Self, несмотря на то, что внешне он выглядит как Java. Это обстоятельство делает язык действительно мощным благодаря некоторым приятным особенностям.

                Одна из таких особенностей — это реализация прототипного наследования. Этот простой концепт является гибким и мощным. Он позволяет сделать наследование и поведение сущностями первого класса, также как и функции являются объектами первого класса в функциональных языках (включая JavaScript).

                К счастью, в ECMAScript 5 появилось множество вещей, которые позволили поставить язык на правильный путь (некоторые из них раскрыты в этой статье). Также будет рассказано о недостатках дизайна JavaScript и будет произведено небольшое сравнение с классической моделью прототипного ОО (включая его достоинства и недостатки).
                Читать дальше →
              • Подключение проекта ASP.NET MVC к проекту ASP.NET WebForms

                Зачем это может понадобится? Допустим у нас есть большое приложение ASP.NET WebForms и есть проект написанный на ASP.NET MVC и мы хотим их объеденить.

                Допустим адрес нашего сайта такой: www.my-awesome-site.com и мы хотим чтобы MVC был доступен по адресу www.my-awesome-site.com/mvc-stuff

                Предусловия: у нас есть решение с двумя проектами — ASP.NET Web Application (WebFormsApplication) и ASP.NET MVC проект (MvcApplication).

                Что нужно сделать.
                1. Установить ASP.NET MVC для WebFormsApplication
                2. Добавить ссылку в WebFormsApplication на MvcApplication
                3. Добавить публичный метод в MvcApplication аналогичный Application_Start
                4. Вызвать этот метод в Application_Start приложения WebFormsApplication
                5. С помощью Razor Generator включить Views в сборку MvcApplication
                4.…
                5. Profit!!!

                Подробный туториал
                • +13
                • 8,2k
                • 3
              • Привязка контекста (this) к функции в javascript и частичное применение функций

                • Tutorial
                В предыдущем посте я описал, что this в javascript не привязывается к объекту, а зависит от контекста вызова. На практике же часто возникает необходимость в том, чтобы this внутри функции всегда ссылался на конкретный объект.
                В данной статье мы рассмотрим два подхода для решения данной задачи.
                1. jQuery.proxy — подход с использованием популярной библиотеки jQuery
                2. Function.prototype.bind — подход, добавленный в JavaScript 1.8.5. Рассмотрим также его применение для карринга (частичного применения функции) и некоторые тонкости работы, о которых знают единицы.

                Читать дальше →
              • Многопоточный загрузчик файлов на JS (jQuery)

                Доброго времени суток, коллеги. В этой статье я опишу опыт создание многопоточного загрузчика файлов (с ограниченной нагрузкой на сервер) на JS (jQuery).

                Совсем недавно у меня появилась задача (опытом решения которой я и хочу с вами поделится): сделать, в админке, возможность выбирать и загружать более одного файла за один раз. Задание вроде тривиальное и не сложное, но в итоге мое решение показалось мне довольно таки интересным, так как не было найдено аналогов.
                Читать дальше →
              • Ключевое слово this в javascript — учимся определять контекст на практике

                • Tutorial
                По просьбам некоторых читателей решил написать топик про контекст в javascript. Новички javascript часто не понимают значение ключевого слова this в javascript. Данный топик будет интересен не только новичкам, а также тем, кто просто хочет освежить данный аспект в памяти. Посмотрите пример ниже. Если вы затрудняетесь ответить на вопрос «что будет выведено в логе» хотя бы в одном из пунктов или хотите просто посмотреть ответы — добро пожаловать под кат.

                var f = function() {
                    this.x = 5;
                    (function() {
                        this.x = 3;
                    })();
                    console.log(this.x);
                };
                
                var obj = {x: 4, m: function() {
                    console.log(this.x);
                }};
                
                
                f();
                new f();
                obj.m();
                new obj.m();
                f.call(f);
                obj.m.call(f);
                

                Читать дальше →
              • Лексическая область видимости функций в JavaScript

                  Почитав недавние посты для новичков JavaScript, решил написать небольшой топик про один интересный вопрос, которого ни один из авторов пока не касался, а именно, вопрос про область видимости функций в JavaScript.
                  Читать дальше →
                • Перегрузка и наследование

                    Существует определенный набор возможностей в любом языке программирования для понимания которых нужно просто знать, как они реализованы. Вот, например, замыкания; это не сверх сложная концепция, но знание того, как этот зверь устроен позволяет делать определенные выводы относительно поведения замыканий с переменными цикла. Тоже самое касается вызова виртуальных методов в конструкторе базового класса: здесь нет одного правильного решения и нужно просто знать, что именно решили разработчики языка и будет ли вызываться метод наследника (как в Java или C#), или же «полиморфное» поведение в конструкторе не работает и будет вызываться метод базового класса (как в С++).

                    Еще одним типом проблемы у которой нет идеального решения, является совмещение перегрузки методов (overloading) и переопределения (overriding) метода. Давайте рассмотрим следующий пример на языке C#. Предположим, у нас есть пара классов, Base и Derived, с виртуальным методом Foo(int) и невиртуальным методом Foo(object) в классе Derived:

                    Читать дальше →
                  • Семь смертных грехов программиста на T-SQL

                    • Перевод
                    Недостаточно писать код хорошо читаемым: он также должен быстро выполняться.

                    Существует три базовых правила для написания такого T-SQL кода, который будет работать хорошо. Они кумулятивные – выполнение всех этих правил окажет положительное влияние на код. Пропуск или изменение любого из них – скорее всего приведет к отрицательному влиянию на производительность вашего кода.

                    • Пишите, исходя из структуры хранения данных: если вы храните данные типа datetime, используйте именно datetime, а не varchar или что-нибудь еще.
                    • Пишите, исходя из наличия индексов: если на таблице построены индексы, и они должны там быть, пишите код так, чтобы он мог использовать все преимущества, предоставляемые этими индексами. Убедитесь, что кластерный индекс, а для каждой таблицы он может быть только один, используется наиболее эффективным образом.
                    • Пишите так, чтобы помочь оптимизатору запросов: оптимизатор запросов – восхитительная часть СУБД. К сожалению, вы можете сильно затруднить ему работу, написав запрос, который ему «тяжело» будет разбирать, например, содержащий вложенные представления – когда одно представление получает данные из другого, а то из третьего – и так далее. Потратьте свое время для того, чтобы понять как работает оптимизатор и писать запросы таким образом, чтобы он мог вам помочь, а не навредить.

                    Существует несколько типичных ошибок, которые люди допускают в своем коде на T-SQL – не совершайте их.
                    Читать дальше →
                  • Велосипеды на Javascript и jQuery

                    В очередной раз открыв код коллег и ужаснувшись, я решил написать эту статью. Надеюсь для кого-нибудь это будет полезным, заодно и мне будет проще новичкам объяснять что у них в коде не так, просто кинув ссылку на эту статью.
                    Безусловно количество таких вещей очень и очень велико, поэтому в статье ограничусь лишь некоторыми.
                    Читать дальше →
                  • AngularJS — фреймворк для динамических веб-приложений от Google

                      AngularJS создан для тех разработчиков, которые считают, что декларативный стиль лучше подходит для создания UI, а императивный — для написания бизнес-логики.

                      Дзен Angular


                      • Хорошо отделять манипуляцию DOM-ом от логики работы приложения. Это существенно улучшает тестируемость кода.
                      • Хорошо считать, что автоматизированное тестирование приложения настолько же важно, насколько и написание самого приложения. Тестируемость очень сильно зависит от того, как структурирован код.
                      • Хорошо отделять разработку клиентской части от серверной. Это позволяет вести разработку параллельно и улучшает повторное использование на обеих сторонах.
                      • Хорошо, когда фреймворк ведет разработчика по всему циклу разработки приложения: от проектирования UI через написание бизнес-логики к тестированию.
                      • Хорошо, когда распространенные задачи становятся тривиальными, а сложные — упрощаются.


                      AngularJS представляет собой комплексный фреймворк. В стандартной поставке он предоставляет следующие возможности:
                      • Все, что вам нужно для создания CRUD-приложений: data-binding, базовые директивы для шаблонов, валидация форм, роутинг, deep linking, повторное использование компонентов, dependency injection, инструменты для взаимодействия с серверными (RESTful) источниками данных.
                      • Все, что вам нужно для тестирования: средства для модульного тестирование, end-to-end тестирования, mock-и.
                      • Шаблон типового приложения, включающего в себя структуру каталогов и тестовые скрипты.


                      AngularJS разрабатывается сотрудниками Google и используется, как минимум, в одном сервисе Google — DoubleClick.

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