@gogolang

Страница 1369 из 1630
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 заставляет как минимум иметь общий справочник уже сделанных сейвпоинтов, уметь генерировать им неповторяющиеся имена - вообщем все-таки как по мне, это достаточно сложно

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

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

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

енотыч
06.09.2018
13:03:47
For range по items
спасибо большое

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

Google
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
Добрый день, есть тут кто-нибудь кто работал с graphql пакетом в го? "errors":[{"message":"Field \"first_object\" of type \"Object\" must have a sub selection. Бросает ошибку, но я не могу нагуглить проблему, и не очень хорошо ей в целом понимаю
На хабре как-то статья была и там graphql не хвалили - т.е. с его помощью можно специально нагружать (создавать нагрузку) серверы, у которых оный наружу торчит.

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

Pavel
06.09.2018
14:25:00
Не хватает время на то чтобы инвестировать мозг помогитееееее
это прелюдия для рекламы закрытого канала за 1 биток?

Eduard
06.09.2018
14:26:26
Спасибо за информацию, учту
Предупреждён - вооружен ))

ImCat
06.09.2018
14:29:20
можно любой сервер нагружать у которого апи торчит
Думаю он имел в виду что можно более эффективно нагружать графкл сервер

Aleksandr
06.09.2018
14:30:49
Думаю он имел в виду что можно более эффективно нагружать графкл сервер
он наверняка в комментах читал, что это не проблема graphql

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

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

А наши хаки упирались в умение фронтов новые виды запросов посылать проходящие мимо преанализа

Roman
06.09.2018
15:18:07
На хабре как-то статья была и там graphql не хвалили - т.е. с его помощью можно специально нагружать (создавать нагрузку) серверы, у которых оный наружу торчит.
если graphql сервер реализован наивно и resolver'ы ходят в бд тогда естественно. GraphQL это мощный инструмент, а с большой силой как известно приходит и большая ответственность. Нужно понимать как работает граф resolver. Batching и кэширование вам в помощь, тогда я бы даже поспорил что будет держать нагрузку лучше, ручками написанный отлаженный REST или с умом написанный GraphQL

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
Чувства двоякие, но хочется плюнуть на логику и сделать лаконично, т.е. упрощенный вариант, дающий только немутабельную связку
аналогично, но при этом, повторюсь, теряем возможность декларации мутабельных reference typo'ов (типа slice, map, pointer) на немутабельные объекты

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
ну для го 2.0 почему б идеально не сделать
я говорю в данном пропосале не только про Go 2, но и возможную backwards-compatible реализацию в Go 1.x

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
однако были предложения наследовать иммутабельность объекта от reference типа по умолчанию, т.е. проще говоря упростить const * const Object до const *Object теряя при этом возможность декларации мутабельных указателеи на иммутабельные объекты. в таком случае const *Object это НЕ-мутабельный указатель на НЕ-мутабельный объект, а const []*Object это НЕ-мутабельный слайс НЕ-мутабельных указателей на НЕ-мутабельные объекты И я пока-что не уверен, стоит ли это делать? ведь в таком случае практически невозможно задекларировать мутабельный слайс немутабельных объектов, например. но читать const [] const * const Object как-то тоже не очень, хоть и логично.
поэтому ради общего блага я пока-что решил использовать менее ограничивающий, но более громоздкий вариант, когда указатель или slice отдельно от объекта анотируется на (и)мутабельность worst case: const map[const * const Object] const * const Object иммутабельный мап, с иммутабельным указателем на иммутабельный объект в качестве ключа на иммутабельный указатель на иммутабельный объект если кому-то данная тема интересна то буду рад обсудить аргументы за упрощённый, но ограничивающий вариант

Bogdan (SirEdvin)
06.09.2018
16:40:16
Нормальная судьба у Питона. Просто не всем знакома система версий
Ну, еще лет 5 назад был совсем ад, когда практически все либы или поддерживали 2.7 или были только на 2.7. Просто стоит учитывать. что миграция на мажорку стоит денег и очень часто ее откладывают на тогда, когда уже нельзя терпеть.

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
я про то, что никто не мешает вам продолжать компилять свои поделия go1
невозможно будет скомпилить свой проект в Go2 с зависимостью из Go1

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
можно же сделать 2 версии компилятора: go1 игнорит volatile и все работает как сейчас, в go2 все кроме volatile -- const ?
про обратную совместимость уже всё написано в пропосале, если чего не хватает - дай знать, добавлю

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 будет выглядить только как кодогенерия, на мой взгляд

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

Страница 1369 из 1630