November 2011
1 post
5 tags
Realtime Web №3 - TornadIO2
Написал мини-статью для Хабра о новой TornadIO2 с поддержкой самых новых с свежих версий socket.io.
Смотреть тут.
February 2011
2 posts
4 tags
Почему питон кушает много памяти
Короткая заметка о том, почему python любит память. Я, возможно, покажусь Капитаном Очевидностью, но все же.
Вот возьмем такой рафинированый пример:
class A(object):
def __init__(self, i):
self.j = i
x = [A(i) for i in xrange(1000000)]
input()
Запустим его на 32 битной системе (с 32 битным питоном) и увидим что он кушает, примерно, 190 МБ памяти.
Как-то много для массива из...
4 tags
greenlet/gevent
Тут будет немного сумбурных мыслей по поводу greenlet’ов в контексте gevent.
Гринлеты это хак
Немного пояснений о том как же работают гринлеты и к чему это все может привести.
В питоне весь стек - unmanaged. Это означает, что используется “обычный” стек, который предоставляет операционная система вместе со своим менеджментом стековой памяти (дополнительное выделение страниц...
January 2011
2 posts
6 tags
Realtime Web №2 - TornadIO
В продолжение предыдущего поста про Web реального времени: socket.io oказался хорошим, а вот существующая серверная поддержка для питона под названием SocketTornad.IO - не очень. Кроме кучки существующих багов, похоже что проект умер. Да и внутри там еще та каша.
И в результате - приветствуем TornadIO. TornadIO - Comet библиотека для организации постоянной связи между браузером и сервером для...
3 tags
Realtime Web
Решил разобраться что и как у нас с realtime в современном Вебе.
Для примера возьмем какую-нибудь онлайн игру, для которой важны (в порядке важности): 1. Streaming данных с сервера в реальном времени (с минимальной задержкой) 2. Время отклика на действия игрока 3. Возможность работы через прокси
Пункт 3й желателен, но не обязателен.
Из средств будем использовать HTML, js, python, при этом не...
November 2010
2 posts
Секреты рендеринга Starcraft 2: Ролики →
3 tags
Секреты рендеринга Starcraft 2 →
October 2010
2 posts
3 tags
Производительность .NET
Сейчас занимаюсь прототипированием MMO сервера на C#. Как будет что-то готовое, будет серия постов на тему его архитектуры.
А сейчас хочу рассказать насколько быстрое создание объектов в шарпе через new().
В свое время кодируя на С/С++ всегда считал (и продолжаю считать), что лишние создания объектов это зло. Точнее - и операция медленная и вообще плохо. Потому, ради производительности,...
3 tags
Небольшой реверс инжиниринг Minecraft
В связи с массовым помешательством на Minecraft, включая мое собственное, решил оптимизировать себе процесс рудокопательства.
Дальше немного о том, как Minecraft написан, как функционирует и соображения почему-же оно смогло так хорошо продаться.
Если кто не в курсе, Minecraft это такая себе игра, которая представляет собой Dwarf Fortress от лица рядового гнома. Можно крафтить вещи, копать ямы и...
June 2010
1 post
О том, как подкрадывается песец...
Есть у нас приложение, которое мы пишем на основе DotNetNuke (DNN). Причина почему выбрали DNN - настоял заказчик. Мол, DNN самый “взрослый”, “стабильный”, “корпоративный” и тому подобное.
Вот, на днях у нас упал продакшен. Хорошо так упал.
Начал исследовать причину, поковырялся - оказалось что падает вся ферма из веб серверов (их 3 штуки), если запускается...
May 2010
2 posts
3 tags
О собеседованиях
У нас иногда появляются вакансии. И мне приходится проводить интервью.
В принципе, мы требования к кандидатам не завышаем, в требованиях пишем стандартную ASP.NET солянку: .NET, ASP.NET, SQL, JavaScript. Набирали и во время кризиса, но кандидатов было много, а вакансий мало.
Ну и значит, приходили эти кандидаты на собеседования и пытались его с блеском (или не очень) провести.
Как-то так...
3 tags
Private, protected, internal, etc...
Вот, на работе, столкнулись с простой задачей: кусочек стороннего кода надо запускать асинхронно. Кусочек может работать минут 10 и запускать его синхронно (в результате web запроса) как-то совсем неправильно. На всякий случай уточню, что исходники этого кусочка есть.
Вроде бы - чего тут сложного? А оказалось…
1. Кусок зависел от инициализированного окружения ASP.NET. Использовал аж одну...
April 2010
5 posts
3 tags
ASP.NET и "спецсимволы" в URL
Вообще, если будет настроение, надо бы написать пост, почему же ASP.NET (который не MVC) плох. В целом, как технология.
Ну а пока просто расскажу как непонятная хрень осложняет жизнь.
На днях у нас нашелся странный баг: если в URL, в пути, содержится символ ‘&’ то ничего не работает и возвращается 400 Bad Request.
Т.е. вот такая вот ссылка не работает:...
О перегрузке объектов лишними сущностями
Очень часто я сталкиваюсь с подходом в программировании, который я мог бы описать как “все включено”.
Рассмотрим простой пример: некий разработчик игр, который пишет на С++, решил что STL это тормоз и вообще ужасная вещь, надо писать свой велосипед. Он сделал свои контейнеры, свои строки, все свое. Но рассказ будет не о NIH синдроме, а о том, как эти классы были спроектированы.
...
8 tags
Svarga - еще один web фреймворк
Примерно год назад решил сделать небольшой сайтик для себя. Думал на чем же делать (первоначально хотел на ASP.NET, но оный уже на работе набил оскомину), так что решил писать на питоне с использованием Django. Предупреждаю сразу, пост сугубо технический и предполагает значение Django в какой-либо степени.
Django, конечно, классная штука, но через пару недель разработки столкнулся с тем, что я не...
3 tags
Немного о странных архитектурных решениях
Сейчас у меня основная работа связана с разработкой софтинки на ASP.NET. Во время разработки оной, наткнулся на весьма неприятную штуку, которая теоретически должна была облегчить жизнь всяким программистам, а на самом деле является весьма спорной и даже вредной.
Описание задачи: в .NET framework есть клиент SMTP. Письма он умеет посылать синхронно и асинхронно. Во втором случае можно подкинуть...
5 tags
Как взломали защиту Assassins Creed 2
Расскажу интересную историю о том, как взломали DRM Assassins Creed 2, а заодно и другие игры, которые ее используют.
Началось все с того, что в какой-то момент Ubisoft решила, что самостоятельно написанная защита сильно лучше существующих решений на рынке. Это частично так, так как для большинства защит уже существуют полуавтоматические распаковщики и игрушки появляются на варезниках чуть ли не...