Pull to refresh
13
0
Артем Шитов @artemshitov

Digital Consultant

Send message

Как устроен краткосрочный прогноз на Яндекс.Пробках

Reading time8 min
Views76K
Информация о пробках появилась на Яндексе в 2006 году. Начинали мы с необходимого — научились строить схему загруженности городских улиц и учитывать текущую ситуацию при прокладывании маршрутов. Автомобилисты, ориентируясь перед выездом на эту информацию, уже могли сэкономить время в пути:
image

Затем, чтобы помогать водителям непосредственно во время движения, мы добавили в мобильные Яндекс.Карты (и, как следствие, в Яндекс.Навигатор) автоматическое перестроение маршрута. Приложения научились адаптировать маршрут при каждом заметном изменении ситуации в городе.

Собрав на десктопе и в мобильном информацию про «сейчас», мы перешли к решению вопроса «а как будет потом?»:
image

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

image

Неделю назад на Яндекс.Картах появилась возможность посмотреть изменения пробок в ближайший час — следующий наш шаг в решении вопроса про будущее. Для тех, кто в этом году не смог приехать на Yet another Conference, мы сегодня расскажем, что у нашего прогноза внутри, и как оно там оказалось.
Переходим к подробностям!
Total votes 133: ↑128 and ↓5+123
Comments131

Обновление банковского приложения. Предварительный показ и приглашение реализовать ваши идеи в нашем приложении (силами наших разработчиков)

Reading time2 min
Views10K
Всем привет.

Наш первый пост совпал с подготовкой к выпуску новой версии банковского приложения для iOS. Мы решили об этом рассказать. Но чтобы и вам и нам было интересно, и чтобы был диалог, мы хотим не только показать черновые картинки (они под катом), но еще и предложить вам поучаствовать в разработке оформления нашего приложения (для iPad).

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

Потроллить эскизы приложения для iPad
Total votes 50: ↑43 and ↓7+36
Comments53

Беспроводные зарядные устройства: о новинках, принципах работы и хороших новостях

Reading time4 min
Views35K

В бурном потоке информации о закончившейся недавно выставке «Computex 2012» остались практически незамеченными две новости, достойные, на наш взгляд, лучшей доли – и не только потому, что они непосредственно связаны с Intel, но и… впрочем, об этом поговорим в заключительной части.
А пока разрешите представить вам два варианта использования технологий беспроводной зарядки – какими их видит компания.
Читать дальше →
Total votes 30: ↑25 and ↓5+20
Comments33

MySQL в миллион раз быстрее MemSQL

Reading time2 min
Views14K
Пару дней назад по мировой технологической прессе распространился пиар MemSQL — базы данных нового поколения от Никиты Шамгунова (shamg), которая якобы показывает скорость в 30 раз выше, чем MySQL и при этом «надёжна по дефолту» (durable by default), как сказано у них на сайте.

Представители MySQL не снизошли до ответа на эти очевидные маркетинговые лозунги. Но вот бывший сотрудник MySQL, Домас Митузас (Domas Mituzas), ныне специалист по базам данных в Facebook и Wikipedia, всё-таки не выдержал и решил разобраться, как именно нас обманывают — и ответить тем же, то есть показать примеры, где MemSQL работает в сотни, тысячи и даже миллион раз медленнее, чем MySQL.
Читать дальше →
Total votes 92: ↑81 and ↓11+70
Comments50

Некоторые “подводные камни” разработки под Android

Reading time9 min
Views69K
Недавно наша команда завершила разработку приложения под Android. В процессе разработки и затем поддержки мы столкнулись с некоторыми проблемами технического характера. Часть из них — это наши баги, которых мы могли бы избежать, другая часть — это совсем неочевидные особенности Android, которые либо плохо описаны в документации, либо не описаны вообще.

В этой статье я бы хотел рассмотреть несколько реальных багов, которые возникли у наших пользователей и рассказать о путях их решения.

Статья не претендует на подробный анализ потенциальных проблем, это просто рассказ из жизни одно реального Android приложения.

Читать дальше →
Total votes 57: ↑44 and ↓13+31
Comments46

2,56 терабита/c в «закрученных» волнах

Reading time1 min
Views2K
В журнале Nature Photonics опубликована научная статья группы американских и израильских исследователей, которые провели эксперимент по передаче данных на скорости 2,56 терабита/с в пучках света через свободное пространство.

Этот эксперимент доказал сверхэффективность нового метода модуляции сигнала, основанного на эффекте орбитального углового момента световой волны (OAM), то есть «закрученных» волнах. В 90-е годы учёные начали использовать OAM в разных сферах: от оптических экспериментов до квантовой обработки информации. В начале 2000-х «закрученные» волны впервые испытали для передачи данных.

Вышеупомянутая группа учёных сумела применить модуляцию и мультиплексирование волн, так что получилось совместить в одном пучке несколько скрученных волн с разным значением орбитального углового момента. Более того, они доказали масштабируемость системы в пространстве, то есть возможность передавать нескольких пучков одновременно.
Читать дальше →
Total votes 38: ↑34 and ↓4+30
Comments17

Windows 8: Проектирование интерфейсов

Reading time1 min
Views19K

В продолжении темы о подготовке MSDN к выходу Windows 8, хочется отметить ещё одну порцию полезных материалов. На этот раз собрана документация по проектированию интерфейсов. Приведены рекомендации и руководство о том, как спланировать все сценарии использования вашего приложения, как спроектировать интерфейс, показаны конкретные примеры и многое другое.
Читать дальше →
Total votes 76: ↑48 and ↓28+20
Comments10

Вирус Flame создавался специалистами США и Израиля с целью саботажа иранской ядерной программы

Reading time1 min
Views2.1K
Washington Post со ссылкой на неназванных западных чиновников сообщила о том, что шпионский вирус Flame разрабатывался совместно специалистами США и Израиля для получения информации, которая могла бы быть полезна в срыве иранской ядерной программы.
Читать дальше →
Total votes 40: ↑33 and ↓7+26
Comments20

API по управлению энергией в Android может вызвать повышенный ее расход

Reading time1 min
Views16K
Исследователи из Университета Пердью, занимающиеся вопросами энергетической эффективности работы приложений в Android (недавно они показали, что до 75% потребления энергии приложением относится к процессам показа рекламы в нем), выяснили, что многие приложения неправильно используют API по управлению питанием (wakelock).

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

Однако профессор И. Чарли Ху отметил, что «программисты всего лишь люди, и когда они делают ошибки при использовании этого API, батарея может кончиться всего за несколько часов». Ученые назвали это «энергетическим багом отсутствия сна» (no-sleep energy bugs) — фактически он не дает устройству переходить в режим сна и оставляет его все время включенным.
Читать дальше →
Total votes 35: ↑30 and ↓5+25
Comments37

Линус Торвальдс: Nokia сделала ошибку с Windows Phone

Reading time1 min
Views65K
Линус Торвальдс, который уже 20 лет живет в США, на прошлой неделе посетил свою родину, Финляндию, для получения Millenium Technology Prize.

image

В ходе этого визита местное издание попыталось выяснить его мнение по поводу мобильной индустрии и ее взрывного развития последние годы. Оказалось, что на самом деле Линус не слишком любит мобильные телефоны, но сам в настоящее время владеет устройством с Android. Единственное, что ему нравится в нем — электронная почта.

«Я не использую этот телефон. Я читаю письма, потому что я люблю электронную почту».
Читать дальше →
Total votes 122: ↑103 and ↓19+84
Comments227

Плохие привычки программистов

Reading time5 min
Views15K


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

Наши привычки постоянно развиваются и меняются. Изменяется стиль кодирования, подход к написанию кода в целом. Обычно это хорошо, но иногда этот процесс минует некоторые плохие привычки и они надолго остаются с нами. Я хотел бы поделиться размышлениями о некоторых «не очень хороших» привычках, которые я наблюдал в себе и в других людях на протяжении многих лет. Некоторые даже могут быть не похожи на плохие…
Читать дальше →
Total votes 135: ↑113 and ↓22+91
Comments124

2ГИС знает, куда пойти обедать

Reading time1 min
Views11K
Чтобы облегчить выбор места обеда нашим пользователям, мы обзвонили тысячи предприятий общественного питания по более чем 150 городам и добавили в 2ГИС Онлайн и API дополнительные полезные подробности.

image
Клёвая инфографика внутри
Total votes 35: ↑30 and ↓5+25
Comments27

Бесплатного супа больше не будет

Reading time23 min
Views17K
Фундаментальный поворот к параллелизму в программировании

Автор: Герб Саттер
Перевод: Александр Качанов

The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
(By Herb Sutter)

Ссылка на оригинал статьи: www.gotw.ca/publications/concurrency-ddj.htm

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

Данная статья достаточно старая. Ей уже 7 лет, если считать с момента ее первой публикации в начале 2005 года. Помните об этом, когда будете читать перевод, так как многие вещи, которые для вас уже стали привычными, для автора статьи в 2005 году были в новинку и только-только появлялись.

Читать дальше →
Total votes 122: ↑113 and ↓9+104
Comments81

Способы проектирования баз данных в Android

Reading time5 min
Views14K
Работая Android разработчиком мне пришлось столкнуться с двумя различными подходами к проектированию баз данных в мобильных приложениях. Возможно кому-то излагаемое здесь покажется очевидным, а возможно кому-то даст новую идею или убережет от ошибок. В общем, без длинных предисловий переходим к делу…

Два взгляда на проблему


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

Добавим сюда сильно ограниченные аппаратные возможности мобильных платформ, в частности крохотный объем оперативной памяти. Ее и без того мало, так в дополнение к этому, Android ограничивает количество доступной RAM на процесс в зависимости от версии ОС от 16 до 48 МБ. И даже из этих нескольких мегабайт СУБД получает лишь часть, ведь есть еще и само приложение. Ну и в заключение, сам SQLite, в виду своих особенностей поддерживает только два уровня изолированности транзакций. Они либо сериализуются, либо вообще отключены!

В ситуации когда производительность приложения начинает упираться в производительность СУБД на помощь и может прийти альтернативный подход, назовем его key-value ориентированным. Вместо декомпозиции сущности на атрибуты и создания отдельных полей в таблице на каждый атрибут, сущность сохраняется “как есть” в одно единственное поле типа BLOB, иначе говоря сериализуется.
Читать дальше →
Total votes 25: ↑21 and ↓4+17
Comments25

Анализ структуры управления Flame

Reading time5 min
Views13K
Не прошло и пары недель с момента обнаружения Flame, как с помощью коллег из OpenDNS и GoDaddy мы смогли перенаправить вредоносные домены на наш сервер. В результате детального анализа полученной таким образом информации, наши эксперты пришли к следующим выводам:

• Командные серверы Flame, действовавшие в течение нескольких лет, были отключены сразу же после того, как на прошлой неделе «Лаборатория Касперского» раскрыла существование вредоносной программы.
• На данный момент известно более 80 доменов, задействовавшихся для передачи данных на командные серверы Flame, которые были зарегистрированы в период с 2008 по 2012 гг.
• За последние 4 года командные серверы Flame попеременно располагались в различных странах мира, включая Гонконг, Турцию, Германию, Польшу, Малайзию, Латвию, Великобританию и Швейцарию.
• Для регистрации доменов командных серверов Flame использовались фальшивые регистрационные данные и различные компании-регистраторы, причем данная активность началась еще в 2008 году.
• Злоумышленников, использующих Flame для кражи информации, особенно интересовали офисные документы, файлы PDF и чертежи AutoCAD.
• Данные, загружаемые на командные серверы Flame, шифровались с использованием относительно простых алгоритмов. Украденные документы сжимались при помощи библиотеки Zlib с открытым исходным кодом и модифицированного алгоритма PPDM-сжатия.
• По предварительным данным, 64-разрядная версия операционной системы Windows 7, которая ранее уже была рекомендована «Лабораторией Касперского» как одна из самых безопасных, оказалась не подвержена заражению Flame.

image
География распространения Flame
Читать дальше →
Total votes 36: ↑30 and ↓6+24
Comments14

В Google Analytics добавлена функция анализа размера окна браузера пользователя

Reading time1 min
Views5.4K


Не зря говорят, что Google Analytics — один из лучших инструментов для мониторинга и анализа посещаемости сайта. В общем-то, в этом пакете и так достаточно большой объем функций, но на днях разработчики добавили еще одну. Теперь можно проводить анализ соответствия вашего сайта размерам окна браузера посетителей. Эта функция появилась в результате сочетания двух других функций: отслеживания разрешения дисплея посетителей + browser size tool из Google Labs.

Читать дальше →
Total votes 59: ↑55 and ↓4+51
Comments21

Можно ли прибраться на компе раз и навсегда?

Reading time5 min
Views26K
«Пора бы прибраться на своем компе...» Думаю, эта мысль возникала у всех пользователей, и не раз. Без приборки любой комп рано или поздно превращается в свалку хлама, и найти нужные файлы становится все труднее. Даже если вырабатывается какая-то система каталогизации и хранения, новые интересы могут потребовать новых инструментов и новых иерархий. А если машин несколько или на одной машине уживаются несколько пользователей, все становится еще сложнее.

Я, конечно, пытался использовать какие-то методы сортировки помимо файловой системы — т.к. часто хочется упорядочить файлы не по одному критерию, а по нескольким равнозначным, что невозможно сделать в древовидной иерархии — требуется сетевая структура. Но все мои усилия разбивались об интерфейс. Судите сами.
Читать дальше →
Total votes 46: ↑37 and ↓9+28
Comments85

Javascript: ООП, прототипы, замыкания, «класс» Timer.js

Reading time19 min
Views96K
Здравствуйте программисты начинающие, законченные, а также все сочувствующие. Как известно, ничто не познается так хорошо, как на собственном опыте. Главное, чтобы опыт был полезный. И в продолжении этой простой мысли я хочу предложить заняться несколькими полезными делами сразу:
  • Побеседовать на тему «ООП с человеческим лицом».
  • Разобраться с прототипами в javascript, коротко и сердито!
  • Вспомнить, что «замыкание» это не только ценный мех… удар током.
  • Написать на javascript класс Timer — этакий планировщик событий для запуска анимаций, событий, любых функций.
  • Весело провести время!

Предупреждение! Если вы не ждете от статьи ничего веселого… то ошибаетесь. Людям с пониженным чувством юмора читать… еще более рекомендуется! Ну-с, приступим…
Читать дальше →
Total votes 101: ↑87 and ↓14+73
Comments51

Цитаты о языках программирования

Reading time3 min
Views40K
Что учёные, писатели и программисты думают о популярных языках программирования.

Все языки


«Есть два подхода к программированию. Первый — сделать программу настолько простой, чтобы в ней очевидно не было ошибок. А второй — сделать её настолько сложной, чтобы в ней не было очевидных ошибок.»
Tony Hoare. Профессор, занимался реализацией Алгол 60, сейчас исследователь в Microsoft Research.


Algol 60 (позже повлиявший на C)


«Я не мог устоять перед искушением добавить в язык нулевой указатель (null), просто потому, что его так легко было реализовать. Это привело к бессчётному множеству ошибок, уязвимостей и сбоев, которые нанесли ущерб, наверное, в миллиард долларов за последние сорок лет.»
Tony Hoare.
Читать дальше →
Total votes 256: ↑235 and ↓21+214
Comments103

Алгоритм Хаффмана на пальцах

Reading time5 min
Views521K
Вы вероятно слышали о Дэвиде Хаффмане и его популярном алгоритме сжатия. Если нет, то поищите информацию в интернете — в этой статье я не буду вас грузить историей или математикой. Сегодня я хочу просто попытаться показать вам практический пример применения алгоритма к символьной строке.
Разархивировать текст статьи
Total votes 58: ↑54 and ↓4+50
Comments59

Information

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