REST API Basics: Breaking Changes
▸ https://lttr.ai/ApKSg
REST API Basics: Breaking Changes
▸ https://lttr.ai/ApKSg
When designing REST APIs, one of the biggest challenges is avoiding breaking changes, modifications that force existing clients to update their code.
Read more 👉 https://lttr.ai/AoZ4X
**Эссе**
**«Вечные старики веба»**
Их хоронили методично и с чувством.
Сначала в 2012-м — уверенно, почти радостно.
Потом в 2015-м — уже с аналитикой и слайдами.
В 2018-м — с речами про «новую эру» и обязательным словом *legacy*.
А они всё равно вставали, стряхивали пыль с потрёпанных плагинов и продолжали работать.
Без аплодисментов. Без пресс-релизов. Просто — работали.
PHP, jQuery, WordPress — это давно уже не «технологии».
Это #геология.
Гранитные плиты веба, которые медленно, упрямо ползут миллиметр за миллиметром, пока вокруг них извергаются модные вулканы #NextBigThing и #NewFrameworkJustDropped.
В 2020-м казалось: ещё один рывок, ещё одна волна #NextJS + #TypeScript + #Serverless — и старый добрый #LAMP наконец уйдёт в Лету.
Не ушёл.
В 2026-м мы открываем статистику и тихо материмся:
PHP всё ещё держит **72–74 %** рынка (#PHP).
WordPress обслуживает **больше 43 %** всех сайтов планеты (#WordPress).
А jQuery… да, господи, **jQuery всё ещё стоит на ~73 % сайтов**, которые кто-то когда-то написал и больше никогда не трогал (#jQuery).
Это уже не про производительность.
Не про «современность».
И даже не про деньги.
Это про инерцию человеческой психики (#HumanFactor).
Люди не любят переписывать работающее.
Люди особенно не любят переписывать работающее, если переписывать нужно не один сайт, а **триста пятьдесят клиентских**, каждый из которых «надо просто чуть-чуть подправить».
Люди ненавидят переписывать работающее, когда #Deadline горит, а заказчик звонит каждые сорок минут.
Поэтому мы пишем новые микросервисы на #Go,
а потом прикручиваем к ним старую админку на PHP 7.4.
Поэтому делаем красивый фронтенд на #React19,
а под капотом у нас до сих пор jQuery-обработчик клика по кнопке «Сохранить».
Поэтому запускаем #NextJS15 с app router и server actions,
а контент-менеджеры продолжают заливать новости через WordPress, потому что «там удобно, и я уже привык».
Это не лень.
Это #прагматизм, доведённый до экзистенциального ужаса.
Мы все знаем: идеального стека не существует (#PerfectStackIsAMyth).
А реальный стек — это всегда компромисс между
«хочу умереть красиво»
и
«надо сдать до пятницы».
Пока очередной фреймворк проходит пять стадий принятия —
от «это будущее!» до «боже, за что я опять это делаю» —
старые технологии просто молча сидят в углу и продолжают работать.
Без шума.
Без релизов каждые две недели.
Без твитов с пометкой #BreakingChange.
Просто работают (#ItJustWorks).
Может быть, в 2040-м кто-то всё-таки похоронит PHP (#RIPPHP).
Может быть, WordPress превратится в музейный экспонат.
Может быть, jQuery отправят на свалку истории рядом с Flash и GeoCities.
Но почему-то кажется, что в тот самый день
где-то в маленьком офисе на окраине постсоветского города
уставший сисадмин 62 лет откроет последний тикет:
> «сайт упал после обновления ядра wp 7.8.12 → 7.8.13
> срочно, дедлайн вчера»
Он вздохнёт, откроет #PuTTY,
залогинится на сервер 2009 года выпуска
и снова оживит эту старую, добрую, бессмертную хрень.
Потому что некоторые вещи не умирают (#LegacyForever).
Они просто становятся фоном,
на котором происходит вся остальная жизнь веба.
И, чёрт возьми, в этом есть что-то до жути красивое.
(2) Пост від @olukawy.bsky.social — Bluesky
https://bsky.app/profile/olukawy.bsky.social/post/3mc5bxjxeo22g
Zig breaking change – initial Writergate
https://github.com/ziglang/zig/pull/24329
#HackerNews #Zig #Writergate #breakingchange #programming #language #GitHub #open #source
If you use the great powershell-yaml module be aware. Version 0.4.8 released last Friday will break your code if you rely on case-insensitive property names.
In the latest version 0.4.8 the resulting hastable is created in a way where the keys are looked-up in a case-sensitive manner. However, PowerShell is case-insensitive in nature and it is best to c...
BinaryFormatter removed from .NET 9 by Immo Landwerth.
#dotnet #csharp #breakingchange #security #dotnet9
https://devblogs.microsoft.com/dotnet/binaryformatter-removed-from-dotnet-9/
Well, given that I am about to perpetrate a #breakingchange I figure I should put some sort of versioning on #allthethings so that we can perform its #rollout with as few surprises as possible. I don’t know what order of #environments we will do (there may be some #nonproduction environments both before and after #production) but at least we will be able to track what knobs we turned and what levers we threw to get there. (Or rescue ourselves!)
If only it weren’t such a giant #chore.
Heads up anyone playing with Kitten at the moment (yes, both of you):
I’m in the process of upgrading Kitten’s version of JSDB from 4 to 5.
*This is a breaking change.*
This will affect you if you’re persisting custom objects (instances of your custom model classes) in your databases.
Please see the details in this JSDB announcement post and the linked-to details page to prepare:
https://mastodon.ar.al/@aral/112361559531645603
(I should have the update out this afternoon.)
JSDB 5.0.0 published 🎉 • Custom classes must have a `constructor` that accepts a parameter object as its only argument. Constructors are run during deserialisation. • Custom classes can now safely extend other classes (e.g., `EventEmitter`). • Properties that begin with an underscore (`_`) are treated as private and ignored. • Objects with null prototypes are supported. i.e., objects created with `Object.create(null, …)`. Full details: https://codeberg.org/small-tech/jsdb#migrating-from-earlier-versions-of-jsdf #JSDB #NodeJS #database