Search
Write a publication
Pull to refresh
24
0
ilnarb @ilnarb

User

Send message

Никогда не отвлекай программиста

Reading time2 min
Views242K
Во многих компаниях программистам запрещают работать в наушниках или отвлекают их по мелким вопросам. Вероятно, причина кроется в плохой информированности менеджеров и других сотрудников, насколько вредно так делать.

Крис Парнин (Chris Parnin) из технологического института Джорджии решил восполнить этот недостаток и опубликовал чрезвычайно насыщенную статью со ссылками на различные исследования по этой теме.

Для начала, несколько фактов, которые относятся ко всем работникам интеллектуального труда. Задача, прерванная по ходу выполнения, занимает в два раза больше времени и содержит вдвое больше ошибок, чем та же задача, которая выполнялась без прерывания (Czerwinski:04). Офисные сотрудники вынуждены отвлекаться при выполнении 57% задач (Mark:05). Опросы говорят о том, что сотруднику требуется в среднем 15 минут, чтобы вернуться в нормальный ритм после того, как его отвлекли (vanSolingen:98).
Читать дальше →

Думайте при разработке

Reading time16 min
Views51K
Недавно наткнулся на ошибку в Android приложении Яндекс.Метро. Если бы был чемпионкой мира по синхронному плаванию, то обязательно спросил бы: «Кто создавал программу „для галочки“? Кто работал „на отшибись“? Кто слабое звено?». Недоумение вызывала не сама ошибка, а то, что она попала в приложение и всё ещё не исправлена.

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

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

В статье же мы будем рассматривать распространённые приложения, которые протестировать может любой участник команды. Давайте проведём небольшой эксперимент. Если у вас нет Android устройства, то попросите минут на десять у коллег или друзей. Скачайте приложение Яндекс.Метро и попробуйте его протестировать. Интересует актуальная на текущий момент версия 1.63 от 02.11.2012 сборка 159 (на Google Play стоит дата 21.01.2013). Для корректности проверки предлагаю снять галочку «Автообновление» в настройках Google Play.

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

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


Продолжение

Один из способов адаптации настольных приложений под сенсорный экран

Reading time3 min
Views14K
Поработав некоторое время с Windows 8 на планшете и ультрабуке с сенсорным экраном, я столкнулся с одной интересной особенностью. При работе с полями ввода в настольных (desktop) приложениях экранная клавиатура не появляется автоматически, приходится каждый раз вызывать путем касания значка в системном лотке, а потом закрывать нажатием на кнопку закрытия окна.
В Windows UI приложениях такой проблемы нет, клавиатура автоматически появляется, как только поле ввода получает фокус и исчезает, когда в ней отпадает необходимость — например, элемент управления потерял фокус ввода, либо пользователь начал вводить текст с «железной» клавиатуры.
Так как я не только пользователь, но и разработчик, то подумал: а что если перенести это поведение экранной клавиатуры и в свои настольные приложения? Задача поставлена, ищем решение.
Поздравляю хабрачитателей с приближающимися праздниками! Всем, дочитавшим до конца — готовый к использованию код в подарок! :)
Читать дальше →

Тестирование в Mail.Ru Group

Reading time12 min
Views41K
Эта статья написана по мотивам одноименного доклада на Highload++'2012. Предназначена она для руководителей, которые смогут, взглянув на наше тестирование, сравнить его с тестированием в своем проекте, для программистов и системных администраторов, которым представится возможность посмотреть на тестирование как на очень интересную работу, и, конечно, для тестировщиков.

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

Топ-10 результатов в области алгоритмов за 2012 год

Reading time4 min
Views50K
Каждый год 31 декабря David Eppstein публикует обзор препринтов за прошедший год, посвященных структурам данных и алгоритмам, опубликованным на arxiv.org. По ссылкам можно познакомиться с материалами за 2010 и 2011 (мой перевод) годы.

Раздел cs.DS развивается хорошими темпами: в этом году появилось 935 препринтов по алгоритмам и структурам данных, в то время как за 2011 их было 798. Раздел пока не дотягивает до сотни в месяц, хотя в июле (98 препринтов) этот порог был очень близок.

Это мой личный список из десятка препринтов, которые кажутся мне особенно интересными. Как обычно, я не вношу в него мои собственные работы и некоторые другие, о которых я писал раньше. Кроме того, здесь нет результатов (например, более быстрый алгоритм нахождения максимального потока), не появлявшихся на arxiv.org.

Вот они, в хронологическом порядке:
Читать дальше →

Что нам стоит Git настроить!

Reading time3 min
Views107K

Дарова, хабр! (ничего оригинальнее не придумал)

Сомневаюсь что эта заметка тянет на полноценный пост, но я все же оставлю ее здесь. О чем же пойдет речь?

Все мы слышали о Git. Все мы знаем что он — хорош. Но лишь немногие пытаются что-то с ним делать, как-то его протвикерить. Сразу говорю, тут не будет ничего паранормального, только немного работы с файлом .gitconfig. Да-да, именно с тем файлом, который так трепетно пылится у вас в домашней директории.

Так, мне уже немного надоело писать этот, по сути, бессмысленный вступительный текст, так что давайте уже начнем что-то делать.
Читать дальше →

Определение местоположения без GPS: как устроен Яндекс.Локатор

Reading time8 min
Views298K
Сейчас всё больше мобильных приложений становятся геозависимыми. Одни просто не имеют смысла без знаний о местоположении пользователя, другие становятся с ним удобнее. Это так называемые Location Based Services (LBS): навигаторы, форскверы, инстаграмы с геотегами фотографий и даже приложения-напоминалки, которые срабатывают около конкретного места, например, рядом с офисом или магазином.

Для сервисов и приложений Яндекса мы создали собственную реализацию метода определения местоположения без GPS — Яндекс.Локатор. Он экономит время пользователя и делает наши приложения чуточку умнее. В Навигаторе и Картах она избавляет от ввода начальной точки маршрута, даже если вы на крытой парковке. А при выборе фильма в Киноафише или товара в мобильном Маркете помогает сразу показать, где их найти именно в вашем районе города. Ну и, разумеется, при поиске кафе и банкоматов — позволяет показывать вам сразу ближайшие, даже когда вы в метро.
image

Технологию мы давно открыли в виде бесплатного API. Сегодня хотим рассказать, как она устроена.

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

Своя игра с JavaScript и Canvas

Reading time9 min
Views106K
imageНе так давно мне стало любопытно, насколько сносно современные браузеры поддерживают HTML5 и я не нашел лучшего
способа, чем написать простейший 2D платформер. Помимо удовольствия от разработки игрушки и улучшения навыков в использовании JavaScript, в ходе развлечения кропотливой работы был накоплен определенный опыт и эмпирическим путем были найдены основные грабли, на многие из которых мне пришлось наступить. В этой статье я попробую кратко и с примерами резюмировать то, что вынес для себя из проделанной работы. Желающих создать свое высокопроизводительное JavaScript приложение, эффективно работающее с графикой, прошу под кат.
Читать дальше →

Разбиение цикла как пример высокоуровневой оптимизации

Reading time8 min
Views7.7K
image

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

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

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

Reading time12 min
Views17K


Продолжаю разговор об оптимизации приложений, начатый здесь в посте «Существует ли простая оценка качества оптимизации приложения?»

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

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

Существует ли простая оценка качества оптимизации приложения?

Reading time7 min
Views10K
image

Тише едешь дальше будешь...? Оценка производительности.



Больше 7 лет я занимаюсь анализом производительности в составе группы Performance Analysis новосибирского отделения Интел. Мы работаем над улучшением производительности различных приложений, а точнее, ищем способы, с помощью которых ее смог бы улучшить наш компилятор. За это время накопился полезный опыт, который, на мой взгляд, был бы интересен посетителям уважаемого Хабра. Речь в данном случае будет идти не об алгоритмической оптимизации приложений, а о различных модификациях приложений без принципиального изменения их алгоритмов. Понятно, что алгоритмические оптимизации программы тоже имеют право на жизнь, но это совсем другая задача.

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

TAICHI – очередной пионер от ASUS

Reading time8 min
Views99K
В постсоветском пространстве слово пионер для многих еще ассоциируется с алыми галстуками, зарницами и построениями под красными знаменами. Однако в данном случае в названии статьи я имел в виду старое значение – первопроходцы, открывающие новые территории. И ASUS – одна из немногих компаний, которая не боится выпускать пионеров.
Удачно выпустив свой первый нетбук, ASUS создала новый тренд, который подхватили все производители. Хэдлайнеры хайтек-обзоров последних лет – Transformer и PadFone также успели завоевать те рынки, которые, казалось бы, уже давно заняты другими производителями.
Героя сегодняшнего обзора – пионера ASUS TAICHI показали нам в июне на выставке «Computex 2012», и вот сейчас устройство поступило в продажу. Это первый в мире ноутбук и планшет два в одном, с двумя экранами. Давайте же разберемся, насколько хорошей оказалась реализация этой необычной идеи.


Посмотреть обзор

Bloggers Meet-up: есть контакт или кто есть кто на хабре

Reading time2 min
Views5.4K

Буквально за несколько дней до конца света группа прогрессивных блоггеров и сотрудников компании Intel собралась в Москве, в милом заведении под названием banka, чтобы послушать других и себя показать. Тем для обсуждения было предостаточно: итоги года надо подвести, нелегкий блоггерский быт обсудить. Ну и развлечься, конечно, перед большим событием: все-таки конец света не каждую неделю случается. Что из этого всего получилось, можно посмотреть из небольшого отчета. Информация для самых глазастых: на фотографиях ниже вы найдете двух человек из Топ-5 рейтинга хабралюдей. Если найдете, конечно. Попробуйте!
Посмотреть фотоотчет

Linux растёт! Новые Mint 14 для OEM; легковесные DSL, Core и Puppy, и всё больше Linux-вакансий в новой инфографике «State of Linux»

Reading time3 min
Views52K
image

К европейской конференции LinuxCon Europe, прошедшей в Барселоне, в Pingdom создали интересную инфографику «Как дела у Линукс» (инфографика внутри поста).

Невооружённым глазом видно, что Linux снова привлекает всё больше внимания, как в отраслевой прессе, так и среди обычных пользователей. Регулярно встречаются любопытные топики вроде такого: Dec 4: «Been a Windows head. Looking for change», или такого: «First time Linux experience — extremely disappointed», и даже: Linux-позитив.

Тем не менее, в продаже сложно встретить ноутбук или десктоп на Linux. Конфигурации «без ОС» встречаются — так почему бы не установить туда, к примеру, Linux Mint (раз это самый популярный дистрибутив, согласно DistroWatch), пусть и на правах «as is», без какой-либо поддержки?
Читать дальше →

Об одном методе распределения памяти

Reading time17 min
Views29K
image
Не секрет, что иногда выделение памяти требует отдельных решений. Например — когда память выделяется и освобождается стремительным домкратом потоком, в параллельных задачах.

В результате стандартный консервативный аллокатор выстраивает все запросы в очередь на pthread_mutex / critical section. И наш многоядерный процессор медленно и печально едет на первой передаче.

И что с этим делать? Познакомимся поближе с деталями реализации метода Scalable Lock-Free Dynamic Memory Allocation. Maged M. Michael. IBM Thomas J. Watson Research Center.

Самый простой код что я сумел найти — написан под LGPL камрадами Scott Schneider и Christos Antonopoulos. Его и рассмотрим.

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

Рейтинг Mail.Ru: прямо в цель

Reading time3 min
Views7.7K
В Рейтинге, как и в других системах веб-статистики, давным-давно существует отслеживание просмотра страницы. Вы всегда могли посмотреть, сколько раз посетители посмотрели страницу с контактами, страницу с покупками, и даже отследить просмотр страницы с благодарностью за покупку. Однако некоторые события в жизни сайта не удается отследить таким образом: скачивание файла, просмотр видео, события во Flash- и Ajax-сайтах, возникновение ошибок.

В итоге мы решили сделать функциональность отслеживания достижения целей. Если говорить коротко, цель – это то событие, которого мы ожидаем и которое хотим отследить.
Читать дальше →

Git Rebase: руководство по использованию

Reading time8 min
Views857K
Rebase — один из двух способов объединить изменения, сделанные в одной ветке, с другой веткой. Начинающие и даже опытные пользователи git иногда испытывают нежелание пользоваться ей, так как не видят смысла осваивать еще один способ объединять изменения, когда уже и так прекрасно владеют операцией merge. В этой статье я бы хотел подробно разобрать теорию и практику использования rebase.

Теория


Итак, освежим теоретические знания о том, что же такое rebase. Для начала вкратце — у вас есть две ветки — master и feature, обе локальные, feature была создана от master в состоянии A и содержит в себе коммиты C, D и E. В ветку master после отделения от нее ветки feature был сделан 1 коммит B.


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

Патч, позволяющий каждому коннекту иметь много user lock объектов

Reading time1 min
Views4.1K
Привет,

Пока был в отпуске, написал патч для MySQL, позволяющий каждому коннекту владеть несколькими user lock объектами.
Патч доступен здесь:

https://code.launchpad.net/~kostja/percona-server/userlock

Это последний percona-server (5.5) + новые пользовательские локи.

Подробнее про патч написал в своём блоге.
Надеюсь, кому-то окажется полезен. Буду рад комментариям по этой фиче.

Рейтинг Mail.Ru научился смотреть Smart TV

Reading time2 min
Views9.6K
Все больше и больше наших коллег в Mail.Ru Group покупают себе домой «телевизоры с интернетом» и более или менее активно ими пользуются. В какой-то момент, обменявшись опытом, мы решили узнать, как их используют в рунете. Так или примерно так на Рейтинге Mail.Ru появилась статистика по пользователям Smart TV.

Естественно, она открыта всем желающим, и каждый может сделать свои собственные выводы, но я поделюсь теми вещами, которые бросились в глаза мне.
image
Читать дальше →

Оптимальные опции для x86 GCC

Reading time4 min
Views57K
      Распространено мнение, что GCC отстает по производительности от других компиляторов. В этой статье мы постараемся разобраться, какие базовые оптимизации GCC компилятора стоит применить для достижения приемлемой производительности.

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

Information

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