Alexander
да ладно, редис прогрузить - это ещё постараться надо
Alexander
подписываешься на ивенты одним приложением, из другого вставляешь данные
Alexander
не
Olzhas
подписываешься на ивенты одним приложением, из другого вставляешь данные
а можно из одного приложение посылать байты в другое?
Alexander
мы просто диалог ведём. Я не настаиваю. ПРосто говорю, что это работающая схема, хоть и костыльно выглядащая
Alexander
ну, для Go да, это более костыльно. Для чего-то интерпретируемого, перла того же или питона, это норм
Igor
чтобы инсертить кастомные типы, тип толжен реализовывать driver.Valuer и sql.Scanner
У меня pq, он инсертит pq.Array() мой []float64 в поле float[] Но как достать не понятно
Nikita
https://godoc.org/github.com/jackc/pgx/pgtype
Igor
Спасибо посмотрю
Мерль
https://gist.github.com/networkimprov/961c9caa2631ad3b95413f7d44a2c98a
Нави
grpc это интересно...
Maksym
Достаточно просто и удобно, но это больше вариант для 2+ приложений
Subbotin
о. а новый goland теперь подсвечивает все строки где не обработана ошибка
Roman
https://github.com/golang/net/blob/master/ipv4/batch.go
Roman
внезапно, в гошечке есть
Roman
а не дорого ли постоянно использовать switch runtime.GOOS ?
.
Один раз запишется и все
.
Полагаю что не дорого
Subbotin
Новый — это EAP?
да. я случайно скачал
Roman
Один раз запишется и все
да, но там в коде switch по нему.
Нави
А qrpc через интернет тоже работает?
Daniel
вопрос не ясен
Илья
да, но там в коде switch по нему.
https://github.com/golang/go/blob/873bd47dfb34ba4416d4df30180905250b91f137/src/runtime/extern.go#L236
Roman
https://github.com/golang/go/blob/873bd47dfb34ba4416d4df30180905250b91f137/src/runtime/extern.go#L236
переформулирую: насколько дорог switch по строке? )
Илья
переформулирую: насколько дорог switch по строке? )
нужно смотреть в asm, думаю, что не дорог, хотя, вы правы, можно сделать 2 файла и разделить билд флагами, экономия будет
Roman
это что за странный вопрос?
а что странного? ) смущает использование string comparsion в hot path
Илья
видимо, батч мало кому нужен, для многих конструкций с ipv4 так и сделано
Daniel
а что странного? ) смущает использование string comparsion в hot path
да я не разобрался в вопросе, извини. конечно, везде, где код для разных платформ разный - надо его билд-флагами делить, а не свитчеваться в рантайме
Nikita
Я кстати не могу найти, как рантайме реализована проверка на эквивалентность строк https://golang.org/src/runtime/string.go
Roman
а т.к. это все танцы вокруг сисколла(который на linux в лучшем случае ~ 38ns) - этим можно пренебречь
Co(n)stantine👨‍🔬
😄
Georgij
Я кстати не могу найти, как рантайме реализована проверка на эквивалентность строк https://golang.org/src/runtime/string.go
https://github.com/golang/go/blob/50bd1c4d4eb4fac8ddeb5f063c099daccfb71b26/src/internal/bytealg/compare_generic.go Судя по всему вот. И как я понял по history это fallback вариант, где не реализована задротная версия: >// +build !386,!amd64,!amd64p32,!s390x,!arm,!arm64,!ppc64,!ppc64le,!mips,!mipsle,!wasm // idk, мог и напутать, так как не оч разбираюсь
саша
А в общем-то из той ссылки я хотел ~~на~~кинуть только это: > “Functional languages have a … problem with I/O”, notes Rob Pike. Actually, almost all languages have a problem with I/O. The vast majority, including many that are called “functional”, simply give up and assume side effects can happen at any time. In those that are decent enough to provide static typing, a function that claims to return an int might return an int, or it might launch some missiles and return an int.
саша
Иначе говоря, в императивных языках нет проблем с I/O только потому что программисты их использующие не считают это проблемой.
Roman
https://stackoverflow.com/questions/38627078/how-to-convert-bool-to-int8-in-golang
Roman
просто в фп они так заметны из-за попыток отгородиться от реального мира
саша
да везде есть проблемы с i/o
Я это просто к тому, что Роб Пайк узколобый идиот, а не мессия.
саша
просто в фп они так заметны из-за попыток отгородиться от реального мира
Ну там эти проблемы решить пытаются, а не делать вид, будто их нет
Nikita
https://stackoverflow.com/questions/38627078/how-to-convert-bool-to-int8-in-golang
или так: func boolean2uint8(b bool) int8 { return *(*int8)(unsafe.Pointer(&b)) }
Roman
Хорош. Правда я до сих пор считаю, что ты немного перемудрил и сделал слишком сложно.
на самом деле я упростил концепцию максимально до 5 основных правил без каких-либо исключений. Думаю легче тут уже просто некуда
Willy
Для чего в коде штуки типо //go:nosplit
Kirill
чтобы никто не вставил тебе stack overflow check
Daniel
а с чем конкретно, напомни?
мне куажется - ты взял слишком широко. у нас есть ровно два кейса, когда мы хотим иммутабельности - когда передаем параметр в функцию и когда объявляем глобальную переменную
Илья
хинт компилятору, чтобы он не делал определенные вещи
Kirill
Зачем?
грубо, чтобы никто не чекал и не сплитнул тебе стек
Roman
мне куажется - ты взял слишком широко. у нас есть ровно два кейса, когда мы хотим иммутабельности - когда передаем параметр в функцию и когда объявляем глобальную переменную
я стараюсь избегать "спец правил" мол "аргументы и глоб. переменные так, всё остальное - иначе". Иммутабельность не в символах (переменных, полях, аргументах, возвратных и т.д. и т.п.). Иммутабельность в типах. А иммут тип можно использовать где угодно как угодно, никаких спец правил.
Daniel
я в курсе твоей позиции, и не пытаюсь спорить. просто я считаю иначе
Aleksandr
я честно говоря не хочу влезать глубоко, но вкратце, что не так с const myVar = 5; из js? Почему в пропозале все сложнее?
Roman
я честно говоря не хочу влезать глубоко, но вкратце, что не так с const myVar = 5; из js? Почему в пропозале все сложнее?
в JS иммутабельности нет... можно определить объект в const переменную и мутировать объект 🙃 это какая-то анти-защита. в моём пропосале, как я уже подметил, иммутабельны не символы, а типы.
Aleksandr
const a = {} a.b = 1
проверил - валидно. почему?
Roman
http://facebook.github.io/immutable-js/docs/ 😂
yeah yeah... "it's safe, but you'll have to copy everything and it's slow, don't use it"
Kirill
проверил - валидно. почему?
потому что константа на уровне корневого объекта, а его поля — уже другой разговор
Kirill
ага, понял
ты не сможешь после этого сделать a = {}, но поля изменять — сколько угодно