<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Без рубрики &#8212; valeriysirenko.ru</title>
	<atom:link href="https://valeriysirenko.ru/category/%D0%B1%D0%B5%D0%B7-%D1%80%D1%83%D0%B1%D1%80%D0%B8%D0%BA%D0%B8/feed/" rel="self" type="application/rss+xml" />
	<link>https://valeriysirenko.ru</link>
	<description>Блог Сиренко Валерия Николаевича</description>
	<lastBuildDate>Mon, 31 Aug 2026 14:16:39 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://valeriysirenko.ru/wp-content/uploads/2025/04/icon2-150x150.png</url>
	<title>Без рубрики &#8212; valeriysirenko.ru</title>
	<link>https://valeriysirenko.ru</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Гипотеза общей теории технологий (роза технологий)</title>
		<link>https://valeriysirenko.ru/gipoteza-obshhej-teorii-tehnologij-versiya-0-1/</link>
					<comments>https://valeriysirenko.ru/gipoteza-obshhej-teorii-tehnologij-versiya-0-1/#respond</comments>
		
		<dc:creator><![CDATA[treeloys]]></dc:creator>
		<pubDate>Mon, 31 Aug 2026 14:16:39 +0000</pubDate>
				<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Философия]]></category>
		<guid isPermaLink="false">https://valeriysirenko.ru/?p=813</guid>

					<description><![CDATA[Основная идея Любая технология может быть рассмотрена как способ создания и поддержания в ограниченной области пространства и времени заданного набора физических условий. Конечный продукт (сталь, микросхема, лекарство, пластмасса и т.п.) является следствием существования этой области с заданными параметрами. Таким образом, фундаментальным объектом анализа является не машина и не продукт, а управляемая область пространства-времени, внутри которой [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Основная идея</h1>



<p class="wp-block-paragraph">Любая технология может быть рассмотрена как способ создания и поддержания в ограниченной области пространства и времени заданного набора физических условий.</p>



<p class="wp-block-paragraph">Конечный продукт (сталь, микросхема, лекарство, пластмасса и т.п.) является следствием существования этой области с заданными параметрами.</p>



<p class="wp-block-paragraph">Таким образом, фундаментальным объектом анализа является не машина и не продукт, а <strong>управляемая область пространства-времени</strong>, внутри которой поддерживаются необходимые физические условия.</p>



<span id="more-813"></span>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Постулат 1</h1>



<p class="wp-block-paragraph">Любая технология существует для управления одним или несколькими физическими параметрами.</p>



<p class="wp-block-paragraph">К ним относятся, например:</p>



<ul class="wp-block-list">
<li>температура;</li>



<li>давление;</li>



<li>химический состав;</li>



<li>концентрации;</li>



<li>электрическое поле;</li>



<li>магнитное поле;</li>



<li>механические напряжения;</li>



<li>скорость потоков;</li>



<li>радиация;</li>



<li>освещенность;</li>



<li>влажность;</li>



<li>другие измеримые физические величины.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Постулат 2</h1>



<p class="wp-block-paragraph">Любая технология характеризуется не только значением параметров, но и возможностью управлять ими.</p>



<p class="wp-block-paragraph">Каждый параметр описывается следующими характеристиками:</p>



<ul class="wp-block-list">
<li>диапазон достижимых значений;</li>



<li>точность;</li>



<li>стабильность;</li>



<li>скорость изменения;</li>



<li>пространственное распределение;</li>



<li>длительность удержания;</li>



<li>воспроизводимость.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Постулат 3</h1>



<p class="wp-block-paragraph">Любая технология ограничена пространством и временем.</p>



<p class="wp-block-paragraph">Поэтому дополнительно вводятся характеристики:</p>



<ul class="wp-block-list">
<li>объем воздействия;</li>



<li>форма области воздействия;</li>



<li>разрешение (минимальный управляемый объем);</li>



<li>длительность процесса;</li>



<li>цикличность;</li>



<li>непрерывность.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Постулат 4</h1>



<p class="wp-block-paragraph">Практическая ценность технологии определяется стоимостью создания физических условий.</p>



<p class="wp-block-paragraph">Она характеризуется:</p>



<ul class="wp-block-list">
<li>энергозатратами;</li>



<li>расходом материалов;</li>



<li>стоимостью оборудования;</li>



<li>стоимостью эксплуатации;</li>



<li>надежностью;</li>



<li>безопасностью;</li>



<li>экологическими последствиями.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Следствие 1</h1>



<p class="wp-block-paragraph">Технологический прогресс представляет собой расширение области физических состояний, которыми цивилизация способна управлять.</p>



<p class="wp-block-paragraph">Исторические примеры:</p>



<ul class="wp-block-list">
<li>освоение высоких температур;</li>



<li>освоение высокого давления;</li>



<li>освоение глубокого вакуума;</li>



<li>освоение сверхнизких температур;</li>



<li>освоение атомной точности;</li>



<li>освоение сверхкоротких временных интервалов.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Следствие 2</h1>



<p class="wp-block-paragraph">Любые две технологии можно сравнивать независимо от их назначения.</p>



<p class="wp-block-paragraph">Сравнение производится по способности создавать требуемые физические условия:</p>



<ul class="wp-block-list">
<li>диапазон;</li>



<li>точность;</li>



<li>объем;</li>



<li>время;</li>



<li>стоимость;</li>



<li>производительность;</li>



<li>воспроизводимость.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Следствие 3</h1>



<p class="wp-block-paragraph">Производительность является производной характеристикой.</p>



<p class="wp-block-paragraph">Она показывает, какой объем пространства-времени с заданными параметрами способен создать технологический процесс за единицу времени.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Следствие 4</h1>



<p class="wp-block-paragraph">Масштаб производства является производной характеристикой.</p>



<p class="wp-block-paragraph">Он показывает максимальный объем пространства, в котором технология способна одновременно поддерживать необходимые физические условия.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Следствие 5</h1>



<p class="wp-block-paragraph">Большинство инженерных устройств можно интерпретировать как специализированные генераторы физических условий.</p>



<p class="wp-block-paragraph">Например:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Устройство</th><th>Создаваемые условия</th></tr></thead><tbody><tr><td>Печь</td><td>Высокая температура</td></tr><tr><td>Компрессор</td><td>Высокое давление</td></tr><tr><td>Вакуумный насос</td><td>Низкое давление</td></tr><tr><td>Лазер</td><td>Высокая плотность энергии</td></tr><tr><td>Электромагнит</td><td>Магнитное поле</td></tr><tr><td>Реактор</td><td>Совокупность температуры, давления и состава среды</td></tr><tr><td>3D-принтер</td><td>Локальное изменение температуры и положения материала</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Универсальная карточка технологии</h1>



<p class="wp-block-paragraph">Любая технология может быть описана следующим набором параметров.</p>



<h3 class="wp-block-heading">1. Управляемые физические параметры</h3>



<p class="wp-block-paragraph">Какие величины изменяются?</p>



<h3 class="wp-block-heading">2. Диапазоны</h3>



<p class="wp-block-paragraph">Какие значения достижимы?</p>



<h3 class="wp-block-heading">3. Пространственные характеристики</h3>



<p class="wp-block-paragraph">Где создаются условия?</p>



<h3 class="wp-block-heading">4. Временные характеристики</h3>



<p class="wp-block-paragraph">Когда и как долго?</p>



<h3 class="wp-block-heading">5. Качество управления</h3>



<p class="wp-block-paragraph">Точность, стабильность, воспроизводимость.</p>



<h3 class="wp-block-heading">6. Производительность</h3>



<p class="wp-block-paragraph">Какой объем условий создается за единицу времени?</p>



<h3 class="wp-block-heading">7. Стоимость</h3>



<p class="wp-block-paragraph">Во сколько обходится создание этих условий?</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Открытые вопросы</h1>



<p class="wp-block-paragraph">Гипотеза пока не отвечает на ряд фундаментальных вопросов:</p>



<ol class="wp-block-list">
<li>Является ли перечень физических параметров полным?</li>



<li>Можно ли свести часть параметров к более фундаментальным?</li>



<li>Можно ли формально определить &#171;пространство технологических возможностей&#187;?</li>



<li>Можно ли построить метрику расстояния между технологиями?</li>



<li>Можно ли предсказывать появление новых технологий через анализ &#171;незаполненных областей&#187; этого пространства?</li>
</ol>



<h1 class="wp-block-heading">В результате чего появилась теория?</h1>



<p class="wp-block-paragraph">Это человеческая часть. Собственно у меня давно была теория, что пространство и преобразования в ней по своей природе очень близкородственны. Первые мои размышления были о том, что по сути можно за X и Y взять два физических параметра, температуру, и давление. И чем лучше люди начали их использовать, тем более крутые вещи они начали создавать. А собственно способность поддерживать заданные условия вполне коррелирует с техническим прогрессом. Кроме того, распространяется на значительную часть видимой физической реальности.</p>



<p class="wp-block-paragraph">Как воспроизвести вывод теории?</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">1. Почему все химмические реакции можно разделить на это: Процесс увеличение/уменьшения температуры во времени Процесс увеличения/уменьшения объема/размера во времени Процесс увеличения/уменьшения давления при постоянном объеме во времени Процесс пропорционального смешивания веществ во времени и как будто три из них можно представить в трехмерном виде?</p>



<p class="wp-block-paragraph">2. Я про то, что развитие технологий как-то связанно с созданием этих процессов. Чем до больших величин удавалось машинами или руками создавать определенные условия, тем круче цивилизация.</p>



<p class="wp-block-paragraph">3. И что из этого следует. Т.е. Создание определенных условий, с определенной точностью, в определенном объеме пространства, на определенном отрезке времени.</p>



<p class="wp-block-paragraph">4. В каких трудах близко подошли к этой концепции</p>



<p class="wp-block-paragraph">5. А еще критерии такие как количество повторений процессов, масштаб, производительность хотя я так понимаю есть более универсальные и более хреновые.</p>



<p class="wp-block-paragraph">6. Давай попробуем в общую теорию запихнуть. Где бы мне анализ по этим критериям бы дали.</p>



<p class="wp-block-paragraph">Note bene.</p>



<p class="wp-block-paragraph">Эта работа <strong>не заменяет</strong> термодинамику, теорию управления, системную инженерию и химическую технологию. Она предлагает единый взгляд, позволяющий описывать технологии разных отраслей через способность создавать и поддерживать управляемые физические состояния.</p>



<BDS:VISUALIZER>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Расширение границ технологических возможностей</title>
<style>
:root {
  --bg: #f8f9fb;
  --card-bg: #ffffff;
  --text: #1a1a2e;
  --text-secondary: #5a5d6e;
  --border: #e2e5ea;
  --accent: #4d6bfe;
  --radius: 14px;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  background: var(--bg);
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
  padding: 12px;
}
.container {
  width: 100%;
  max-width: 780px;
  background: var(--card-bg);
  border-radius: var(--radius);
  border: 1px solid var(--border);
  box-shadow: 0 2px 18px rgba(0,0,0,0.05);
  padding: 24px 20px 18px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.title {
  font-size: 1.1rem;
  font-weight: 650;
  color: var(--text);
  letter-spacing: -0.01em;
  text-align: center;
}
.subtitle {
  font-size: 0.78rem;
  color: var(--text-secondary);
  text-align: center;
  margin-top: -8px;
}
canvas {
  display: block;
  width: 100%;
  max-width: 560px;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: #fff;
}
.controls {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  max-width: 540px;
  flex-wrap: wrap;
  justify-content: center;
}
.btn {
  width: 36px; height: 36px;
  border-radius: 50%;
  border: 1.5px solid var(--border);
  background: #fff;
  cursor: pointer;
  font-size: 0.95rem;
  color: #333;
  transition: all 0.15s;
  display: flex;
  align-items: center;
  justify-content: center;
}
.btn:hover { background: rgba(77,107,254,0.08); border-color: var(--accent); color: var(--accent); }
.btn.active { background: var(--accent); color: #fff; border-color: var(--accent); }
.year-display {
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--accent);
  min-width: 80px;
  text-align: center;
  font-family: 'SF Mono', 'Consolas', monospace;
}
.slider-wrap { flex: 1; min-width: 140px; }
input[type="range"] {
  -webkit-appearance: none; width: 100%; height: 6px;
  border-radius: 8px; background: #e8ecf1; outline: none; cursor: pointer;
}
input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none; width: 24px; height: 24px;
  border-radius: 50%; background: var(--accent);
  border: 3px solid #fff; box-shadow: 0 1px 6px rgba(77,107,254,0.3);
  cursor: pointer;
}
.tooltip-info {
  font-size: 0.7rem;
  color: var(--text-secondary);
  text-align: center;
  min-height: 16px;
}
.legend-row {
  display: flex; flex-wrap: wrap; gap: 8px 14px;
  justify-content: center; font-size: 0.68rem; color: var(--text-secondary);
}
.legend-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; margin-right: 3px; }
</style>
</head>
<body>
<div class="container">
  <div class="title">Расширение границ технологических возможностей</div>
  <div class="subtitle">Освоение экстремальных физических состояний в истории цивилизации</div>
  <canvas id="chart"></canvas>
  <div class="tooltip-info" id="tooltip">Перемещайте ползунок или нажмите <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/25b6.png" alt="▶" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
  <div class="controls">
    <button class="btn" id="btnRew" title="В начало">⟲</button>
    <button class="btn" id="btnPlay" title="Воспроизвести"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/25b6.png" alt="▶" class="wp-smiley" style="height: 1em; max-height: 1em;" /></button>
    <div class="year-display" id="yearDisplay">−5000</div>
    <div class="slider-wrap">
      <input type="range" id="timeSlider" min="0" max="1000" value="0" step="1">
    </div>
  </div>
  <div class="legend-row">
    <span><span class="legend-dot" style="background:#e0694a"></span>Температура</span>
    <span><span class="legend-dot" style="background:#4d6bfe"></span>Давление</span>
    <span><span class="legend-dot" style="background:#7c5ce0"></span>Вакуум</span>
    <span><span class="legend-dot" style="background:#2ea87a"></span>Точность</span>
    <span><span class="legend-dot" style="background:#0d9eac"></span>Время</span>
  </div>
</div>

<script>
(function() {
  const canvas = document.getElementById('chart');
  const ctx = canvas.getContext('2d');
  const slider = document.getElementById('timeSlider');
  const yearDisplay = document.getElementById('yearDisplay');
  const tooltipEl = document.getElementById('tooltip');
  const btnPlay = document.getElementById('btnPlay');
  const btnRew = document.getElementById('btnRew');

  const W = 560, H = 530;
  canvas.width = W;
  canvas.height = H;
  canvas.style.width = W + 'px';
  canvas.style.height = H + 'px';

  const cx = W / 2, cy = 250, innerR = 45, outerR = 200;
  const colors = ['#e0694a','#4d6bfe','#7c5ce0','#2ea87a','#0d9eac'];
  const paramNames = ['Температура','Давление','Вакуум','Точность','Время'];
  const angles = [-90, -18, 54, 126, 198].map(a => a * Math.PI / 180);

  const dataSeries = {
    temperature: {
      minVal: 300, maxVal: 6e12,
      points: [[-5000,1000],[-3000,1400],[-1200,1800],[1700,2100],[1856,3500],[1945,1e6],[1961,1e8],[2000,4e12],[2026,5.5e12]]
    },
    pressure: {
      minVal: 1e5, maxVal: 5e11,
      points: [[-3000,1e5],[1700,1e6],[1900,1e8],[1955,1e10],[1976,1e11],[2020,5e11]]
    },
    vacuum: {
      minVal: 1e5, maxVal: 1e-8,
      points: [[-5000,1e5],[1654,1e4],[1900,1e-1],[1950,1e-5],[1980,1e-7],[2020,1e-8]]
    },
    spatial: {
      minVal: 1e-2, maxVal: 2e-11,
      points: [[-5000,1e-2],[1700,1e-3],[1850,1e-4],[1900,1e-5],[1960,1e-6],[1981,1e-9],[2005,1e-10],[2026,3e-11]]
    },
    temporal: {
      minVal: 1, maxVal: 1e-17,
      points: [[-5000,1],[1700,0.1],[1850,1e-3],[1950,1e-6],[1970,1e-9],[1990,1e-12],[2001,1e-15],[2010,1e-16],[2023,4.3e-17]]
    }
  };
  const keys = Object.keys(dataSeries);

  const milestones = [
    [-5000,'Костёр ~1000 K'],
    [-3000,'Керамика ~1400 K'],
    [-1200,'Железный век ~1800 K'],
    [1654,'Магдебургские полушария'],
    [1700,'Паровой двигатель'],
    [1856,'Электродуга ~3500 K'],
    [1900,'Промышленный вакуум'],
    [1945,'Ядерный взрыв 10⁶ K'],
    [1961,'Термоядерный синтез'],
    [1981,'Атомное разрешение (СТМ)'],
    [2000,'Кварк-глюонная плазма'],
    [2010,'Аттосекундные импульсы'],
    [2020,'Металлический водород'],
  ];

  function interpolate(pts, year) {
    if (year <= pts[0][0]) return pts[0][1];
    if (year >= pts[pts.length-1][0]) return pts[pts.length-1][1];
    for (let i = 0; i < pts.length-1; i++) {
      if (year >= pts[i][0] && year <= pts[i+1][0]) {
        let t = (year - pts[i][0]) / (pts[i+1][0] - pts[i][0]);
        let lv0 = Math.log10(pts[i][1]);
        let lv1 = Math.log10(pts[i+1][1]);
        return Math.pow(10, lv0 + t * (lv1 - lv0));
      }
    }
    return pts[pts.length-1][1];
  }

  function progress(key, year) {
    let ds = dataSeries[key];
    let val = interpolate(ds.points, year);
    let logVal = Math.log10(Math.max(ds.minVal, Math.min(ds.maxVal, val)));
    let logMin = Math.log10(ds.minVal);
    let logMax = Math.log10(ds.maxVal);
    return (logVal - logMin) / (logMax - logMin);
  }

  function sciNotation(v) {
    if (v === 0) return '0';
    let exp = Math.floor(Math.log10(Math.abs(v)));
    let mant = v / Math.pow(10, exp);
    if (Math.abs(mant - 1) < 0.01) return '10' + sup(exp);
    return mant.toFixed(1) + '·10' + sup(exp);
  }
  function sup(n) {
    let s = String(n);
    let map = {'0':'⁰','1':'¹','2':'²','3':'³','4':'⁴','5':'⁵','6':'⁶','7':'⁷','8':'⁸','9':'⁹','-':'⁻'};
    return s.split('').map(c => map[c]||c).join('');
  }

  function formatValue(key, val) {
    if (key === 'temperature') return sciNotation(val) + ' K';
    if (key === 'pressure') return sciNotation(val) + ' Па';
    if (key === 'vacuum') return sciNotation(val) + ' Па';
    if (key === 'spatial') {
      if (val >= 1e-6) return (val*1e6).toFixed(1)+' мкм';
      return sciNotation(val) + ' м';
    }
    if (key === 'temporal') {
      if (val >= 1e-3) return (val*1e3).toFixed(1)+' мс';
      if (val >= 1e-6) return (val*1e6).toFixed(1)+' мкс';
      return sciNotation(val) + ' с';
    }
    return sciNotation(val);
  }

  function draw(year) {
    ctx.clearRect(0, 0, W, H);

    // Rings
    for (let i = 0; i <= 6; i++) {
      let r = innerR + (i/6)*(outerR-innerR);
      ctx.beginPath();
      ctx.arc(cx, cy, r, 0, 2*Math.PI);
      ctx.strokeStyle = i===0 ? '#ccd0d8' : '#e9ecf1';
      ctx.lineWidth = i===0 ? 1.5 : 0.8;
      ctx.stroke();
    }

    // Spokes
    for (let i = 0; i < 5; i++) {
      let a = angles[i];
      ctx.beginPath();
      ctx.moveTo(cx, cy);
      ctx.lineTo(cx + outerR*Math.cos(a), cy + outerR*Math.sin(a));
      ctx.strokeStyle = '#e9ecf1';
      ctx.lineWidth = 0.8;
      ctx.stroke();
    }

    // Labels
    ctx.fillStyle = '#3a3d4a';
    ctx.font = '12px -apple-system, sans-serif';
    ctx.textAlign = 'center';
    ctx.textBaseline = 'middle';
    let offsets = [[0,-18],[32,-8],[24,12],[0,16],[-26,8]];
    for (let i = 0; i < 5; i++) {
      let a = angles[i];
      let lx = cx + (outerR+35)*Math.cos(a) + offsets[i][0];
      let ly = cy + (outerR+35)*Math.sin(a) + offsets[i][1];
      ctx.fillText(paramNames[i], lx, ly);
    }

    // Progress polygon
    let progs = keys.map(k => progress(k, year));
    ctx.beginPath();
    for (let i = 0; i < 5; i++) {
      let a = angles[i];
      let r = innerR + progs[i]*(outerR-innerR);
      let px = cx + r*Math.cos(a);
      let py = cy + r*Math.sin(a);
      if (i===0) ctx.moveTo(px, py);
      else ctx.lineTo(px, py);
    }
    ctx.closePath();
    ctx.fillStyle = 'rgba(77,107,254,0.14)';
    ctx.fill();
    ctx.strokeStyle = 'rgba(77,107,254,0.55)';
    ctx.lineWidth = 2.2;
    ctx.stroke();

    // Dots + values
    for (let i = 0; i < 5; i++) {
      let a = angles[i];
      let r = innerR + progs[i]*(outerR-innerR);
      let px = cx + r*Math.cos(a);
      let py = cy + r*Math.sin(a);
      let val = interpolate(dataSeries[keys[i]].points, year);

      // Glow
      ctx.beginPath();
      ctx.arc(px, py, 7, 0, 2*Math.PI);
      ctx.fillStyle = colors[i] + '25';
      ctx.fill();
      // Dot
      ctx.beginPath();
      ctx.arc(px, py, 4, 0, 2*Math.PI);
      ctx.fillStyle = colors[i];
      ctx.fill();
      ctx.strokeStyle = '#fff';
      ctx.lineWidth = 2;
      ctx.stroke();
      // Value label
      let lx = px + 22*Math.cos(a);
      let ly = py + 22*Math.sin(a);
      ctx.fillStyle = colors[i];
      ctx.font = '600 9.5px -apple-system, sans-serif';
      ctx.textAlign = 'center';
      ctx.textBaseline = 'middle';
      ctx.fillText(formatValue(keys[i], val), lx, ly);
    }

    // Center year
    ctx.fillStyle = '#1a1a2e';
    ctx.font = 'bold 19px -apple-system, sans-serif';
    ctx.textAlign = 'center';
    ctx.textBaseline = 'middle';
    let yearStr = year < 0 ? '−'+Math.abs(year) : String(year);
    ctx.fillText(yearStr, cx, cy);
    ctx.font = '10px -apple-system, sans-serif';
    ctx.fillStyle = '#6b6e7a';
    let era = year<-3000?'Неолит':year<-500?'Античность':year<1400?'Средневековье':year<1750?'Возрождение':year<1900?'Пром. революция':year<1945?'Электричество':year<1980?'Ядерная эра':year<2000?'Микроэлектроника':'Нано/Квантовая эра';
    ctx.fillText(era, cx, cy+20);

    // Milestone tooltip
    let best = null, bestD = Infinity;
    for (let m of milestones) {
      let d = Math.abs(m[0]-year);
      if (d < bestD &#038;&#038; d < 70) { bestD = d; best = m; }
    }
    tooltipEl.textContent = best ? best[1]+' ('+(best[0]<0?'−'+Math.abs(best[0]):best[0])+' г.)' : era;
  }

  const minY = -5000, maxY = 2026;
  function s2y(s) { let t = s/1000; return Math.round(minY + Math.pow(t,0.55)*(maxY-minY)); }
  function y2s(y) { let t = (y-minY)/(maxY-minY); return Math.round(Math.pow(t,1/0.55)*1000); }

  let curYear = minY, playing = false, animFrame = null;

  function setYear(y) {
    curYear = Math.max(minY, Math.min(maxY, y));
    slider.value = y2s(curYear);
    yearDisplay.textContent = curYear < 0 ? '−'+Math.abs(curYear) : String(curYear);
    draw(curYear);
  }

  slider.oninput = function() {
    stopAnim();
    setYear(s2y(+slider.value));
  };

  function stopAnim() {
    playing = false;
    btnPlay.textContent = '&#x25b6;';
    btnPlay.classList.remove('active');
    if (animFrame) { cancelAnimationFrame(animFrame); animFrame = null; }
  }

  btnPlay.onclick = function() {
    if (playing) { stopAnim(); return; }
    if (curYear >= maxY) setYear(minY);
    playing = true;
    btnPlay.textContent = '&#x23f8;';
    btnPlay.classList.add('active');
    function step() {
      if (!playing) return;
      let s = +slider.value;
      let y = s2y(s);
      let speed = y<-3000?30:y<-500?18:y<1700?8:y<1900?3:y<1980?1.5:1;
      let ny = Math.min(maxY, y+speed);
      setYear(ny);
      if (ny >= maxY) { stopAnim(); return; }
      animFrame = requestAnimationFrame(step);
    }
    animFrame = requestAnimationFrame(step);
  };

  btnRew.onclick = function() {
    stopAnim();
    setYear(minY);
  };

  // Keyboard
  document.onkeydown = function(e) {
    if (e.code === 'Space') { e.preventDefault(); btnPlay.click(); }
    else if (e.code === 'ArrowRight') { e.preventDefault(); stopAnim(); setYear(curYear+20); }
    else if (e.code === 'ArrowLeft') { e.preventDefault(); stopAnim(); setYear(curYear-20); }
  };

  setYear(minY);
})();
</script>
</body>
</html>
]]></content:encoded>
					
					<wfw:commentRss>https://valeriysirenko.ru/gipoteza-obshhej-teorii-tehnologij-versiya-0-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>С чего начать?</title>
		<link>https://valeriysirenko.ru/%d0%bf%d1%80%d0%b8%d0%b2%d0%b5%d1%82-%d0%bc%d0%b8%d1%80/</link>
					<comments>https://valeriysirenko.ru/%d0%bf%d1%80%d0%b8%d0%b2%d0%b5%d1%82-%d0%bc%d0%b8%d1%80/#comments</comments>
		
		<dc:creator><![CDATA[treeloys]]></dc:creator>
		<pubDate>Wed, 02 Apr 2025 21:34:39 +0000</pubDate>
				<category><![CDATA[Без рубрики]]></category>
		<guid isPermaLink="false">https://valeriysirenko.ru/?p=1</guid>

					<description><![CDATA[Доброе утро, доброго дня и доброй ночи! С чего начать? Что сделать в этот раз?]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Доброе утро, доброго дня и доброй ночи! С чего начать? Что сделать в этот раз?</p>



<pre class="wp-block-code"><code>select * from day;</code></pre>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://valeriysirenko.ru/%d0%bf%d1%80%d0%b8%d0%b2%d0%b5%d1%82-%d0%bc%d0%b8%d1%80/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
