Обновить

Разработка

Сначала показывать
Порог рейтинга

Ссылка на массив переменной длины

Пусть в столбце A лежит массив переменной длины (например, результат работы FILTER или IMPORTRANGE в Google Sheets). В столбце B мы хотим написать формулу массива, например, удвоить все значения столбца A.

Можно применить формулу ко всему столбцу A:

=ARRAYFORMULA(2*A2:A)

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

Есть такое решение:

=ARRAYFORMULA(2*OFFSET(A2;0;0;COUNTA(A2:A)))

  • Функция COUNTA считает количество непустых значений в столбце.

  • Функция OFFSET возвращает диапазон нужного размера, начиная с указанной ячейки.

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

Теги:
0
Комментарии0

Обновлена открытая база по 500+ ИБ-сервисам Awesome OSINT For Everything, включая:

  • базовую сетевую разведку, чтобы собрать «скелет» цели — домены, почты, имена, поддомены, URL;

  • метапоисковики и поиск по специфическим типам данных — кэши, PGP-ключи, публичные бакеты, прямые ссылки и подобное;

  • кастомные поисковые движки;

  • поиск и контроль утечек любых данных — понять, светились ли email/телефон/учетки в открытых базах, найти следы компрометации;

  • просмотр истории владения доменом. Поиск всех доменов, связанных с конкретным человеком;

  • проверка URL на вредоносы, пробив репутации ресурса;

  • поиск по открытым датасетам, реестрам или санкционным спискам;

  • детальный поиск по кусочкам кода в любом репозитории и в сети;

  • гео-поиск с визуализацией на карте;

  • радио/сканеры и Wi-Fi-картография — можно пробить человека в сети и по использованию оборудования;

  • распознавание и анализ автомобильного номера, VIN-номера, а также передвижений машин;

  • поиск следов криптоплатежей из открытых источников;

  • поиск по базам судов, реестрам, зарплатным базам, FOIA-ресурсам, публичным архивы на предмет утечек.

Теги:
+1
Комментарии0

2026. Год, когда ваша Loss-функция наконец сойдется. 🎆

Друзья, коллеги, любители данных и градиентного спуска!

Пока часы бьют 12, а мы заменяем шампанское на кофе (все равно тренируется модель), давайте не просто загадываем желания. Давайте их оптимизируем.

2025 был годом больших LLM, диффузий и Agentic AI. А что будет ядром 2026? Моя гипотеза — возврат к фундаменту. К математике, которая делает магию машинного обучения возможной.

Вот 3 математических концепции, которые станут вашими лучшими друзьями в новом году:

  1. Теория информации.
    Энтропия Шеннона говорит нам о степени неопределенности:

    H(X)=−i∑​p(xi​)logp(xi​)

А KL-дивергенция измеряет "расстояние" между распределениями — ключ к пониманию distillation's, RLHF и многого другого:

DKL​(P∣∣Q)=i∑​P(i)logP(i)​/Q(i)

2.Дифференциальная геометрия и многообразия.

Где живут ваши эмбеддинги? На многообразии, где локально все похоже на евклидово пространство, но глобально — сложная искривленная структура. Это язык диффузионных моделей.

3.Байесовские методы и Uncertainty Quantification.Нас интересует не просто предсказание yy, а апостериорное распределение:

 P(θ∣D)=P(D)P(D∣θ)/P(θ)​

Где θ — параметры модели, а DD — данные. 2026 — год, когда model.predict() будет возвращать не число, а (mean, variance).

А теперь — главное. Как сделать 2026 годом вашего прорыва? Формула года:

 2026=(Цель+Данные)×(Скорость_Обучения⋅Момент)+Регуляризация_Отдых

Где:

  • Регуляризация_Отдых — это не dropout, а сознательное "зануление" для перезарядки: output = 0 if (burnout_risk) else input.

  • Скорость_Обучения — умение учиться быстрее, а не просто больше.

  • Момент — тот самый нетворкинг, комьюнити и поддержка.

И вот ваш подарок от меня на Новый год — маленький "мозговой тизер" (ответ в комментариях!):

Для модели линейной регрессии y∼N(w^Tx,β^−1) с априорным распределением w∼N(0,α^−1) найдите вид апостериорного распределения p(w∣X,Y), выведите формулы для его параметров и покажите, как его максимум (MAP-оценка) связан с ridge-регрессией с коэффициентом регуляризации λ=α/β/

Подсказка: вспомните теорему Байеса: апостериорное распределение пропорционально произведению правдоподобия и априорного распределения.

Давайте встретим 2026 год не как пассивные наблюдатели, а как архитекторы будущего.

С Новым 2026 годом! Пусть ваши градиенты не затухают, обобщающая способность растет, а оптимизатор всегда находит глобальный минимум. 🥂

#MachineLearning #Математика #DataScience #ИИ #2026 #НовыйГод #КарьераВAI #Наука #Формулы

Теги:
-1
Комментарии0

Тестирую Claude Code на написание белых модов к игре.

Процесс: обсуждение, сбор данных по структуре игры и установке модов, написание кода и деплой.

С первым модом для WoT справился. Тестирую дальше. Кому-то полезна будет потом информация о процессе, выкладывать или лишнее?

Теги:
+1
Комментарии4

Новогодняя аномалия в данных мониторинга.

С Новым Годом!
С Новым Годом!

Воспроизвести достаточно просто

  • Скачать и установить Dimension-UI.

  • Развернуть локально PostgreSQL.

  • Запустить в Dimension-UI мониторинг данных PostgreSQL с помощью запроса с интервалом 3 сек.

WITH params AS (
    SELECT 
        15 AS total_frames,
        20 AS canvas_height,
        3  AS frame_duration_sec
),
animation_state AS (
    SELECT 
        (CAST(EXTRACT(EPOCH FROM CURRENT_TIMESTAMP) AS INTEGER) / frame_duration_sec) % total_frames AS frame_idx
    FROM params
),
tree_definition AS (
    SELECT 
        frame_id, 
        y_pos,
        CASE
            -- ═══════════════════════════════════════
            -- ЗВЕЗДА на верхушке
            -- ═══════════════════════════════════════
            WHEN y_pos = 20 AND frame_id = 7 THEN '*'
            
            -- ═══════════════════════════════════════
            -- ВЕРХУШКА елки (острая)
            -- ═══════════════════════════════════════
            WHEN y_pos = 19 AND frame_id = 7 THEN 'G'
            
            -- ═══════════════════════════════════════
            -- ЯРУС 1 (y=16-18) — расширяется книзу
            -- ═══════════════════════════════════════
            WHEN y_pos = 18 AND frame_id BETWEEN 6 AND 8 THEN 'G'
            WHEN y_pos = 17 AND frame_id BETWEEN 5 AND 9 THEN 'G'
            WHEN y_pos = 16 AND frame_id BETWEEN 4 AND 10 THEN 'G'  -- широкий низ яруса
            
            -- Сужение перед ярусом 2
            WHEN y_pos = 15 AND frame_id BETWEEN 5 AND 9 THEN 'G'
            
            -- ═══════════════════════════════════════
            -- ЯРУС 2 (y=12-14)
            -- ═══════════════════════════════════════
            WHEN y_pos = 14 AND frame_id BETWEEN 4 AND 10 THEN 'G'
            WHEN y_pos = 13 AND frame_id BETWEEN 3 AND 11 THEN 'G'
            WHEN y_pos = 12 AND frame_id BETWEEN 2 AND 12 THEN 'G'  -- широкий низ яруса
            
            -- Сужение перед ярусом 3
            WHEN y_pos = 11 AND frame_id BETWEEN 4 AND 10 THEN 'G'
            
            -- ═══════════════════════════════════════
            -- ЯРУС 3 (y=8-10)
            -- ═══════════════════════════════════════
            WHEN y_pos = 10 AND frame_id BETWEEN 3 AND 11 THEN 'G'
            WHEN y_pos = 9  AND frame_id BETWEEN 2 AND 12 THEN 'G'
            WHEN y_pos = 8  AND frame_id BETWEEN 1 AND 13 THEN 'G'  -- широкий низ яруса
            
            -- Сужение перед ярусом 4
            WHEN y_pos = 7 AND frame_id BETWEEN 3 AND 11 THEN 'G'
            
            -- ═══════════════════════════════════════
            -- ЯРУС 4 — нижний, самый широкий (y=4-6)
            -- ═══════════════════════════════════════
            WHEN y_pos = 6 AND frame_id BETWEEN 2 AND 12 THEN 'G'
            WHEN y_pos = 5 AND frame_id BETWEEN 1 AND 13 THEN 'G'
            WHEN y_pos = 4 AND frame_id BETWEEN 0 AND 14 THEN 'G'  -- во всю ширину!
            
            -- ═══════════════════════════════════════
            -- СТВОЛ (y=1-3)
            -- ═══════════════════════════════════════
            WHEN y_pos BETWEEN 1 AND 3 AND frame_id BETWEEN 6 AND 8 THEN 'T'
            
            -- Всё остальное — фон
            ELSE 'S'
        END AS pixel_char
    FROM generate_series(0, 14) AS frame(frame_id)
    CROSS JOIN generate_series(1, 20) AS y(y_pos)
),
pixel_data AS (
    SELECT td.*
    FROM tree_definition td
    JOIN animation_state ast ON td.frame_id = ast.frame_idx
),
layers_logic AS (
    SELECT 
        y_pos,
        pixel_char,
        MAX(CASE WHEN pixel_char IN ('T', 'G', '*') THEN y_pos ELSE 0 END) OVER () as max_obj_height
    FROM pixel_data
)
SELECT 
    CURRENT_TIMESTAMP as dt,
    CASE 
        WHEN pixel_char = 'T' THEN '4_Trunk'
        WHEN pixel_char = 'G' THEN '3_Tree'
        WHEN pixel_char = '*' THEN '2_Star'
        WHEN pixel_char = 'S' THEN 
            CASE WHEN y_pos > max_obj_height 
    

p.s. Данные по запросу любезно предоставлены Claude Opus 4.5.

Теги:
0
Комментарии1

Всем привет!

В этом посту я хочу подвести итоги года.

Во первых всех с наступающим ^-^.

Во вторых в этом году я познал НАМНОГО больше чем в прошлом году.

К примеру - познал что батарея без своего разъёма - это очень плохо.

В этом году я сделал много проектов и до сих пор делаю их:

  • "ЛИСП машина" - мой первый по настоящему крутой проект.

  • Микрокомпьютер с GUI - для меня это был крутой проект из-за попытки реализовать GUI.

  • Компилятор pycc - хоть и не компилирует в машинный код, но для меня это вершина в моём "языкописательстве" (поправьте если что).

  • Ядро Pech - бета скоро станет 2.0.0. Почему так резко? PEF должен был быть с первого релиза но, я не люблю терпеть и выложил без PEF (к моменту выпуска я уже был полностью погружен в создание PEF).

  • Ядро PearKernel - первые попытки соорудить своё ядро.

Также делаю свою ОС на ядре Pech.

Ещё в этом году было много проектов но большая часть из них - не удались, не популярны или были удалены и заброшены.

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

Кстати как и просили. Пример кода на PEF:

[HEADER]
prio:2
pid:1
name:TEST
[ATTRS]
x:0
[PROG]
while True:
    print(x)
    x += 1
    await asyncio.sleep(SLEEP_TIME) #0.020 секунд (20 мс.)

А проще:

[HEADER]
prio:ваш приоритет.
pid:ваш pid (уникальный).
name:имя вашего процесса.
[ATTRS]
имя:любое значение (В ОДНУ СТРОКУ!)
[PROG]
ваш код

Данный пост хотел закинуть в "Я пиарюсь" но карма не позволяет.

Всем удачи!

Теги:
+3
Комментарии4

Представлен открытый проект на Python под названием Reverse API engineer. Это консольный инструмент, который фиксирует трафик браузера и автоматически генерирует готовые к работе клиенты Python API. Больше никакого ручного реверс‑инжиниринга — просто просматривайте, записывайте и получайте чистый API‑код.

«Этот инструмент выполняет код локально, используя Claude Code‑ пожалуйста, следите за выводом/ На некоторых веб‑сайтах используется расширенная система обнаружения ботов, которая может ограничивать захват или требовать ручного взаимодействия», — пояснил автор проекта.

Особенности Reverse API:

  • автоматизация браузера: создан на базе Playground с режимом скрытности для реалистичного просмотра;

  • режим автономного агента: полностью автоматизированное взаимодействие с браузером с помощью агентов искусственного интеллекта (автоматический режим с MCP, использование браузера, stagehand);

  • запись HAR: фиксирует весь сетевой трафик в архивном формате HTTP;

  • генерация на основе искусственного интеллекта: использует Claude 4.5 для анализа трафика и генерации чистого кода на Python;

  • поддержка нескольких SDK: встроенная интеграция с Claude и OpenCode SDK;

  • интерактивный интерфейс командной строки: минималистичный интерфейс терминала с переключением режимов (Shift+Tab);

  • готовность к работе: сгенерированные скрипты содержат обработку ошибок, подсказки по вводу текста и документацию;

  • история сеансов: все запуски сохраняются локально с полными журналами сообщений;

  • отслеживание затрат: подробное использование токенов и оценка затрат с поддержкой кэширования.

Теги:
+1
Комментарии0

Lex Kravetski в ФБ написал оду Микрософт Ворду, с которым у меня плохие отношения еще с конца 1980-х, когда он был под DOS-ом в графическом режиме. Причем тогда Ворд был еще более-менее, хотя бОльшая часть его функциональности лично мне не была нужна, для форматированных текстов хватало Лексикона от Eugene Veselov из ВЦ Академии Наук, затем уехавшим в Микрософт и ныне ставшим очень политизированным.

Главные проблемы с Вордом для меня начались после 2000 года, когда у него стало прыгать форматирование невпопад, особенно в текстах с комбинацией списков, таблиц и картинок. Lex такую проблему упоминает с позиции своих оппонентов: "блин, даже пробел в нём как-то странно работает, по коей причине даже простое форматирование сделать тяжело."

Из-за этого прыгания я сейчас для редактирования форматированных текстов как правило использую простой текстовый редактор joe (который имитирует редактор в TurboC 1988 года, но с квадратными блоками), а в нем - .md Markdown, который потом конвертирую в .pdf с помощью программы pandoc.

Также использую Google Doc, в нем форматирование не прыгает, как в Microsoft Word и в Libre Office, а сделано по человечески.

Раньше еще писал в текстовом редакторе на HTML, но Markdown удобнее, так как читабильнее в голом виде. Если вы еще не выучили Markdown и мучаетесь Вордом - просто нагуглите его в википедии, он учится за 15 минут.

Теги:
+6
Комментарии12

В России начались новогодние каникулы. Следующий официальный рабочий день у сотрудников не по сменам, а работающих по штатному календарному плану будет уже 12 января 2026 года.

Теги:
+1
Комментарии0

2025: топ-7 фичей, пицца и прочие достижения

2025 стал для нас годом перемен, открытий и испытаний (куда без этого в современном мире в эпоху AI). Он запомнится новыми фичами, ребрендингом, выставками и митапами от Москвы до Новосибирска.

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

Toп-7 фичей Veai по мнению наших пользователей

  1. Генерация тестов по исполнению (статья на Хабре "Не LLM едиными: генерируем юнит-тесты из реального исполнения на лету")

  2. Агентский режим (статья на Хабре "Как мы сделали AI-агента и пользуемся им на практике")

  3. Пользовательские сценарии (Workflows)

  4. Правила (Rules)

  5. Анализ тестов на моргание (Flaky tests)

  6. Увеличение тестового покрытия

  7. Исправление падающих автотестов из TMS

2025

  • 4 больших релиза, много EAP и nightly-сборок

  • поддержка OpenIDE, GigaIDE, PyCharm, Rider, GoLand, PhpStorm и WebStorm

  • участие в JPoint, Joker, Heisenbug, CodeFest и митапах в Москве, Санкт-Петербурге, Владимире и Новосибирске

  • переезд в новый офис

  • ребрендинг

  • съели с коллегами 1040 пицц в офисе по пятницам :)

Мы уже работаем над следующим релизом и ждём возможности показать вам новые фичи.

С наступающим Новым годом — и спасибо, что вы с нами!

Команда Veai 🎄

Теги:
-1
Комментарии0

Обновлён сборник твикеров, кастомайзеров и проверенных системных решений для Windows под названием System Tools. База данных проект включает ссылки на популярные и полезные утилиты для очистки, твика, удалённого доступа, мониторинга, виртуальных машин, менеджеров дисков, периферии и аудио в системе.

Теги:
+2
Комментарии0

Ближайшие события

🎄Уважаемые Хабровцы, коллеги, друзья и партнеры! 🎉

В последние рабочие дни уходящего 2025 года команда SSP SOFT поздравляет вас с наступающим Новым 2026 годом и Рождеством!
Самое время подвести итоги, ощутить атмосферу праздника и с уверенностью посмотреть вперед.

🚀 Нашим заказчикам
Пусть 2026 год принесет устойчивый рост, новые рынки и технологические решения, которые действительно работают. Желаем, чтобы созданные вместе с SSP SOFT продукты были надежными, масштабируемыми и помогали бизнесу расти и развиваться дальше. Мы ценим доверие и рады быть вашим технологическим партнером 📈

💻 Компаниям, работающим с нами в формате аутсорсинга и Workforce-as-a-Service
Готовы направить к вам сильные, мотивированные команды и специалистов, которые быстро встраиваются в процессы, понимают задачи бизнеса и усиливают его изнутри. Пусть люди остаются вашим главным конкурентным преимуществом 💪

🤝 Нашим партнерам
Пусть проекты складываются, бюджеты сходятся, а наша совместная работа напоминает хорошо спроектированную систему — без лишней сложности и с понятным результатом. Спасибо за сотрудничество и совместное движение вперед 🚀

🏢 Немного о нас
В 2025 году для SSP SOFT мы переехали в новый офис в Москве — в самом центре города, рядом с Красной площадью — чтобы активнее развивать сотрудничество с федеральными компаниями.
📍Весь год у нас было много вакансий, в том числе в этот новый офис. Подробности о вакансиях на нашей странице ХХ.ру

👏 Нашей команде
Отдельная благодарность всем сотрудникам SSP SOFT за профессионализм, вовлеченность и ответственность. Пусть 2026 год принесет вам интересные задачи, развитие, баланс между работой и личной жизнью и уверенность в завтрашнем дне.
Мы искренне рады работать вместе с вами 🤝 

С нами — как дома!

🎄 С наилучшими пожеланиями в Новом году,
Команда SSP SOFT
🌟ssp-soft.com 🌟

Теги:
+8
Комментарии2

Проверка на уникальность

Пусть есть список однотипных объектов: товаров, заказов или сотрудников. У каждого элемента есть идентификатор. Как предотвратить ситуацию, когда при заполнении таблицы кто-нибудь добавит элемент дважды? Другими словами, как гарантировать уникальность идентификаторов?

В sql для этого используется PRIMARY KEY или UNIQUE, в электронных таблицах встроенных инструментов нет. Как вариант, можно реализовать подсветку дубликатов с помощью условного форматирования и функции COUNTIF:

Формат → Условное форматирование
Применить к диапазону: A2:A
Правила форматирования → Ваша формула =AND(LEN(A2);COUNTIF(A$2:A;"="&A2)>1)
Цвет фона: красный

Как работает формула:

  • LEN(A2) проверяет, что ячейка заполнена;

  • COUNTIF(A$2:A;"="&A2) считает количество ячеек, совпадающих с текущей. Если оно больше одного, срабатывает условное форматирование.

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

Теги:
0
Комментарии0

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

Теги:
+2
Комментарии0

Глава Apple Тим Кук создал «праздничное оформление» в канун Рождества, «сделанное на MacBook Pro». Картинка с молоком и печеньем должна была подразнить фанатов финал 1 сезона сериала «Из многих» (Pluribus) от Apple TV. Там написано «Счастливого сочельника, Кэрол...». Эксперты считают, что это странное изображение было создано искусственным интеллектом.

Технический блогер Джон Грубер прямолинеен по этой ситуации. «Тим Кук публикует ИИ‑слопы в рождественском послании в X, якобы для продвижения „Плюрибуса“». «Что касается неаккуратных деталей, то на упаковке написано как „Цельное молоко“, так и „Молоко с низким содержанием жира“, а лабиринт „Коровьи забавы“ просто нелепо оформлен. Я не могу припомнить, чтобы когда‑либо видел какую‑либо головоломку на упаковке из‑под молока, потому что они восковые и на них трудно писать. Это похоже на смешение упаковок из‑под молока и хлопьев», — пояснил Грубер.

Теги:
0
Комментарии3

Как получить почти бесконечное зацикливание без использования циклов и без переполнения стека вызовов:

// Установите N = 64, и эта функция никогда не завершится  
// Количество вызовов (calls) = 2^(N+1)  
// Максимальная глубина вложенности = N

let calls = 0
const N = 18
function func(state, visited) {
  calls++
  if (calls > 10_000_000) {
    throw new Error('calls: ' + calls)
  }
  if (visited.includes(state)) return

  const newVisited = [...visited, state]

  func((state + 1) % N, newVisited)
  func((state + 1) % N, newVisited)
}

func(0, [])
console.log('calls:', calls)

Почему это работает без переполнения стека?

func(0, [])
├── func(1, [0])
│   ├── func(2, [0,1])
│   │   └── ... глубина растёт до N
│   │           и перебираются все возможные комбинации значений в newVisited
│   └── func(2, [0,1]) - возвращается, глубина УМЕНЬШАЕТСЯ
└── func(1, [0])       - второй вызов, стек уже освободился

А Garbage Collector (GC) при этом бесконечно удаляет созданные ранее массивы newVisited

Стек "дышит" - достигает максимума N, потом сворачивается, потом снова растёт. Это обход огромного дерева, имеющего небольшую глубину, но очень большую ширину. Это не бесконечная рекурсия. Но при N = 64 количество вызовов будет 2^65 (примерно 10^19) - это займёт тысячи лет, и стек никогда не переполнится.

Теги:
+1
Комментарии2

Я создал обвязку вокруг Pywikibot для простой загрузки файлов в Wikimedia Commons: https://gitlab.com/vitaly-zdanevich/pwb_wrapper_for_simpler_uploading_to_commons

Stateless, позволяет загружать по одному файлу и все из текущей папки (для поддерживаемых расширений). Примеры синтаксиса:

upload.py --file my.jpg --source https://example.com --license 'PD-old' --category 'Sunsets in Batumi' --date '2025-12-27' --desc 'A beautiful sunset from the beach' --target myrenamed.jpg

Либо например

upload.py my.jpg --category 'Sunsets in Batumi' --date '2025-12-27'

Я туда много загружаю - мы живём в горящей библиотеке, и мне важно спасти побольше данных. Базовый загрузчик (Upload Wizard) в браузере так себе. Существуют и прочие инструменты загрузки в Commons, и это мой третий инструмент для этой задачи - уже был скрипт для gThumb и браузерное расширение.

Только этим своим новым скриптом загрузил уже сотни файлов. Вам теперь тоже ещё легче будет спасти какие-нибудь сканы старых газет - помните что в Commons можно загружать только файлы со свободной лицензией - например когда автор умер более 70 лет назад.

Если хотите помочь цивилизации в нашем движении презерваторов - пишите мне - расскажу какие пакеты файлов нужно скачать и загрузить.

Теги:
0
Комментарии0

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

Ахинейно-поршневой двигатель с симметричным поршнем и параллельными ахинеями.
Ахинейно-поршневой двигатель с симметричным поршнем и параллельными ахинеями.

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

Проржавшись, переходим к занимательной геометрии, поскольку в силу описанного считать это двигателем уже нельзя. В геометрии можно сделать следующие допущения: охлаждающая рубашка не нужна, 1200 оборотов при 50 кубиках нам достаточно (масса не страшна), вместо свечи вспышки обеспечивает маг-пирокинетик, трение в малых ЦПГ отсутствует. В общем, переходим к математической абстракции.

И тут становится интересно: можно ли, правильно выбрав диаметры малых ЦПГ, положение их перепускных окон на главном цилиндре, положение выпускных и продувочных окон на них самих и так далее, реализовать не просто фыр-фыр-двухтактник, в котором окна в главном цилиндре открываются «сразу на улицу», а какой-нибудь более интересный цикл: Аткинсона, Миллера или, наоборот, Цоллера (Доппельколбен, который решает противоположную Аткинсону задачу), ну или там, не знаю, Уткинсона, Мурчинсона, Пушкина, Кукушкина или вообще Нак-Мак-Фиггля. Допустим, что к продувочным окнам ведут идеально гибкие шланги (абстракция же; в принципе, в реальной модели, если бы она была нужна, это более-менее обходится тоже).

Сами понимаете, что одни двигаются по синусу, другие — по косинусу, перепускные окна открываются согласно косинусоиде, выпускные и продувочные — согласно синусоиде, и всё это можно произвольно двигать вдоль ходов поршней, причём независимо. А если это кажется слишком лёгкой задачей — добавим возможность наклонять группу малых ЦПГ на небольшие углы (чтобы отрабатывали не чистый синус, а какую-то смесь), да ещё и вместо поршней в некоторых местах сделать полноценные золотники, которые открывают окна только при строгом совпадении положений, а не «от N мм и до мёртвой точки» (они же, кстати, и в шлангах не нуждаются, потому что наружная часть у них неподвижна).

В общем, такая вот небольшая тригонометрическая головоломка. Занимательная и в целом практически бессмысленная. Пафнутий Львович Чебышёв, конечно, назвал бы это задачкой для первого класса спецшколы для умственно отсталых, но простым смертным типа нас с вами может представлять интерес. Не забывайте только, что в малых ЦПГ при движении газ тоже не исчезает «в никуда», чтобы не получить незапланированный компрессионный двигатель, например. Задачка-то геометрическая, но граничные условия у неё от «реального» ДВС, иначе будет слишком просто.

Теги:
-3
Комментарии1