Про SWIFT, ISO20022 и жажду на­жи­вы

Аватар пользователя beck

Мно­гие знают (чи­та­ли мои опусы), но я на вся­кий слу­чай на­пом­ню, я до­воль­но много лет ра­бо­тал со SWIFT и непо­сред­ствен­но в SWIFT как ин­же­нер под­держ­ки, ана­ли­тик, кон­суль­тант, тре­нер, раз­ра­бот­чик, в общем, за­ни­мал­ся мно­ги­ми ве­ща­ми. 

Нынче я ра­бо­таю ана­ли­ти­ком в кон­то­ре, ко­то­рая пишет про­грамм­ное обес­пе­че­ние для цен­тро­бан­ков, рас­чёт­ных пла­тёж­ных си­стем, си­стем мгно­вен­ных пла­те­жей, и, в числе про­чих ак­тив­но­стей мы раз­ра­ба­ты­ва­ем стан­дар­ты и фор­ма­ты для обес­пе­че­ния ра­бо­ты всех этих си­стем и биз­нес про­це­дур для раз­лич­ных стран (наши про­дук­ты ра­бо­та­ют более чем в 50 стра­нах мира). В том числе мы много и плот­но об­ща­ем­ся со SWIFT по во­про­сам сов­ме­сти­мо­сти фор­ма­тов и стан­дар­тов со­об­ще­ний, вы­ра­бот­ки новых стан­дар­тов и про­чим по­доб­ным во­про­сам.

Неболь­шое вве­де­ние про то, как во­об­ще пла­тёж­ные си­сте­мы ра­бо­та­ют и при­чём тут фор­ма­ты со­об­ще­ний. Прин­ци­пи­аль­но есть две схемы,
(1) це­поч­ка, когда день­ги пе­ре­прав­ля­ют­ся от де­би­то­ра кре­ди­то­ру через участ­ни­ков по оче­ре­ди и
(2) ра­бо­та через цен­траль­ных кли­рин­го­вый узел, когда участ­ни­ки от­прав­ля­ют свои со­об­ще­ния в цен­траль­ную си­сте­му, а она уже сама рас­кла­ды­ва­ет пла­те­жи и учи­ты­ва­ет по­зи­ции участ­ни­ков. 

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

Вто­рая схема тре­бу­ет вы­пол­не­ния неко­то­рых пред­ва­ри­тель­ных при­се­да­ний, самым глав­ным из ко­то­рых ко­то­рых яв­ля­ет­ся усло­вие "под­клю­чить­ся к цен­траль­ной си­сте­ме" (как под­клю­чить­ся, на­пря­мую или через участ­ни­ка рас­чё­тов не важно, глав­ное, что все участ­ни­ки долж­ны иметь до­ступ к цен­траль­ной си­сте­ме).

Оче­вид­но, что любые вза­и­мо­дей­ствия между боль­шим ко­ли­че­ством участ­ни­ков тре­бу­ют неких еди­ных стан­дар­тов оформ­ле­ния бизнес-​процедур, а также еди­ных фор­ма­тов со­об­ще­ний.

Таким об­ра­зом, для каж­дой такой цен­траль­ной си­сте­мы (далее я буду ис­поль­зо­вать тер­мин Market Infrastructure -- MI), ис­поль­зу­ют­ся свои стан­дар­ты и фор­ма­ты, свои обо­зна­че­ния и пра­ви­ла для но­ме­ров сче­тов и иден­ти­фи­ка­ции как участ­ни­ков, так и ко­неч­ных бе­не­фи­ци­а­ров рас­чё­тов. Всё это опре­де­ля­ет ре­гу­ля­тор MI, обыч­но это пла­тёж­ная си­сте­ма стра­ны (или объ­еди­не­ния несколь­ких стран в ре­ги­оне, тогда пра­ви­ла уста­нав­ли­ва­ют цен­тро­бан­ки этих стран сов­мест­но).

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

Оче­вид­но, что за­да­чи вы­ра­бот­ки фор­ма­тов и стан­дар­тов, а также общих прин­ци­пов бизнес-​процедур  для транс­гра­нич­ных об­ме­нов со­об­ще­ни­я­ми долж­ны неким об­ра­зом ко­ор­ди­ни­ро­вать­ся между всеми участ­ни­ка­ми во всём мире. И дей­стви­тель­но, SWIFT, со­здан­ный в 1972 году, дол­жен был ре­шить эту за­да­чу, вы­ра­бо­тав еди­ные фор­ма­ты и стан­дар­ты. Имен­но тогда и по­яви­лись стан­дар­ты FIN MT.

С те­че­ни­ем вре­ме­ни их стало не хва­тать (ак­тив­но­сти из­ме­ня­лись и рас­ши­ря­лись) и была сде­ла­на по­пыт­ка пре­об­ра­зо­вать FIN MT в стан­дарт ISO15022. К со­жа­ле­нию, этот стан­дарт раз­ра­ба­ты­ва­ли со­всем дру­гие люди, ко­то­рые уже не пом­ни­ли (а то и вовсе не по­ни­ма­ли) того, что было рань­ше, кроме того, хо­те­ли со­хра­нить сов­ме­сти­мость с преды­ду­щи­ми фор­ма­та­ми, и в ре­зуль­та­те по­лу­чи­лось, мягко го­во­ря, не очень.

Про­стей­ший при­мер: име­но­ва­ние пла­те­жа. Име­но­ва­ний пла­те­жа есть два, между двумя бли­жай­ши­ми точ­ка­ми в рам­ках це­поч­ки (point-​to-point) и между на­ча­лом и кон­цом в це­поч­ке (end-​to-end).

Для point-​to-point было преду­смот­ре­но поле 20 -- Transaction Reference Number из 16 сим­во­лов в 4-ом блоке со­об­ще­ния (это блок непо­сред­ствен­но фи­нан­со­вой ин­фор­ма­ции), но потом ока­за­лось, что тран­зак­ций в одном со­об­ще­нии может быть несколь­ко, а для end-​to-end пред­ло­жи­ли ис­поль­зо­вать поле Message User Reference (MUR) в 3-м блоке (поль­зо­ва­тель­ские слу­жеб­ные па­ра­мет­ры со­об­ще­ния). 

И даль­ше на­ча­лось...

МТ103: кли­ент­ский оди­нар­ный пла­тёж, поле 20 на­зы­ва­ет­ся "Ре­фе­ренс от­пра­ви­те­ля"

МТ102: кли­ент­ский мно­же­ствен­ный пла­теж, когда в одном со­об­ще­нии может быть несколь­ко тран­зак­ций, поле 20 на­зы­ва­ет­ся "Ре­фе­ренс файла", т.е. общий ре­фе­ренс на всю пачку, но при этом на каж­дой тран­зак­ции в пачке есть поле 21, ко­то­рое и на­зы­ва­ет­ся "Ре­фе­ренс тран­зак­ции". 

МТ200: бан­ков­ский пе­ре­вод, поле 20 так и оста­лось "Ре­фе­ренс тран­зак­ции".

МТ202: бан­ков­ский пе­ре­вод для под­креп­ле­ния счёта кли­ен­та, поле 20 опять на­зы­ва­ет­ся "Ре­фе­ренс тран­зак­ции", но при этом по­яв­ля­ет­ся поле 21, ко­то­рое на­зы­ва­ет­ся "Свя­зан­ный ре­фе­ренс", в нём пи­шет­ся ре­фе­ренс (поле 20) со­от­вет­ству­ю­ще­го МТ103. 

В ISO15022 была сде­ла­на по­пыт­ка всю эту непо­треб­щи­ну хотя бы немно­го при­че­сать, при­ве­дя к каким-​то оди­на­ко­во­стям, но как мы видим, по­пыт­ка кон­чи­лась ничем. А поле MUR в тре­тьем блоке, ко­то­рое долж­но ис­поль­зо­вать­ся для end-​to-end ре­фе­рен­са, ис­поль­зу­ют как по­па­ло, более того, по­сколь­ку тре­тий блок не вхо­дит в фи­нан­со­вую ин­фор­ма­цию, его и вовсе иг­но­ри­ру­ют при даль­ней­шей пе­ре­сыл­ке.

Потом по­яви­лись стан­дар­ты ISO20022, и в них стало ещё хуже. С одной сто­ро­ны в каж­дом со­об­ще­нии по­явил­ся User Header Block с кучей полей, куда можно было бы за­тол­кать ре­фе­рен­сы тран­зак­ций, с дру­гой сто­ро­ны в блоке фи­нан­со­вой ин­фор­ма­ции тоже по­яви­лись какие-​то поля для ре­фе­рен­сов, и всё это непо­нят­но как кор­ре­ли­ру­ет с преды­ду­щим FIN. Про ISO20022 и его при­ко­лы также можно на­пи­сать от­дель­ную юмо­ри­сти­че­скую ста­тью, но, боюсь, она будет силь­но спе­ци­фи­че­ской и неин­те­рес­ной боль­шин­ству чи­та­те­лей.

Надо сде­лать одно важ­ное за­ме­ча­ние. С са­мо­го на­ча­ла SWIFT раз­ра­ба­ты­вал­ся как си­сте­ма пе­ре­да­чи  транс­гра­нич­ных пла­те­жей (со­об­ще­ний) и никак не впи­сы­вал­ся в ло­каль­ные пла­тёж­ные си­сте­мы, каж­дый раз, когда тре­бо­ва­лась неко­то­рая сов­ме­сти­мость, либо де­ла­лись ужа­са­ю­щие из­вра­ще­ния (вроде на­ше­го RUR6), либо SWIFT спе­ци­аль­но до­ра­ба­ты­вал (за очень боль­шие день­ги) свои си­сте­мы для об­ра­бот­ки таких ло­каль­ных стан­дар­тов. 

Время шло, и к на­ча­лу 21 века прак­ти­че­ски все ло­каль­ные пла­тёж­ные си­сте­мы внед­ри­ли свои фор­ма­ты, ос­но­ван­ные на ISO20022, ко­то­рый и стал про­мыш­лен­ным стан­дар­том пе­ре­да­чи фи­нан­со­вой ин­фор­ма­ции во всём мире.

Во всём мире, кроме SWIFT. Транс­гра­нич­ные пла­те­жи так и оста­лись в фор­ма­тах FIN. И тут на­ча­ли воз­ни­кать про­бле­мы, свя­зан­ные с кон­вер­та­ци­ей со­об­ще­ний из XML в MT и об­рат­но. XML стан­дар­ты ISO20022 го­раз­до шире, вклю­ча­ют мно­же­ство полей, ко­то­рых нет в FIN MT, а те, ко­то­рые есть, рас­ши­ре­ны, на­при­мер тот же ре­фе­ренс тран­зак­ции стал не 16 сим­во­лов, а 35. 

SWIFT по­след­ние лет 25 рас­ска­зы­ва­ет о том, что вот вот бук­валь­но зав­тра на­сту­пит свет­лое бу­ду­щее с XML, но при этом все эти 25 лет всё это ко­лы­ха­лось ни шатко ни валко. Как я уже ска­зал, все MI пе­ре­шли на ISO20022 со сво­и­ми до­ра­бот­ка­ми и му­ча­лись с пре­об­ра­зо­ва­ни­я­ми в транс­гра­нич­ные об­ме­ны SWIFT. 

Надо ска­зать, что стан­дар­ты ISO20022 на­столь­ко ши­ро­ки, что туда можно за­тол­кать прак­ти­че­ски всё, что угод­но, вплоть до соб­ствен­ных рас­ши­ре­ний. Чем все и поль­зо­ва­лись.

Но SWIFT это SWIFT, у них всё вер­тит­ся в го­ло­вах не во­круг того, чего хотят банки, а во­круг того, чего хочет сам SWIFT (точ­нее во­круг того, чего хотят топ-50 ми­ро­вых бан­ков, ко­то­рые и хотят опре­де­лять раз­ви­тие фи­нан­со­вых ком­му­ни­ка­ций).

И вот SWIFT вы­ка­тил FINplus, ко­то­рый был при­зван за­ме­нить FIN, новая тех­но­ло­гия под­дер­жи­ва­ю­щая до неко­то­рой сте­пе­ни об­рат­ную кон­вер­та­цию в FIN, с тем, чтобы ми­гра­ция по за­мене пошла глад­ко и без­оши­боч­но. Опи­сы­вать FINplus я сей­час не буду (это тема от­дель­ной ста­тьи, если ин­те­рес­но, на­пи­ши­те в ком­мен­та­ри­ях), но на одном мо­мен­те оста­нов­люсь. Как и FIN, FINplus прин­ци­пи­аль­но за­то­чен под пла­тёж­ные це­поч­ки транс­гра­нич­ных со­об­ще­ний и не ра­бо­та­ет с цен­траль­ны­ми кли­рин­го­вы­ми си­сте­ма­ми, в нём прин­ци­пи­аль­но нет со­от­вет­ству­ю­щих полей и ко­до­вых слов. Да, путём раз­ных из­вра­ще­ний, можно одно в дру­гое за­тол­кать, но это, мягко го­во­ря, тре­бу­ет очень зна­чи­тель­ных на­клад­ных рас­хо­дов и не все­гда по­лу­ча­ет­ся кор­рект­но, в смыс­ле даль­ней под­держ­ки, рас­ши­ре­ния и мас­шта­би­ру­е­мо­сти.

Кроме того, SWIFT вы­ка­тил тех­но­ло­гию, ко­то­рую он на­звал "My standards". На ос­но­ве стан­дар­тов ISO20022 можно раз­ра­ба­ты­вать свои огра­ни­че­ния на типы со­об­ще­ний, за­гру­жать их в цен­траль­ный дви­жок SWIFT и в рам­ках своей MI по­лу­чать ра­бо­та­ю­щую ло­каль­ную ин­фра­струк­ту­ру об­ме­на со­об­ще­ни­я­ми, ис­поль­зуя SWIFT как транс­порт­ную си­сте­му и тре­тью неза­ви­си­мую сто­ро­ну с кон­тро­лем син­так­си­са и се­ман­ти­ки со­об­ще­ний, а также ауди­та, аутен­ти­фи­ка­ции , огра­ни­че­ния до­сту­па и про­чих ко­шер­ных вещей, ко­то­ры­ми сла­вен SWIFT. Нужно за­ре­ги­стри­ро­вать свою за­кры­тую груп­пу, в ней от­дель­ный сер­вис, раз­дать прав­да до­сту­па, опре­де­лить па­ра­мет­ры, за­ре­ги­стри­ро­вать участ­ни­ков... Ра­зу­ме­ет­ся, всё это стоит денег, и нема­лень­ких денег. Ну и у этих "Моих стан­дар­тов" есть кучка непри­ят­ных огра­ни­че­ний, но в приц­ни­пе с ними жить можно.

Затем SWIFT решил под­мять под себя и ло­каль­ные рынки. С этого мо­мен­та на­чи­на­ет­ся самое ин­те­рес­ное. 

Итак, SWIFT раз­ра­бо­тал под­мно­же­ство ISO20022, ко­то­рое он обо­звал ISO Acceleration Pack (в де­ви­че­стве High Value Payments plus -- HVPS+). Этот набор со­об­ще­ний с одной сто­ро­ны был пред­на­зна­чен для ра­бо­ты в ло­каль­ных MI, а с дру­гом сто­ро­ны был мак­си­маль­но сов­ме­стим с FINplus. Чтобы можно было бес­шов­но сты­ко­вать транс­гра­нич­ные пла­те­жи с внут­рен­ни­ми.

И те­перь SWIFT пы­та­ет­ся на­гнуть все цен­тро­бан­ки и MI с тем, чтобы они у себя за­ме­ни­ли свои соб­ствен­ные уже го­то­вые и ра­бо­та­ю­щие фор­ма­ты/стан­дар­ты на SWIFT-​овый IAP, и за это за­пла­ти­ли в SWIFT денег. По­то­му что SWIFT им готов всё это до­ра­бо­тать и вы­дать ука­за­ния ре­ко­мен­да­ции, как у них всё долж­но быть. Ну и за­од­но SWIFT даст неболь­шую скид­ку на ис­поль­зо­ва­ние "My standards", ведь без него это всё не за­фу­ры­чит.

Цен­тро­бан­ки от таких ра­дост­ных пер­спек­тив обо­мле­ли и с ото­ро­пью взи­ра­ют на этот празд­ник иди­о­тиз­ма, густо при­прав­лен­ный жаж­дой на­жи­вы. Про­бле­ма тут не толь­ко в том, чтобы в цен­траль­ной си­сте­ме по­ме­нять об­ра­бот­ку фор­ма­тов, про­бле­ма в том, что все участ­ни­ки долж­ны в своих си­сте­мах также по­ме­нять об­ра­бот­ку фор­ма­тов. А это за­да­ча, ко­то­рую ре­ша­ют долго, труд­но, очень до­ро­го, и самое глав­ное, в ней нет ни­ка­ко­го смыс­ла, так как уже всё много лет назад сде­ла­но и ра­бо­та­ет.

Чем всё это за­кон­чит­ся, я не знаю, ско­рее всего ничем, про­сто по­то­му что в каж­дой стране есть свой ре­гу­ля­тор, ко­то­рый и ре­гу­ли­ру­ет пра­ви­ла и по­ряд­ки, а также вы­те­ка­ю­щие из них фор­ма­ты и стан­дар­ты. На­вер­ное лет 20 назад, на волне все­об­щей гло­ба­ли­за­ции, это на­чи­на­ние бы про­ка­ти­ло, но не сей­час, когда идёт об­рат­ный про­цесс с мак­си­маль­ным раз­гра­ни­че­ни­ем внут­рен­них пла­тёж­ных си­стем и внеш­них.

У SWIFT есть ещё па­роч­ка таких же огол­те­лых ини­ци­а­тив, но про них я на­пи­шу как-​нибудь в дру­гой раз.

Ав­тор­ство: 
Ав­тор­ская ра­бо­та / пе­ре­во­ди­ка

Комментарии

Аватар пользователя alx_me
alx_me (10 лет 10 месяцев)

+1. Так о том и речь! Афф­та­ры и про­да­ва­ны XML его за­тал­ки­ва­ют ма­на­ге­рам как уни­вер­саль­ный фор­мат дан­ных! А он во­об­ще та­ко­вым не яв­ля­ет­ся. Это фор­ма­тер дан­ных. Без кучи спе­ци­фи­ка­ций он во­об­ще ни­ко­му не упал. И его тащат для га­лоч­ки в прайс-​листе - у нас па­фос­ный XML, с вас + 100 денег. 8-D Но ко­де­ры уже на­со­вы­ва­ют xml. Когда без него даже s-​expression лучше. А народ уже на­би­га­ет на со­здан­ный бренд. Слава богу, что json успел кто-​то боль­шой про­да­вить. А то бы на­елись. И как мы без xml жили не ясно. ini и тот лучше.

Аватар пользователя beck
beck (9 лет 8 месяцев)

это всего лишь транс­порт­ное пред­став­ле­ние дан­ных

В дан­ном слу­чае это не так.

Аватар пользователя jsecoder
jsecoder (3 года 3 месяца)

Говно то он может быть и говно, но все­гда будут об­ла­сти где лучше вы­би­рать XML из-за на­ли­чия уже го­то­вых стан­дар­тов, ре­а­ли­зо­ван­ных во всех ос­нов­ных язы­ках про­грам­ми­ро­ва­ния. Для yaml нет об­ще­при­знан­ных ISO стан­дар­тов для опи­са­ния схем или циф­ро­вых под­пи­сей, при раз­ра­бот­ке API в об­ла­сти в ко­то­рой об­ще­при­знан­ные стан­дар­ты важны, yaml не смо­жет за­ме­нить XML.

Аватар пользователя alx_me
alx_me (10 лет 10 месяцев)

Для всего есть ре­а­ли­за­ция. А есть те, кто хотят на­ва­ри­вать­ся на "самых со­вре­мен­ных", "но­вей­ших", "про­рыв­ных" и от­то­го до­ро­гих, но ни­ко­му не нуж­ных ре­ше­ни­ях. Ведь у вас всё на yaml, а ВЕСЬ МИР ДАВНО НА XML!!!. 8-D слава богу hal сдох! Хотя и был на xml. И про­дав­ли­ва­ет­ся не через тех­ни­че­ские, а через ад­ми­ни­стра­тив­ные уров­ни. Ибо па­фос­но и эф­фек­тив­но (и тебе за­не­сём). А какие там пре­зен­та­ции! Ваша те­ку­щая си­сте­ма плоха, по­то­му что вы ре­тро­гра­ды, а у нас xml. на во­прос а что ещё сле­ду­ет за­га­доч­ное мол­ча­ние. Ну или яркая пе­ре­зен­та­ция с фур­ше­том для ад­ми­ни­стра­ции. ;-)

S-​expression пять­де­сят лет уже. YAML по­мень­ше. json рань­ше или од­но­вре­мен­но с xml по­явил­ся. Но надо же как-​то от­ли­чить­ся, верно? Боль­ше ско­бо­чек богу ско­бо­чек! Нет стан­дарт­ной ре­а­ли­за­ции. 8-D Да уж.

Аватар пользователя И-23
И-23 (9 лет 6 месяцев)

Смай­ли­ки — это lisp.

Аватар пользователя alx_me
alx_me (10 лет 10 месяцев)

К со­жа­ле­нию есть уже такие об­ла­сти где всё им за­га­же­но. Но вот на при­ме­ре hal-а на­де­юсь что все они сдох­нут. ;-)

Аватар пользователя Bigata
Bigata (2 года 9 месяцев)

Ух ты, какие ин­те­рес­ные ко­сты­ли автор опи­сы­ва­етsmile1.gif

XML пар­сить по­труд­нее будет, чем plain text.

Аватар пользователя beck
beck (9 лет 8 месяцев)

XML пар­сить по­труд­нее будет, чем plain text.

На­обо­рот. 

Даже тупо ре­гу­ляр­ка­ми XML пар­сить проще.

Я уже не го­во­рю про вы­со­кие тех­но­ло­гии в виде грам­ма­тик и ко­неч­ных ав­то­ма­тов. )))

Аватар пользователя vambr
vambr (12 лет 3 месяца)

> тупо ре­гу­ляр­ка­ми XML пар­сить проще

О. А можно при­мер про­стой ре­гу­ляр­ки для пар­син­га эк­се­ме­ля? Чисто фор лулз эк­зампл?

Аватар пользователя alx_me
alx_me (10 лет 10 месяцев)

;-)

Аватар пользователя ktrace
ktrace (3 года 2 месяца)

Ну можно и про­стых при­ме­ров. Но так-​то есть XSLT и ре­гу­ляр­ки в него встро­е­ны.
https://xsltdev.ru/recipes/ispolzovanie-​regularnyh-vyrazheniy/

Аватар пользователя vambr
vambr (12 лет 3 месяца)

А вот и лулзы под­ка­ти­ли.

Аватар пользователя ktrace
ktrace (3 года 2 месяца)

Дык, как за­ка­зы­ва­ли.

Аватар пользователя beck
beck (9 лет 8 месяцев)

Мне надо было сде­лать ге­не­ра­тор от­чё­тов для на­хож­де­ния несо­от­вет­ствий при ге­не­ра­ции кол­лек­ций дан­ных  в xsd-​схемах ISO20022. 

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

Аватар пользователя alx_me
alx_me (10 лет 10 месяцев)

:-) если пошла речь про "ре­гу­ляр­ки" для "пар­син­га" xml тут же всё по­нят­но. Тут очень мно­гие на­елись ин­тер­прай­за с самым "стан­дарт­ным в мире фор­ма­том". Не надо. Рад что вам за этот ге­мор­рой за­ме­ча­тель­но пла­тят. Ро­стов­щи­ки во­об­ще люди с одной сто­ро­ны серъ­ёз­ные, с дру­гой как дети малые. Во­об­ще го­во­рить про xml как та­ко­вой, как про про­то­кол это пол­ная ересь. xml это фор­ма­тер. Всё. Без со­гла­ше­ний по всем полям он ни­че­го не зна­чит, а с со­гла­ше­ни­я­ми сам xml будет за­ни­мать сле­до­вое ко­ли­че­ство ло­ги­ки. yaml, на­при­мер во­об­ще "пар­сить" не надо. Читай по "стро­кам" и все дела. Проще не бы­ва­ет. И во­об­ще надо при­смат­ри­вать­ся вни­ма­тель­но. Если фор­мат­тер про­то­ко­ла ре­а­ли­зу­ет ре­кур­рент­ную мо­дель, то он ско­рее всего во­об­ще не нужен. Тот про с xml сде­лал свой "стан­дарт­ный про­то­кол" 8-D и смог "это" про­дать кли­ен­ту, тот то же самое сде­ла­ет без xml в два раза быст­рее и в три раза де­шев­ле.

Аватар пользователя ktrace
ktrace (3 года 2 месяца)

YAML не толь­ко пар­сить не надо, его не надо ис­поль­зо­вать.
https://habr.com/ru/articles/710414/

Аватар пользователя ng
ng (8 лет 9 месяцев)

Спа­си­бо! Про­чи­тал первую рас­шиф­ров­ку, во­ло­сы вста­ли дыбом. По­след­ний раз так дыбом вста­ва­ли, когда для сбор­ки какого-​то про­ек­та по­на­до­бил­ся питон имен­но вер­сии 3.7, ни в плюс ни в минус какой-​то от­кры­тый софт не со­би­рал­ся.   

Аватар пользователя alx_me
alx_me (10 лет 10 месяцев)

8-D обор­жал­ся. json про­да­ваш­ка про­да­ёт. Уве­рен что xml он про­даст ещё лучше - там пи­ро­ги жир­нее. 8-D. Одно хо­ро­шо. json лучше xml. Но где "ад S-​expression"? Без этого не усну. 8-D

Аватар пользователя Sergio128
Sergio128 (6 лет 7 месяцев)

А как вы этот ямл до­ку­мент, на­при­мер, ва­ли­ди­ру­е­те на со­от­вет­ствие схеме дан­ных? Как во­об­ще схема дан­ных в нем рас­ша­ри­ва­ет­ся между за­ин­те­ре­со­ван­ны­ми ли­ца­ми?

Аватар пользователя thefish
thefish (10 лет 1 неделя)

Обыч­но ис­поль­зу­ет­ся OpenAPI

Аватар пользователя vGimly
vGimly (10 лет 1 месяц)

Осо­бен­но ве­се­ло ста­но­вит­ся пар­сить ре­гу­ляр­ка­ми XML на десяток-​другой ги­га­байт...

Хотя мне по­па­дал­ся и torrent фай­лик на несколь­ко де­сят­ков ги­га­байт (скра­пинг по­пу­ляр­но­го torrent-​трекер сайта).
При­шлось пи­сать свой "по­точ­ный" пар­сер bencoded чтобы это пе­ре­ва­рить пер­лом. bdecode \*FILE почему-​то слег­ка при­тор­ма­жи­ва­ло на ма­шине с 1 гигом опе­ра­тив­ки...

Аватар пользователя ktrace
ktrace (3 года 2 месяца)

Ре­гу­ляр­ки это как скаль­пель. Если вам тре­бу­ет­ся вагон скаль­пе­лей, что-​то явно идёт не так.

Аватар пользователя ktrace
ktrace (3 года 2 месяца)

Plain text это не фор­мат об­ме­на дан­ны­ми. Стро­го го­во­ря xml/json/yaml и т.д. это как раз и ре­зуль­тат того, что в plain text ре­ши­ли за­да­чу об­ме­на дан­ны­ми. Пар­сить xml несо­мнен­но удоб­нее, проще (биб­лио­те­ке под это дело выше крыши) и глав­ное - без­опас­нее и на­дёж­нее. При этом xml кроме пре­иму­ществ имеет и недо­стат­ки.
Ну вот на­при­мер вот такое есть https://github.com/nin-​jin/tree.d

Аватар пользователя Stirk
Stirk (11 лет 9 месяцев)

тема крайне уз­ко­спе­ци­а­ли­зи­ро­ва­на, но очень ин­те­рес­ные проф. ню­ан­сы :) 

ин­те­рес­но будет по­чи­тать про­дол­же­ние!

Аватар пользователя Tartarin
Tartarin (9 лет 9 месяцев)

Прямо все как в меме: 

- у нас есть 10 раз­ных стан­дар­тов, ко­то­рые надо под­дер­жи­вать, да­вай­те объ­еди­ним все их функ­ции в один!

- у нас те­перь есть 11 раз­ных стан­дар­тов.

Аватар пользователя BlopAngin7
BlopAngin7 (10 лет 2 недели)

Аватар пользователя Podvoh
Podvoh (9 лет 8 месяцев)

Нда.

Очень на­по­ми­на­ет си­ту­а­цию, когда на волне эн­ту­зи­аз­ма стал со­би­рать ста­нок на шине CAN.

После по­лу­го­да тан­цев с буб­на­ми по­ста­вил про­то­тип в музей "поле чудес" и вер­нул­ся на ана­ло­го­вое управ­ле­ние. Чему без­мер­но рад - де­ше­во, сер­ди­то и глав­ное на­деж­но.

Аватар пользователя kimo161
kimo161 (8 лет 12 месяцев)

Диф­фе­рен­ци­аль­ные урав­не­ния (дви­же­ние, по­верх­но­сти и пр..) удоб­нее и быст­рее ре­шать на ана­ло­го­вых ма­ши­нах.

А шина CAN  вообще задумывалась как интерфейс для управления электрооборудованием транспортных средств.

Аватар пользователя vvs1960
vvs1960 (9 лет 6 месяцев)

ага, вот недав­но ро­си­ян­ский абап про­дви­нул­ся.  Фи­зи­че­ское лицо - PP, или все же FL?

 

Хо­ро­шо же в армии. Хе­ро­во но од­но­об­раз­но. 

Ком­мен­та­рий ад­ми­ни­стра­ции:  
*** от­клю­чен (на­бро­сы, гни­лой жар­гон) ***
Аватар пользователя xtotec
xtotec (8 лет 5 месяцев)

<за­нуд­ство ON>

Есть незна­чи­тель­ная, но су­ще­ствен­ная раз­ни­ца между Physical Person и Foreign Person

<за­нуд­ство OFF>

Аватар пользователя ovod
ovod (12 лет 8 месяцев)

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

Аватар пользователя vvs1960
vvs1960 (9 лет 6 месяцев)

зато на­ло­го­вая рф чудит: мо­ло­дежь и под­рост­ки. 

Ком­мен­та­рий ад­ми­ни­стра­ции:  
*** от­клю­чен (на­бро­сы, гни­лой жар­гон) ***
Аватар пользователя vambr
vambr (12 лет 3 месяца)

sql

Аватар пользователя ovod
ovod (12 лет 8 месяцев)

ага-​ага, тогда зачем у мик­ро­соф­та T-SQL, у орак­ла - PL-​SQL, у пот­сгрес­са - PL/pgSQL и т.д.?

Аватар пользователя vambr
vambr (12 лет 3 месяца)

Для ре­а­ли­за­ции платформо-​зафисимых фишек, оче­вид­но же.

Аватар пользователя ovod
ovod (12 лет 8 месяцев)

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

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

Аватар пользователя vambr
vambr (12 лет 3 месяца)

А язы­ко­вые фишки кон­крет­ной плат­фор­мы это уже не платформо-​зависимые фишки? А так, про­стые sql-​запросы ра­бо­та­ют везде, более слож­ные не об­хо­дят­ся без учёта осо­бен­но­стей ре­а­ли­за­ции кон­крет­ной плат­фор­мы и по­то­му то, что там в син­так­си­се могут быть раз­ли­чия, уже не важно, всё равно при пе­ре­но­се за­про­са на дру­гую плат­фор­му его при­дёт­ся пе­ре­де­лы­вать, ино­гда прям очень силь­но, так что не вижу траб­лов с несов­ме­сти­мо­стью.

Аватар пользователя ovod
ovod (12 лет 8 месяцев)

ну пе­ре­де­лы­вать и в SWIFT пред­ла­га­ют. ну это как если бы microsoft, oracle и postgresql gdg объ­еди­ни­лись и вы­ра­бо­та­ли бы свой еди­ный стан­дарт и за­ста­ви­ли бы каж­дое ло­каль­ное по­де­лие кон­вер­ти­ро­вать­ся в него

Аватар пользователя vambr
vambr (12 лет 3 месяца)

> microsoft, oracle и postgresql gdg объ­еди­ни­лись и вы­ра­бо­та­ли бы свой еди­ный стан­дарт и за­ста­ви­ли бы каж­дое ло­каль­ное по­де­лие кон­вер­ти­ро­вать­ся в него

И по­лу­чи­лось бы как в том эк­се­ме­ле. Стандарт-​то вроде один, но без файла опи­са­ний у тебя не дан­ные а мусор. Сей­час проще. Есть плат­фор­ма, у неё есть свои кон­ку­рент­ные фишки, для их ре­а­ли­за­ции до­де­лан/пе­ре­де­лан общий стан­дарт. Нужны пре­иму­ще­ства кон­крет­ной плат­фор­мы? Изу­чай её от­кло­не­ния от стан­дар­та. Нужно чтобы всё по фен­шую стан­дар­ту? Ни­ва­прос, стан­дарт­ный се­лект асте­риск фром тей­бл­на­ме вере филд1 равно семь ра­бо­та­ет на любой плат­фор­ме. Мне нра.

Аватар пользователя Wanderv
Wanderv (5 лет 2 месяца)

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

Аватар пользователя И-23
И-23 (9 лет 6 месяцев)

Ну дык за­про­сы на­вер­ня­ка не из опи­сы­ва­е­мых демонстрационно-​тестовых (select * from tablename where field =…), а ско­рее что-​то ре­аль­ное («…ещё один sql-​запрос на 90 строк, и я по­про­шу зар­пла­ту ко­ка­и­ном»)?..

Аватар пользователя vambr
vambr (12 лет 3 месяца)

> в тео­рии во­об­ще долж­но ра­бо­тать без раз­ни­цы

Я от та­ко­го оп­ти­миз­ма из­ле­чил­ся во вре­ме­на оны когда про­грам­ма, на­пи­сан­ная в бор­ланд спп, не ском­пи­ли­лась в мел­ко­софт спп. 

Аватар пользователя И-23
И-23 (9 лет 6 месяцев)

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

Аватар пользователя beck
beck (9 лет 8 месяцев)

Вы ни­че­го не по­ня­ли из на­пи­сан­но­го. Штош... бы­ва­ет... 

Аватар пользователя ovod
ovod (12 лет 8 месяцев)

ну так объ­яс­ни­те. зачем, на­при­мер, в усло­ви­ях зер­но­вой сдел­ки стоит обя­за­тель­ное под­клю­че­ние Рос­сель­хоз­бан­ка к SWIFT, если там ужас-​ужас, он всех сво­и­ми стан­дар­та­ми на­ги­ба­ет?

Аватар пользователя beck
beck (9 лет 8 месяцев)

Я со­вер­шен­но не по­ни­маю во­про­са.

Аватар пользователя ovod
ovod (12 лет 8 месяцев)

это ин­тер­нет, вечно тут друг друга не по­ни­ма­ют)

Скрытый комментарий Повелитель Ботов (без обсуждения)
Аватар пользователя Bigata
Bigata (2 года 9 месяцев)

ни­че­го себя я хо­ли­вар раз­вя­зал...

Аватар пользователя Wanderv
Wanderv (5 лет 2 месяца)

И трес­нул мир на­по­по­лам, 

Дымит раз­ло­оом!

На икс­эм­эль идёт брат­ва

В руке с ко­ло­ооом!

Страницы

 
Загрузка...