@dlangru

Страница 660 из 719
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
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
самый лучший вариант это написанная на чистом D хорошая либа, но гже найти людей кторые это напишут и будут поддерживать
Я все же считаю что не надо либ плодить. У тебя хоть от либ-асинк и осталось неприятное послевкусие, но если в ней нет фундаментальных проблем лучше ее допилить

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");

хотя в старом проекте всё нормально работало.

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

Dmitry
18.08.2018
13:13:27
Не захотели OSI внедрять лет 20 назад теперь страдают
Не увидел, чем osi превосходит tcp/ip. Но, надеюсь, что просто от того, что опыта мало.

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?

Pavel
18.08.2018
15:21:19
Оно и с ООП тоже так
Нет. С ООП был бы метод this.connectTCP() который бы переопределялся на раз-два

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

Denis
18.08.2018
17:17:24
Нет. С ООП был бы метод this.connectTCP() который бы переопределялся на раз-два
Мне кажется, ты предлагаешь менее правильный способ потому что в этом случае придётся состояние коннекта проверять

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

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
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
extern(System) вроде раньше был
Наоборот, раньше небыло - недавнее нововведение

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
распространенная практика)

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

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
Щас бы путать клиент и сервер

Страница 660 из 719