• Доклады конференции Meet Magento Russia 2013

      image

      О конференции


      Конференция Meet Magento Russia 2013 пройдет 24 августа в Москве (Измайлово).

      Magento — это мощная платформа электронной коммерции, принадлежащая компании eBay/PayPal.
      Magento лидирует как на рынке бесплатных движков электронных магазинов, так и в корпоративном сегменте.

      Участие в конференции совершенно бесплатно и требует лишь предварительной регистрации.
      Подробности о конференции вы можете прочитать этом посте или на сайте Meet Magento Russia.

      Доклады


      Мы собрали по-настоящему звездный состав докладчиков.

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

      Читать дальше →
    • Набор методов для работы со списками в AngularJS

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

        Демка, песочница (с демкой играются многие, так что данные могут скакать)

        Как видно из примера, у нас проблема: куча списков со схожей функциональностью (добавление, удаление, сортировка элементов — что еще может быть у списков :-).
        Читать дальше →
      • Понимание типов сервисов в AngularJS (constant, value, factory, service, provider)

        • Translation
        • Tutorial
        Ангуляр поставляется с различными видами служб или сервисов, каждый из которых применяется в своей ситуации.
        Имейте в виду, что сервисы, не зависимо от типа, это всегда синглтоны (одиночки).

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

        Перейдем к типам сервисов
        Читать дальше →
      • Время подключать исходники. Введение в Source Maps

        • Tutorial
        В современной разработке ваш код сильно отличается от кода на «боевом» сервере (production) после компиляции, минификации, объединения и разных оптимизаций. Тут-то и вступают в игру карты кода (source maps), показывая точное соответствие элементов готового рабочего кода проекта и вашего кода разработки. В этом вводном уроке мы возьмём простой проект и запустим его с помощью различных компиляторов JavaScript с целью посмотреть работу карт кода в браузере.
        Читать дальше →
        • +20
        • 45.9k
        • 3
      • Сказ о том, как бы я продвигал сайт или не так страшно SEO как его малюют

        • Tutorial

        Сначала предметная область


        SEO стратегия
        Изначально была мысль написать очень подробный мануал, но потом решил остановиться на стратегиях.

        Ключи/запросы


        Это фразы, которые набираются в поиске, для достижения результата (ответа на вопрос, покупки, получения информации…)
        По частотностям
        НЧ – низкочастотные (величина вычисляется логарифмически относительно самого большого числа запросов по ВЧ запросу из категории), для простоты пусть будет все что ниже 300 запросов (хотя в каждой группе по разному).
        СЧ – среднечастотные (величина вычисляется логарифмически относительно самого большого числа запросов по ВЧ запросу из категории), для простоты пусть это будет все что выше 300 и ниже 2000 запросов (хотя в каждой группе по разному).
        ВЧ – максимальное значение количества поисков простого запроса, к примеру «Светильник».
        По конкуренции
        НК – низкоконкурентные запросы, по которым есть шанс двинуться в топ (мало точных вхождений поисковой фразы, мало главных страниц, низкое количество результатов в поисковой выдаче)
        СК – средне конкурентные запросы, по которым есть шанс продвинуться в топ, но есть и конкуренция (весь топ занят или главными или точными вхождениями, но показатели ссылочной массы конкурентов низкие)
        ВК – высококонкурентные запросы, по которым необходимо из кожи вон вылезти чтоб продвинуться (и топ весь занят, и ссылочная масса ужасающая) при средних бюджетах ВК топ недостижим, но можно долго работать, чтоб кардинально поменять выдачу (закупка сателлитов, ссылочной массы, грамотное внутренне СЕО).

        Семантическое ядро


        Предполагает, что будет оптимизироваться каждая страница сайта. Это значит, что страница конечно будет давать ответ на запрос пользователя, но при этом на ней должен быть материал, который включает в себя эти ответы. То есть признаки, по которым ПС сможет выдать именно эту страницу на это запрос…
        Пока что это сами запросы пользователей – они же «КЛЮЧИ»
        Ключевые фразы подбираются для каждой страницы персонально.
        Для главной страницы берутся общие запросы (описывающие общую категорию и выделяющие общую тематику сайта).
        Для страницы категории выбираются запросы более узкой тематики, выделяющие отдельную категорию в общей всего сайта.
        Для страницы товара/услуги – берутся максимально конкретные запросы, отражающие ее суть и позволяющие максимально точно ее/его идентифицировать.

        0 Стратегия: Тариф Беззаботный


        Минимум затрат, так как трафик тупо покупается у ПС. Других вариантов нет.

        1 Стратегия: На халяву


        Низкоконкурентный трафик – занимается ниша, где есть спрос, но нет конкурентов – классический «кто первый встал – того и тапки».
        Схема до боли проста – ищем свободные ниши, подбираем НК запросы, пишем материал (даем полезное на запрос пользователя) – попадаем в ТОП, для усиления эффекта можно закупить по парочке ссылок.
        Посмотреть нормальные стратегии...
      • Понимание ООП на джаваскрипте (ES5), часть 2

        • Translation
        • Tutorial


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

        Для полноты статьи и единого стиля, перевод начинается с вопросов наследования, несмотря на то, что они уже были упомянуты в конце первой части. Далее рассматриваются разнообразные задачи наследования так, как их рассмотрел автор. Надо сказать, что автор широко использует новые конструкции ES5 (объяснив это в конце), которые работают не во всех браузерах и заслоняют от понимания реализацию их на низком уровне языка, на котором они изначально применялись. Для настоящего понимания наследования следует обратиться к более глубокому разбору реализаций или к реализациям методов-обёрток из ES5: Object.create, Object.defineProperty, Function.bind, get и set literals, Object.getOwnPropertyNames, Object.defineProperty, Object.getOwnPropertyDescriptor, Object.getPrototypeOf. Часть их разбирается в статье (Object.create, get и set, Object.defineProperty, bind), но не всегда в порядке появления. Таким образом, статья стремится преподнести не реализацию наследования вообще, а ту реализацию, которую успели формализовать в рабочем черновике стандарта EcmaScript 5. Это лучше, чем ничего, но несколько меньше, чем полное понимание реализаций наследования.

        Зато, данная часть статьи в нескольких (4) крупных примерах кода демонстрирует чистейшее прототипное наследование, которому не требуется привлекать понятие конструктора (хотя он там, в .create(), незримо присутствует), о котором много говорят и которое исключительно редко в чистом виде встречается.
        Краткое содержание первой части
        1. Объекты
          1.1 Что есть объекты? (список свойств)
          1.2 Создание свойств (Object.defineProperty)
          1.3 Описатели свойств (Object.defineProperty)
          1.4 Разбор синтаксиса (bracket notation: object['property'])
          1.5 Доступ к свойствам (через скобочную нотацию)
          1.6 Удаление свойств (оператор delete)
          1.7 Геттеры и сеттеры (методы доступа и записи)
          1.8 Списки свойств (getOwnPropertyNames, keys)
          1.9 Литералы (базовые операторы) объекта
        2. Методы
          2.1 Динамический this
          2.2 Как реализован this
            2.2.1 Если вызывается как метод объекта
            2.2.2 При обычном вызове функции (this === global)
            2.2.3 При явном указании контекста (.apply, .call)
          2.3 Привязывание методов к контексту (.bind)
        Cодержание части 2
        3. Прототипное наследование
          3.1 Прототипы
          3.2 Как работает [[Prototype]]
          3.3 Переопределение свойства
          3.4 Миксины (примеси)
          3.5 Доступ к экранированным ('перезаписанным') свойствам
        План части 3
        4. Конструкторы
          4.1 Магия оператора new
          4.2 Наследование с конструкторами
        5. Соглашения и совместимость
          5.1 Создание объектов
          5.2 Определение свойств
          5.3 Списки свойств
          5.4 Методы связывания
          5.5 Получение [⁣[Prototype]⁣]
          5.6 Библиотеки обратной совместимости
        6. Синтаксические обёртки
        7. Что читать дальше
        8. Благодарности
        Примечания

        3. Прототипное наследование


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

        Далее в игру вступает наследование. Оно лучше разделяет понятия, когда объекты наделяются своими методами на основе методов других объектов.

        Прототипное наследование идёт дальше и может избирательно расширять методы, описывать общее поведение и использовать другие занятные приёмы, которых мы коснёмся. Печалит лишь то, что модель наследования в JS немного ограничена, и для обхода трудностей эти приёмы будут временами избыточны выносить мозг.
        дальше
      • Социальные игры: сервер, клиент и общая шина событий

          Добрый день.
          У меня выдалось свободное время, и я решил написать статью про несправедливо обойденный вниманием паттерн написания api. Он подходит в случае, если у Вас и клиент и сервер содержат сложное состояние, и есть необходимость его синхронизировать. На мой взгляд, социальные игры идеально подходят под это описание. В силу того, что я ещё не достиг того уровня мастерства, когда могу писать статьи про программирование без кода, спешу предоставить пример, демонстрирующий данный подход. Посмотреть код можно на github: https://github.com/dbalakov/studio_game.

          Читать дальше →
          • +3
          • 10.7k
          • 2
        • jQuery Deferred Object (подробное описание)

          31 января вышел релиз jQuery 1.5, одним из ключевых нововведений которого стал инструмент Deferred Object. Именно о нём я и хочу рассказать подробнее в этой статье.

          Эта новая функциональность библиотеки направлена на упрощение работы с отложенными (deferred) вызовами обработчиков (callbacks). Deferred Object, аналогично объекту jQuery, «цепочный» (chainable), но имеет свой набор методов. Deferred Object способен регистрировать множество обработчиков в очередь, вызывать зарегистрированные в очереди обработчики и переключать состояние на «завершено» или «ошибка» для синхронных или асинхронных функций.
          Подробности и примеры далее
        • Как HTTPS обеспечивает безопасность соединения: что должен знать каждый Web-разработчик

          • Translation


          Как же все-таки работает HTTPS? Это вопрос, над которым я бился несколько дней в своем рабочем проекте.

          Будучи Web-разработчиком, я понимал, что использование HTTPS для защиты пользовательских данных – это очень и очень хорошая идея, но у меня никогда не было кристального понимания, как HTTPS на самом деле устроен.

          Как данные защищаются? Как клиент и сервер могут установить безопасное соединение, если кто-то уже прослушивает их канал? Что такое сертификат безопасности и почему я должен кому-то платить, чтобы получить его?
          Читать дальше →
        • Модульный подход к разработке web-приложений с использованием JavaScript: AMD и RequireJS

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

            Обе эти задачи решаются при использовании подхода Asynchronous Module Definition. Он сводится к описанию модулей функцией define и подключению их с помощью require. На данный момент есть несколько инструментов, реализующих AMD. Я начал своё знакомство с ними с RequireJS и был удивлён, насколько удобно и просто можно описывать зависимости модулей. Расскажу, как это работает, на простом примере.
            Читать дальше →
          • Пишем SOAP клиент-серверное приложение на PHP

            Всем привет!
            Так случилось, что в последнее время я стал заниматься разработкой веб-сервисов. Но сегодня топик не обо мне, а о том, как нам написать свой XML Web Service основанный на протоколе SOAP 1.2.

            Я надеюсь, что после прочтения топика вы сможете самостоятельно:
            • написать свою собственную серверную реализацию веб-приложения;
            • написать свою собственную клиентскую реализацию веб-приложения;
            • написать свое собственное описание веб-сервиса (WSDL);
            • отправлять клиентом массивы однотипных данных на сервер.

            Как вы могли догадаться, вся магия будет твориться с использованием PHP и встроенных классов SoapClient и SoapServer. В качестве кролика у нас будет выступать сервис по отправке sms-сообщений.
            Интересно?
          • Подборка полезного для любителей Twitter Bootstrap

              В подборке инструменты, плагины и другие полезности, облегчающие работу с Twitter Bootstrap. Предыдущая подборка.

              Инструменты




              Bootstraptor — подборка большого количества бесплатных и премиум тем, в том числе Starter Kit, на основе Bootstrap.
              Читать дальше →
            • Настройка Nginx + LAMP сервера в домашних условиях Часть 2: Настройка backend: PHP + MySQL

                Здравствуйте.

                В предыдущей статье, мы познакомились с настройкой связки nginx + apache в режиме хостинга и репозиториями dotdeb.
                В этой статье мы познакомимся с настройкой backend: PHP, MySQL.

                В части PHP мы познакомимся со следующими темами:
                — общая настройка PHP
                — правильная настройка PHP + Postfix для отправки писем через внутренний SMTP сервер посредством функции mail(),
                — настройка кеширования кода и/или данных на основе APC.

                В части MySQL я попробую раскрыть базовые моменты повышения производительности, ибо по умолчанию сервер MySQL настроен очень не эффективно.

                Кто заинтересовался, добро пожаловать под кат
                Читать дальше →
              • Настройка Nginx + LAMP сервера в домашних условиях. Часть 1: Настройка frontend — backend


                  Здравствуйте. Недавно я задавал вопрос по поводу создания цикла статей. Вот первая статья.

                  В этом цикле статей вы узнаете как грамотно настроить LAMP сервер, аля «хостинг только мощней».
                  Мы будем использовать следующий стек: nginx — apache-mpm-itk — mod_php — mysql — linux/debian.

                  Буду освещать следующие темы:
                  • Настройка frontend — backend
                  • Расчет возможностей сервера, настройка mysql и backend
                  • Рассказ об опыте на базе intel s3420gp

                  Совершенно уверенно могу сказать, что настройка LAMP сервера не ограничивается 6-10 командами установки и раскомментирования определенных строчек в файлах настройки.
                  Пример: по умолчанию nginx не дает возможности закачать на сервер тело запроса больше чем 1M. Если не настроить данный параметр, будет возникать ошибка 414 (Request-URI Too Large), при попытке добавления небольшой серии фотографий.
                  У apache совершенно противоположное: у него тело запроса по умолчанию не ограничено. Это делает возможным совершать пакости.

                  В этой статье мы познакомимся со всей настройкой досконально. В статье вы сможете найти конфигурационные файлы, подготовленные мной. Будучи педантом, мои конфигурационные файлы всегда сгруппированы по типу, например: «производительность», «генерация контента», «страницы ошибок», «сжатие», «другие настройки», «общие настройки». Мне кажется, что читаемость данных файлов становится намного лучше, если они сгруппированы.

                  Мы узнаем о том какие бывают простые атаки и как от них защищаться. Сразу скажу, что при базовой конфигурации frontend в лице nginx — backend apache все равно остается уязвим.

                  Я практически уверен, что я не смогу уместить все в одну статью. Добро пожаловать под кат.
                  Читать дальше →