Search
Write a publication
Pull to refresh
9
0

User

Send message

Как я фотоаппарат покупал

Reading time6 min
Views112K


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

Итак, началось всё с обзвона условно-доступных магазинов: их нашлось около десятка.

Дыра 8-800


У нескольких магазинов стоит автоответчик на 8-800 — это хорошая дыра для атаки на переполнение бюджета. Уязвимость давно описана – конкуренты могут делать ботом четырёхсекундные звонки на номер 8-800, и, не дожидаясь живого оператора, класть трубку. За 800 платит владелец (магазин), поэтому в конце месяца при таком раскладе может приехать большой счёт. Я почти уверен, что грамотный админ отследит такие ситуации – но не уверен, он есть у маленьких магазинов. Собственно, мы сами узнали об этом из топика на Хабре и сразу закрыли дыру.
Проверьте, как у вас.
Читать дальше →

Типограф Муравьёва опубликован на GitHub

Reading time1 min
Views33K


Нас очень давно просят опубликовать типограф ГитХабе, чтобы дать возможность развивать продукту еще быстрее. Так как мы не создаем модули для разных систем, а делаем, только код типографа, то пришло время опубликовать типограф на ГитХабе и предоставить всем желающим возможность делать форки и открыто развивать продукт под свои нужды.

Велком: https://github.com/emuravjev/mdash

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

Noisli: онлайн-генератор фоновых шумов, помогающих сконцентрироваться

Reading time1 min
Views182K


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

Сайт Noisli содержит коллекцию фоновых шумов на любой вкус и возможность смешивать их в произвольной пропорции. Здесь есть и звуки природы — шум дождя, плеск воды, пение птиц, шуршание листьев, и звуки техногенного характера — стук колёс поезда, звук работающего вентилятора, и звуки многолюдного кафе. Есть и искусственные белый, розовый и коричневый шум. Коллекция звуков постоянно пополняется.
Читать дальше →

Умный дом — общая архитектура системы

Reading time2 min
Views82K
Когда я наконец решил рассказать хабру о моем умном доме — он был уже готов, и я не знал как рассказать так много, а самое главное — с чего начать. В предыдущем посте рассказывал о комнатных контроллерах, но, без общего представления какую роль эта штука играет в доме и зачем оно вообще надо — все это кажется, мягко говоря, оторванным от контекста.

Лучше поздно, чем никогда. Я наконец понял свою ошибку, и теперь начну с того, с чего обычно начинаются все книги — с оглавления.
Структурное представление умного дома:

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

Отучаем сенсорный экран смещать координаты прикосновений на пару мм вверх

Reading time4 min
Views7K
Думаю, мало кто замечал, что физические координаты прикосновения пальца и их программное отображение в iOS немного отличаются: iOS выдаёт точку, смещенную примерно на 1,5 мм вверх относительно реального прикосновения. Это сделано в интересах usability — точка, приближенная к ногтю, кажется более реалистичной, нежели лежащая ниже под подушечкой пальца. Кроме того, так лучше видно область экрана, куда нажимаешь.
Чтобы было понятнее, о чем речь, можно скачать любую рисовалку (например Bamboo Paper, приложение не моё, бесплатное), заблокировать автоповорот экрана, нарисовать небольшую горизонтальную линию, затем перевернуть устройство вверх ногами (обязательно при блокировке автоповорота) и попытаться продолжить нарисованную линию. Скорее всего продолженная линия окажется ниже первоначальной.
Читать дальше →

Загадка выпадающего списка «Амазона»

Reading time2 min
Views192K
Бен Кэменс обнаружил, что в выпадающем списке Shop by Department на сайте «Амазон» ховер-эффект происходит очень быстро, абсолютно без какой-либо задержки. Тем самым происходит нарушение старого, выработанного ещё в 90-х годах прошлого века правила: перед отображением пункта подменю необходим так называемый гистерезис, запаздывание.



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

lemongrab: плагин валидации веб-форм

Reading time4 min
Views26K
Добрый день.
В этом топике я расскажу о удобном jQuery-плагине для валидации веб-форм, простом и мощном, при том — совершенно неизбыточном. Если вам не интересны подробности создания и сравнение с аналогами (точнее — с аналогом), смотрите конец топика, там ссылка на примеры и исходный код.

Некоторое время назад мне пришлось дорабатывать клиент-сайд ресурса, включающего просто невероятное количество анкетных форм. Одной из неприятных особенностей этих форм было жуткое количество разнотипных правил валидации ввода и ещё большее количество взаимосвязей между полями.
Пример: если выбран чекбокс А, то в поле Х можно ввести только цифры, а поле Y должно быть скрыто, но если дополнительно выбрана радиокнопка Z, то поле Y нужно показать, а в поле X можно ввести всё, кроме цифр.
Иными словами — сущий ад, рождённый нездоровым сознанием маркетологов.


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

Интерфейс приложения: наши ошибки и 16 советов как их не повторить

Reading time6 min
Views39K
Как только мы сделали первую версию iOS приложения, я начал упорно приставать к людям на футбольных полях и баскетбольных площадках с просьбой установить Topic и пощелкать его прямо при мне.

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


Изображение №1: поиск игр (Find a game в меню приложения)
Читать дальше →

Иной взгляд на оформление заказа в интернет-магазине

Reading time4 min
Views63K


В странах СНГ не менее 75-80% заказов приходятся на cash-and-delivery (оплата заказа при доставке). Это отличие российского и западного потребителя легло в основу редизайна оформления заказа Сотмаркета еще в 2012 году. Тогда впервые в России интернет-магазин перестал требовать авторизации или регистрации клиента перед совершением покупки.

Фоновая регистрация и авторизация пользователей


Хотя авторизация на последнем шаге покупки и не несет никакой ценности для пользователя, это западное клише глубоко укоренилась в Рунете. Со средней частотой покупки (техники) раз в 9-10 месяцев люди зачастую не запоминают регистрационных данных: эл. почты, логина, пароля. Парадокс в том, что большинство интернет-магазинов с готовностью принимают заказы по телефону, но при этом создают искусственные препятствия при совершении покупке онлайн.

Это наблюдение легло в основу концепции фоновой регистрации и авторизации пользователей.
Читать дальше →

Перевод учебника по алгоритмам

Reading time1 min
Views167K


Рад сообщить, что вышел перевод отличнейшего учебника Дасгупты, Пападимитриу, Вазирани «Алгоритмы», над которым я работал последние несколько лет. В книге многие алгоритмы объяснены гораздо короче и проще, чем в других учебниках: с одной стороны, без излишнего формализа, с другой — без потери математической строгости. Откройте книгу на каком-нибудь известном вам алгоритме и убедитесь в этом. =)

В общем, угощайтесь: печатный вариант перевода, электронный вариант перевода (PDF), печатный вариант оригинала, электронный вариант оригинала (PDF).
Читать дальше →

Замолвим слово об отладке и профилировании [PHP]

Reading time5 min
Views40K
Все идет от лени. Вы получили чужой очень большой проект в котором нужно сделать небольшие правки, или же написали скрипт и сразу не очевидно, что в нем еще требует оптимизации. Как быть? Читать и анализировать код, выводить каждый шаг на экран или в файл (var_dump() и т.д.) не всегда эффективно, ведь можно воспользоваться средствами отладки, которых на сегодняшний день очень много. Кратко перечислю часто встречающиеся…
Читать дальше →

Конспект по веб-безопасности

Reading time3 min
Views66K
Простите, но накипело.
Много шишек уже набито на тему безопасности сайтов. Молодые специалисты, окончившие ВУЗы, хоть и умеют программировать, но в вопросе безопасности сайта наступают на одни и те же грабли.

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


Итак, каким должен быть безопасный сайт?

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

Устраняем ошибки при получении от пользователя массива вместо строки

Reading time2 min
Views15K
Недавно я заметил, что на многих сайтах сделанных на Yii Framework есть одна и та же ошибка:
Если в каком нибудь поле ввода в атрибуте name добавить квадратные скобки и отправить форму, то можно получить сообщение об ошибке, типа:
htmlspecialchars() expects parameter 1 to be string, array given
Иногда даже можно увидеть исходный код PHP файлов, если разработчик забыл убрать константу YII_DEBUG.

Эта ошибка присутствует и на крупных проектах и даже на самом yiiframework.com/search/?q%5b%5d=
Читать дальше →

Личные финансы — сохранить и приумножить

Reading time11 min
Views160K
Современный капитализм обусловил одни простой житейский «закон» — богатые становятся богаче, бедные — еще беднее. Так как больше денег -> больше возможностей заработать -> больше денег. Нам, работникам IT, немного повезло. Благодаря спросу на наш труд, который нам, чего уж скрывать, нравится, мы застряли где-то посередине — средств хватает на удовлетворение большего числа основных потребностей и еще остается небольшой излишек.

И вот тут многих начинает волновать вопрос — «что с ним делать?». Многие сделав вывод что «хранить нельзя» в решении вопроса идут дальше и задаются следующим вопросом: «во что инвестировать?». Возникает еще один попутный вопрос: «как обеспечить себе старость?».

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

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

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

Установка php5.5+php-fpm+mysql+nginx на Mac OS X Mavericks

Reading time7 min
Views87K
Каждый веб-разработчик, выбравший Mac, после первичной настройки системы ищет рабочий инструментарий. И если c IDE и редакторами всё понятно, то что-либо подобное по удобству win-довым OpenServer или Denwer за бесплатно найти трудно. Есть отличное решение MAMP PRO, но оно стоит две тысячи деревянных. Да и работа через Apache некоторых может смутить.

Занимаясь решением этого вопроса, набрёл на интереснейший материал, который рассказывает о том, как при помощи консольного пакет-менеджера Homebrew настроить рабочее пространство буквально за 5-10 минут. Публикую его перевод, потому что кому-нибудь подобная инструкция по настройке веб-окружения на Mac обязательно пригодится.

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

Личный опыт Web разработки в Mac OS X

Reading time3 min
Views129K
Привет Хабр!

По мотивам вот этой статьи

Как веб-разработчик, выбравший Mac OS X в качестве основного рабочего инструмента, я столкнулся с проблемой настройки необходимого окружения. По многолетней привычке работы с серверами на Linux, руки сами потянулись в консоль дабы все поставить, но остановились — постойте, постойте, но зачем мне превращать эту операционку в очередной Linux сервер? Мне этого шаманства с консолью на серверах хватает, спасибо. Будем использовать встроенные компоненты, насколько это возможно.
Поехали

Индексирование AJAX-сайтов

Reading time9 min
Views27K
При разработке интерфейса одного веб приложения возникла задача сделать странички, формируемые AJAX запросом, индексируемыми поисковиками. У Яндекса и Google есть механизм для индексации таких страниц (https://developers.google.com/webmasters/ajax-crawling/ http://help.yandex.ru/webmaster/robot-workings/ajax-indexing.xml). Суть довольно проста, чтобы сообщить роботу о HTML версии страницы, в тело нужно включить тег . Этот тег можно использовать на всех AJAX страницах. HTML версия должна быть доступна по адресу www.example.com/чтотоеще?_escaped_fragment_=. То есть, если у нас есть страница http://widjer.net/posts/posts-430033, то статическая версия должна иметь адрес http://widjer.net/posts/posts-430033?_escaped_fragment_=.
Чтобы не быть обвиненным в клоакинге, динамическая и статическая версии не должны отличаться, поэтому возникает необходимость создания слепков ajax страниц, о чем и хотелось бы рассказать.
Читать дальше →

Оптимизируем бизнес-процесс с помощью симулятора

Reading time6 min
Views25K
У оптимизации процессов непростая судьба. В середине двухтысячных даже запрещалось упоминать это слово, как скомпрометированное подразумеванием бесполезной деятельности. До сих пор люди стараются использовать синонимы типа реинжиниринг, improvement, performance и т.п. Тем не менее повышение эффективности является одной из целей деятельности по управлению бизнес-процессами. Основой для оптимизации является результат анализа данных об окружении и содержании процесса. В случае отсутствия возможности сбора статистических данных (например при дизайне нового процесса), они генерируются симуляторами БП.
В одном из предыдущих постов на Хабре я рассказал об онлайн-сервисе имитационного моделирования бизнес-процессов bpsimulator.com. Сегодня мы постараемся с его помощью решить конкретную задачу по повышению эффективности работы, например процесса розничного кредитования банка.

Цель оптимизации


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

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

Как обрабатывать терабайты данных в 1000 потоков на PHP — Hadoop/MapReduce

Reading time6 min
Views36K
Всем привет!

Уже слышали про Bigdata? Ну да, веб растет, данных становится больше и их нужно держать под контролем и периодически анализировать. Базы данных — лопаются под нагрузкой, реляционная теория не совсем справляется с задачей, нужно решение. Маркетинг активно давит сверху, а железо острыми углами — снизу и попахивает суицидом.

В этом посте постараюсь дать конкретные работающие рецепты и куски кода с краткими теоретическими выводами, как же обрабатывать >=терабайты в >=1000 потоков на PHP. Чтобы можно было взять и решить задачу, не теряя времени и не забивая голову теорией.

Однако, если вдруг стало подташнивать и закружилась голова, можно дальше не читать — а полюбоваться на прекрасных птичек и забыть о вышенаписанном. Но будьте на чеку, Bigdata может завтра взять и постучаться в дверь ;-)

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

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity