@dlangru

Страница 282 из 719
Pavel
09.10.2017
12:58:02
под бэкэндом я имею в виду, что-то, отдающее в конечном итоге данные по http
Так это и есть vibe.d ) я всегда к этому выводу прихожу

Maxim
09.10.2017
12:58:27
ну вот и дело в том, что судя по всему, этим занимаются только людвиг да адам)

Pavel
09.10.2017
12:58:58
Значит хорошим делом было бы контрибутить в их проекты

Спорить, предлагать альтернативы в архитектуре - это и есть разработка)

Google
qwerty
09.10.2017
13:03:08
Адам пишет по 4к строк в файл и говорит, что так удобней. Я не очень хочу разбираться в это спагетти

Pavel
09.10.2017
13:03:38
То что кстати они разделили vibe-core и vibe.d:core это уже косяк. Теперь нельзя единообразно использовать это ядро.

Maxim
09.10.2017
13:03:44
Да, подход у него суровый)

qwerty
09.10.2017
13:05:37
И я не хочу делать отдельный сервер. Есть nginx который прекрасно решает задачи веб сервера. Нужно приложение которое бы уже запускало D приложение

Stepanos
09.10.2017
13:05:42
надо спринг переписать на D и будет счастье

Andrey
09.10.2017
13:17:51
ну не знаю... 40 файлов по 100 строк еще хуже)

Stepanos
09.10.2017
13:20:56
чем? :)

если красиво разбить по пакетам - норм все

+ если unittests вынести в отдельный пакет

Andrey
09.10.2017
13:23:22
тем, что разбираться в 40 файлах сложнее, чем в одном)

Stepanos
09.10.2017
13:24:10
ну если норм IDE - наоборот проще :) смотришь ddoc/javadoc с интерфейсами и все

Andrey
09.10.2017
13:26:20
если в проекте без ИДЕ не разобраться, то что то не то с проектом) вообще, разбиение должно следовать из логики программы, я щитаю. искуственно разбиать модули/методы, что б короче было, не есть гуд)

Google
Stepanos
09.10.2017
13:27:08
не) IDE только помогает, доку можно и нагенерить в html

как первичный вход в програму, а далее уже смотришь что надо + маленькие файлы легше покрывать тестами + легче организовать dependency injection паттерн + легче розпаралелить работу в команде, не надо мержить каждьій день по 10 раз

Andrey
09.10.2017
13:38:20
ну IDE пофиг, с одним файлом работать или с несколькими (по слухам, ибо vim наше все)

Stepanos
09.10.2017
13:40:12
навигация уже не такая удобная

Кто знает, на D можно мутить стуки типа https://projectlombok.org ?

штуки*

https://github.com/funkwerk/accessors

снимаю вопрос

Oleg
09.10.2017
14:40:34
+ если unittests вынести в отдельный пакет
Имхо тесты должны быть там же где код, иначе это усложняет разработку

Dmitry
09.10.2017
15:08:53
Кстати, а после File f = File("text", "r") надо делать f.close() ?

Просто я где-то читал, то что он на стеке создается и при выходе из скойпа сам закрывается

Andrey
09.10.2017
15:24:39
в деструкторе закроется

зачем читать "где-то", когда можно просто посмотреть https://dlang.org/phobos/std_stdio.html#.File ))

Dmitry
09.10.2017
15:43:14
А деструктор будет вызван сразу по выходу из скоупа?

@deviator воо. разобрался. Оказывается с Питоном не все так просто. Он поверх системных потоков создает свои и GIL ими как-раз управляет. Фишка в том, что эти потоки живут 5мс хотя потоки ОС живут по 20-30 мс

Andrey
09.10.2017
15:56:19
Dmitry
09.10.2017
16:04:12
GIL - global interpreter lock, особенность языков с однопоточным рантаймом по сути. Там потоки ОС есть, но работают по очереди, беря этот самый лок. Потому конкурентность есть, а параллелизма нет. Этим страдают питон, руби, окамл.

В D есть "микро GIL" - каждая аллокация лочит глобальный лок ненадолго. По крайней мере раньше так было, последнее время не смотрел.

Dmitry
09.10.2017
16:23:03
вшмышле? Какие еще 20-30 мс на поток?
ну типа ОС потоку системному столько времени дает

Google
Dmitry
09.10.2017
16:34:00
а, речь об одном кванте

Dmitry
09.10.2017
17:13:46
так, а вот в реальной программе где проблемы общего доступа к данным могут начаться. Я про потоки которые якобы могут общие данные одновременно юзать. Я не могу кейс придумать никакой

Andrey
09.10.2017
17:26:54
доступ только на чтение или чтение/запись?

Dmitry
09.10.2017
17:29:44
Например, есть у нас длиннющий массив строк или их хранилище на диске. И надо побыстрее найти любую строку, содержающую слово "password". Наивная реализация: делаем несколько потоков, каждый ищет в своей части массива/хранилища, если нашел - записывает найденную строчку в глобальную переменную и устанавливает флаг "нашел!". Основной поток ждет, пока этот флаг не поднимется. Теперь, допустим сразу два потока находят подходящую строчку и пытаются ее записать в ту переменную. Но строка у нас это два слова - указатель и длина. Пишутся они не атомарно. Поэтому если не повезет, инструкции записи выполнятся в таком порядке, что указатель там окажется от одной строки, а длина от другой. Все, жопа.

Dmitry
09.10.2017
17:31:30
а...

@deviator про потоки в потоках в питоне я наврал. Там как-то все очень мутно. Короче Ди при работе с внешними данными делает их лок, а в Питоне почему-то с этим локом все туго

Oleg
09.10.2017
18:24:30
Смысл многих вещей в том, что о них не парятся)

Не знаю зачем могут практически пригодиться знания питона человеку, который его не использует

Не надо так глубоко заморачиваться, пока база не хорошо освоена

Pavel
09.10.2017
19:13:36
Я тоже не понял, ты первый на моей памяти человек который в питоне полез зачем то в потоки

Oleg
09.10.2017
21:39:37
блин... что со мной не так?

Oleg
09.10.2017
21:40:11
почему на моей системе не собирается dub --build=ddox? а требует какую-то libcrypto, при том совсем не ту, что есть в системе

кто-нибудь на fedora сидит?

на чём вообще vibe разрабатывается?

всмысле ОС

https://forums.fedoraforum.org/showthread.php?t=248354 в этом топике 9 (!!) года говорится, что libcrypto это вообще устаревшая вещь и сейчас в libssl всё

сакральный смысл копаться сейчас в vibe есть? чтобы его как-то по другому собрать или он завязан на этой либе?

Ievgenii
09.10.2017
22:01:39
Вайб вообще жуткий продукт

Мало того что течёт, так ещё и тормознутый...

Google
Oleg
09.10.2017
22:16:54
просто доку хотел глянуть, которая из коробки dub идёт...

ну, всмысле, как генерируется дока для моей либы

Pavel
09.10.2017
22:17:31
У меня недавно при сборке возникли проблемы с openSSL интеграцией какой-то

Пришлось проставить VibeNoSSL. Хотя это может другая проблема, но раньше такого не было.

Pavel
09.10.2017
22:18:40
ubuntu

Oleg
09.10.2017
22:19:08
просто я пару раз натыкался на разницу между ubuntu и fedora, но чёт не ожидал, что в vibe это будет крепко

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

а тут он каких-то методов не находит

Admin
ERROR: S client not available

Igor
09.10.2017
23:29:20
это может означать что аффектит переход openssl с 1.0 до 1.1 - там api разный немного

qwerty
10.10.2017
07:17:44
я совсем не понимаю как пишутся серверные приложения. Пожалуйста подскажите книгу/статью/хороший-opensource-пример

вся эта муть с сокетами, отправкой/приемом сообщений, подключениями, отключениями

Stepanos
10.10.2017
07:22:26
начни с rest :) 99% проектов не используют сокетьі

Dmitry
10.10.2017
07:24:04
@antlord посмотри исходники dlang.ru

и pastecode

qwerty
10.10.2017
07:24:31
как писать веб приложения - я знаю

Stepanos
10.10.2017
07:25:19
тебе бекенд надо?

qwerty
10.10.2017
07:25:32
нет, это как раз мой хлеб

Stepanos
10.10.2017
07:25:43
тогда не понял вопроса :)

Google
qwerty
10.10.2017
07:26:26
как пишется например веб-сервер

или чат сервер

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

Stepanos
10.10.2017
07:27:33
:) ну я сейчас читаю литературку по микросервисам

qwerty
10.10.2017
07:27:35
и правильней даже сказать не сервера, а в основе клиент-серверной разработки

Stepanos
10.10.2017
07:28:48


qwerty
10.10.2017
07:29:04
микросервисы меняются данными по HTTP поверх сокетов. Меня интересует то, как начать писать приложение еще без протокола

маркетинг какой-то)

Maxim
10.10.2017
07:29:38
основа — это event loop

Stepanos
10.10.2017
07:29:41
? там дальше описьівается все

qwerty
10.10.2017
07:32:09
основа — это event loop
хм, я думал, это только когда пишешь что-то асинхронное. Типа у тебя есть набор данных в разных файлах. Ты их читаешь в корутинах и ждешь когда закончится это. И начинаешь уже НЕ асинхронно делать какой-то процессинг

Maxim
10.10.2017
07:32:17
из опенсорсных примеров, наверное, libevent, libuv, libasync

ну а сервер не асинхронный?

qwerty
10.10.2017
07:32:59
я даже этого не понимаю

ну да, логично, что он должен быть асинхронным

всякие сервера для веб сокетов ведь асинхронные

мог додуматься

Maxim
10.10.2017
07:34:00
если в на максимальном уровне абстракции на это все смотреть, то какова задача сервера?

поймать каждое обращение к нему и обработать его, желательно сделать это параллельно)

qwerty
10.10.2017
07:34:54
и при этом не упасть когда кто-то отключается)

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