• ECMAScript 6 Promises

    • Tutorial
    На Хабре уже встречались статьи о замечательной технологии Promises, которая в будущем станет частью стандарта ECMAScript 6, однако, в этих статьях не было подробного описания, почему же они так полезны и в чем таки их преимущества. Дабы заполнить этот пробел, я решил написать эту статью.
    Читать дальше →
  • Основы фотографии: выдержка, диафрагма, ГРИП, светочувствительность

      Введение


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

      В результате у кого-то возникает разочарование в камере и фотографии в целом, а другие проявляют терпение и пытаются освоить премудрости фотографии, чтобы раскрыть весь потенциал камеры с полноценным (или почти полноценным) сенсором.

      Изначально я планировал написать одну статью, но по ходу дела понял, что объем получается слишком большой и решил разбить ее на несколько частей. В этой главе рассмотрю такие понятия как выдержка, диафрагма, ГРИП и светочувствительность, как эти параметры влияют на результат съемки. На очереди статья про типы и параметры объективов, работу со вспышками и советы по съемке в различных условиях.
      Читать дальше →
    • Поиграем в городах

        Привет, читатели Хабрахабра. Я хочу рассказать вам о location-based играх для Айфона и Андроида.

        Суть location-based игр состоит в привязке виртуального пространства игры к реальной территории, на которой положение игрока устанавливается с помощью GPS координат. Как правило, это подвижные игры на открытом воздухе, что связано со сложностями приема GPS сигнала в помещениях. И эти игры отлично дополняют дополненную реальность.
        Читать дальше →
      • Офис на необитаемом острове — реальность

          Трудно вспомнить, когда и за какими напитками нам впервые пришла в голову мысль, что если все лето путешествовать не получается, и в перерыве между поездками все равно нужно работать, то нужно делать это в любимых нами Ладожских шхерах. Но в прошлом году мы это сделали — организовали на месяц коворкинг-офис на гранитном основании. И повторяем в этом году. По дороге мы приобрели некоторый опыт, который и хотим обобщить в этой статье. Мало ли, пригодится кому.

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

          • Translation
          • Tutorial
          Инструменты типа Evernote позволяют находить и организовывать информацию действительно просто. Однако, временами я нахожу записные книжки более удобными, особенно на ходу.

          В то же время, записи в бумажном варианте организовать сложнее. Скорее всего, многие люди делят все страницы на отдельные тематические части, в которые пишут соответствующие темам записи. Некоторые же просто пишут все подряд, заставляя себя искать нужное все сложнее и сложнее с каждым разом.

          Если это Вам знакомо, то Вы, наверное, полюбите эту хитрость, которой я научился в Японии. Это может выглядеть слегка неряшливо, и я не использую это каждый раз, но временами такой вид навигации бывает очень даже полезен. Начнем наш урок прямо под катом!
          Читать дальше →
        • Собеседование на должность JavaScript разработчика



            Недавно прочитал неплохой пост на тему поиска работы QA и подумал, что похожий пост был бы полезен для JavaScript разработчиков. В конечном счёте, веб движется вперед семимильными шагами, и соискателей на позицию JavaScript программиста хоть отбавляй (разумеется, хороших всегда меньше).
            Читать дальше →
          • Как улучшить свой стиль программирования?

            Исповедь 1


            Я — разработчик. От своих работодателей я постоянно слышу, что работаю медленно и часто всё усложняю без веской причины. И что мне пора бы что-то с этим сделать. Во избежание.

            Весь мой опыт программирования складывается из университетских работ и пары лет пребывания в различных компаниях. Критикующие меня люди неоднократно говорили мне, что в целом я разбираюсь в теме, так что я далеко не клинический случай, как можно было подумать. Однако, очевидно, я выработал совсем не те программистские привычки (как минимум, на взгляд работодателя) и мне нужно срочно изменить их. Везде, где бы я ни работал, мои решения, использующие иерархии мелких классов с делегированием поведения, признавались плохими. Говорят, будто так и надо писать, но это не так. Потому что всё это «как надо» может стоить мне работы.
            Читать дальше →
          • Мультитест мультиварок: что купить IT-шнику, если хочется плова и борща

              Нам неоднократно поступали предложения о тестировании мультиварок, но до определенного времени мы от них отказывались — ну что такого можно рассказать о мультиварке. Однако, предложения продолжали поступать, и примерно после 5-6 письма редакция Box Overview задумалась, и решили сделать не просто тест одной мультиварки, а глобальное тест-сравнение 8 мультиварок нижнего ценового сегмента от разных брендов.

              image

              В нашем тесте участвуют 8 мультиварок от компаний Vitek (VT-4209), Kitfort (KT-201), Scarlett (SL-MC411S01), Polaris (PMC 0527D), Rolsen (RMC-5500D), Redmond (RMC-250), Philips (HD2173) и Panasonic (SR-MHS181).

              Мы не будем рассказывать вам о дизайне — его можно посмотреть на фотографиях, не будем уточнять наличие контейнера для сбора конденсата — в него он попадает лишь в редких случаях, мы не будем говорить о «эффекте русской печи» и прочей маркетинговой шелухе, которую так любят продавцы.
              Мы расскажем о более интересных вещах — об удобстве управления, о качестве рецептов из комплекта, о физической и химической стороне процесса приготовления, о типах антипригарных покрытий, о реальном, а не маркетинговом функционале и о том, что у мультиварок внутри.
              Под катом много картинок, фотографий плова и борща, физический и химический ликбез и geek-porn
            • Всё, что вы хотели узнать о рефакторинге, но боялись спросить

                Господа, рад представить вам свой новый проект — Refactoring.guru.

                Сайт представляет собой каталог запахов грязного кода и, собственно, самих приёмов рефакторинга. В двух словах — это как книга Мартина Фаулера, но лучше. А именно:

                • Весь контент доступен на русском языке. Я старался делать описания как можно более живыми, чтобы избавиться от чувства унылости и скуки, которое возникает при чтении любой переводной книги о рефакторинге.
                • Все примеры подаются на Java и PHP. Другие языки обязательно будут добавляться со временем, но я пока затрудняюсь решить, каким будет следующий, можете предлагать в комментах.
                • Всё везде перелинковано. Рефакторинги сгруппированы по предназначениям и связям.


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

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

                Буду рад всем отзывам и пожеланиям! (а также лайкам и твитам)

                Читать дальше →
              • Нужны ли в JavaScript классы?

                  JavaScript принято считать прототип-ориентированным языком программирования. Но, как ни странно, этим подходом практически никто не пользуется: большинство популярных JS-фреймворков явно или неявно оперируют классами.
                  В этой статье я хочу рассказать об альтернативном способе программирования на JavaScript, без использования классов и конструкторов — чистым прототипным ООП и особенностях его реализации на ECMA Script 5.
                  Читать дальше →
                • Красной таблетки не существует

                    О чем это


                    Я долгое время был адептом идей о равенстве, свободе и братстве том, что существует красная таблетка.

                    — Что можно с помощью ООП решить все проблемы масштабирования программ;
                    — Что с помощью одной методологии можно выстроить разработку проектов;
                    — Что с помощью нескольких гениальных книг можно научиться проектировать интерфейсы.

                    На самом деле, после пары десятков проектов я пришел к выводу, что все это — не более чем заблуждения, и чудеса происходят только в книгах авторов, которые делают на своих бестселлерах миллионы. Или в головах консультантов, которые делают деньги, продавая вам фуфло в виде Agile, KPI и прочих умных слов.

                    Я не сделаю, возможно, в этом посте никаких открытий. Но сэкономлю вам пару лет, если вы решитесь поверить моему опыту.

                    Читать дальше →
                  • Google Analytics для сбора ошибок JavaScript

                      image
                      Не так давно на Хабре была статья про навороченный стартап, заточенный на сбор ошибок JavaScript. Далеко не всегда нужно столько возможностей, но оказалось, что многие просто не знают про старый бородатый способ с Google Analytics. Про него я и попытаюсь кратенько рассказать.
                      Читать дальше →
                    • Про jQuery и велосипеды — мое дополнение

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

                      Для затравки начнем с простого.
                      Читать дальше →
                    • Ремесло программиста. Золотые правила

                        imageДанный пост представляет собой выдержку «золотых правил» из примечательной книги Питера Гудлифа «Ремесло программиста».

                        Кто-то освежит память, кто-то сверится как с чек-листом, а кто-то заинтересуется и прочтет книгу. Т.к. пост получился достаточно объемным, можно добавить его в закладки и периодически к нему возвращаться.
                        Читать дальше →
                      • Создание «API-Centric» Web Application на PHP

                        Что такое “API-Centric” Web Application?
                        Это веб приложение которое большая часть функционала реализуется через API. Например: если вы авторизовываетесь, то вы отправляете свои данные через функции API, а API уже возвращает результат success или же ошибку. Другой характеристикой API является то что API не зависит от состояния пользователя.

                        Зачем это нужно ?
                        Как веб разработчики мы видим, что технологии развиваются каждый день. И все знают, что люди используют не только браузеры на pc, но и android, apple, windows phone и прочие гаджеты для доступа в интернет к своим любимым сайтам.

                        Так причём же тут API ?
                        Одним из преимуществ создания api-centric приложения это помощь в построении функциональности, которая может быть использована на любом другом девайсе, будь это браузер, мобильник, планшет или даже десктопное приложение. Все, что нужно сделать, это создать API, таким образом, чтобы все эти устройства могли взаимодействовать с ним.

                        Читать дальше →
                      • Codeception — тестирование по-новому

                          PHP очень популярный язык программирования, но тестирование в нем, это скорее прерогатива экспертов, а не жизненная необходимость. Неужели это от того, что PHP-разработчики поголовно быдло-кодеры? Я считаю, что нет. Скорее всё от того, что системы тестирования порой излишне усложнены. А тесты, наоборот, должны были предельно просты: легко читаться, писаться, отлаживаться, и конечно же, быстро выполняться. Мое виденье того как это можно воплотить в PHP вылилось в проект под названием Codeception.

                          С ним тесты для ваших веб-приложений могут выглядеть так:
                          <?php
                          $I = new TestGuy($scenario);
                          $I->wantTo('create new blog post');
                          $I->amOnPage('/blog/posts');
                          $I->click('Create new post');
                          $I->fillField('Title','Codeception, a new way of testing!');
                          $I->fillField('Text','Codeception is new PHP full-stack testing framework.');
                          $I->click('Send');
                          $I->see('Congratulations, your post is successfully created!');
                          


                          Согласитесь, такой тест понятен без дополнительных комментариев.
                          А теперь самое интересное: этот код без всяких изменений может быть выполнен как функциональный тест в фреймворках symfony, Symfony2,Zend Framework, а также в браузерном эмуляторе Goutte и даже через Selenium. Таким образом, вам предлагается единый интерфейс для написания функциональных тестов практически для любого сайта.
                          Читать дальше →
                        • Что такое этот новый jQuery.Callbacks Object

                            В не столь давно вышедшей версии jQuery 1.7 появился новый объект Callbacks, о котором сегодня и пойдёт речь.
                            В официальной документации jQuery.Callbacks описан, как многоцелевой объект, представляющий собой список функций обратного вызова (callbacks — далее просто колбэков) и мощные инструменты по управлению этим списком.

                            Я просматривал возможности этого объекта, когда он был ещё только в разработке, и надо сказать, что возможностей у него изначально было немного больше, чем осталось в релизной версии. Например, сейчас отсутствует возможность создания очереди (queue) колбэков, которые вызываются по одному на каждый вызов fire(). Видимо, команда jQuery, решила немного подсократить код, убрав «ненужные/редкоиспользуемые» возможности, чтобы сэкономить в весе библиотеки. Это маленький экскурс в историю Callbacks, но далее я буду описывать только доступные сейчас функции и в конце напишу небольшое возможное улучшение этого объекта.
                            Кому интересно, прошу под кат
                          • Как Google тестирует ПО

                              Прослушав вебинар «How Google Tests Software» я был так вдохновлен, что решил записать некоторые тезисы. Эта статья и есть мой конспект. Прежде всего, я должен внести ясность относительно ее содержания. Это не дословный перевод. Здесь описаны только те вещи, которые показались мне важными. Проще говоря, здесь описано не все, что прозвучало в вебинаре. Так же существует вероятность, что я понял что-то не до конца или даже понял неправильно. Поэтому горячо рекомендую прослушать вебинар самостоятельно.
                              Его ведет Джэймс Витакер, который в данный момент занимает пост технического директора по тестированию ПО в Google. Джэймс совместно с коллегами готовится выпустить одноименную книгу. В ней можно будет получить исчерпывающую информацию о том, как проводят тестирование GoogleMaps, Google+, ChromeOS, Android и т.д…
                              Читать дальше →
                            • «Правильный» system() для PHP-CLI

                                Внимание! Все рассуждения относятся к запуску PHP в режиме CLI, а не как модуль веб-сервера!

                                Если вы когда-либо использовали функцию system() в PHP, вы наверняка задавались вопросом: каким образом system() возвращает последнюю строку для команды, да ещё и выводит результаты исполнения команды на веб-страницу, а не себе куда-то в stdout веб-сервера? И почему system() работает не так, как system() в Си? Ответ, в общем-то, проще, чем может показаться.
                                Читать дальше →
                                • +57
                                • 11.7k
                                • 6
                              • Анимация меню при помощи CSS3

                                • Translation


                                В данной статье я хотел бы показать вам некоторые приёмы создания эффектов при помощи CSS3 на примере меню. Идея заключается в простой композиции элементов: иконки, основного названия и вторичного названия, которое будет анимировано при наведении курсора, используя только CSS-переходы и CSS-анимацию. Мы рассмотрим несколько различных эффектов для элементов.
                                Читать дальше →