Как стать автором
Обновить
80
0
Mr. Skam @mrskam

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

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

Особенности загрузки файлов на HTML5

Время на прочтение5 мин
Количество просмотров59K
После некоторого, опыта решил написать небольшую статью-шпаргалку о загрузке файлов с использованием возможностей HTML5, а именно File API.

Читайте далее:
  1. Поддержка браузерами.
  2. Загрузка через Form Data.
  3. Загрузка через File Reader.

Читать дальше →
Всего голосов 52: ↑49 и ↓3+46
Комментарии25

Новые аттачи в Яндекс.Почте

Время на прочтение8 мин
Количество просмотров33K
Мы стремимся к тому, чтобы все части Яндекс.Почты одинаково хорошо работали у всех пользователей. Сегодня мы расскажем вам о том, как и зачем полностью переписали блок добавления аттачей. В этой статье — про отказ от флеша, поддержку возможностей современных браузеров и, как результат, увеличение скорости и надёжности загрузки файлов.

Проблема

Раньше всю аудиторию Яндекс.Почты мы разделяли на пользователей с флешем и без.

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

А вот с пользователями без флеша (8-10% от дневной аудитории) было сложнее. Мы предлагали им загружать файлы через обычную форму с />. Файлы из неё отправлялись через iframe вместе с содержимым самого письма, и это занимало много времени. Нажав кнопку «Отправить», пользователь долго ждал, пока загрузятся файлы.
Читать дальше →
Всего голосов 149: ↑133 и ↓16+117
Комментарии39

Бумажные макеты интерфейсов браузера, смартфонов и планшетов

Время на прочтение1 мин
Количество просмотров19K
При прототипировании мобильных и веб-приложений очень помогают распечатанные на обычном принтере специальные заготовки интерфейсов. Interface Sketch — это лучшее, что я встречал для этих нужд.

Читать дальше →
Всего голосов 45: ↑40 и ↓5+35
Комментарии10

Система уведомлений о событиях на сайте (на примере аудиоплеера ВКонтакте)

Время на прочтение2 мин
Количество просмотров37K
Приветствую.

Думаю, многие, кто имеет аккаунт ВКонтакте и слушает там музыку, замечали, что если на одной вкладке включить трек, а затем уже на другой включить второй, первый трек уйдет в паузу. Примерно то же самое происходит с различными уведомлениями (новое сообщение, ответ на комментарий/запись и т.д.) — отображается оно только в активной вкладке. Кому интересно как это работет и каким образом сделать подобное у себя на сайте, милости просим за хабракат.
Читать дальше →
Всего голосов 94: ↑90 и ↓4+86
Комментарии38

Оптическое распознавание символов в Linux

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

Введение


Это не просто обзор существующих OCR (мы будем говорить всего о трёх) и не руководство по установке (хотя установка будет описана). Эта статья была создана с целью разобраться, что и как реально может распознать русский и английский языки в Linux.
Читать дальше →
Всего голосов 87: ↑82 и ↓5+77
Комментарии24

Ещё семь фич HTML5, о которых вы могли не знать

Время на прочтение3 мин
Количество просмотров89K
Доброго времени суток!

Все мы достаточно наслышаны об HTML5 и его возможностях. Например, элементы audio и video, которые у всех на слуху. Но несмотря на это, существует парочка тегов, о которых знают далеко не все, и о которых не знал я до недавнего времени. Итак, вот чем я хочу с вами поделиться.
Читать дальше →
Всего голосов 201: ↑170 и ↓31+139
Комментарии96

О том как я на Java из PDF флэш получал

Время на прочтение6 мин
Количество просмотров8.8K
image
Давным давно, когда трава была зеленее, меня поймали и долго пытали пришлось мне повышать перформанс в одной чудесной связке.

Как задачу понял архитектор


Дано: есть безумный каталог изделий в виде большого количества PDF по паре тыщ страниц каждый. Надо их выдать в веб в виде красочных анимированных презентаций.

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

Проблема: каталоги постоянно меняются, а конвертация только одного гроссбуха из каталога занимает больше часа(!).

Почему так и как улучшить?

Читать дальше →
Всего голосов 27: ↑21 и ↓6+15
Комментарии13

TypeScript: язык для разработки больших приложений на JavaScript

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


Microsoft представила язык программирования TypeScript, который является надмножеством JavaScript, поддерживает статическую типизацию, модули, определение классов и интерфейсов. TypeScript транслируется в чистый JS, исполняется в любых браузерах, в Node.js и т.д.

Транслятор TypeScript вышел под лицензией Apache 2.0, с исходниками на CodePlex. Microsoft предлагает плагины для Emacs, Sublime Text и Vim.
Читать дальше →
Всего голосов 95: ↑81 и ↓14+67
Комментарии140

Twitter Bootstrap в стиле Windows 8

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


Дизайн Windows 8 становится все популярнее в веб-дизайне, и вот всеми любимый фреймворк Twitter Bootstrap обзавелся Metro-дизайном — Bootmetro.
Читать дальше →
Всего голосов 99: ↑73 и ↓26+47
Комментарии42

Восстановление расфокусированных и смазанных изображений. Повышаем качество

Время на прочтение5 мин
Количество просмотров210K
Представляю вашему вниманию заключительную статью из трилогии «Восстановление расфокусированных и смазанных изображений». Первые две вызвали заметный интерес — область, действительно, интересная. В этой части я рассмотрю семейство методов, которые дают лучшее качество, по сравнении со стандартным Винеровским фильтром — это методы, основанные на Total Variaton prior.
Также по традиции я выложил новую версию SmartDeblur (вместе с исходниками в open-source) в которой реализовал этот метод. Итоговое качество получилось на уровне коммерческих аналогов типа Topaz InFocus. Вот пример обработки реального изображения с очень большим размытием:


Читать дальше →
Всего голосов 355: ↑352 и ↓3+349
Комментарии86

Мы сделали это! У Flash/Flex разработчиков будет livecoding

Время на прочтение1 мин
Количество просмотров12K
Это нужно видеть. Вы редактируете код и сразу видите результат, без перегрузки flash-приложения.
Мы показывали эту демку на ITSea 2012 в Черногории.


Читать дальше →
Всего голосов 56: ↑54 и ↓2+52
Комментарии35

Красной таблетки не существует

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

О чем это


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

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

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

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

Читать дальше →
Всего голосов 355: ↑326 и ↓29+297
Комментарии348

Yate: Яндекс.Почта перешла на новый шаблонизатор

Время на прочтение5 мин
Количество просмотров63K
imageНекоторое время назад мы писали, что в Яндекс.Почте появился новый интерфейс, в котором используется шаблонизация данных в браузере. Немногие крупные сервисы отваживались на это, но мы и сейчас считаем такое решение наиболее удачным. Оно не только ускорило работу интерфейса, но и позволяет экономить трафик пользователя и эффективнее расходовать процессорное время серверов.

Тогда в качестве шаблонизатора мы использовали XSL, а данные передавали в формате XML. Переведя проект на новый интерфейс, мы начали искать другие способы ускорения работы интерфейса Яндекс.Почты.

Недавно мы перевели всю Почту на JS-шаблонизатор и JSON-данные.
И вот как это проходило
Всего голосов 173: ↑159 и ↓14+145
Комментарии185

Разукрашиваем вывод mysql-client в консоли

Время на прочтение4 мин
Количество просмотров30K
Цвет и звук — это те небольшие радости, которые могут разукрасить и облегчить будние администратора при постоянной работе с консолью. Вывод цветовой информации регулируется так называемым escape-последовательностями, определяющими среди прочего цвет текста и цвет фона.

Общий вид: \033[Xm, где X — это значение параметра (цифра). Например, echo -ne "\033[34mHELLO" выведет синим цветом «HELLO». Таблицу цветов и других доступных параметров (подчеркивание, мигание и т.п.) можно получить в документации man console_codes в разделе «ECMA-48 Set Graphics Rendition». Обычно поддержка цвета интегрирована в само приложение, но mysql-client не входит в число таких программ.

В интернете не раз был встречен вопрос о разукрашивании консоли mysql, но нигде не нашлось рецепта. Только общие слова «может быть состряпать обертку» или «посмотрите в исходном коде». Такой вопрос на StackOverflow жил без ответа более 2 лет! «Жил» было специально употреблено в прошедшем времени, потому что ответ нашелся.

Поможет нам утилита grc. Она доступна в большинстве дистрибутивов и о ней многие знают. Но как обернуть в нее вывод mysql-client?


Читать дальше →
Всего голосов 103: ↑102 и ↓1+101
Комментарии30

Как организовать процесс подписки на вашем сайте

Время на прочтение5 мин
Количество просмотров37K
Если у вас есть сайт, вы наверняка озабочены тем, чтобы ваши посетители могли получать новости, обновления и предложения самыми разными путями — через социальные сети, RSS, почту и так далее. Во всех случаях на пути пользователя стоит процесс подписки — и если в социальных сетях он упрощён максимально, то подписка на email-рассылку очень часто грешит ненужными сложностями. Поэтому мы решили посвятить очередную статью в нашем блоге юзабилити процесса подписки на вашу рассылку. На основе опыта UniSender мы расскажем о том, как упростить жизнь себе и вашему посетителю. Для начала разберём несколько грубых ошибок на следующем примере:


Читать дальше →
Всего голосов 41: ↑35 и ↓6+29
Комментарии9

Saltarelle: open source C# — JavaScript компилятор

Время на прочтение2 мин
Количество просмотров8K
Добрый день. Наша команда (без ссылок, это не важно) решила попробовать новый инструмент-компилятор Saltarelle в разработке своего проекта и, так как Хабр часто нам помогал полезной информацией, решили внести и свой скромный вклад в его копилку знаний и перевести запись в блоге разработчика.
Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии61

Советы по Android Tabs

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



В этой статье я хотел бы взглянуть на текущее состояние интерфейсов с вкладками и дать несколько советов, как сохранить единообразный стиль платформы.
Читать дальше →
Всего голосов 49: ↑45 и ↓4+41
Комментарии21

Авторизация пользователей, у которых заблокированы cookies

Время на прочтение3 мин
Количество просмотров10K
Во всех браузерах есть опция, позволяющая запретить приём cookies со сторонних сайтов (например, из iframe с отличным от текущего доменом). В некоторых браузерах (привет, Apple) эта функция включена по умолчанию, но часто пользователи самостоятельно её включают и благополучно об этом забывают, вследствие чего разработчик не может записать необходимые данные в cookies или localstorage. Например, при разработке приложений для ВКонтакте вы можете столкнуться с такой проблемой.

Я хочу поделиться простым и изящным решением, как обойти это ограничение.
Читать дальше →
Всего голосов 17: ↑9 и ↓8+1
Комментарии14

Что такое поврежденный файл? OfficeRecovery классифицирует и иллюстрирует характерные примеры испорченных файлов

Время на прочтение8 мин
Количество просмотров31K
Чтобы понять, что такое поврежденный файл, рассмотрим сначала, что такое файл неповрежденный, т.е. целостный.

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

Целостный файл лежит на диске в виде блоков, как показано на рис. 1. При чтении файла блоки, из которых состоит файл, составляются в определенной последовательности, и в результате получается образ файла в памяти, готовый к обработке программой. Именно таким образом происходит открытие большинства файлов, которыми мы пользуемся ежедневно – документов Word, таблиц Excel, картинок и всего остального.

Внимательный читатель обратит внимание, что блоки, из которых составляется файл, размещены в разных местах диска. Это важный фактор, оказывающий большое влияние как на порчу, так и последующее восстановление файлов.
Целостный файл
Рис. 1. Целостный файл

Читать дальше про разновидности испорченных файлов, с иллюстрациями
Всего голосов 27: ↑11 и ↓16-5
Комментарии1

Привязка своего домена к Windows Azure (на примере RU-CENTER)

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


По умолчанию для создаваемых сервисов, сайтов, хранилищ Windows Azure предлагает свои собственные имена и внутренний DNS, который резолвит имена второго уровня в пределах cloudapp.net, azurewebsites.net, blob.core.windows.net и т.п. Но вопрос собственного доменного имени возникает практически для любого серьезного облачного приложения или сервиса. Помимо вопроса престижа, иногда есть еще чисто технические причины, например, обход проблемы c кросс доменными скриптами.

Свой домен (Custom Domain Name) к сервисам Windows Azure можно привязать следующими способами:
  • с помощью CNAME записи вашего домена;
  • с помощью A записи.

В случае с CNAME вы застрахованы от проблем, связанных с изменением VIP (Public Virtual IP Address), который закреплен за сервисом, развернутым в Windows Azure, тк. мэппинг происходит на уровне алиасов: yourservice.cloudapp.net (Windows Azure) и www.mydomain.ru (CNAME — www), а не IP. Но здесь не возможна привязка к корневому домену, т.е. mydomain.com (т.к. обязательно должен быть www или другой алиас).

В случае c A записью возможна привязка к корневому домену, но появляется зависимость от VIP адреса службы, т.к. A запись мэппиться на определенный IP-адрес. А IP-адрес у службы может поменяться, например, при новом деплойменете или перезагрузки ОС. Можно, кстати, применять комбинированный подход, т.е. указывать CNAME и A записи. Подробнее об IP адресах в Windows Azure читайте в хабростатье Время жизни статических IP-адресов в Windows Azure.

Примечание. Еще можно воспользоваться сторонними сервисами, например, DNS Azure, которые делают примерно все то же самое, что будет описано ниже, но автоматически и прозрачно для клиента.

Статья содержит много картинок.
Дальше
Всего голосов 28: ↑19 и ↓9+10
Комментарии8

Информация

В рейтинге
Не участвует
Откуда
Гатчина, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность