
Uncel
18.11.2016
01:18:45
И даже хуже, байтоебим

Vladimir
18.11.2016
01:19:25
даже с 1С программистами - ценятся и получают деньги те кто умеют хоть что-то
это не просто "выучил синтаксис и рубишь бабло"

Alex
18.11.2016
01:19:49

Google

Alex
18.11.2016
01:20:05
Чо не использовать null-safe языки-то?
Я, правда, всего три таких знаю
Или четыре
Из них без GC - один

Vladimir
18.11.2016
01:20:31
Идти куда-то за деньгами вообще смысла мало. Не в деньгах счастье ж

Alex
18.11.2016
01:20:33
Ну, сами виноваты

Uncel
18.11.2016
01:20:38
Я пытался, честно

Vladimir
18.11.2016
01:22:08
а чтобы быть манагером или путевки продавать нужно соушл скиллз иметь хорошие, талант короче
хотя с 1с тоже нужно головой думать, да

Vladimir
18.11.2016
01:22:47

Google

Vladimir
18.11.2016
01:23:59
то есть в общем реализуемо, но требует планирования

Alex
18.11.2016
01:24:16
Братва
А есть люди со свободным временем?
Сишнички?
Не глянете, может есть какие идеи по улучшению кода?
И все такие: "Да, братан, давай свой код, мы посмотрим!"
Ну лан, чо
Вот он
https://github.com/alexclear/metrics-c-library/blob/master/prometheus.c
Одна идея у меня есть, и я записал ее в issues
Впрочем, там глаз выхватывает какие-то повторяющиеся шаблоны кода
Надо попробовать заэкстрактить и поглядеть, насколько ухудшится читаемость

Vladimir
18.11.2016
01:34:35
@demeliorator цели кода какие в производительности ж?
https://github.com/alexclear/metrics-c-library/blob/master/prometheus.c#L265-L274 кажется что лучше так fprintf'ы не разбивать, когда это не нужно (а тут не очень нужно). И это в целом про все твои fprintfы.

Alex
18.11.2016
01:36:53
Завтра в классе дадим нагрузку поглядим, че там на топе будет в флеймграфах

Vladimir
18.11.2016
01:37:18
напоминает попытки сделать ООП на сях в очередной раз

Alex
18.11.2016
01:38:21
Правда, не будет сокрытия данных - да и хер с ним

Vladimir
18.11.2016
01:38:37
с формальной точки зрения ты не проверяешь что память выделилась ни на одном маллоке

Alex
18.11.2016
01:39:22

Google

Vladimir
18.11.2016
01:39:24
с тем чтоб сделать thread-safe будут проблемы.
return'ов в функциях нет
то есть в ифе есть, а так просто нету

Alex
18.11.2016
01:39:52

Vladimir
18.11.2016
01:40:24
и ваще возьми ради интереса clang 3.9 с scan-build сделай

Alex
18.11.2016
01:40:52
О, это дело, спасибо

Vladimir
18.11.2016
01:41:16
такое разрешают не все компиляторы, большинство ругнется а вот как отрабоатет функция без ретурна - как бы в гцц по одному, а вот что в шланге как ты хочешь - никакой гарантии
strncpy((*counter).label_names[i], label_names[i], strlen(label_names[i]) + 1); - во всяких таких местах - очень странно нафига
67 строка

Alex
18.11.2016
01:43:17
И то верно

Alex
18.11.2016
01:43:27
Потому что туда фигачатся статические константы

Vladimir
18.11.2016
01:43:44
вопрос - strncpy vs memcpy в данном случаи это раз

Alex
18.11.2016
01:43:55
Но это надо тогда завести doxygen-овский коммент

Vladimir
18.11.2016
01:43:57
во вторых strcpy vs strncpy
почему ты таки выбрал strncpy в таком виде?

Alex
18.11.2016
01:44:24
В котором прописать, что память должна быть статически выделена, иначе пздц

Vladimir
18.11.2016
01:45:10
так почему ncpy а не просто cpy тогда?

Google

Vladimir
18.11.2016
01:45:42
все равно у тебя функция эта будет проверять налчие \0, хотя ты копируешь полностью строку

Alex
18.11.2016
01:46:01
А это горе от ума в чистом виде
Я на примере этого объяснял коллегам, что важно чекать границы
Хотя - в данном конкретном случае это херня, я строкой выше все нормально выделяю
Ровно столько, сколько нужно

Kirill
18.11.2016
01:47:25
Ну лан, чо
Вот он
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.

Alex
18.11.2016
01:48:30

Kirill
18.11.2016
01:49:05
тогда можно и в https://github.com/alexclear/metrics-c-library/blob/master/prometheus.c#L148 убрать

Vladimir
18.11.2016
01:49:35

Admin
ERROR: S client not available

Vladimir
18.11.2016
01:49:46
как минимум чтоб это читалось лучше
ну и не очень понятно нафига вот так вот, memcpy тут уместнее, ну либо strcpy без длины
coding style плавает слегка. "int *val", "int *", "int*" в буквально одной строчке - смотрится странно учитывая что только с указателями такая фигня периодически
где то ты маллоки кастуешь, где-то нет

Alex
18.11.2016
01:55:51
Надо какой-нибудь линтер приделать
Пусть по рукам бьет

Nikolay
18.11.2016
01:57:26
ИМАКС

Alex
18.11.2016
01:57:38
ИМАКС
Не поверишь - с этого и начал
Но - в аудитории стоит прокся
А я чот не смог имакс настроить так, чтобы он аутентифицировался на ней

Google

Alex
18.11.2016
01:58:05
Туповат-с

Vladimir
18.11.2016
01:59:52
@demeliorator таки ООП у тебя слегка напрашивается - хотя бы в ConcreteValue тот же, в котором у тебя value то один тип, то другой, смотря что происходит.
в export'е у тебя внутри цикла очень много чего напрашивается на разбиение на функции, кажется что ты все эти принты делаешь однотипно

Alex
18.11.2016
02:02:30
Да - там надо посидеть подумать

Vladimir
18.11.2016
02:02:38
в print_labeled_metric тоже кажется почти калькой с export'а

Alex
18.11.2016
02:02:42
Как это перефигачить так, чтобы было попроще читать

Vladimir
18.11.2016
02:02:46
только с fprintf вместо кастомной функции

Alex
18.11.2016
02:02:59
Сделать эту самую кастомную функцию параметром

Vladimir
18.11.2016
02:03:13
это один и тот же issue
с тем что и цикл обобщить и упростить

Alex
18.11.2016
02:03:41
Угу
В этой части, видимо, можно серьезно упростить

Vladimir
18.11.2016
02:04:57
так в общем судить сложно - подчистить, а дальше под нагрузкой профилировать и смотреть в чем проблемы вылезут уже

Alex
18.11.2016
02:05:48
Угу
Так и сделаем
Спасибо!

Nikolay
18.11.2016
02:06:56
ПИТНИЦА !!

Vladimir
18.11.2016
02:15:09

Roman
18.11.2016
06:11:25

Старый
18.11.2016
06:20:38

Roman
18.11.2016
06:24:12

Старый
18.11.2016
06:24:47

Roman
18.11.2016
06:24:55