
Oleg
24.03.2017
20:17:26
именно beta, а не head с master
LOL
403 ошибка при скачивании
мне не разрешают новый компилятор(

Google

Oleg
24.03.2017
20:18:34
http://downloads.dlang.org/pre-releases/2.x/2.074.0/dmd-2.074.0~b1-0.fedora.x86_64.rpm
у всех так, или у меня только?

Maxim
24.03.2017
20:19:09
у меня так же

Shorty(Ale Chapa) Manskiy
24.03.2017
20:19:30

Oleg
24.03.2017
20:19:55
ну так это master
прям самый самый свежак
самый самый сырой

Shorty(Ale Chapa) Manskiy
24.03.2017
20:20:16
ну естественно мастер.

Oleg
24.03.2017
20:22:58
кстати на все платформы
опять косячат)

Shorty(Ale Chapa) Manskiy
24.03.2017
22:03:29
Я не знаю ассемблер, но IDA Pro примерно такой код показывает:
// dmd file -O -release -inline -boundscheck=off
T f1(ref T[] arr)
{
uint len = arr.length;
uint idx = 0;
T* item = arr.ptr;
if (len) {
do {
if (arr[idx] > *item)
item = &arr[idx];
++idx;
} while (idx < len);
return *item;
}
return 0;
}
void f2()
{
uint idx = 0;
T item = arr[0];
uint len = arr.length;
if (len) {
do {
if (arr[idx] > item)
item = arr[idx];
++idx;
} while (idx < len);
}
}
return 0; - там такого небыло, это я сам добавил.

Google

Shorty(Ale Chapa) Manskiy
24.03.2017
23:26:48
в теле benchmark: f1- вызывается каждую итерацию; f2 - полностью встраивается.

Dmitry
25.03.2017
06:49:41
э...
Bar b = new Bar();
b.message = { return "Basic progress bar"; };
Последняя строка в данном случае что делает? на метод message веiает текст?

Oleg
25.03.2017
06:59:30
message в этом случае либо delegate, либо function (либо @propetrty, которая их принимает), просто происходит присвоение переменной
message потом можно вызвать как метод, который вернёт строку

Pavel
25.03.2017
09:59:05
Что то мне разонравилась идея читать из сокета в структуру
Почти все пакеты в socks5 переменной длины, получается структура отражает фиксированную часть пакета, потом мы смотрим длину оставшейся части и дочитываем пакет. Криво-костыльно.

Dmitry
25.03.2017
10:54:26
Альтернатива какая?

Сергей
25.03.2017
11:03:41
Никакой, это нормальный способ передачи данных по tcp

Pavel
25.03.2017
11:37:53
Альтернатива - каждый пакет представлять в виде класса
И в класс засунуть логику чтения
Там правил немного. "Прочитай байт из сокета", "прочитай столько байт сколько в первом полученном байте из сокета",

Maxim
25.03.2017
11:52:53
не думаю, что это хорошая идея, покси должна быть быстрой, а создание объектов — операция с огромными накладными расходами)
в идеале, конечно, это область, где очень подходит чистый C или C-подобный D, как раз и скилл можно прокачать и понять, насколько удобно использовать D без всяких навороченных плюшек, т.е. насколько он вообще подходит для системного программирования)

Pavel
25.03.2017
12:47:04
тогда придется еще писать бенчмарк для прокси
у меня в целях сейчас написать учебный прокси, и чтобы он был во-первых максимально кратким, а во-вторых максимально понятным для всех кто впервые видит код.
Я щас изучаю аналогичный исходник на c++ и там много каши

Dmitry
25.03.2017
16:18:59
Никак не пойму на что он тут ругается:

Pavel
25.03.2017
16:20:27
Похоже что он ожидает символ а не строку? Попробуй '#'

Dmitry
25.03.2017
16:21:17
судя по дока он строку тоже должен понимать:
assert(startsWith("abc", ""));

Google

Dmitry
25.03.2017
16:21:57
с символом такая же фигня
все, кжется дошло, он не понимает что content нужно сплитом бить
и видимо его по символам пытается обработать

Oleg
25.03.2017
16:46:46
если ты написал foreach (line; somestring) это не значит, что компилятор увидев line будет по строкам итерировать somestring =)
есть splitByLines (кажется так)

Dmitry
25.03.2017
16:48:08
угу
lineSplitter заюзал
А есть ли способ при:
foreach(line; content.lineSplitter)
понять что мы находимся на последней строке файла? и дальше конец

Oleg
26.03.2017
09:15:59
А как проще это сделать я даже не знаю) D же не итератор возвращает

Pavel
26.03.2017
11:46:39
Наткнулся на BigEndian когда читал ushort из сокета, пока решил проблему встроенной функцией swapEndian()

Eto
26.03.2017
11:48:41
https://www.youtube.com/watch?v=WaNLJf8xzC4

Oleg
26.03.2017
12:09:23

Pavel
26.03.2017
12:09:43
У меня это как-то не сработало
Вообще я больше всего борюсь с проблемами кастования типов между собой.
ubyte[4] в uint он не хочет сам переделывать ?

Oleg
26.03.2017
12:11:49
union, не?

Pavel
26.03.2017
12:12:59
Да вот мне думается должен быть какой-то более высокоуровневый способ

Oleg
26.03.2017
12:21:38
Да это вообще не высокоуровневая задача

Google

Pavel
26.03.2017
12:23:11
Ну мне надо подключаться к серверам, и я щас набрел на замечательную структуру InternetAddress, похоже что надо ее 1 раз заполнить IP адресом и портом и далее везде использовать. И никаких левых кастований.

Oleg
26.03.2017
12:47:07
Возможно

Maxim
26.03.2017
17:07:57
кастования — это вообще самая низкоуровневая вещь, какая может быть)
как вариант, для little endian:
uint i = b[0] | b[1] << 8 | b[2] << 16 | b[3] << 24;

Shorty(Ale Chapa) Manskiy
27.03.2017
23:37:47
Кто знает сколько людей работает в Digital Mars?

Dmitry
28.03.2017
03:33:26
Я всегда думал что это только одно название. Просто регнули контору и все

Matero
28.03.2017
03:48:30
Всем привет! Котаны кто-нить сможет до понедельника 500 в долг дать?
с меня тонны нефти, благодарности и если надо могу с вёрсткой помоч
хотя кому сейчас вёрстка сдалась... и тем более в таком чате

qwe
28.03.2017
07:34:44
Как можно вернуть объект структуры без копирования из метода и без GC? Только если передать по ссылке и изменить внутри метода или своять свой умный указатель?

Admin
ERROR: S client not available

Maxim
28.03.2017
07:35:21
объект структуры?
а, инстанс что ли?
структуры на стеке создаются, без GC, делаешь структуру, передаешь ее по ссылке и меняй пожалуйста)
вернуть без копирования не получится

Oleg
28.03.2017
07:38:10

qwe
28.03.2017
07:38:50
кто-нибудь знает valgrind показывает актуальную информацию для программ, написанных на D?
в hello world у меня 2 утечки на dmd. А на ldc 7 утечек

Google

Shorty(Ale Chapa) Manskiy
28.03.2017
09:29:23
Я не знаю, что там valgrind считает утечками (никогда им не пользовался), но возможно это из-за того, что GC не собирал память, ведь зачем ее собирать в Helloworld, если ОС сама все сделает.

qwe
28.03.2017
09:32:11
логично, но я на работе хотел презентовать D, а тут такое(

Shorty(Ale Chapa) Manskiy
28.03.2017
09:34:08
и это не утечка памяти, т.к. если понадобится, то GC "соберет" ее. Утечка памяти - это тогда, когда она вообще не собирается.

qwe
28.03.2017
09:34:29
да я-то понимаю
https://github.com/dlang/druntime/pull/1557 PR еще висит

Dmitry
28.03.2017
09:36:32
Вопрос на засыпку. Почему Nim транслируется в Си, а не использует LLVM как кодогенератор?

Shorty(Ale Chapa) Manskiy
28.03.2017
09:38:04
хз, возможно из-за того, что если C, то это по определению больше платформ чем LLVM...

Max
28.03.2017
09:38:05
Потому что он вообще в разные языки транслируется, это такой DSL над плюсами, жсом и прочим как и хакс, сколько самостоятельный язык.

Pavel
28.03.2017
12:45:18
Есть идеи как можно соединить 2 сокета? Чтобы то что читается из одного сразу писалось в другой и наоборот
Есть socketPair() но не очень понятно как ее использовать

Oleg
28.03.2017
13:30:34
socat вроде умеет
ну эт к D не относится

Pavel
28.03.2017
13:40:24
ладно
я почти закончил пре альфу моего прокси. уже наполовину работает с голыми ip адресами. осталось разобраться почему он пишет в начале на клиент десяток байт какой-то чуши, и можно будет публиковать на ревью.

qwe
28.03.2017
15:28:44
В таком количестве атрибутов есть смысл?
size_t location() const pure nothrow @nogc @property
я бы только const и @property оставил

zk
28.03.2017
15:29:31
@safe забыл.

qwe
28.03.2017
15:29:36
я знаю что они все означают

Maxim
28.03.2017
15:29:45
а в @property сейчас вообще смысл есть?

qwe
28.03.2017
15:29:48
но действительно ли они нужны
стоп
прошу прощения
забыл сказать, что в методе одна строка