• Учимся проектировать на основе предметной области (DDD: Domain Driven Design)

      1. Введение



      В данной статье я хотел бы рассказать об этих трёх буквах, постоянно находящихся на слуху, но для многих являющихся тайной за семью печатями, а так же привести ряд ресурсов, с которыми неплохо было бы познакомиться при желании продолжить развитие в проектировании на основе предметной области (DDD: Domain Driven Design).
      Читать дальше →
    • Обработка custom-жестов для Leap Motion. Часть 1

      Всем привет!

      На время праздников мне в руки попал сенсор Leap Motion. Довольно давно хотел поработать с ним, но основная работа и бесполезное времяпрепровождение сессия не позволяли.

      Когда-то, лет 10 назад, когда я был школьником и ничем не занимался, я покупал журнал «Игромания», в комплекте с которым поставлялся диск с всякими игровыми интересностями и shareware-софтом. И в этом журнале была рубрика о полезном софте. Одной из программ оказалась Symbol Commander — утилита, позволяющая записывать движения мышью, распознавать записанные движения и при распознавании выполнять действия, назначенные на это движения.

      Сейчас, при развитии бесконтактных сенсоров (Leap Motion, Microsoft Kinect, PrimeSence Carmine) возникла идея повторить подобный функционал для одного из них. Выбор пал на Leap Motion.
      Читать дальше →
      • +14
      • 7,2k
      • 4
    • Бинарные операции над неупорядоченными множествами

      В данной публикации я проведу алгоритмизацию операций над массивами, а так же расскажу о самих операциях.

      Содержание


      • I. Пересечение массивов
      • II. Разность массивов
      • III. Объединение массивов
      • IV. Симметрическая разность массивов
      • Заключение

      Читать дальше →
      • +6
      • 21,8k
      • 7
    • Учим программистов учить рекрутеров нанимать программистов

        Неожиданный ажиотаж вызвала статья на тему рекрутинга на хабре, которую я как-то неделю назад репостнула в своем фэйсике. Уже на следующий день френдлента, в которой, впрочем, дофига рекрутеров и эйчаров, ломилась от репостиков со статьей и репостиков-репостиков статьи. Если честно, такой аншлаг немного удивляет, потому что на тему «учить рекрутеров» чему бы то ни было написано уже дофига и трошки всяческих постов, статей, тренингов и книг, да и описанные на хабре приемы не новы. А некоторые так даже и спорны. И вот, собственно, поспорить и просится моя душенька. И кстати, поспорить не только потому, что я нахожусь по другую сторону баррикад, т.е. эти тупые письма-описания вакансий рассылаю, нет. Кстати, я рассылаю умные письма. Поспорить еще и потому, что мне тоже часто приходят письма-предложения о работе, и я тоже немного могу уже рассуждать, какие предложения возбуждают, а какие даже не оседают в памяти.
        Читать дальше →
      • веб сайт (рассказ)

          иллюстрация
          давным давно, в очень далёкой галактике…*
          *ой, кажется, это уже где-то было…


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

          – В-владимир, – слегка заикаясь представился клиент. – В-вы тут с-сайты р-раз-рабатываете?

          Похоже, на этот раз с заказчиком повезло: ему можно будет выгодно продать любой продукт. Подождав пару секунд, чтобы подчеркнуть свои весомость и профессионализм, я утвердительно кивнул:

          – Ну да, я. Александр. Чем-то могу быть полезным?
          Читать дальше →
        • Советы для покупателей ПК осенью 1995-го

            Любопытно взглянуть в прошлое и сравнить, как изменились компьютеры. Например, вот статья за 30 октября 1995 года (скан), автор которой даёт пользователям советы по поводу комплектующих. Он отмечает, что буквально за пару лет цены сильно упали — и сейчас самое время для покупки: «Ещё в 1993 году мы видели рекламу модемов на 9600 бод всего лишь за $500, а Dell предлагал топовую модель с 486-м процессором 66 МГц, 8 МБ памяти и 320 МБ жёстким диском за $4400. Односкоростные приводы CD-ROM продавались за $600. Сегодня, если вы хотите купить такое оборудование, то оно будет стоить уже на 10-25% меньше, чем два года назад!», — радуется автор статьи. Произошли изменения и в типичной конфигурации среднего ПК.

            Память (RAM). Похоже, большинство производителей приняли стандарт 8 мегабайт, по сравнению с 4 мегабайтами в 1994 году. Не покупайте меньше восьми. Разница в производительности между компьютером с восемью мегабайтами памяти и четырьмя может быть радикальной.
            Читать дальше →
          • Игровая приставка на базе Android. Подробный мануал

              Не так давно один мой знакомый, приобретя себе китайскую консоль (инфо и инфо) на Android 4.0 и установив эмулятор PS1, не мог не поделиться со мной таким «счастьем». Такая возможность использовать свое Android устройство сильно заинтересовала и я решил не только испытать все прелести эмулятора на своем смартфоне, но и пойти немного дальше…

              Проблемы и трудности, с которыми я столкнулся, а также подробное иллюстрированное руководство по настройке эмулятора, смартфона и подключению к нему геймпада под катом.
              Читать дальше →
            • Отличная идея для стартапа? Хм… Вряд ли

                Это вольный перевод-пересказ этой статьи 2006 года, на которую я наткнулся около mailinator.com, за авторством Paul Tyma. Упоминаний на хабре не нашел, да будет перевод!

                Итак, у вас есть отличная идея.


                За годы работы я запустил небольшую кучку проектов и создал несколько компаний. Например Mailinator, Preemptive Solutions, Inc., и Classhat. На самом деле я наделал их гораздо, гораздо больше, но про большинство слышала разве что моя бабушка. Всё потому, что преимущественно это были глупые идеи, неудачные попытки что то сделать, или чересчур масштабные начинания, чтобы я мог довести их до релиза. Поучившись на своих ошибках, я теперь каждую новую идею проверяю на соответствие определённому набору правил, чтобы отсеять хорошие идеи от плохих. Ну или тех, которые мне кажутся таковыми.
                Не забывайте, эти правила для канонічного стартапа — когда из сотрудников только вы и ваш друг, а денег — на пиво и чипсы. Если у вас в загашнике завалялись лишние пару миллионов — вы можете творить магию и без этих советов.

                Что же там пишет Paul о стартапах?
              • Если бы плотников нанимали так же, как программистов

                • Перевод

                Интервьюер: Итак, вы считаете себя плотником?
                Плотник: Всё верно. Это именно то, чем я занимаюсь.

                Интервьюер: Как долго вы занимаетесь этим?
                Плотник: Десять лет.

                Интервьюер: Очень хорошо. А теперь я бы хотел задать вам несколько технических вопросов, чтобы оценить, насколько вы впишетесь в нашу команду. Договорились?
                Плотник: Конечно, было бы неплохо.

                Интервьюер: Должен вам сказать, что мы работаем в подразделении, занимающимся постройкой большого количества коричневых домов. Доводилось ли вам строить множество коричневых домов?
                Плотник: Ну, я же плотник — я строю дома, а люди уже красят их так, как пожелают.

                Интервьюер: Да, я понимаю, но не могли бы вы подсказать мне, сколько у вас опыта именно с коричневыми? Ну, плюс-минус.
                Плотник: Я действительно понятия не имею. С того момента, как дом построен, меня не волнует, в какой цвет его покрасят. Может, шесть месяцев?
                Читать дальше →
              • Жизнь разработчика (в картинках)

                  Взято отсюда специально для хабра. Возможно, в некоторых из ситуаций вы узнаете себя.

                  Когда я показываю босу, что окончательно пофиксил баг



                  Когда проджект-менеджер входит в офис



                  Читать дальше →
                • Программируем квадрокоптер на Arduino (часть 1)



                    Здравствуйте, хаброжители!
                    В этой серии статей мы с вами приоткроем крышку квадрокоптера чуть больше, чем этого требует хобби, а также напишем, настроим и запустим в воздух собственную программу для полетного контроллера, которым будет являться обычная плата Arduino Mega 2560.

                    У нас впереди:
                    1. Базовые понятия (для начинающих коптероводов).
                    2. PID-регуляторы с интерактивной web-демонстрацией работы на виртуальном квадрокоптере.
                    3. Собственно программа для Arduino и настроечная программа на Qt.
                    4. Опасные тесты квадрокоптера на веревке. Первые полёты.
                    5. Крушение и потеря в поле. Автоматический поиск с воздуха средствами Qt и OpenCV.
                    6. Окончательные успешные тесты. Подведение итогов. Куда дальше?

                    Материал объемный, но постараюсь уложиться в 2-3 статьи.
                    Сегодня нас ожидает: спойлер с видео, как наш квадрокоптер полетел; базовые понятия; PID-регуляторы и практика подбора их коэффициентов.
                    Читать дальше →
                  • Собственный движок WebGL. Статья №1. Холст

                    Через серию статей попробую разобрать движок на webgl.

                    Основным требованием будет минимальный ввод данных. Ведь, грубо говоря, движок — это модель, созданная для упрощения задачи. Материал рассчитан на начинающий уровень, для тех, кто прочитал основы webgl и хочет попробовать начать работать. Таких как я.

                    Первое. Описание задачи на пальцах

                    Необходимо создать классы объектов (примитивы), которые из себя представляют набор точек. При этом примитивы должны быть независимы друг от друга. Каждый примитив можно перемещать, поворачивать вокруг центра или вокруг произвольной точки.
                    Необходимо создать механизм обрисовки этих объектов.
                    И напоследок необходимо создать что то вроде карты на которой можно установить наши объекты и по которой можно свободно перемещаться.

                    Читать дальше →
                  • AngularJS — разделение приложения на модули и загрузка компонентов с помощью RequireJS

                    Использование AngularJS в паре с RequireJS — достаточно популярный подход к разработке веб приложений в последнее время. И один из основных вопросов — структура приложения. Существует достаточно известный seed для такого приложения tnajdek/angular-requirejs-seed, но мне это не походит, так как при увеличении функционала приложения — данная структура просто будет засоряться кучей файлов, не будет никакого логического разделения скриптов и достаточно сложно будет их менеджить.

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

                      Привет, Хабра!
                      При разработке игр на JavaScript часто возникает необходимость создавать множество объектов. О том, как правильно это сделать и не утонуть в коде, я рассказывал, примерно — месяц назад на Frontend Dev Conf в Минске. Возможно, доклад будет интересен тем, кто не был на конференции и сталкивался с проблемой создания множества объектов, либо является разработчиком HTML5 игр.



                      Под катом текст с картинками.
                      Читать дальше →
                      • +29
                      • 19,2k
                      • 9
                    • Замыкания в Javascript [Часть 1]

                      Перевод статьи Ричарда Корнфорда Javascript Closures.

                      • Введение
                      • Разрешение имен свойств объектов
                        • Присваивание значений
                        • Чтение значений

                      • Разрешение имен идентификаторов, контексты исполнения и цепь областей видимости
                        • Контекст исполнения
                        • Цепь областей видимости и свойство [[scope]]
                        • Разрешение имен идентификаторов

                      • ...

                      Введение


                      Замыкание
                      Замыкание — это выражение (обычно функция), которое может иметь свободные переменные, вместе со средой, которая привязывает эти переменные (т.е. “замыкает” это выражение).

                      Замыкания относятся к наиболее мощным особенностям ECMAScript (javascript), но они не могут быть применены должным образом без понимания. Несмотря на то, что их легко создать, даже случайно, их создание может иметь пагубные последствия, в частности, в некоторых относительно распространенных окружениях браузеров. Чтобы избежать случайных столкновений с недостатками и использовать преимущества замыканий, необходимо понимать их механизм. Это сильно зависит от роли цепи областей видимости в разрешении имен идентификаторов (identifier resolution) и от разрешения имен свойств в объектах.

                      Самое простое объяснение замыкания в том, что ECMAScript допускает вложенные функции, определения функций и функции-выражения (function expressions) внутри тел других функций. И эти вложенные функции имеют доступ ко всем локальным переменным, параметрам и функциям, находящихся внутри их внешней функции (внешних функций). Замыкание образуется, когда одна из этих вложенных функций становится доступной вне той функции, в которую она была включена, таким образом, она может быть выполнена после завершения внешней функции. В этот момент она все еще имеет доступ к локальным переменным, параметрам и внутренним декларациям функций (function declarations) своей внешней функции. Эти локальные переменные, параметры и декларации функций (изначально) имеют те же значения, которые были во время завершения внешней функции и могут взаимодействовать с внутренней функцией.

                      К сожалению, правильное понимание замыканий требует понимания механизмов, которые стоят за ними, и немало технических подробностей. Хотя некоторые из алгоритмов, определенных в ECMA 262, затронуты в начале последующего объяснения, большинство не могут быть опущены или просто приведены к упрощенному виду. Если вы знакомы с разрешением имен свойств объектов, то можете пропустить этот раздел, но только люди, уже знакомые с замыканиями, могут позволить себе пропустить последующие разделы и прямо сейчас перестать читать и вернуться к их использованию.
                      Читать дальше →
                    • Обработка ошибок в Node.js

                      • Перевод
                      • Tutorial


                      Пост содержит перевод статьи «Error Handling in Node.js», которую подготовили сотрудники компании Joyent. Статья была опубликована 28 марта 2014 года на сайте компании. Dave Pacheco поясняет, что статья призвана устранить неурядицу среди разработчиков, касаемо лучших практик работы с ошибками в Node.js, а так же ответить на вопросы, которые часто возникают у начинающих разработчиков.
                      Читать дальше →
                    • Не заставляйте (не)равенства в JavaScript выглядеть хуже, чем они есть

                      • Перевод
                      Время от времени я встречаю публикации, где рассказывается о том, какие из значений оператора == эквивалентны (как, например, здесь). Часто при этом оговаривается, что приведённые в таблице данные не очень хорошо организованы.

                      Я согласен, такие таблицы нужны, чтобы лучше ориентироваться в несовершенствах оператора… вот только несовершенства в организации данных в самих таких таблицах, на мой взгляд ещё больше усложняют ситуацию. Вот, к примеру, таблица из ссылки, приведённой выше:



                      Кошмар, товарищи!.. Как по мне, так здесь бóльший беспорядок в очерёдности строк/столбцов.
                      Читать дальше →
                    • CPU Load: когда начинать волноваться?

                      Данная заметка является переводом статьи из блога компании Scout. В статье дается простое и наглядное объяснение такого понятия, как load average. Статья ориентирована на начинающих Linux-администраторов, но, возможно, будет полезна и более опытным админам. Заинтересовавшимся добро пожаловать под кат.
                      Читать дальше →
                    • Верстка для самых маленьких. Верстаем страницу по БЭМу

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

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

                      • BEM
                      • Собственно пример — как сверстать страницу

                      Читать дальше →
                    • Ликбез по типизации в языках программирования

                      image

                      Эта статья содержит необходимый минимум тех вещей, которые просто необходимо знать о типизации, чтобы не называть динамическую типизацию злом, Lisp — бестиповым языком, а C — языком со строгой типизацией.

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