Привет, Хабр! Я Андрей Фролов, ведущий программист, работаю в Mail.Ru над Next-Gen MMORPG Skyforge. Вы могли читать мою статью про архитектуру баз данных в онлайн-играх. Сегодня я буду раскрывать секреты, касающиеся устройства сервера Skyforge. Постараюсь рассказать максимально подробно, с примерами, а также объясню, почему было принято то или иное архитектурное решение. По нашему серверу без преувеличения можно написать целую книгу, поэтому для того, чтобы уложиться в статью, мне придется пройтись только по основным моментам.
Пользователь
HTTP Switchboard — NoScript на стероидах
2 мин
15KСтранно, что на Хабре до сих пор не было ни одного упоминания об этом расширении. Спешу исправить ситуацию.
HTTP Switchboard — расширение для Google Chrome, которое позволяет пользователю блокировать ресурсы сайта посредством динамических черных и белых списков. Проще говоря, с помощью HTTP Switchboard можно выборочно разрешать или запрещать загрузку печенек, css, картинок, плагинов, скриптов, XHR, фреймов и прочих элементов для любого сайта. Так же недавно появилась частичная поддержка фильтров AdBlock+ и возможность блокировки фоновых запросов браузера (behind-the-scene HTTP requests).
Это расширение нельзя назвать интуитивно понятным, поэтому вкратце опишу элементы интерфейса и основные принципы работы.
HTTP Switchboard — расширение для Google Chrome, которое позволяет пользователю блокировать ресурсы сайта посредством динамических черных и белых списков. Проще говоря, с помощью HTTP Switchboard можно выборочно разрешать или запрещать загрузку печенек, css, картинок, плагинов, скриптов, XHR, фреймов и прочих элементов для любого сайта. Так же недавно появилась частичная поддержка фильтров AdBlock+ и возможность блокировки фоновых запросов браузера (behind-the-scene HTTP requests).
Это расширение нельзя назвать интуитивно понятным, поэтому вкратце опишу элементы интерфейса и основные принципы работы.
+6
Облако.Mail.Ru + EncFS для резервного копирования домашнего фотоархива
6 мин
114KТуториал
В конце декабря Mail.Ru вновь (впервые с 1997 года ;) выпустила революционный продукт — облачное хранилище, первым активным пользователям которого бесплатно выдают один терабайт. 1 Тб — по меркам начала 2014-го года это совершенно эпический объем, по крайней мере в масштабе национальной отрасли ИТ. Ради справедливости можно отметить, что некоторые китайские компании дают и больше, однако практическая применимость таких предложений для большинства читателей Хабрахабра выглядит сомнительной.
Небольшим изъяном актуальной версии Облака по мнению многих моих друзей и коллег выглядит то, что Облако (по крайней мере официально) не поддерживает WebDAV. Это не позволяет «из коробки» использовать шифрование с помощью простых и популярных в народе средств вроде Boxcryptor. Поскольку сам по себе Boxcryptor — это всего лишь удобная графическая надстройка над encfs+fuse, я решил для себя и для друзей составить короткую и простую инструкцию, как эффективно шифровать данные бэкапов в Облаке.Mail.Ru
Я продвинутый фотолюбитель. Мой фотоархив насчитывает примерно 600Гб данных, причем примерно половина из них — это выполненные в высоком разрешении сканы родительских слайдов, начиная с 1957 года. Почти все хранится в NEF+CR2 (это raw-форматы Canon и Nikon), каждая фотокарточка занимает от 15 до 60 мб. Иными словами, бесплатный терабайт от Flickr меня совсем не устраивал в частности из-за невозможности хранить необработанные исходники фото. Начиная с 2008-го года, резервирование архива выглядит так: раз в году я покупаю современный жесткий диск стоимостью 100 евро и копирую на него все содержимое предыдущего диска, а старый HDD отправляется «на пенсию» в медиа-сервер, который включается 3-4 раза в год. У этого подхода много достоинств (несмотря на смертность жестких дисков, данные еще ни разу не пропадали), но есть огромный недостаток — физическое расположение хранилища.
Я много путешествую по миру, и за последние 10 лет суммарно провел в России (где находится медиа-сервер и стопка «отставных» HDD) не более 4-х лет. Иногда случаются казусы, связанные с потерей внешних винчестеров — так я потерял значительную часть архива фотографий 2012-го года, которые банально не довез до своего дома на родине. На словах решение простое — «go cloud», а вот на деле тарифы всех мало-мальски удобных сервисов, позволявших заархивировать 1Тб оригиналов фотоизображений, были долгое время прямо-таки заоблачными.
И вот 20 декабря 2013 года нам было объявлено о том, что все желающие обладатели ящика на mail.ru могут получить в подарок 1 терабайт. Бесплатно. Для любых файлов. Но только у многих возникают вопросы, как хранить свои данные в облаке в зашифрованном виде.
Небольшим изъяном актуальной версии Облака по мнению многих моих друзей и коллег выглядит то, что Облако (по крайней мере официально) не поддерживает WebDAV. Это не позволяет «из коробки» использовать шифрование с помощью простых и популярных в народе средств вроде Boxcryptor. Поскольку сам по себе Boxcryptor — это всего лишь удобная графическая надстройка над encfs+fuse, я решил для себя и для друзей составить короткую и простую инструкцию, как эффективно шифровать данные бэкапов в Облаке.Mail.Ru
Постановка задачи
Я продвинутый фотолюбитель. Мой фотоархив насчитывает примерно 600Гб данных, причем примерно половина из них — это выполненные в высоком разрешении сканы родительских слайдов, начиная с 1957 года. Почти все хранится в NEF+CR2 (это raw-форматы Canon и Nikon), каждая фотокарточка занимает от 15 до 60 мб. Иными словами, бесплатный терабайт от Flickr меня совсем не устраивал в частности из-за невозможности хранить необработанные исходники фото. Начиная с 2008-го года, резервирование архива выглядит так: раз в году я покупаю современный жесткий диск стоимостью 100 евро и копирую на него все содержимое предыдущего диска, а старый HDD отправляется «на пенсию» в медиа-сервер, который включается 3-4 раза в год. У этого подхода много достоинств (несмотря на смертность жестких дисков, данные еще ни разу не пропадали), но есть огромный недостаток — физическое расположение хранилища.
Я много путешествую по миру, и за последние 10 лет суммарно провел в России (где находится медиа-сервер и стопка «отставных» HDD) не более 4-х лет. Иногда случаются казусы, связанные с потерей внешних винчестеров — так я потерял значительную часть архива фотографий 2012-го года, которые банально не довез до своего дома на родине. На словах решение простое — «go cloud», а вот на деле тарифы всех мало-мальски удобных сервисов, позволявших заархивировать 1Тб оригиналов фотоизображений, были долгое время прямо-таки заоблачными.
И вот 20 декабря 2013 года нам было объявлено о том, что все желающие обладатели ящика на mail.ru могут получить в подарок 1 терабайт. Бесплатно. Для любых файлов. Но только у многих возникают вопросы, как хранить свои данные в облаке в зашифрованном виде.
+66
Введение в Template Haskell. Часть 1. Необходимый минимум
4 мин
9.1KПеревод
Данный текст является переводом документации Template Haskell, написанной Булатом Зиганшиным. Перевод всего текста разбит на несколько логических частей для облегчения восприятия. Далее курсив в тексте — примечания переводчика.
Template Haskell (далее TH) — это расширение языка Haskell предназначенное для мета-программирования. Оно даёт возможность алгоритмического построения программы на стадии компиляции. Это позволяет разработчику использовать различные техники программирования, не доступные в самом Haskell’е, такие как, макро-подобные расширения, направляемые пользователем оптимизации (например inlining), обобщённое программирование (polytypic programming), генерация вспомогательных структур данных и функций из имеющихся. К примеру, код
yell file line = fail ($(printf "Error in file %s line %d") file line)
может быть преобразован с помощью TH в
yell file line = fail ((\x1 x2 -> "Error in file "++x1++" line "++show x2) file line)
Другой пример, код
data T = A Int String | B Integer | C
$(deriveShow ''T)
может быть преобразован в
data T = A Int String | B Integer | C
instance Show T
show (A x1 x2) = "A "++show x1++" "++show x2
show (B x1) = "B "++show x1
show C = "C"
В TH код на Haskell’е генерируется обычными Haskell’евскими функциями (которые я буду для ясности называть шаблонами). Минимум того, что вам необходимо знать, чтобы использовать TH — это следующие темы:
- Как Haskell-код представляется в шаблонах (TH-функциях)
- Как монада цитирования используется для унификации имён
- Как сгенерированный TH-код вставляется в программу
+19
Гейб отвечает [перевод]
7 мин
56KВот и прошла телеконференция с Гейбом Ньюэллом, которую все поклонники творчества Valve ждали с нетерпением. Он ответил на вопросы пользователей реддита и я предлагаю с ними ознакомиться. Всех кому интересно прошу пожаловать под кат.
+43
Один год из жизни проекта Ответы@Mail.ru
9 мин
32KВ данной статье я постараюсь вспомнить и описать все сложности и подводные камни, которые встречались на пути реализации задач, связанных с проектом Ответы, также расскажу и про архитектуру проекта.
Все началось с того, что мой контракт подошел к концу (в течение года я участвовал в работе над почтой Mail.ru). «Снова меня ждут приключения», — пронеслось в мыслях, — «новая страна, новая работа». Я пошел к своему начальству и в ходе обсуждений все-таки получил порцию приключений в виде интересной задачки — заняться проектом Ответы.
+61
I2P — Проект Невидимый Интернет
2 мин
273KТуториал
Всем доброго времени суток!
С недавних пор организации по защите авторских прав и «отделы К» многих стран начали вести весьма агрессивную политику против анонимности в сети и пиратства. Особо показательны истории с torrents.ru и ifolder.ru.
Подробнее об интернет-цензуре можно почитать в Википедии.
Чтобы оградить пользователя и хостера от «вредного» влияния государства и частных компаний была создана сеть I2P. Что же это такое и как подключиться к I2P — читаем под катом.
С недавних пор организации по защите авторских прав и «отделы К» многих стран начали вести весьма агрессивную политику против анонимности в сети и пиратства. Особо показательны истории с torrents.ru и ifolder.ru.
Подробнее об интернет-цензуре можно почитать в Википедии.
Чтобы оградить пользователя и хостера от «вредного» влияния государства и частных компаний была создана сеть I2P. Что же это такое и как подключиться к I2P — читаем под катом.
+120
Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность