Uncel
И даже хуже, байтоебим
Vladimir
даже с 1С программистами - ценятся и получают деньги те кто умеют хоть что-то
Vladimir
это не просто "выучил синтаксис и рубишь бабло"
Alexander 🐕
Чо не использовать null-safe языки-то?
Alexander 🐕
Я, правда, всего три таких знаю
Alexander 🐕
Или четыре
Alexander 🐕
Из них без GC - один
Vladimir
Идти куда-то за деньгами вообще смысла мало. Не в деньгах счастье ж
Alexander 🐕
Ну, сами виноваты
Uncel
Я пытался, честно
Alex
Alex
а чтобы быть манагером или путевки продавать нужно соушл скиллз иметь хорошие, талант короче
Alex
хотя с 1с тоже нужно головой думать, да
Vladimir
Vladimir
то есть в общем реализуемо, но требует планирования
Alexander 🐕
Братва
Alexander 🐕
А есть люди со свободным временем?
Alexander 🐕
Сишнички?
Alexander 🐕
Не глянете, может есть какие идеи по улучшению кода?
Alexander 🐕
И все такие: "Да, братан, давай свой код, мы посмотрим!"
Alexander 🐕
Ну лан, чо
Вот он
https://github.com/alexclear/metrics-c-library/blob/master/prometheus.c
Alexander 🐕
Одна идея у меня есть, и я записал ее в issues
Alexander 🐕
Впрочем, там глаз выхватывает какие-то повторяющиеся шаблоны кода
Надо попробовать заэкстрактить и поглядеть, насколько ухудшится читаемость
Vladimir
@demeliorator цели кода какие в производительности ж?
Vladimir
https://github.com/alexclear/metrics-c-library/blob/master/prometheus.c#L265-L274 кажется что лучше так fprintf'ы не разбивать, когда это не нужно (а тут не очень нужно). И это в целом про все твои fprintfы.
Alexander 🐕
Завтра в классе дадим нагрузку поглядим, че там на топе будет в флеймграфах
Vladimir
Vladimir
напоминает попытки сделать ООП на сях в очередной раз
Alexander 🐕
Правда, не будет сокрытия данных - да и хер с ним
Vladimir
Vladimir
с формальной точки зрения ты не проверяешь что память выделилась ни на одном маллоке
Alexander 🐕
Vladimir
с тем чтоб сделать thread-safe будут проблемы.
Vladimir
return'ов в функциях нет
Vladimir
то есть в ифе есть, а так просто нету
Vladimir
Vladimir
и ваще возьми ради интереса clang 3.9 с scan-build сделай
Alexander 🐕
О, это дело, спасибо
Vladimir
такое разрешают не все компиляторы, большинство ругнется а вот как отрабоатет функция без ретурна - как бы в гцц по одному, а вот что в шланге как ты хочешь - никакой гарантии
Vladimir
strncpy((*counter).label_names[i], label_names[i], strlen(label_names[i]) + 1); - во всяких таких местах - очень странно нафига
Vladimir
67 строка
Alexander 🐕
И то верно
Alexander 🐕
Потому что туда фигачатся статические константы
Vladimir
вопрос - strncpy vs memcpy в данном случаи это раз
Alexander 🐕
Но это надо тогда завести doxygen-овский коммент
Vladimir
во вторых strcpy vs strncpy
Vladimir
почему ты таки выбрал strncpy в таком виде?
Alexander 🐕
В котором прописать, что память должна быть статически выделена, иначе пздц
Vladimir
так почему ncpy а не просто cpy тогда?
Vladimir
все равно у тебя функция эта будет проверять налчие \0, хотя ты копируешь полностью строку
Alexander 🐕
А это горе от ума в чистом виде
Alexander 🐕
Я на примере этого объяснял коллегам, что важно чекать границы
Alexander 🐕
Хотя - в данном конкретном случае это херня, я строкой выше все нормально выделяю
Alexander 🐕
Ровно столько, сколько нужно
Kirill
Ну лан, чо
Вот он
https://github.com/alexclear/metrics-c-library/blob/master/prometheus.c
мне, помимо "make this thread-safe", в глаз давит https://github.com/alexclear/metrics-c-library/blob/master/prometheus.c#L44 и после этого https://github.com/alexclear/metrics-c-library/blob/master/prometheus.c#L65. я не гуру, конечно, но зачем дважды присваивать переменной одно и то же значение? это же повторяется в new_histogram_vec, но не в initialize_buckets или observe_histogram.
Alexander 🐕
Kirill
тогда можно и в https://github.com/alexclear/metrics-c-library/blob/master/prometheus.c#L148 убрать
Vladimir
как минимум чтоб это читалось лучше
Vladimir
ну и не очень понятно нафига вот так вот, memcpy тут уместнее, ну либо strcpy без длины
Vladimir
coding style плавает слегка. "int *val", "int *", "int*" в буквально одной строчке - смотрится странно учитывая что только с указателями такая фигня периодически
Vladimir
где то ты маллоки кастуешь, где-то нет
Alexander 🐕
Надо какой-нибудь линтер приделать
Alexander 🐕
Пусть по рукам бьет
Nikolay
ИМАКС
Alexander 🐕
ИМАКС
Не поверишь - с этого и начал
Alexander 🐕
Но - в аудитории стоит прокся
Alexander 🐕
А я чот не смог имакс настроить так, чтобы он аутентифицировался на ней
Alexander 🐕
Туповат-с
Vladimir
@demeliorator таки ООП у тебя слегка напрашивается - хотя бы в ConcreteValue тот же, в котором у тебя value то один тип, то другой, смотря что происходит.
Vladimir
в export'е у тебя внутри цикла очень много чего напрашивается на разбиение на функции, кажется что ты все эти принты делаешь однотипно
Alexander 🐕
Да - там надо посидеть подумать