Как стать автором
Обновить
14
0

Пользователь

Отправить сообщение

Юзабилити и дизайн не дадут интернет-магазину прибылей!

Время на прочтение8 мин
Количество просмотров15K
В Рунете и Уанете последнее время придается огромное значение юзабилити и дизайну, как инструментам, способным увеличить продажи интернет-магазинов. Приуменьшать значение юзабилити или дизайна в интернет-магазине, как фактор высоких продаж – глупо. Но я хочу обратить внимание на то, что большинство владельцев магазинов, особенно начинающих, уделяют юзабилити и дизайну первостепенное значение. Создается впечатление, что руководители магазинов забывают о логистике, бухгалтерии, ассортименте, директ-маркетинге, эвент-маркетинге и контенте (я бы даже ввел новое определение контент-маркетинг).

Даже руководители с опытом, когда возникает вопрос “а чтобы нам сделать сайтом, чтобы заказов стало больше” в первую очередь задумываются о юзабилити и дизайне, забывая о том, что покупатель приходит в магазин за товаром; а заказ делает, только получив необходимую ему информацию, а вовсе не за тем, чтобы супер-удобно в 5 сек. сделать заказ или порадоваться красивому “уникальному” дизайну и другим дизайнерским приблудам.

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

Что же в интернет-магазине играет наиболее важную роль: юзабилити, дизайн, работа с клиентами или менеджмент? (под менеджментом я понимаю логистику, бухгалетрию, товарооборот, персонал и другие факторы напрямую влияющие на качество работы компании)

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

Сайт или компания – курица или яйцо – что первее?
Читать дальше →
Всего голосов 98: ↑64 и ↓34+30
Комментарии138

Комплексные числа — Неизбежность (музыкальный проект)

Время на прочтение2 мин
Количество просмотров2.9K
Данный топик предназначен для тех, кому небезынтересны смесь интрересной музыки и науки.
Всех, кто не способен взглянуть дальше обертки (в частнности восклицания «Гы! Смотрите, это Флэш» будут смешны), я прошу пролистнуть дальше страницу.

Вы все еще читаете?
Скажите, а вы умеете одновременно читать английский текст, слушать русский поэтизированный текст и наблюдать за происходящим на экране? Вы постараетесь, да?
Добро пожаловать подкат!
Всего голосов 78: ↑55 и ↓23+32
Комментарии55

Крутые футболки от Glennz

Время на прочтение1 мин
Количество просмотров5.9K
Недвно наткнулся на новозеландского графического дизайнера по имени Glenn Jones (GLENNZ).
Он делает очень интересный дизайн для футболок…

image
Airdrop

ещё картинки
Всего голосов 92: ↑74 и ↓18+56
Комментарии71

Дайджест интересных новостей и материалов из мира PHP № 42 (1 — 16 июня 2014)

Время на прочтение3 мин
Количество просмотров20K


Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.

Приятного чтения!
Читать дальше →
Всего голосов 50: ↑43 и ↓7+36
Комментарии23

Ускоряем процесс разработки с помощью Vagrant

Время на прочтение10 мин
Количество просмотров67K
image Как часто вам приходится разрабатывать и запускать приложение локально и упорно искать проблемы, потому что на продакшене приложение ведёт себя не совсем так, как вы этого хотели? А как часто вам присылают тикеты для решения проблемы в приложении, хотя на самом деле проблема именно в несовместимости версий разных приложений? А как долго вам приходится ждать виртуалку, когда для запуска новой версии приложения недостаточно ресурсов локальной машины? Для нас эти вопросы были довольно больными, и мы сломали тысячи копий в спорах, стараясь решить их. Практика показывает, что одним из вариантов для решения этих проблем может стать Vagrant.
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии10

PHPCI: Система непрерывной интеграции для PHP-проектов

Время на прочтение3 мин
Количество просмотров24K
image

Совсем недавно вышла из бета-версии новая система непрерывной интеграции для PHP-проектов с открытым исходным кодом — PHPCI (текущая версия — 1.1.0), она вскользь упоминалась в дайджесте PHP №21.

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

Читать дальше →
Всего голосов 36: ↑32 и ↓4+28
Комментарии22

PHP + Java, или In-memory кластер теперь и для PHP разработчиков

Время на прочтение9 мин
Количество просмотров9K

Intro


image
PHP + Java. Картинка взята отсюда

В этом комментарии к статье под названием «Пишите код каждый день» я сказал, что скоро покажу свой проект, на который я выделял ежедневно 1 час (кроме выходных). Так как в последнее время моя работа связана с написанием распределенных Java приложений, которые используют in-memory data grid (IMDG) в качестве хранилища данных, то мой проект связан именно с этим.

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

О чем эта статья


Большинство IMDG написано на Java и поддерживают API для Java, C++, C#, при этом API для веб языков программирования (Python, Ruby, PHP) не поддерживается, а протокол для написания клиентов сильно ограничен. Именно этот факт я и считаю основным тормозом для проникновения IMDG в массы — отсутствие поддержки самых массовых языков.

Так как производители IMDG пока не предоставляют поддержку веб языков, то веб программисты не имеют возможностей по такому же легкому масштабированию приложений, какие есть у серверных Java разработчиков. Поэтому я решил сделать нечто подобное самостоятельно и выложить в open source, взяв в качестве движка open source IMDG JBoss Infinispan (компания JBoss, принадлежащая Red Hat, довольно хорошо известна в кругу java разработчиков). Мой проект называется Sproot Grid, пока доступен только для PHP, но если у сообщества будет интерес, то сделаю и интеграцию с Ruby и Python.

В этой статье я еще раз расскажу про in-memory data grid и про то, как конфигурировать, запускать и использовать Sproot Grid.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии11

Оптимальная параллелизация юнит-тестов или 17000 тестов за 4 минуты

Время на прочтение10 мин
Количество просмотров27K
Сегодня мы поговорим про разработанную нами утилиту, которая оптимизирует тестирование PHP-кода с помощью PHPUnit и TeamCity. При этом нужно понимать, что наш проект — это не только веб-сайт, но и мобильные приложения, wap-сайт, Facebook-приложение и много чего ещё, а разработка ведется не только на PHP, но и на C, C++, HTML5 и т.д.

Методы, которые мы описываем, прекрасно адаптируются под любой язык, любую систему тестирования и любое окружение. Поэтому наш опыт может оказаться полезным не только разработчикам веб-сайтов на PHP, но и представителям других областей разработки. Кроме того, в ближайшем будущем мы планируем перевести нашу систему в Open Source ― без обязательной привязки к TeamCity и PHPUnit ― наверняка она кому-нибудь пригодится.
Читать далее
Всего голосов 66: ↑58 и ↓8+50
Комментарии31

Много бесплатных книг по программированию

Время на прочтение7 мин
Количество просмотров345K
Читать дальше →
Всего голосов 202: ↑192 и ↓10+182
Комментарии42

Понимание ООП на джаваскрипте (ES5), часть 2

Время на прочтение12 мин
Количество просмотров44K


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

Для полноты статьи и единого стиля, перевод начинается с вопросов наследования, несмотря на то, что они уже были упомянуты в конце первой части. Далее рассматриваются разнообразные задачи наследования так, как их рассмотрел автор. Надо сказать, что автор широко использует новые конструкции 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 немного ограничена, и для обхода трудностей эти приёмы будут временами избыточны выносить мозг.
дальше
Всего голосов 54: ↑48 и ↓6+42
Комментарии22

RBAC Авторизация в YII и LDAP

Время на прочтение12 мин
Количество просмотров97K

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

К сожалению стандартный мануал по RBAC в YII оставляет больше вопросов чем ответов. Эту ситуацию я и намереваюсь исправить.
Я расскажу о создании “правильной” иерархии: как делать не стоит. А в завершении я приберёг инструкцию, о том как подружить LDAP авторизацию (из ActiveDirectory ) с Yii и RBAC.

Все кто заинтересовался, добро пожаловать под кат!
Читать дальше →
Всего голосов 50: ↑47 и ↓3+44
Комментарии26

Манипулирование URL'ами в JavaScript

Время на прочтение2 мин
Количество просмотров70K
Из года в год, сталкиваюсь с одной и той же проблемой. Как добавить, изменить или удалить параметр к некоторому адресу в строковом виде. Быстро и грязно это можно делать с помощью, например, регулярных выражений или найти каке-то готовое решение. Зачастую также может потребоваться, к примеру, подменить путь в адресе или изменить протокол с HTTP на HTTPS и т.д.

В целом, это хочется делать просто и понятно. При этом хочется разумного компромиса. Я встречал некоторые библиотеки, которые дают мощный функционал, но при этом по объему — десятки килобайт JavaScript кода. Несколько десятков килобайт, чтобы, например, подменить параметр в QueryString? Эх…
Читать дальше →
Всего голосов 70: ↑67 и ↓3+64
Комментарии50

Веб-контроль Raspberry Pi GPIO

Время на прочтение4 мин
Количество просмотров82K
Доброго времени суток! В этом посте я хочу показать, как управлять электроникой через Интернет используя Raspberry Pi. Выглядеть это будет примерно вот так.



Краткое описание:
  • Серверная программа, которая работает на Raspberry Pi, для того чтобы читать переменные
  • Базы данных MySQL для хранения переменных
  • Веб-страница Apache2, для того чтобы контролировать переменные


Читать дальше →
Всего голосов 25: ↑18 и ↓7+11
Комментарии11

Coroutines в PHP и работа с неблокирующими функциями

Время на прочтение18 мин
Количество просмотров79K
Одним из самых больших нововведений в PHP 5.5 будет поддержка генераторов и корутин (сопрограмм). Генераторы уже достаточно были освещены в документации и в нескольких других постах (например в этом или в этом). Сопрограммы же получили очень мало внимания. Это гораздо более мощный, но и более сложный для понимания и объяснения, инструмент.

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

Генераторы


Суть генератора в том, что это функция, которая возвращает не просто одно значение, а последовательность значений, где каждое значение выброшено одно за другим. Или, другими словами, генераторы позволяют вам реализовать итератор, без лишнего кода.
Читать дальше →
Всего голосов 111: ↑103 и ↓8+95
Комментарии57

Сколько стоит создать приложение или вся правда о деньгах

Время на прочтение7 мин
Количество просмотров71K
Узнав, что я занимаюсь разработкой мобильных приложений, мои знакомые время от времени, спрашивают: «сколько стоит разработать приложение?». И я честно отвечаю: «от 200 долларов». Приложение будет писать на экране HELLO WORLD, его не пропустят в магазин из-за «bad user experience», но работать-то приложение будет!

Самое удивительное, что огромное количество разработчиков и вправду создает что-то за 3000 долларов и даже выкладывает это в App Store.

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

Так и хочется, заглянуть им в глаза и проникновенно спросить:

— Ребят, а вы из какой сказки?

А то в моей суровой реальности разработка качественного, пусть и не большого приложения для Appstore – это долго, непросто и дорого.

Основные статьи расходов при создании проекта:

Статья Расход
Дизайн приложения $ 13 000
Создание уникальности $ 10 000
Производство графики $ 35 000
Программирование $ 45 000
Текстовый контент $ 5 000
Локализация $ 3 000
Музыка и звук $ 1 000
Полировка $ 17 000
Маркетинг $ 30 000
Управление $ 30 000
Итого: $ 189 000


Вся раскладка будет сделана на примере нашего приложения "МоиЭмоции". Приложение бесплатное, весь функционал можно посмотреть.

Почему так дорого?
Всего голосов 221: ↑174 и ↓47+127
Комментарии213

Дайджест интересных новостей и материалов из мира PHP за последние две недели №5 (17.11.2012 — 30.11.2012)

Время на прочтение6 мин
Количество просмотров21K


Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.

Приятного чтения!
Читать дальше →
Всего голосов 86: ↑62 и ↓24+38
Комментарии16

Онлайн-инструменты для кодеров

Время на прочтение2 мин
Количество просмотров282K
Онлайн-сервисы становятся все популярнее, постепенно усложняя функционал и улучшая интерфейсы. В этой подборке представлены онлайн-инструменты для кодеров.

Cloud9


«Это Google Docs, только для кода» — так говорят о проекте. Облачный сервис вырос из Mozilla Bespin. Основные фишки: SSH, drag-and-drop и возможность разработки оффлайн.

Читать дальше →
Всего голосов 204: ↑191 и ↓13+178
Комментарии55

Цветная лазерная и светодиодная печать

Время на прочтение4 мин
Количество просмотров32K
Основные принципы построения изображения и перевода его с «языка цифр» в видимый отпечаток полностью аналогичны тому, как это происходит в чёрно-белых принтерах. Поэтому рассмотрим здесь только создание цветного изображения, используемые для этого элементы и технологические решения. Для создания цветного изображения принтер должен сформировать на бумаге 4 накладывающихся друг на друга изображения, каждое из которых будет окрашено в свой цвет: голубой, пурпурный, жёлтый или чёрный. Это основные полиграфические цвета, участвующие в субтрактивной модели создания цветного изображения. Существуют 2 различных способа создания полноцветного изображения: многопроходная и однопроходная технология.


Читать дальше →
Всего голосов 64: ↑60 и ↓4+56
Комментарии25

Тест Джоэла как инструмент собеседуемого

Время на прочтение5 мин
Количество просмотров67K
Многие хабровачане наверняка знакомы с тестом Джоэла (перевод). Если в двух словах, Джоэл Спольски предлагает на основе выбранных им критериев оценить любому инженеру, насколько хороша его команда.

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

Допустим, эта часть Вам понравилась и Вы задумались о том, чтобы перейти в этот проект. Потенциально Вам с этими людьми работать следующие несколько лет (ну минимум — месяцев). Поэтому имеет смысл пораспрашивать о проекте поподробнее. А заодно и будущих сокомандников прощупать — что они за перцы? ;)

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

Читать дальше →
Всего голосов 104: ↑86 и ↓18+68
Комментарии82

Phalcon — скомпилированный PHP MVC Framework

Время на прочтение7 мин
Количество просмотров56K

Создание скомпилированных MVC фреймворков для PHP не раз приходила на ум кодерам.

Достоинства такого подхода:
  • Высокая производительность
  • Малая нагрузка файловой системы
  • Меньший расход памяти (при строгой типизированности)
  • Частичная обработка данных без интерпритации

И само собой не менее явные недостатки:
  • Если Вы не знаете C, то Вы полностью зависите от разработчиков
  • Проект может в любую секунду сдуться
  • В зависимости от архитектуры, часть модулей все равно приходится писать самому, что уменьшает выигрыш

Читать дальше
Всего голосов 55: ↑47 и ↓8+39
Комментарии101

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность