@dlangru

Страница 164 из 719
Dmitry
28.04.2017
17:03:39
Что из себя эти алгебраические типы представляют?

Oleg
28.04.2017
17:03:43
В любом случае одно из двух

Ну судя по названию числа и перечисления

Dmitry
28.04.2017
17:12:55
перечисления это набор возможных типов?

Google
Олег
28.04.2017
17:17:49
об этом тут https://dlang.org/spec/float.html говорится

Oleg
30.04.2017
12:18:12
Ребят, а кто-нибудь на arm пишет?

Имеется ввиду на d, конечно

Dmitry
30.04.2017
13:20:03
Олег, помнишь ты ссылку давал на предрелизную доку. Тогда вроде как тема была, что компилятор как библиотека. Походу это не так. Вот ответ в теме http://forum.dlang.org/post/oe4ie0$m6u$1@digitalmars.com

Oleg
30.04.2017
13:50:39
Беда(

Dmitry
02.05.2017
07:46:18
кстати, а как такое может быть, чтобы writefln выполнение проги прерывал?



Evil
02.05.2017
08:01:18
Мужики, такая тема есть. Кто что ведает?

@Lord_Evil помнишь я делал аудит Intel MEI и назвал его бэкдором? https://semiaccurate.com/2017/05/01/remote-security-exploit-2008-intel-platforms/ Сегодня подтвердили

Ну вот пишут что для эксплоита нужно чтобы был открыт порт 16992 или 16993 и на сервере была запущена виндовая local manageability service

вот же https://downloadmirror.intel.com/26755/eng/INTEL-SA-00075%20Detection%20Guide-Rev%201.0.pdf

ну судя по вемсу для сетевой атаки нужна служба и порт

для локальной надо чтоб был поставлен какой-то интеловский интерфейс

Google
Evil
02.05.2017
08:01:18
я проверил три коробки наугад,, сообщил начальству, больше меня это не ебет

Oleg
02.05.2017
09:41:50
Dmitry
02.05.2017
09:55:17
if(!point[2].hasValue || !point[3].hasValue || !point[4].hasValue) данное условие корректно записано? "если в элементе два пусто или в элементе 3 пусто или в элементе 4 пусто"

о как. оказалось что проверять есть ли значение через hasValue т.к. если ничего не прилетело, то там будет null и условие будет истино

Evil
02.05.2017
10:11:28
про intel'овские backdoor'ы?)
Любопытно, чем это нам, простым линуксоидам, грозит..

Oleg
02.05.2017
10:14:30
да вроде ничем, виндовая же фигня (прога от Intel с дыркой)

Dmitry
02.05.2017
10:52:19
как оно умудряется этот блок кода выполнять? Тут же написано, что если _не нул_, то напечатать на экран



Oleg
02.05.2017
10:55:05
так ты же тип проверяешь

может тип "строка" а значение то может быть нул

Dmitry
02.05.2017
10:56:33
понял, тогда получается так надо: if(point[3].hasValue)

и снова не работает:



@deviator а ты уверен что тут под типом понимается именно это? просто на следующем коде оно в качестве типа null выводит



Oleg
02.05.2017
11:08:42
Хз

Я с variant не работал вообще

@DmitryBubnenkov ты объясни что ты хочешь сделать

Dmitry
02.05.2017
11:51:23
я у lat и lon поменял типы со string на double и теперь у меня код падает если в БД в ответе есть null

Вот только что тему создал: http://stackoverflow.com/questions/43737136/how-to-chack-variant-for-null

Google
Oleg
02.05.2017
11:53:09
просто null это тоже ведь значение

Dmitry
02.05.2017
11:53:43
а как быть то?

Oleg
02.05.2017
11:55:28
import std.stdio; import std.variant; void main() { Variant a; a = null; writeln(a.hasValue); writeln(a.type); writeln(a.type is null); writeln(a.type == typeid(typeof(null))); writeln(a.coerce!string); } выводит true typeof(null) false true null

может использовать проверку a.type == typeid(typeof(null))

а вообще, наверное, можно сразу пробовать взять double

Dmitry
02.05.2017
11:57:44
writeln(a.type is null); выводит же false верно? значит должна работать вот такая проверка: if(point[3].type !is null) верно?

Oleg
02.05.2017
11:58:56
нет

не такая проверка

Dmitry
02.05.2017
11:59:23
сейчас попробую как ты сказал

Oleg
02.05.2017
11:59:26
стой

import std.stdio; import std.variant; double getDouble(Variant a) { if (auto ret=a.peek!double) return *ret; return double.nan; } void main() { Variant a = null; Variant b = 3.14; writeln(a.getDouble); writeln(b.getDouble); }

вот так попробуй

Dmitry
02.05.2017
11:59:42
а вообще, наверное, можно сразу пробовать взять double
дык падать будет если null прилетит...

сейчас

Oleg
02.05.2017
12:00:43
если передаваемая переменная содержит что-то, что не double (string, typeof(null) или ещё что-то), то вернётся double.nan

Dmitry
02.05.2017
12:06:43
@deviator у меня заработал вариант: if(point[3].type != typeid(typeof(null))) я наверно пока его оставлю. Вообще странно как-то. По идее null не должен быть по .hasValue равен true

Oleg
02.05.2017
12:07:03
с чего это?

Dmitry
02.05.2017
12:07:43
http://stackoverflow.com/questions/17783929/c-sharp-hasvalue-vs-null ну вот тут вроде бы оно именно так работает

Oleg
02.05.2017
12:07:44
hasValue в Variant это индикатор, что что-то записанно

а то что значение null это уже другой разговор

Google
Dmitry
02.05.2017
12:10:23
погоди, я никак в толк не возьму. в данном случае прилетает null и null хранится имеенно как значение т.е. поэтому .hasValue на нем всегда true т.е. в других случаях проверка на наличие значение давала бы false если бы мы работали не с типом Variant?

Кто знает как в других языках подобная проверка реадизуется? В том же C#

просто все варианты немного на хаки похожи...

Oleg
02.05.2017
12:35:51
вообще в языках со статической типизацией вся вот эта ерунда с Variant и чем-то похожим будет через библиотеки сделана

Dmitry
03.05.2017
05:36:23
Олег, в плане? Типа каждая либа по своему это должна обрабатывать?

Oleg
03.05.2017
07:32:21
Ну да

Dmitry
03.05.2017
07:33:18
а не проще ли в язык добавить, чтобы хоть какая-то унификация была

Admin
ERROR: S client not available

Oleg
03.05.2017
07:33:18
Хотя вот ещё пример: в js есть undefined и есть null

Dmitry
03.05.2017
07:33:30
ну в JS вообще жесть...

Dmitry
03.05.2017
07:34:26
Нет, чтобы в самом Ди были методы которые позволяли бы подобную проверку провести однотипно

мля... здец какой-то. 32-битная сборка опять после нескольких часов работы упала, а 64-битная обрабатывает запросы к БД PostgreSQL в 15 раз медленее

использую вот этот драйвер https://github.com/pszturmaj/ddb

собирал в режиме: dub --build=release --arch=x86_64

Oleg
03.05.2017
09:16:13
использую вот этот драйвер https://github.com/pszturmaj/ddb
ты прям экспериментатор, почему именно этот драйвер?

Dmitry
03.05.2017
09:16:27
потому что его на форуме посоветовали

сказали самый хороший

Oleg
03.05.2017
09:17:31
оке

смотрю разрабатывают его много людей и вроде видные участники сообщества

Google
Dmitry
03.05.2017
09:19:39
вот отписал https://github.com/pszturmaj/ddb/issues/68

мля... у меня проблема с линковкой в 32-битном режиме самоушла. Помнишь ту ошибку которую я лечил сборкой в режиме релиза. Причем даже мыслей нет почему т.к. код тот же самый практически. Единственное — может зависимости обновились в какой-то момент, но там по сути только вайб мог

Dmitry
03.05.2017
09:25:50
нет

Oleg
03.05.2017
09:25:59
хм

Dmitry
03.05.2017
09:26:49
как вариант он как-то мог подцепить Windows SDK про который мне кто-то говорил. Как замену VS

но я не помню чтобы еще раз компилятор переставлял... хотя может такое и было...

qwerty
03.05.2017
11:45:45
Замечал несколько раз жалобы, что в D нет pattern matching. Признаюсь честно, что не очень понимаю, что это такое, но насколько понял, в Rust он реализован идеально. Там он нужен для инициализации переменных (и как switch), которая зависит от чего-то. Так как в Rust нельзя объявить переменную без присвоения значения в безопасном коде, там pattern matching нужен как воздух. Посмотрев на примеры кода из учебника Rust, я написал небольшой шаблон, который делает вроде то же самое. Вопрос: все несколько сложнее, чем мне кажется или в D можно реализовать pattern matching своими силами? http://vpaste.net/qBMj6 Важный недостаток, что не lazy. Но я набросал код, чтоб понять можно или нет такое сделать в D.

Dmitry
03.05.2017
11:52:37
Вальтер писал что в начале нужно алгебраические типы (кажется) реализовать полностью. Я точно не помню формулировку, но эта тема уже поднималась

так что походу все не так просто

можешь гуглом по форуму поискать

Grigirii
03.05.2017
11:55:44
D не очень требуется pattern matching, он неплохо выкручивается через красивые лямбды: https://dlang.org/phobos/std_variant.html#.visit

я такое даже на С++ использовал для своих типов, очень удобно и читабельно

Dmitry
03.05.2017
11:58:07
Григорий, а ты с Вариантом плотно работал? Можешь предложить красивый способ проверки что в нем null. Пока что единственный вариант через указатели, щас ссылку дам

http://stackoverflow.com/questions/43737136/how-to-check-variant-for-null

Grigirii
03.05.2017
12:00:21
плотно не работал, может стоит посмотреть в сторону b.type == typeid(void), если null не работает

Max
03.05.2017
13:11:22
Замечал несколько раз жалобы, что в D нет pattern matching. Признаюсь честно, что не очень понимаю, что это такое, но насколько понял, в Rust он реализован идеально. Там он нужен для инициализации переменных (и как switch), которая зависит от чего-то. Так как в Rust нельзя объявить переменную без присвоения значения в безопасном коде, там pattern matching нужен как воздух. Посмотрев на примеры кода из учебника Rust, я написал небольшой шаблон, который делает вроде то же самое. Вопрос: все несколько сложнее, чем мне кажется или в D можно реализовать pattern matching своими силами? http://vpaste.net/qBMj6 Важный недостаток, что не lazy. Но я набросал код, чтоб понять можно или нет такое сделать в D.
В расте он нужен как воздух вообще всей системе типов (там все пользовательские типы — tagged unions, загугли что это такое и станет понятнее суть пма), а не только для раскрытия кортежей, а вот в д он как и адт в языке не нужен и будет ни к селу ни к городу рядом с динамическим ООП.

Dmitry
03.05.2017
13:14:58
Как я понимаю паттерн матчинг это switch на стероидах и там можно очень красиво все проверять в отличие от того же switch'a

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