Как стать автором
Обновить
8
0

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

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

Корпоративная культура в компании Valve

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


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

Звучит как утопия? Знакомьтесь с принципами менеджмента в компании Valve, которая занимается разработкой компьютерных игр (Half-Life, Portal, Steam).
Читать дальше →
Всего голосов 184: ↑176 и ↓8+168
Комментарии159

Valve: как я здесь оказался, на что это похоже и чем я здесь занимаюсь

Время на прочтение14 мин
Количество просмотров64K
Автор оригинальной статьи — Майкл Эбраш, человек и пароход. Для тех, кому лень изучать википедию, отмечу, что это программист с более чем 30-летним стажем работы, который в свое время помог Кармаку сделать Quake, разработал GDI для Windows NT, приложил руку к созданию первых двух версий Xbox, а сейчас работает в R&D-отделе компании Valve.
В своей заметке он вспоминает, как зарождалась индустрия 3D-игр вообще и Valve в частности, рассказывает про свой опыт работы в различных корпорациях, приоткрывает завесу внутренней кухни Valve и ищет новых сотрудников. Статья большая, и я посчитал ее достаточно интересной для того, чтобы перевести на хабр.





Всё началось с Лавины*.

Если бы я не прочел её и не влюбился в идею Метавселенной, если бы она не заставила меня представить, насколько распределенная 3D сеть близка к воплощению в жизнь, если бы я не подумал я могу сделать это и, что более важно, я хочу сделать это, я бы никогда не встал на путь, который в конечном счете привел меня в Valve.

В 1994 году я уже несколько лет как работал на Microsoft. Однажды вечером, когда моя дочка рассматривала книги в магазине Little Professor в Sammamish Plateau, мне посчастливилось заметить Лавину на полке. Я взял книжку, прочитал первые страницы, решил купить и в итоге проглотил её за день. Параллельно я начал задумываться о том, что 80 процентов описанного в ней осуществимо прямо сейчас, и мне захотелось реализовать это сильнее, чем когда-либо вообще хотелось сделать что-то с компьютером — я всю жизнь читал научную фантастику, и вдруг мне выпал шанс превратить её в реальность. Так я попытался начать в Microsoft проект по созданию технологии сетевого 3D.

Читать дальше →
Всего голосов 222: ↑220 и ↓2+218
Комментарии98

Теория цвета

Время на прочтение2 мин
Количество просмотров298K
Первое впечатление — это все. Пословица «По одежке встречают, по уму провожают» актуальна не только в жизни, но и в дизайне. Впечатление от дизайна состоит из множества факторов, и один из важнейших — это цвет.

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

Основные цвета (Primary Colors)




Основные цвета палитры — красный, желтый и синий. Если говорить об основных цветах на экранах различных устройств — это RGB, красный, зеленый и синий.
Читать дальше →
Всего голосов 186: ↑160 и ↓26+134
Комментарии84

Простые стейт-машины на службе у разработчика

Время на прочтение8 мин
Количество просмотров188K
Представьте на минутку обычного программиста. Допустим, его зовут Вася и ему нужно сделать анимированную менюшку на сайт/десктоп приложение/мобильный апп. Знаете, которые выезжают сверху вниз, как меню у окна Windows или меню с яблочком у OS X. Вот такое.

Начинает он с одного выпадающего окошка, тестирует анимацию, выставляет ease out 100% и наслаждается полученным результатом. Но вскоре он понимает, что для того, чтобы управлять менюшкой, хорошо бы знать закрыто оно сейчас или нет. Мы-то с вами тут программисты опытные, все понимаем, что нужно добавить флаг. Не вопрос, флаг есть.

var opened = false;

Вроде, работает. Но, если быстро кликать по кнопке, меню начинает моргать, открываясь и закрываясь не успев доанимироваться в конечное состояние. Вася добавляет флаг animating. Теперь код у нас такой:

var opened = false;
var animating = false;

function onClick(event) {
  if (animating) return;
  if (opened) close();
  else open();
}

Через какое-то время Васе говорят, что меню может быть полностью выключено и неактивно. Не вопрос! Мы-то с вами тут программисты опытные, все понимаем, что… нужно добавить ЕЩЕ ОДИН ФЛАГ! И, всего-то через пару дней разработки, код меню уже пестрит двустрочными IF-ами типа вот такого:

if (enabled && opened && !animating && !selected && finishedTransition && !endOfTheWorld && ...) { ... }

Вася начинает задаваться вопросами: как вообще может быть, что animating == true и enabled == false; почему у него время от времени все глючит; как тут вообще поймешь в каком состоянии находится меню. Ага! Состояния... О них дальше и пойдет речь.

Знакомьтесь, это Вася.


Читать дальше →
Всего голосов 114: ↑92 и ↓22+70
Комментарии96

Папоротники как метод распознавания образов

Время на прочтение5 мин
Количество просмотров8.5K
        Доброго времени суток!
        Как известно, одной из важных задач, решаемых обработкой изображений (помимо сброса пары кг и укрывания дефектов кожи на аватарках), является поиск и распознавание нужных нам объектов на сцене. Но этот процесс весьма сложный и ресурсоемкий, что делает его неприменимым в системах реального времени. Сегодня мы и поговорим, нельзя ли каким-то образом решить эту проблему и ускорить процесс поиска нужного объекта на сцене, с минимальными потерями в точности (а может, и без них вовсе). И вообще, причем тут папоротники?
PS
Традиционно много картинок.
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии11

Бэнчмарк Windows Azure показал высокую производительность для масштабных вычислений

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

151,3 TФлопс на 8064 ядрах с 90,2 процентной эффективностью.


Windows Azure предлагает своим клиентам облачную платформу, которая экономически эффективно и надежно удовлетворяет требованиям масштабных вычислений (Big Compute). При разработке Windows Azure были использованы инфраструктура большой мощности и масштабируемости, новые конфигурации экземпляра, а также новый HPC Pack 2012, которые позволили Windows Azure стать лучшей платформой для приложений использующих масштабные вычисления. В действительности, Windows Azure была протестирована с помощью LINPACK бенчмарка, который подтвердил мощность Windows Azure в масштабных вычислениях. Сетевая производительность очень впечатляет, и составила 151,3 ТФлопс на 8064 ядрах с 90,2 процентной эффективностью – эти результаты были отправлены в Топ-500 и исследователями был получен сертификат, подтверждающий включение в топ 500-от мощных суперкомпьютеров в мире.

Оборудование для масштабных вычислений

В виду заинтересованности Microsoft в масштабных вычислениях, было представлено оборудование, разработанное для удовлетворения потребности клиентов в высокопроизводительных вычислениях. Были представлены две высокопроизводительные конфигурации.
Читать дальше →
Всего голосов 26: ↑13 и ↓130
Комментарии9

Экспорт истории сообщений из Skype 4.*

Время на прочтение3 мин
Количество просмотров124K
Прочитав новость об уязвимости в Skype, позволяющей угнать любой аккаунт, в процессе чтения комментариев и постов по теме наткнулся на новую для себя информацию: оказывается, начиная с версии 4.* Skype хранит информацию о пользователе в базе sqlite. Это и навело меня на мысль о том, что информацию из базы можно легко и непринужденно получить.
Читать дальше →
Всего голосов 46: ↑45 и ↓1+44
Комментарии40

IBM провела симуляцию нейрокомпьютера, сопоставимого с мозгом человека

Время на прочтение2 мин
Количество просмотров76K
На конференции Supercomputing 2012 компания IBM представила результаты работы нейросимулятора Compass на суперкомпьютере Sequoia (второе место в мировом рейтинге суперкомпьютеров). Впервые был достигнут масштаб, соответствующий человеческому мозгу — 530 миллиардов нейронов и 137 триллионов синапсов. Симуляция происходила в 1542 раза медленнее реального времени. В ней были задействованы все 1 572 864 ядер и полтора петабайта памяти.

Compass — система симуляции новой компьютерной архитектуры TrueNorth, которую в IBM называют «старшим братом Watson». В отличие от привычных нам компьютеров, основанных на архитектуре фон Неймана, TrueNorth построен по образу и подобию мозга, на базе разработанных IBM "нейросемантических ядер" — чипов, содержащих кремниевые нейроны и синапсы. Каждый чип содержит 256 нейронов, 1024 аксона и 256х1024 синапса. Площадь чипа, произведённого по 45-нанометровой технологии — 4.5 мм2. В рекордной симуляции была смоделирована работа 2084 миллиардов таких ядер.
Читать дальше →
Всего голосов 96: ↑88 и ↓8+80
Комментарии216

Что делать, чтобы проекты не занимали в 2-3 раза дольше, чем планируется? Часть 1

Время на прочтение2 мин
Количество просмотров7.8K
На Хабре недавно была поднята очень важная тема — соблюдение сроков проектов. В качестве метафоры автор, Михаэль Вольф, использует метафору путешествия и прогнозирования сроков прибытия, но не дает практических советов по завершению проектов в срок. Чтобы раскрыть советы в более понятной форме, я вставлю несколько презентаций и слайдкастов в пост.
Позволю себе привести ряд конкретных рекомендаций, которые будут полезны для большинства проектов:
  • Грамотно обрабатывайте запросы на изменение требований
  • Урезайте лишний функционал
  • Управляйте рисками
  • Используйте гибкие методологии
  • Научитесь управлять Death March проектами
Подробности под катом
Всего голосов 56: ↑46 и ↓10+36
Комментарии45

Взломать Wi-Fi за… 3 секунды

Время на прочтение2 мин
Количество просмотров2M
Какой человек не любит халявы? Практически все ее просто обожают, и я не исключение. Вдохновленный статьей «Взломать Wi-Fi за 10 часов» я достал из недр харда BT5, скачанный ранее, и записал его на болванку. Результат не заставил себя ждать, и первый пароль был получен на следующее утро. И понеслась…
Читать дальше →
Всего голосов 133: ↑112 и ↓21+91
Комментарии63

Ninja IDE – открытая среда разработки для Python

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

Оказывается, существует «ещё одна IDE» питоническая IDE: написана на Python (с использованием Qt) для Python, распространяемая по GPL. Удивительно, что не все разработчики знают о её существовании (и сам не знал), хотя проект активно зреет уже 2 года и сделано много интересного. Встречайте: Ninja IDE.
Читать дальше →
Всего голосов 32: ↑24 и ↓8+16
Комментарии23

История об аспирантуре в США. Часть 3: Сколько получает аспирант и за чем стоит ехать делать PhD

Время на прочтение8 мин
Количество просмотров78K
В первых двух частях я описал свое поступление в аспирантуру и стоимость жизни в США. В этой части мы подойдем еще ближе к самому интересному, а если точнее, то я расскажу, откуда и в каких количествах появляются деньги у аспирантов, сколько надо платить за учебу и за чем сюда стоит ехать (или не ехать). Ну и наконец будет начало описания того, как можно сюда приехать.

Часть 1: Поступление


Живет тут

Часть 2: Стоимость жизни в США


Живет тут
Кому интересно почитать Часть 3, добро пожаловать под кат.
Всего голосов 79: ↑74 и ↓5+69
Комментарии38

Эластичный MapReduce. Распределенная реализация

Время на прочтение8 мин
Количество просмотров9.2K
Так случилось, что первый посмотренный мною фильм с упоминанием слова «суперкомпьютер» был Терминатор. Но, как ни странно, моя (тогда еще) не сформировавшаяся психика не посчитала скайнет мировым злом, списав агрессивное поведение первого в мире ИИ на недостаточное покрытие юнит тестами.

На тот момент у меня был ZX Spectrum (чьих 128 Kb явно не хватало на запуск чего-то похожего на ИИ) и много (думаю лет 10) свободного времени. Благодаря последнему факту, я благополучно дождался эры виртуализации. Можно было снять хоть 10K VPS, установить между ними канал связи и начинать создавать ИИ. Но мне хотелось заниматься программированием, а не администрированием/конфигурацией grid-системы, и я разумно начал ждать, когда вычислительные ресурсы начнут предоставляться как сервис.

Моей радости не было конца, когда появились облачные сервисы. Но радость длилась недолго: стало понятно, что пока прямые коммуникации между отдельными вычислительными инстансами – это фантастика код, который нужно писать самому (то есть с большой вероятностью он работать не будет). Попереживав пару лет по этому поводу, я (мы все) дождался Hadoop, сначала «on-premises», а потом и эластичного «on-demand». Но и там, как оказалось, не всё так эластично гладко
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии6

Сравнение методик обзора кода

Время на прочтение7 мин
Количество просмотров25K
Думаю, многие разработки знакомы с понятием code review или обзор кода по-русски (также данный термин переводят как просмотр кода, инспектирование кода или рецензирование кода – далее, для единообразия, будет использоваться вариант «обзор кода»). Недавно я столкнулся с необходимостью «разложить по полочкам» и классифицировать знания по этой теме. Результат – данная статья. Надеюсь, она окажется полезной, а также поможет внедрить обзоры кода в свой производственный процесс тем, кто только об этом задумывается.
wtf per minute
Обзор кода является одним из наиболее эффективных методов поиска и устранения дефектов программы. Обзоры проводятся человеком, что позволяет находить широкий класс ошибок, в том числе с трудом детектируемых или вообще не детектируемых автоматическими средствами. Безусловно, обзор кода, не отменяет использование анализаторов кода или других методик обнаружения ошибок, например, unit-тестирования. К сожалению, не существует метода, который один обеспечил бы обнаружение всех дефектов программы (в исследованиях эффективность обзора кода обычно оценивается как 30-50% обнаруженных ошибок в приложении).
Читать дальше →
Всего голосов 18: ↑17 и ↓1+16
Комментарии18

Несколько недоразумений парного программирования

Время на прочтение3 мин
Количество просмотров3.9K
У меня достаточно много опыта в программировании, накопленного за последние несколько лет. Часть опыта я приобрёл работая в своей команде, что-то при работе с клиентам, а некоторый опыт появился благодаря coding dojo и работе на open source проектах.
Для программистов знающих как использовать парное программирование оно предоставляет возможность улучшить свою производительность. Но при этом не стоит ожидать, что программисты значительно улучшат свою производительность с самого начала работы. Парное программирование требует постоянного обучения, а также осознания самими программистами чёткой разницы между исполнителем (тот кто стучит по клавиатуре), и штурманом. Ниже приведено более детальное описание.
Читать дальше →
Всего голосов 22: ↑17 и ↓5+12
Комментарии3

Работа с данными в WinRT. Часть 2. Работа с БД на примере SQLite

Время на прочтение6 мин
Количество просмотров17K
В предыдущей части мы рассматривали как получить доступ к файловому хранилищу приложения. Так как есть прямой доступ к файловому хранилищу, мы можем воспользоваться практически любой встраиваемой БД. На сегодняшний день SQLite, пожалуй, является самой популярной кроссплатформенной встраиваемой базой данных. В связи с этим при портировании приложений скорее всего придется работать с SQLite, работу с которым будем рассматривать далее.

В целом статья получилось больше похожей на инструкцию по установке и работе SQL Lite.

В статье будет описано
Установка расширения для сутдии.
Добавление SQLite в проект
Добавление провайдера sqlite-net
Работа с БД через linq провайдер (в стиле LinqToSql, EF)
Работа с БД через SQL запросы (в стиле ADO.NET)
Читать дальше →
Всего голосов 24: ↑19 и ↓5+14
Комментарии14

В новый микроскоп IBM видно межатомные связи в молекуле

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


Научно-исследовательское подразделение IBM Research в Цюрихе опубликовало картинки, которые удалось сгенерировать с помощью сканирующего атомно-силового микроскопа (АСМ). На изображениях можно различить отдельные атомы углерода в шарообразной молекуле C60. Видны даже химические связи между атомами, то есть перекрывающиеся электронные облака («размазанные» электроны, в терминологии Шрёдингера).
Читать дальше →
Всего голосов 207: ↑200 и ↓7+193
Комментарии220

Протоколирование: рекомендации по трассировке

Время на прочтение10 мин
Количество просмотров22K
В данной статье я хочу поделиться своими мыслями/наблюдениями/рекомендациями относительно реализации такой важной задачи при разработке ПО как протоколирование. В Интернете существует множество статей описывающих инструменты для протоколирования, но очень мало информации о том, какие именно события, и какую информацию, нужно записывать в протокол работы программы.
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии9

Руководство новичка по эксплуатации компоновщика

Время на прочтение32 мин
Количество просмотров210K
David Drysdale, Beginner's guide to linkers (http://www.lurklurk.org/linkers/linkers.html).

Цель данной статьи — помочь C и C++ программистам понять сущность того, чем занимается компоновщик. За последние несколько лет я объяснил это большому количеству коллег и наконец решил, что настало время перенести этот материал на бумагу, чтоб он стал более доступным (и чтоб мне не пришлось объяснять его снова). [Обновление в марте 2009: добавлена дополнительная информация об особенностях компоновки в Windows, а также более подробно расписано правило одного определения (one-definition rule).

Типичным примером того, почему ко мне обращались за помощью, служит следующая ошибка компоновки:
g++ -o test1 test1a.o test1b.o
test1a.o(.text+0x18): In function `main':
: undefined reference to `findmax(int, int)'
collect2: ld returned 1 exit status

Если Ваша реакция — 'наверняка забыл extern «C»', то Вы скорее всего знаете всё, что приведено в этой статье.
Читать дальше →
Всего голосов 194: ↑193 и ↓1+192
Комментарии38

Монада ContT в картинках (Haskell)

Время на прочтение5 мин
Количество просмотров4.7K
На хабре уже были статьи про продолжения и монаду ContT. Я решил поделиться своим пониманием этого вопроса и снабдить его соответствующими иллюстрациями. В отличие от приведенной выше статьи, мне бы хотелось больше внимания уделить внутреннему устройству монады ContT и разобраться, как же она работает.
Читать дальше →
Всего голосов 31: ↑28 и ↓3+25
Комментарии10

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность