
Andrey
29.10.2016
23:47:55
таковы большие париложения на С\С++

Vladimir
29.10.2016
23:48:06

Andrey
29.10.2016
23:50:35
вообще, есть такая книжка "совершенный код". Вот там всяко объясняется, зачем проге прятать секреты. (в данном случае дефайнить системные вызовы)
советую почитать

Google

Vladimir
29.10.2016
23:55:33
ты в момент написания своего кода знаешь требования?

Andrey
29.10.2016
23:55:46
конечно
но даже если в той же очередной реализации libc что-то сломают — виноват буду я

Vladimir
29.10.2016
23:56:12
а зачем ты закладываешься на не требования?
2. CoW никуда не уйдет

Andrey
29.10.2016
23:56:30
libc это сферический пример
я могу тебе пример из своей практики с cow рассказать )

Vladimir
29.10.2016
23:57:02

Andrey
29.10.2016
23:57:07
дело было в memset() который оптимизируется
добавили форк. Без него оптимизация не роляла )
ну и потом дружно искали )
тоесть, я хотел копию памяти процесса и я писал в память, чтобы её получить

Google

Andrey
29.10.2016
23:59:31
но получал не всегда )
примерно на миллионый раз, я оказывался не в том месте и не в то время )
и самое смешное было, что gcc данные кейс не оптимизировал! умничала опять таки glibc )
а там где была другая реализация, было всё ок

Vladimir
30.10.2016
00:04:41
честно я не понял что конкретно ты сделал

Andrey
30.10.2016
00:05:10
это не суть
есть такой кейс, достаточно редкий. В основном используется для пробуждения ООМ киллера. Вроде там надо в обязательном порядке, сначала прочитать память, потом записать в неё и так далее в цикле, иначе glibc решит, что ты занимаешься бесполезной энтропией и будет скипать вызовы
и вот какая-то подобная кара пришла в мой код
к сожалению, уже точно не помню

Vladimir
30.10.2016
00:08:49

Andrey
30.10.2016
00:09:55
чтобы симулировать случаи не боевом сервере. Например будет ли это всё работотать, если я настрою оверкоммит
кстати ты писал про тестирование. Как по мне — всё это полная хрень. Говоришь тестировщику как тестировать, он в точности повторяет твои действия. Почти всегда
просто потому, что не понимает, что происходит
лучшие тестировщики — таки админы :)

Александр
30.10.2016
00:15:41

Andrey
30.10.2016
00:15:59
я бы сказал не так

Vladimir
30.10.2016
00:16:04
@abagrintsev у тебя раз ты говоришь что есть тз, значит есть понимание где должна быть твоя софтина запущена
и поэтому ни о каких uclibc, plan9 и пр херне речи не идет

Andrey
30.10.2016
00:16:18
отцы сервисодержатели

Vladimir
30.10.2016
00:16:32
в общем это твоя проблема как разработчика сделать пакеты (или бинарники) для целевой штуки

Google

Andrey
30.10.2016
00:16:37
пока ты ищешь багу, они ночами с телефона перезапускают твой говносервис, который плодит коры )

Александр
30.10.2016
00:16:38
В каждую дырку лезут
?
А потом выясняется, это забыл, там не до делал и т.п

Vladimir
30.10.2016
00:17:47

Andrey
30.10.2016
00:18:12
и cmake тут никого не спасёт
миллионы вкладывают в синтаксические анализаторы, только потому, что компилятор не в силах проверить всё

Vladimir
30.10.2016
00:19:14
а вы новую версию убунты сразу в продакшн пихаете?

Andrey
30.10.2016
00:19:34
нет, это конечно долгий процесс
но есть софт который писался некими людьми, в таких то годах

Vladimir
30.10.2016
00:19:50
и такие особенности не отлавливаются в процессе впихивания в прод?

Andrey
30.10.2016
00:19:57
а старая убунта уже кончилась, продлить нельзя
они отлавливаются, но на это тратится много моих нервов и сил

Vladimir
30.10.2016
00:20:37
поэтому проще сделать так чтобы код никогда не собрался ни под чем кроме того что есть сейчас?

Andrey
30.10.2016
00:20:46
хотелось бы не ловить их а видить в консоли чёткие нарушения контракта
нас мало, а софта много
и на основне нарушений контракта производить детальные расследования

Vladimir
30.10.2016
00:21:21

Google

Andrey
30.10.2016
00:21:39
тесты не покрывают всё

Vladimir
30.10.2016
00:21:47
напиши такие чтобы покрывали

Andrey
30.10.2016
00:21:53
тест отработал 1 раз и считается что всё ок
а баг проявляется под нагрузками

Vladimir
30.10.2016
00:22:32

Andrey
30.10.2016
00:22:54
нагрузочное тестирование это синтетика

Vladimir
30.10.2016
00:23:05

Andrey
30.10.2016
00:23:10
воо

Vladimir
30.10.2016
00:23:10
без ответа реальным пользователям

Admin
ERROR: S client not available

Andrey
30.10.2016
00:23:17
выкатываем мы говно на продкашн
сидой админ кидает в мой угол корку

Vladimir
30.10.2016
00:23:28

Andrey
30.10.2016
00:23:43
и я такой пошёл искать капканы в яме со змеями

Vladimir
30.10.2016
00:24:01
берете запросы с продакшена и кормите его своей софтине на минимизированной копии продакшена
со снэпшотами реальных баз и пр.

Andrey
30.10.2016
00:24:33
вот например писал я rpc сервис. Тестеры обстреляли меня яндекс.танком и доверительно заявили что всё ок
а потом выяснилось, что на проде rpc сервисы дерутся за создание пользователя
а всё потому, что стреляли патронами где линейная нагрузка и запросы шли разными пачками

Daniel
30.10.2016
00:26:05
ну - двойка им

Google

Andrey
30.10.2016
00:26:36
увы

Vladimir
30.10.2016
00:29:08

Andrey
30.10.2016
00:30:20
в больших и сложный проектах копия продакшена почти всегда невозможна
потому что работаешь с одним компонентом, который опирается на что-то ещё

Daniel
30.10.2016
00:31:27
но запросы-то из логов прода нет никаких проблем надергать

Andrey
30.10.2016
00:32:03
если служба безопасноти не сильно дрючит админов и ты умеешь их расположить к себе )

Vladimir
30.10.2016
01:02:37
как появляется требование - возможности находятся

Игорь
30.10.2016
01:22:07

Vladimir
30.10.2016
01:32:55
A/b тесты в очень худшем случае тоже помогают
Например выкатить апдейт на каждый 1000ый хост
Или взять 0.1% аудитории

Alexander
30.10.2016
03:36:52
здесь вот что - технически можно сделать как угодно, но есть стоимость поддержки и если сделать очень круто - стоимость поддержки всей этой инфраструктуры тестирования может оказаться выше, чем выигрыш от обнаружения бага на ранней стадии
даже Apple косячила не раз с теми же апдейтами
тут как с ОС - лучше всего было бы иметь кастомизированный, вылизанный Gentoo со специальными бинарными пакетами персонально для моих серверов и оптимизированным ядром, на фактически у меня Ubuntu по одной причине - так меньше стоимость владения
от зулу ubuntu — человечность
3 человека под палящим солнцем Африки танцуют африканские танцы, держась за руки
а здесь 3 белых человека уже загорели)) а с солнцем что-то случилось)
это же люди, вид сверху, вот в таких позах
http://www.4dancing.ru/files/u5304/0000271f_medium.jpeg