Что такое uid в чеке.  Что такое ID (UID)? Уникальный идентификатор начисления или платежа

Видел на форуме и сайте кучу вопросов, таких как:
- "А че такое уид??"
- "Зачем нужен uid?"
- "Где взять этот uid?"
-
- "Расскажите про уид!"

Итак, начнем...
UID

-

UID.
-


-





По определению, UID-тип

характеристики:
-

-


-

UID-тип это объект типа TUidType









UID можно в любое время посмотреть, зайдя например в программу SmartFileMan, и нажав клавишу "5" на нужном файле.На экране появятся все три UID-a...


DimonVideo DimonVideo

2007-05-01T01:49:56Z 2007-05-01T01:49:56Z

Что такое UID. И с чем его едят.

- Видел на форуме и сайте кучу вопросов, таких как:
- "А че такое уид??"
- "Зачем нужен uid?"
- "Где взять этот uid?"
- "Что такое, и с чем едят uid?"
- "Расскажите про уид!"
И вот, решил написать статейку для непосвященных =)
Итак, начнем...
UID - это составной идентификатор, с помощью которого идентифицируются объекты в Symbian OS. UID состоит из трех 32-битных отдельных чисел. Эти числа, называются компонетами
UID и обычно когда о них заходит речь, на них ссылаются как на UID1-, UID2- и UID3-компоненты. В Symbian OS UID"ы используются в самых различных случаях:
- UID-ы используются для идентификации типов различных объектов как во время исполнения так и во
время загрузки. Например исполняемые файлы, DLL, файловые хранилица и многое другое имеет свои собственные
UID.
- UID-ы используютя для проверки, что объект, который предполается загрузить обеспечит совместимый
и ожидаемый от него интерфейс.Таким образом можно проверить, что DLL относится к ожидаемому типу
или что используемое файловое хранилище имеет строго определнный тип.
- UID-ы - это значения которые однозначно связывают документы и приложения для их обработки. Например,
графические приложения с определенной программой их просмотра.

В Symbian OS UID-ы используются повсеместно для разнообразных идентификаций типов
файлов и увязки файлов с теми или иными приложениями. Конечно, пользователю более понятны обычные
имена файлов и Symbian OS гибко поддерживает имена файлов различной длинны. Но с точки зрения системы,
32-битные номера обеспечивают большую однозначность, систематичность и более легкую идентификацию.
Поэтому UID-ы являются фундаметальной характеристикой ОС.

По определению, UID-тип объекта состоит из трех отдельных UID-ов используемых
в комбинациях. Составные компоненты UID-ов называются UID1, UID2 и UID3 имеют следующие основные
характеристики:
- UID1- может быть рассмотрен как идентификатор на уровне системы; например, исполняемые файлы,
DLL, файловые хранилища все различаются по UID1.
- UID2-различия между объектами имеющими один и тот же UID1 и могут быть рассмотрены как идентификатор
интерфейса; например, статический интерфейс (разделяемая библиотека) и полиморфический интерфейс
(приложение или встраеваемая программная оболочка) DLL-ки отличаются по UID2.
- UID3-идентифицирует объекты, имеющие конкретный UID2 и может рассматриваться как идентификатор
проекта; например, UID3 может быть разделен между всеми объектами, принадлежащими данной программе,
включая библиотеки, если имеются, DLL-ки каркасов,и все документы.

UID-тип это объект типа TUidType , которой можно создать из комбинаций всех
или некоторых из трех возможных UID-ов. Если переменная имеет прелставляет собой UID, то можно выяснить
и значения составляющих её компонентов UID1, UID2 и UID3.

Объект в Symbian OS и, особенно, многие файлы в Symbian OS могут иметь все, несколько,
или вообще не иметь не одного из трех возможных UID-ов.

Вариант с отсутсвием UID-ов необходим для того, чтобы можно было взаимодействовать
с другими системами, позволяя легко и свободно использовать по назначению в Symbian OS не родные
файлы данных. Symbian OS позволяет создавать настраиваемые файловые ассоциации и идентификации даже
когда UID-ы отсутсвуют. Это делается по расширениям имен файлов.

Каждый "родной" документ должен иметь соотвествующий UID1. его значение задается
приложением, создавщим этот документ.

Необходимым является только UID1, но в большинстве случаев разработчики захотят
определить второй и третий UID-ы для документов, которые создает и использует их приложение. Значения
этих UID используются каркасом архитектуры приложения, чтобы управлять связями между приложениями
и их документами. Например, это позволяет при открытии файла определить и запустить связанное с ним
приложение, а также правильно отображать иконку этого приложения, возле файла документа. И наоборот
это позволяет приложению, отсортировывать свои файлы среди прочих.

UID задается из диапазона 0х01000000 до 0x0fffffff.

UID можно в любое время посмотреть, зайдя например в программу SmartFileMan, и нажав клавишу "5" на нужном файле.На экране появятся все три UID-a...">

Большая часть граждан не разбираются в тонкостях банковской структуры. Каждое платежное поручение содержит аббревиатуры, включающие многозначные номера. Чтобы разобраться в определениях, следует узнать, для чего нужны конкретные значения. Большинство клиентов, получая расчетную документацию, замечают уникальный номер платежа СУИП Сбербанка, без которого не обходится ни один бланк.

Что такое СУИП?

Рассматривая каждую электронную квитанцию, плательщик замечет данную аббревиатуру. СУИП — это уникальный идентификатор конкретной платежной документации, проведенной в структуре Сбербанка. Благодаря указанному номеру кредитно-финансовая организация безошибочно идентифицирует транзакцию.

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

Почему появился уникальный идентификатор платежа?

Аббревиатура стала включаться в платежные электронные бланки с 2014 года. Уникальный номер платежа СУИП включает шестнадцать знаков: первые двенадцать содержит цифры, остальные четыре - заглавные латинские буквы.

Для чего необходим уникальный номер платежа?

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

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

Именно возросшее количество транзакций в электронной системе побудило крупнейшее кредитно-финансовое учреждение страны создать для каждого платежа уникальный код. СУИП поможет точно узнать информацию касательно денежной операции любой категории. Если деньги ушли не по адресу, то с помощью уникального идентификатора можно подкорректировать движение финансов.

Различия между УИП и УИН

Первая аббревиатура это уникальный идентификатор транзакции, содержащий сведения:

  • тип денежного перевода;
  • данные о получающей стороне;
  • документация, предписывающая произвести платеж.

Второе значение показывает уникальный идентификатор начисления, присуждаемый каждой транзакции, проведенной в сторону государственного либо муниципального органа России. Главная цель УИН - получить информацию касательно денег, поступивших в казну госбюджета.

Чтобы проверить номер каждого значения в платежном поручении, следует изучить графу под номером 22. Основное отличие - УИП предназначен для перечисления финансовых средств на счёт негосударственных организаций. УИН формируется соответствующими госорганами типа ФНС, уникальный идентификатор платежа - получающим лицом.

Для заполнения платежного акта следует вписать цифровую двадцатизначную комбинацию, указанную на бланке, предписывающем совершить платеж. Яркий пример - оплата в пользу налоговой, когда требуется основываться на постановлении. Бланк документации будет содержать требуемые реквизиты для заполнения платежки.

Изредка возникают случаи, когда в отделении банка требуется внести на бланк платежного поручения значение УИП, а постановление содержит УИН. Неоднозначная ситуация потребует ввести данные УИП, а Сбербанк проведет финансовую операцию. Современные компьютерные программы, банковские структуры постепенно отказываются от данных аббревиатур в пользу словосочетания «идентификатор платежа».

Как узнать значение уникального кода?

Клиенты Сбербанка могут несколькими способами уточнить персональный номер платежа:

  • устройства самообслуживания - после ввода карты и набора пин-кода следует найти в меню интернет-услуги. Банкомат в конце операции выдаст квитанцию, содержащую требуемый код;
  • набрать номер единого контактного центра;
  • использовать сервис Мобильный банк - отправить смс со словом «ПАРОЛЬ». Код будет разовым, воспользоваться им второй раз не получится.

Правильное заполнение

При заполнении полей платежного акта, кроме уникального номера платежа, следует вписать.

Непосвящённому клиенту Сбербанка сложно разобраться в понятии СУИП. Что это такое в платежном поручении? Для чего нужен этот дополнительный номер? Если говорить понятным языком, то это идентификатор каждого конкретного платёжного документа в электронном варианте. Буква «У» означает уникальный. Совершая любое платёжное действие, вы получаете чек, в котором к прочим данным добавляется набор цифр и букв, который и является идентификатором вашего платежа.

Почему появился СУИП

В марте 2014 любое платёжное поручение начало получать собственный идентификатор. УИН применяется, когда речь идёт о платежах в бюджет РФ. УИП – это идентификатор других платежей. И УИН, и УИП состоят из 20-ти цифр.

Уникальный идентификатор платежа (поле 22)

Исходя из вышесказанного, можно понять, что такое СУИП в чеке Сбербанка. Буква «С» означает название банка. Таким образом Сбербанк сможет идентифицировать любой сделанный в его электронной системе платёж.

Сбербанковский идентификатор состоит из 16-ти знаков. Из них, первые 12 – это комбинация цифирных знаков, последующие 4 – заглавные буквы английского алфавита.

Важно знать, как проверить уникальный номер платежа СУИП Сбербанк. Он указывается в каждом электронном чеке. Примерно в середине квитанции вместе с суммой и данными о кошельке плательщика. СУИП Сбербанк – это номер, имеющий отношение к электронной платёжной системе.

Зачем нужен уникальный номер

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

Важно получить не только ответ на вопрос «Уникальный номер платежа СУИП Сбербанк - что это?», но и понять, что, сохранив квитанцию или переписав данный номер, вы сможете найти свои деньги, куда бы они ни попали либо сделать так, чтобы они пошли по назначению.

Потребность в уникальном электронном номере возникла в связи с большим потоком денежных средств и необходимостью их отслеживания. Сохранив квитанцию, вы сможете, в случае обращения в любой офис Сбербанка или в компанию, куда осуществляли перечисление, найти свой платёж. Это может относиться и к коммунальным службам, и к социальным сетям, и к интернет-магазинам, и к любому другому платежу. СУИП даёт возможность систематизировать денежный поток и выбрать из него нужное.

znatokdeneg.ru

Уникальный идентификатор платежа, Сбербанк УИН, код уникального идентификатора платежа

Чтобы получить уникальный идентификатор платежа в Сбербанке достаточно воспользоваться возможностями банкомата или телефона. В первом случае достаточно зайти в меню, где находятся интернет услуги. Идентификатор и пароль к нему удастся получить в печатном виде на чеке. Перед операцией в банкомат нужно вставить карту и ввести пин-код.

Альтернативный способ – позвонить в службу поддержки банка. Существует и третий вариант – воспользоваться возможностями сервиса «Мобильный банк». Для этого достаточно отправить кодовое слово «пароль» на короткий номер 900. Пароль придет через несколько секунд, но воспользоваться им можно будет только один раз.

Уникальный идентификатор начисления или платежа

Уникальный идентификатор начисления используется в платежных поручениях для перевода сумм в пользу бюджета РФ с 04.02.2014 года. Норма регламентируется приказом Минфина №107, который вышел 12.11.2013 года. УИН состоит из 20-ти цифр, в конце комбинации проставляются символы «///». Для идентификатора в платежном поручении используется поле «Код». Правило распространяется на все платежи в пользу бюджета РФ. Уникальный идентификатор платежа в платежном поручении.

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

Код уникального идентификатора платежа

Код уникального идентификатора платежа выдают налоговые структуры по месту регистрации. По этой причине уточнить нужную комбинацию цифр получится только в территориальном отделении налоговой инспекции вашего населенного пункта. Существуют плательщики, у которых УИН отсутствует как таковой, а государственная налоговая структура по объективным причинам не может сформировать и выдать номер. В таких случаях в поле «Код» указывают «0///». Выданный УИН в обязательном порядке отделяется от идентифицирующей информации символами «///».



www.sravni.ru

Уникальный идентификатор платежа

Платежное поручение предусматривает необходимость правильного заполнения всех строк формы этого документа. Без заполнения всех полей банк может не принять документ к исполнению. Как правило, у организаций не возникает вопросов по заполнению платежных поручений. Однако при уплате налоговых платежей следует знать следующее. Поле 22 платежного поручения предусматривает указание специального кода – так называемого кода УИП (УИН), который мы рассмотрим в статье.

Что такое УИП в платежке

Если мы обратимся к разъяснению того, чем же является указанный реквизит, то правильно он звучит так - уникальный идентификатор платежа (сокращенно УИП). Что это за реквизит и откуда его брать при заполнении платежного поручения, разберемся ниже.

Сначала нужно отметить, что указывать его нужно не всегда, а только в специально установленных случаях, определенных Банком России. Для этого необходимо обратиться к Положению N 383-П, которым регламентированы правила осуществления перевода денежных средств.

Так, УИП указывается в двух случаях:

  • Первый – если он был присвоен получателем денежных средств и доведен до информации плательщика в соответствии с условиями договора. Соответственно, организация при осуществлении платежа будет знать его номер и как им пользоваться. Указанный вид расчета сделан для удобства организаций. Порядок его формирования и методика проверки банком при осуществлении платежа определяются Банком России;
  • Второй – при перечислении налогов и взносов. Налогоплательщиков больше интересует порядок заполнения этого реквизита в случае уплаты налогов, ведь в этом случае он должен знать, где его найти при заполнении этого поля в платежном поручении.

Как узнать УИП

При уплате налогоплательщиками платежей в бюджетную систему РФ в ряде случаев также может потребоваться указать УИП. Однако до осуществления платежа такой идентификатор, как правило, будет известен налогоплательщику. Это связано с тем, что при осуществлении обычных платежей (налогов или авансовых платежей на основании самостоятельного расчета) этот реквизит указывать не требуется, точнее в строке необходимо указывать «0».

Налогоплательщику же будет известен указанный реквизит в том случае, если речь идет об уплате недоимки по налогу, а также пеней и штрафов по требованиям налогового органа, а не обычных платежей. Следовательно, при осуществлении платежей на основании требования налогового органа необходимо проверить, указан ли в документе универсальный идентификатор платежа. Если да, то именно его и нужно внести в строку 22 платежного поручения.

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

Если банк отказывается принимать платежку без указания УИП, можно отметить официальную позицию ведомства - Письмо ФНС России от 08.04.2016 N ЗН-4-1/6133@. В нем указано, что организации достаточно указать свой ИНН, а в поле 22 соответственно оставить «0». В таком случае кредитная организация не вправе будет отказать в осуществлении перевода платежа.

Таким образом, только в том случае, если указание УИП является обязательным, этот реквизит необходимо включить в платежное поручение. Отметим, что он состоит из 20 или 25 цифр и необходим для идентификации соответствующего платежа в государственной системе. Если ошибиться в указанном реквизите, то имеется вероятность, что обязанность по уплате недоимки, пени или штрафа налогоплательщиком будет считаться неисполненной. В таком случае потребуется дополнительное время для выяснения платежа, возможно, начисление пеней будет продолжаться.

Короткое резюме

Резюмируя изложенное о том, где взять уникальный идентификатор платежа, можно отметить, что указывать его нужно налогоплательщику в том случае, если он известен. Если информация о нем отсутствует, то в рассматриваемом поле платежного поручения следует указать «0». Просто оставлять указанное поле без заполнения недопустимо, поскольку платеж может не пройти из-за требований банка.

Недавно компания uCoz проводила конкурс uID-профилей, uid.me – это сайт, где можно быстро создать красивую и оригинальную визитку, вместе с тем это система, которая позволяет войти на любой uCoz-сайт.

Вы можете прямо сейчас перейти на uid.me и оценить сервис.

Что такое uID?

Изначально uID – это глобальная система авторизации для пользователей uCoz. Система полезна тем, что зарегистрировавшись в ней раз, Вы сможете авторизоваться в один клик практически на любом сайте, созданном на uCoz. Администрация популярнейшего бесплатного хостинга решила сделать из этой системы клон-локализацию англоязычного проекта about.me (серьезно, они сами назвали его так в своем блоге на Хабре).

Ниже Вы можете видеть примеры страниц, созданных с помощью сервиса uid.me. Это страницы первых победителей недавнего конкурса.

Возможности uid.me

Страницу-визитку в интернете иметь полезно, но какие конкретно возможности дает нам сервис uid.me от uCoz. Во-первых, оформление – можно установить любой фон, а блок с Вашим именем, подписью и контактами можно переместить в любое место на странице, во-вторых, статистика страницы – можно увидеть количество просмотров Вашей страницы, количество переходов по Вашим ссылкам и источники переходов.

Судя по статьям в официальном блоге компании и комментариях администрации, сервис будет обновляться и дополняться. Хочется, чтобы uid.me дал возможность прикреплять свой домен к персональным страницам.

Зачем мне нужна страница-визитка в Интернете?

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

Думаю, что есть и другие аналоги about.me, но я знаю только один – это lkd.to . Это даже не аналог, сервис на много проще, он дает возможность создавать страницы со списком ссылок на Ваши страницы в социальных сетях. На момент написания статьи на этом сайте доступно 13 тем оформления. Я для своей страницы выбрал такое:

Пишите в комментариях свое мнение о сервисе личных страниц от uCoz uid.me. Можете даже показать свою страницу на этом сайте, прикрепив ссылку к комментарию. Также было бы классно, если бы Вы привели аналоги названных сервисов.

Добрый день, Хабр!

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

Тем, кому интересна только техническая сторона проекта - рекомендуем сразу перейти ко второй части .

ЧАСТЬ 1. Лирическая

Мы - это команда разработки сервиса личных страниц uid.me .
Личная страница - это, например, вот так:


http://uid.me/pavel_kudinov

Тем, кто не знаком с западным аналогом нашего сервиса, следует признаться: проект uid.me начинает свою историю как клон-локализация англоязычного сервиса about.me

История создания

Дело было так. Компания сайт-билдер uCoz, в которой мы трудимся, за 8 лет существования накопила в недрах своих дата-центров более 35 млн профилей, созданных веб-мастерами, а также многочисленными посетителями созданных веб-мастерами сайтов, форумов и блогов.

Всех этих людей объединяет глобальная система авторизации uID:

До сегодняшнего дня каждый человек, зарегистрированный в uCoz, имел профиль такого вида:

Проект about.me был выбран как лучший существующий прототип индивидуальной страницы для каждого пользователя uCoz, отвечающий, на наш взгляд, современному тренду самовыражения обитателей Сети начала XXI века.

Как и в случае about.me , мы даём пользователю:

1. Ставший правилом хорошего тона URL вида uid.me/имя_фамилия , который вполне можно использовать для печати на визитной карточке, указать в качестве домашней страницы в skype, а также упоминать на любом медиа-носителе.

2. Возможность объединить в единый визуальный образ личное фото, фоновое изображение в высоком разрешении, основную информацию о себе (такую как биография и сфера интересов).

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


4. И, наконец, самое интересное: сегодня многие из нас активно присутствуют в социальных сетях. Кому-то ближе форматы Facebook и Вконтакте, кто-то ограничивается микроблогами Twitter и Instagram, кое-кто имеет свой популярный канал на Youtube.

И здесь справедливо правило - чем большую социальную активность проявляет человек, тем острее встаёт вопрос: “какую из социальных сетей считать “главной”?”.

Мы предлагаем использовать uid.me в качестве своеобразной личной визитной карточки онлайн. Наш сервис позволяет привязать к собственному профилю наиболее распространённые социальные сети, и тогда не придётся выбирать - какую именно ссылку дать при новом ценном знакомстве, указать в профиле skype или поставить в подпись на форуме.

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

Кстати, если вы захотите создать личную страницу на uid.me , рекомендуем воспользоваться автоматической регистрацией через социальную сеть. При клике по любой из кнопок “Войти через ” - личная страница будет мгновенно создана без необходимости вводить регистрационную информацию!

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

Вторая версия профилей uid.me , уже находящаяся в разработке, будет иметь главный фокус именно на функции объединения информации из социальных сетей в единый поток с настраиваемым представлением данных.

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

Возможно, это будет выглядеть как-то так:


ЧАСТЬ 2. Техническая

Разрабатывая uid.me под крылом uCoz, мы оказались в довольно необычном положении: с одной стороны, весь код проекта предполагалось написать с чистого листа, с другой стороны, в день релиза проект автоматически становился высоконагруженным, так как должен был импортировать в себя более 20 млн профилей, даже с учётом того, что бот-регистрации и совсем уж древние профили не прошли конкурс.

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

В качестве слагаемых успеха были выбраны:

0. Nginx. Куда без него.

1. База данных, из коробки решающая вопрос распределения данных на несколько серверов + отказоустойчивость при физическом выпадении сервера из кластера по любой причине. В этом качестве, несмотря на активные холивары, была выбрана MongoDB.

2. Гибкая схема данных, позволяющая без потерь проходить первичную и последующие фазы прототипирования функционала. Опять же помог MongoDB, хотя здесь пришлось заплатить ресурсами за удобство, так что получить главный ответ на вопрос: “BSON - это роскошь, или современное средство передвижения?” - ещё предстоит.

Стоит заметить, что исходная mysql база данных пользовательских профилей при конвертации в MongoDB формат выросла в 5 раз. Однако, каждый профиль при этом обогатился внушительным количеством новых данных, связанных с функционалом uid.me , поэтому дело не только в прожорливости гибкой схемы данных BSON.

3. Честно говоря, учитывая современную тенденцию к активному применению динамических JS интерфейсов (а также безмерное уважение к технологическому прорыву, сделанному инженерами Google при разработке V8 Javascript, на порядок обходящему по производительности все существующие скриптовые языки за счёт динамической компиляции в машинный код), закралась шальная мысль применить node.js и замкнуть круг веб-разработки на JavaScript, получив вместе с тем несколько жирных плюшек…

Но решили, что “один проект - одна новая технология, и нам пока что MongoDB ВОТ ТАК хватает ” (с) Александр Соловьев. Кстати, кто не видел этот его доклад - это хит, рекомендуем всем коллективом!

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

4. Тотальная асинхронность и кеширование данных при взаимодействии с социальными сетями.

К слову о прототипе проекта - было замечено, что данные из социальных сетей, полученные сервисом about.me, не обновляются, загружаясь лишь единожды - в момент подключения сервиса. Вероятно, опция обновления кеша доступна VIP пользователям, но нам не удалось добиться от about.me обновления информации. Это навело нас на мысли о том, что стоит по возможности как можно более качественно организовать межсерверное взаимодействие и систему кеширования, чтобы минимизировать риск возникновения схожих проблем в будущем.

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

Конечно, на этапе прототипа вся работа с API была синхронной, но блокировать Hypnotoad воркеры для осуществления API запросов в высоконагруженном проекте - однозначная роскошь и расточительство. К счастью, Mojolicious построен на весьма приличной, как по интерфейсу, так и по реализации, событийной машине, благодаря чему, кстати, каждый воркер в пуле способен параллельно обрабатывать не один (как в случае, скажем, с mod_perl), а десятки параллельных запросов, конечно, при условии, что те содержат значимое количество асинхронного кода.

К слову, учитывая то, что одним из основных “пугающих” аргументов против примененияnode.js является его тотальная асинхронность, - Mojolicious может послужить отличным ментальным мостом, когда вы начнёте разработку в рамках классической синхронной парадигмы, а закончите, как минимум, имея значительную часть гибридного кода (sync + async). Признаться, теперь мы боимся node.js значительно меньше и надеемся применить его в последующих проектах.

Вообще, uid.me делался по принципу “нет велосипедам”, и в жертву Шиве был торжественно принесён целый пласт ископаемых самоделок, возглавляемый широко известным в узких кругах килобайтным макросом “dw ”, с 2005 года верой и правдой служивший нам и близким нам разработчикам и позволивший в трудный час избежать трансцендентного ужаса DBIx::Class. Светлая память.

И всё же, при разработке uid.me родилась одна занимательная поделка - это макрос

Take { … $take->(‘named_callback_slot_1’) ... } process { my $taken = shift; … },

Построенный на Mojo::IOLoop->delay и радикально упрощающий весь цикл операций, связанных с организацией именованных каскадных асинхронных API взаимодействий, включая каскадную обработку исключений (при возникновении интереса - пишите в личное, поделимся).

Возвращаясь к MongoDB

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

1. Классический LAMP проект стартует с классической SQL БД.
2. Если проект становится популярным, он обретает статус «highload», иначе goto 1.
3. Статус «highload» обязывает нас вплотную задуматься о кешировании, шардировании, репликации и
бекапе того, что хранится в SQL БД.
4. Эволюция схемы данных живого проекта становится тем более болезненной, чем больше данных накоплено, и тем более востребованной, чем более популярным оказался проект.
5. В результате всего этого ORM код начинает выполнять функции mutex, сериализации/десериализации данных для memcached, примитивного шардирования, в особо жестоких ситуациях - патчи обеспечения обратной совместимости схемы данных (ибо позволить себе большой сквозной апдейт данных в реальных условиях удавалось далеко не всегда).

Впрочем, довольно о грустном, на дворе были суровые 2000"е.

Начало 2010"х было озарено появлением нескольких NoSQL решений, которые обещали устранить бОльшую часть проблем растущего highload проекта «из коробки». Появление открытых, готовых к использованию NoSQL решений пророчили многие, но, тем не менее, фактическое обретение прекрасного будущего нас приятно удивило.

Посоветовавшись с более экстремальными в плане новшеств коллегами, мы решили пробовать MongoDB .

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

Под применением возможностей по максимуму мы подразумеваем следующее:

1. JSON формат хранения данных позволил не возиться с привычными parent/child/x-связями в схеме данных по поводу и без, ограничившись здравым смыслом. В результате вложенная структура основного объекта user оказалось жирной, но удобной. В неё смело вложили кучу флажков, настроек отображения, мелких связанных списков и всего того прочего, что раньше с ходу приводило к созданию пачки около-user"овых SQL таблиц.

2. В модель данных добавили код общего назначения, который на этапе прототипирования интерфейса позволил крайне приятно наращивать JS функционал: по URL /profile/save стало возможным послать любой JSON, который extend"ил объект пользователя новыми данными, например:

User.save({ "style.profile.top": "20px", "style.caption.tags.color": "rgba(30, 29, 38, 1)", "info.first_name": "Павел" });

Все операции, связанные с деятельностью авторизованного пользователя были упакованы в общую функцию отправки с латентным коллектором в 500 мсек, объединяющим различные атомарные правки в общие пакеты.

В результате, client-side разработчики смогли легко расширять структуру объекта user, просто начиная использовать новые поля.

Конечно, после фазы прототипирования, серверная часть /profile/save была снабжена контекстными фильтрами данных, которые отсекали неизвестные поля и фильтровали значения на предмет корректности.

Осталась только одна проблема - в БД могли храниться пользователи, у которых вообще не существовали некоторые поля, так как последний раз они редактировали свой профиль ещё до того, как эти поля возникли. В идеале, хотелось бы иметь default-значения для каждого поля, которые будут магическим образом появляться в любом объекте, извлекаемом из БД.