@gogolang

Страница 1294 из 1630
Kirill
15.08.2018
13:48:45
Это не призма

Вячеслав
15.08.2018
13:52:24
Привет!

Можете подсказать по локализации?

Google
Вячеслав
15.08.2018
13:52:52
i18n.MustLoadTranslationFile("en-us.all.json") T, _ := i18n.Tfunc("en-US") t, _ := template.ParseFiles("template/index.html", "template/header.html", "template/footer.html") t.Funcs(map[string]interface{}{ "T": T,}) t.Execute(w, map[string]interface{}{"Title": "New cat"}) правильно ли я делаю?

в шаблоне <h1>{{T "home_button" .}}</h1> но вываливается ошибка в консоль runtime error: invalid memory address or nil pointer dereference goroutine

Антон
15.08.2018
13:53:47
https://gobyexample.com/select

а чем вот этот пример принципиально отличается от моего?

Crypt
15.08.2018
13:56:17
https://gobyexample.com/select
тем, что каналы не закрываются

Aleksandr
15.08.2018
13:57:36
2 поменяй на 3, закрой каналы, и будет всегда первый case выполняться

Илья
15.08.2018
13:57:48
Это не призма
https://github.com/fogleman/primitive оно чтоли?

Vadim
15.08.2018
13:59:26
Привет, я тут подумал. Думаю, надо сделать петицию против использования int.

Антон
15.08.2018
14:00:28
Vadim
15.08.2018
14:02:50
Ненавижу, то он int32, то он int64. А причин, почему он лучше int64 и int32 не вижу. Возможно, что то на уровне ассемблера.

Artem
15.08.2018
14:03:36
Google
Lesha
15.08.2018
14:03:50
боже( нужно внимательнее читать комментарии. Увидел циферки 32 и такой запомнил

Vadim
15.08.2018
14:05:07
int is a signed integer type that is at least 32 bits in size. It is a distinct type, however, and not an alias for, say, int32.

это untyped int, он является 32 или 64 в зависимости от архитектуры
Понял ваш мэсседж, неправильно выразился

Илья
15.08.2018
14:07:32
в смысле языков

Artem
15.08.2018
14:08:24
да вроде он всегда тут был

Vadim
15.08.2018
14:08:48
вы к нам из каких краев?
На го больше года уже пишу. Просто достало, когда одна библиотека тебе присылает int64, а второй ты должен отослать int.

И нужно переводить типы. А best practice нет

Накипео

Илья
15.08.2018
14:10:05
эм, а если в int32 переводить, то лучше?

Vadim
15.08.2018
14:10:54
эм, а если в int32 переводить, то лучше?
Обычно вместо int пишут int64, а не 32.

Мало либ, где int32 будет дефолтным интом

Илья
15.08.2018
14:12:00
либы есть и они разные, int/uint тоже отменить?

Artem
15.08.2018
14:12:05
да и вообще в 32 уже смысла мало, ток в плане оптимизаций

Vadim
15.08.2018
14:12:16
Если бы все использовали только int или только int64 было бы в разы проще.

Илья
15.08.2018
14:12:50
и с переводом uint<->int придется же опять типы приводить

это вы еще overflow/underflow не обрабатываете

Vadim
15.08.2018
14:15:30
unsigned integer вам вполне может быть нужен, когда вы хотите чтобы в переменной были только положительные значения. Я не понимаю смысл int и uint.

Google
Vadim
15.08.2018
14:16:05
Я задал конкретный вопрос, а вы мне троля пускаете

Crypt
15.08.2018
14:17:13
Я задал конкретный вопрос, а вы мне троля пускаете
When you need an integer value you should use int unless you have a specific reason to use a sized or unsigned integer type.

вот бест практис

пойдет?)

Vadim
15.08.2018
14:17:43
Ура

Против best practice не попру

Crypt
15.08.2018
14:18:19
в gotour откопал

Vadim
15.08.2018
14:20:58
Очень часто вижу либы, где int вообще не пахнет.

Crypt
15.08.2018
14:21:33
Алексей
15.08.2018
15:16:22
Добрый день, помогите у кого есть время! надо создать три дериктории а в третей файлик а в файле вывести текущее время, пробывал через фунцкию MkdirAll ! но видимо руки кривые((

Алексей
15.08.2018
15:17:59
MkDirAll создает папки в папках, а не несколько на одном уровне
мне надо создать файлик в третем уровне вложенности

Artem
15.08.2018
15:18:16
и папки не создались?

Алексей
15.08.2018
15:18:38
и папки не создались?
нет ошибка с пермишином

Artem
15.08.2018
15:18:58
так нужно разрешить =)

Алексей
15.08.2018
15:19:28
так нужно разрешить =)
так вот я и попросил у кого есть время!

Aleksandr
15.08.2018
15:22:35
Artem
15.08.2018
15:23:01
вопрос будет?
как дать пермишн папкам?

Aleksandr
15.08.2018
15:23:14
как дать пермишн папкам?
https://www.google.com/search?client=ubuntu&channel=fs&q=linux+how+change+permission&ie=utf-8&oe=utf-8

Google
Crypt
15.08.2018
15:25:51
спасибо
да это хрень, там в восьмеричном формате вторым аргументом к MkDirAll права задаются

Алексей
15.08.2018
15:27:25
да это хрень, там в восьмеричном формате вторым аргументом к MkDirAll права задаются
Та мне как новичку всеравно их ссылки не чего не говорят !я пишу спасибо чтобы просто слится)

Kirill
15.08.2018
15:30:41
Dk
15.08.2018
15:38:40
Играюсь тут на плейграунде тура и попал на непонятные вещи. Объясните, пожалуйста.

Там многопоточность начали объяснять, ну я решил поиграться, чтобы понять и вот.



Aleksandr
15.08.2018
15:40:18
горутина не успевает выполниться до завершения программы

для этого есть sync.WaitGroup

Artem
15.08.2018
15:41:01
или time.Sleep(time.Second)

Admin
ERROR: S client not available

Crypt
15.08.2018
15:41:26
для этого есть sync.WaitGroup
или канал можно еще читать

Dk
15.08.2018
15:41:33
Спасибо, всё понял

Dk
15.08.2018
15:41:50
Artem
15.08.2018
15:42:03
шах и мат

Dmitriy
15.08.2018
15:42:30
ого, на русском гоутур есть?

в любом случае уже не актуально мне)

Crypt
15.08.2018
15:43:00
ого, на русском гоутур есть?
спустя пару лет запилили, может это украинский перевод, кстати

Dk
15.08.2018
15:46:37
go-tour-ru-ru

Google
Kirill
15.08.2018
15:55:45
русский перевод готура?

тебе там могут написать, что из закрытого канала никогда ничего не прочитаешь

тоже будешь верить?

Dk
15.08.2018
15:56:33
Не понимаю, к чему это

Kirill
15.08.2018
15:58:21
к тому, что к терминам в русском готуре надо относиться не просто "с щепоткой соли", а с тонной недоверия

Artem
15.08.2018
15:59:21
Не понимаю, к чему это
перевод некорректный и в данном случае это имеет значение

Kirill
15.08.2018
16:00:58
прямо скажем, тут конкурентности как раз нет

тут параллельная многопоточность

но! там могут напереводить так, что потом ещё пожалеешь, что прошел тур

Artem
15.08.2018
16:03:06
https://github.com/kalimatas/go-tour-ru можно накатать issue, кому режет глаза

Kirill
15.08.2018
16:05:17
> 30 commits behind golang:master.

Alexey
15.08.2018
16:10:36
Всем привет! Я уже писал в чатик, но так и не нашел наиболее подходящего проекта. По этой причине пишу еще раз. Есть предложение для разработчиков/начинающих стартаперов. Я – senior product дизайнер по enterprise/SaaS/веб/мобилкам (ui/ux). Сейчас нахожусь в активном поиске работы уже несколько месяцев, потому что мне постоянно то компания, то проекты, то оплата не подходит. Но я не могу не заниматься дизайном и простаивать. Я делаю или бесплатно или очень дорого. Поэтому предложение: Готов бесплатно выделять +-8 часов в неделю на разработку вашего продукта, начиная от полного проектирования по бизнес-процессам/идеям и заканчивая hi-fi мокапами. Вы разработчик, который хочет сделать проект для портфолио с крутым дизайном? Пишите мне. Вы стартапер, у которого нет бюджета на хороший дизайн? Пишите мне. С вас какие-то гарантии, что проект будет в продакшене и отсутствие NDA.

Kirill
15.08.2018
16:15:12
Всем привет! Я уже писал в чатик, но так и не нашел наиболее подходящего проекта. По этой причине пишу еще раз. Есть предложение для разработчиков/начинающих стартаперов. Я – senior product дизайнер по enterprise/SaaS/веб/мобилкам (ui/ux). Сейчас нахожусь в активном поиске работы уже несколько месяцев, потому что мне постоянно то компания, то проекты, то оплата не подходит. Но я не могу не заниматься дизайном и простаивать. Я делаю или бесплатно или очень дорого. Поэтому предложение: Готов бесплатно выделять +-8 часов в неделю на разработку вашего продукта, начиная от полного проектирования по бизнес-процессам/идеям и заканчивая hi-fi мокапами. Вы разработчик, который хочет сделать проект для портфолио с крутым дизайном? Пишите мне. Вы стартапер, у которого нет бюджета на хороший дизайн? Пишите мне. С вас какие-то гарантии, что проект будет в продакшене и отсутствие NDA.
жаль, что мой проект не заинтересовал %)

Алексей
15.08.2018
17:30:06
Доброго времени сутокт. Уважаемые знатоки подскажите пожалуйста в чем я ошибся... Есть метод который запускает две goroutine, по окончании которых я хочу удалить объект из массива подобных объектов. Но каждый метод является бесконечным циклом... func (client *Client) Listen() { var wg sync.WaitGroup wg.Add(2) go func() { defer wg.Done() client.listenWrite() }() go func() { defer wg.Done() client.listenRead() }() wg.Wait() fmt.Printf("Listen у клиента %d работу закончил", client.id) AppServer.DelClient(client) } func (client *Client) listenWrite() { for { select { case <-client.doneCh: fmt.Println("BBBBBBBBBBBB") client.doneCh <- true fmt.Printf("listenWrite у клиента %d работу закончил", client.id) return } } } func (client *Client) listenRead() { for { select { case <-client.doneCh: fmt.Println("AAAAAAAAAAAA") client.doneCh <- true fmt.Printf("listenRead у клиента %d работу закончил", client.id) return } } } В определенный момент происходит запись в канал: client.doneCh <- true Но из всех принтов выводится только BBBBBBBBBBBB И горутина не заканчивает работу... если закомментировать client.doneCh <- true в горутинах то отрабатывает только listenWrite и вроде как завершается, тогда не понимаю как зыкрыть вторую горутину... Единственное что приходит в голову это на каждую горутину создавать по своему каналу для закртия... но решение не очень нравится... может есть методика закрыть все горутины через один канал?

Andrei
15.08.2018
17:50:08
Доброго времени сутокт. Уважаемые знатоки подскажите пожалуйста в чем я ошибся... Есть метод который запускает две goroutine, по окончании которых я хочу удалить объект из массива подобных объектов. Но каждый метод является бесконечным циклом... func (client *Client) Listen() { var wg sync.WaitGroup wg.Add(2) go func() { defer wg.Done() client.listenWrite() }() go func() { defer wg.Done() client.listenRead() }() wg.Wait() fmt.Printf("Listen у клиента %d работу закончил", client.id) AppServer.DelClient(client) } func (client *Client) listenWrite() { for { select { case <-client.doneCh: fmt.Println("BBBBBBBBBBBB") client.doneCh <- true fmt.Printf("listenWrite у клиента %d работу закончил", client.id) return } } } func (client *Client) listenRead() { for { select { case <-client.doneCh: fmt.Println("AAAAAAAAAAAA") client.doneCh <- true fmt.Printf("listenRead у клиента %d работу закончил", client.id) return } } } В определенный момент происходит запись в канал: client.doneCh <- true Но из всех принтов выводится только BBBBBBBBBBBB И горутина не заканчивает работу... если закомментировать client.doneCh <- true в горутинах то отрабатывает только listenWrite и вроде как завершается, тогда не понимаю как зыкрыть вторую горутину... Единственное что приходит в голову это на каждую горутину создавать по своему каналу для закртия... но решение не очень нравится... может есть методика закрыть все горутины через один канал?
идеологически правильно решение - каждой горутине по своему shutdown каналу, а код лучше кидать на плейграунд и в идеале, доводить его там до минимально работоспособного примера

еще есть вариант использовать один shutdown канал, но ничего туда не слать, а закрывать его и в каждой горутине делать проверку в switch _, ok := <- doneCh

Алексей
15.08.2018
18:01:28
идеологически правильно решение - каждой горутине по своему shutdown каналу, а код лучше кидать на плейграунд и в идеале, доводить его там до минимально работоспособного примера
Благодарю.. по поводу плейграунда понял, но как там описать свой код я не знаю... ниже попробую пояснить... я уже модифицировал код и сделал два shutdown канала, но у меня не получается завершить listenRead завершение должно происходить если происходит разрыв соединения склиентом по websocket select { case <-client.doneRead: fmt.Println("AAAAAAAAAAAA") // client.doneCh <- true fmt.Printf("listenRead у клиента %d работу закончил \n", client.id) return default: var msg IncomingMessage err := websocket.JSON.Receive(client.ws, &msg) if err == io.EOF { client.doneRead <- true client.doneWrite <- true } else if err != nil { fmt.Printf("Проблема чтения сообщения от клиента \n: %v", err) // Если произошла ошибка соединения, допустим упал клиент, то убираем это соединение. client.doneRead <- true client.doneWrite <- true } else { AppServer.IncomingMessage(client, &msg) } } подучается что я из горутины пишу в канал который должен её же и закрыть... и я не понимаю почему при записи в канала client.doneRead чтение из него после не происходит...

причем возникает ощущение что ничего не пишет ни в один канал... может есть какое-то ограничение на запись в канал в горутину в которой из этого же канала что-то должно читаться??? но почему не происходит запись во второй канал? причем если их поменять местами то в client.doneWrite запись произойдет...

Andrei
15.08.2018
18:07:48
Благодарю.. по поводу плейграунда понял, но как там описать свой код я не знаю... ниже попробую пояснить... я уже модифицировал код и сделал два shutdown канала, но у меня не получается завершить listenRead завершение должно происходить если происходит разрыв соединения склиентом по websocket select { case <-client.doneRead: fmt.Println("AAAAAAAAAAAA") // client.doneCh <- true fmt.Printf("listenRead у клиента %d работу закончил \n", client.id) return default: var msg IncomingMessage err := websocket.JSON.Receive(client.ws, &msg) if err == io.EOF { client.doneRead <- true client.doneWrite <- true } else if err != nil { fmt.Printf("Проблема чтения сообщения от клиента \n: %v", err) // Если произошла ошибка соединения, допустим упал клиент, то убираем это соединение. client.doneRead <- true client.doneWrite <- true } else { AppServer.IncomingMessage(client, &msg) } } подучается что я из горутины пишу в канал который должен её же и закрыть... и я не понимаю почему при записи в канала client.doneRead чтение из него после не происходит...
Попробуйте отрефакторить так, что бы горутины не писали в тот же канал, из которого читают, скорее всего все проблемы растут из этогл

Алексей
15.08.2018
18:09:31
Попробуйте отрефакторить так, что бы горутины не писали в тот же канал, из которого читают, скорее всего все проблемы растут из этогл
так оно работает... если я делаю: if err == io.EOF { client.doneWrite <- true return } else if err != nil { fmt.Printf("Проблема чтения сообщения от клиента \n: %v", err) // Если произошла ошибка соединения, допустим упал клиент, то убираем это соединение. client.doneWrite <- true return } else { AppServer.IncomingMessage(client, &msg) } то все отрабатывает отлично, но оооочень хотелось именть одну точку выхода из метода...

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