
Ievgenii
17.08.2018
13:54:54
Там суть в том, что оно с коробки множество платформ поддерживает
Подобных либ уже много
Нужно только выбрать ту, что по душе
А о сравнении их производительности можно не думать

Google

Ievgenii
17.08.2018
13:56:30
Ваша бизнес логика эти проценты перекроет с лихвой...
Можно толпой какой-то фреймворк самим написать. С обсуждениями приоритетов и подходов
Вопрос только готовы ли мы...

elias
17.08.2018
14:11:35
привет. если ли для библиотека для создания простых табличек в терминале? а-ля аски-графика.

Pavel
17.08.2018
14:50:28

elias
17.08.2018
15:00:26

White_116
17.08.2018
17:52:22
Ребят, хелпаните. Как отсортировать по значению offset. Код:
struct stEntry
{
uint offset;
uint size;
}
private stEntry[string] entery;

Valeriy
17.08.2018
17:54:50
Переделай его в обычный массив и используй sort с предикатом

White_116
17.08.2018
17:55:31
да ёлки.

Valeriy
17.08.2018
17:55:51
Ассоциативный по ключам сортируется

White_116
17.08.2018
17:56:16
это я в курсе, придётся перекладывать.

Valeriy
17.08.2018
17:56:37
Этот не пэхэпэ, где массивы всё в одном.
Здесь ассоциативный массив -- суть хэшмэп

Google

Igor
17.08.2018
18:17:45
Можно попробовать соединить ключ со значентем через range.zip и отсортировать

White_116
17.08.2018
18:44:01
Переложил в обычный массив. Всеровно разовое применение.

Igor
17.08.2018
18:45:04
Переложииь это сьесть память
Зип этого не требует
Но нужно попробовать

Dmitry
17.08.2018
18:56:18

Pavel
17.08.2018
19:24:34
Нельзя просто так взять и допилить. Надо будет еще делать пулл реквест и доказывать автору что сделал улучшение

Dmitry
18.08.2018
03:52:37
Лучше уж форк чем с нуля пилить

White_116
18.08.2018
09:54:43
Какая-то странность с f.rawWrite() выдаёт Wrote 0 instead of 5 objects of type char to file `tmp.dat' (No error)
открываю фал вот так: f = File(path, "rwb");
хотя в старом проекте всё нормально работало.

Denis
18.08.2018
10:29:32

Igor
18.08.2018
11:06:09
не, не в этом дело. с TCP самим по себе можно жить

Dmitry
18.08.2018
13:13:27

Pavel
18.08.2018
13:24:23
Там уровней почти в 2 раза больше
https://github.com/vibe-d/vibe.d/blob/master/http/vibe/http/client.d#L102 британским ученым удалось выяснить, почему ООП рулит.
Потому что без него переопределение поведения части функции превращается в занятный квест, убивая всякое желание пользоваться эти языком и фреймворком :)

elias
18.08.2018
14:48:35
привет! как корректно перенести на другой раздел C:\Users\some_user\AppData\Local\dub?

Denis
18.08.2018
14:58:31

Pavel
18.08.2018
15:21:19

Google

Pavel
18.08.2018
15:23:27
Или через DI контейнер инжект компонента HTTPRequester который можно было бы тоже переопределить и заинжектить свой.

Denis
18.08.2018
17:17:24
Лучше просто кинуть эксепшен и вылететь из скоупа где этот коннект существует

Pavel
18.08.2018
18:18:23
Мне нужно подсунуть другой TCPConnection клиенту
В теории все грамотно - HTTPClient должен опираться (зависеть от) некоего TCPConnection который он создает с помощью заинжектированного сервиса. И далее гоняет по нему свои текстовые байты. Но нет, тут все намертво вшито друг в друга.
И еще там HTTP Proxy зачем то и дублируется резолвинг DNS ?

Igor
18.08.2018
18:24:31
Вот то-то и оно. Нет впечатления что всё на чем построен vibe хорошо продумано
Начиная с либасинк какие-то сплошные костыли
И, могу ошибаться, но есть вречатление что исправлять не хотят и уже не могут

Pavel
18.08.2018
18:26:48
Ну потому что системное программирование и ООП паттерны немного далеки друг от друга, ощущение что Сонке хороший системщик но архитектор из него не очень.

Igor
18.08.2018
18:27:11
Возможно

Andrey
18.08.2018
18:31:00
а libasync на чем то основан, типа libevent? или вроде он на файберах, но не уверен

Pavel
18.08.2018
18:42:15
Нет, libasync с нуля написан, причем весьма качественно
Но хотелось бы чтобы он был весь nogc, те места где там выделяется память - мне кажется их можно было избежать.

elias
19.08.2018
06:21:20
привет. запуск демо из http://code.dlang.org/packages/qui привел к эксепшену под русскую Windows в методе terminal.flush() (строка wstring writeBufferw = to!wstring(writeBuffer); )

Ievgenii
19.08.2018
06:38:19
Удобно

elias
19.08.2018
06:49:18
автор qui жаловался, что не получается получить через dub библиотечку arsd terminal от Друппи. в итоге он скопироал устаревшую версию terminal.d. https://github.com/Nafees10/qui/commit/a083a1af424913928fd914774f83a2a3f119c5f4

Ievgenii
19.08.2018
07:04:19

Denis
19.08.2018
08:59:37

Google

Pavel
19.08.2018
09:19:32
Начиная с requestHTTP, далее connectHTTP и потом connectTCP
Но возможно там есть более мелкие косяки на которые и правда можно сделать патч
Обоснуй и сделай патч?
Класс как правило состоит из нескольких атомарных методов, каждый из которых выполняет небольшую задачку, можно отнаследоваться и переопределить тело какого-либо метода не затронув основной код. С обычными функциями так не прокатывает, если функция 1 вызывает функцию 2, а та вызывает функцию 3 то такая конструкция статична и жестко закреплена. Нельзя изменить поведение функции 3, не переписав по цепочке все что ее вызывает.
Как костыль можно навешивать в функции коллбеки, но они неудобны и мешают линейному восприятию кода

Maxim
20.08.2018
06:47:35
Товарищи, есть такой вопрос: можно ли как-то в зависимости от version() делать структуру extern(Windows) или extern(C)?

Igor
20.08.2018
07:07:41
а очевидное решение не работает?

Maxim
20.08.2018
07:08:14
это какое?

Igor
20.08.2018
07:09:00
version(Windows) {
extern …
}
version(posix) {
extern…
}

Admin
ERROR: S client not available

Maxim
20.08.2018
07:09:41
придется два раза копипастить описание структуры, не хотелось бы

Igor
20.08.2018
07:10:03
можно только одну строку поместить в блок версии

Maxim
20.08.2018
07:11:04
короче, суть такова: есть некое API — набор функций в структуре, на всех платформах кроме видны они extern(C), винда, как всегда, отличилась, там они extern(Windows)

Igor
20.08.2018
07:11:55
ну можно просто алиас для типа обьявить

Maxim
20.08.2018
07:11:56
с
version(Windows) {
extern(Windows):
} else {
extern(C):
}
у меня не прокатило

Karbin
20.08.2018
07:12:14
extern(System) вроде раньше был
System is the same as Windows on Windows platforms, and C on other platforms.

Maxim
20.08.2018
07:13:00
о, спасибо, не знал)
прокатило)

Denis
20.08.2018
07:31:40

Google

Karbin
20.08.2018
07:33:44
он ещё в D1 был. нашёл тикет на эту тему почему про него не знали раньше. в документации про него ничего небыло ?

Denis
20.08.2018
07:37:24
Ааа ну ок. Я тоже о нём случайно недавно узнал.

Oleg
20.08.2018
08:57:47
а для структур то какая разница? это же соглашение о вызове методов

Denis
20.08.2018
09:01:23
там у него методы внутри структуры

Maxim
20.08.2018
09:01:24
в моем случае структура — это набор сишных функций с определенным соглашением о вызове

Oleg
20.08.2018
09:05:16

Maxim
20.08.2018
09:05:42
распространенная практика)

Denis
20.08.2018
09:05:55

Maxim
20.08.2018
09:05:59
насколько помню, API плагинов для Far так сделан с начала двухтысячных

Oleg
20.08.2018
09:06:26

Maxim
20.08.2018
09:06:35
ога

Oleg
20.08.2018
09:06:46
может не методы, а указатели на методы?

Maxim
20.08.2018
09:07:11

Oleg
20.08.2018
09:07:24
вы точно прочитали внимательно?)

Dark
20.08.2018
09:08:05

Maxim
20.08.2018
09:08:30
короче, конкретно в моем случае — подход сомнительный, структура содержит разные указатели под разные операционные системы, плюс, насколько понимаю, от версии к версии API какие-то функции могут исчезать и добавляться
проще было высунуть наружу этот API напрямую в dll или so без всяких структур

Denis
20.08.2018
18:33:22
В LDC2 добавили WebAsm!!1

Dark
20.08.2018
18:33:42
Ичо?

Denis
20.08.2018
18:34:02
Всё, кирдык вебмакакам

Dark
20.08.2018
18:36:03
Да на ди у нас ели-еле vibe.d работает, куда нам бить JS с его штамповкой фреймов

Denis
20.08.2018
18:37:40
Щас бы путать клиент и сервер