
Dmitry
11.02.2017
12:14:10
да вот в этом и проблема что некоторые статьи только путают...

Сергей
11.02.2017
12:17:06
Ну блин, все примитивно же.
У тебя есть почтовый ящик, там лежит письмо.
Вот письмо это данные, а номер твоей квартиры это обозначение ящика
Считай указатель

Dmitry
11.02.2017
12:18:06
указатель равен размеру адресу памяти тогда получается?

Google

Сергей
11.02.2017
12:18:23
Указатель равен разрядности процессора
Или 32 или 64 бита

Мерлин
11.02.2017
12:19:28

Dmitry
11.02.2017
12:22:51

Сергей
11.02.2017
12:28:25
Нуу
Ты говоришь
Возьми указатель и приведи его к типу ubyte
При этом у тебя утечка памяти на 100кб
Так как указатель ты потерял

Мерлин
11.02.2017
12:29:47

Dmitry
11.02.2017
12:32:00

Мерлин
11.02.2017
12:32:48

Dmitry
11.02.2017
12:33:11
Хочу просто выделить кусок памяти (и как мне тут сказали забить его чем-то иначе он занят не будет)

Сергей
11.02.2017
12:34:34
Привести к ubyte*?

Google

Мерлин
11.02.2017
12:35:14

Dmitry
11.02.2017
12:36:16
Просто хочу выделить куоск памяти и на самом тупом уровне в таскменеджере убедиться что программа стала занимать больше памяти

Сергей
11.02.2017
12:47:46
Ну void* data = malloc...
Выделил, смотри:)

Dmitry
11.02.2017
12:48:51
в таком варианте?
void* m = cast(ubyte)malloc(100_000);

Сергей
11.02.2017
12:49:27
Нет
Пока не поймешь что такое указатель, прогресса не будет)
Это ключевые знания

Dmitry
11.02.2017
12:58:48
в голове "указатель указывает на адрес в памяти значения переменной" в голове упорно сидит такая мысль

Мерлин
11.02.2017
12:59:33

Dmitry
11.02.2017
12:59:39
представил

Мерлин
11.02.2017
13:00:07
Вот тогда указатель - это переменная, в которой лежит номер ячейки массива
То есть например "элемент номер 5"

Dmitry
11.02.2017
13:03:46
"cast(ubyte)malloc(100_000)"
выделяю память в байтах?

Сергей
11.02.2017
13:04:23
ну блин, ты не стараешься
ты пишеш одну и туже строчку

Dmitry
11.02.2017
13:05:29
Так ладно, видимо работа с памятью напрямую пока не мое...
Т.к. вроде бы я понимаю что вы мне тут говорите, но видимо все равно не так

Мерлин
11.02.2017
13:06:07
ftp://telezhnikov.com/other/result-A4-v0_1.pdf

Google

Сергей
11.02.2017
13:08:40
ну тебе надо просто 1 символ добавить в свою строчку что бы заработало

Мерлин
11.02.2017
13:09:08
Я всегда говорил, что первым языком должен быть C

Сергей
11.02.2017
13:10:10
согласен ?

Мерлин
11.02.2017
13:10:32
А то обколются своими yieldами, а потом не знают что такое указатели (

Dmitry
11.02.2017
13:12:28
ну да, жаль я с Си не знаком.
Методом тыка понял, что память нужно каставать не к типу, а к указателю. В голову не укладывается правда идея, но в итоге оно при старте падает с ошибкой "программа была завершена"...
auto m = cast(ubyte*)malloc(100_000);
for(size_t i; i<size_t.max; i++)
{
m[i] = 0;
}

Сергей
11.02.2017
13:12:49
конечно :)
ты выделил 100_000 элементов
а пытаешься записать "4 294 967 295" ( если у тебя 32битная сборка)

Dmitry
11.02.2017
13:16:22
О, смог выделить память
спасибо)

Сергей
11.02.2017
13:20:17
ну теперь задача освободить выделеную память :)

Dmitry
11.02.2017
14:52:46
Решил немного отдохнуть и дальше с БД потупить)
Итог: нельзя выполнять подключение в конструкторе т.к. иначе БД может не успеть ответить и объект подключения будет еще не инициализирован, а код побежит дальше
Ребят, есть тема. У меня на связи Араб. Там онлайн игра, серверная часть которой написана на Ди. Клиент на флеше. Клинт на флеше очень корявый. Серверная часть самописная. Как они взаимодействуют я хз, сорцы как мог посомтрел, но общая логика не ясна. Нужно исправить две ошибки.
1. один и тот же пользователь может логиниться больше 1 раза в систему
2. При его повторном входе игра сбраывается.
Работа через ТимВью. Илья Ярошенко запросил больше 200 баксов за фикс. Арабам это показалось дорого. Если кому интересно отпишитесь...


Dmitry
11.02.2017
16:09:45
Гарантий с моей строны никаких. Просто транслирую сюда.
Он упорно предлагает две проблемы за 50 баксов.
Как я понимаю там одна проблема примерно решена, нужно только проверить блок кода. Остается лишь проблема с повторным логином.
На сколько правильно классам и структурам давать одинаковые навания?

Oleg
11.02.2017
19:11:15

Dmitry
12.02.2017
05:39:07
На сколько вообще коректно на null пhоверять вот так?
auto x = null;
if(!x)
writeln("not null");

Сергей
12.02.2017
05:42:34
Работать все будет правильно

Dmitry
12.02.2017
05:44:13
null авnоматом приводится к false?

Google

Dmitry
12.02.2017
05:44:24
null это с точки зрения языка вообще что?
Я просто с той точи зрения спрашиваю, что с как быть если мне нужно проверить установлено ли подключение. Раньше я писал так:
if(connection !is null)
но могу ли я просто
if(connection) написать?

Сергей
12.02.2017
05:53:58
null это 0
false это тоже 0
Просто типы разные
Если компилятор без проблем приводит такие типы, то пользуйся на здоровье
Вот только connection у тебя это класс?

Dmitry
12.02.2017
05:55:06
да

Сергей
12.02.2017
05:55:14
У него могут быть перегружены операторы

Dmitry
12.02.2017
05:55:44
и к чему это может привести?

Сергей
12.02.2017
05:57:46
Ну к поведению которое ты не ожидаешь

Admin
ERROR: S client not available

Dmitry
12.02.2017
05:58:04
А вот так тогда правильно будет?
if(connection !is null)
@deviator а как бы ты называл класс для работы с пользователями и структуру в которой хранятся данные пользователя?
Чтобы имена были адекватные. Просто у меня сейчас класс называется: User но непонятно как структуру назвать

Oleg
12.02.2017
13:00:07

Сергей
12.02.2017
14:49:23
А зачем тебе структура если есть класс?

Dmitry
12.02.2017
15:06:37
@BorMor вот тут какая история http://stackoverflow.com/questions/42185524/should-users-be-class-or-arrays-of-structures
Я в начале данные записывал в поля класса, а потом понял, что это путь вникуда

Сергей
12.02.2017
15:10:04
Странный вывод

Dmitry
12.02.2017
15:10:11
да?

Сергей
12.02.2017
15:11:43
Ну какой смысл тебе хранить структуры?

Google

Сергей
12.02.2017
15:12:03
Впросто зачем? В чем профит?

Dmitry
12.02.2017
15:13:02
Просто поля класса же могут быть перезаписаны другим обращением, разве нет?

Сергей
12.02.2017
15:13:23
Что?
Каким обращением

Dmitry
12.02.2017
15:14:23
Ну вот допустим:
user.getUserByName("dima")
user.getUserByName("vasia");;
т.е. и в том примере который на SO будет проблема, что значения будут для этих двух параметров в поле класса записываться

Сергей
12.02.2017
15:16:25
просто не надо писать ужасный код
User user = new User(database);
user.getUserByName("admin");
это же ад какойто

Dmitry
12.02.2017
15:17:05
да?

Сергей
12.02.2017
15:17:13
ну ужасный код, без смысла

Dmitry
12.02.2017
15:17:18
а как надо?

Сергей
12.02.2017
15:17:41
User user = new User(database, "admin");
никто ничего не должен возвращать
user это юзер

Dmitry
12.02.2017
15:18:17
а... я понял, пока это просто заготовка. т.е. через конструктор нет смысла передавать т.к. позже это будет роутинг отрабатывать

Сергей
12.02.2017
15:18:18
user,setName("blabla").
запишет в базу
какой нафиг роутинг, проблема в архитектуре
вот что должно вернуть user.getUserByName("admin");
?
структуру?
зачем тогда тебе класс User?

Dmitry
12.02.2017
15:21:54
а... кажется понял... буду пробовать

Сергей
12.02.2017
15:22:13
и массив структур это тупо
вот у тебя френдлист как будет выгледеть?
набр структур..
а если у тебя 100 человек... у тебя будет 100500 копий одних и техже структур?