Search
Write a publication
Pull to refresh
-2
2

Пользователь

Send message

Музыка в Рунете стала бесплатной. Совсем. Навсегда

Reading time2 min
Views59K
Произошло то, чего многие ждали давно и, фактически, уже имели: музыку теперь можно слушать бесплатно, но при этом абсолютно легально.
В рамках комплексного обновления старейшего легального магазина www.Fidel.ru появился новый тариф «Открытый». Теперь каждый зарегистрированный пользователь может абсолютно бесплатно, легально и всегда слушать любое количество музыки с битрейтом 320 кб/сек без рекламы и чего-либо надоедливого!
Читать дальше →

Домашний сервер — ESXi, паранойя

Reading time7 min
Views68K
Доброго времени суток, уважаемые хабровчане!

На хабре много статей, про то настройку тех или иных кусочков домашнего сервера. Хотелось бы поделиться еще одним вариантом построения домашней сети, нацеленной на сисадмина или разработчика. На этот раз на базе ESXi.

Кого заинтересовало — добро пожаловать под кат.
Читать дальше →

Метапрограммирование в C++

Reading time5 min
Views42K
Метапрограммирование — это «программирование программ», то есть написание некой промежуточной программы, результатом которой будет некая часть другой программы. Самый простой пример метапрограммирования — это шаблоны C++. Вместо написания десяти одинаковых функций для разных типов, мы пишем шаблон, и компилятор сам соберет нам эти десять функций.
Читать дальше →

Магия шаблонов или вычисление факториала на стадии компиляции

Reading time2 min
Views17K
Доброго времени суток, Хабралюди!

Гуру C++, а также люди смыслящие в шаблонном метапрограммировании могут смело пропускать этот топик, ничего нового для себя они здесь не найдут. Однако, если после прочтения заголовка, у вас в голове еще не возникло решение данной задачи (и даже если оно возникло, но не при помощи шаблонов), то милости просим под кат.
Читать дальше →

Оценка вредоносности файлов с помощью песочниц: Часть 2. Анализ в оффлайн

Reading time8 min
Views21K
Итак, ранее мы познакомились с основными ресурсами, доступными в сети для анализа файлов.

Однако на практике случается довольно много случаев, когда использование онлайн-песочниц не позволяет решить задачу. Это может быть связано с самыми различными факторами, например:

— Доступ к интернет затруднителен
— Онлайн-песочницы в данный момент перегружены, а выполнение анализа критично по времени
— Выполнение в онлайн песочницах блокируется изучаемым файлом
— Необходима более тонкая настройка режима выполнения файла при анализе, например — увеличение времени задержки с момента запуска

В этом случае на помощь нам приходит оффлайн-решение проблемы.
Об этом мы и поговорим сегодня.

Набор инструментов для построения графиков, блок-схем и диаграмм

Reading time3 min
Views180K


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

Nano: И всё-таки его придётся выучить [3]

Reading time1 min
Views44K
Заканчиваем. Предыдущие части: [1], [2]. Комбинации для запоминания: undo/redo, поиск/замена.
Скриншот Scribus с справкой по nano
В конце топика — ссылка на PDF'ку c обобщённой шпаргалкой и её исходник (на картинке скриншот редактора).

Отмена действий по-умолчанию не работает и требует запуска редактора с опцией «поддержка отмены» (да, nano по-умолчанию не поддерживает undo). Ключ командной строки -u.

nano -u sometext.

После этого начинают работать команды:

Alt-U — undo
Alt-E — redo.

Заметим, что в справке (Ctrl-G) оно появляется тоже, только если запустить nano с опцией -u.

Если nano запущен без -u, то единственной формой undo является отмена вырезанных по Ctrl-K строк обратным их вставлением — Ctrl-U.

С поиском чуть лучше.
Читать дальше →

Nano: И всё-таки его придётся выучить [2]

Reading time2 min
Views201K
Продолжаем. Предыдущий топик (навигация по тексту): тут.

Сегодняшняя тема — работа с выделением, копирование и удаление кусков текста.

Для понимания принципов команд работы с текстом нужно сначала понять принцип выделения текста. Он осуществляется либо мышью, либо с клавиатуры. С клавиатуры выделение происходит так: сначала отмечается начало выделение: Alt-A или Ctrl-^. Далее следует навигация — и до момента выполнения действия над текстом в буффере, выделение сохраняется (обратите внимание, выделение сохраняется даже при вводе текста, в этом оно сильно отличается от выделения в gui-приложениях windows и ближе к persistent blocks в TurboC, DN и соответствующей опции Far Manager'а).

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

Далее выделенный текст можно удалить или скопировать в буффер. Это делает комбинация Ctrl-K (или F9).

Выделенный текст можно скопировать в буффер обмена — комбинация Alt-6 (да, мы ЛЮБИМ nano).

Далее мы можем вставить текст из буффера обмена — Ctrl-U или F10. Обратите внимание — в подсказке снизу написана неправда, это не отмена удаления, это вставка.

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

Nano: И всё-таки его придётся выучить [1]

Reading time2 min
Views115K
            Речь идёт о текстовом редакторе nano в Linux.
Я не люблю nano и предпочитаю vim. Однако, в отсутствии vim, выбирая между vi и nano, я всё-таки предпочту nano, ибо как говорится в старой поговорке, «у vi есть два режима: бибикать и всё портить».

Кроме того, идёт активная замена vi на nano во многих дистрибутивах. Например, в новых версиях Debian и Ubuntu по-умолчанию vi устанавливается в самом куцем виде. А главное, его больше нет в busybox install/initrd этих ОС, что однозначно заставляет задуматься об изучении nano, не из любви к нему, а по необходимости.

Я понимаю, что сидеть и зубрить список комбинаций кнопок бесполезно, так что вместо этого я думаю сделать маленькие nano-уроки — по 8 комбинаций или фич за урок (я и сам их планирую изучать по мере публикации).

Nano не имеет «режима команд» как vim, и этим похож на oldschool-редакторы из консоли DOS/Windows (NC, Far Manager, DN, hiew/biew, внезапно втесавшегося в список mcedit и т.д.). Все команды отдаются нажатием комбинаций клавиш — функциональными кнопками или комбинацией Ctrl-буква, Alt-буква.

Важное отличие от 'generic editor' — это поддержка эмуляции Ctrl'а и Alt'а.

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

Xen Cloud Platform в условиях предприятия [4]

Reading time10 min
Views6.5K
Четвёртая часть. Предыдущие части: Первая, вторая, третья.

В этой главе: блочные устройства: физические и виртуальные; образы дисков, хранилища.

С точки зрения управления машинами это самая содержательная часть. Даже управление сетью (следующие части) проще, чем диски. Причина проста — дисковые устройства в виртуализации — самые сложные абстракции.

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

Каждая строчка из этого списка — отдельное свойство, требующее отдельной реализации (для сравнения у сетевого интерфейса свойств всего два: они могут принимать и отправлять информацию).

Для виртуализации эти свойства разделены в две группы: первая, связанна с хранением информации. Вторая — связанна с доступом к месту хранения информации.

Очевидно, что доступ (процесс доступа) тесно связан с виртуальной машиной. А процесс хранения — нет. Хранить мы можем и без того, кто пишет, а вот писать без того, кто хранит — не можем. Впрочем, вы не можем так же писать информацию и без того, кто пишет, таким образом процесс доступа тесно связан как с виртуальной машиной, так и с хранилищем информации.
Читать дальше →

Есть ли практический смысл использовать для итераторов префиксный оператор инкремента ++it, вместо постфиксного it++

Reading time5 min
Views23K
c++ or ++c
Я все-таки решил разобраться, есть ли смысл при работе с итераторами писать ++iterator, а не iterator++. Мой интерес к этому вопросу возник не из любви к искусству, а из практических соображений. Мы давно хотим развивать PVS-Studio не только в направлении поиска ошибок, но и в сторону выдачи подсказок по оптимизации кода. Выдача сообщения, что лучше писать ++iterator вполне уместна в плане оптимизации.

Но вот насколько эта рекомендация актуальна в наше время? В стародавние времена, например, советовали не повторять вычисления. Считалось хорошим тоном вместо:
X = A + 10 + B;
Y = A + 10 + C;

написать так:
TMP = A + 10;
X = TMP + B;
Y = TMP + C;

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

Ghost in the Xen

Reading time2 min
Views1.8K
Я продолжаю пристально изучать Xen Cloud Platform и в ходе экспериментов мне удалось создать «призрак»: виртуальную машину, которая (с точки зрения гипервизора) отсутствовала.

Эта виртуальная машина когда-то имела диск, но диск был удалён (и осталась только его кешированная копия в памяти), что, в принципе, не мешало на этот диск писать/читать.

Эта виртуальная машина когда-то имела виртуальный сетевой адаптер, но он был удалён, что в принципе, не мешало отправлять и получать ip-пакеты.

Эта виртуальная машина была — и её не стало. Её не было видно ни на высоком уровне, ни на низком. Её не существовало. Всё осложнялось тем, что я не знал, на каком из серверов облака эта виртуальная работала.

Другими словами, я имел настоящий полноценный призрак. После того, как я перегрузил нужный (лабораторный) сервер, виртуальная машина умерла. Но вопрос остался открытым:
Читать дальше →

Xen Cloud Platform в условиях предприятия [1]

Reading time8 min
Views12K
Среди всех энтерпрайзнутых систем виртуализации XCP единственная бесплатная и свободная. История XCP уходит в XenServer, который хоть и основывался на опенсорсном гипервизоре, но был вполне себе платным софтом. Цирикс опубликовала код XenServer под свободной лицензией и с этих пор XenServer начал плавно превращаться в Xen Cloud Platform.

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

С пользовательской точки зрения основным различием между обычным зеном (в составе большинства ОС) и XCP является процесс установки и количество добработок до запуска в продакт. XCP поставляется в виде ISO'шки с готовой ОС для dom0 (CentOS), адаптированной для обслуживания гипервизора и обеспечения работы хостов в облаке. Xen же обычно идёт в виде hypervisor + utils, подразумевается, что всё остальное человек создаст сам. Ещё некоторым бонусом для тех, кому приходится соприкасаться с продукцией Microsoft, являются подписанные драйвера для Windows (их с некоторыми ухищрениями можно установить и в зене, но в XCP они являются родными).

XCP — относительно своеобразная платформа. Она не «закрыта» в том смысле, как закрыт, например, hyper-v, но идёт в виде готовой ОС, многие аспекты конфигурации которой контролируются средствами платформы, а не ОС. Например, сеть: можно повесить ip-адрес на любой интерфейс ifconfig'ом, но последствия этого будут печальные — следует использовать инструментарий платформы для управления сетями и интерфейсами.

XCP состоит из нескольких компонент: xen, xapi, open vswitch, xe cli, stunnel, sqeezed обеспечивающих разные аспекты работы системы.

В начале о системных требованиях:
Читать дальше →

История одного бага

Reading time7 min
Views8.6K
Буквально вчера мне пришлось разбираться с одним очень тонким и специфичным багом. Баг оказался фичей, которая спотыкалась о другой баг. В ходе изучения проблемы я был вынужден изучить несколько особенностей Debian, угробить 4 часа времени и получить массу опыта.

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

Предыстория

В ходе разворачивания стенда для экспериментов из нескольких идентичных серверов захотелось иметь возможность запускать нужные версии приложения без ручной работы по обновлению кода на куче хостов. Было решено запускать нужные программы с NFS-шары. Приложения были internal use only, одноразовые, причём написанные под конкретную задачу. Шара монтировалась в каталог /opt при загрузке и приложения оттуда запускались с помощью скрипта rc.local. Поскольку речь шла про экспериментальный стенд с очень частым изменением кода, играть в честного разработчика (пакеты, репозиторий, обновления, init.d скрипты) было лениво. Всё происходило под Debian Squeeze.

Шара была прописана в /etc/fstab, запуск нужных тестов — в rc.local. Казалось бы, всё сделано.

… И тут я наткнулся на Мистику. Приложения стартовали раз из пяти, причём версия «кривое приложение» была отметена почти сразу — ровно так же иногда не запускались любые другие исполняемые файлы. Причём, с /opt. Из других каталогов отрабатывали нормально. При этом руками rc.local запускаешь — 100% всё хорошо. При загрузке — успешный запуск раз из пяти, или даже реже.

В начале я не воспринимал эту проблему как серьёзную, и пытался её решить нахрапом. Поскольку проблема проявлялась только для /opt я дописал в rc.local команду ls -a1 /opt >/var/log/ls. Как и предполагалось, в /opt на момент выполнения rc.local было только два файла — точка и две точки. Другими словами, NFS-шара не подмонтировалась. Иногда. А иногда подмонтировалась.

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

Используем быстрые селекторы для jQuery

Reading time3 min
Views41K
Как Вы знаете — в разработке объёмного JS-приложения где используется популярнейшая библиотека jQuery наступает момент когда остро встаёт проблема производительности. Все силы кидаются на амбразуру профайлера, каждый вызов скрупулёзно исследован, каждый функционально нагруженный кусок реализации обнюхан со всех сторон и выправлен. Но беда поступает не с той стороны, откуда её ждут 90% разработчиков. Селекторы — Как много в этом слове.
Давайте разберёмся — как работает эта магия и почему поиск DOM-элементов может стать причиной падения производительности приложения.
Читать дальше →

Flash + IntelliJ IDEA

Reading time8 min
Views23K
Всем привет. Если вы сталкивались с разработкой Flash-приложений, то скорее всего стандартные инструменты, предоставляемые Flash IDE для написания кода не вызвали у вас особого восторга. Существует несколько популярных сред для Flash/Flex-разработки: FlashDevelop, FlashBuilder, FDT, еще может быть парочка. В сети полно холиваров насчет того, какая из них лучше, но в данной статье я буду исходить из того, что вам приглянулась IntelliJ IDEA (или просто — «Идея»), но вы с ней совсем не знакомы и не знаете, с какой стороны к ней подступиться. Что же, попробуем разобраться вместе!

Flash + IntelliJ IDEA

Что Вы найдете в этой статье:
  • Краткое описание: где скачать, как установить, настроить IDE'ю
  • Как создать проект, начать работу
  • Как связать IDE'ю с Flash-проектом
  • Как компилировать, запускать проект, подключать библиотеки
  • Описание некоторых приятных мелочей, которые я регулярно использую
Чего Вы в этой статье не найдете:
  • Каких-то чисто Flex-специфик вещей
  • Описания сборки проекта ANT'ом (хотя вскользь мы этого коснемся), использования Maven и т.д.
  • Описания преимуществ IDE'и перед аналогами, её главных фич
Вроде бы здесь считается хорошим тоном предупреждать о трафике — под катом небольшая кучка скриншотов, весит ~500кб.
Читать дальше →

Метод имитации отжига

Reading time7 min
Views52K
Дорогие друзья, доброго времени суток!

Уже не один раз здесь обсуждалась такая разновидность оптимизационных алгоритмов, как генетические алгоритмы. Однако, существуют и другие способы поиска оптимального решения в задачах с многими степенями свободы. Один из них (и, надо сказать, один из наиболее эффективных) — метод имитации отжига, о котором здесь ещё не рассказывали. Я решил устранить эту несправедливость и как можно более простыми словами познакомить вас с этим замечательным алгоритмом, а заодно привести пример его использования для решения несложной задачки.

Я понимаю, почему генетические алгоритмы пользуются такой большой популярностью: они очень образны и, следовательно, доступны для понимания. В самом деле, несложно и крайне интересно представить решение некой задачи, как реальный биологический процесс развития популяции живых существ с определёнными свойствами. Между тем, алгоритм отжига также имеет свой прототип в реальном мире (это понятно и из самого названия). Правда, пришёл он не из биологии, а из физики. Процесс, имитируемый данным алгоритмом, похож на образование веществом кристаллической структуры с минимальной энергией во время охлаждения и затвердевания, когда при высоких температурах частицы хаотично движутся, постепенно замедляясь и застывая в местах с наименьшей энергией. Только в случае математической задачи роль частиц вещества выполняют параметры, а роль энергии — функция, характеризующая оптимальность набора этих параметров.

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

Технология электросмачивания

Reading time2 min
Views13K
В декабре прошлого года, впервые с 1999 года, компания Samsung поглотила другую компанию. Ей оказалась голландская Liquavista BV, занимающаяся разработкой технологии электросмачивания.

image

Пять лет назад Liquavista выделилась из состава Philips Research Labs и занялась разработкой технологии электронных экранов, также известной как электросмачивание (англ. electrowetting — EW). Электросмачивание подразумевает изменение свойств влажности гидрофобных поверхностей с помощью воздействия электрического поля.
Читать дальше →

Об учёте дисков в облаке

Reading time3 min
Views7.4K
Продолжаем цикл статей, посвящённых учёту ресурсов облака Селектел.

Процессорное время и память обсуждалась в прошлом году, теперь подошла очередь дисков.

С диском связаны три ресурса, каждый из которых учитывается отдельно:
  1. хранение дисков
  2. объём прочитанного/записанного
  3. и количество дисковых операций
Перед тем, как мы обсудим все три ресурса, нужно ещё объяснить одну интересную особенность устройства виртуальных машин — раздельность учёта ресурсов.

Устройство виртуальной машины

Процессорное время (то есть процессор) и оперативная память, о которых мы говорили ранее — это неотъемлемые ресурсы виртуальной машины. Если их нет — нет и самой виртуальной машины. Но можно (хотя и сложно) представить себе виртуальную машину без дисков и/или без сетевых интерфейсов. Кроме того, одни и те же диски можно подключать к разным виртуальным машинам. Таким образом возникает вопрос: а как учитывать диски, которые были сначала у одной машины, потом у другой, а сейчас вообще лежат не подключенными?

Наша ранняя модель учёта подразумевала, что все эти ресурсы относятся на счёт той виртуальной машины, к которой подключены. Но это вызывало массу неоднозначностей, и мы от этой модели отказались, вернувшись к модели, используемой в Xen Cloud Platform. На картинке упрощённая версия этой модели. Синим показано то, что принадлежит пользователю, зелёным — имена объектов, у которых осуществляется учёт.
Читать дальше →

Об учёте оперативной памяти в облаке

Reading time6 min
Views10K
Продолжаем подробный разбор того, как учитываются ресурсы.

Перед тем, как мы обсудим, как учитывается память, сначала посмотрим, как эта память виртуальной машине выделяется, и что такое вообще «память виртуальной машины».


Реальная память виртуальных машин

Гипервизор Xen, являющийся основой XCP, являющийся основой облака Селектел, контролирует несколько аспектов работы виртуальных машин. Из интересующих нас с точки зрения учёта — процессор и память. Процессор мы обсудили, теперь очередь оперативной памяти.

С точки зрения Xen'а выделение памяти домену (виртуальной машине) означает, что домен имеет право писать в указанную страницу памяти. Попытка домена записать в запрещённую для него страницу памяти вызовет исключительную ситуацию и с большой вероятностью прекращение работы домена, так что ядро гостевой системы тщательно следит за тем, чтобы не выйти за пределы разрешённой памяти (ровно так же, если программа попытается обратиться к несуществующей странице памяти, то ядро программу аварийно завершит или вызовет обработчик ошибок). В любом случае, виртуальной машине разрешено использовать только ту память, которую ей разрешили использовать. Таким образом, Xen всегда точно знает, сколько страниц памяти выделено той или иной виртуальной машине. (Да, минимальная градация учёта памяти — это 4кб кусочек памяти, называющийся «страница»). Я опущу раздел, связанный с трансляциями адресов, поскольку это одна из самых… м… затруднительных областей. Если вкратце — пририсуйте к обычной схеме трансляции виртуальной памяти на i386 ещё две таблицы дескрипторов — получится примерно оно.

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

Внутри виртуальной машины запущен modd (memory on demand dæmon), который посредством xenstore (специфичный для зена метод взаимодействия между доменами) сообщает управляющему сервису о том, в каком состоянии находится память домена. В реальности это просто запись содержимого /proc/meminfo, не более. Сервер смотрит на настройки виртуальной машины и решает, сколько памяти нужно добавить или убрать. И отдаёт команду на изменение памяти.

И вот тут начинается самое интересное. В Xen'е существует понятие передача страниц памяти. Это, в буквальном смысле, означает «взять страницу памяти от одного домена и передать другому». Соответственно, когда отдаётся команда на отдачу/приём памяти, Xen забирает у гостевой системы память, или отдаёт ей эту память. В силу общей (полезной) параноидальности Xen'а, все отдаваемые из домена страницы предварительно обнуляются (чтобы случайно не отдать ценные данные посторонним соседям по виртуализации).

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

Information

Rating
1,884-th
Registered
Activity