Много написано про организацию бд, но ни слова про бэкапы, надеюсь они у вас уже делаются )
Также непонятно как накатываются миграции в таком сетапе (база под каждого клиента, один бэкенд на всех) и как откатываются в случае, если что-то пошло сильно не так при обновлении
Для packer можно писать конфиги в формате hcl и это намного удобнее и читаемее (и привычнее для пользователей terraform)
да и hashicorp давно рекомендует писать hcl конфиги
As of version 1.7.0, HCL2 is the preferred way to write Packer templates. You can use the hcl2_upgrade command to transition your existing Packer JSON template to HCL2
range итерирует структуры, которые описаны в статье (слайс/массив, мапа, строка), вне цикла использовать его не получится - он часть синтаксиса. При этом это не "синтаксический сахар" к более длинным конструкциям: заменить его на на что-то другое можно для строк и массивов, но не для мап - т.к. отсутствуют публичные методы для получения итератора мапы.
В этом примере удаление элементов из map во время итерации небезопасно и может привести к ошибкам во время выполнения или неожиданному поведению, поскольку сама map изменяется во время итерации.
Это откуда такая информация? Если почитать практику и спеки, везде написано, что это безопасно, ну или наоборот нигде не написано что так делать нельзя. Конкурирующий доступ запрещен да. Модификация мапы в одном потоке разрешена. Про range по мапе в спеке написано, что удаленные элементы, до которых вы еще не дошли не будут пройдены в цикле (что звучит логично), а добавленные могут а могут и не быть пройдены (т.к. порядок не гарантирован)
Обратите внимание, что Start вызывает подфункции с помощью инструкции CALLX8, которая в отличии от обычного Immediate-версии CALL8
Строго наоборот: call8 это Immediate pc relative call
Callx8 - indirect call по адресу в регистре
И в вашем листинге это так и есть: start вызывает функции используя call8 относительно счетчика инструкций, а вот «сисколы» везде вызываются через callx8, его адрес вы везде продергиваете через стек (а изначально его передает в start загрузчик и это абсолютный адрес)
Я тоже фанат hashicorp (возможно даже их агент влияния) но новый проект на nomad в 2023 это необдуманное решение. Kubernetes объективно победил. Взять хотябы публичные облака. Я что-то не слышал про managed nomad в них, а вот kubernetes есть везде.
Тудаже и consul connect - тоже не самый мейнстрим мягко говоря.
просто представьте что с этим после вас будут делать хм… не фанаты hashicorp
Юнит тесты нужны, только они очень дорогие (кто бы что не говорил). У меня затраты по времени на них получаются почти всегда больше чем на сам код. Но они реально помогают найти ошибки во всяких краевых случаях, а иногда и сходу. Тесты нужно писать самому исходя из своих ожиданий от того как должна работать программа (а не тупо чтобы получить покрытие). А чтобы не было больно при рефакторинге - ну надо писать тесты только на публичные методы, а не на детали реализации, хоть и есть такой соблазн иногда
В системных требованиях же четко написано, что нужна видеокарта, а у него intel )
А если серьезно, интел неспешно движется к цели стать производителем видеокарт и потеснить этих двух. Я думаю в течение пары лет, повода смеяться над ними уже не будет
Смысл существования TV как раз в том, что он позволяет соединятся с компьютером за NAT или firewall. Зачем использовать эту поделку для прямого подключения вообще непонятно (и наверное даже страшно), особенно на Windows где есть нативный и быстрый RDP из коробки
Не хотел отвечать тк холиварно, но ваше утверждение про tiobe неверно: в марте 23 golang впервые вошел в 10-ку на tiobe. Ну и сам индекс tiobe такой себе показатель. Предлагаю в качестве альтернативы, например, посмотреть стату github там есть графики по годам и видно развитие популярности наглядно. Открытые вакансии это тоже подтверждают: если C (не c++), то либо что-то системное, либо embed разработка - полистайте hh
А это да, я же просто отвечал на вопрос mobi, почему в статье отвергается вариант с вложенными условиями.
Статанализаторы обычно настраиваются на какую-то разумную вложенность (которая в примере mobi вполне допустима и даже наверно с запасом в 80 символов помещается). А так-то я как раз не согласен с тем как в статье это объявляется злом которое хуже goto. Также как не согласен, что разбиение на более мелкие функции тоже хуже goto (причем еще и дан специально кривой пример чтобы это продемонстрировать). Обычно это наоборот делает код более читаемым, а оверхеда не дает тк мелкие функции заинлайнятся
В стате про это есть - это Arrow Anti Pattern. Не знаю как в ядре. Но у нас Нередко в ci используются статические анализаторы, которые будут ругаться на высокую вложенность блоков кода.
А вот в golang, например, кейс с множественной инициализацией и очисткой нативно решается использование defer
Кейс с выходом из внешнего цикла решается break с меткой в том же golang
Кейс с ретраем нарочно не показывает более логичный вариант с циклом for(;;) + continue который вообще мало будет отличаться от исходного варианта но в качестве бонуса получим визуальные границы ретрая в виде {}
Вобщем написано много слов но по сути вывод то вот такой имхо: действительно нельзя обойтись без goto в C, но это диктуется низкой выразительностью языка и отсутствием его развития (кто мешает сделать те же break/continue с метками непонятно). И именно поэтому популярность C для написания несистемных программ такая низкая, особенно после появления golang.
Ну по хорошему большую четверку не плохо бы перетряхнуть чтобы убрали зависимость цен от региона как нахождения так и регистрации вообще. Как это сделано у Тинькофф - я полагаю что ни у кого нет иллюзий что Тинькофф еще и прибыль получает и о ужас даже без подписок, и «защиты от спама»
Жил некоторое время в штатах. Так там например у at&t на любом тарифе ты платишь только за интернет. Безлимитный голос и смс включены по территории всей Америки и Канады
Обычно такая статистика ведется с момента старта инстанса постгрес.
И как верно отметили ниже - в бд не должно быть индексов, использующихся раз в квартал. Если таблица небольшая, то просто пусть будет фул скан. Если таблица такая огромная, что фул скан уходит в себя навечно, и нет подходящего частичного индекса - у вас, вероятно, проблемы с дизайном бд. Может нужно думать о секционировании и/или отгрузке данных в специализированные бд для быстрого построения отчетности.
Задача про ванную живо напомнила мне (окончившему политех, профильная дисциплина ТАУ, проработал в IT на разных инженерных позициях) подаренный бабушкой в 10-летнем возрасте 3-х томник Я.Перельмана "Занимательная физика", в котором была фраза в том смысле, что все школьные задачи про бассейны решаются неверно (и далее по тексту) и вот это я запомнил на всю жизнь. Сам я предположил, что ванная заполнится примерно на 2/3 и на этом уровень стабилизируется - ничего не считал, т.к задачу считаю действительно сложной - все это я давно забыл. Далее я задал эту задачу своим домашним (по отдельности конечно) и вот результаты: Жена (закончила мехмат, потом мед, работает косметологом) - ответ: "она никогда не заполнится, т.к это бесконечный ряд". Дочь (4-й класс обычной школы, гуманитарий): "Никогда - вода будет стоять на дне" - никакие попытки заставить решить ее численно, как предполагал автор (учбеника?) не увенчались успехом ))).
Спасибо за честный рассказ, было интересно.
Много написано про организацию бд, но ни слова про бэкапы, надеюсь они у вас уже делаются )
Также непонятно как накатываются миграции в таком сетапе (база под каждого клиента, один бэкенд на всех) и как откатываются в случае, если что-то пошло сильно не так при обновлении
Для packer можно писать конфиги в формате hcl и это намного удобнее и читаемее (и привычнее для пользователей terraform)
да и hashicorp давно рекомендует писать hcl конфиги
range итерирует структуры, которые описаны в статье (слайс/массив, мапа, строка), вне цикла использовать его не получится - он часть синтаксиса. При этом это не "синтаксический сахар" к более длинным конструкциям: заменить его на на что-то другое можно для строк и массивов, но не для мап - т.к. отсутствуют публичные методы для получения итератора мапы.
исходники его тут кстати https://github.com/golang/go/blob/master/src/cmd/compile/internal/walk/range.go
Это откуда такая информация? Если почитать практику и спеки, везде написано, что это безопасно, ну или наоборот нигде не написано что так делать нельзя. Конкурирующий доступ запрещен да. Модификация мапы в одном потоке разрешена. Про range по мапе в спеке написано, что удаленные элементы, до которых вы еще не дошли не будут пройдены в цикле (что звучит логично), а добавленные могут а могут и не быть пройдены (т.к. порядок не гарантирован)
Строго наоборот: call8 это Immediate pc relative call
Callx8 - indirect call по адресу в регистре
И в вашем листинге это так и есть: start вызывает функции используя call8 относительно счетчика инструкций, а вот «сисколы» везде вызываются через callx8, его адрес вы везде продергиваете через стек (а изначально его передает в start загрузчик и это абсолютный адрес)
Я тоже фанат hashicorp (возможно даже их агент влияния) но новый проект на nomad в 2023 это необдуманное решение. Kubernetes объективно победил. Взять хотябы публичные облака. Я что-то не слышал про managed nomad в них, а вот kubernetes есть везде.
Тудаже и consul connect - тоже не самый мейнстрим мягко говоря.
просто представьте что с этим после вас будут делать хм… не фанаты hashicorp
Юнит тесты нужны, только они очень дорогие (кто бы что не говорил). У меня затраты по времени на них получаются почти всегда больше чем на сам код. Но они реально помогают найти ошибки во всяких краевых случаях, а иногда и сходу. Тесты нужно писать самому исходя из своих ожиданий от того как должна работать программа (а не тупо чтобы получить покрытие). А чтобы не было больно при рефакторинге - ну надо писать тесты только на публичные методы, а не на детали реализации, хоть и есть такой соблазн иногда
В системных требованиях же четко написано, что нужна видеокарта, а у него intel )
А если серьезно, интел неспешно движется к цели стать производителем видеокарт и потеснить этих двух. Я думаю в течение пары лет, повода смеяться над ними уже не будет
Мой вариант: вообще ничего не надо провиженить через ssh.
VM деплоятся из готового неизменяемого образа используя terraform
образы собираются с помощью packer
Обновление - пересоздание vm из нового образа
Подход называется immutable infrastructure
профит - гарантия полной идентичности хостов и отсутствие ошибок операторов (тик никто ничего не «админит»)
кроме того старт vm из готового образа значительно быстрее чем прогон плейбука (если это настоящий плейбук а не школьный пример)
Смысл существования TV как раз в том, что он позволяет соединятся с компьютером за NAT или firewall. Зачем использовать эту поделку для прямого подключения вообще непонятно (и наверное даже страшно), особенно на Windows где есть нативный и быстрый RDP из коробки
Не хотел отвечать тк холиварно, но ваше утверждение про tiobe неверно: в марте 23 golang впервые вошел в 10-ку на tiobe. Ну и сам индекс tiobe такой себе показатель. Предлагаю в качестве альтернативы, например, посмотреть стату github там есть графики по годам и видно развитие популярности наглядно. Открытые вакансии это тоже подтверждают: если C (не c++), то либо что-то системное, либо embed разработка - полистайте hh
А это да, я же просто отвечал на вопрос mobi, почему в статье отвергается вариант с вложенными условиями.
Статанализаторы обычно настраиваются на какую-то разумную вложенность (которая в примере mobi вполне допустима и даже наверно с запасом в 80 символов помещается). А так-то я как раз не согласен с тем как в статье это объявляется злом которое хуже goto. Также как не согласен, что разбиение на более мелкие функции тоже хуже goto (причем еще и дан специально кривой пример чтобы это продемонстрировать). Обычно это наоборот делает код более читаемым, а оверхеда не дает тк мелкие функции заинлайнятся
В стате про это есть - это Arrow Anti Pattern. Не знаю как в ядре. Но у нас Нередко в ci используются статические анализаторы, которые будут ругаться на высокую вложенность блоков кода.
А вот в golang, например, кейс с множественной инициализацией и очисткой нативно решается использование defer
Кейс с выходом из внешнего цикла решается break с меткой в том же golang
Кейс с ретраем нарочно не показывает более логичный вариант с циклом for(;;) + continue который вообще мало будет отличаться от исходного варианта но в качестве бонуса получим визуальные границы ретрая в виде {}
Вобщем написано много слов но по сути вывод то вот такой имхо: действительно нельзя обойтись без goto в C, но это диктуется низкой выразительностью языка и отсутствием его развития (кто мешает сделать те же break/continue с метками непонятно). И именно поэтому популярность C для написания несистемных программ такая низкая, особенно после появления golang.
Ну по хорошему большую четверку не плохо бы перетряхнуть чтобы убрали зависимость цен от региона как нахождения так и регистрации вообще. Как это сделано у Тинькофф - я полагаю что ни у кого нет иллюзий что Тинькофф еще и прибыль получает и о ужас даже без подписок, и «защиты от спама»
Жил некоторое время в штатах. Так там например у at&t на любом тарифе ты платишь только за интернет. Безлимитный голос и смс включены по территории всей Америки и Канады
Обычно такая статистика ведется с момента старта инстанса постгрес.
И как верно отметили ниже - в бд не должно быть индексов, использующихся раз в квартал. Если таблица небольшая, то просто пусть будет фул скан. Если таблица такая огромная, что фул скан уходит в себя навечно, и нет подходящего частичного индекса - у вас, вероятно, проблемы с дизайном бд. Может нужно думать о секционировании и/или отгрузке данных в специализированные бд для быстрого построения отчетности.
Задача про ванную живо напомнила мне (окончившему политех, профильная дисциплина ТАУ, проработал в IT на разных инженерных позициях) подаренный бабушкой в 10-летнем возрасте 3-х томник Я.Перельмана "Занимательная физика", в котором была фраза в том смысле, что все школьные задачи про бассейны решаются неверно (и далее по тексту) и вот это я запомнил на всю жизнь. Сам я предположил, что ванная заполнится примерно на 2/3 и на этом уровень стабилизируется - ничего не считал, т.к задачу считаю действительно сложной - все это я давно забыл. Далее я задал эту задачу своим домашним (по отдельности конечно) и вот результаты: Жена (закончила мехмат, потом мед, работает косметологом) - ответ: "она никогда не заполнится, т.к это бесконечный ряд". Дочь (4-й класс обычной школы, гуманитарий): "Никогда - вода будет стоять на дне" - никакие попытки заставить решить ее численно, как предполагал автор (учбеника?) не увенчались успехом ))).