Pull to refresh
0
0
Александр @Unlogic

User

Шаблоны ЕСКД и ГОСТ 7.32 для Lyx 1.6.x

Reading time 3 min
Views 22K
LaTeX *
Уже более полугода я пользуюсь текстовым процессором Lyx. Встроенных шаблонов с лихвой хватало, чтобы писать конспекты лекций, готовиться к семинарам и делать несложные отчеты к лабораторным работам. Но в прошлом семестре пришлось делать два курсовых проекта в соответствии с требования ЕСКД. Я начал работу в Lyx, но без специальных шаблонов документов, мои отчеты в редакторе выглядели так:

Читать дальше →
Total votes 68: ↑67 and ↓1 +66
Comments 22

Будни разработки облака, часть первая

Reading time 6 min
Views 1.5K
Cloud computing *
Серию официальных постов в блоге компании про то, как работать с облаком я ещё продолжу, но параллельно мне хочется рассказать про те проблемы, с которыми мы столкнулись во время адаптации Xen Cloud Platform под нашу модель работы облака. Эти посты будут чуток сложнее и предполагают, что читатель хотя бы в общих чертах знает, как работает Xen.

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

Действительно, у нас есть xencontrol (библиотека управления гипервизором Xen), которая может точно сказать про каждый домен (запущенную виртуальную машину), сколько у неё есть памяти, сколько наносекунд времени было потрачено. Эта библиотека запрашивает информацию напрямую (через xenbus) у гипервизора и подвергает её минимальной обработке.

Выглядит эта информация примерно так (вывод биндинга xencontrol для питона):
{
    'paused': 0, 
    'cpu_time': 1038829778010L, 
    'ssidref': 0, 
    'hvm': 0, 
    'shutdown_reason': 0, 
    'dying': 0, 
    'mem_kb': 262144L, 
    'domid': 3, 
    'max_vcpu_id': 7, 
    'crashed': 0, 
    'running': 0, 
    'maxmem_kb': 943684L, 
    'shutdown': 0, 
    'online_vcpus': 8, 
    'handle': [148, 37, 12, 110, 141, 24, 149, 226, 8, 104, 198, 5, 239, 16, 20, 25], 
    'blocked': 1
}


Как мы видим, есть поле mem_kb, соответствующее выделенной памяти для виртуальной машины и есть поле cpu_time, содержащее какое-то умопомрачительное число (хотя на самом деле это всего лишь 17 минут). cpu_time считает с точностью до наносекунд (точнее, величина, которая тут хранится считается в наносекундах, реальная точность около микросекунды). Память, как понятно, в килобайтах (хотя внутренней единицей учёта, что гипервизора, что ядра линукс является страница — её размер по-умолчанию 4 килобайта).

Казалось бы «бери и считай», однако, дьявол кроется в деталях…

Извините за жёлтый заголовок ниже, но именно так звучал вопрос в полемике в ходе обсуждения одной из проблем:

Hyper-threading + Xen = воровство денег у клиентов


Читать дальше →
Total votes 75: ↑69 and ↓6 +63
Comments 13

Один компьютер на двоих (и более) или multiseat на базе Ubuntu 10.04 LTS

Reading time 22 min
Views 46K
Configuring Linux *
Sandbox
В данной статье рассматривается реализация multiseat на базе Ubuntu 10.04 LTS с аппаратным ускорением. Пример, рассмотренный в этой статье, уже введен в эксплуатацию и работает около полугода в обычном Минском офисе. Описываются проблемы реализации и внедрения готовой системы в работу с точки зрения обычного студента-электроприводчика, который подрабатывает на полставки системным администратором.

Вступление



Вот время работы системным администратором в небольшом офисе при обновлении парка компьютеров появилась небольшая проблема. Современные компьютеры дают уровень производительности, много превосходящий необходимый для офисных компьютеров. Причем реалии рынка таковы, что различия в производительности мало сказываются на цене. И вроде бы дешевые компьютеры на базе Atom по ценовому признаку практически не отличаются от более производительных компьютеров на базе обычных процессоров Amd и Intel (материнская плата с процессором Atom стоит около 100-150 у.е. на май 2010 года, Минск, и та же цена на октябрь 2010 в том же Минске).

Та же ситуация и с жесткими дисками: для офисной работы нет необходимости в объеме диска более 40-80 Гб. Но на рынке такие жесткие диски уже практически не представлены. На момент написания статьи в продаже были жесткие диски емкостью 160 Гб (38$), 250 Гб (39$), 320 Гб (40$), 500 Гб (41$), дальше различия по ценам заметны сильнее. Цена за гигабайт жестких дисков малого объема довольно высока. Та же ситуация и со всеми остальными комплектующими.

Возникает закономерный вопрос, как рационально все это использовать? Давайте подойдем логически — чтобы удешевить систему можно либо купить комплектующие похуже (не сильно удешевляет), либо отказаться от некоторых комплектующих. По сути, в рабочем месте обязательными являются устройства ввода (клавиатура, мышь, планшет и т.д.) и устройства отображения информации (монитор, проектор и т.д.). Остальная часть системы пользователей особо не касается, и от нее можно избавляться. Безусловно, от всего избавиться не получится. Давайте заглянем под крышку системного блока. Тут мы обязательно видим материнскую плату, видеокарту (может быть уже на материнской плате), процессор (тоже может быть на материнской плате) и память. А вот остальные комплектующие уже не так важны. Оптический привод мало востребован, и поэтому его, скорее всего, не будет.
С жестким диском тоже интересная ситуация. Его может и не быть, тогда у нас будет так называемая бездисковая станция. Тут вся информация загружается по сети с сервера (реализация PXE+NFS и немного бубна). Но хочется чего-то большего.
Тогда и возникла идея подключить к одному компьютеру две клавиатуры, две мыши и два монитора и заставить их работать независимо. В зарубежных источниках такие системы называются multiseat.
Но можно на этом и не ограничиваться, а делать бездисковую multiseat-станцию. Этот вариант отлично подойдет для пары multiseat-станций с сервером. В данной статье не рассматривается.

Читать дальше →
Total votes 153: ↑145 and ↓8 +137
Comments 125

Full Circle Magazine Special Edition — The Perfect Server

Reading time 1 min
Views 688
Configuring Linux *


Сегодня свет увидел специальный выпуск журнала Full Circle Magazine под интригующим номером 1.
В нем собраны статьи по установке и конфигурированию различных серверных приложений на основе Ubuntu Server
узнать больше
Total votes 39: ↑34 and ↓5 +29
Comments 19

Операционные усилители (на основе простейших примеров): часть 1

Reading time 3 min
Views 263K
Electronics for beginners
Tutorial
Sandbox
В курсе электроники есть много важных тем. Сегодня мы попытаемся разобраться с операционными усилителями.
Начнем сначала. Операционный усилитель — это такая «штука», которая позволяет всячески оперировать аналоговыми сигналами. Самые простейшие и основные — это усиление, ослабление, сложение, вычитание и много других (например, дифференцирование или логарифмирование). Абсолютное большинство операций на операционных усилителях (далее ОУ) выполняются с помощью положительных и отрицательных обратных связей.
В данной статье будем рассматривать некий «идеал» ОУ, т.к. переходить на конкретную модель не имеет смысла. Под идеалом подразумевается, что входное сопротивление будет стремиться к бесконечности (следовательно, входной ток будет стремиться к нулю), а выходное сопротивление — наоборот, будет стремиться к нулю (это означает, что нагрузка не должна влиять на выходное напряжение). Также, любой идеальный ОУ должен усиливать сигналы любых частот. Ну, и самое важное, коэффициент усиления при отсутствующей обратной связи должен также стремиться к бесконечности.
Читать дальше →
Total votes 78: ↑72 and ↓6 +66
Comments 29

Тёмная материя интернета

Reading time 17 min
Views 29K
Crowdsourcing
Иногда я открываю окно торрент-клиента и просто смотрю, как он раздает файлы… Это завораживает даже больше, чем дефрагментация или гейзеры и вулканы в трехлитровой банке с домашним квасом. Ведь я помогаю множеству незнакомых мне людей качать нужные им файлы. Мой домашний компьютер — маленький сервер, ресурсами которого я делюсь со всем интернетом. Наверное, похожие чувства побуждают тысячи добровольцев по всему миру участвовать в проектах вроде folding@home.

Ни один файловый сервер не справился бы с тем объемом раздачи, который обеспечивают миллионы маленьких компьютеров по всему миру, используя лишь небольшую часть своих ресурсов. Вот если бы я мог так же легко поделиться ресурсами с любым понравившимся мне сайтом! Если бы затраты на хостинг при росте аудитории росли не линейно, а логарифмически, за счет «добровольного ботнета» из компьютеров посетителей. Насколько меньше рекламы я бы увидел? Сколько интересных стартапов избавились бы от головной боли по поводу масштабирования? Сколько некоммерческих проектов могли бы перестать зависеть от благосклонности меценатов? И насколько труднее было бы кибергопникам или спецслужбам DDoS-ить такой сайт!
Читать дальше →
Total votes 196: ↑191 and ↓5 +186
Comments 132

Моноиды и их приложения: моноидальные вычисления в деревьях

Reading time 20 min
Views 21K
Algorithms *
Приветствую, Хабрахабр. Сегодня я хочу, в своём обычном стиле, устроить сообществу небольшой ликбез по структурам данных. Только на этот раз он будет гораздо более всеобъемлющ, а его применения и практичность — простираться далеко в самые разнообразные области программирования. Самые красивые применения, я, конечно же, покажу и опишу непосредственно в статье.

Нам понадобится капелька абстрактного мышления, знание какого-нибудь сбалансированного дерева поиска (например, описанного мною ранее декартова дерева), умение читать простой код на C#, и желание применить полученные знания.

Итак, на повестке сегодняшнего дня — моноиды и их основное применение для кеширования вычислений в деревьях.

Моноид как концепция


Представьте себе множество чего угодно, множество, состоящее из объектов, которыми мы собираемся манипулировать. Назовём его M. На этом множестве мы вводим бинарную операцию, то есть функцию, которая паре элементов множества ставит в соответствие новый элемент. Здесь и далее эту абстрактную операцию мы будем обозначать "⊗", и записывать выражения в инфиксной форме: если a и b — элементы множества, то c = ab — тоже какой-то элемент этого множества.

Например, рассмотрим все строки, существующие на свете. И рассмотрим операцию конкатенации строк, традиционно обозначаемую в математике "◦", а в большинстве языков программирования "+": "John""Doe" = "JohnDoe". Здесь множество M — строки, а "◦" выступает в качестве операции "⊗".
Или другой пример — функция fst, известная в функциональных языках при манипуляции с кортежами. Из двух своих аргументов она возвращает в качестве результата первый по порядку. Так, fst(5, 2) = 5; fst("foo", "bar") = "foo". Безразлично, на каком множестве рассматривать эту бинарную операцию, так что в вашей воле выбрать любое.

Далее мы на нашу операцию "⊗" накладываем ограничение ассоциативности. Это значит, что от неё требуется следующее: если с помощью "⊗" комбинируют последовательность объектов, то результат должен оставаться одинаковым вне зависимости от порядка применения "⊗". Более строго, для любых трёх объектов a, b и c должно иметь место:
(ab) ⊗ c = a ⊗ (bc)
Легко увидеть, что конкатенация строк ассоциативна: не важно, какое склеивание в последовательности строк выполнять раньше, а какое позже, в итоге все равно получится общая склейка всех строк в последовательности. То же касается и функции fst, ибо:
fst(fst(a, b), c) = a
fst(a, fst(b, c)) = a
Цепочка применений fst к последовательности в любом порядке всё равно выдаст её головной элемент.

И последнее, что мы потребуем: в множестве M по отношению к операции должен существовать нейтральный элемент, или единица операции. Это такой объект, который можно комбинировать с любым элементом множества, и это не изменит последний. Формально выражаясь, если e — нейтральный элемент, то для любого a из множества имеет место:
ae = ea = a
В примере со строками нейтральным элементом выступает пустая строка "": с какой стороны к какой строке её ни приклеивай, строка не поменяется. А вот fst в этом отношении нам устроит подлянку: нейтральный элемент для неё придумать невозможно. Ведь fst(e, a) = e всегда, и если ae, то свойство нейтральности мы теряем. Можно, конечно, рассмотреть fst на множестве из одного элемента, но кому такая скука нужна? :)

Каждую такую тройку <M, ⊗, e> мы и будем торжественно называть моноидом. Зафиксируем это знание в коде:
public interface IMonoid<T> {
    T Zero { get; }
    T Append(T a, T b);
}

Больше примеров моноидов, а также где мы их, собственно, применять будем, лежит под катом.
Читать дальше →
Total votes 127: ↑124 and ↓3 +121
Comments 27

Война в киберэпоху: концепция геоцентрического ТВД

Reading time 4 min
Views 3K
Information Security *

Освоение кибернетического пространства военными уже привело к переоценке многих постулатов военной науки прошлого, и даже представлений о характере обеспечения глобального доминирования. Появились новые теоретики военного дела и новые теории.
Наиболее интересным текущим результатом этого процесса (он явно только начался, и ещё преподнесёт сюрпризы) является, вероятно, доктрина «Геоцентрического ТВД», выдвинутая командующим космическими войсками ВВС США генералом Робертом Келером. В ее основе – представление о фундаментальной взаимосвязи кибернетического и космического пространств. Стоит обсудить недолгую, но богатую событиями историю признания доктрины геоцентрического ТВД, хотя бы обозначить здесь основные ее постулаты, и попытаться понять её смысл.
подробности
Total votes 107: ↑97 and ↓10 +87
Comments 72

LaTex: Упражнение

Reading time 1 min
Views 4.2K
Website development *
Для того, чтобы старшему ребёнку давать примеры на сложение и вычитание в столбик, написал скрипт на Groovy, который генерирует LaTeX с примерами.
Цель была попрактиковаться в груви, ну и писать примеры от руки надоело.

Раньше на латехе ничего не писал, но что это и зачем нужен знал из Универа.
Часа два трахался с тем, как на LaTeX сделать нужный вид столбика.
Для работы с LaTeX поставил соответствующие пакеты из CygWin.

Вот скрипт, надеюсь кому нибудь пригодится:
Читать дальше →
Total votes 27: ↑21 and ↓6 +15
Comments 25

Java как язык для параллельных вычислений. Установка, настройка, первая программа

Reading time 2 min
Views 18K
Java *
Здравствуйте,

Ни разу не видел за определённый промежуток своей работы с HPC людей, пишущих на Java параллельные программы. Сам писал кое-что на С, разглядывал Фортран, но душа всегда тянулась к Java. В конце концов сел и попробовал разобраться.

Содержание:
1) Имплементации MPI for Java; Что это? Где взять?
2) Как установить всё это? Как настроить?
3) Напишем свою самую-самую простую программу. Как её запустить?

Читать дальше →
Total votes 42: ↑35 and ↓7 +28
Comments 43

Information

Rating
Does not participate
Location
Украина
Registered
Activity