
Daniel
05.09.2018
15:59:38
блокчейн это распределенное хранилище
распределенное - это когда чать инфы на одной ноде, часть на другой
те блокчейны, что я знаю - не распределенные, а реплицированные: на каждой ноде вся инфа

Ilya
05.09.2018
15:59:59
ну вопрос терминологии

Daniel
05.09.2018
16:00:14
я понимаю
я не понимаю, зачем нужна вводящая в заблуждение терминология

Google

Ilya
05.09.2018
16:00:38
мэйби имеется в виду что хранилище организовано децентрализованно
нет мастера от которого реплики
то есть не в смысле архитекутры а в смысле безопасности тысызыть

Artem
05.09.2018
16:01:54
привет а подскажите почему я не могу инициализировать мапу так?
как это правильнее сделать?
func main() {
t := map[string]interface{}
t["a"] = "23"
fmt.Printf("%T - %v", t, t)
}
те мне в мапе нужен объект любого типа string/int/bool

Aleksandr
05.09.2018
16:03:20

Stanislav
05.09.2018
16:04:10

Dorian
05.09.2018
16:04:22
А make не круто?

Artem
05.09.2018
16:04:23
ох е( спасибо!

Daniel
05.09.2018
16:05:03

Dorian
05.09.2018
16:05:31

Мерлин
05.09.2018
16:05:34

Daniel
05.09.2018
16:07:01
Расскажите?
либа должна быть готова к импорту после go get. приложение должно быть готов к запуску после go get.
если у вас есть Makefile - он или лишний, или ваш код требует чего-то кроме go get

Google

Dorian
05.09.2018
16:07:41

Daniel
05.09.2018
16:07:43
я подозреваю, что надо бы что-то с этим сделать, но пока не придумал, что

Мерлин
05.09.2018
16:08:16
Или в build

Daniel
05.09.2018
16:08:42
ну вот пока не понятно

Мерлин
05.09.2018
16:09:21
Или в build
Это бы сильно упростило бы запуск кодогенерации

Daniel
05.09.2018
16:09:30
погоди
кодогенерация - инструмент для создателя ПО, а не для пользователя

Alexander
05.09.2018
16:10:45

Daniel
05.09.2018
16:11:04

Alexander
05.09.2018
16:11:12
А, sorry

Мерлин
05.09.2018
16:11:50
кодогенерация - инструмент для создателя ПО, а не для пользователя
Это не совсем так
Есть кодогенерация, которую надо выполнять на этапе разработки пакета, например генерация protobuf или swag
А в случае если она используется как замена дженериков, то она нужна на этапе разработки, и, имхо, должна запускаться автоматически ide или при сборке

Daniel
05.09.2018
16:12:41
go generate ./... чем тебе не угодил?

Мерлин
05.09.2018
16:13:55

Daniel
05.09.2018
16:14:49
да вот непонятно про на лету
по какому событию оно должно на лету запускаться?

Мерлин
05.09.2018
16:16:27

Daniel
05.09.2018
16:17:27
а до go build твой код неполный, и синтаксическую проверку не пироходит, так, что ли?

Мерлин
05.09.2018
16:17:38
И я думаю что кодогенераторы должны быть не в виде бинарников, а в виде функций
Как test

Google

Daniel
05.09.2018
16:18:12
эту мысль я не понял
если приложение собирается без генеренного кода - зачем он нужен такой

Olzhas
05.09.2018
16:18:53
@onokonem а есть пример go generate для самых тупых похапешников?

Daniel
05.09.2018
16:19:11
а если не собирается - его надо раньше go build запускать

Мерлин
05.09.2018
16:19:29
эту мысль я не понял
У тебя в проекте лежат функции вида func GenerateMyGenerator(*gen.Context) {
...
}

Kirill
05.09.2018
16:19:33

Olzhas
05.09.2018
16:19:45
Бля

Daniel
05.09.2018
16:19:51
как это нет?
grpc, swagger

Kirill
05.09.2018
16:20:01

Мерлин
05.09.2018
16:20:09

Olzhas
05.09.2018
16:20:17

Olzhas
05.09.2018
16:20:57
@madgopher запили сваггер под греймворк

Daniel
05.09.2018
16:21:20

Мерлин
05.09.2018
16:21:22

Roman
05.09.2018
16:22:41
как относитесь к implicit конвертации non-const в const например в случае возвращения из функции?
func CreateList(size int) const []string {
newSlice := make([]string, size)
for i := 0; i < size; i++ {
newSlice[i] = "sample text"
}
// newSlice is implicitly converted
// from "[]string" to "const []string"
return newSlice
}

Мерлин
05.09.2018
16:24:32

Daniel
05.09.2018
16:25:18
ааа, вот чего ты хочешь! не забыть генерацию толкнуть!
это да, это частая проблема

Kirill
05.09.2018
16:26:46

Мерлин
05.09.2018
16:26:47

Google

Daniel
05.09.2018
16:27:53
и тут-то нам и нагенерят наши коллеги почитать всякого...

Мерлин
05.09.2018
16:28:25
А генеренный код не надо читать
И править

Daniel
05.09.2018
16:29:03
как появится "нормальная экосистема" - так придется читать :(

Sergey
05.09.2018
16:29:20

Мерлин
05.09.2018
16:30:52
Кстати это неплохой способ завести типы суммы, не меняя язык

Alexander
05.09.2018
16:33:36

Daniel
05.09.2018
16:36:17

Admin
ERROR: S client not available

Roman
05.09.2018
16:37:27
я бы даже сказал что кстатиь const в не-const должно быть невозможно и в таком случае implicit cast не-const в const будет, по моему, уместен

Alexander
05.09.2018
16:38:43

Roman
05.09.2018
16:39:29

Daniel
05.09.2018
16:40:28

Alexander
05.09.2018
16:40:37
Например, тупо, функция make([]interface{})
?или типа того

Daniel
05.09.2018
16:40:38
я вот за эксплицитное всегда

Alexander
05.09.2018
16:40:58

Roman
05.09.2018
16:43:24

Google

Alexander
05.09.2018
16:50:16
Причина в том, чето если что-то делается, то не надо делать это по-тихому. Явное гораздо отчетливей, и часто лучше

Мерлин
05.09.2018
16:51:32
это как это?!
я знаю один способ - на интерфейсах и тайпсвитче.
Вот это самое, но только под капотом
Ведь, если сделать как я говорю, то нет разницы между линтером и кодогенератором
Сначала он генерирует набор типов обёрток для интерфейса mySumType, а потом проверяет валидность использования: чтобы не вернуть nil вместо mySumType, в type switch должны быть проверены все варианты, либо есть default
И тд

Roman
05.09.2018
17:03:18

Мерлин
05.09.2018
17:13:18

Alexander
05.09.2018
17:23:18
В смысле, слово уже есть, но хочу больше const, короче :)

Roman
05.09.2018
17:24:34

Alexander
05.09.2018
17:25:05
Ну, уже есть такое ключевое слово. Но хочу, чтобы оно больше было похоже на const из плюсов

Roman
05.09.2018
17:25:23
я там кстати ещё вопрос по поводу констант vs имутабельных символов разобрал только-что: https://github.com/romshark/Go-2-Proposal---Immutability#35-how-are-constants-different-from-immutables

Alexander
05.09.2018
17:30:00
Кстати, кажется, что по логике Go должно быть не varName const []string), а наоборот - varName []string const) ?

Roman
05.09.2018
17:35:55

Alexander
05.09.2018
17:36:08
потому что паники
или ты тоже экстемист-параноик и все подрят тестируешь, как маньяк какой-то? :)

Roman
05.09.2018
18:39:57
потому что паники
я про обратный порядок декларации, т.е. не const []string а []string const, зачем?
как в таком случае описать const [] const *Object ?

Michael
05.09.2018
18:40:59
const [] const * const Object

Alexander
05.09.2018
19:09:18
Ехал констант через констант
Видит констант в констант констант
Сунул констант констант в констант
Конст за констант констант цап