?

Log in

No account? Create an account
Предупреждение
404
amarao_san

99+. Данное произведение предназначено для читателей старше 99 лет. Если вам нет 99 лет, вы не имеете права читать это произведение согласно Федеральному закону № 139-ФЗ от 28 июля 2012 года "О защите детей от информации, причиняющей вред их здоровью и развитию"


Данный журнал является литературным произведением и освещает вымышленные события в вымышленной стране. Все совпадения имён, фамилий, дат, цифр и прочей информации с реально существующими объектами и людьми являются случайными.

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

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

Предупреждение о возможном оскорблении чувств верующих, чувств сторонников прав животных, чувств животных и прочих. Вас предупредили.

Данное сообщение размещено 15 октября 2008 года. Сообщению присвоена дата 31 декабря 2037 года для технических нужд. Предупреждение действует как для записей, датированных сроком после 15 октября 2008 так и для размещённых ранее. Сообщение обновляется по мере того, как гсударственная дура придумывает новые правила.

Посещаемость данного ресурса составляет 0.042 человека в сутки*

*Согласно методологии измерения института Автономного Ядерного Технологического им. Ролля среди читателей, которые имеют право читать этот ресурс согласно возрастных ограничений

Guestbook
404
amarao_san
Комментарии и вопросы оставлять тут.

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

Наиболее страшной силой становится string theory вместе с Weyl symmetry. Её открытие требует несколько тысячелетий, после чего несколько тысячелетий длится эпоха погони за симметриями, после чего приходит крах цивилизации. До этого происходит много меньших циклов, приводящих к замедлению, но только string theory обладает достаточной эстетической силой, чтобы разрушить цивилизацию до пре-каменного века.

siga-siga tick-tock
404
amarao_san
Закон Мура мёрт и процессоры почти перестали ускоряться. А софт - нет. Я начал обнаруживать, что под многие интерактивные задачи процессора перестаёт хватать. С одной стороны я понимаю грандиозность решаемых в бэкграунде задач, с другой стороны - всё равно приходится ждать, причём cpu bound. В контексте ноута, даже thermal bound.

И что делать будем? Сокращать экспоненциальный рост аппетитов? Мы так не договаривались!

ага, сказали русские мужики
404
amarao_san
for n in `seq 1 65536`; do ip net add test_$n; ip net exec test_$n bash -c 'for a in `seq 1 16500`; do ip link add type veth;done'; done

(если что, 32600-сколько-то - лимит числа интерфейсов без учёта namespaces)

Сегодня я узнал чудное
404
amarao_san
Множество современной электроники работает на механических маятниках. Маленьких маятниках, конечно, но всё-таки механических.

https://en.wikipedia.org/wiki/Microelectromechanical_system_oscillator

Так что, возможно, рассказы про solid state devices без mechanical parts - это неким образом неправда. Внутри там нечто трясётся на сотнях килогерц или даде мегагерцах.

По мотивам вот этой статьи: https://arstechnica.com/gadgets/2018/10/helium-implicated-in-weird-iphone-malfunctions/

reversable computing
404
amarao_san
Меня некоторое время назад заинтересовала идея обратимых вычислений. Что это такое? Это когда мы берём состояние машины в какой-то момент времени, и имея на руках её память и её программу, мы можем восстановить её состояние, "обращая" (отменяя) операцию за операций. Мне оно интересно как игрушка, хотя в литературе говорят, что это основа низкоэнерговычисляющих компьютеров (которые не "waste heat").

Примеры интуитивно-понятных обратимых операций:

let A+=1 (операция обращения: let A-=1)
swap a,b (операция обращения swap a, b)

Примеры необратимых операций (операций, глядя на которые мы не можем восстановить состояние системы до операции)
let A=0
JMP 3 (что на самом деле всего лишь let IP=3)

Чуть-чуть исхитрившись мы можем придумать обратимые версии необратимых операций.

1. Я полностью игнорирую IO. (Как можно обратить высокое напряжение на ноге процессора, подключенной к пиропатрону я не понимаю)
2. Для упрощения описания я отказываюсь от регистров, все операции выполняются с памятью.
3. Указатель на инструкции крайне любопытен, т.к. без него невозможно. Я предположу, что память с адресом 0 - это указатель на следующую инструкцию
4. Стека нет, точнее, он реализуется эмуляцией его через значение (указателя) в ячейке памяти 1.
5. В первом приближении я буду игнорировать переполнение, т.е. не буду рассматривать что делать, если "не хватает битов". Это важный вопрос, но для пилотной идеи этим можно пренебречь. В моём рассмотрении каждая ячейка памяти будет способна хранить "достаточно много". Не бесконечность (никаких упаковок вселенной в одно машинное слово), но "достаточно много". Я буду работать только с машинными словами.
6. Все программы рассматриваются как чистые, без сайд эффектов. Значения на входе помещается в стек внешней силой, она же читает ответ из стека.
7. Программа может сделать только одну операцию с сайд-эффектом - HLT, говорящую о том, что вычисление законечно.

Моя первая попытка придумать dual sink для значений не сработала, так что я пока что думаю про простой вариант: дополнительный стек (J), от junk, для вытесняемых значений.

A=X превращается в

*J = *A
J++
*A=X

Обращение операции:

*A = *J
J--

Мне бы очень хотелось придумать алгоритм компрессии этого "J-stack", но пока что пропускаю.

Переход становится крайне интересной задачей - при том, что изменение IP (ячейка 0) тривиально (просто сохраните на стек), понять откуда был переход - невозможно. Таким образом, мы не можем использовать классические переходы по адресу, а вместо этого будем использовать переходы по метке.

Переход выглядит таким образом:

*J = *IP
J++
*IP = Z + 1

По адресу Z должна быть инструкция LAND, которая:

*J = *IP
J++
*IP++

Обращение этой операции выглядит как
*IP = *J
J--

Т.е. просто прочитать адрес с junk-стека. Там будет либо источник операции, либо предшествующая LAND операция.

JNE и прочие кодируются таким же образом, но нам надо иметь два LAND-оператора - в месте, куда JUMP, и сразу после инструкции JNE (если JUMP не случился).

В принципе, в таком виде мы получаем обратимые вычисления (до тех пор, пока J-стек есть). Заметим, классический RET из функции - это такой извращённый JMP по указателю из настоящего стека, который сохраняет в J-стек адрес возврата. Вызывающая программа должна предоставлять LAND-инструкцию для этого возврата.

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

Основной интересной задачей является придумать метод компрессии J-стека таким образом, чтобы он был не o(n) числа шагов программы.

secure DPI
404
amarao_san
Gateway, обнаружив входящий сетевой пакет, по openflow отсылает его на openflow контроллер. Контроллер (не заглядывая в пакет) отправляет его в jenkins в джобу на инспекцию. jeknins динамически создаёт контейнер на одном из слейвов (если надо, слейв динамически создаётся в cloud'е или в автоматическом baremetall провизе), внутри контейнера находится настроенная копия DPI, проводящая анализ пакета. Если этот пакет относится к существующей цепочке, это определяется по конфигурации в etcd. После того, как инспекция проведена, приложение создаёт артефакт с ответом, который архивируется на слейве, обрабатывается второй джобой. Ответ может быть сложным (например, поднять дополнительный datapath), так что джоба может триггерить несколько других джоб по конфигурации сетевого оборудования. После того, как конфиги разлиты, джоба возвращает ответ контроллеру в понятном gateway виде (для упрощения gateway ответ выглядит как список пакетов, которые нужно отправить по заданным портам, так, например, маршрутизация пересчитывает TTL и чексумму и для route задача будет "отправить пакет (с пересчитанным ttl/crc) в порт такой-то"). Благодаря хранению payload'а внутри тела запроса (оно несущественно на фоне обвязки XML/SOAP) gateway получается стейтлес и может отмаршрутизировать пакет другого gateway (например, из-за фейловера), что позволяет обеспечить нулевую потерю пакетов в интервале инспекции пакетов.

В настоящий момент наша команда работает над MVP-прототипом. В версии 2 по пожеланию заказчиков записано снижение latency для обработки пакета. В настоящий момент worst case включает в себя автоматический провиз бареметалл-сервера для слейва с запуском менеджера контейнеров, и составляет примерно 40 минут, плюс около 20 секунд на обработку пакета внутри контейнера, плюс около 20 секунд оверхед jenkins'а на обработку артефактов, плюс 300мс latency openflow контроллера, плюс 20µs на gateway. Клиент требует не более 5 мс, и у меня есть ощущение, что для версии два нам потребуется небольшой рефакторинг пайплайнов дженкинса. Запуск контейнера занимает примерно 500мс, так что возможно, стоит рассмотреть другие методы запуска контейнеризированных процессов для инспекции.

system @ HDD
404
amarao_san
В продолжение топика о том, что мы забыли, что такое "системный магнитный диск". У меня мои плейбуки лабораторные фейлятся на двухминутных таймаутах операций вида "apt-get update && apt-get install influx". Две минуты!

Ещё два-три фейла и экономически целесообразнее будет поставить SSD под почти пустую ОС.

freecad
404
amarao_san
Вот мы и дошли до логического финала..

ArchSection при рендеренге в svg (т.е. при генерации 2D планов) ингорирует dLabel. Точнее, игнорировало, потому что это питон и Work in progress:

https://github.com/amarao/FreeCAD/commit/031fbc54ffa44b6e56a1a235b1521e8fa4baff0f

Мне там ещё приделывать стрелочки и делать векторые операции для вычисления положения этих стрелочек.

И меня очень беспокоит их стиль письма. Их питон сильно напоминает C - я не видел ни одного генератора, ни одной лямбды, ни одного with. А строка 7216 в функции на ~500 строк с пятью вложенными функциями прямо плачет.

Но я не осилю "переписать всё". Или рискнуть? Мне очень хочется чтобы у них svg генерировался не методом svg+=''.
Tags: