
Stanislav
29.03.2018
13:26:23
Под tcp кстати я бы не стал
Лучше udp

Pavel
29.03.2018
13:26:48
А как же если пакеты потеряются :(

Stanislav
29.03.2018
13:27:52
Недавно только читал историю как упавший сислог уронил сетевую инфраструктуру из-за tcp как раз )

Google

Pavel
29.03.2018
13:36:42
Ну да но что делать с пропадающими пакетами то? Смысл в таком логировании как-то теряется.
Если нельзя доверять тому что видишь.
Логи это такая вещь которая не нужна когда все работает и очень сильно нужна когда что-то начинает работать неправильно

Stanislav
29.03.2018
13:40:17
дополнительно можно хранить локально

Pavel
29.03.2018
13:41:35
Ага. Но в общем управление логами это такая не очень простая задача.

Денис
29.03.2018
13:42:24
А вообще можно писать локально (быстро и надежно), но раз в какое-то время отсылать логи на удаленный сервер (чтобы место не жрали)
Или писать приложением в локальный файл - (дешево, сердито, ничего не ебанется), а другим каким-нибудь демонком - разгребать этот файл и высылать логи куда надо. Во-первых это МИКРОСЕРВИСНО...

Stanislav
29.03.2018
13:47:23
https://www.facebook.com/photo.php?fbid=10215636895216658
понятно, что редкий кейс, но все же. я бы сильно не переживал за потерю логов, если логи конеш не шлёшь поверх интернета (тут да, может быть все что угодно)

Pavel
29.03.2018
13:53:33
Это все палки о мультиконцах. Если писать в лог локально то при сгорании сервера важные логи теряются, если все передавать гарантированно по TCP то может полечь сеть, если писать через UDP и без очереди, то логи тоже будут теряться.
Тут видмо какая-то priority queue нужна с локальным кешированием. Чтобы по TCP гарантированно быстро доставлялись важные записи, а неважные по мере сил.

Ievgenii
29.03.2018
14:16:29
А чего не сделать драйвера под разные нужды и конфигурить по мере необходимости?

Dmitry
29.03.2018
14:42:55
Короче писать в сислог в формате json чтобы было как объект, а дальше уже уже какой-то разгребалкой разгребать это дальше, так?

Google

Denis
29.03.2018
17:55:03
@deviator не вижу писали или нет но есть ещё такое: https://capnproto.org/

Evgeny
29.03.2018
18:36:10

Denis
29.03.2018
18:36:28
удваиваю
вообще не понятно протокол ли это
вопрос стоит типа как "вирус" это живое существо или нет?

Dmitry
30.03.2018
08:25:22
Как понять фразу "элементы зранятся сами, а не указателями". Я думал что в стеке при сохранении строки просто создается ссылка (указатель) на кучу.

Max
30.03.2018
08:55:33
Это в первую очередь значит что элементы лежат в одном куске памяти, называемом объектом
Стек тут вообще не при чём

Valeriy
30.03.2018
09:05:43
А почему alias this только один может быть?
И как мне тогда определить автоматическое преобразование типов, когда типов более одного.
Пример:
struct A {
int i = 5;
float f = 3.14;
alias i this;
alias f this;
}
void main()
{
A a;
int i = a;
float f = a;
}
Получаю Error: there can be only one alias this
Как быть?
В C++ я мог бы определить
operator int () const; и
operator float () const;
и без проблем сделал бы что мне нужно

Maxim
30.03.2018
09:07:27
opCast?

Valeriy
30.03.2018
09:07:40
Он требует явного преобразования

Maxim
30.03.2018
09:07:53
а в D и нет неявного преобразования)
это фишка такая

Valeriy
30.03.2018
09:08:19
opCast?
вот так придётся писать:
void main()
{
A a;
int i = cast(int) a;
float f = cast(float) a;
}
Ну да:
./test.d(45): Error: cannot implicitly convert expression a of type A to int
./test.d(46): Error: cannot implicitly convert expression a of type A to float

Maxim
30.03.2018
09:10:22
ну да)
alias this, говорит компилятору, что структура или объект будет вести себя как то, что указано в alias, а нельзя себя вести одновременно как int, float и string

Google

Maxim
30.03.2018
09:12:09
можно вести себя как что-то одно из них, а для остального в D есть явные преобразования
как-то так

Valeriy
30.03.2018
09:16:38
Хорошо, а есть какой то способ перегрузить преобразование в разные типы без cast?

Maxim
30.03.2018
09:17:28
в D нет неявных преобразований типов

Valeriy
30.03.2018
09:30:16

Maxim
30.03.2018
09:30:24
наоборот же)

Valeriy
30.03.2018
09:30:33

Maxim
30.03.2018
09:30:41
почему?
хочешь что-то во что-то преобразовать, убеди компилятор, что знаешь, что делаешь.

Valeriy
30.03.2018
09:31:10
уродливый cast писать, там где компилятор сам может понять к какому типу преобразовавать

Maxim
30.03.2018
09:32:28
int a = 480;
byte b = a;
Вот как компилятору понять, ты специально это делаешь, или просто не понимаешь, что происходит?)

Dark
30.03.2018
09:35:08

Valeriy
30.03.2018
09:35:53

Maxim
30.03.2018
09:36:22
опыт таких языков как C и C++ говорит, что это слишком дорого обходится)

Valeriy
30.03.2018
09:36:47

Maxim
30.03.2018
09:37:10
и в день по пальцу на ноге отстреливать)
в D в плане гибкости нет проблем относительно C++, просто тебе нужно дополнительно cast(ololo) писать

Valeriy
30.03.2018
09:38:22
Те кто стреляет по пальцам на C++ долго не пишут :)
Зато он доверяет пргограммисту и просто предоставляет срадства, ничего не навязывая :)

Maxim
30.03.2018
09:38:56
ну, наверное, просто так во всяких шарпах и ди появились явные преобразования типов)

Valeriy
30.03.2018
09:39:17
D в некоторых вопросах гибче С++
Поэтому вызывает недоумение, когда натываешься на такие места, когда компилятор думает, что я стреляю по ногам

Google

Maxim
30.03.2018
09:39:22
разработчикам просто захотелось потроллить других разработчиков)

Dark
30.03.2018
09:39:36

Valeriy
30.03.2018
09:39:44

Maxim
30.03.2018
09:39:55
orly?

Valeriy
30.03.2018
09:40:22
А ещё в D миксины без костылей с CRTP есть

Maxim
30.03.2018
09:40:46

Admin
ERROR: S client not available

Valeriy
30.03.2018
09:41:09

Maxim
30.03.2018
09:41:10
так и не могу понять в чем негибкость явных преобразований

Dark
30.03.2018
09:41:32

Valeriy
30.03.2018
09:41:36

Maxim
30.03.2018
09:41:58
каким боком это к гибкости относится?

Dark
30.03.2018
09:41:59

Valeriy
30.03.2018
09:42:17
Зато все гибко)
Да ладно. Хорош тосто тролить. У js много плюсов. Отличный язык. Но гибкость не его конёк

Dark
30.03.2018
09:42:43
Что значит гибкость в твоем понимании?

Valeriy
30.03.2018
09:43:30

Maxim
30.03.2018
09:43:52
нет в D неявных преобразований
alias this — это эмуляция объектом поведения конкретного поведения

Google

Valeriy
30.03.2018
09:44:35

Maxim
30.03.2018
09:44:48
т.е. компилятор будет считать объект эквивалентом конкретного типа с дополнительным поведением

Valeriy
30.03.2018
09:44:49

Dark
30.03.2018
09:45:28
Я не понимаю, как гибкость коррелирует с количеством символов

Valeriy
30.03.2018
09:46:14

Maxim
30.03.2018
09:46:23
а то, о чем ты говоришь — это не гибкость, а свобода, и опыт программистов говорит, что неявные преобразования — так себе свобода, от нее больше проблем, чем пользы)

Dark
30.03.2018
09:46:32
Блин
Дайте мне уже определение гибкости

Valeriy
30.03.2018
09:46:51

Maxim
30.03.2018
09:47:15
спорный вопрос — это какой?)

Valeriy
30.03.2018
09:47:28

Dark
30.03.2018
09:47:53
Оно субъективно
Я прошу лично твое определение гибкости, а не описания фишек JS

Valeriy
30.03.2018
09:48:17

Maxim
30.03.2018
09:48:24
ну там два утверждения, первое: ты гибкостью называешь свободу, второе: неявное преобразование — сомнительное удовольствие.

Valeriy
30.03.2018
09:48:28
Щас опять флуд будет на 5 экранов
Всё.
Спасибо за ответ.
Уважаю ваше мнение. Не хочу спорить

Maxim
30.03.2018
09:49:32
ну, в общем, нету в D неявных преобразований, и с этим придется жить)