
Ilya
06.09.2018
12:51:23
но если обновление таблиц не удастся - то и фиг с ними, крон потом подберет, а вот основная транзакция это basic values
как минимум может можно вернуться к ОРМ с чистого скуэля?

Google

Ilya
06.09.2018
12:53:22
но рутина не пойдет - если накрылась большая транзакция то апдейты тоже должны уйти

Mush
06.09.2018
12:54:15
в целом звучит как ок, просто savepoint заставляет как минимум иметь общий справочник уже сделанных сейвпоинтов, уметь генерировать им неповторяющиеся имена - вообщем все-таки как по мне, это достаточно сложно

Ilya
06.09.2018
12:54:20
разве что через канал информировать рутину что едем назад...
и последовательное исполнение

Mush
06.09.2018
12:56:16

енотыч
06.09.2018
12:59:29
добрый день еще раз, я сформулирую точнее вот код на пастебин скинул https://pastebin.com/tbLVicLe
сделал как мне кажется подсчет количества вакансий очень костыльно, есть ли правильный путь? вопрос сформулировать по человечески не могу до сих пор, потому что только учу программирование.

Pawel
06.09.2018
12:59:29
Squirrel
у меня уже есть много охрененть каких длинных запросов. Переписывать их в sql builder не вариант совсем. Хочется тупо вставить параметр в запрос.

енотыч
06.09.2018
13:01:06

Aleksey
06.09.2018
13:02:54
For range по items

енотыч
06.09.2018
13:03:47

ImCat
06.09.2018
14:03:03
Добрый день, есть тут кто-нибудь кто работал с graphql пакетом в го?
"errors":[{"message":"Field \"first_object\" of type \"Object\" must have a sub selection.
Бросает ошибку, но я не могу нагуглить проблему, и не очень хорошо ей в целом понимаю

Google

Artem
06.09.2018
14:04:14

ImCat
06.09.2018
14:04:33
в запросе?

Artem
06.09.2018
14:04:37
да

ImCat
06.09.2018
14:04:43
Окей, спасибо, понял

Eduard
06.09.2018
14:21:11

ImCat
06.09.2018
14:22:08

Abylay
06.09.2018
14:24:11
Не хватает время на то чтобы инвестировать мозг помогитееееее

Pavel
06.09.2018
14:25:00

Eduard
06.09.2018
14:26:26

Aleksandr
06.09.2018
14:28:34

ImCat
06.09.2018
14:29:20

Aleksandr
06.09.2018
14:30:49

Artem
06.09.2018
14:31:20

Eduard
06.09.2018
14:32:56
Думаю, миникопию срача с хабра сюда не стоит переносить, главное, учитывать особенность graphql в этом плане.

Artem
06.09.2018
14:45:21
У нас был графкуэль, он удобен для фронтов. Но там надо следить за гидрированием его моделей. Там всплывает нюанс, что он может доставать данные ненужные для запроса. Либо доставать их повторно. К примеру для 100 книг 100 раз тянуть одного автора.
А наши хаки упирались в умение фронтов новые виды запросов посылать проходящие мимо преанализа

Roman
06.09.2018
15:18:07

Alexey
06.09.2018
15:50:31
https://www.youtube.com/watch?v=HXqrsU7y0lU

Никита
06.09.2018
15:53:05
В этом примере:
if res, err := r(); err != nil {
fmt.Println(res)
}
У нас переменные созданные тут сразу же удалятся со стека?

Google

Alexey
06.09.2018
15:56:00
Вопрос по правилам языка или по реализации?

Sergey
06.09.2018
15:57:28

Alexey
06.09.2018
15:57:52
Зависит от типа res, что там внутри
Можно запустить компилятор с каким-то флажком и посмотреть на вывод escape analysis

Никита
06.09.2018
16:01:08
Ну как я понимаю err сразу же убирается?
Мне просто стал интересен вопрос оптимизации когда у нас в функции происходит много проверок на ошибки. Есть два варианта
первый
if _, err := strconv.Atoi("100"); err != nil {
return err
}
if _, err := strconv.Atoi("100"); err != nil {
return err
}
...
и второй, где переменная err у нас используется несколько раз
_, err := strconv.Atoi("100")
if err != nil {
return err
}
_, err = strconv.Atoi("100")
if err != nil {
return err
}
...
И второй вариант оказался быстрее в пределах 10 наносекунд
Так что так себе оптимизация в ущерб читабельности ?


Roman
06.09.2018
16:13:08
Ребят, я немного помозговал по теме const reference types (указатели, слайсы, мапы) и таки пришёл к выводу, что указатель и объект на который он указывает это таки 2 разные сущности, поэтому в идеале:
- указатель на иммутабельный объект нужно указывать так:
* const Object
- иммутабельный указатель на иммутабельный объект вот так:
const * const Object
- а иммутабельный указатель на мутабельный объект так:
const * Object

Aleksandr
06.09.2018
16:18:34
выглядит логично

Dorian
06.09.2018
16:23:30
Один уровень вложенности, прекрасно

Никита
06.09.2018
16:24:00

Dorian
06.09.2018
16:24:18

Никита
06.09.2018
16:24:25
Ну да


Roman
06.09.2018
16:30:02
Ребят, я немного помозговал по теме const reference types (указатели, слайсы, мапы) и таки пришёл к выводу, что указатель и объект на который он указывает это таки 2 разные сущности, поэтому в идеале:
- указатель на иммутабельный объект нужно указывать так:
* const Object
- иммутабельный указатель на иммутабельный объект вот так:
const * const Object
- а иммутабельный указатель на мутабельный объект так:
const * Object
однако были предложения наследовать иммутабельность объекта от reference типа по умолчанию, т.е. проще говоря упростить const * const Object до const *Object теряя при этом возможность декларации мутабельных указателеи на иммутабельные объекты.
в таком случае const *Object это НЕ-мутабельный указатель на НЕ-мутабельный объект, а const []*Object это НЕ-мутабельный слайс НЕ-мутабельных указателей на НЕ-мутабельные объекты
И я пока-что не уверен, стоит ли это делать?
ведь в таком случае практически невозможно задекларировать мутабельный слайс немутабельных объектов, например.
но читать const [] const * const Object как-то тоже не очень, хоть и логично.


Dorian
06.09.2018
16:32:04
Чувства двоякие, но хочется плюнуть на логику и сделать лаконично, т.е. упрощенный вариант, дающий только немутабельную связку

Roman
06.09.2018
16:33:00

Pavel
06.09.2018
16:33:06
а что если сделать все немутабельным, пока ключевое слово (типа `volatile`) не пропишешь?!
и канал если не мутабельный, то сообщения посылать нельзя, только закрывать ?

Google

Roman
06.09.2018
16:34:18
а что если сделать все немутабельным, пока ключевое слово (типа `volatile`) не пропишешь?!
уже обсуждалось и с сегодняшнего дня описано в введении: https://github.com/romshark/Go-2-Proposal---Immutability#1-introduction
Ideally a programming language should enforce immutability by default while the developers must explicitly annotate mutable symbols as such, but this concept would require significant, backwards-incompatible languages changes breaking existing Go 1.x code. To prevent breaking Go 1.x compatibility this document describe an approach to immutability by overloading the const keyword (see here for more details) to act as an immutable type qualifier similar to languages like C++.

Pavel
06.09.2018
16:34:52
ну для го 2.0 почему б идеально не сделать

Dorian
06.09.2018
16:35:35
Говорят он вторйо только с маркетинговой точки зрения и оставят обратную совместимость
В этом же чате и говорят, впринципе

Bogdan (SirEdvin)
06.09.2018
16:36:23
Очень боятся повторить судьбу питона, да

Roman
06.09.2018
16:36:39

Bogdan (SirEdvin)
06.09.2018
16:36:46
Хотя у него все хорошо уже. Почти)

Admin
ERROR: S client not available

Pavel
06.09.2018
16:38:07
ну всем хорошо не сделать

Dorian
06.09.2018
16:38:29
Нормальная судьба у Питона. Просто не всем знакома система версий
Это из разряда, когда люди думают что после 1.9 идет 2.0

Roman
06.09.2018
16:39:07


Bogdan (SirEdvin)
06.09.2018
16:40:16

Daniel
06.09.2018
16:40:36
коллеги

Dorian
06.09.2018
16:40:55
Мы познаем в сравнении

Daniel
06.09.2018
16:40:56
go не грозит судьба питона никаким образом

Pavel
06.09.2018
16:41:04
гугл просто наймет больше рабов и все мигрирует ?

Dorian
06.09.2018
16:41:27
В го менять то нечего, чтобы сломать

Bogdan (SirEdvin)
06.09.2018
16:42:08
go не грозит судьба питона никаким образом
Даже если сделать несовместимые изменения в, скажем, go 2?
В go уже такая ситуация с модулями, которые вроде как в стандарте, а у кучи либ как была версионность по коммитам, так и остается :)
Или вы про другую судьбу питона?

Roman
06.09.2018
16:43:15
гугл просто наймет больше рабов и все мигрирует ?
стд. библиотеку то может они и подправят, а вот community packages могут затянуться, некоторые возможно даже не перейдут на Go 2 вообще (из-за вялой поддержки пакета например)
вся сложность иммено в стороннем коде, который сломают

Google

Daniel
06.09.2018
16:43:32
я про то, что никто не мешает вам продолжать компилять свои поделия go1
это питону требовалось следить за тем, что там у пользователя установлено
а мы-то бинарники распространяем

Bogdan (SirEdvin)
06.09.2018
16:44:10
Это же и называется "судьба питона", когда одновременно будут две редакции одного языка.

Roman
06.09.2018
16:44:32

Sergey
06.09.2018
16:44:32
В языке где регистр первой буквы определяет видимость, а ошибки это просто строки херня вида const * const не пройдёт

Pavel
06.09.2018
16:44:42
можно же сделать 2 версии компилятора: go1 игнорит volatile и все работает как сейчас, в go2 все кроме volatile -- const ?

Daniel
06.09.2018
16:45:47

Roman
06.09.2018
16:45:58

Daniel
06.09.2018
16:46:05
это проблемой считать нельзя

Roman
06.09.2018
16:48:06
это проблемой считать нельзя
ну вот допустим я вендор библиотеки, мне теперь Go2 и Go1 отдельно поддерживать? Или просто кидать пользователей Go1 и поддерживать только Go2 дабы не распылять своё внимание и время?
а что если кто-то не может перейти на Go2 по каким либо причинам?
т.е. нам понадобится несколько лет пока все смогут перейти медленно но верно на Go2 и всё это время мне придётся поддерживать 2 версии 1 библиотеки?


Bogdan (SirEdvin)
06.09.2018
16:48:38
А то, что нужно вроде как следить за тем, что стоит в системе, хотя на самом деле просто entrypoint с правильной версией питона можно ставить - это считается проблемой?)
Мне казалось, что проблема как раз в том, что есть новая модная версия языка, на которой хочется писать и там все круто, а есть безумное количество легаси, которое работает на языке, который стагнирует и легаси в бизнесе тянет за собой легаси в open source проектах. Ну или костыли в виде six и кучу черной магии.
Но six в go будет выглядить только как кодогенерия, на мой взгляд

Daniel
06.09.2018
16:49:18
или одну, если старую не хочешь. кому надо - тот пусть и поддерживает

Roman
06.09.2018
16:50:01

Sergey
06.09.2018
16:50:21

Daniel
06.09.2018
16:50:51
ну а что делать авторам java библиотек с выходом go? поддерживать две версии? забить на java? забить на go?

Roman
06.09.2018
16:51:18