Information
- Rating
- Does not participate
- Location
- Ян де нова о-ва
- Date of birth
- Registered
- Activity
Specialization
Fullstack Developer, Software Architect
Lead
Java
Docker
React
TypeScript
Java Spring Framework
Designing application architecture
High-loaded systems
В этом смысле, они подвержены тем же проблемам. Хотя, конечно, они лучше справляются с задачей, чем самописные shell скрипты.
Здесь логичнее хранить Dockerfile в какой-то системе контроля версий.
Из него всегда можно сделать образ. И тут история изменний будет прозрачна.
Это зависит от моих целей. Прямо сейчас я скажу, что не заинтересован делать проект на таких условиях.
А вот 14 лет назад, когда мы с парой друзей начинали свой бизнес я отвечал иначе. Я соглашался на любые условия, потому что для меня жизненно важно было иметь заказчиков. Любых. Хороших тогда у меня не было.
Кто-то потерпит, кто-то уйдёт.
Когда вам нет смысла цепляться за любого заказчика любой ценой, это для вас неважно. Уйдёт так уйдёт.
Если вы о «мыши плакали, кололись, но продолжали есть кактус», то соглашусь. Но бывает и такая ситуация: «Здесь и сейчас мне нужен этот заказчик и я буду играть по его правилам. Как только ситуация позволит, я это изменю.»
Он полагается на своё «профессиональное» чутье :)
У меня, к счастью, больше нет таких заказчиков.
Когда были, то приходилось тратить до 70% времени на переговоры.
Моя мысль не в том, что это правильно. А в том, что часто TDD и другие полезные практики не используются под давлением таких вот горе-заказчиков.
1) «Соображения моего бизнеса требуют, чтобы мы показали первую версию в след. понедельник. На качество пофиг. Не успеем — проекта не будет.»
2) «Так всё же уже работает, осталось только пофиксить баги. Вот вам на это ещё два дня — я щедрый»
Разумеется, правильно будет не работать с такими. Но не у всех и не всегда есть выбор.
А вот где граница между таким случаем и проектами, где TDD полезен каждый определяет по собственному опыту.
Для меня граница проходит примерно по проекту размером в человекомесяц, писанному одним человеком и без перспектив развития.
Важны оба аспекта. TDD помогает в одном. Вы критикуете его за то, что не помогает во втором. Но ведь он — не серебряная пуля, чтобы решать абсолютно все проблемы.
Только на маленьких проектах. На долгоживущих получается более медленный старт, и здесь расходы выше. Но потом они «отбиваются» за счет сохранения постоянной скорости разработки новых версий. В проекте без TDD функция расходов на внесение измнений от времени обычно становится экспоненциальной.
Когда в один из каналов придут данные, нужно каким-то образом одной атомарной операцией убрать горутину из recvq всех каналов, которые она слушала. lock какого-либо канала для этого использовать нельзя.
Интересно, как это делается.
Но плюсы ощутимы. Кроме решения проблемы gc оно еще и процессора есть примерно на 35-30% меньше, чем 1.6
Сам файл вместо 6.5мб весит 4.5 (хотя последнее и не важно для нас)
Теперь его не отключаем, ибо он и так незаметен.
Default части нет.
Как это работает? Мы ведь не можем заблокировать горутину на одном из каналов (вдруг сообщение придёт в другой?)
Неужели оно бесконечно проверяет оба канала неблокируя совсем? Вряд ли же.
Результат — примерно на 30% меньше ест процессорного времени.
И, главное, теперь можно не отключать GC! Его работа больше не тормозит игру.
Это очень, очень здорово!
В Go ООП присутствует, хотя и переомысленный и довольно специфический.
Кстати, довольно удобный на практике.