Присоединяйся к Вомбату

Сохраняй посты, комментируй и ставь оценки

или через

Хотите перенести свой аккаунт с Пикабу? Узнайте как

Поддержите проект

Вомбат живёт на энтузиазме и вашей поддержке — помогите оплатить серверы и рекламу.

Уведомления
Vombat.su
3 часа назад

Опрос по поводу конкурса.

Сперва о сути : у меня с Вомбатологом произошел диалог, в процессе которого я спросила, что нужно сделать, чтоб получить именную ачивку “вомбанутая”. Она ответила, что это надо как-то доказать. Я не знаю, как доказать то, что и так очевидно, но поскольку люблю сказки, то решила организовать конкурс на лучшую сказку. Пока только я обсуждаю нюансы с руководством сайта, нужно ли будет, чтоб в сказке мелькнуло слово “вомбат”, скорее всего, да.

Так вот, мне нужно знать, будут ли желающие поучаствовать в данном конкурсе, в качестве поощрения от меня лично будут символические призы за первые три места. Это не то, что сделано моими руками, разумеется, так как я рукожопка, просто милые безделушки. К примеру цветы из зефира вот такие

Шкатулка с конфетами

Или же музыкальная шкатулка с чаем внутри.

Шкатулка с чаем.

Сигары из шоколада.

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

Итак опрос.

Будете участвовать?

Зарегистрируйтесь или авторизуйтесь для отправки голоса.

Опрос завершится 20.08 в 18:30 по московскому времени.

Если участников будет больше…ну…пятнадцати, к примеру, то конкурсу быть. Спасибо за внимание. :)

20 часов назад

Ивент к Ивенту, Пост №1

Главный пост Калуги — это Пост №1 у Вечного огня на площади Победы. Это почётный караул, который был учреждён 6 мая 1975 года решением Калужского комитета ВЛКСМ в ознаменование 30-летия Победы в Великой Отечественной войне.

Первыми на пост заступили старшеклассники школы № 15 вместе с ветеранами войны. С тех пор более 100 тысяч калужских школьников стали «постовцами», неся память о воинах, павших за освобождение нашей Родины. Участвовал Герой Советского Союза Василий Стригунов и полный кавалер ордена Славы Михаил Степанов. 

Иван Фёдорович Милёхин, первый начальник штаба Поста №1, который руководил им почти 20 лет! Его шаг – один из лучших в стране и по сей день используется почётным караулом. Иван Милёхин разработал этот шаг как адаптированный для подростков способ марширования. В отличие от парадного шага (120 шагов в минуту на Красной площади), «милёхинский шаг» исполняется со скоростью 60 шагов в минуту, с высоким подъёмом ноги. Это делает движение одновременно торжественным и чётким, но при этом менее утомительным для подростков

21 час назад

Пост о Посте для Поста правильного

Успенский пост проходит с 14 по 27 августа. Это один из четырёх многодневных постов в православной традиции. Он посвящён духовной подготовке к празднику Успения Пресвятой Богородицы, который отмечается 28 августа. 

Успенский пост — это время молитвы, покаяния и воздержания не только в пище, но и в мыслях и поступках. Он установлен в подражание Божией Матери, которая перед Своим Успением пребывала в посте и молитве

Несмотря на короткую продолжительность (две недели), по строгости он сопоставим с Великим постом.

Что кушать:

По монастырскому уставу (Типикону) распределение дней по степени строгости следующее:

  • Понедельник, среда, пятница: сухоядение — только неварёная растительная пища (хлеб, сырые овощи и фрукты, орехи, мёд).
  • Вторник, четверг: горячая пища без растительного масла.
  • Суббота, воскресенье: горячая пища с растительным маслом, допускается немного вина.

Важное исключение: 19 августа, в праздник Преображения Господня (Яблочный Спас), разрешается рыба и горячая пища с маслом. 

Особенность 2026 года: поскольку праздник Успения (28 августа) пришёлся на пятницу, на праздничной трапезе также разрешается рыба. 

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

Помимо ограничений в пище, верующим рекомендуется:

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

В народе Успенский пост иногда называли «Спасовка», так как на его период приходятся праздники, связанные со «Спасами» (Медовый Спас — 14 августа, Яблочный Спас — 19 августа). 

Всем ивентов и Постов ))))

день назад

Салют.

3 дня назад

Спортсмены-убийцы. Часть 5.

Всем здравствовать!

Продолжим поиск? Не знаю, может быть будет ещё одна часть, а может и не будет. Тут всё зависит от настроения.

Филип Адамс (англ. Phillip Adams)

Очередной игрок в американский футбол. Тенденция намечается, нет? Опять ХТЭ?
Ну да ладно. В общем, этот спортсмен застрелил доктора, его жену и двоих детей этой пары. Затем застрелился сам. Полиция так и не выяснила причин, но лично я склоняюсь к тому, что это был ХТЭ, иначе почему он застрелил доктора? Узнал, что неизлечимо болен и взбесился?

Рэй Люис (англ. Ray Lewis)

В 2000 году, Льюис и его друзья ввязались в драку, в которой были зарезаны два человека. Льюис в свою очередь заключил сделку со следствием, в результате которой он избежал наказания. Ага, сдал своих, чтобы самому выйти сухим из воды. НФЛ же оштрафовала Льюиса на $250 тыс. А Льюис, меж тем, откупился от семей пострадавших, выплатив им компенсацию. Да уж. Бабки рулят.

Карлос Монсон (англ. Carlos Monzón)

А теперь, на ринг выходит боксёр. Чемпион мира в среднем весе, между прочим. Он был приговорён к 11 годам лишения свободы за убийство своей подруги (девушки?). Приговор был вынесен в 1988 году, но это не точно, т.к. в процессе написания этого поста, мой ноут упал на пол, и теперь я пытаюсь его реанимировать.

В общем, этот крендель попал в автомобильную аварию, будучи в краткосрочном отпуске из заключения (чего? Отпуск?).

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

15 часов назад

Родина братьев Гримм.

Сегодня я целый день развозил запчасти от ветряков с одной горы на другую, а вечером встал на паркинг. Думал уже отдохнуть, поиграв во что-нибудь на ноуте, но Джемини радостно сообщила мне, что я нахожусь недалеко от города, в котором родились братья Гримм. О как! Не думал, что они родились в Германии. Ну да ладно, пойдем посмотрим, откуда они родом.

Вышел с парковки и пошел, напевая под нос: «Хлопай ресницами и взлетай, та-та-тара-та-та…»

Немного страшно
Живописная дорога
А вот и город. Группа братья Гримм даже на вывеске
Начинается сказка.
1 / 4
Немного страшно

Путь проходил через ферму. Меня остановил фермер и стал расспрашивать, чего это я тут хожу по его территории. Я сказал только «Гримм», и он, улыбнувшись, показал, куда идти.

Начался чудный городок. Просто сказка! Эти деревянные домики, эти кривые улочки… В центре есть старинный замок. Уж вечер, поэтому все закрыто - я имею в виду музеи. Дом братьев тоже оказался закрыт. Дом, кстати, довольно большой. Богатые эти певцы! Во дворе стояли какие-то скульптуры зверей, какой-то трон и девочка.

Странные скульптуры
Это двор дома братьев
Внутри какая то девочка
Музей закрыт
Можно погулять вокруг
Стоят палатки зачем то
1 / 10
Странные скульптуры

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

Пожоже на первую готику почему то
Древние ворота
Замок крутой
Прямо пышет историей
Где этот Диего?
Ну круто же.
1 / 6
Пожоже на первую готику почему то

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

Эта штука возит лопасти ветряков. У нее 112 колес и все поворачиваться
Мощь
Собирают кстати поляки.
Немцы получают пропаганду
1 / 4
Эта штука возит лопасти ветряков. У нее 112 колес и все поворачиваться

Немного фото с работы

6 дней назад

Разработка TypeScript-библиотеки для построения реактивных графов распространения и обработки данных

Предыстория

Все началось с рабочей задачи по реализации весьма специфичной web-панели мониторинга и управления различным оборудованием, в которой нужно было получать данные и отправлять команды по разнообразным сценариям (периодический опрос, подписка на websocket-события, https-запросы и т.д.), а также выводить состояние и графики в реальном времени, динамически комбинируя различные источники данных в разных виджетах.

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

В первой итерации с использованием RxJS получилось много неструктурированного и сложно поддерживаемого кода, так как архитектура на RxJS вынуждала императивно описывать перестроение топологии при изменении правил маршрутизации «на лету». В нашем специфичном кейсе с динамическими виджетами это приводило к сайд-эффектам и сложностям в отладке. Кроме того, местами размывалась строгая типизация и мы лишались compile-time гарантий. Так появилась идея разработать собственное решение на основе альтернативной концепции — модели графа потоков данных.

В результате получившаяся модель продемонстрировала предсказуемое поведение и низкую связность компонентов, а кодовая база сократилась на ~30% и приобрела более декларативный вид. Убедившись в эффективности решения, мы решили оформить его в виде отдельной библиотеки с открытым исходным кодом — Transferum.

И что, получилась просто еще одна реактивная библиотека?

Не совсем. Классические FRP-библиотеки (RxJS, Bacon, Most) построены вокруг единственного примитива (Observable). Transferum же основан на композиции различных типов узлов с явно определенным поведением.

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

Объявленные узлом возможности являются одновременно флагами для использования в runtime и compile-time гарантиями наличия соответствующих методов, определяющих его поведение.

Ключевая идея: поведение системы описывается как композиция независимых возможностей, которые одновременно определяют тип, реализацию и правила взаимодействия.

Transferum предоставляет четыре слоя абстракции:

  1. Трансферы — узлы графа (каналы, поллеры, мапперы, буферы, разветвители и концентраторы, реализации debounce, throttle, switchMap и т.д.).
  2. Мосты — ребра графа — управляемые вентили между узлами с динамической маршрутизацией и гейтингом.
  3. Операторы — stateless-трансформаторы и фильтры данных (используются трансферами, отвечающими за конвертацию данных).
  4. Билдеры — fluent-конструкторы композитных трансферов из цепочек трансферов-примитивов.

Концептуальная и архитектурная основа — capability flags system. Каждый трансфер реализует CommunicationContractInterface — набор булевых флагов, определяющих его возможности.

Флаги isPushable, isPullable, isSubscribable, isGate и другие — это не просто свойства объекта. Это метаданные, которые:

  • Определяют TypeScript-интерфейс трансфера на этапе компиляции.
  • Управляют стратегией связывания с другими трансферами в рантайме (с помощью функции linkTransfers()).
  • Обеспечивают совместимость в билдерах без приведений типов.

Один набор флагов — три потребителя. Это единый источник истины для всей системы.

Когда флаг равен true, соответствующий метод входит в TypeScript-интерфейс трансфера. Это позволяет предоставлять трансфер пользователю вот так:

Transfer
// гомогенный трансфер: T -> [ Transfer ] -> T

Или вот так:

Transfer
// гетерогенный трансфер: TInput -> [ Transfer ] -> TOutput

Именно в таком формате типов фабрики в библиотеке возвращают трансферы. Например:

const pushChannel:  Transfer;
const converter:    Transfer;
// содержат методы push(), subscribe()

const manualBuffer: Transfer;
// содержит методы push(), pull(), trigger()
// trigger() в данном случае нужен, чтобы сделать запушенное значение 
// доступным для чтения через pull()

const pollingProxy: Transfer
// содержит методы pull(), subscribe(), trigger(), activate(), deactivate(), toggle()
// может быть связан с pullable-источником благодаря поддержке поллинга

Эта «магия» работает в compile-time благодаря несколько замысловатой системе вычислимых типов:

type FeatureMap =
  F extends { readonly isPushable: true } ? Pushable & { readonly isInput: true } :
  F extends { readonly isPollingProxy: true } ? PollingProxy & { readonly isInput: true, readonly isOutput: true } :
  F extends { readonly isPullable: true } ? Pullable & { readonly isOutput: true } :
  F extends { readonly isSubscribable: true } ? Subscribable & { readonly isOutput: true } :
  F extends { readonly isTriggerable: true } ? Triggerable :
  F extends { readonly isGate: true } ? Gate :
  F extends { readonly isAsyncPushable: true } ? AsyncPushable & { readonly isInput: true } :
  F extends { readonly isAsyncPollingProxy: true } ? AsyncPollingProxy & { readonly isInput: true, readonly isOutput: true } :
  F extends { readonly isAsyncPullable: true } ? AsyncPullable & { readonly isOutput: true } :
  F extends { readonly isAsyncTriggerable: true } ? AsyncTriggerable :
  unknown;

type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;

type ResolveFeatures = UnionToIntersection;

type IsDuplexFeatures =
  ResolveFeatures extends { readonly isInput: true, readonly isOutput: true }
    ? { readonly isDuplex: true }
    : unknown;

type ExplicitTransfer = BaseTransferInterface
  & ResolveFeatures
  & IsDuplexFeatures;

export type Transfer<
  TInOrAll,
  TOutOrFeatures extends any[] | any,
  TFeaturesOrUndefined extends any[] | undefined = undefined,
> = TFeaturesOrUndefined extends any[]
  ? ExplicitTransfer
  : TOutOrFeatures extends any[]
    ? ExplicitTransfer
    : never;

Архитектурные инварианты

1. Трансферы не знают своих соседей

Трансфер определяет своё поведение (push, pull, subscribe и др.), но никогда не ссылается и не проверяет класс другого трансфера. Он не знает, что является upstream или downstream — лишь выполняет свой контракт. Пользователь может создать свой трансфер, объявить и реализовать его возможности — и он органично и бесшовно впишется в экосистему.

2. Мосты не знают конкретных реализаций

Мост инспектирует capability flags, а не имена классов. Нет цепочки instanceof, нет переключения по имени класса. Любой output-трансфер может быть соединен с любым input-трансфером — при условии совместимости их флагов, о чем мы поговорим чуть ниже. Это применимо и к тем узлам, которые еще не существуют и будут созданы пользователем.

3. Значение undefined никогда не распространяется

В Transferum undefined означает «нет данных», а не «пустое значение». Оно подавляется на уровне внутренней реализации менеджера подписок — подписчики никогда не уведомляются с undefined. При этом для явных маркеров пустых значений можно использовать null. Мы сознательно пошли на этот компромисс, чтобы избежать runtime-оверхеда и сохранить нативную скорость работы на плотных потоках данных.

Связывание трансферов

Функция linkTransfers(lhs, rhs) соединяет output-трансфер (lhs) с input-трансфером (rhs) с автоматическим выбором стратегии связывания на основе возможностей этих трансферов:

  • isSubscribable → isPushable (реактивная подписка);
  • isPullable → isPollingProxy (активный опрос);
  • isSubscribable → isAsyncPushable (реактивная подписка + асинхронный push);
  • isAsyncPullable → isAsyncPollingProxy (активный асинхронный опрос асинхронного pull-источника);
  • isPullable → isAsyncPollingProxy (активный асинхронный опрос синхронного pull-источника).

Protocol-oriented design: механизм не спрашивает «какой это класс?» — он выясняет, какие у него есть возможности. Любая пара трансферов с совместимыми возможностями является linkable. Добавление нового класса трансфера требует только объявления его флагов и реализации соответствующих методов — как связать его с другим трансфером, связующий алгоритм разберется сам.

import { createPushChannelTransfer, createSinkTransfer, linkTransfers } from 'transferum';
 
const source = createPushChannelTransfer();
const target = createSinkTransfer({ callback: (x) => console.log(x) });
 
const link = linkTransfers(source, target);
source.push(22);
 
link.unsubscribe(); // разорвать связь

Sync и async в одной экосистеме

Синхронные и асинхронные трансферы сосуществуют и могут быть связаны между собой. linkTransfers() предпочитает sync-связывание, когда это возможно, а async-стратегии применяет только когда sync неприменим. Нет отдельного «асинхронного мира».

Поддержка backpressure

Ряд асинхронных трансферов (AsyncSinkTransfer, AsyncWriteTransfer, AsyncConvertTransfer, AsyncConditionTransfer) поддерживают необязательные поля в конфигурации: maxConcurrency, bufferSize и onBufferOverflow — для ограничения параллельных async-операций, очереди избыточных данных и graceful-обработки переполнения. По умолчанию — неограниченная обработка, без буферизации.

Локальная обработка ошибок

Transferum использует единую модель обработки ошибок для всех трансферов. Каждый трансфер, который может столкнуться с runtime-ошибкой, принимает опциональный onError-хэндлер в своей конфигурации.

А теперь — к примерам использования

Вот так можно просто и декларативно описать опрос и агрегирование данных из нескольких источников:

import {
  createMergeTransfer,
  createConditionTransfer,
  createThrottleTransfer,
  createAsyncSinkTransfer,
  createAsyncPollingSourceTransfer,
  CompositeTransferBuilder,
} from 'transferum';

const sensor1 = createAsyncPollingSourceTransfer({
  fetcher: () => Promise.resolve({ sensorId: 1, temperature: 25, humidity: 50 }),
  interval: 50,
  activated: true,
});

const sensor2 = createAsyncPollingSourceTransfer({
  fetcher: () => Promise.resolve({ sensorId: 2, temperature: 26, humidity: 55 }),
  interval: 50,
  activated: true,
});

const sensorsAggregator = createMergeTransfer({
  sources: [sensor1, sensor2],
});

const alertPipeline = CompositeTransferBuilder
  .start(sensorsAggregator)
  .to(createConditionTransfer({
    shouldAccept: (d) => d.temperature > 95,
  }))
  .to(createThrottleTransfer({ interval: 5000 }))
  .finish(createAsyncSinkTransfer({
    callback: (sensorData) => {
      console.warn(Alert! Sensor ${sensorData.sensorId}: temperature is ${sensorData.temperature});
    }
  }));

sensorsAggregator.subscribe((sensorData) => console.log('Debugging', sensorData));

А вот как можно организовать динамический роутинг:

import { 
  createPushStoredChannelTransfer,
  createBridgeMultiSelector, 
  createBridgeSelector, 
  createPassBridge, 
} from 'transferum';

// Вариант 1. Выбор одного реципиента
const commandRouter = createBridgeSelector({
  bridges: {
    light: createPassBridge({ source: commandChannel, target: lightController, activated: false }),
    thermostat: createPassBridge({ source: commandChannel, target: thermostatController, activated: false }),
    lock: createPassBridge({ source: commandChannel, target: lockController, activated: false }),
  },
  initialKey: 'thermostat', // выбор по умолчанию
  activated: true,
  owned: true,
});

commandRouter.select('lock'); // выберем другой вариант

// Вариант 2. Выбор нескольких реципиентов
const loggersRouter = createBridgeMultiSelector({
  bridges: {
    prometheus: createPassBridge({ source: metricsChannel, target: prometheusWriter, activated: false }),
    elk: createPassBridge({ source: metricsChannel, target: elkWriter, activated: false }),
    sentry: createPassBridge({ source: metricsChannel, target: sentryWriter, activated: false }),
  },
  initialKeys: ['prometheus', 'elk'], // будут активированы по умолчанию
  activated: true,
  owned: true,
});

loggersRouter.check('elk');                     // теперь выбраны все три
loggersRouter.uncheck('prometheus');            // выбраны elk, sentry
loggersRouter.select(['prometheus', 'sentry']); // выбраны prometheus, sentry

А вот пример c организацией игровой механики:

import {
  createDebounceTransfer, 
  createConvertTransfer, 
  createMapOperator,
  createBridgeSelector, 
  createPassBridge, 
  linkTransfers,
} from 'transferum';

// Источник: debounce нажатий клавиш (16ms ~ 1 кадр при 60 FPS)
const rawInputSource = createDebounceTransfer({ delay: 16 });

// Конвертер: KeyboardEvent -> код клавиши
const inputConverter = createConvertTransfer({
  operator: createMapOperator((event) => event.code),
});

// Целевые системы-потребители пользовательских событий
const carSystem = { push: (cmd: string) => console.log(🚗 Car executing: ${cmd}) };
const planeSystem = { push: (cmd: string) => console.log(✈️ Plane executing: ${cmd}) };
const menuSystem = { push: (cmd: string) => console.log(📋 Menu processing: ${cmd}) };

// Роутер: динамическое переключение между игровыми контекстами
const gameplayRouter = createBridgeSelector({
  bridges: {
    driving: createPassBridge({ source: inputConverter, target: carSystem }),
    flying: createPassBridge({ source: inputConverter, target: planeSystem }),
    ui: createPassBridge({ source: inputConverter, target: menuSystem }),
  },
  initialKey: 'driving', // игрок начинает в машине
  activated: true,
});

// Связывание источника с конвертером с автовыбором стратегии
linkTransfers(rawInputSource, inputConverter);

// Демонстрация:

// Игрок в машине нажимает "W"
rawInputSource.push(new KeyboardEvent('keydown', { code: 'KeyW' }));
// Через 16ms: 🚗 Car: KeyW

// ==================

// Переключаемся на самолёт
gameplayRouter.select('flying');

// Та же клавиша теперь управляет самолётом
rawInputSource.push(new KeyboardEvent('keydown', { code: 'KeyW' }));
// Через 16ms: ✈️ Plane: KeyW

Когда имеет смысл попробовать Transferum

Библиотека подойдет для:

  • TypeScript-first проектов — благодаря максимально строгой типизации и compile-time вычислению доступных методов любого трансфера на основе объявленных у него флагов возможностей.
  • Работы с pull-based источниками данных — polling API, датчиков, хранилищ с PollingProxy.
  • Смешанных sync/async пайплайнов — в единой модели без ручного преобразования.
  • Явного flow control — gates, bridges, selectors для runtime-маршрутизации.
  • Game development / IoT — frame-aligned tickers, idle polling, sensor aggregation.
  • Устойчивой обработки ошибок — локальная, non-fatal обработка: одна стадия не убивает пайплайн при условии переданного в конфиге обработчика ошибок, ничего не подавляется молча.

Результаты и планы

  • Библиотека уже используется в двух наших внутренних проектах и показывает свою эффективность. Код доступен на GitHub под лицензией MIT, библиотека не имеет внешних зависимостей и поставляется с подробной документацией (README + API Reference).
  • В одном из проектов граф состоит из ~80 узлов и стабильно обрабатывает несколько сотен событий в секунду без деградации. На основе этих данных в том числе рендерится 3D-сцена в Babylon.js со стабильным фреймрейтом ~60 FPS без микрофризов.
  • Тесты библиотеки покрывают не только отдельные трансферы, но и поведение системы в динамике: переподключение мостов, обработку ошибок в длинных асинхронных цепочках, а также разнообразные граничные случаи. Покрытие — 100%.
  • В дальнейшем планируем реализовать хуки и утилиты для более удобного и нативного использования Transferum с Vue и React. Если они окажутся в достаточной мере переиспользуемыми, оформим в отдельные пакеты-адаптеры.

Буду рад, если вы заглянете в репозиторий, попробуете библиотеку в деле и поделитесь замечаниями — обратная связь поможет сделать Transferum лучше.

P. S. Если вы сталкивались с похожими задачами и решили их как-то иначе — буду рад прочитать о вашем опыте в комментариях.

19 часов назад

Вопрос

Раз уж тут пошла вдруг мода создавать тупые говнопосты, ответьте мне на вопрос:

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

20 часов назад

Цветочный ковёр

Что там в Бельгии?

Раз в 2 года на главной площади Брюсселя выкладывают огромный цветочный ковёр. Да, он из настоящих цветов, которые выращивали в Бельгии.

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

Его Ворсейшество
Его Ворсейшество

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

Умные люди забронировали онлайн за 8 евро и не стояли в очереди так долго. Мы же пошли за час до светового шоу в последний день. Нам очень повезло, потому что попали мы на балкон за 1 минуту до шоу. Оно длится всего 5 минут, но посмотреть стоит. В очереди мы провели целый час и были одними из последних, кого пустили) И билет стоил 9 евро. На следующий год решили купить билеты заранее.

В этом году дизайн ковра был выбран Японией в рамках успешного 160-летнего сотрудничества с Бельгией. Некоммерческая организация Tapis de Fleurs воплотила дизайн, созданный японским дизайнером, в огромный ковёр из георгинов.

Ковёр площадью 1680 м² снова стал самым большим в мире цветочным ковром, на котором представлено более 700 000 цветов.

Вот так ковёр выглядел полностью при дневном свете (фото из интернета)
Вот так ковёр выглядел полностью при дневном свете (фото из интернета)

Картина Katsushika Hokusai «Большая волна в Канагаве» была переработана художником Hiro Sugiyama для этого издания цветочного ковра.

Традиционные мотивы — волны, гора Фудзи и мифические существа — переосмыслены с помощью цифровых технологий, смелых композиций и чувства ритма, что отражает связь культурной памяти о прошлом с настоящим.

Оригинальная картина
Оригинальная картина

У ковра есть сайт: https://flowercarpet.brussels/en

Там есть фото с прошлых лет, история и много всего.

П.С. Про Абакан помню, скорее всего, выложу свои фото и историю уже из самого Абакана (да, скоро поеду), про фестиваль тоже помню, тоже сделаю пост. Можете пинать периодически)

день назад

Вот и меня не минуло запланированное старение

Только-только @JasonWoorhies влетел на проблемы с винчестером, как на следующий день уже меня постигла та же участь.

Под столом валяется 24/7 недобук ASUS EEE PC 900HDA (один гиг, одно кастрированное ядро) в качестве локалхоста (очередной бэкап, торрент-качалка и пр по мелочам). На торрентах валялся фильмы Кракен (наш и буржуйский), решил глянуть его, но не тут-тог было - ошибки копирования.
Обиделся, полез под стол выяснять что почём и на тебе

В консоли всё забито ошибками ФС.
В консоли всё забито ошибками ФС.

Далее вспоминаю, что там то ли сегейт, то ли ВДшка торчит и понимаю, что контакты платы контролера наверняка окислены. Ладно, препарируем

Разваливающийся старичок
Разваливающийся старичок
Точно, ВДшка
Точно, ВДшка
Контакты на блок магнитных головок полностью чёрные
Контакты на блок магнитных головок полностью чёрные
Зачистил ластиком
Зачистил ластиком

Но увы, чуда не случилось. HDD отправится на магнитики. А всё потому, что я забил на ТО этого веника, если контакты винчестеров (там тоже ВД и сигейты стоят) на основном компе я чищу, то вспомнить что бы этот веник чистил не смог. И да, у винчестеров этих брендов могут окислится контакты просто лёжа на складе - это и есть запланированное старение. У тошиб таких проблем вроде нет - там штырьки в колодку вставляются - намного надёжнее.
Вот так, зная о проблеме этих производителей проворонил чистку контактов на ноуте, собственно сам виноват…

Теперь ждём отпуска и с отпускных будет поход в DNS…

день назад

Название для нас придумал!

Я теперь вомбатант!!!

И остальных пользователей буду вомбатантами звать.

Всех четверых.

Ебать я какой молодцом, аж сам с себя радуюсь

3 дня назад

Мужло зовёт замуж??? Рэд флаг!!!!

3 дня назад

Спортсмены-преступники. Часть 4.

Всем здравствовать!

- Мы продолжаем, первый?! Первый, мы продолжаем?!
- Продолжаем.

Итак! Продолжаем знакомство со спортсменами, которые так или иначе, но нарушили закон.

Оскар Писториус (англ. Oscar Pistorius)

Спринтер из ЮАР. Участник Олимпиады 2012 года в Лондоне. Ну и что? Спросите вы, там много было участников, чем выделяется?
А выделился он тем, что стал единственным участником с ампутированными ступнями!

До этого он стал шестикратным победителем на Паралимпийских играх.
Да, ступни ему ампутировали в возрасте 11 месяцев, поскольку он родился без малоберцовых костей. Но это не помешало ему активно заниматься различными видами спорта, бег, регби, теннис, водное поло и борьба, например. Вот это я понимаю, сила духа! И не удивительно, что он вдохновлял огромное количество людей. @DushnilaGramotey ваш выход. Поглядите на человека, он смог найти в себе силы, чтобы мотивировать людей, а не обижаться на весь мир.

Нет, на Олимпиаде он не одержал победу, а жаль, но самого факта его участия достаточно для того, чтобы начать уважать его силу духа.
А вот потом, что-то пошло не по плану и в феврале 2013 года, его задержали за убийство его девушки Ривы Стенкамп (англ. Reeva Rebecca Steenkamp). Ну что за мода убивать своих жён/девушек? Не ладятся отношения, так расстаньтесь. К чему это всё? Любить нужно своих женщин, а если не любишь (или она не любит), то нечего вместе делать. Я так считаю. Шляпу приготовил, накидывайте.
Ладно, я отвлёкся. Вот, кстати, эта красотка. Ну согласитесь, очень красивая девчушка. Была.

Рива Стенкамп (англ. Reeva Rebecca Steenkamp)
Рива Стенкамп (англ. Reeva Rebecca Steenkamp)

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

Да, освобождение под залог ему одобрили, и нет, он не сбежал. В 2014 году его осудили, срок за убийство, до 15 лет, но судья, учитывая физические особенности бегуна, а так же его заслуги перед обществом, осудил его на пять лет лишения свободы.
В сентябре 2015 года, он подал на УДО, его одобрили, но следующие четыре года, он должен был находиться под домашним арестом в доме своего дяди.
Тут возбудилась прокуратура, и после пересмотра дела, его осудили уже на шесть лет. C’est la vie.
В ноябре 2016 года, его перевели из обычной тюрьмы в специальный центр для инвалидов. А в ноябре 2017 года, после рассмотрения апелляции прокуратуры, Верховный апелляционный суд ЮАР продлил ему срок до 13 лет 5 месяцев. Ба-дам-тсс, ещё раз.

В итоге, его, всё же выпустили по УДО, в 2024 году, после того, как отбыл 8,5 лет наказания.
Да уж, жизнь покруче любых, самых крутых сценариев самых крутых фильмов.

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

Аарон Эрнандес (англ. Aaron Josef Hernandez)

До чего же высокий лоб и огромное количество морщинок на нём же.
До чего же высокий лоб и огромное количество морщинок на нём же.

И вновь у нас игрок в американский футбол. Не знаю на счёт ХТЭ, но умом он явно не блистал.
Дабы не томить достопочтенную публику, скажу просто, этот деятель искусства футболист убил другого футболиста и выбросил его труп неподалёку от своего дома. А за день до этого, Один (!) Ллойд (англ. Odin Lloyd), приходил к Эрнандесу и они вместе колесили по району в автомобиле убийцы.

Чистокровный Один.
Чистокровный Один.

Но, его вскоре поймали, а уже через два часа, клуб, в котором играл Эрнандес, разорвал с ним контракт. А затем, этого горе-футболиста осудили и назначили наказание в виде пожизненного заключения под стражу, без права на УДО. Да, чуть не забыл, это происходило в 2013 году, а уже в 2017 Эрнандес вскрылся в лесу покончил жизнь самоубийством в свой камере.

Ну вот, серия подошла к концу, но это не точно. В любом случае, до новых встреч!

3 дня назад

Вятские кикиморы

Замечательные вомбатцы @skiph @UrmasThomas поделились Рязанскими и Ижевскими минискульптурами, надо бы дополнить серию, поелику она очень хороша! Вне буквы, но в рамках краеведческого ивента подтянем сюда вятских кикимор, тем более что кикимора тоже на букву “К”

На Кикиморской горе откуда во все стороны видна земля вятская, с незапамятных времен бок о бок с людьми жили Кикиморы. По легенде в XIV веке новгородские ушкуйники решили основать поселение на берегу Вятки. Заготовили лес для строительства, а кикиморы-проказницы за ночь перенесли его на другое место, ниже по течению реки. Новгородцы нашли свой лес и решили на том месте основать город, который назвали Вяткой.

В 2022 году в  Кирове установили семь фигурок кикиморок. Они очень симпатичные и у каждой есть подружка-лягушка.

Удача — уходит в парк Гагарина с улицы Орловской

Любовь — целует лягушонка на пешеходной улице Спасской

Богатство — смотрится в зеркальце у кукольного театра

Здоровье — медитирует в Александровском саду

Яркость — стоит на мосту у набережной Грина

Искренность — у фонтана «Парящий камень»

Семья — чаёвничает на набережной Грина

день назад

Пост

Лесной дух на отдыхе
Лесной дух на отдыхе

Всем привет:)

Я довольно много пилю всякого, но это всё заказные бабайки, а я их уже показывал месяц назад, и я даже не знаю, надо новых показывать или не надо🤔

Очередные бабаи
Очередные бабаи

Поэтому покажу немного Красноярска:)

Удалось мне ненадолго съездить туда отдохнуть.

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

Фотографий у меня не так много, потому что в основном фотографировала жена, но, что есть, то покажу)

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

1 / 2

На второй день, естественно, это красноярские столбы.

1 / 5

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

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

1 / 2

Оттуда дошли до крутейшего мемориала победы, и там же был Свято троицкий собор, от него мы дошли до храма Иоакима и Анны, но он был на реставрации, поэтому оттуда мы дошли до Покровского Кафедрального собора.

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

Позже сходили в музей-усадьбу Сурикова

1 / 2

Картина вживую это, конечно, вообще не то же самое, что на фото её посмотреть, это чувство глубины фотографией не передать.

И напоследок сходили в краеведческий музей.

Что-то мы смотрели мимоходом, плюс, естественно, ходили в разные места чтобы вкусно поесть, но там я уже ничего не фотографировал.:))

Такая вот была поездка

Такой вот получился пост, в рамках ивента со словом “пост”

2 дня назад

Скучно.

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

Первое фото в облаке аж 2012 года - на нём крещение одной девочки, которой я отдал очень много в этой жизни и, пожалуй, отдам ещё больше.

1 / 4

Далее фоток нет аж до 2017-го, и в этот год примерно в это время я был в Одессе. С их тогдашними ценами я чувствовал себя олигархом. Представьте себе: 1 доллар стоил тогда 25 гривен, а килограмм вкусного, домашнего, спелого винограда - всего 10 гривен. Тарелка украинского борща с чесночными пампушками, салом и стопкой ледяной водки в ресторане обошлась всего в 50 гривен.

Ещё запомнился пьяный человек, который настоятельно предлагал сфотографироваться с голубями. На мои слова о том, что денег нет, он ответил, делая снимок: «Деньги потом принесёшь».

Из минусов - не работал «ВКонтакте», а он тогда был очень популярен.

1 / 4

Примерно в это же время в 2018 году я посещал подводную лодку в Москве. Превращённая в музей, она является одной из крупнейших дизельных подлодок в мире.

1 / 5

В августе 2019-го мы с женой путешествовали на великах по Беларуси - по деревням и сёлам. Было интересно: садишься в электричку, сходишь на какой-нибудь дальней станции и едешь куда глаза глядят.

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

А ещё нам в одной деревне подарили щенка. Вернее, от него хотели избавиться, а мы его забрали. Сейчас это Джек: вымахал в огромного, но очень доброго пса и живёт у родителей. Чтобы вы понимали степень его доброты, куры спят прямо с ним в будке после того, как часть их задушила лисица.

1 / 3

2020 год. Я наловил раков и угостил отца - сколько же у него было радости!

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

1 / 3

Лето 2021 года. Разгар ковида. Белорусов не пускают на машинах в Россию. Друг шлёт фото, как он смог прорваться через границу. Дочка хвалится трофеем, я же навостряю лыжи в Европу и фоткаю друга, который прикольно спит. Особо фоток нет.

Ну а дальше ничего интересного.

Вроде выговориться.

день назад

Видите кота?

А он есть!

Любимое место Сэра Макса - под покрывалом. Поэтому, прежде чем сесть на кровать, проверяем нет ли там кого-то мягкого и пушистого. Мур!

день назад

Завтрак и первый пост

день назад

Понедельник день такой

По феншую понедельника ника нельзя кота тормошить.

3 дня назад

Кровавый Спорт!

О как эта кинолента меня радовала )))

Жан-Клод Ван Дамм в своих интервью не раз признавался в том, что съемки в "Кровавом спорте" были для него одним из самых сложных периодов в карьере. За плечами спортсмена к началу работы над ролью Фрэнка Дюкса была лишь пара эпизодических ролей, и Ван Дамм полагал, что его физическая форма отвечает всем требованиям, но на площадке от него требовалось много больше. Съемки были столь напряженными и изнуряющими, что через несколько дней Жан-Клод был готов сдаться. Не был доволен состоянием актера и реальный Фрэнк Дюкс, работавший на площадке координатором боев. Пришлось прерваться на три месяца, чтобы Ван Дамм подтянул кондиции.

"Кровавый спорт" – один из немногих фильмов, который снимался в городе Коулун, практически неуправляемом властями Гонконга поселении, печально известном не только плотностью населения, но и уровнем преступности. Выстроенный на месте старинной китайской крепости Коулун представлял собой нагромождение высотных домов, построенных так плотно, что из окон одного дома можно было перебраться на балкон другого. Квартал с давних времен был захвачен триадами, установившими собственные порядки и не допускавшими внутрь полицию. Незадолго до начала съемок "Кровавого спорта" правительство объявило о планах снести "злой город", но стерли Коулун с лица земли только в 1994-м. Сейчас на этом месте разбит парк.

Для западного зрителя восточные единоборства в 1980-х не были в новинку – тем не менее, авторы "Кровавого спорта" решили пояснить, как так получилось, что американский офицер обладает навыками, которые не так-то просто приобрести. Для этого в фильме есть довольно развернутый эпизод воспоминаний Фрэнка о годах своей юности и тренировках в доме мастера сидоси Сэндзо Танака. Обычно в кино стараются не затягивать с путешествиями в прошлое, но герой Ван Дамма погружается в ностальгические пучины на долгие 11 минут – это одна из самых длинных сцен воспоминаний в голливудских картинах. Стоит признать, что фильм это отступление от основной истории не портит. Наоборот, герой получает дополнительный объем и мотивацию.

Одна из самых эффектных сцен картины – впечатляющий удар Фрэнка по стопке кирпичей с таким расчетом силы, что раскалывается не верхний камень, а тот, который лежит на дне башенки. Дюкс якобы использует секретную технику "Дим мак" или "Прикосновение смерти", которая позволяет распределить энергию удара особым образом. В случае схватки с противником такая техника дает бойцу возможность наносить такие удары, которые больший урон наносят внутренним органам, а не поверхности тела. Крутой прием нанесения увечий на расстоянии давно стал частью мифологии, сопровождающей восточные техники единоборств, однако его реальная эффективность до сих пор никак не подтверждена. Лучше всего с помощью дим мак получается обирать доверчивых обывателей, желающих научиться секретным ударам.

Несмотря на популярность картин о восточных единоборствах, настоящих мастеров, готовых не просто махать руками и ногами, но и работать в кадре, всегда было не так много. Потому неудивительно, что они перемещались из фильма в фильм, попав, разумеется, и в "Кровавый спорт". Интересно здесь другое – в картине Ван Дамма засветились две жанровые звезды, и они исполнили роли, идентичные тем, что уже играли в фильме Брюса Ли. Прямиком из "Выхода дракона" 1973 года в "Кровавый спорт" пришли Боло Йен и Рой Чао. При этом первый снова выступил в амплуа антагониста, а второй опять сыграл умудренного опытом наставника главного героя. Редкая для зрителя возможность сравнить два фильма, так сильно связанные друг с другом.

Контакты Жана-Клода Ван Дамма и Боло Йена не ограничились "Кровавым спортом". Две звезды фильмов о кунг-фу в 1991-м снова сошлись в одном кадре – "Двойной удар" дал зрителям возможность понаблюдать за новой схваткой своих кумиров. В том же "Двойном ударе" отметился и еще один актер, сыгравший в "Кровавом спорте" – Филип Чан, которому в 1988-м досталась роль капитана полиции, через три года "дорос" до образа босса китайских триад. Оба актера зарекомендовали себя в Голливуде и снялись не в одном заметном боевике – Боло Йена, например, можно увидеть в фильме "Индиана Джонс и Храм судьбы".

Яркая картина с впечатляющими схватками и колоритными персонажами пришлась по вкусу миллионам зрителей по всему миру, но знаете ли вы самого высокопоставленного фаната "Кровавого спорта"? Кроме шуток, одним из самых любимых своих фильмов эту ленту называет президент Соединенных Штатов Дональд Трамп. Еще в 1997 году в интервью журналу "The New Yorker" Трамп заявил: "Да, это звучит смешно. Вам наверняка захочется написать, что Трампу нравится нелепое кино с Ван Даммом, но готовы ли вы признаться в том, что и вам он тоже нравится? В нем присутствует что-то особенное!" С "бульдозером американской политики" сложно не согласиться.

Эпизод первого поединка Фрэнка на турнире стоит посмотреть внимательнее – во время съемок этой сцены Ван Дамм нечаянно вынес своего партнера по площадке. По сюжету, Дюкс, полагая, что бой окончен, отворачивается от соперника, и тот хочет нанести ему удар в спину. Прежде чем коварный план сработает, Фрэнк успевает локтем ударить противника в спину и зафиксировать победу. На самом деле Жан-Клод действительно ударил локтем актера Бернарда Мариано, но не в спину, а в лицо, причем так, что тот выпал в нокаут. Мощный удар зафиксирован на пленке, его не стали вырезать или переснимать, однако, вам придется смотреть внимательно, чтобы его не

Пропустить.

Редко находится повод сказать, что какая-то из картин о восточных единоборствах существенно повлияла на массовую культуру, но "Кровавый спорт" смело можно записывать в столпы и краеугольные камни. Всё дело в том, что именно эта картина стала источником вдохновения для Эда Буна и Джона Тобиаса, создателей культового файтинга Mortal Kombat. По словам последнего, Джонни Кейджа практически дословно срисовывали с Фрэнка Дюкса, вплоть до знаменитого удара ногой в прыжке. Да и сама турнирная система перекочевала в "Смертельную битву" из кино. Сложно сказать, есть ли еще в истории картина, породившая столь же успешную игровую франшизу.

"Кровавый спорт" – не просто боевик, создатели позиционировали его как историю, основанную на реальных событиях. Как я уже упомянул, Фрэнк Дюкс – не просто реальный человек. Он входил в число консультантов фильма и тренировал Ван Дамма. Больше того, сценарий картины опирается на его биографию, выпущенную в формате книги и имевшую определенный успех у читателей. Вот только рассказанная Дюксом история об участии в подпольных турнирах многими подвергалась сомнению, подтверждений достоверности не предоставил ни сам автор, ни его преданные поклонники. Сегодня большинство исследователей полагает, что Фрэнк всё выдумал, чтобы пробиться в Голливуд. Но делает ли это "Кровавый спорт" хуже? Нет ведь!

Всем крутых ивентов! Иииийййййяяяя