
Andrey
30.08.2018
20:09:28

Pavel
30.08.2018
20:10:11
TCPConnection это структура а не интерфейс

Andrey
30.08.2018
20:10:26
хммм
https://github.com/vibe-d/vibe.d/blob/master/core/vibe/core/net.d#L347

Google

Pavel
30.08.2018
20:13:47
Выглядит как старый код
https://github.com/vibe-d/vibe-core/blob/master/source/vibe/core/net.d#L471 вот это должен быть новый

Andrey
30.08.2018
20:16:22
а, мой из vibe-d, твой из vibe-core

Pavel
30.08.2018
20:19:40
Ну и допустим у тебя есть большая библиотека в проекте которая активно работает с этими соединениями. И тебе вдруг захотелось подебажить и посмотреть сколько трафика проходит через все коннекты, вести статистику какую-то, или даже шейпить скорость. Что делает ООП нормального человека? Создает class MyTcpConnection : TCPConnection с переопределенными методами read/write, подсовывает этот класс везде где идет работа с соединением. И все прекрасно работает.
Что делает структура курильщика? Да ничего она не может сделать.
Таких случаев куча, всегда нужно что то навесить на методы, хотя бы логирование, какое то свое поведение добавить. Или передать в конструктор свои объекты. Но со структурам просто так нельзя делать это.

Andrey
30.08.2018
20:27:14
ну видимо, есть причина, почему интерфейс на структуру заменили. это надо разбираться)

Pavel
30.08.2018
20:27:52
Думаю что из-за производительности (

Oleg
30.08.2018
20:46:10
развели тут) можно классы и без gc
просто нужно ли...

Ievgenii
30.08.2018
21:17:38

Oleg
30.08.2018
21:18:37
можно ещё аллокаторы заюзать из std

Google

Ievgenii
30.08.2018
21:19:17
Ну смотри
Я выделил под него память
Но как получить сам объект - я не понял

Igor
30.08.2018
21:30:26
Там есть хелперы make, nakearray

Andrey
30.08.2018
21:39:01
Но как получить сам объект - я не понял
в смысле? emplace, или ты про что class Foo
{
int x;
this(int _x) { x = _x; }
}
auto buf = new void[__traits(classInstanceSize, Foo)];
auto foo = emplace!Foo(buf, 42);
writeln(foo.x);

Ievgenii
30.08.2018
21:40:17
А это @nogc?

Andrey
30.08.2018
22:05:12
class Foo
{
int x;
this(int _x) @nogc { x = _x; }
}
Foo makeFoo(int x) @nogc
{
import core.stdc.stdlib;
auto buf = malloc(__traits(classInstanceSize, Foo));
Foo foo = cast(Foo)buf;
foo.__ctor(x);
return foo;
}
конечно, это нахер не надо

Pavel
30.08.2018
23:09:50
Без gc можно, но без рантайма никак не создать насколько я помню, то есть в betterc

Karbin
31.08.2018
04:17:28
судя по теме на форуме классы с ARC всё ещё пилят. и может в один прекрасный момент будет выбор - писать с gc или без него

Ievgenii
31.08.2018
05:12:51

NullSanya
31.08.2018
05:13:41

Karbin
31.08.2018
05:15:20
раньше точно работало
https://github.com/gecko0307/dlib/blob/5fb9489afb0b74f2b45aec15edfc5af8c03ac7c2/dlib/core/memory.d#L135
как пример, что работает

Stepanos
31.08.2018
06:47:34
крутой пример

NullSanya
31.08.2018
07:02:18

Karbin
31.08.2018
07:16:44
emplace делает примерно тоже, что в этом коде. или замени emplace на свой шаблон

NullSanya
31.08.2018
07:26:39

Karbin
31.08.2018
07:28:26
из-за .init скорее всего. момент, поищу пример с __ctor. видел у кого-то

Google

NullSanya
31.08.2018
07:39:03

Karbin
31.08.2018
07:39:40
что-то подобное встречал только у h3r3tic в boxen, но это было во времена d1. да и то там используется classinfo для инициализации

NullSanya
31.08.2018
07:40:24
там же скорее всего указатель на виртуальную таблицу идет
Может еще что

Karbin
31.08.2018
07:41:20
https://bitbucket.org/h3r3tic/boxen/src/76f3fab1b8897afb00fff48ed749b8b95fd46611/src/xf/mem/OSHeap.d?at=default&fileviewer=file-view-default#OSHeap.d-28 если кому интересно
немного подругому в ScratchAllocator там же

Igor
31.08.2018
07:43:29
а почему вы игнорите это auto p = make!(V)(allocator); ?
оно делает всё что нужно вроде

Karbin
31.08.2018
07:46:02
кстати да, в betterC всё равно классы использовать нельзя
кому-то не нравится experimental в названии пакета...

Igor
31.08.2018
07:46:48
а, точно )
но бывает и так что std. превращается в stdx )

Igor
31.08.2018
07:47:41
ведь experimental.allocator движется в std ?

Karbin
31.08.2018
07:48:27
теоретически да, не следил за ним давно

NullSanya
31.08.2018
07:49:37
Вот, везде классинфо нужен, це минус

Karbin
31.08.2018
07:55:09
ждём классы в betterC ?

NullSanya
31.08.2018
08:02:30
Или пишем со своим рантаймом

Denis
31.08.2018
08:03:12

Karbin
31.08.2018
08:03:12
тоже вариант. но сложнее на порядок

Google

Evil
31.08.2018
08:24:30

Igor
31.08.2018
08:43:20
а кто-нибудь работал с angular и знает что такое у него HttpInterceptors ?

Ievgenii
31.08.2018
10:08:26
Да, не удобно писать
const(Service) service = {name:"",...}
return service;
Куда проще что-то типа
return const(Service){name:"", ...}

Evil
31.08.2018
14:32:36

Denis
31.08.2018
14:33:21

Evil
31.08.2018
14:37:25

Admin
ERROR: S client not available

Evil
31.08.2018
14:37:25
Тип такого
И попробую еще один крутой
Генерирует анимашных девочек по ряду данных
Тип таких
Это я функцию определения перехода использовал
Между тремя сгегерированными
Очень прикольно
Хоть я и не ыанат аниме

Google

Dark
31.08.2018
14:41:10
Magick

Igor
31.08.2018
14:41:30
даёшь ghibli

Evil
31.08.2018
14:41:51
Ну помогите, ну :)
Ща спать, завтра на связи

Dark
31.08.2018
14:46:00
Это все на D?

Toha
31.08.2018
14:46:19

Evil
31.08.2018
14:49:26
Это все на D?
Первое на окамл, перекодированный в js, втрое на js.
Ну, не моё)

Dark
31.08.2018
14:49:51
Обрадовал хотя бы

Evil
31.08.2018
14:49:58
Я тактично "коллекционирую"

Dark
31.08.2018
14:50:03
А то моя самооценка стремительно упала
xDD

Evil
31.08.2018
14:50:15
Генератор идеальных лабиринтов, со стенками в клетку (под мацнкраыт типа), такого не смог нагуглить, пришлось писать
Завтра покажу
На D

Toha
31.08.2018
14:53:18
я делал генератор усербаров много лет назад на пчп+луа
но там все просто

zts
31.08.2018
14:53:48
юзербары эх ностальгия

Toha
31.08.2018
14:54:49
да
там на луа логика рисования описывалась)