Search
Write a publication
Pull to refresh
15
0
Николай Воробьев @Kano

User

Send message

Храним 300 миллионов объектов в CLR процессе

Reading time5 min
Views35K

Камень преткновения — GC


Все managed языки такие как Java или C# имеют один существенный недостаток — безусловное автоматическое управление паматью. Казалось бы, именно это и является преимуществом managed языков. Помните, как мы барахтались с dandling-указателями, не понимая, куда утекают драгоценные 10KB в час, заставляя рестартать наш любимый сервер раз в сутки? Конечно, Java и C# (и иже с ними) на первый взгляд разруливают ситуацию в 99% случаев.

Так-то оно так, только вот есть одна проблемка: как быть с большим кол-вом объектов, ведь в том же .Net никакой магии нет. CLR должен сканировать огромный set объектов и их взаимных ссылок. Это проблема частично решается путём введения поколений. Исходя из того, что большинство объектов живёт недолго, мы высвобождаем их быстрее и поэтому не надо каждый раз ходить по всем объектам хипа.

Но проблема всё равно есть в тех случаях, когда объекты должны жить долго. Например, кэш. В нём должны находиться миллионы объектов. Особенно, учитывая возрастание объемов оперативки на типичном современном серваке. Получается, что в кэше потенциально можно хранить сотни миллионов бизнес-объектов (например, Person с дюжиной полей) на машине с 64GB памяти.

Однако на практике это сделать не удаётся. Как только мы добавляем первые 10 миллионов объектов и они “устаревают” из первого поколения во второе, то очередной полный GC-scan “завешивает” процесс на 8-12 секунд, причём эта пауза неизбежна, т.е. мы уже находимся в режиме background server GC и это только время “stop-the-world”. Это приводит к тому, что серверная апликуха просто “умирает” на 10 секунд. Более того, предсказать момент “клинической смерти” практически невозможно.
Что же делать? Не хранить много объектов долго?

Зачем


Но мне НУЖНО хранить очень много объектов долго в конкретной задаче. Вот например, я храню network из 200 миллионов улиц и их взаимосвязей. После загрузки из flat файла моё приложение должно просчитать коэффициенты вероятностей. Это занимает время. Поэтому я это делаю сразу по мере загрузки данных с диска в память. После этого мне нужно иметь object-graph, который уже прекалькулирован и готов “к труду и обороне”. Короче, мне нужно хранить резидентно около 48GB данных в течении нескольких недель при этом отвечаю на сотни запросов в секунду.

Вот другая задача. Кэширование социальных данных, которых скапливаются сотни миллионов за 2-3 недели, а обслуживать необходимо десятки тысяч read-запросов в секунду.
Читать дальше →

Отправляем SMS из .Net приложения на C#

Reading time7 min
Views62K

Все что нам понадобится для отправки SMS это 3G USB модем, SIM карта, Visual Studio и немного времени. Моей целью не является описать все возможные настройки COM порта или формата PDU. Я хотел бы предоставить вам готовое решение, которое можно использовать в качестве сниппета в своих проектах.
В качестве примера рассмотрим 2 консольных приложения. Почему консольных? Да потому, что в них нет ничего лишнего и проще разобрать код. Почему два? Потому, что есть два распространенных варианта отправки сообщений. Самый простой вариант – это отправка сообщений в текстовом режиме. Минусом этого варианта является то, что он не поддерживает отправку кириллицы. Плюсом то, что возможна отправка 160-ти символов. Второй вариант, более сложный, позволяет отправлять текст длиной до 70-ти символов в формате Unicode.
Читать дальше →

C#: коллекции только для чтения и LSP

Reading time5 min
Views29K
Часто разработчики утверждают, что read-only коллекции в .NET нарушают принцип подстановки Барбары Лисков. Так ли это? Нет, это не так, потому что IList интерфейс содержит флаг IsReadOnly. Исключением является класс Array, он действительно нарушает LSP принцип начиная с версии .NET 2.0. Но давайте разберемся во всем по порядку.
Читать дальше →

Передача проекта от дизайнеров iOS разработчикам

Reading time6 min
Views79K


В настоящее время департамент мобильной разработки Rambler&Co активно расширяется, в том числе и в плане iOS-разработчиков и UX дизайнеров. Большое количество людей и проектов, ведущихся ими, усложняет и без того непростой процесс передачи дизайна разработчикам. Всем, так или иначе связанным с мобильной разработкой, знакомы проблемы и разногласия, возникающие на стыке интересов программиста и дизайнера — начиная тем, в каких единицах измерять расстояния, и заканчивая тем, кто должен нарезать элементы экранов в различных разрешениях. Чтобы окончательно решить проблему в рамках нашей компании, мы решили подготовить подробные гайдлайны по этому взаимодействию.
Читать дальше →

Продвижение инди-игры на Steam Greenlight

Reading time11 min
Views97K
Всем, привет! Наша команда сейчас проходит важный этап становления любого разработчика игр — первый запуск игры на Steam Greenlight. Пока я готовил материал для этой статьи, наша игра вошла в ТОП-100 проектов на Greenlight, набрала почти 2000 голосов «ЗА» и через 12 дней получила зелёный свет.

В этой статье хочу поделиться информацией, которую «нарыл» в процессе подготовки к Greenlight'у, а также попробовать проанализировать, какие гипотезы по продвижению сработали, а какие пути оказались тупиковыми. Надеемся, эта информация окажется полезной и кому-то попадёт в избранное.

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

Путь постижения AppStore или сколько стоит опыт?

Reading time6 min
Views33K


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

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

Основные ловушки при использовании кэша в HTML5-приложениях

Reading time5 min
Views19K
Кэш приложений, также известный как AppCache, на сегодняшний день является одной из самых острых тем для веб-разработчиков. AppCache позволяет дать возможность посетителям вашего сайта загружать сайт, когда они офлайн. Вы даже можете сохранять части вашего сайта, такие как изображения, таблицы стилей или веб-шрифты в кэше на компьютере пользователя. Это может помочь быстрее загружать ваш сайт, тем самым снижая нагрузку на ваш сервер.

Чтобы использовать AppCache, создается файл описания с расширением «appcache», например, manifest.appcache. В этом файле можно перечислить все файлы, которые должны кэшироваться. Чтобы включить эту функцию на вашем сайте, необходимо включить ссылку на этот файл описания на вашей веб-странице в html-элемент следующим образом:
Читать дальше →

Собственная реализация https с использованием crypto++ для начальной загрузки I2P

Reading time7 min
Views14K
Каждый новый узел I2P при первом запуске должен откуда то получить начальный список узлов. Для этого существуют специальные сервера (reseed), адреса которых жестко прописаны в коде. Раньше загрузка осуществлялась по http, однако с недавних пор reseed-ы стали переходить на https. Для успешной работы «пурпурного» I2P также потребовалось внести соответствующие изменения. Используемая там криптографическая библиотека crypto++ не поддерживает ssl. Вместо использования дополнительной библиотеки типа openssl, фактически дублирующей криптографию, был выбран рассмотренный ниже вариант.
Начальная загрузка это единственное место в I2P, где используется https.
С другой стороны, статья будет интересно тем кому интересно понять, как работает ssl и попробовать самому.

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

XSS-уязвимость нулевого дня в Internet Explorer позволяет атаковать любые сайты

Reading time2 min
Views46K
Вчера стало известно о появлении ранее неизвестной уязвимости межсайтового скриптинга в Microsoft Internet Explorer. Используя эту ошибку, удаленный пользователь может внедрить в HTML-страницу произвольный JavaScript-сценарий в обход политики единства происхождения практически на любом сайте.

image

Исследователи из deusen.co.uk, разместившие PoC-код эксплойта, продемонстрировали эксплуатацию уязвимости на сайте первой по величине тиража ежедневной газеты Великобритании «Daily Mail». При нажатии на специально сформированную ссылку пользователь перенаправляется на сайт dailymail.co.uk, после чего ему выводится сообщение «Hacked by Deusen».
Читать дальше →

Размеры экранов

Reading time2 min
Views561K
Планшеты и смартфоны оснащаются экранами с разными соотношениями сторон и разной плотностью пикселей, однако эти параметры редко указываются в технических характеристиках.

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



Обратите внимание, насколько экран 8" с соотношением сторон 4:3 визуально больше широкого экрана 7". А широкий экран 10.1" на сантиметр меньше экрана 9.7" по высоте.

Я свёл в таблицу параметры экранов, чаще всего использующихся в планшетах.



Текст на экранах с низким PPI (количеством точек на дюйм) читается не комфортно. Я бы не стал покупать планшет с экраном, имеющим PPI ниже 150. Даже 164 PPI экрана iPad mini многим кажутся недостаточными. Отлично воспринимаются экраны с PPI больше 200.

Для меня было большим открытием, что экран 9.7" 1024x768 имеет даже меньшее PPI, чем экран 7" 800x480.

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

GRUB всемогущий, или Делаем загрузочную флешку

Reading time8 min
Views560K
Про сам grub, загрузочные флешки и особенно специальные утилиты для создания дисков написано уже не мало, но выглядят они узко направленными. Например только для создания флешки Windows 7, различные PEtoUSB, есть более универсальные как в этом топике. Куча утилит по сути устанавливают загрузчик grub, isolinux (реже BCDW или lilo, еще реже свой как Win7), и затем раскладывают предложенные ему файлы (Windows7,WindowsXP, Ubuntu и т.д.) по папкам. От сюда и требовательность к образам (как писали в комментариях к этому топику).

А между тем абсолютное большинство выложенных в интернете дисков (особенно USB) как раз и используют isolinux и grub, что мешает их просто объединять? да ничего!

Я постараюсь с примерами рассказать, как сделать загрузочную, установочную и просто Live флешку, причем все в одном без заточенных под конкретный дистрибутив утилит. И иметь возможность, при необходимости, легко добавить на флешку еще что-то, без очередного ее переформатирования.
image
(С) Картинка оттуда
Читать дальше →

Делаем загрузочно-установочную флешку

Reading time2 min
Views775K
После поста о восстановлении флешек, оказалось, что у многих теперь есть рабочие, бесхозные флешки, которые обязательно нужно задействовать. Почему бы не сделать из них загрузочные флешки с дистрибутивами необходимых ОС? Это может здорово пригодиться при установке/переустановке операционных систем на нетбуки, где отсутствуют приводы оптических носителей. А иногда может даже ускорить процесс установки и сделать его намного тише на компьютере, где привод есть.
Хотя на Хабре уже описывались варианты создания загрузочных флешек, но вариант, который предлагаю я — слишком прост и по своему универсален, чтобы обойти его стороной.

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

Почему ВКонтакте не станет провайдером OpenID

Reading time1 min
Views5.1K
Если что, к «ВКонтакте» я не имею никакого отношения, это просто рассуждения.

Для каждого сайта, которому нужен вход через Open API, сейчас требуется завести вконтактовское приложение типа «веб-сайт». При этом владельцы сайта соглашаются с определенными условиями. Среди них есть, например, такое:

При размещении приложений на сайте ВКонтакте запрещается:
3. Принимать оплату услуг в приложении отличными от внутренней валюты ВКонтакте способами, в том числе на сторонних сайтах.

Надеюсь, все читали это перед тем, как начать прикручивать вход через ВКонтакте к своему интернет-магазину. Отключение приложения и, как следствие, потеря пользователями возможности зайти в свой аккаунт — это очень серьезно.

Именно поэтому я уверен, что ВКонтакте никогда не будет провайдером OpenID (и будет душить все попытки его таковым сделать косвенно). Став провайдером OpenID, ВКонтакте потеряет возможность диктовать сайтам условия (выбор платежной системы, например) и не получит при этом никаких плюсов по сравнению с Open API.

Единственный реалистичный расклад, при котором контакт все-таки станет провайдером OpenID — убытки от негативной репутации превысят выгоду, получаемую от того, что владельцы сайтов соглашаются с навязанными условиями. Выгода — реальные осязаемые $$ прямо сейчас, которые со сторонних сайтов идут через вконтактовскую платежную систему. А потеря репутации — для небольшого круга гиков?

Так что OpenID может появится на ВКонтакте только в результате чуда, а попытки обойти этот факт будут пресекаться.

Это не хорошо и не плохо, это просто данность, которая продиктована бизнес-причинами.

ZX Spectrum сегодня? Живее всех живых!

Reading time5 min
Views54K
По просьбе немногочисленных хабралюдей, даю телеграмму по поводу состояния дел zx-specurum-а в наши дни. К сожалению, написать абсолютно про всё у меня не получится, поэтому сделаю краткий обзор современного железа и эмуляторов, на которых это железо можно виртуально пощупать.

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

Что такое для вас spectrum? Наверное, это тёплый ламповый звук загрузки с магнитофона, Manic Miner и Elite. Возможно, это TR-DOS, 128кб памяти и музыкальный чип AY. А может быть это Scorpion-256, ATM Turbo или даже Profi.
В любом случае, всё это безнадёжно устарело

The Known Universe

Reading time1 min
Views1.4K
The Known Universe — это видеоролик, сделанный учеными американского музея естествознания, чтобы помочь людям представить, как выглядит наша необъятная Вселенная. Видео начинается с Гималайских гор, затем камера постепенно отдаляется, набирая скорость, показывая спутники Земли, солнце, солнечную систему, галактику Млечный путь, близкие и самые далекие от нас галактики, которые были изучены на данный момент.
Каждый объект в видео был отрендерен, согласно новейшим научным исследованиям 2009 года, потому здесь полностью учтены все масштабы и орбиты. По-моему видео отлично отражает то, насколько все таки мала наша огромная планета, по сравнению со Вселенной. В общем, смотрите и наслаждайтесь =)


По материалам NASA APOD и AMNH

Под хабракатом еще кое-что интересное

Turbofilm.ru теперь точно платный

Reading time1 min
Views13K
Как некоторое время назад стало известно, турбофильм планировал ввести плату за просмотр сериалов. Вот, наконец, и новость появилась с подробностями оплаты. Кто-то говорил, что это хорошо(ведь трафик, оборудование — надо ж кому-то за это платить), кто-топлохо(продажа бесплатных сериалов — невиданный обман). Я не буду рассуждать на эту тему. Для меня это нормально. Но немного ненормальным показалось мне другое, цитирую:
Мы подключили самый удобный способ оплаты – SMS сообщения и постарались сделать тарифы гибкими и не дорогими <...> Других вариантов оплат пока не планируется – только SMS
Читать дальше →

Французский провайдер блокирует интернет-рекламу для всех пользователей

Reading time2 min
Views47K
С 1 января 2013 года интернет-провайдер Free.fr самовольно включил фильтр интернет-рекламы по умолчанию для всех абонентов. Таким образом, 5,3 миллиона пользователей интернет-провайдера в один день лишились возможности видеть интернет-баннеры на сайтах, контекстную рекламу Adsense и другие рекламные объявления, за счёт которых и существует свободный и бесплатный контент в интернете.

Естественно, большинство пользователей были только рады этому популистскому нововведению интернет-провайдера, но подобная инициатива вызвала массовое возмущение у представителе интернет-индустрии и у онлайн-СМИ, которые рекомендуют своим читателям отключить эту опцию. По желанию каждый пользователь может отказаться от принудительной блокировки интернет-рекламы.
Читать дальше →

Интернет магазин — 15000 евро за первый месяц

Reading time6 min
Views91K
В народе есть известная поговорка „Первый Блин Комом“, чего не могу сказать о своём свежем опыте интернет торговли. Скорее всего, это просто исключение подтверждающее правило, но, тем не менее, хочется рассказать о тех небольших выводах, что я сделал за последний месяц.

Итак, небольшая история о том, как можно довольно легко заработать за один месяц минимум 15 000 евро.

Мой профессиональный род деятельности — веб-разработка. Занимаюсь R&D в одной небольшой IT компании, пишу «навороченные» приложения для корпоративных интранетов и, в принципе, на жизнь не жалуюсь. Конечно, при таком раскладе хочется параллельно вести какой-нибудь интересный проект, чем неоднократно занимался в мире Open Source. Со временем, правда, захотелось на побочных проектах так же как-то зарабатывать, что с Open Source оказалось не так просто, как может показаться из статей на Хабре :) Потому и решил попробовать для себя что-то принципиально новое — открыть интернет магазин.

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

Протокол ARP и «с чем его едят» (дополнено)

Reading time3 min
Views221K
Спасибо хабраюзеру hardex за публикацию первоначальной статьи, а также всем, кто плюсанул в карму для возможности моей собственноручной публикации. Теперь дополненная версия с учетом пожеланий и дополнений. Добро пожаловать под кат.

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

Бесплатный антивирус от Microsoft теперь и в России: Microsoft Security Essentials

Reading time1 min
Views14K
Эту новость вы узнаете первыми:)
Сегодня мы официально запускаем бесплатный антивирус Microsoft Security Essentials в России! Скачать его можно с сайта www.microsoft.com/security_essentials/default.aspx?mkt=ru-ruimage

Что нужно для установки:
— Иметь лицензионную версию ОС Windows
— Иметь желание защитить свой домашний компьютер от вирусов и другой “пакости” :)

Хочу отдельно отметить, что данный продукт предназначен для домашнего использования, для защиты компьютеров в корпоративной среде у нас есть другой замечательный продукт: семейство продуктов Forefront.

Со всеми вопросами/пожеланиями и т.д. можно писать в комменты

update
Забыл добавить, что теперь оболочка (интерфейс) тоже на русском.

update 2
Изменил ссылку на ту, которая точно работает: www.microsoft.com/security_essentials/default.aspx?mkt=ru-ru и добавил скриншот

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity