Pull to refresh
0
max7 @max7read⁠-⁠only

User

Send message

Мифы о CAP теореме

Reading time13 min
Views33K

Введение


cap


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


Событие, когда какая-то статья вызывает бурю эмоций, — крайне редкое. Первый раз такое возникло, когда я прочитал про chained replication. Меня пытались убедить, что это мощный подход и что это лучшее, что могло произойти с консистентной репликацией. Я сейчас не буду приводить доводы, почему это плохо работает, а просто приведу говорящую цитату из статьи Chain Replication metadata management:


Split brain management is a thorny problem. The method presented here is one based on pragmatics. If it doesn’t work, there isn’t a serious worry, because Machi’s first serious use case all require only AP Mode. If we end up falling back to “use Riak Ensemble” or “use ZooKeeper”, then perhaps that’s fine enough.

В моем вольном пересказе это означает примерно следующее: "У нас тут есть некий алгоритм. Мы не знаем, будет ли он работать правильно или нет. Да нам это и не важно". Хотя бы честно, сэкономило кучу времени, спасибо авторам.


И тут, значит, попадается на глаза статья: Spanner, TrueTime & The CAP Theorem. Её мы разберем по полочкам ближе к концу, вооружившись понятиями и знаниями. А перед этим разберем самые распространенные мифы, связанные с CAP теоремой.

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

Удаленная переустановка Linux по ssh без доступа к консоли

Reading time8 min
Views64K
Понадобилось мне переустановить сервер, который как бы хостился у знакомых знакомых. Там был сильно устаревший Debian, а, самое главное, система стояла на обычных разделах без lvm и пространство было распределено очень не оптимально. Физический доступ получить к нему было практически нереально, местного админа попросить что-то сделать было можно, но занять это могло неделю. Виртуальный KVM у сервера был, но извне на него попасть было нельзя; у как бы хостера не было лишних IP-адресов, а внутрь его сети попасть было невозможно. Надо было переустановить сервер из-под работающей системы по ssh. Ага, давайте поменяем ротор у турбины не выключая, потом её перезапустим и будет она с новым ротором работать!
Читать дальше →

Automount afuse

Reading time3 min
Views14K
Я хотел рассказать про своё открытие afuse — автомонтирование файловых систем по требованию, автоматически. Разве не здорово просто сделать:

ls /mnt/remote/web.example.com/var/lib/www/

И сразу увидеть файлы web-сервера, никак не устанавливая с ним соединение специально? Я этим пользуюсь уже давно, а главное:

  • Это работает из любого источника: Не важно, делаете вы указанный вывод в консоли, сохранили ссылку в MC или переходите из favorites вашего любимого менеджера такого как nautilus или dolphin
  • Вы можете переходить на любой хост, куда у вас есть доступ по ключам (настроить запрос пароля тоже можно, но это не интересно)
  • Вы можете запросто указать под каким пользователем входить на сервер, используя @:

    cd /mnt/remote/apache@web.example.com/var/lib/www/
    
Читать дальше →

Сам себе туннельный брокер или нативный IPv6 на компе при помощи OpenVPN

Reading time5 min
Views22K
Я — большой сторонник использования IPv6, стараюсь его использовать где это только возможно. Недавно подумав я решил, что на большинстве своих виртуалок переведу ssh на ipv6-only, биндить буду на рандомно выбранный при конфигурации адрес, который потом пропишу в ДНСах для своего удобства. Но возник вопрос с доступом с моего ноутбука к тем кого таким образом настрою. Понятно, что всегда можно ходить через сервер, где у меня IPv6, конечно же есть, обычно я так и делаю, но случаи бывают разные.

Почесав немного голову я понял, что я же могу взять какую-нибудь /112 из /64 даваемой хостером и раздать по OpenVPN своему ноуту и прочим личным машинам, тем самым получив настоящий ipv6, а не адрес от брокеров.

Решил, значит надо делать. Выбрал для этого виртуалку от vultr, на которой у меня ничего изначально не было и которая предназначена была для тестов и взялся за настройку.

Vultr выдает виртуалкам сети /64, в нашем примере пусть это будет сеть 2001:NNNN:NNNN:NNNN::/64, из нее мы возьмем «маленький» кусочек /112, который и будем раздавать своим компам, пусть это будет 2001:NNNN:NNNN:NNNN:80::/112. Процедуру генерации ключей для OpenVPN я описывать не буду, она достаточно подробно описана в других руководствах, рассмотрю только конфиг и скрипты, которые будут использоваться для наших целей.

В файле /etc/openvpn/variables мы пропишем сеть и маску которые будем использовать, отсюда у нас это дело заберут скрипты:

# Subnet
prefix=2001:NNNN:NNNN:NNNN:80::
# netmask
prefixlen=112

Конфиг openvpn-сервера:
Читать дальше →

Сила воли – вредный и устаревший термин, от которого необходимо избавиться

Reading time10 min
Views75K


Томас (имена вымышленные) был очень успешным и спокойным юристом, волновавшимся по поводу своего пристрастия к спиртному. Когда он попал ко мне на сеанс психотерапии, он потреблял 6-7 стаканов вина за вечер, и он уже начинал прятать эту привычку от домашних и чувствовать её влияние на свою работу. Мы обсудили стратегии лечения и назначили новую встречу. Но когда он вернулся через две недели, то был совершенно подавлен: с потреблением алкоголя ничего не изменилось.

«Я просто не могу себя ограничивать. Наверно, у меня нет силы воли».

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

Биология поведения человека: Лекция #4. Молекулярная генетика, I [Роберт Сапольски, 2010. Стэнфорд]

Reading time1 min
Views16K


Мы продолжаем публиковать лекции Стэнфордского университета.
Представляем вам четвёртую лекцию курса 2010 г. «Биология поведения человека» профессора Роберта Сапольски.
Это первая часть раздела, посвященного связи биологии поведения и молекулярной генетики. В ней рассказывается о связи синтеза белков и точечных мутаций с микроэволюционными изменениями, и обсуждаются конфликтующие друг с другом теории градуализма и прерывистого равновесия, а также феномен эпигенетики. Лекция под катом в списке уже переведённых лекций.
Всего в курсе 25 лекций, постепенно мы переведём все.
Читать дальше →

Пятничный формат: VPN через… Jabber?

Reading time5 min
Views16K
У некоторых людей интересные истории начинаются с приёма жидкостей с содержанием алкоголя. У некоторых с чего-то покрепче… У меня, как у истинного представителя мира IT, история началась… С отключения интернета. Конечно можно было пойти простым путём для решения проблемы, и просто заплатить, но ведь это не истинный путь самурая? Много больших скриншотов
Читать дальше →

Ищем и скачиваем непопулярные и старые файлы в интернете

Reading time14 min
Views214K
Преимущественно медиафайлы. На полном серьезе, без шуток.

Введение

Бывает, случается так, что вы хотите скачать альбом 2007 года исполнителя, который кроме вас известен 3.5 людям, какой-нибудь испанский ска-панк или малопопулярный спидкор европейского происхождения. Находите BitTorrent-раздачу, ставите на закачку, быстро скачиваете 14.7%, и… все. Проходит день, неделя, месяц, а процент скачанного не увеличивается. Вы ищете этот альбом в поисковике, натыкаетесь на форумы, показывающие ссылки только после регистрации и 5 написанных сообщений, регистрируетесь, флудите в мертвых темах, вам открываются ссылки на файлообменники вроде rapidshare и megaupload, которые уже сто лет как умерли.

Попытка скачать хотя бы один файл
Увы, частая ситуация в попытке хоть что-то скачать

Такое случается. В последнее время, к сожалению, случается чаще: правообладатели и правоохранительные органы всерьез взялись за файлообмен; в прошлом году закрылись или были закрыты KickassTorrents, BlackCat Games, what.cd, btdigg, torrentz.eu, EX.ua, fs.to, torrents.net.ua, и еще куча других сайтов. И если поиск свежих рипов фильмов, сериалов, музыки, мультиков все еще не представляет большой проблемы, несмотря на многократно участившееся удаления со стороны правообладателей контента из поисковых систем, торрент-трекеров и файлообменников, то поиск и скачивание оригинала (DVD или Blu-Ray) фильмов и сериалов или просто ТВ-рипов 7-летней давности на не-английском и не-русском языке — не такая уж простая задача.
Читать дальше →

Публикуем сайт в межпланетной файловой системе IPFS

Reading time5 min
Views21K

В этой статье я расскажу как в ней запустить статичный сайт который будет доступен и напрямую и по IPNS. У сайта будет нормальное доменное имя благодаря использованию DNS. Доменное имя можно использовать для доступа к сайту напрямую, через глобальный и локальный шлюз.


Условия:


  1. На нашем сервере установлен IPFS
  2. У нас есть домен и доступно редактирование DNS записей

Напомню: InterPlanetary File System — это новая децентрализованная сеть обмена файлами (HTTP-сервер, Content Delivery Network). О ней я начал рассказ в статье "Межпланетная файловая система IPFS".

image

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

Управление контейнерами с runC

Reading time6 min
Views17K
runc

Продолжаем цикл статей о контейнеризации. Сегодня мы поговорим о runC — инструменте для запуска контейнеров, разрабатываемом в рамках проекта Open Containers. Цель этого проекта заключается в разработке единого стандарта в области контейнерных технологий. Проект поддерживают такие компании, как Facebook, Google, Microsoft, Oracle, EMC, Docker. Летом 2015 года был опубликован черновой вариант спецификации под названием Open Container Initiative (OCI).
Читать дальше →

Биология поведения человека: Лекция #1. Введение [Роберт Сапольски, 2010. Стенфорд]

Reading time1 min
Views34K
Уже давно мы получили одобрение от профессора Стенфордского университета Роберта Сапольски на перевод и озвучку его авторского курса по биологии «Биология поведения человека»:


Элементы функционального программирования в C++: частичное применение

Reading time8 min
Views15K

Не буду сильно углубляться в теорию. Что такое частичное применение легко найти в интернете. В том числе на Википедии.


Если кратко, то это механизм, позволяющий зафиксировать k аргументов функции от n аргументов, сделав из неё функцию от (n - k) аргументов.


// Пусть имеется функция f от четырёх аргументов:
int f (int a, int b, int c, int d)
{
    return a + b + c + d;
}

// Фиксируем первые два аргумента:
auto g = part(f, 1, 2); // 1 + 2 + ...

// Добрасываем оставшиеся два:
assert(g(3, 4) == 10); // ... + 3 + 4 = 10

На эту тему уже существует масса публикаций, в том числе и на Хабре:


  1. C++ Variadic templates. Каррирование и частичное применение
  2. Частичное применение и каррирование в C++
  3. Каррируем на C++

А ветка "How should I make function curry?" на stackoverflow — просто кладезь для тех, кто впервые сталкивается с этой темой.


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


Замечательный факт №1. В упомянутых статьях присутствуют все техники, которые нужны для реализации правильного (по моему мнению) частичного применения.


Надо только всё внимательно проанализировать и сложить кубики в правильном порядке. Именно этим я и собираюсь заняться в данной статье.

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

node-direct — один NodeJS сервер на несколько сайтов

Reading time5 min
Views6.2K

tl;dr


С node-direct можно заливать серверные .js файлы и обращаться к ним так же, как к .php скриптам: example.com/foo.srv.js.


  1. Установка.


    npm install -g node-direct

  2. Конфигурация nginx.


    location ~ \.srv\.js$ {
            root <path_to_website_files>;
            proxy_pass http://localhost:<port>;
            proxy_set_header X-Requested-File-Path $document_root$uri;
    }

  3. Запуск.


    node-direct --port=<port>

  4. Скрипт foo.srv.js, где req и res созданы сервером express.


    module.exports = function(req, res) {
            const someModule = require('some-module');
            res.send('Hello world!');
    }


Введение


Когда NodeJS стал более-менее популярным, мне было нелегко осознать, что с ним всё не так просто, как с PHP. Используя последний, можно было создать .php файл, залить его на сервер, обратиться по адресу example.com/путь/имяфайла.php и радоваться. Такая простота развертывания скриптов служила одной из причин, почему "пых" стал таким популярным.


В свою очередь, NodeJS, независимо от сложности приложения, заставляет очень многие вещи делать руками.


  • Гоняй каждое приложение на собственном порту
  • Определи роуты самостоятельно
  • Настрой деплой
  • Убедись, что приложение работает и после перезагрузки сервера
  • Не забудь сделать так, чтоб при изменении файлов, NodeJS сервер перезагружался
Читать дальше →

Оптимизация кода: память

Level of difficultyHard
Reading time12 min
Views94K
Большинство программистов представляют вычислительную систему как процессор, который выполняет инструкции, и память, которая хранит инструкции и данные для процессора. В этой простой модели память представляется линейным массивом байтов и процессор может обратиться к любому месту в памяти за константное время. Хотя это эффективная модель для большинства ситуаций, она не отражает того, как в действительности работают современные системы.

В действительности система памяти образует иерархию устройств хранения с разными ёмкостями, стоимостью и временем доступа. Регистры процессора хранят наиболее часто используемые данные. Маленькие быстрые кэш-памяти, расположенные близко к процессору, служат буферными зонами, которые хранят маленькую часть данных, расположеных в относительно медленной оперативной памяти. Оперативная память служит буфером для медленных локальных дисков. А локальные диски служат буфером для данных с удалённых машин, связанных сетью.

image

Иерархия памяти работает, потому что хорошо написанные программы имеют тенденцию обращаться к хранилищу на каком-то конкретном уровне более часто, чем к хранилищу на более низком уровне. Так что хранилище на более низком уровне может быть медленнее, больше и дешевле. В итоге мы получаем большой объём памяти, который имеет стоимость хранилища в самом низу иерархии, но доставляет данные программе со скоростью быстрого хранилища в самом верху иерархии.
Читать дальше →

Биологи из Токийского университета выяснили причину неуязвимости тихоходок

Reading time4 min
Views163K


Крохотные живые организмы, которых называют «тихоходками» хорошо известны в научной среде своей нечувствительностью к внешним факторам. Высокая или низкая температура? Не проблема, тихоходки выживают в невероятно сложных условиях, когда погибают даже самые стойкие микроорганизмы.

Впервые тихоходку описал немецкий пастор И.А. Гёце, назвав ее «маленьким водяным медведем». Современное название эти существа получили в 1777 году благодаря итальянскому ученому Спалланцани.

ФСБ планирует дешифровать весь интернет-трафик россиян в режиме реального времени

Reading time2 min
Views59K
ФСБ, Минкомсвязь и Минпромторг обсуждают набор технических решений, которые позволят дешифровать весь интернет-трафик россиян в режиме реального времени. Об этом со ссылкой на собственные источники сообщает газета "Коммерсантъ".

image

В опубликованной статье сообщается, что обсуждаемая ФСБ технология является частью реализации нашумевшего «пакета Яровой».
Читать дальше →

Польза чистописания и другие образовательные мифы

Reading time9 min
Views51K


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

Как по мне, это служит символом непонятной одержимости, разделяемой многими странами, по поводу того, как дети должны учиться писать. Мы учим их формированию букв на основе того, что они видят в букварях. А затем мы заставляем их учить этот навык заново, только уже при помощи непрерывного письма. Однако не существует доказательств преимущества курсива перед другими стилями письма, например, перед рукописью, в которой буквы не соединены, для большинства нормально развитых детей.
Читать дальше →

Суд РФ разрешил публиковать чужие фотографии без разрешения автора? Не совсем [Обновлено]

Reading time4 min
Views49K

Фотография Ильи Варламова из статьи «Почему в Америке столько бомжей?». Размещена без разрешения автора, как это сделал портал 66.ru, который является ответчиком по иску Ильи Варламова. Фото: Илья Варламов // varlamov.ru

Суд по интеллектуальным правам РФ принял историческое решение, которое может повлиять на работу СМИ в стране. По крайней мере, так считают представители портала 66.ru, которые судятся с предпринимателем Ильёй Варламовым.

По иску хабраюзера и фотографа Ильи Варламова (zyalt) против портала 66.ru суд отменил решения судов первой и второй инстанции, которые постановили выплатить компенсацию автору за незаконное использование фотографий. Представители портала 66.ru считают, имеет право публиковать информационные фотографии, не спрашивая разрешения автора, при соблюдении следующих пяти условий.

  1. Фотографии — информационного характера, то есть освещающие текущие экономические, политические, социальные и религиозные вопросы.
  2. Указано имя автора.
  3. Указан источник заимствования.
  4. Правообладатель выложил фотографии в открытый доступ.
  5. Нет специального запрета на использование фотографий.
Читать дальше →

Мнение хабра: отключать или нет крупный сайт задолжавший 450 000 рублей?

Reading time4 min
Views36K

Вечером 8го сентября, был отключен от всемирной паутины первый сайт рунета о культурной и клубной жизни geometria.ru. Причиной отключения послужила задолженность в полмиллиона рублей перед другой заслуженной организацией — сетью дата-центров Selectel.

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

Скрипт для тех, кому лень разбираться в Linux

Reading time7 min
Views113K
Сфер применения Linux может быть очень много. Особенно, когда арендовать VPS стало можно от $1 в месяц. Кроме стандартного использования под хостинг сайтов, его используют в качестве сервера для игр (CS:GO, Terraria, Minecraft), в качестве Proxy-сервера и VPN-сервера. Под майнинг криптовалют. Под резервное хранилище бэкапов. Под домашнюю торренто-качалку. А также для тестирования, разработки и просто различных экспериментов. Именно доступность VPS на базе Linux с огромным спектром возможного его применения привела к популяризации Linux. Но желающих использовать Linux значительно больше, чем людей, которые умеют его использовать. И часто именно слабые познания администрирования Linux останавливают людей от его использования. Ну или просто усложняют таким людям жизнь — им приходится часами ковыряться в мануалах, форумах и «статьях для новичков».

Да мне и самому надоело лазить по специализированным форумам, каждый раз, когда приходится сделать шаг влево или шаг вправо относительно того, что я уже научился делать. Именно поэтому, со временем, все типовые вещи я свёл в один скрипт с дружелюбным интерфейсом, который умеет делать всё сам. Начиналась всё с малого. Скрипт просто автоматизировал установку нужного мне софта. Но за полгода он превратился уже в весьма серьёзную утилиту весом более 100 Кб, в которой около 2,5 тысяч строк кода. Скрипт ранее нигде не выкладывался. Использовался только в личных целях мной и несколькими моими товарищами. Пришло время им поделиться с публикой. Уверен, многим людям он способен сэкономить кучу времени.

Чтобы понять, что он умеет, проще всего глянуть на заглавный скриншот:


Далее подробнее опишу, что и как он делает.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity