@dlangru

Страница 125 из 719
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
указатель равен размеру адресу памяти тогда получается?
Указатель - это считай индекс массива (более того, это так и есть, виртуальная память, если грубо, выглядит как массив бесконечно большого размера) И его размер зависит от архитектуры, обычно 32 или 64 бита

Dmitry
11.02.2017
12:22:51
Указатель равен разрядности процессора
А как быть если нужно указать на 80-битовый тип или еще какой-то который больше битности процессора?

Ты скастил указатель в ubyte?
Разве оно не кастит в ubyte? auto m = cast(ubyte)malloc(100_000);

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

При этом у тебя утечка памяти на 100кб

Так как указатель ты потерял

Мерлин
11.02.2017
12:29:47
А как быть если нужно указать на 80-битовый тип или еще какой-то который больше битности процессора?
Размер указателя никак не зависит от размера типа данных, на которые он указывает

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
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
в голове "указатель указывает на адрес в памяти значения переменной" в голове упорно сидит такая мысль

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
@deviator а как бы ты называл класс для работы с пользователями и структуру в которой хранятся данные пользователя?
Так что бы было понятно, что класс для работы с пользователями, а структура для хранения данных пользователя

Сергей
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 копий одних и техже структур?

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