@dlangru

Страница 275 из 719
Andrey
02.10.2017
14:07:06
компилятор проверяет

Oleg
02.10.2017
14:07:12
можно совсем по тупому

Andrey
02.10.2017
14:07:15
но можно кастовать

Pavel
02.10.2017
14:07:17
Ты же можешь по адресу считывать 1 байт, 2 байта, 100 байт. Все это как-то интерпретировать.

Google
Dmitry
02.10.2017
14:07:30
Oleg
02.10.2017
14:08:04
ну к void* привести, например и всю инфу о типе потерять

ну или к byte*

просто элемент void ты на экран не выведешь

а byte можешь

но в byte не поместится адрес

Andrey
02.10.2017
14:09:07
тогда ubyte

Oleg
02.10.2017
14:09:19
ну да

╔ [deviator@asus ~/t/dtest] ╚ % rdmd charptr.d a 3 a b ╔ [deviator@asus ~/t/dtest] ╚ % cat charptr.d import std.stdio; void main() { auto str = "abc"; writeln(*str.ptr); writeln(*(cast(size_t*)&str)); writeln(*(cast(char*)*(cast(size_t*)&str+1))); writeln(*((cast(char*)*(cast(size_t*)&str+1))+1)); }

Dmitry
02.10.2017
14:09:31
string str = "abc"; byte* chr = cast(byte*)str.ptr;

смотрю...

Oleg
02.10.2017
14:10:54
@DmitryBubnenkov тебе явно эта магия не нужна

она сама по себе вообще редко в прикладном программировании нужна

Google
Pavel
02.10.2017
14:11:25
Или надо полгодика пописать на си )

Dmitry
02.10.2017
14:11:51
Ну вот мне походу на Си надо немного, чтобы это в голову легло

Oleg
02.10.2017
14:11:51
Или надо полгодика пописать на си )
если только для осознания, но не для навыка практического применения на D

Pavel
02.10.2017
14:12:32
Мысль про то что на D можно писать расширения для крупных проектов меня тоже посещала, она интенресная.

Как одна из ниш для D вполне годная.

Всякие высокоэффективные экстеншены для postgresql, nginx, php, tarantool и всего остального что позволяет на си писать плагины.

Dmitry
02.10.2017
14:14:06
Просто реально же тема. Мне кажется PL/SQL не проще выучить чем на Ди научиться писать расширения для ПГ

Pavel
02.10.2017
14:15:11
ну вообще это довольно сложно, ты пробовал вникать в структуру пг ? ) Там черт ногу сломит

Работать со всем этим на низком уровне непросто. Фактически это тот же самый си + некий дишный сахарок.

Да и nginx не лучше. https://github.com/perusio/nginx-hello-world-module/blob/master/ngx_http_hello_world_module.c Посмотри сколько там всякого - sizeof, ссылки на буферы, ручное выделение памяти и т.д.

Dmitry
02.10.2017
14:19:06
да уж...

вайб на этом фоне куда проще смотрится...

кстати, а нафига нужны расшерения nginx ? какие проблемы они решают?

Pavel
02.10.2017
14:20:16
Любые ;)

Dmitry
02.10.2017
14:20:35
ну к примеру? Просто я им только порты перебивал

Pavel
02.10.2017
14:20:38
Но не проблемы питьевой воды в африке.

Dmitry
02.10.2017
14:21:02
А разве у Си так принято функции называть: ngx_http_hello_world_commands или это не по стандарту все?

Pavel
02.10.2017
14:21:35
В большом проекте где куча серверов есть всякие проблемы. Кеширование контента, управление таймаутами, балансировка бэкендов, роутинг, аутентификация.

Andrey
02.10.2017
14:21:50
так это массив функций

Dmitry
02.10.2017
14:23:13
но это по гайдлайну или просто так называно?

Google
Dmitry
02.10.2017
14:23:39
Кстати, на сколько реально вайб прокачать до уровня nginx ? Просто он же тоже крайне модульный

Andrey
02.10.2017
14:23:42
В Си часто имена через подчеркивание используют

Max
02.10.2017
14:32:42
Кстати, на сколько реально вайб прокачать до уровня nginx ? Просто он же тоже крайне модульный
Десяток человеколет любое говно до рабочего состояния доведут, вполне возможно.

Dmitry
02.10.2017
15:08:46
Я праивльно понимаю что в Ди вместо List (из той же Джавы) обычно используют массив структур?

Ievgenii
02.10.2017
15:17:23
Да

Ну или сделай что-то свое...

Но оно ничем отличаться не будет

Ну если не связанный список...

Dmitry
02.10.2017
15:18:59
А есть плюсы и минусы у того и другого подхода? Или что List что массив структур прям вообще 1в1?

Ievgenii
02.10.2017
15:19:45
Не скажу

С учетом того. что в Ди его нет)

Ievgenii
02.10.2017
15:22:49
Даже не знаю

В принципе в массиве есть все, что нужно

Но повторюсь, можешь сделать свою обвертку или свою реализацию.

Oleg
02.10.2017
15:36:25
А есть плюсы и минусы у того и другого подхода? Или что List что массив структур прям вообще 1в1?
если list это связанный список, то он достаточно серьёзно отличается от массива

Dmitry
02.10.2017
15:40:46
А в каких задачах он лучше\хуже?

Ievgenii
02.10.2017
15:45:56
Ну связанный список нужен для того, чтобы итерировать его и использовать или первый или последний и уже от него плясать

Массив же позволяет тебе получить доступ к произвольному элементу, зная его индекс

В связанном списке ты, скажем, не получишь доступ к элементу, который находится в списке 300-м, тебе прийдется взять первый и бежать по связям, пока не добежишь до 300-го

Google
Ievgenii
02.10.2017
15:48:22
Как-то так

Все зависит от твоих задач

Dmitry
02.10.2017
15:49:02
ну вот в Ди Array на уровне штатной структуры же не реализовали т.е. наверно были какие-то причины

Ievgenii
02.10.2017
15:50:05
myArray[299]

В списке так не выдет...

Andrey
02.10.2017
15:50:36
Выйдет , но за O(n) времени

Ievgenii
02.10.2017
15:50:45
myArray[299]
Конечно под копотом там что-то будет происходить, но быстрее ты уже не сделаешь сам...

Выйдет , но за O(n) времени
Я имел ввиду не выйдет так просто. А так конечно выйдет)

+ там зависит от того, какой у тебя список

Admin
ERROR: S client not available

Ievgenii
02.10.2017
15:51:57
Можно хранить ссылку на след. или ссылку на предыдущую, или обе

И уже нужно анализировать. откуда выгодней бежать

Stepanos
02.10.2017
15:55:38
просто массив без указания размера

Ievgenii
02.10.2017
15:56:14
Динамический

Andrey
02.10.2017
16:17:56
А в каких задачах он лучше\хуже?
в списке дешевые операции вставки-удаления элементов. но поиск O(n)

Dmitry
02.10.2017
16:56:41
Кстати, а в C# при создании фоновых потоков await получается создаются полностью полноценные потоки только в фоне?

Pavel
02.10.2017
17:00:32
Нет не полностью и не в фоне :)

И не потоки

Maxim
02.10.2017
17:02:06
а чего?)

Google
Maxim
02.10.2017
17:02:24
я так понял, await работает с честным thread

Pavel
02.10.2017
17:04:59
нет, скорее с green thread

А это уже не полноценный, а легковесный, оно же корутина или что-то типа такого, я путаю.

Все зеленые треды работают внутри одного. в каждом выполняется кусочек кода, потом дается время поработать другому зеленому.

Dmitry
02.10.2017
17:07:34
и один зеленый блочит все рассчетом?

Pavel
02.10.2017
17:07:42
Да.

Но во многих задачах, особенно не вычислительных, а работы с сетью, он блочит на гораздо меньшее время чем занимает работа с сетью.

Так что это незаметно все.

Dmitry
02.10.2017
17:09:14
короче чтобы основной поток не вис создается вспомогательный, который может повиснуть, а может нет, но основной гарантированно весеть не будет. Так что-ли?

Pavel
02.10.2017
17:09:39
Что ты понимаешь под основным потоком?

зеленый или обычный?

основной зеленый тоже может повиснуть, обычный тред то у них один. Им некуда деться с корабля.

Dmitry
02.10.2017
17:13:33
обычный т.е. системный

Pavel
02.10.2017
17:14:42
Ну он полюбому повиснет

В нем в каждый момент времени работает только 1 зеленый.

Dmitry
02.10.2017
17:15:19
он их сам пораждает получается?

Pavel
02.10.2017
17:15:40
Причем не важно какой из зеленых. Зеленый поток это логическая абстракция. Код из зеленого потока всегда выполняется на ядре в системном треде.

Dmitry
02.10.2017
17:16:07
и все зеленые построены на базе генераторов?

т.е. есть очередь зеленых и генератор которые по одному каждый пропускает

Pavel
02.10.2017
17:16:47
Ну там по разному

Вообще корутина это и есть сама по себе очередь или генератор.

Dmitry
02.10.2017
17:17:34
а что кроме генераторов может быть?

Pavel
02.10.2017
17:17:45
Файбер

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