29 июня, это пятница вечер, в Северной Вирджинии штормило. Что привело к проблемам с электричеством в датацентрах Амазона. Переход на резервное питание прошел не очень гладко, поэтому некоторые американские сервисы, которые используют амазоновское облако, либо не работали вообще, либо работали с перебоями. Среди этих сервисов были Netflix, Instagram и много-много других поменьше. Пользователи расстроились, потому что пятница вечер, хочется фильмов и фоток, а тут ничего не работает.
После этих печальных событий Амазон написал отчет на тему "что это было?". Summary of the AWS Service Event in the US East Region
Netflix написал свой отчет: Lessons Netflix Learned from the AWS Storm
А Дмитрий Самовский проанализировал отчет Амазона Applying 5 Whys to Amazon EC2 Outage
Ссылки по теме:
Отказ Windows Azure 29-го февраля
Перевод статьи Summary of the Amazon EC2 and Amazon RDS Service Disruption in the US East Region
понедельник, июля 09, 2012
Отказ амазоновского облака 29-го июня
Категории: programming
понедельник, июня 18, 2012
Интервью Алексея Пахунова на OpenQuality.ru
Хорошее интервью и название правильное: Нужно дело делать, а не языком трепаться
В послужном списке Алексея Пахунова, известного как «Not a kernel guy», более семи лет работы в трех подразделениях Microsoft (Office, OSD и MSR), участие в двух крупных проектах (Axapta и Windows) и нескольких мелких. Текущее место работы – Google. Низкоуровневая разработка, “серьезность” разработчика, тестирование Windows и Chrome, “шерифы” в Google, TDD “по-взрослому”, время-качество-деньги, импровизация как причина авралов – вот некоторые темы нашей беседы.
Категории: interview, microsoft, programming
понедельник, июня 11, 2012
Обзор исходников Doom3
Некоторое время назад исходники Doom3 были выложены в открытый доступ. Но в исходниках без доков разбираться довольно тяжело. Так вот, Фабьен Санглар написал по ним обзор со схемами, картинками, видео. Также он позадавал вопросы Кармаку по исходникам. Если вы мечтаете писать игры, но не знаете с чего начать, то Фабьен сделал вам прекрасный подарок.
Несколько фактов оттуда:
- Впервые в истории id Software код написан на С++, а не на С
- В коде широко используются абстракция данных и полиморфизм
- Темплейты используются только для низкоуровневого кода
- По мнению Фабьена это вторая по качеству кодобаза от id Software после Doom iPhone
- Благодаря инкапсуляции код легко читать
- Дни оптимизации ассемблерного кода на низком уровне прошли
понедельник, июня 04, 2012
Статья Hash Functions for C++ Unordered Containers
И еще одна интересная проблема из переписки. С ней сталкиваются все, кто более-менее серьезно пытается использовать хэш-контейнеры в С++.
Итак, вы пытаетесь положить свой класс в, скажем, unordered_map. И получаете сообщение об ошибке примерно такого вида:
cannot convert from 'const Name' to 'size_t'
Это крайне невразумительное сообщение об ошибке означает, что вы должны определить хэш-функцию для своего класса, чтобы можно было его использовать с данным контейнером.О том как это сделать есть хорошая подробная статья Hash Functions for C++ Unordered Containers.
Пример оттуда с самым простым способом определить хэш-функцию
//
// This program uses a simple user-defined function
// to provide a hash function for use in unordered_map
//
// Compile this example with Visual Studio 2010
// or g++ 4.5 using -std=c++0x
//
#include <iostream>
#include <unordered_map>
#include <string>
#include <functional>
using namespace std;
typedef pair<string,string> Name;
size_t name_hash( const Name & name )
{
return hash<string>()(name.first) ^ hash<string>()(name.second);
}
int main(int argc, char* argv[])
{
unordered_map<Name,int,decltype(&name_hash)> ids(100, name_hash );
ids[Name("Mark", "Nelson")] = 40561;
ids[Name("Andrew","Binstock")] = 40562;
for ( auto ii = ids.begin() ; ii != ids.end() ; ii++ )
cout << ii->first.first
<< " "
<< ii->first.second
<< " : "
<< ii->second
<< endl;
return 0;
}
Категории: cpp, programming