Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
if ($input->search_text!=""){
if ($input->search_text=="хуйня" or $input->search_text=="ХУЙНЯ" or $input->search_text=="Хуйня")
$this->result.="У нас серьезная компания и мы всякой хуйни на сайте не держим.";
else{
if (strlen($input->search_text)<2)
$this->result.="Строка поискового запроса должна состоять минимум из 2 символов.<br>Пожалуйста, измените Ваш запрос и повторите поиск.";
else{
$result.="Вы искали: <u><b>".$input->search_text."</b></u><br><br>";
Вот такие вот пасхалки у серьёзных компаний. И такой код.
да. БОльшая часть вк написана олимпиадниками на сях, а вот фейсбцук
Over 21% percent of overall codebase infrastructure is covered by Python at Facebook while rest is covered by Java, C, and C++ with 9%, 15%, and 55% respectively.
[quote]
В один из таких моментов мы выделили целую группу, которая занималась тем, что искала разные неоптимальные штуки в PHP-скриптах и оптимизировала. Это происходило буквально «по капле»: здесь нашли процент, там нашли процент — несколько человек в течение месяца находили по проценту. В какой-то момент рядом оказался наш сишник einstein_man. Он решил посмотреть, что можно сделать: зашёл вечером, запустил Perf, нашёл пару проблем в экстеншенах PHP — и ускорил всё за пару вечеров на 13%!
[/quote]
ахахаххахах, сразу видать что там серьезные ребята
Чуваки без профайлера, вслепую, что-то оптимизировали (видимо кавычки меняли), потом сишник (выделенный человек, вероятно единственный, кто знает си и умеет профилировать) все исправил.
Там перформанс инженер напилил профайлер, который профилирует одновременно и нативный код, и жабу. И показывает "общий" стек и флейм граф. И программисты этим тулом у них пользуются.
жабу он без мапов / frame pointer профилирует как гербейдж, для профилирования жабы с тем же flamegraph-выводом есть более удобный async-profiler, появившийся по следам
А «Badoo» — это очередной банальный сайт знакомств.
Я читал заметки «Badoo» по хуйлоаду. Прочитал про их «Pinba engine» — средство мониторинга производительности сервера. Эти изобретатели реализовали «Pinba engine» как плагин к «MySQL», чтобы результаты можно было читать SQL-запросом.
Я анскильный питух. Я не смог поставить «Pinba engine» ни на «MySQL», ни на «MariaDB», хотя плагины других производителей успешно ставил. Пробовал собирать из исходников. Всё компилируется, но только устанавливаю этот плагин в СУБД, как СУБД падает с сегфолтом. У них какой-то царский код, сильно зависящий от ключей компилятора.
Представь себе ситуацию, когда [0] удалось аллоцировать, а [1] — нет. Из-за отказа в выделении места под [1] сработает условие и будет возвращено P_FAILURE, а [0] сам себя не освободит.
Тогда per_thread_request_pool[0] будет элементом типа pinba_pool (без укококозателя) и во free() не пролезет. А если освободить сам per_thread_request_pool, то дальнейшие обращения к нему будут UB.
Может, решили не заморачиваться с адресной арифмантией. Может, задел на будущее, в котором может понадобиться выделять только один из этих пулов, например. Может, говнокод.
Ну и нейминг уёбищный, конечно. Хотя бы «per_thread_request_pool[b]s[/s]» сделали…
> &per_thread_request_pool[0]
Можно, но не нужно, это то же самое, что и просто «per_thread_request_pool» (если мы про «C», конечно).
С точки зрения корректности вызова — во free() нужно передавать исключительно то, что вернули malloc()/calloc() (кроме NULL, офк).
UPD: оказывается по Стандарту, во free() вполне себе можно передавать NULL.
Копипаст знания это всегда говно: что с ООП, что без.
зы: ахахах, нейминг прикольный, и копипаст полей. Да, с ООП можно было бы наследоваться, но можно было бы и без него (на худой конец сделать делегацию)
Кстати, вся эта история учит нас важному: успех продукта весьма слабо связан с качеством программистов (и, как следствие, программного кода).
Стайка пыхомакак вполне может сделать на коленке проект, который будет иметь сотни тысяч пользователей и приносить семизначные прибыли его создателям.
В какой-то момент конечно понадобится хайрить умных чуваков, но это может случиться, когда у вас уже будет миллион-другой пользователей, а значит и куча бабла.
С депрекейшном в «HTML» всё плохо: там таги то депрекейтят, то возвращают.
<i><b><u><s> комитету не понравились тем, что они несемантические. Мол, представление будем описывать в CSS (font-weight:bold и т. п.), а в HTML — только семантику. А семантические таги — это <em><strong><ins><del>, которые подчёркивают важность информации.
По факту же в вебе сплошь и рядом используют несемантические <div> и <span>, а семантические <article>, <aside> и т. п. редко вспоминают.
Зато представь, сколько софта для генерации написано, сколько промежуточных уровней абстракции, сколько специалистов по этой хуете, сколько рабочих мест.
Меня тут больше пугают не названия классов, а несколько классов у одного дива: <div class="css-1dbjc4n r-1iusvr4 r-16y2uox r-5f2r5o r-m611by">
Зачем? Зачем? Это так же ужасно, как <div class="color-red weight-bold margin-5 with-border">.
https://ideone.com/w5n0md
Чем мне тут помогли пыхоприведение и хвалёные пыхосигнатуры? Я трижды сказал ебучему шаблонизатору, что хочу сравнить строки, но нет, шаблонизатор, блять, умнее, ему лучше знать, что с чем я хотел сравнивать.
Over 21% percent of overall codebase infrastructure is covered by Python at Facebook while rest is covered by Java, C, and C++ with 9%, 15%, and 55% respectively.
В один из таких моментов мы выделили целую группу, которая занималась тем, что искала разные неоптимальные штуки в PHP-скриптах и оптимизировала. Это происходило буквально «по капле»: здесь нашли процент, там нашли процент — несколько человек в течение месяца находили по проценту. В какой-то момент рядом оказался наш сишник einstein_man. Он решил посмотреть, что можно сделать: зашёл вечером, запустил Perf, нашёл пару проблем в экстеншенах PHP — и ускорил всё за пару вечеров на 13%!
[/quote]
ахахаххахах, сразу видать что там серьезные ребята
Но у нас примерно так же, только на плюсах.
Чуваки без профайлера, вслепую, что-то оптимизировали (видимо кавычки меняли), потом сишник (выделенный человек, вероятно единственный, кто знает си и умеет профилировать) все исправил.
Это разве не ёбаный стыд?
Я так понял, что они ускоряли сишный код модуля. Какой смысл выжимать проценты из «PHP»?
Они правили скрипты. Потом пришел сишник, и всё исправил
Вот например серьезная компания Netflix.
Там перформанс инженер напилил профайлер, который профилирует одновременно и нативный код, и жабу. И показывает "общий" стек и флейм граф. И программисты этим тулом у них пользуются.
У него про это ток был.
жабу он без мапов / frame pointer профилирует как гербейдж, для профилирования жабы с тем же flamegraph-выводом есть более удобный async-profiler, появившийся по следам
с символами он не нужен
как он поможет джаве -- я не знаю, разве в JVM стек указывается с помощью регистра?
что там под капотом - извините, пока еще не настолько прошарен
А «Badoo» — это очередной банальный сайт знакомств.
Я читал заметки «Badoo» по хуйлоаду. Прочитал про их «Pinba engine» — средство мониторинга производительности сервера. Эти изобретатели реализовали «Pinba engine» как плагин к «MySQL», чтобы результаты можно было читать SQL-запросом.
Я анскильный питух. Я не смог поставить «Pinba engine» ни на «MySQL», ни на «MariaDB», хотя плагины других производителей успешно ставил. Пробовал собирать из исходников. Всё компилируется, но только устанавливаю этот плагин в СУБД, как СУБД падает с сегфолтом. У них какой-то царский код, сильно зависящий от ключей компилятора.
https://github.com/tony2001/pinba_engine
https://github.com/badoo/pinba2
А есть какие-то хитрые механизмы, чтобы выделить память типа для всего per_thread_request_pool, но чтобы внутри это были указатели?
>per_thread_request_pool[1][1]
он тоже пул!
https://govnokod.xyz/_26418/#comment-508522
Есди он per_thread_request_pool, то там лежит реквест? Тогда почему его удаляют командой pinba_pool_destroy?
Блядь, ваша си такая служноя..
Ну и нейминг уёбищный, конечно. Хотя бы «per_thread_request_pool[b]s[/s]» сделали…
Можно, но не нужно, это то же самое, что и просто «per_thread_request_pool» (если мы про «C», конечно).
С точки зрения корректности вызова — во free() нужно передавать исключительно то, что вернули malloc()/calloc() (кроме NULL, офк).
UPD: оказывается по Стандарту, во free() вполне себе можно передавать NULL.
Меня больше пугает, что пула два, и знание об их количестве не вынесено никуда.
Значит, в коде есть явно два free, например. Когда их станет три, в одном из пяти мест наверняка забудут поправить
https://github.com/tony2001/pinba_engine/blob/99ca84d4b6ad77301533e3eb19dea1282f60d456/src/main.cc#L302
пул пулов чтоли?
https://github.com/tony2001/pinba_engine/blob/99ca84d4b6ad77301533e3eb19dea1282f60d456/src/pinba_types.h#L315
зы: ахахах, нейминг прикольный, и копипаст полей. Да, с ООП можно было бы наследоваться, но можно было бы и без него (на худой конец сделать делегацию)
Сравни две даты: видишь, у второй есть доп поле?
Правда, некоторые ничем не отличаются, первая и вторая, вроде.
- это немного успокаивает.
Но вот этот-то нет
https://github.com/tony2001/pinba_engine/blob/99ca84d4b6ad77301533e3eb19dea1282f60d456/src/pinba_types.h
Стайка пыхомакак вполне может сделать на коленке проект, который будет иметь сотни тысяч пользователей и приносить семизначные прибыли его создателям.
В какой-то момент конечно понадобится хайрить умных чуваков, но это может случиться, когда у вас уже будет миллион-другой пользователей, а значит и куча бабла.
Главное правило сишника: насрал — убери за собой.
Да я-то согласен. Лучше выработать жетские концепции типа "функция InitFoo выделила память, значит должна быть DestroyFoo".
А если думать "в каждом конкретном случае" , то легко можно серануться
на самом деле тоня -- пыхер (и чуть ли не отец-аснавтель пхпклуба), но вот немного умеет си тоже. Особенно аллоцировать память
«Единственный сишник» –— это «einstein_man», в миру «Антон Поваров».
А «tony2001» в миру «Антон Довгаль» (у них вообще есть неантоны?). Да, пыхер:
https://www.facebook.com/antony.dovgal
Всегда уважал в людях скоромность
А так же поборник типобезопасности
Лол, пыхофолдинги
Угадайте, что выведет программа и почему я за «PHP».
Спойлер:
https://ideone.com/wGgwj8
<i><b><u><s> комитету не понравились тем, что они несемантические. Мол, представление будем описывать в CSS (font-weight:bold и т. п.), а в HTML — только семантику. А семантические таги — это <em><strong><ins><del>, которые подчёркивают важность информации.
По факту же в вебе сплошь и рядом используют несемантические <div> и <span>, а семантические <article>, <aside> и т. п. редко вспоминают.
регулярно ввижу класы типа red-button и col-3
<div class="css-1dbjc4n r-1j3t67a"><div class="css-1dbjc4n r-18u37iz r-thb0q2"><div class="css-1dbjc4n r-1iusvr4 r-16y2uox r-5f2r5o r-m611by"></div></div><div class="css-1dbjc4n r-18u37iz r-thb0q2 r-1mi0q7o" data-testid="tweet"><div class="css-1dbjc4n r-1awozwy r-18kxxzh r-5f2r5o" style="flex-basis: 49px;"><div class="css-1dbjc4n r-18kxxzh r-1wbh5a2 r-13qz1uu">
Очевидное название класса, да?
P.S. Исправил. Я сначала указал класс «r-t23y2h» — это для твитов с картинками. Для аватарок используется класс «r-sdzlij».
Меня тут больше пугают не названия классов, а несколько классов у одного дива: <div class="css-1dbjc4n r-1iusvr4 r-16y2uox r-5f2r5o r-m611by">
Зачем? Зачем? Это так же ужасно, как <div class="color-red weight-bold margin-5 with-border">.
Именно поэтому я боюсь == в «PHP». Лучше перебдеть и поставить === , чем перебздеть.
Была дыра в каком-то форумном движке, позволявшая входить в учётки по неправильному паролю, потому что хэши сравнивались через == .
https://www.citi.io/wp-content/uploads/2018/03/2566-01.jpg
https://govnokod.ru/17118#comment254919
Нашёл другой багор:
https://govnokod.ru/25336#comment489975
Мы ж ещё какие-то багры обсуждали с упоминанием форумных движков, но я не могу придумать, как нагуглить.
https://govnokod.ru/18191#comment286615
https://ideone.com/xom4hB
Чем мне тут помогли пыхоприведение и хвалёные пыхосигнатуры? Я трижды сказал ебучему шаблонизатору, что хочу сравнить строки, но нет, шаблонизатор, блять, умнее, ему лучше знать, что с чем я хотел сравнивать.
никогда
никогда не используй == в JS и PHP
https://en.wikipedia.org/wiki/DJGPP
В DJGPP v 2.04 появилась даже функция popen. Правда, работала она только для программ, которые написаны на нём же.