
Dmitry
15.05.2017
09:33:46
Мне нужно формировать кликабельное оглавление из MD в котором пишется книга
<div 1> будет дальше заменено урлом ведущим на каждую главу

Ned Ogl
15.05.2017
10:49:12
А что мешает сразу с урлами писать в MD?
Блин, я перестал понимать суть дела

Google

Dmitry
15.05.2017
10:51:10
это дико геморойно писать сразу урлами. проще писать так, потом конвертить в html

Ned Ogl
15.05.2017
10:51:44
Ща порешаем, крч
скинь код
Парсишь из stdin?

Dmitry
15.05.2017
10:52:45
нет, читаю как файл, но тебе проще в переменную все загнать

Ned Ogl
15.05.2017
11:03:41
Тогда объясни задачу поподробнее

Dmitry
15.05.2017
11:04:28
Я книгу пишу в формате MD мне его нужно преобразовать в HTML обернув каждую главу в div

Ned Ogl
15.05.2017
11:04:31
Хотя я кажись понял
Все, все вкурил
Хедер с одной решёткой - минимальный уровень вложенности
Максимальный не ограничен

Dmitry
15.05.2017
11:05:31
пока их не более 4-ех будет думаю
Кстати, а вообще на сколько правильно оборачивать каждую функцию которая теоретически может упасть в try-catch?

Google

Dmitry
16.05.2017
08:38:24
Еще. предположим функция возвращает что-то. Но может упасть. Как быть с ее return ? Ведь он в секции try находится, а как быть с секцией catch?

Denis
16.05.2017
08:54:58
она выходит в return не оставляя ничего (он не будет присвоен)

Dmitry
16.05.2017
08:57:59
Денис, не совсем понял, он мне даже скомпилировать не дает т.к. no return exp; or assert(0); at end of function

Denis
16.05.2017
08:58:32
Код покажи?

Maxim
16.05.2017
08:58:33
ловить исключения имеет смысл только там, где ты сможешь их обработать

Dmitry
16.05.2017
08:58:59
мне пока для дебага нужно т.к. не совсем понимаю где падает

Maxim
16.05.2017
08:59:13
все исключения пробрасываются вверх по стеку до ближайшего подходящего catch, если такого не найдено, программа упадет с unhandled exception
если функция что-то возвращает, и в ней есть try-catch, то, соответственно, нужно делать какой-то return и в блоке try, и в блоке catch

Dmitry
16.05.2017
09:00:17
carGPSPoint [] getSingleTrackInfo()
{
try
{
carGPSPoint [] cargpspoints;
...
return cargpspoints;
}
catch(Exception e)
{
}
}

Maxim
16.05.2017
09:01:11
тут можно в catch болке возвращать, например "нулевое" значение carGPSPoint)

Dmitry
16.05.2017
09:02:08
и потом при приеме делать проверку что прилетело что-то?
cargpspoints.length > 0 ? Или типа того?

Denis
16.05.2017
09:02:49
Скорее всего, тебе carGPSPoint в случае exception не нужен
иначе ты бы его до try присвоил

Dmitry
16.05.2017
09:03:31
т.е. из блока catch исключение выше пробрасывать?

Maxim
16.05.2017
09:03:47
тогда можно просто без try-catch функцию написать)
исключение автоматически пробросится, и начнет разворачиваться стек до места, где это исключение обработается

Denis
16.05.2017
09:05:12
Ааа понял - тут вообще try/catch не нужен
эту ошибку отловишь где-то выше

Google

Denis
16.05.2017
09:05:35
можешь сделать rethrow со своим exception class если нужно

Dmitry
16.05.2017
09:06:29
погоди, если он не нужен, то как мне проинформировать что у меня тут что-то упало?

Denis
16.05.2017
09:07:16
если ты тут ловишь исключение то если перестанешь ловить его выше кто-то поймает
а в твоём случае его выше ловить и нужно, там откуда эту функцию позовут, например

Maxim
16.05.2017
09:07:34
а кого проинформировать надо-то?)

Dmitry
16.05.2017
09:08:30
м... кажется понял
А хотя у меня вызов его так идет:
calcNearestRoadDistanceForEveryTrackPoint(__getSingleTrackInfo__(GPSAndSensor, select_type), GPSAndSensor);
подчеркивание добавил для наглядности

Maxim
16.05.2017
09:10:26
в идеале можешь все тело main обернуть в try {} catch(Exception e){}, и в catch писать что-то типа "такая-то фигня случилась, чуваки, извиняйте")

Dmitry
16.05.2017
09:12:29
Так, а если scope(failure) writeln("") добавить, чтобы хоть глазами можно было заметить что там упало?

Maxim
16.05.2017
09:12:52
так в эксепшене же есть текст с объяснением
https://dlang.org/library/object/exception.html
и даже место в исходниках и стэк трейс есть)

Maxim
16.05.2017
09:15:57
Таким образом, когда у тебя в руках есть объект исключения, ты можешь сказать, что за ошибка произошла, в каком файле, на какой строке, и какая была последовательность вызовов до возникновения ошибки. Информация более чем исчерпывающая)

Denis
16.05.2017
09:18:34
Не более чем - можно ещё своего туда всякого разного дополнительно напихать, на своё усмотрение

Maxim
16.05.2017
09:20:09
можно, но и этой информации достаточно, чтобы локализовать проблему хотя бы на начальном этапа)

Denis
16.05.2017
09:21:30
эксепшены предназначены не для дебага

Dmitry
16.05.2017
09:22:58
а дебажить чем лучше? Ну если по грубому

Denis
16.05.2017
09:24:11
эээ ну я к тому, что эксепшены, конечно, для ошибок, и хорошо что они несут в себе сообщение и строку в ди, но вообще это часть неосновного воркфлоу программы

Maxim
16.05.2017
09:26:01
исключительные ситуации, внезапно, сделаны для обработки исключительных ситуаций)

Denis
16.05.2017
09:26:26
Исключительных в рамках функции, а не всей программы

Google

Maxim
16.05.2017
09:27:22
исключительных в рамках головы программиста)

Dmitry
16.05.2017
11:38:05
так, а как результат map в строку проще всего преобразовать?
ничего умнее чем join не придумал:
string sensor_and_gps = x.map!(a=>a).array.join();

Oleg
16.05.2017
12:04:45
А зачем map в этом случае?
Он же никак не меняет x
Вообще x это массив строк?

Dmitry
16.05.2017
12:06:29
блин, точно
я по инерции его уже написал

Oleg
16.05.2017
12:30:47
Ну и соответственно array не нужен

Admin
ERROR: S client not available

Dmitry
16.05.2017
13:35:02
Кстати, а кто dconf смотрел? Что там интересного рассказывали?

Oleg
16.05.2017
13:50:56
Читал презентации
Много интересного

Dmitry
16.05.2017
13:52:31
Из вещей более или менее высокоуровневых (не говоря про указатели и прочее) что интересного?

Oleg
16.05.2017
14:24:03
Да всё интересно, кроме пары докладов
Мне особо запомнились 2
Один про перевод многих моментов из рантайма на шаблоны
Другой про ldc, где dcompute
Типа cuda, opencl сразу в d коде

Dmitry
16.05.2017
14:26:35
про ML и подобные темы не говорили? Как я понимаю нейронную сеть сейчас написать можно в 500 строк кода без сторонних либ даже

Google

Oleg
16.05.2017
14:27:34
Нейросеть можно написать без сторонних либ на любом языке

Dmitry
16.05.2017
14:28:50
так вроде Ди сам бог велел занять место Python на этом поприще. Просто вроде бы на Ди куда быстрее рассчеты чем на разных numpy

Oleg
16.05.2017
14:29:15
Numpy сам по себе С-шный
Так что тут хз

Dmitry
16.05.2017
14:30:55
Как я понимаю он кучу собственных типов реализует т.е. чтобы массив из Питона в Numpy передать нужно делать каст т.е. оверхэд дикий

Pavel
16.05.2017
14:32:25
Да ну камон, а в ди ты 2 дня трахаешься с mysql библиотекой и не можешь понять куда память утекает. Чем это лучше? :))
Сыроватость языка и сложность в обнаружении проблем это очень плохая вещь.

Oleg
16.05.2017
14:35:49

qwerty
16.05.2017
14:39:20

Oleg
16.05.2017
19:34:50
призабыл, тут обсуждали вопрос же почему используется bugzilla, а не github issues? как мне видится потому что кому либо лень написать код, который бы конвертировал из bugzilla в github, используя github api (к базе bugzilla же должен быть прямой доступ)
кроме этого аргумента есть ещё соображения? может кто-то где-то вычитал? поиск по форуму на слова github issues выдаёт всё подряд... и как бы моё предположение не было правдоподобным (насчёт "лень написать"), всё-таки есть небольшое опровержение: бота для связи bugzilla и github написали ведь (https://github.com/dlang-bot)

Denis
17.05.2017
05:14:23
А на гитхабе задним числом закрытые баги можно вписать?
закрытые баги тоже ценны

Dmitry
17.05.2017
05:29:11
Да вроде можно. Я думаю проще было бы новые баги просто начать в гите создавать

Denis
17.05.2017
05:38:01
Тогда даты создания уедут

Dmitry
17.05.2017
05:47:12
А чем это плохо?
Там щас скока багов? А то я щас пока с телефона посмотреть не могу

Denis
17.05.2017
06:05:01
Ну как чем? Важно знать когда баг был, потому что вдруг он уже пофикшен сам по себе?
всё важно, не надо инфой разбрасываться

Oleg
17.05.2017
06:20:40

Denis
17.05.2017
11:29:29
Как передать функцию в шаблонный аргумент функции?
alias Tfunc не канает, т.к. не проверяет какие аргументы у функции - всегда прокатывает с любой функцией
(Мне надо чтобы в шаблон в аргументе подставлялись только функции, подпадающие под определённые наборы аргументов и возвращаемых значения)

Oleg
17.05.2017
12:29:57
Можно проверить в ограничении сигнатуры