Pull to refresh
0
0
capella @capella

User

Send message

Гуляем по городу с умом: как я делал сервис для построения интересных пешеходных маршрутов

Reading time13 min
Views57K
UPD: так как тема хорошо зашла и показала наличие спроса на такой сервис, буду развивать его дальше. Завел паблик вконтакте для сбора фидбека и публикации информации об обновлениях https://vk.com/sightsafari

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

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



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

Описание алгоритма и примеры работы под катом, ссылка в конце.
Читать дальше →
Total votes 114: ↑113 and ↓1+112
Comments215

How-to: Правила вёрстки email-писем

Reading time16 min
Views184K


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

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

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

Примечание переводчика: Представленный ниже материал содержит значительное количество технических терминов, при переводе которых могут возникнуть неточности. Если вы заметили опечатку, ошибку или неточность перевода — напишите нам, и мы оперативно всё исправим.
Читать дальше →
Total votes 30: ↑26 and ↓4+22
Comments21

UX-команда MailChimp: Разработка [6-я часть книги]

Reading time11 min
Views7.8K


[TL;DR]

[ 1-я часть книги ]
[ 2-я часть книги ]
[ 3-я часть книги ]
[ 4-я часть книги ]
[ 5-я часть книги ]
[ 7-я часть книги ]
[ 8-я часть книги ]

Создание системы адаптивной рассылки


Фабио Карнейро

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

Такой адаптивный шаблон не создавался специально под MailChimp, поэтому мне пришлось работать над ним с учетом самых разных ситуаций, в которых email-дизайнеры могли его использовать. В итоге я сформулировал два тезиса: 1) письма должны создаваться так, чтобы их можно было адаптировать под различные задачи и цели и 2) шаблон должен быть доступным на как можно большем количестве почтовых клиентов.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments0

Лучшие способы использования Angular.js

Reading time9 min
Views54K

От переводчика:


Привет, Хабр! Мы мы продолжаем делится с сообществом полезными материалами о разработке и дизайне. В этот раз команда TrackDuck подготовили перевод статьи Jeff Dickey о Angular, которая нам очень понравилась и в свое время заставила пристальней присмотреться к Gulp. Эта статья будет полезна разработчиками, которые хотят сэкономить время на рутинных операциях и построить качественные процессы при разработке веб-приложений. Мы активно используем Angular для разработки собственного продукта для визуального комментирования веб-сайтов, поэтому готовы ответить в комментариях на интересующие вас вопросы!




Я использовал Angular в довольно большом количестве приложений и видел много способов структурирования приложений с использованием этого фрэймворка. Сейчас я пишу книгу о проектировании Angular приложений c использованием MEAN стека, и больше всего исследований я провел в этом направлении. В итоге я остановился на довольно оригинальной структуре приложения. Я считаю, что мой подход более простой чем тот, что предложил Burke Holland.
Прежде чем начать, я хотел бы рассказать о существующем подходе к реализации модульности в Angular.
Если вы разрабатываете продакшн решение на Angular - добро пожловать под кат!
Total votes 43: ↑32 and ↓11+21
Comments18

Не учите фреймворки, учите архитектуру

Reading time5 min
Views199K
Некоторое время назад у меня состоялся интересный разговор, коллега активно защищал Angular, говорил, что тот ускоряет веб-разработку. Я более десяти лет разрабатываю сложные web-сервисы, работал в Microsoft, в Spotware Systems на Кипре, сейчас создаю приложение для стартапа из Кремниевой долины, и в общем то слежу за трендами. Однако почувствовал себя динозавром, потому что не видел смысла использовать фронтэнд-фреймворки до того момента, а оказалось, что это уже мейнстрим. Шёл 2014-й год, я погрузился в мир Angular, Knockout и Backbone, что из этого вышло, почему я от них в итоге отказался и рекомендую коллегам сделать то же самое – под катом.
Читать дальше →
Total votes 152: ↑133 and ↓19+114
Comments123

Пишем с нуля квест на ASP.NET 5 (vNext) и Angular.js

Reading time8 min
Views47K
С выходом новой версии ASP.NET хочется попробовать, какая же она на практике. А для того, чтобы не писать еще один чатик\соц. сеть\блог..., для пилотного проекта выберем логический квест — и фреймворк посмотрим, и поиграть можно.
Результат:
сорсы на гитхабе для тех, кому интересно поиграться с новым ASP.NET
линк на квест для тех, кому интересно что получилось или потратить свое время на еще один логический квест.

Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments35

Сад JavaScript: Объекты

Reading time6 min
Views19K

Введение


Сад JavaScript – коллекция документации по самым странным особенностям языка JavaScript. Тут собраны советы по тому, как избежать распространённых ошибок и малозаметных багов, а также проблем с быстродействием и неправильного стиля программирования.

Это не учебник по языку. Предполагается, что вы уже предварительно знаете язык. Для обучения языку рекомендую воспользоваться этим великолепным переводом чудесной книги "Выразительный JavaScript".
Читать дальше →
Total votes 34: ↑18 and ↓16+2
Comments22

Паттерны в AngularJS

Reading time27 min
Views61K

Краткий обзор


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

Введение


Статья начинается с краткого обзора фреймворка AngularJS. Обзор объясняет основные компоненты AngularJS: directives, filters, controllers, services, scope. Во втором разделе перечислены и описаны различные конструкции и архитектурные шаблоны, которые реализованы внутри фреймворка. Шаблоны сгруппированы по компонентам AngularJS, в которых они используются. Если некоторые шаблоны используются в нескольких компонентах, это будет указано.
Последний раздел включает несколько архитектурных шаблонов, которые обычно используются в SPA построенных на AngularJS.
Читать дальше →
Total votes 35: ↑30 and ↓5+25
Comments11

webpack: 7 бед — один ответ

Reading time12 min
Views179K
После моего недавнего выступления на MoscowJS #17 с одноимённым докладом у многих возник интерес к этому инструменту. В рамках 11-го выпуска RadioJS, Миша Башкиров bashmish рассказал, что решился попробовать его в своём новом проекте, об успешном опыте и множестве положительных эмоций. Но были озвучены вопросы и возникла дискуссия, в результате которой я решил написать эту статью, чтобы раскрыть основные тезисы с доклада и рассказать о том, что тогда не успел.
Статья ориентирована, как на профессионалов, так и на тех, кто с похожими технологиями ещё не сталкивался.
Итак, начнём.
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments13

Чек-лист ИТ-стартапа на начальной стадии развития: что нужно сделать, прежде чем тестировать каналы продаж

Reading time11 min
Views40K
В Акселераторе ФРИИ работу со стартапами начинают с того, что пытаются определить, на какой стадии развития находится компания. Почему именно с этого? В целом, большая часть проблем у стартапов появляются от отсутствия фокуса: предприниматели совершают много ненужных действий, не концентрируясь на том, что приведет их бизнес к точке безубыточности. Чтобы понять, какие действия компании необходимо совершить в настоящий момент, нужно определить, на каком этапе развития она находится. Для этого во ФРИИ используется такой инструмент, как дорожная карта или road map. Мы выделяем в развитии ИТ-стартапов три больших этапа – поиск и изучение клиентов, тестирование каналов продаж и масштабирование. В данном материале мы пошагово рассмотрим первую большую стадию развития стартапа – Customer Discovery, поиск и изучение клиентов. Обычно оборот компаний на этой стадии не превышает 100 тысяч рублей. Какие шаги должен совершить ИТ-стартап, чтобы уверенно перейти к следующей стадии — тестированию каналов продаж?
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments0

Сайт без бекэнда: аутентификация пользователя в BaaS parse.com через социальные сети

Reading time7 min
Views31K
Я буду каждое утро развертывать мир, как резиновую ленту на мяче для гольфа, а вечером завертывать обратно. Если очень попросишь — покажу, как это делается.
Р. Брэдбери

UPDATE: Parse не будет работать к 2017 году.

Введение


В статье описан Backend-as-a-Service подход к хранению и обработки данных. Рассказаны преимущества и недостатки представителя такого подхода — сервиса parse.com. Коротко представлен сервис аутентификации пользователей через соц. сети uLogin. Основное назначение — показать, как эти два сервиса могут взаимодействовать, чтобы проект не требовал регистрации пользователей по логину и паролю, но в то же время сохранилась возможность авторизации пользователей к действиям над объектами.

О BaaS и parse.com


Parse.com — один из самых популярных провайдеров backend-as-a-service (BaaS). BaaS подход позволяет не поднимать свой сервер для хранения и обработки данных приложения. Это используется в мобильных разработках и в обычном вебе. Parse.com имеет свои SDK под несколько платформ, в том числе серверных. Но я расскажу о javascript.

Возможность работать с базой данных через javascript, не поднимая свой сервер, открывает отличные возможности, например, для Single page application (SPA), которое можно хостить на Github Pages, Bitbucket и многих других бесплатных. Первый вопрос, который у меня возник, когда я услышал про работу с БД из клиентского кода — это разграничение прав доступа, так как ключи общеизвестны. Изучив документацию parse.com, я выяснил, что для этого используется авторизация пользователей. Каждый пользователь имеет свой логин и пароль. SDK имеет методы регистрации нового пользователя по логину и паролю, аутентификации по этим же данным. Можно добавить email, при этом сам parse.com умеет отправлять настраиваемые письма для верификации email.
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments19

Гибкое управление событиями в jQuery — плагин jquery-behavior

Reading time8 min
Views20K
Привет, Хабр!

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

Я расскажу об инструменте для работы с событиями, который изначально являлся частью конструктора, но затем был вынесен в отдельный плагин для jQuery — jquery-behavior.

Плагин использует функционал jQuery, дополняя его следующими возможностями:

  • Работа с раздельными группами обработчиков событий. Для этого используются контроллеры событий.
  • Можно отключить все обработчики событий контроллера разом, не перечисляя их.
  • Слежение за срабатываниями обработчиков событий.
  • Можно узнать точное количество вызовов каждого из них.
  • Можно приостанавливать работу отдельных обработчиков событий, или всего контроллера разом.
  • Возможность получить полный перечень обработчиков событий конкретного элемента, обработчиков событий с определенным пространством имен или просто всех обработчиков событий контроллера.
Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments6

Пишем быстрый и экономный код на JavaScript

Reading time16 min
Views69K
Такой движок JS, как V8 (Chrome, Node) от Google, заточен для быстрого исполнения больших приложений. Если вы во время разработки заботитесь об эффективном использовании памяти и быстродействии, вам необходимо знать кое-что о процессах, проходящих в движке JS браузера.

Что бы там ни было — V8, SpiderMonkey (Firefox), Carakan (Opera), Chakra (IE) или что-то ещё, знание внутренних процессов поможет вам оптимизировать работу ваших приложений. Но не призываю вас оптимизировать движок для одного браузера или движка – не делайте так.

Задайте себе вопрос:
— можно ли что-то в моём коде сделать более эффективным?
— какую оптимизацию проводят популярные движки JS?
— что движок не может компенсировать, и может ли сборка мусора подчистить всё так, как я от неё ожидаю?



Есть много ловушек, связанных с эффективным использованием памяти и быстродействием, и в статье мы изучим некоторые подходы, которые хорошо показали себя в тестах.
Читать дальше →
Total votes 78: ↑72 and ↓6+66
Comments29

Навыки .NET-разработчика

Reading time7 min
Views112K


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

Этой публикацией я начинаю цикл аналитических статей по анализу необходимых и востребованных навыков для различных специализаций на российском и зарубежном IT-рынке.
Читать дальше →
Total votes 56: ↑47 and ↓9+38
Comments26

Список YouTube-каналов для обучения веб-разработке

Reading time2 min
Views218K
image


Привет, хабражители!

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

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

Под катом — текущая версия списка.
Читать дальше →
Total votes 64: ↑59 and ↓5+54
Comments16

Философия программирования — трёхнаправленное программирование

Reading time11 min
Views104K
Программирование рассматривается как процесс создания компьютерных программ. Слово процесс в этом определении не лишнее. Обычно рассуждают в духе «посмотрите, какую замечательную структуру данных можно описать на данном языке программирования». Философия программирования подразумевает оглянуться по сторонам, да и в глубь копнуть.

Собственно разделение на кодирование, и создание алгоритмов это уже специфика, сначала идёт жизнь, то есть человек опирается на некую мысль вроде «напишу-ка я фреймворк с такими-то свойствами». И вот это начальное направление это вопрос философии. Проблема в том, что часто жена программиста лучше его самого знает, на философском уровне, что он делает и почему. Элементарные философские категории: мышление, сознание, обусловленность программисту неведомы. И это странно, если сравнить способность программиста мыслить, например, читая статьи по функциональному программированию или алгоритмам поиска, вперемешку со статьями видных русских или европейских философов, окажется, что собственно навык мышления у программистов развит не меньше, а то и больше. Вот только язык программиста очень богат пока он рассуждает о паттерн-матчинге и жалок и органичен когда ему надо выйти из своей песочницы, оторваться от IDE и файлового менеджера.
Читать дальше →
Total votes 76: ↑57 and ↓19+38
Comments87

Философия программирования 3 — Чичиков и программиат

Reading time12 min
Views24K
Где вы нашли философию у Дональда Кнута? Академическое сообщество, это — 20 сумасшедших учёных, 2000 чичиковых, 20000 бюрократов и миллион детишек. Кнут это — Чичиков. На западе, даже сумасшедший учёный — умеет быть медийным, у нас это — «ранимые люди, с ними надо очень бережно, в лучшем смысле слова». Не могут связать двух слов, обижаются на вопросы. Поэтому в нашей науке видны только чичиковы, они раздают и получают награды, становятся директорами, основывают лаборатории, распиливают гранты, пристраивают своих. С прессой общаются, правда, тоже с трудом, — совок. А на западе это — развитой класс, они умеют работать с прессой, позиционироваться, колонизировать, занимать ниши, основывать религии. Найти человека который прочитал «Искусство Программирования» или «Конкретная Математика» практически невозможно, — те, кто считают Кнута за авторитет слишком глупы чтобы прочитать их, а те, что поумнее — читают книжки получше. Видимо, поэтому Кнут платил по 2.56 за каждую найденную опечатку, в надежде, что хотя-бы прочитают. Все его, с позволения сказать, книги — это копипаста алгоритмов из стэнфордских журналов, разбавленная топорным юмором, человек просто вовремя занял тему. А «детишки» от науки читают то, что им дают взрослые дяди — бюрократы и чичиковы. Вот и выходит, у бюрократов нет мозгов, у чичиковых есть мозги, но нет совести, сумасшедшие учёные — ранимые люди, обижаются.

Читать дальше →
Total votes 55: ↑25 and ↓30-5
Comments38

60 FPS? Легко! pointer-events:none!

Reading time2 min
Views98K


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

.hover .element:hover {
  box-shadow: 1px 1px 1px #000;
}
Читать дальше →
Total votes 144: ↑138 and ↓6+132
Comments58

Оптимизируем производительность веб-страницы: CSS

Reading time5 min
Views51K
В наше время скорость интернета довольно высока. Казалось бы, можно забыть о тех временах, когда нам приходилось ждать по 20-30 (а то и больше) секунд, чтобы веб-страница загрузилась и отобразилась на экране — теперь мы ждём отрисовки страницы в среднем около одной-двух секунд. Однако не стоит забывать, что значительная часть юзеров заходит на ваш сайт с мобильных устройств, на которых связь не всегда стабильна. В связи с этим будет совсем не лишним уделить немного внимания оптимизации вашего кода.

В этой статье речь пойдёт о различных методах оптимизации таблиц стилей. Я расскажу о том, что влияет на скорость отрисовки страницы, как заставить браузер отрисовывать страницу быстрее и какие инструменты использовать для оптимизации.
Читать дальше →
Total votes 42: ↑32 and ↓10+22
Comments22

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity