- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
#define __DEBUG
#ifdef __DEBUG
#define print_pair(p) do{std::cout << "(" << ((p).first + 1) << ", "\
<< ((p).second + 1) << ")" << std::endl;}while(0);
#endif
Graph::result
Graph::dijkstra (int start)
{
#ifdef __DEBUG
std::cout << "Dijkstra algorithm tracing:" << std::endl;
#endif
distances[start] = 0;
std::set<std::pair<int, int>> q;
q.insert (std::make_pair(distances[start], start));
while (!q.empty())
{
#ifdef __DEBUG
std::cout << "top element of a set: ";
print_pair(*q.begin());
#endif
int current = q.begin()->second;
q.erase(q.begin());
for (int i = 0; i < adj[current].size(); ++i)
{
#ifdef __DEBUG
std::cout << "current vertex: " << (current + 1);
std::cout << " ad current state of distances array is: " << std::endl;
for (auto i: distances)
std::cout << i << " ";
std::cout << std::endl;
#endif
int to = adj[current][i].second;
int length = adj[current][i].first;
// Relaxations
if (distances[to] > distances[current] + length)
{
#ifdef __DEBUG
std::cout << "relaxation for edge (" << current << ", " << to << ") ";
std::cout << "with weight " << length << std::endl;
#endif
q.erase(std::make_pair(distances[to], to));
distances[to] = distances[current] + length;
path[to] = current;
q.insert(std::make_pair(distances[to], to));
}
}
}
// Replace INF by -1
std::replace (distances.begin(), distances.end(), INF, -1);
return distances;
}
Я у мамы решил подебажить как мыщъх дебажил при помощи отладочной печати. Вот что получилось.
laMer007 18.07.2016 23:49 # 0
bormand 18.07.2016 23:56 # +2
Ну кроме того, что лучше какой-нибудь макрос замутить и управлять им в одной точке, а не ебашить #ifdef на каждую строку... Что-нибудь типа: Ну и std::cerr всё-таки, чтобы выхлоп не портить.
Ну и вместо #define print_pair(p) шаблончик бы. Няшно и полезно даже не в дебажном коде...
laMer007 19.07.2016 00:50 # +4
Fike 19.07.2016 03:51 # 0
laMer007 19.07.2016 08:15 # 0
Fike 19.07.2016 12:04 # 0
Dummy00001 19.07.2016 12:09 # 0
all_humane_is_shit
all_humans_are_shit
roman-kashitsyn 19.07.2016 12:18 # 0
Ты хотел сказать countable / uncountable?
all news is bad? all oil is lost?
Dummy00001 19.07.2016 12:25 # 0
да. (count vs noncount nouns.)
codemonkey 19.07.2016 14:24 # 0
guestinho 19.07.2016 23:51 # 0
Fike 19.07.2016 23:41 # 0
bormand 19.07.2016 20:23 # 0
inkanus-gray 19.07.2016 20:27 # +7
И в мальчишке, и в девчонке
Есть по триста грамм какашек
Или даже полкило.
А в огромных дядях, тётях
Их, конечно же, побольше.
Иногда и так бывает:
Целый человек — говно.
guestinho 19.07.2016 22:00 # 0
inkanus-gray 19.07.2016 23:59 # 0
guestinho 20.07.2016 00:05 # +3
но вообще оригинальная песенка (из мультика про обезъян) на фоне исламизма приобрела особый смысл
laMer007 19.07.2016 21:11 # 0
bormand 19.07.2016 19:29 # +1
Dummy00001 19.07.2016 11:25 # 0
Fike 19.07.2016 12:05 # 0
Antervis 19.07.2016 04:57 # 0
CHayT 19.07.2016 12:31 # 0
В рантайме нужно уметь включать всё это.
Antervis 19.07.2016 14:03 # 0
Так?
codemonkey 19.07.2016 14:28 # 0
А debug_level задаётся через .kokoko.rc или argv.
А для годного дебуга так:
bormand 19.07.2016 18:32 # 0
Точка с запятой в конце нинужна.
inkanus-gray 19.07.2016 18:39 # 0
bormand 19.07.2016 18:49 # 0
З.Ы. В крестах и так граблей полно, зачем ещё свои приносить и раскладывать?
codemonkey 20.07.2016 10:23 # 0
laMer007 19.07.2016 19:03 # 0
bormand 19.07.2016 19:08 # +3
laMer007 19.07.2016 19:26 # 0
CHayT 20.07.2016 00:17 # 0
Не забыть ещё трейсить парсер этого конфига.
guestinho 20.07.2016 00:19 # +1
кто-то реально пользуется?
я думал все только пиздят пафосно, а на самом деле всё срется в один файл log.txt, в котором потом админы и программеры ищут что им нужно в куче мусора и говна, разве нет?
CHayT 20.07.2016 00:23 # 0
guestinho 20.07.2016 00:36 # 0
roman-kashitsyn 20.07.2016 00:33 # 0
Зачем так грустно, есть же syslog с роутингом по тэгам.
guestinho 20.07.2016 00:35 # 0
в сислог есть северити и фасилити
разве нет?
или ты фасилити тегом назвал?
roman-kashitsyn 20.07.2016 11:07 # 0
разве нет?
Это зависит от реализации. Стандарт много чего описывает, вплоть до возможности передавать произвольные структурированные метаданные.
Мы используем syslog-ng, он умеет фильтрацию по APP-NAME, который содержится в сообщении Похожие фичи есть в rsyslog.
CHayT 20.07.2016 11:39 # 0
Плюс если записи сливаются в хитрый буфер, а не в log.txt, то сам царь носа не подточит.
roman-kashitsyn 20.07.2016 12:27 # +1
Обвязки много писать пад сибя, не всегда оно того стоит.
Кмк, в условиях ограниченных временных ресурсов проще писать в лог только внятные полезные сообщения, которые потом помогут понять контекст и осознать причины, чем городить динамическую опердень, чтобы потом разгребать в логах произвольные "азаза прочитал 10 байт".
Ну и в сторонние либы заинтегрировать логгинг иногда весьма проблематично (I'm looking at you, libzookeeper), поэтому приходится довольствоваться тем, что есть.
codemonkey 20.07.2016 10:15 # 0
Fike 21.07.2016 00:21 # +1