Про кофе добавлю немного своих наблюдений (все понятно индивидуально, возможно, у кого то так же, а у кого то наоборот).
Если регулярно пью кофе (1-2 чашки в день) достаточно продолжительное время, например месяц или больше, перехожу в странный режим, который я называю "кофейный тупняк" - ты вроде очень бодрый, голова ясная, но начинаешь читать какой нибудь сложный текст (запутанный кусок кода или сложную документацию) и... нихера ничего непонятно.. с 3й попытки, окей вроде разбираешься. Перестаешь пить кофе совсем, примерно через неделю "отпускает", голова снова ясная, но не такая "ясная" как под кофе, а ясная и расслабленная и сильно быстрее начинаешь разбираться в сложных вещах. На обычной рутине этот "кофейный тупняк" не заметен - вижу разницу только на чем то сложном, когда надо войти в "состояние потока/вдохновения"
>>Различные механизмы распространения помогают связать транзакции в нашей бизнес-логике. Например, если вам нужно запустить какой-то код в другой транзакции, а не во внешней, можно использовать распространение REQUIRES_NEW, которое приостанавливает внешнюю транзакцию, создает новую, а затем возобновляет внешнюю транзакцию.
REQUIRES_NEW ничего не "приостанавливает" - вы из одного потока управления стратанули 2 транзакции, можете стартануть 3, 4 и так далее - это все будут активные транзакции созданные в одном потоке. Схема скорее походит на ChainedTransactionManager с той лишь разницой что у всех транзакций один и тот же TransactionManager
Татьяна Юрьевна, здравствуйте. В последние несколько лет появилась навигационная лазерная коагуляция, почти полностью автоматизированные установки для лкс, бесконтактные объективы, navilas 577s и вот это вот все. Было бы интересено ваше мнение насколько это востребовано и помогает профессионалам или это больше маркетинг. И если не секрет какие лазеры для лкс у Вас в клинике (можно прямо названия моделей если это не коммерческая тайна :) ).
1) В этом пункте интересует есть ли у вас выигрыш в латенси на железных серверах — если уже потестировали.
2) Вы упоминали что 5% запросов выходит из 4ms скорее всего из-за gc — может быть добавить хипа и сделать что нибудь типа 2x — в вашем случае 2*16 — дать коллектору «оперативный простор» — или вы пробовали и стало хуже или не повлияло?
Спасибо за статью! После прочтения возникла пара вопросов:
1) Ваши процессы с акторами на проде работают в контейнерах / виртуалках / или непосредственно на железных серверах?
2) Какая в среднем (или медианная) утилизация хипа — то есть из 20gb сколько это живые объекты?
По первому вашему абзацу полность согласен — пол жизни можно потратить разбираясь в этом. По вопросу «кого то убьют или выберут случайного или власть захватят» — ну ходить далеко не надо — все мы эту страну знаем. Да — ваша архитектура будет существовать не в «идеальных условиях» — вы будете играть на общей доске со всеми — мир повоторюсь глобален уже лет 500 как (а может и больше) и индейцы в Северной Америке не сами себя выпилили в ноль — хотя возможно «архитектура» у них была вполне наверно хорошая, отвечающая их реалиям, тока европейцы в ней не были учтены, да…
По второму абзацу вы спорите со смыслами которые я не закладывал :) Но если вы их увидели в моем сообщении — Ok :) Звучит все разумно :)
Фраза «Надо разобраться сначала… какие у тебя ресурсы… люди..» возможно не совсем удачная. И все видят какое то противоречие и сравнение с Россией :) Поэтому верить фразе «Мы никакие то особенные — ни в хорошем ни в плохом» :)
По поводу ресрусов и людей… Пример был про условное Конго, в котором допустим мы хотим поднять уровень образования… К примеру настроили мы школ и вузов (откуда то взяли ресурсы), где то нам надо взять очень-очень много преподавателей — то есть именно в это смысле — у тебя должны быть эти люди, ты их должен откудато взять, пригласить из России, Австралии, США. Китая, ЮАР…
Фил, попробуйте разобраться как работают государства, вообще любые государства, применить инженерный поход. Мы никакие то особенные — ни в хорошем (что нам втирают «патриоты») ни в плохом (что на втирают «либерасты»). Вселенная так не работает :) Если в одном уголке Вселенной происходит какая то «уникальная» херня — она начинает происходит везде — чисто статистически. Относитесь к государствам как просто к информационной системе, в архитектуре которой вам надо разобраться понять как каждый уровень работает, примените инженерный подход. Или попробуйте мысленно построить свою архитектуру, но только попробуйте понять как в этой архитектуре будут жить реальные люди, начиная от курьеров и заканчивая чиновниками. В данный момент у вас это не получится — в лучшем случае придумаете условный «Валинор». Надо поразбираться в вопросе — почитать тонны профильной литературы, потратить много времени, тогда сможете объективно решить что делать… Щас вы решили чисто как фаталист, люблю свою страну, буду терпеть, ну там вокруг себя постараюсь навести порядок… Не факт что это правильный выбор…
Когда я учился в школе, у меня бывали такие наивные мысли, когда видел в новостях какой-нибудь треш из условного Конго или ЦАР… Типа чо они такие странные, был бы я призидентом условного Конго — поднял бы там уровень образования и медицины, промышленность и прочее :) Была бы страна лучшая в Африке :) Тока не работает это так… А как это работает? Надо разобраться сначала… какие у тебя ресурсы… люди… рефлексировать действия внешних игроков (мир уже лет 500 как глобален) и так далее.
Вопрос что будет когда и если вы разберетесь? Появятся ли у вас лучшие варианты? Или вы поменяете отношение к тем что уже видите сейчас?
Тип T выводится как StringBuilder, но в данном коде компилятор не обязан вставлять в байткод проверку типа в точке вызова. Ему достаточно, что StringBuilder можно присвоить в Object, а значит, всё хорошо.
Все носятся с null'ом — типа ошибка на миллион долларов… Реальная ошибка на миллион это реализация дженериков в Java 5… Эх, Мартин Мартин…
Вот интересно, кто то смог бы реализовать дженерики в Java по другому? (не создавая другой язык для jvm)
Есть такая классическая уже сейчас книга «The Programmer’s Stone» — в ней все разработчики условно это «картостроители» и «паковщики»… Егор хочет всех сделать «паковщиками»…
Картостроители не поддавайтесь ;) Егор просто умнее других паковщиков
Пиар по большому счету Disruptor'у был не нужен. Как только Мартин упомянул его в своем блоге, все заинтересованные лица скачали исходники, прочитали, протащились и начали использовать :) То что в последующие годы доклады (не Мартина) по нему появились на рускоязычных конфах это скорее желание «докладчиков» использовать «халявный корм» — придумывать то ничего не надо — берешь и рассказываешь (хотя это тоже работа не спорю)…
Так что нет смысла слишком «опекать» one-nio — достаточно его упомянуть в блоге, в интервью или на конфе и все кому интересно скачают, прочитают, возможно (не) оценят и возможно (не) используют.
А пиар пошел дизраптору во вред… Сравните исходники первой версии и третьей…
Но сам термин достаточно удобен для обозначения инструментов (в самом широком смысле) значительно уменьшающих сложность разработки и не привносящих дополнительную сложность в процесс…
>> но саму модель простой сделать не сможет.
модель можно сделать проще… модель делаете именно вы, но вы не можете сделать проще тот объективный процесс, который вы моделируете… в тот момент когды вы сделаете модель (простоую или сложную это не важно), следующей задачей будет реальзовать эту модель в чем то материальном (в бетоне или в Python'е ) и вот тут вы добавите «сложность выражения» вашей модели в чем то материальном… Идеальная серебреяная пуля материализует вашу модель «as is», в реальности почти «as is»
Серебряная пуля это не то что «определит взаимосвязи между объектами реального мира, установит за нас исключения, предусмотрит все возможные переходы между состояниями и т.д...» Все это работа человека. Когда человек выполнит эту работу, код который он напишет в идеале должен просто и очевидно отражать эти взаимосвязи, эти исключнения и эти переходы… В моем понимании серебряная пуля как раз и есть инструмент, который поможет выразить мою идею и результаты моего анализа в коде (или метакоде или модели или в чем то еще)… И в этом смысле серебряные пули есть и их скажем так немало… Банальный пример… spring web flow… просто и очевидно описывают логику работы контроллера… взаимосвязи, состояния, переходы и прочее… не на два порядка, но на порядок упрощает весь уровень контроллеров приложения. Что еще от серебряной пули нужно..? Она уменьшают ту сложность, которую можно уменьшить (сложность выражения идеи)… А сложность предметной области это инварианта, мы лишь можем выбирать между более простыми или более сложными моделями этой предметной области… но строить эти модели нам… причем тут серебная пуля?
Про кофе добавлю немного своих наблюдений (все понятно индивидуально, возможно, у кого то так же, а у кого то наоборот).
Если регулярно пью кофе (1-2 чашки в день) достаточно продолжительное время, например месяц или больше, перехожу в странный режим, который я называю "кофейный тупняк" - ты вроде очень бодрый, голова ясная, но начинаешь читать какой нибудь сложный текст (запутанный кусок кода или сложную документацию) и... нихера ничего непонятно.. с 3й попытки, окей вроде разбираешься. Перестаешь пить кофе совсем, примерно через неделю "отпускает", голова снова ясная, но не такая "ясная" как под кофе, а ясная и расслабленная и сильно быстрее начинаешь разбираться в сложных вещах. На обычной рутине этот "кофейный тупняк" не заметен - вижу разницу только на чем то сложном, когда надо войти в "состояние потока/вдохновения"
jepsen тесты уже прошли ? :)
Автор оиригинала так и не узнает что функция get_greeting() в Мифе 3 не является чистой..
>>Различные механизмы распространения помогают связать транзакции в нашей бизнес-логике. Например, если вам нужно запустить какой-то код в другой транзакции, а не во внешней, можно использовать распространение
REQUIRES_NEW
, которое приостанавливает внешнюю транзакцию, создает новую, а затем возобновляет внешнюю транзакцию.REQUIRES_NEW ничего не "приостанавливает" - вы из одного потока управления стратанули 2 транзакции, можете стартануть 3, 4 и так далее - это все будут активные транзакции созданные в одном потоке. Схема скорее походит на ChainedTransactionManager с той лишь разницой что у всех транзакций один и тот же TransactionManager
2) Вы упоминали что 5% запросов выходит из 4ms скорее всего из-за gc — может быть добавить хипа и сделать что нибудь типа 2x — в вашем случае 2*16 — дать коллектору «оперативный простор» — или вы пробовали и стало хуже или не повлияло?
1) Ваши процессы с акторами на проде работают в контейнерах / виртуалках / или непосредственно на железных серверах?
2) Какая в среднем (или медианная) утилизация хипа — то есть из 20gb сколько это живые объекты?
По второму абзацу вы спорите со смыслами которые я не закладывал :) Но если вы их увидели в моем сообщении — Ok :) Звучит все разумно :)
По поводу ресрусов и людей… Пример был про условное Конго, в котором допустим мы хотим поднять уровень образования… К примеру настроили мы школ и вузов (откуда то взяли ресурсы), где то нам надо взять очень-очень много преподавателей — то есть именно в это смысле — у тебя должны быть эти люди, ты их должен откудато взять, пригласить из России, Австралии, США. Китая, ЮАР…
Когда я учился в школе, у меня бывали такие наивные мысли, когда видел в новостях какой-нибудь треш из условного Конго или ЦАР… Типа чо они такие странные, был бы я призидентом условного Конго — поднял бы там уровень образования и медицины, промышленность и прочее :) Была бы страна лучшая в Африке :) Тока не работает это так… А как это работает? Надо разобраться сначала… какие у тебя ресурсы… люди… рефлексировать действия внешних игроков (мир уже лет 500 как глобален) и так далее.
Вопрос что будет когда и если вы разберетесь? Появятся ли у вас лучшие варианты? Или вы поменяете отношение к тем что уже видите сейчас?
Все носятся с null'ом — типа ошибка на миллион долларов… Реальная ошибка на миллион это реализация дженериков в Java 5… Эх, Мартин Мартин…
Вот интересно, кто то смог бы реализовать дженерики в Java по другому? (не создавая другой язык для jvm)
И spring со своим блин перепакованным spring asm'ом…
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 57
at org.springframework.asm.ClassReader.(ClassReader.java:184)
Картостроители не поддавайтесь ;) Егор просто умнее других паковщиков
Так что нет смысла слишком «опекать» one-nio — достаточно его упомянуть в блоге, в интервью или на конфе и все кому интересно скачают, прочитают, возможно (не) оценят и возможно (не) используют.
А пиар пошел дизраптору во вред… Сравните исходники первой версии и третьей…
Но сам термин достаточно удобен для обозначения инструментов (в самом широком смысле) значительно уменьшающих сложность разработки и не привносящих дополнительную сложность в процесс…
модель можно сделать проще… модель делаете именно вы, но вы не можете сделать проще тот объективный процесс, который вы моделируете… в тот момент когды вы сделаете модель (простоую или сложную это не важно), следующей задачей будет реальзовать эту модель в чем то материальном (в бетоне или в Python'е ) и вот тут вы добавите «сложность выражения» вашей модели в чем то материальном… Идеальная серебреяная пуля материализует вашу модель «as is», в реальности почти «as is»