Forwarded from StringConcat - разработка без боли и сожалений (Евгений)
Немножечко откровений от Капитана Очевидность.
Как вы наверное в курсе, существует 2 способа задания идентификаторов.
- Естественные идентификаторы, которые натурально идентифицируют объект. Н-р СНИЛС, SSN, номер паспорта.
- Суррогатные идентификаторы, которые вводятся для того, чтобы просто различать сущности друг от друга (вообще, некоторые деятели считают идентификаторы протекающей абстракцией, но сейчас не об этом).
Когда-то я пытался опираться на естестенные идшки, но довольно часто что-то шло не так, а именно:
- идентификатор был не совсем уникальный, хотя клялись что такого быть не может
- идентификатор был внесен с ошибкой
- идентификатор оказался изменяемым по мере развития системы и предметной области
- или идентификатор вообще перестал быть идентификатором
Надеюсь вы понимаете, какое количество усилий нужно, чтобы внести подобные изменения в систему
На днях снова приключилась ситуация, когда натуральный идентификатор стал неуникальным. Суть такова. Есть устройство, его серийный номер глобально уникален. Отличный кандидат для естественного ключа. Но вдруг появляется сценарий, когда устройство нужно перенести в другую группу (юрлицо), при этом из старой оно исчезнуть не должно, ибо должна остаться отчетость и история, связаная с ним. И наш уникальный ключ становится уникальным только в пределах группы. Самое фиговое, когда в такой ситуации ключ уже протек в другие системы. Поэтому мое эмпирическое правило - всегда делай суррогатный, даже кажется, что есть отличный кандидат для естественного
Как вы наверное в курсе, существует 2 способа задания идентификаторов.
- Естественные идентификаторы, которые натурально идентифицируют объект. Н-р СНИЛС, SSN, номер паспорта.
- Суррогатные идентификаторы, которые вводятся для того, чтобы просто различать сущности друг от друга (вообще, некоторые деятели считают идентификаторы протекающей абстракцией, но сейчас не об этом).
Когда-то я пытался опираться на естестенные идшки, но довольно часто что-то шло не так, а именно:
- идентификатор был не совсем уникальный, хотя клялись что такого быть не может
- идентификатор был внесен с ошибкой
- идентификатор оказался изменяемым по мере развития системы и предметной области
- или идентификатор вообще перестал быть идентификатором
Надеюсь вы понимаете, какое количество усилий нужно, чтобы внести подобные изменения в систему
На днях снова приключилась ситуация, когда натуральный идентификатор стал неуникальным. Суть такова. Есть устройство, его серийный номер глобально уникален. Отличный кандидат для естественного ключа. Но вдруг появляется сценарий, когда устройство нужно перенести в другую группу (юрлицо), при этом из старой оно исчезнуть не должно, ибо должна остаться отчетость и история, связаная с ним. И наш уникальный ключ становится уникальным только в пределах группы. Самое фиговое, когда в такой ситуации ключ уже протек в другие системы. Поэтому мое эмпирическое правило - всегда делай суррогатный, даже кажется, что есть отличный кандидат для естественного
👍33🤡3
Forwarded from Segment@tion fault
С платформы мониторинга сотрудников WorkComposer утекли 21 миллион скриншотов, где может быть код, пароли и всякое другое NDA. Галерщики в панике.
https://cybernews.com/security/employee-monitoring-app-leaks-millions-screenshots/
https://cybernews.com/security/employee-monitoring-app-leaks-millions-screenshots/
🤩11🤣11🤯2🔥1
Блог*
#prog #rust #dotnet #article Rust panics under the hood, and implementing them in .NET Или немного о том, почему наивная трансляция раскрутки стека в исключения .NET в некоторых случаях вызывала замедление на порядок.
#prog #rust #article
Implementation of Rust panics in the standard library
Реализация паник складывается из двух вещей: генерируемой компилятором информации о действиях, которые необходимо сделать при раскрутке стека, и рантайм-поддержки. Эта статья рассказывает про второе — точнее, про ту часть, которая в std, а заодно рассказывает, почему это так много кода.
Implementation of Rust panics in the standard library
Реализация паник складывается из двух вещей: генерируемой компилятором информации о действиях, которые необходимо сделать при раскрутке стека, и рантайм-поддержки. Эта статья рассказывает про второе — точнее, про ту часть, которая в std, а заодно рассказывает, почему это так много кода.
👍6
Forwarded from Generative Anton
This media is not supported in your browser
VIEW IN TELEGRAM
🤡24😁8🌚3
Forwarded from (Не)занимательная антропология (Alexandra Arkhipova)
Мем сегодняшнего дня
НАСТОЯЩИЙ МАТЕРИАЛ (ИНФОРМАЦИЯ) ПРОИЗВЕДЕН, РАСПРОСТРАНЕН И (ИЛИ) НАПРАВЛЕН ИНОСТРАННЫМ АГЕНТОМ АЛЕКСАНДРОЙ СЕРГЕЕВНОЙ АРХИПОВОЙ, СОДЕРЖАЩЕЙСЯ В РЕЕСТРЕ ИНОСТРАННЫХ АГЕНТОВ ЛИБО КАСАЕТСЯ ДЕЯТЕЛЬНОСТИ ИНОСТРАННОГО АГЕНТА АЛЕКСАНДРЫ СЕРГЕЕВНЫ АРХИПОВОЙ, СОДЕРЖАЩЕЙСЯ В РЕЕСТРЕ ИНОСТРАННЫХ АГЕНТОВ 18+
НАСТОЯЩИЙ МАТЕРИАЛ (ИНФОРМАЦИЯ) ПРОИЗВЕДЕН, РАСПРОСТРАНЕН И (ИЛИ) НАПРАВЛЕН ИНОСТРАННЫМ АГЕНТОМ АЛЕКСАНДРОЙ СЕРГЕЕВНОЙ АРХИПОВОЙ, СОДЕРЖАЩЕЙСЯ В РЕЕСТРЕ ИНОСТРАННЫХ АГЕНТОВ ЛИБО КАСАЕТСЯ ДЕЯТЕЛЬНОСТИ ИНОСТРАННОГО АГЕНТА АЛЕКСАНДРЫ СЕРГЕЕВНЫ АРХИПОВОЙ, СОДЕРЖАЩЕЙСЯ В РЕЕСТРЕ ИНОСТРАННЫХ АГЕНТОВ 18+
😁14🤡9🎉3🔥1