Automat'ы, как ни странно, просуществовали аж до 1991 года
Типичный автомат FEBO
В Нидерландах существуют и поныне, сеть FEBO никуда не делась: всё также бросаешь монетку и получаешь из открывшегося окошечка порцию курицы или крокет.
Добавлю примеров в копилку из своего опыта, где работал сам:
- Яндекс (Яндекс.Касса).Decimal base units: Java BigDecimal на бэкенде, DECIMAL в базе данных (Postgres), строковое представление в API. - Ingenico e-Payments / Worldline (четвёртый в мире Payment Gateway, самый большой в Европе).Integer with minor units: Java BigInteger на бэкенде, BigInt в базе данных (Oracle), где minor units = 1/1000000. В API то же самое, только minor units = 1/100 (для большинства валют) или 1/1000 (для определённого списка, но в документации об этом ни слова, просто костыли в коде). - Банк ING (электронный кошелёк Yolt). Сам затащил подход «как в Яндексе», так как мог влиять на принятие решений. Стек тоже «как в Яндексе». - Maersk (морские грузоперевозки). String Base Units: сериализация / десериализация из / в Java BigDecimal на бэкенде, хранение в виде строк в базе данных (MongoDB). API использует строки.
Забавный факт про Integer with minor units:
Большие суммы: Int64 может переполниться при работе с крупными транзакциями
Если уж Int64 может переполниться, то что тут говорить про int32 (Java int), который был до перехода на BigDecimal (а, возможно, где-то в коде каких-то сервисов ещё и есть) в Ingenico e-Payments. Так и случилось в один прекрасный момент несколько лет назад, когда путешествия на Бали (смотри курс индонезийской рупии IDR) стали внезапно стоить сущие центы из-за переполнения. Распродажу Лавочку прикрыли только к утру, когда заметили невероятную популярность клиента Agoda и отелей на Бали, и до исправления просто прекратили (на полгода) принимать платежи в валюте IDR. Убытки, как водится, просто списали, никого не наказали.
За всё «там» не скажу, но конкретно в Нидерландах стало плохо именно полтора года назад, осенью 2023 года. Догнала высокая ставка и деньги, которые стали очень дорогими. Жить компаниям как раньше, занимая по низкой ставке, больше не получается. Долги, которые дёшево рефинансировались, теперь поставили перед компаниями вопрос выживания, а не развития: сужу по знакомой финтех-сфере, где работал сам и знаю внутренности компаний.
Падение капитализации у Worldline (4-й PSP в мире, крупнейший в ЕС) составило больше 90%, у Adyen похоже, но они смогли немного отыграться. При том, что revenue у компаний растёт из года в год.
Я не знаю ни одной компании в нидерландском финтехе, которая бы сейчас не занималась сокращением персонала, в первую очередь в «дорогих» странах ЕС (Нидерланды, Германия, даже Польша). По возможности разработка выносится туда, где дешевле (у меня есть пример с попыткой переноса разработки в Румынию и Португалию). Об инвестициях в развитие (расширение) сейчас не думают, скорее об «инвестициях в сокращение». Как пример, Worldline запланировал потратить четверть миллиона евро в течение трёх лет на сокращение персонала (и компенсации за это). Открытые вакансии теперь воспринимаются как исключение.
Ещё хуже обстоят дела у «консультантов» (фрилансеров на местном аналоге ИП, называемом ZZP): их ещё добили регуляцией с января этого года. Все консультанты (порядка двадцати человек), с кем я успел пообщаться на мероприятиях в местной специализирующейся на финтехе консалтинговой компании, спрашивали нет ли у нас открытых вакансий «на постоянку»: если раньше интересовали только рейты, то теперь просто нужно место. Не забываем, что у многих виза привязана к работе и зарплате (виза для высококвалифицированных мигрантов), что вынуждает выходить на рынок и соглашаться на более низкую зарплату.
Как итог, по субъективной оценке разница по предлагаемой зарплате на одинаковую позицию между июнем 2023 и июнем 2025 составила порядка –20%. При этом открытых вакансий (и новых продуктов) за последние полтора года почти нет.
А как вы видите на приведённых диаграммах Dependency Tracking (отслеживаение уязвимостей в уже использующися сборках и образах, которые были выявлены после прохождения Security Gate)? Например, в ситуации, когда была найдена уязвимость в сторонней зависимости, которая используется в образе, задеплоенном несколько недель или месяцев назад, и о которой не было известно сканерам (той же Trivy) на момент прохождения Security Gate.
У Dell корпоративные Latitude были очень хороши: модульные (можно заменить / добавить что угодно на стандартных разъёмах), легко ремонтируются, крепкие металлические корпуса.
Latitude 7490 до сих пор пользуюсь, с Дебиан из коробки работает всё железо, даже встроенный LTE-модем.
А Precision всё-таки «гробики» были, очень уж тяжёлые и большие.
На HTTP сервер, как уже отметили выше, не тянет, только на TCP.
Хорошо было бы рассмотреть, как использовать уже имеющийся в JDK com.sun.net.httpserver.HttpServer в неблокируещем режиме, и, например, с использованием Virtual threads. Хотя, похоже, всё это сведётся к банальной строчке server.setExecutor(Executors.newVirtualThreadPerTaskExecutor()).
Есть telegram-curses (на базе ncurses TUI) от того же автора, что и telegram-cli. Этот клиент активно обновляется. Ну и вышеупомянутый tgt, если TUI не подходит, и хочется хоткеев. Оба (что нисколько не удивительно) являются обёрткой над официальной td-lib от команды Телеграм, разве что tgt, так как написан на Rust, использует Rust-обёртку над библиотекой от того же автора, что и сам клиент.
А Я.Браузер (который как раз на основе Chromium) в Аркадии же лежит? Не пробовали большой проект из Аркадии в SourceCraft перенести и производительность измерить?
Кажется, нужна статья от вас про актуальные компетенции админов ЦОДа и состояние рынка найма. Статей, как запрыгнуть в IT, как и курсов с рекламой, пруд пруди. Но я не видел ни одной про инженеров ЦОДа (кажется, на трёхмесячных курсах этом не учат).
Тут в чём проблема: id платежной связки можно инвалидировать только если он выдан самой Визой (так называемые scheme tokens, которые выглядят как номер карты, только другой).
С токенами, выданные платёжным шлюзом, так не получится: схема о них ничего не знает, знает (должна знать) только про идентификатор опорного платежа.
У вас тут Сбер присутствует как три совершенно разные, и, формально, не связанные между собой сущности: Сбер-платёжный-шлюз, Сбер-эквайер и Сбер-банк-выпустивший-карту. Между двумя последними должна ещё быть схема (НСПК + Мир), но привет, Сбер!
Токен (id платежной связки) возвращает шлюз (могла бы вернуть схема, но я не знаю, есть ли у Мира scheme tokens). Соответственно, токеном владеет только шлюз: он умеет сопоставить токен с карточными данными и «опорной» транзакцией—той, на которую был выдан токен, и идентификатор (RRN) которой отправляется в эквайера. Эквайер мог бы поделиться этими данными с банком-выпустившим-карту (и таки Visa, например, требует этот идентификатор, а, значит, его можно сделать доступным банку-выпустившему-карту), но тут уже внутренняя кухня Сбера.
Токен можно настроить разными способами, в том числе ограничив частоту применения (зависит от конкретного шлюза). И с токеном может ходить как сам мёрчант (расписание у мёрчанта), так и платёжный шлюз сам хранит расписание и списывает деньги (но не все шлюзы так могут).
Это вы ещё про card-on-file и unscheduled card-on-file не слышали, хотя, наверное, пользуетесь. Тут вообще никаких проверок: ваши карточные данные просто хранятся у магазина, а в PSP приходит файлик с номером карты и сколько списать.
В Нидерландах существуют и поныне, сеть FEBO никуда не делась: всё также бросаешь монетку и получаешь из открывшегося окошечка порцию курицы или крокет.
Добавлю примеров в копилку из своего опыта, где работал сам:
- Яндекс (Яндекс.Касса). Decimal base units: Java
BigDecimal
на бэкенде,DECIMAL
в базе данных (Postgres), строковое представление в API.- Ingenico e-Payments / Worldline (четвёртый в мире Payment Gateway, самый большой в Европе). Integer with minor units: Java
BigInteger
на бэкенде,BigInt
в базе данных (Oracle), где minor units = 1/1000000. В API то же самое, только minor units = 1/100 (для большинства валют) или 1/1000 (для определённого списка, но в документации об этом ни слова, просто костыли в коде).- Банк ING (электронный кошелёк Yolt). Сам затащил подход «как в Яндексе», так как мог влиять на принятие решений. Стек тоже «как в Яндексе».
- Maersk (морские грузоперевозки). String Base Units: сериализация / десериализация из / в Java
BigDecimal
на бэкенде, хранение в виде строк в базе данных (MongoDB). API использует строки.Забавный факт про Integer with minor units:
Большие суммы: Int64 может переполниться при работе с крупными транзакциями
Если уж Int64 может переполниться, то что тут говорить про int32 (Java
int
), который был до перехода наBigDecimal
(а, возможно, где-то в коде каких-то сервисов ещё и есть) в Ingenico e-Payments. Так и случилось в один прекрасный момент несколько лет назад, когда путешествия на Бали (смотри курс индонезийской рупии IDR) стали внезапно стоить сущие центы из-за переполнения.РаспродажуЛавочку прикрыли только к утру, когда заметили невероятную популярность клиента Agoda и отелей на Бали, и до исправления просто прекратили (на полгода) принимать платежи в валюте IDR. Убытки, как водится, просто списали, никого не наказали.Прошу прощения, вы правы: четверть миллиарда.
Нидерланды: две недели поезда не ходят из-за забастовок, зато договорились поднять зарплаты на сумму больше, чем официальная инфляция.
Не забываем, что в COVID раздавали деньги, не бесплатно. И теперь пришло время их отдавать.
За всё «там» не скажу, но конкретно в Нидерландах стало плохо именно полтора года назад, осенью 2023 года. Догнала высокая ставка и деньги, которые стали очень дорогими. Жить компаниям как раньше, занимая по низкой ставке, больше не получается. Долги, которые дёшево рефинансировались, теперь поставили перед компаниями вопрос выживания, а не развития: сужу по знакомой финтех-сфере, где работал сам и знаю внутренности компаний.
Падение капитализации у Worldline (4-й PSP в мире, крупнейший в ЕС) составило больше 90%, у Adyen похоже, но они смогли немного отыграться. При том, что revenue у компаний растёт из года в год.
Я не знаю ни одной компании в нидерландском финтехе, которая бы сейчас не занималась сокращением персонала, в первую очередь в «дорогих» странах ЕС (Нидерланды, Германия, даже Польша). По возможности разработка выносится туда, где дешевле (у меня есть пример с попыткой переноса разработки в Румынию и Португалию). Об инвестициях в развитие (расширение) сейчас не думают, скорее об «инвестициях в сокращение». Как пример, Worldline запланировал потратить четверть миллиона евро в течение трёх лет на сокращение персонала (и компенсации за это). Открытые вакансии теперь воспринимаются как исключение.
Ещё хуже обстоят дела у «консультантов» (фрилансеров на местном аналоге ИП, называемом ZZP): их ещё добили регуляцией с января этого года. Все консультанты (порядка двадцати человек), с кем я успел пообщаться на мероприятиях в местной специализирующейся на финтехе консалтинговой компании, спрашивали нет ли у нас открытых вакансий «на постоянку»: если раньше интересовали только рейты, то теперь просто нужно место. Не забываем, что у многих виза привязана к работе и зарплате (виза для высококвалифицированных мигрантов), что вынуждает выходить на рынок и соглашаться на более низкую зарплату.
Как итог, по субъективной оценке разница по предлагаемой зарплате на одинаковую позицию между июнем 2023 и июнем 2025 составила порядка –20%. При этом открытых вакансий (и новых продуктов) за последние полтора года почти нет.
А как вы видите на приведённых диаграммах Dependency Tracking (отслеживаение уязвимостей в уже использующися сборках и образах, которые были выявлены после прохождения Security Gate)?
Например, в ситуации, когда была найдена уязвимость в сторонней зависимости, которая используется в образе, задеплоенном несколько недель или месяцев назад, и о которой не было известно сканерам (той же Trivy) на момент прохождения Security Gate.
У Dell корпоративные Latitude были очень хороши: модульные (можно заменить / добавить что угодно на стандартных разъёмах), легко ремонтируются, крепкие металлические корпуса.
Latitude 7490 до сих пор пользуюсь, с Дебиан из коробки работает всё железо, даже встроенный LTE-модем.
А Precision всё-таки «гробики» были, очень уж тяжёлые и большие.
Testplane выглядит как Ашот (от yandex-qatools) as a Service.
На HTTP сервер, как уже отметили выше, не тянет, только на TCP.
Хорошо было бы рассмотреть, как использовать уже имеющийся в JDK
com.sun.net.httpserver.HttpServer
в неблокируещем режиме, и, например, с использованием Virtual threads. Хотя, похоже, всё это сведётся к банальной строчкеserver.setExecutor(Executors.newVirtualThreadPerTaskExecutor())
.Векторный API уже доступен в Java начиная с 17 LTS (с 16 как preview).
Проект девять лет не обновлялся. Подозреваю, issues уже не разбираются, да и, скорее всего, никто его не проверял с включённым
-Werror=all
.Есть telegram-curses (на базе ncurses TUI) от того же автора, что и telegram-cli. Этот клиент активно обновляется. Ну и вышеупомянутый tgt, если TUI не подходит, и хочется хоткеев. Оба (что нисколько не удивительно) являются обёрткой над официальной td-lib от команды Телеграм, разве что tgt, так как написан на Rust, использует Rust-обёртку над библиотекой от того же автора, что и сам клиент.
А Я.Браузер (который как раз на основе Chromium) в Аркадии же лежит? Не пробовали большой проект из Аркадии в SourceCraft перенести и производительность измерить?
Кажется, нужна статья от вас про актуальные компетенции админов ЦОДа и состояние рынка найма. Статей, как запрыгнуть в IT, как и курсов с рекламой, пруд пруди. Но я не видел ни одной про инженеров ЦОДа (кажется, на трёхмесячных курсах этом не учат).
У Яндекса уже лет восемь как нейронки в основе поиска. Или вы про отображение результатов на СЕРПе через текстогенератор?
Я сразу, как увидел JSON, захотел поинтересоваться: а чего не CSV? Парсер и генератор сильно проще, типы вам не нужны (если все значения—строки).
Тут в чём проблема: id платежной связки можно инвалидировать только если он выдан самой Визой (так называемые scheme tokens, которые выглядят как номер карты, только другой).
С токенами, выданные платёжным шлюзом, так не получится: схема о них ничего не знает, знает (должна знать) только про идентификатор опорного платежа.
У вас тут Сбер присутствует как три совершенно разные, и, формально, не связанные между собой сущности: Сбер-платёжный-шлюз, Сбер-эквайер и Сбер-банк-выпустивший-карту. Между двумя последними должна ещё быть схема (НСПК + Мир), но привет, Сбер!
Токен (id платежной связки) возвращает шлюз (могла бы вернуть схема, но я не знаю, есть ли у Мира scheme tokens). Соответственно, токеном владеет только шлюз: он умеет сопоставить токен с карточными данными и «опорной» транзакцией—той, на которую был выдан токен, и идентификатор (RRN) которой отправляется в эквайера. Эквайер мог бы поделиться этими данными с банком-выпустившим-карту (и таки Visa, например, требует этот идентификатор, а, значит, его можно сделать доступным банку-выпустившему-карту), но тут уже внутренняя кухня Сбера.
Токен можно настроить разными способами, в том числе ограничив частоту применения (зависит от конкретного шлюза). И с токеном может ходить как сам мёрчант (расписание у мёрчанта), так и платёжный шлюз сам хранит расписание и списывает деньги (но не все шлюзы так могут).
Это вы ещё про card-on-file и unscheduled card-on-file не слышали, хотя, наверное, пользуетесь. Тут вообще никаких проверок: ваши карточные данные просто хранятся у магазина, а в PSP приходит файлик с номером карты и сколько списать.