Pull to refresh
0
IlVin @IlVin

User

Send message

Bitcoin. Как это работает

Reading time10 min
Views754K
О Bitcoin я узнал относительно недавно, но он меня сразу подкупил своей идеей p2p. Чем глубже я зарывался в их Wiki, тем больше проникался этой идеей. Ее реализация красива и элегантна с технической точки зрения.

Поиск хабра по Bitcoin выдает два топика. Но это скорее новости. По комментариям заметно, что у многих людей, особенно не знакомых с Bitcoin напрямую, возникает много вопросов насчет принципов его работы. Также много догадок, зачастую неверных. Чтобы как-то прояснить ситуацию, было решено написать эту статью.
Читать дальше →
Total votes 111: ↑99 and ↓12+87
Comments223

Шаблон проекта многоязычного WPF приложения

Reading time2 min
Views4.8K
Введение

Локализация приложения на WPF — не легкое занятие. Практически любое пособие по локализации WPF изобилует деталями и ручными шагами для реализации локализованного приложения.

Существующие решения

Локализация с помощью утилиты LocBaml, описанная в руководстве по локализации от Microsoft имеет множество преимуществ, однако сложна для поддержки. André van heerwaarde, в своей статье предложил упростить это решение с помощью настроенного шага сборки, он же написал утилиты для слияния переведенных текстовых фрагментов. Однако, в его статье, так же много ручных шагов.

Шаблон проекта Visual Studio

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

В процессе разработки приложения вы добавляете новые XAML файлы, не заботясь о локализации. По завершению внесения изменений выполните сборку проекта.
Читать дальше →
Total votes 39: ↑34 and ↓5+29
Comments17

[Графический редактор на Canvas] Кисть для скетчей

Reading time6 min
Views9.6K
Продолжаем неделю canvas на хабре.
Графические редакторы на флеше/сильверлайте в интернете не редкость. На canvas их намного меньше, но есть и довольно интересные. Вот пара примеров:В этом цикле статей я планирую рассказать о различных моментах, с которыми можно столкнуться при создании графического редактора на canvas. Тривиальные части затрагивать не буду, постараюсь описывать только самое интересное. В этой статье опишу примерный алгоритм создания кисти для скетчей
Читать дальше →
Total votes 36: ↑32 and ↓4+28
Comments4

Новые бесплатные видео-курсы по ASP.NET Web Forms и ASP.NET MVC

Reading time2 min
Views28K
На днях мы опубликовали отличные видео-курсы по технологиям ASP.NET на официальном сайте http://asp.net/.

Курсы были созданы компанией Pluralsight (отличная компания с обучающими курсами по .NET-технологиям), доступны полностью бесплатно и предлагают отличную возможность изучить (или освежить в памяти) технологии веб-разработки ASP.NET WebForms и ASP.NET MVC 3. Каждый курс создан отдельным тренером и предлагает законченную программу обучения (от базовых основ, работы с концепцией Code First в Entity Framework до вопросов безопасности, развертывания, тестирования).

Ниже некоторые детали по двум бесплатным видео-курсам, опубликованным на днях (и ссылки на каждое доступное видео):

Тренинг по ASP.NET MVC


На выходных мы опубликовали финальные видео-уроки в совершенно новом обучающем курсе по ASP.NET MVC 3, созданном тренером K Scott Allen. Вы можете изучить эти видео-материалы со страницы http://asp.net/mvc (раздел слева в секции Essential Videos):

Читать дальше →
Total votes 48: ↑39 and ↓9+30
Comments9

Exception-ы и мифы о них

Reading time5 min
Views16K
Уже не первый раз сталкиваюсь с негибким отношением к поднятию исключений. Именно к поднятию, потому что к перехвату у большинства мнение совпадает: перехватывай только тогда, когда на самом деле можешь обработать. Поднятие же воспринимается, как нечто исключительное, из ряда вон. Когда видят throw, начинают рассказывать кучу историй о том как...
Читать дальше →
Total votes 53: ↑39 and ↓14+25
Comments68

DynamicXml: «динамическая» оболочка для работы с XML данными

Reading time17 min
Views2.4K
Я уже однажды писал о том, что, несмотря на мою любовь к статической типизации, в некоторых сценариях преимущества от той свободы, которую дает динамическая типизация, может превосходить связанные с ней недостатки. В прошлый раз шла речь о Dynamic LINQ, а в этот раз речь пойдет об использовании новой возможности C# 4.0 под названием dynamic, для работы с такими исходно слаботипизированными данными, как XML.

ПРИМЕЧАНИЕ
Исходный код библиотеки DynamicXml, рассматриваемой в данной статье, доступен на github

Введение


Начиная с версии 4.0, в языке C# появилась поддержка динамического программирования, благодаря новому статическому типу под названием dynamic. По сути, применение этого ключевого слова говорит компилятору сгенерировать весь необходимый код, чтобы процесс привязки (binding) и диспетчеризации вызовов (dispatch operations) производился во время выполнения, вместо определения всех этих характеристик во время компиляции. При этом компилятор генерирует весь необходимый код с помощью библиотеки DLR – Dynamic Language Runtime (*), которая была изначально создана при проектировании языка программирования Iron Python и впоследствии вошла в состав .Net Framework 4.0, как основа для реализации динамических языков программирования, а также для взаимодействия между ними.
Читать дальше →
Total votes 32: ↑25 and ↓7+18
Comments5

Пишем первое приложение на Mono Android

Reading time13 min
Views58K
Здравствуйте. В этой статье я бы хотел поделиться своим опытом создания приложений для мобильной платформы Android с использованием Mono и разобрать простой пример.

Для начала работы с Mono Android необходимо установить:
Читать дальше →
Total votes 67: ↑59 and ↓8+51
Comments51

Оптимизация PNG и JPEG без потери качества. Часть 1

Reading time9 min
Views234K

Введение


Предлагаю Вашему вниманию обзор посвященный оптимизации изображений формата PNG и JPEG без потери качества. Под «без потери качества» подразумевается, что визуально оригинальные и оптимизированные изображения ни чем не будут отличаться. Я читал на Хабре довольно много статьей посвященных данному вопросу, но скажу, большая часть — полная чушь, в них констатируются факты, а не причины. Данный обзор посвящен людям, которые имеют базовые знания об оптимизации изображений.
Читать дальше →
Total votes 235: ↑219 and ↓16+203
Comments138

Использование опыта тестирования реляционной СУБД для технологии NoSQL

Reading time5 min
Views10K
Tarantool — это открытое, высокопроизводительное хранилище данных. Такие характеристики системы, как простота и производительность, во многом определяют область её применимости. На шкале решений для хранения данных Tarantool находится где-то посередине между традиционными реляционными системами, такими как MySQL, и решениями для кэширования данных, такими как memcached. В основе системы лежит персистентное хранилище данных, полностью отображённое в оперативную память, и высокопроизводительные индексы для доступа к данным на основе хэшей и бинарных деревьев.

В мои первые месяцы работы над Tarantool я попытался создать инструментарий тестирования, похожий на тот, что был в моём предыдущем проекте с открытым исходным кодом — MySQL.
Читать дальше →
Total votes 52: ↑42 and ↓10+32
Comments17

Tarantool Данные и Протокол

Reading time5 min
Views6K

Tarantool это замечательное высокопроизводительное no-Sql решение, разработка компании Mail.Ru. Исходники

Данное решение позволяет использовать как режим key/value, так и выборку множества записей в рекордсет по одному или нескольким критериям (полям поиска). Аналогов в рунете и не только, я пока не встречал. С натяжкой можно сравнить редис. Но в редисе — списковые данные и их нельзя выбирать по ключу. Судя до утверждениям разработчиков, скорость доступа по ключу превосходит memcache, при этом еще в бэдграунде осуществляется постоянное сохранение данных на диск. Но к сожалению, данная разработка имеет единственный perl клиент для доступа к данным, из-за чего не имеет такой популярности, как например у redis или memcache.

В doc/box-protocol источников есть описание Протокола, которое я в настоящее время переработал для написания клиента на Си и PHP. Изучив Протокол, вы можете реализоать нативный клиент на любимом Вам языке. Надеюсь, данная статья в этом Вам пригодится.

Читать дальше →
Total votes 66: ↑50 and ↓16+34
Comments40

Потоко-безопасная ленивая инициализация в C++

Reading time9 min
Views13K
Реймонд Чен написал занятную серию блогпостов о беззамочной синхронизации. Мне бы хотелось опубликовать эти заметки и для хаброчитателей. Данный пост — введение в серию, скомпилированное из трёх старых постов Чена.
  1. Ленивая инициализация встроенными средствами C++
  2. Беззамочная синхронизация
  3. Беззамочная потоко-безопасная ленивая инициализация


Ленивая инициализация встроенными средствами C++


Инициализация статических локальных переменных в C++ непотокобезопасна, причём намеренно!

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

Попытайтесь сами найти рейс-кондишн во фрагменте кода, который вычисляет результат некоторой функции «лениво» — при первом обращении, и затем сохраняет этот результат для последующих обращений.

int ComputeSomething()
{
  static int cachedResult = ComputeSomethingSlowly();
  return cachedResult;
}

(Примерно такой код советуют в популярном C++ FAQ, чтобы не зависеть от выбранного компилятором порядка инициализации глобальных статических переменных.)
Читать дальше →
Total votes 55: ↑49 and ↓6+43
Comments21

Синглтон и время жизни объекта

Reading time9 min
Views16K
Эта статья является продолжением моей первой статьи “Использование паттерна синглтон” [0]. Сначала я хотел все, что связано со временем жизни, изложить в этой статье, но объем материала оказался велик, поэтому решил разбить ее на несколько частей. Это — продолжение целого цикла статей про использование различных шаблонов и методик. Данная статья посвящена времени жизни и развитию использования синглтона. Перед прочтением второй статьи настоятельно рекомендуется ознакомиться с моей первой статьей [0].

В предыдущей статье была использована следующая реализация для синглтона:
template<typename T>
T& single()
{
    static T t;
    return t;
}


Функция single возвращала нам заветный синглтон. Однако данный подход имеет изъян: в этом случае мы не контролируем время жизни объекта и он может удалиться в тот момент, когда мы хотим этим объектом воспользоваться. Поэтому следует использовать другой механизм создания объекта, используя оператор new.
Читать дальше →
Total votes 30: ↑24 and ↓6+18
Comments61

Дневник репатриантов: как мы подняли 1 млн. $ инвестиций за шесть недель (и отдали менее 15%)

Reading time5 min
Views4.2K
На UpStartConf – секции о рынке инвестиций и стартапов в рамках РИФа-2011 основатели Островок.ру рассказывали о том, как привлечь в Рунет мировых инвесторов.

Эксперты, инвесторы и IT-предприниматели Рунета сошлись в едином мнении, что на российском интернет-рынке нет публичных кейсов стартапов, нет обучения для начинающих веб-предпринимателей, что неблаготворно влияет на рынок. В этом посте репатрианты Кирилл Махаринский и Сергей Фаге презентуют кейс по привлечению инвестиций на примере проекта Островок.ру
Читать дальше →
Total votes 126: ↑118 and ↓8+110
Comments129

Вышла версия jQuery 1.6 RC 1

Reading time1 min
Views484
Джон Резиг позавчера сообщил о выходе предпросмотровой версии будущей библиотеки jQuery 1.6.

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

Резиг прилагает довольно обширный список изменений в версии 1.6 RC 1, в основном сводящихся к исправлению ошибок (иногда довольно замысловатых), ко сглаживанию шероховатостей, к ускорению работы отдельных функций. Есть и заметные новинки. Помимо тех, которые я ужé упоминал в обзоре бета-версии, появилась возможность вызывать jQuery.noConflict() в любое время, а также новый метод jQuery.holdReady() для того, чтобы при необходимости можно было придержать наступление события ready.

Метод .animate() снабдили поддержкою deferred-интерфейса (см. [1], [2]), так что делается возможным простое навешивание такой функции, которая должна сработать опосля завершения всех анимаций:
$.when(
   $elements.animate(properties),
   $elements2.animate(properties2),
   …
).then(function(){
   …
});

Вы наверняка согласитесь, что эта новинка необыкновенно приятна, потому что совершенно избавляет в таких случаях от необходимости возёхаться.
Total votes 64: ↑47 and ↓17+30
Comments25

Готовим Asus RT-N16 к жаркому лету

Reading time7 min
Views86K
Привет %username%,
Скоро лето. К сожалению, я понял это не по пробуждению природы, а по поведению моего Asus RT-N16.
Как только столбик термометра начал достигать отметки в 27 градусов, железяка начала подтормаживать, FTP стал плохо реагировать на подключения, а иногда и просто уходить в даун. Я понял — приплыли, и начал доставать из закромов родины радиаторы, паяльник и отвертку.

При подготовке топика ни одного роутера не пострадало, так же топик не содержит сцены насилия и жесткости. (Осторожно фото.)
Что было дальше, читайте под катом.
Total votes 49: ↑43 and ↓6+37
Comments83

Горизонтальное масштабирование PostgreSQL с помощью PL/Proxy.

Reading time9 min
Views28K
Очень тяжело начать писать статью. Т.е очень тяжело придумать вступительное слово. Хочется рассказать обо всём и сразу :) Но нет. Будем последовательны.
Начну с того что совсем недавно проходил Highload++ 2008 на котором мне удалось побывать.
Скажу сразу — мероприятие было проведено по высшему клаcсу, докладов было много и все были очень интересными.
Одной из самых запомнившихся презентаций была лекция Аско Ойя об инфраструктуре серверов баз данных в Skype. Лекция в большей степени касалась различных средств с помощью которых достигается такая производительность серверов.
По словам Аско, база данных Skype выдержит даже если все жители Земли захотят подключится к скайп в один момент.

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

UPD: Как правильно заметил хабраюзер descentspb в статье присутствует досаднейшая ошибка. В следствие своей невнимательности я подумал что PgBouncer надо устанавливать между прокси и клиентом. Но, как оказалось, та проблема которую я решал с помощью PgBouncer не решится если установить его именно так. Правильнее надо устанавливать боунсер между нодами и прокси. Мало того, именно так и рекомендуется делать в оффициальном мануале на сайте PL/Proxy.
В любом случае использование PgBouncer так как указано на моей схеме также даст прирост производительности. (Разгрузит Proxy).


Читать дальше →
Total votes 52: ↑49 and ↓3+46
Comments46

Mojolicious v1.12

Reading time2 min
Views2.8K
Я обнаружил что релиз замечательного перлового фреймворка Mojolicious на Хабре остался совершенно незамеченным. А тем временем, уже доступна версия v1.12, это прискорбно, т.к. теперь на перле стало писать проще чем никогда. Покажу это на реальном примере.
Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments24

Очнитесь, на дворе XXI век

Reading time5 min
Views32K


Начать статью я хотел бы с констатации того факта, что прямо за окном находится 2011 год (пруфлинк), середина апреля. Напоминаю я это в первую очередь себе, поскольку меня периодически посещают в этом сомнения. Дело в том, что как по работе, так и ради хобби я часто читаю код на С++, написанный лет 10-20 назад (но поддерживаемый и поныне) или код написанный совсем недавно, но людьми, которые учились программировать на С++ те же 20 лет назад. И вот после этого у меня и возникает ощущение, что никакого прогресса за эти годы не было, ничего не менялось и не развивалось, а по Земле до сих пор бродят мамонты.
Читать дальше →
Total votes 401: ↑370 and ↓31+339
Comments411

Команда dd и все, что с ней связано

Reading time4 min
Views605K

В UNIX системах есть одна очень древняя команда, которая называется dd. Она предназначена для того, чтобы что-то куда-то копировать побайтово. На первый взгляд — ничего выдающегося, но если рассмотреть все возможности этого универсального инструмента, то можно выполнять довольно сложные операции без привлечения дополнительного ПО, например: выполнять резервную копию MBR, создавать дампы данных с различных накопителей, зеркалировать носители информации, восстанавливать из резервной копии данные на носители и многое другое, а, при совмещении возможностей dd и поддержке криптографических алгоритмов ядра Linux, можно даже создавать зашифрованные файлы, содержащие в себе целую файловую систему.
Опять же, в заметке я опишу самые часто используемые примеры использования команды, которые очень облегчают работу в UNIX системах.
Читать дальше →
Total votes 323: ↑315 and ↓8+307
Comments119

О стандартах документации

Reading time4 min
Views96K
Документация – такая штука, к которой мало кто питает тёплые чувства: скучно, занудно, однообразно. И, тем не менее, иногда не возникает сомнений в её необходимости: ведь кому-то после вас этим пользоваться или, тем паче, модифицировать. И тогда появляется вопрос: как сделать документацию правильно?

Существует тьма статей на тему «как писать документацию», но если вы решили взяться за неё в первый раз, то в новой для вас области не сразу понятно, дело ли пишет автор, или отсебятину выдумывает.

Для того чтобы сформировать своё мнение без перелопачивания статей, можно пойти двумя путями: довериться некому авторитету или посмотреть в стандарты – уж там-то с наибольшей вероятностью проблему обдумали со всех сторон.

Читать дальше →
Total votes 78: ↑74 and ↓4+70
Comments46

Information

Rating
Does not participate
Location
Россия
Works in
Date of birth
Registered
Activity