
Построение HA-кластера в PostgreSQL традиционно требует внешнего стека: Patroni, распределенного хранилища конфигураций и набора вспомогательных утилит. В СУБД Postgres Pro Standard и Enterprise отказоустойчивость реализована на уровне ядра: механизм BiHA берет на себя консенсус Raft, защиту от split-brain и перестроение топологии.
Разбираем, как устроена встроенная отказоустойчивость, как система автоматически выравнивает расхождения в WAL без ручного вмешательства DBA и в каких сценариях такой подход надежнее самосборного контура.
Читать далее
В данной статье расскажем о нашем опыте определения типов микросхем на рентгеновских снимках моделью YOLO
Читать далееSteven Sansom and Adam Watson accused of trying to kill Urfan Sharif, who murdered his daughter, in prison
Two men have been charged over what is understood to be the attempted murder in prison of Urfan Sharif, who is serving a life sentence for murdering his 10-year-old daughter Sara.
The Crown Prosecution Service (CPS) announced the charges against Steven Sansom, 47, and Adam Watson, 39, after an incident at Belmarsh prison in London.
Continue reading...Administration asks justices to keep appeals court decision to halt work on hold while it prepares a full appeal
The Trump administration has asked the US supreme court to allow construction of the president’s controversial $400m White House ballroom to proceed after an appeals court ordered work to halt.
In a case testing Donald Trump’s presidential authority, the Washington-based US court of appeals for the District of Columbia circuit ruled last week that the controversial project lacked the necessary approval from US Congress.
Continue reading...
Есть неприятный момент на техническом собеседовании. Интервьюер заканчивает длинный вопрос, и ты понимаешь, что тема знакома. Ты делал это на работе, помнишь правильный подход и даже подходящий случай. Но отвечать нужно сейчас, а в голове одновременно идут четыре процесса: разобрать формулировку, вспомнить детали, выстроить ответ и не зависнуть в тишине.
Если интервью на английском, добавляется пятый — перевод.
Проблема здесь не в знаниях, а в бюджете времени. Естественная пауза после вопроса — это примерно две‑четыре секунды. Дальше собеседник считывает её как заминку. Всё, что должно уместиться в этот интервал, — распознать конец реплики, понять, о чём именно спросили, собрать структуру ответа и начать говорить.
Обычный AI‑чат в соседней вкладке в этот бюджет не помещается, и дело не в качестве модели. Посчитайте, из чего складывается задержка: услышать вопрос, переключить окно, напечатать или вставить формулировку, дождаться генерации, прочитать выдачу, найти в ней полезное, вернуться в разговор. Даже без времени на саму генерацию транспортная часть съедает больше, чем у вас есть.
Читать далее
Почему одни идеи превращаются в востребованные продукты, а другие так и остаются красивыми презентациями — или мемами про очередной B2B AI SaaS? Часто проблема не в технологии и не в качестве реализации. Команда может отлично сделать то, что пользователю на самом деле не нужно.
В IT легко начать с готового ответа: «сделаем экспорт», «добавим ещё один экран», «автоматизируем этот сценарий». Дизайн-мышление предлагает на время отложить решение и сначала разобраться, какую проблему мы вообще пытаемся решить.
Меня зовут Лера, я технический писатель в Авито. Я продолжаю разбирать книги, идеи из которых помогают по-новому посмотреть на работу, команды и создание продуктов. Сегодня поговорим о книге Тима Брауна «Дизайн-мышление в бизнесе».
Для айтишников здесь есть вполне практичная польза. Чем сложнее и дороже разработка, тем важнее раньше понять, правильную ли задачу мы вообще собираемся решать. Дизайн-мышление не учит писать код или проектировать системы — оно помогает не потратить месяцы на качественную реализацию идеи, которая изначально никому не была нужна.
Читать далееMove will be one of first large-scale foreign investments in country since US ousted leader Nicolás Maduro in January
BP has answered Donald Trump’s call for oil companies to help rebuild Venezuela’s fossil fuel industry with new plans to develop a large offshore gasfield.
BP will partner with two oil firms with close links to the Trump administration to develop the second phase of the Loran gasfield, in one of the first large-scale foreign investments in Venezuela since the US ousted its leader Nicolás Maduro in January.
Continue reading...Extreme heat and lack of rain threatening public water supply, with ‘real trouble’ predicted if autumn stays dry
Five key reservoirs across England and Wales are “exceptionally low” as drought and extreme heat piles pressure on public water supply that is likely to continue into the autumn.
Most of Europe has endured back-to-back climate crisis-driven heatwaves this summer. The extreme heat, coupled with strikingly little rainfall, means almost three-quarters of England and the whole of Wales is now in drought.
Continue reading...Stressed out, endlessly scrolling and never satisfied? Yongey Mingyur Rinpoche, the Buddhist monk with off-the-charts levels of contentment, may have the answers …
By some metrics, Buddhist monk Yongey Mingyur Rinpoche is the happiest man on Earth. In brain scans, researchers noted that Mingyur’s neural activity showed off-the-charts levels of activation in the left prefrontal cortex, an area associated with positive emotions such as happiness, enthusiasm and joy. In other tests conducted when he was 41 years old, his brain reportedly “resembled that of a 33-year-old”. He also laughs a lot.
Can happiness be taught? I met Mingyur (Rinpoche is an honorary title meaning, roughly, “precious one”) to discover his strategies for a richer life.
Continue reading...
Автомойка в 50 метрах от дома. Как доберетесь — на машине или пешком?
Если вы ответили «конечно, пешком, отчего не прогуляться» — поздравляем. Вы угодили в старую как мир ловушку здравого смысла. Но не расстраивайтесь! Следом за вами на эту уловку попались и нейросети от компаний с триллионными бюджетами, а сама загадка стала важным бенчмарком адекватности, через который прогоняют ChatGPT, Claude, Grok, DeepSeek и все прочие современные ИИ.
Правильный ответ тут гораздо сложнее, чем кажется на первый взгляд.
Читать далее
Искусственный интеллект резко ускорил разработку, но вместе со скоростью выросла цена управленческих и архитектурных ошибок. В статье разбираем, как на этом фоне меняются роль техлида, устройство команд и сами правила принятия решений — на примерах миграций, CI/CD, ИИ‑агентов и реальных изменений внутри инженерной организации.
Читать далееMod fashion, nod to 80s excess or symbol of tradition? Andy Burnham’s wardrobe choice transcends class divisions
The sartorial evolution of Andy Burnham reached another milestone this week when the prime minister appeared at a photocall in Derbyshire wearing a pair of braces under his suit.
Navy, slimline and button-on rather than clipped, they were barely visible while he posed for a photo in Ilkeston. It was only when he unbuttoned his suit jacket to embrace members of the public that they were on view.
Continue reading...Extreme heat and lack of rain threatening public water supply, with ‘real trouble’ predicted if autumn stays dry
Five key reservoirs across England and Wales are “exceptionally low” as drought and extreme heat piles pressure on public water supply that is likely to continue into the autumn.
Most of Europe has endured back-to-back climate crisis-driven heatwaves this summer. The extreme heat, coupled with strikingly little rainfall, means almost three-quarters of England and the whole of Wales is now in drought.
Continue reading...
Исправное устройство успешно обновилось, доказало своё здоровье, а через два перезапуска откатилось на старую прошивку. Причина оказалась вообще не в обновлении: в тот раз наш бэкенд отвечал три минуты вместо одной.
У нас парк ARM‑устройств: удалённое обновление ядра, A/B‑слоты, автоматический откат. Казалось бы, схема известная, готовые движки есть, документация написана. Сам движок действительно поехал за неделю. Потом полтора месяца мы выковыривали дефекты, которые не падали, ничего не писали в лог и не ловились обычными тестами.
Ниже — семь самых поучительных случаев. И у всех одна форма: каждая проверка утверждала больше, чем на самом деле доказывала.
Устройство говорило «обновился», проверив доставку обновления, а не его применение. Или: «я здоров, братан, проверяй», глядя на факт запуска, а не на работу прошивки. Или: «версия 0.0.17», потому что это было написано в манифесте бэкенда, а не потому, что именно эта версия реально крутилась на железе.
В итоге — как с нашим правительством: свою работу оценили на отлично, а эксперимент, очевидно, неудачный.
И чё?
Настольная горелка — основной инструмент стеклодува, будь то упрощённое изготовление стеклянных сувениров или сложное приборостроение. От конструкции и исполнения стеклодувной горелки зависят возможности мастера, безопасность и удобство его ежедневной работы. Работы, как правило, тонкой и кропотливой. Известна горелка «пушка» — эволюционировавшая паяльная трубка, по схеме которой могут быть построены и крупные мощные «мортиры», и крохотные ручные огни для мелкой пайки стекла. Небольшую пушку для стеклодувных экзерсисов, например, для изготовления химических принадлежностей и некрупной посуды, нетрудно собрать и отрегулировать в полчаса из подручного хлама, однако, гораздо лучше горелки, построенные вдумчиво и основательно, в том числе и с оперативной регулировкой формы и размера факела. Такие конструкции существенно сложнее и среди «пушек» встречаются нечасто. Предлагаю почтенной публике взглянуть на такую необычную и редкую кустарную комбинированную горелку — её устройство, модернизацию, работу.
Читать далееWith Oceania praising Fifa on Friday, all six confederations have finally had their say on the fallout from the World Cup sell-off plan
The Oceania Football Confederation’s (OFC) decision to belatedly issue a statement following this week’s executive committee meeting praising Fifa’s “progress achieved over the last decade” means all six continental confederations have finally had their say on the fallout from the World Cup sell-off plan that has split world football, with the votes seeming tied at three apiece on the key issue of whether Gianni Infantino should remain as Fifa president.
Continue reading...Artworks valued at total of more than $10m were stolen from Magnani Rocca Foundation near Parma in March
Italian police have recovered three paintings by the French masters Paul Cézanne, Pierre-Auguste Renoir and Henri Matisse that were stolen earlier this year from a private museum near the northern city of Parma, authorities have said.
The raid took place overnight on 22-23 March at the Magnani Rocca Foundation, about 12 miles (19km) from Parma, after a series of high-profile thefts from other European museums.
Continue reading...Something is happening in server-rendered web development. React shipped Server Components. HTMX made “hypermedia” cool again. Phoenix LiveView proved a server can push interactive UI updates without a client framework in sight. Every ecosystem seems to be rediscovering the server as a place to render UI, except one: the JVM. What if Compose, the UI toolkit already spanning Android, Desktop, and iOS, took a shot at server-rendering HTML too?
The vision is simple: give backend developers a way to build server-rendered UI as type-safe, reusable Compose components (real Kotlin, with autocomplete, refactoring, and compiler checks) instead of string-based templates. No separate templating language, no separate UI codebase to maintain alongside the backend. This blog serves to explore some ideas how to achieve this vision and represents an exploration instead of an official commitment.
Every major JS framework now has an SSR story: React has Next, Vue has Nuxt, Svelte has SvelteKit. And it’s not only the JS ecosystem. C#, Rust and even functional languages like Elixir have innovative solutions to build fullstack apps without relying on templating engines. Instead, they bundle state and rendering into reusable components, directly in code, the same way Compose already does everywhere else.
Right now the JVM doesn’t have a horse in this race. There’s no shortage of SSR libraries on the JVM. But most of them need some sort of templating language and have nothing close enough to a component for a JS dev to recognize as such.
But there is already a framework that is battle-tested and capable of filling this gap for the JVM, it just never really targeted the server. Compose Multiplatform allows us to write business logic and User Interfaces once and share it between platforms: Android, iOS, Desktop, and the web. It just needs to make the jump to the server next.
Compose Multiplatform already targets the web, but not the way you’d want for this: it renders directly into a canvas, which shares UI code between mobile platforms and the browser at the cost of SEO, loading times, and accessibility.
A way to render HTML with Compose already exists, and it’s older than Compose for Web: Compose HTML, which uses the Compose runtime to build SPAs in Kotlin and compile it to JS using the Kotlin/JS compiler. Add a JVM target and it could do SSR too. The rendering happens directly in Kotlin: real components, real types, no templating language.
JVM devs stuck with Thymeleaf/JSP, or reaching for a separate JS framework just to build fullstack applications, wouldn’t have to leave the platform: type-safe, reusable Compose components replace what the templating language used to handle. Kotlin’s Java interoperability means it would slot into large legacy Java applications too.
Take something as basic as a reusable card component. In Thymeleaf, that’s a fragment defined in its own file, called by name, with parameters passed as untyped strings:
<!-- fragments/card.html -->
<div th:fragment="card(title, count)" class="card">
<h3 th:text="${title}">Title</h3>
<span th:text="${count}">0</span>
</div>
<!-- usage -->
<div th:replace="~{fragments/card :: card(title='Cart', count=${cartCount})}"></div>
<div th:replace="~{fragments/card :: card(title='Wishlist', count=${wishlistCount})}"></div>
Rename count to itemCount and every call site keeps compiling until it breaks at runtime. The compiler has no idea card or its parameters even exist.
The same component in Compose is a typed function:
@Composable
fun Card(title: String, count: Int) {
Div({ classes("card") }) {
H3 { Text(title) }
Span { Text(count.toString()) }
}
}
// usage
Card(title = "Cart", count = cartCount)
Card(title = "Wishlist", count = wishlistCount)
Rename count here and every call site either updates with the IDE or fails to compile. Pass a String where an Int is expected, and it’s a compiler error, not a runtime surprise.
Today Compose HTML only has a JS target, so it can only be used from the browser; there’s no way of doing SSR yet. That doesn’t mean the Kotlin web-dev ecosystem is standing still, though.
There is Kobweb, a batteries-included framework built on top of Compose HTML. It doesn’t offer SSR but supports static site export/prerendering to help with SEO. There is also Kilua, which doesn’t build on top of Compose HTML but on top of the Compose Runtime directly to do SSR and CSR, leveraging JS or Wasm, and offers integrations for Ktor, Spring Boot, and others. And there is Summon, with SSR and hydration support.
There’s already a small but active community leveraging Compose to build for the web. Adding SSR capabilities to Compose HTML would give Kobweb, Kilua, and Summon a shared foundation instead of three separate approaches, and give frameworks like Spring Boot and Ktor a good reason to integrate with it on the server.
This space isn’t totally unexplored, but everything from this point onward is pure exploration.
The first step would be to add a JVM target to Compose HTML, which is a bit easier said than done. There would need to be renderToString and renderToBytes functions that run a composition once on the JVM and serialize the resulting tree into a string.
fun renderToString(content: @Composable DOMScope<DomElement>.() -> Unit): String
val html: String = renderToString {
Div({ classes("card") }) {
Text("Hello")
Span({ classes("title") }) {
Text("World")
}
}
}
// html == """<div class="card">Hello<span class="title">World</span></div>"""
It composes once, lets the initial composition settle, walks the resulting tree, and serializes it straight to an HTML string: no browser, no DOM.
There are some limitations to this. There would probably be only a single render pass, meaning no recomposition on state change or any effects, in essence very similar to SSR in JS. Event listeners should be accepted but will be inert; there’s no point in binding to browser events on the server.
This would probably already be enough to build basic, entirely server-rendered pages using Compose. Here’s a full todo app on Spring Boot:
@Controller
class TodoController(private val todoService: TodoService) {
@GetMapping("/todos")
@ResponseBody
fun todoView(): String = renderToString {
TodoView(todoService)
}
@PostMapping("/todos")
fun addTodo(createTodoDto: CreateTodoDto): String {
todoService.addTodo(createTodoDto.title)
return "redirect:/todos"
}
@PostMapping("/complete/{id}")
fun completeTodo(@PathVariable id: Long): String {
todoService.completeTodo(id)
return "redirect:/todos"
}
}
data class CreateTodoDto(val title: String)
@Composable
fun TodoView(todoService: TodoService) {
AddTodo()
TodoList(todoService)
}
@Composable
fun AddTodo() {
Form(
attrs = {
action("/todos")
method(FormMethod.Post)
}
) {
TextInput(
attrs = {
placeholder("Add todo")
name(CreateTodoDto::title.name)
}
)
Button(
attrs = {
type(ButtonType.Submit)
}
) {
Text("Add")
}
}
}
@Composable
fun TodoList(todoService: TodoService) {
val todos by produceState(initialValue = emptyList<Todo>(), todoService) {
value = todoService.getTodos()
}
Ul {
todos.forEach { todo ->
Li {
Form(
attrs = {
action("/complete/${todo.id}")
method(FormMethod.Post)
}
) {
Text(todo.title)
Button(
attrs = {
type(ButtonType.Submit)
}
) {
Text("Complete")
}
}
}
}
}
}
Every interaction here is a real HTTP form submission and full-page redirect: no client JS at all, same as classic Thymeleaf-style SSR, just written entirely in Compose.
At that point, frameworks like Spring and Ktor could start experimenting with integrations and identifying missing integration points. This would also be the first sensible point at which new libraries (e.g. components) could be created.
Going entirely off the rails into pure speculation, this is what such an integration could look like for Spring:
@ComposePage("/todos")
@Composable
fun TodosPage(todoService: TodoService) {
AddTodo()
TodoList(todoService)
}
@ComposeAction("/todos", method = PostMapping::class)
fun addTodo(
@RequestBody createTodoDto: CreateTodoDto,
todoService: TodoService
) {
todoService.addTodo(createTodoDto.title)
}
The idea: a hypothetical Spring integration could turn a @Composable function directly into a routed page, no manual renderToString call, no controller boilerplate, no wrapping HTML shell. Spring would own request mapping and dependency injection exactly like it does today; Compose HTML would just be the render target instead of a View/template.
Or for Ktor:
routing {
composable("/todos") {
TodoView(todoService)
}
post("/todos") {
val params = call.receiveParameters()
todoService.addTodo(params["title"]!!)
call.respondRedirect("/todos")
}
}
composable(path) { } would be a thin wrapper Ktor could add: call renderToString internally and respond with the HTML content type, so a route body becomes a @Composable lambda instead of a string template or manual call.respondText.
Worth repeating: these are illustrative sketches, not planned APIs, not a roadmap.
Hydration and state sync are the natural next question, not an answer: how would a composable that already rendered on the server pick up interactivity in the browser, and would client and server ever need to agree on state? Answering that would also open the door to sharing UI code between client and server, the same component compiled once for the browser and once for the server, and enable interactive fullstack web apps built entirely in Kotlin.
Let’s be clear about scope: the goal is not to expand Compose HTML into a fully-fledged, batteries-included framework. Rather, the vision is similar to React’s: stay small and let frameworks build the integration points on top, just applied to a multiplatform library instead of a single-platform one. Framework integrations and ecosystem libraries live outside the core. That’s a real contrast to the rest of Compose Multiplatform, which ships official libraries for Material3 components, state management, and many other things. Compose HTML will need to rely on the Kotlin community and ecosystem to figure out what integration points are actually needed and how its future will look, instead of dictating a direction from the inside.
We are already talking to framework maintainers from Kobweb, Kilua, and Summon to gather their perspective, as well as the Spring team, which has expressed interest in experimenting once a JVM target is added to Compose HTML.
If you want to talk shop, argue with any of this, or just see where it goes, join the Kotlinlang Slack (get your invite here: https://kotl.in/slack) and the #compose-ssr channel.
Every other ecosystem already took its shot at the server. Kotlin’s turn is overdue.

Развернуть n8n просто, а работать с ним — нет. Обновления ломают рабочие сценарии: вчерашний воркфлоу падает, транскрибация из Telegram выдаёт неясную ошибку, модель через российский агрегатор не цепляется. За последний год в n8n нашли пять критических уязвимостей, две из них позволяли выполнять код на сервере без входа в систему. В облачной версии такие дыры латает сам n8n, а на своём сервере следить за патчами и обновляться придётся владельцу или его разработчику.
Большинство сценариев в n8n сегодня завязано на AI-агентов, а им нужна языковая модель. Из России напрямую к OpenAI или Anthropic не подключиться — нужен агрегатор. Наша Polza AI даёт единый API к сотням моделей, оплата в рублях, а n8n подключается к нам как к обычному OpenAI. Через нас проходит много n8n-воркфлоу, поэтому мы решили разобрать платформу подробно: как устроена, сколько стоит, чем отличается от Zapier и Make, как поднять в России, как не подставиться на безопасности и когда она не нужна.
Читать далееArtworks valued at total of more than $10m were stolen from Magnani Rocca Foundation near Parma in March
Italian police have recovered three paintings by the French masters Paul Cézanne, Pierre-Auguste Renoir and Henri Matisse that were stolen earlier this year from a private museum near the northern city of Parma, authorities have said.
The raid took place overnight on 22-23 March at the Magnani Rocca Foundation, about 12 miles (19km) from Parma, after a series of high-profile thefts from other European museums.
Continue reading...Cut in electric vehicle sales targets could add millions of tonnes of CO2 to emissions in UK, say green campaigners
Andy Burnham has been criticised for moving to cut electric vehicle (EV) sales targets and accept North Sea drilling at a time of devastating wildfires caused by the climate emergency.
The prime minister for the first time acknowledged on Friday that the climate crisis was behind hundreds of wildfires that have ripped across the parts of the UK.
Continue reading...