
Roman
13.03.2018
17:36:59
не понятно, с чего бы ему быть быстрее
насколько мне известно компилятор Go не оптимизирует большие switch statement в jump table как это делают например современные компили C/C++ в связи со "сложностью портабильности такой оптимизации на разные платформы" как утвердил Rob Pike если я не ошибаюсь
т.е. большой switch превращается в большой if else if

Daniel
13.03.2018
17:38:33
большой - это какой?

Roman
13.03.2018
17:39:17

Daniel
13.03.2018
17:39:38
коллега

Google

Daniel
13.03.2018
17:39:54
вы какую цель перед собой ставите?

Roman
13.03.2018
17:40:33

Daniel
13.03.2018
17:41:06
если для конкретного продукта выясняете, что к чему - просто померяйте
а если хотите заранее, до замеров, оптимизацию произвести - это уединитесь где-нибудь, ок?
потому что никто из серьезных разработчиков premature optimisation не одобрит ни под каким видом

Roman
13.03.2018
17:42:05

Daniel
13.03.2018
17:42:10

Roman
13.03.2018
17:42:31
нус, ладнос

Igor
13.03.2018
18:21:38
нус, ладнос
Афайк, machine friendly code - это впринципе и подразумевается, что branch prediction хорошо работает. Писать код который плохо предугадвается - выкинуть на мусорку л1,л2,л3 кеши. Это замедление работы программы на порядок, а то и на 2(какая там разница в скорости доступа к Кешу и памяти)

Александр
13.03.2018
18:46:26
кхм
народ кто сталкивался с шаблонами?
что-то у меня даже на пустой шаблон (один HTML) орет "template: "some template" is an incomplete or empty template"

Roman
13.03.2018
18:47:42

Google

Александр
13.03.2018
18:48:24
https://play.golang.org/p/OzCp8PR7axg

Roman
13.03.2018
18:48:31


Александр
13.03.2018
18:49:13
в шаблоне что-то типо
<table class="table">
{{ . }}
</table>
пробывал просто одну таблицу оставить, ноль на массу
бред какой то
о блин, слава яйцам
> tmpl, err := template.New("").ParseFiles("templ.txt")
creates a *template.Template (tmpl) with two named templates: "" and
"templ.txt". The latter ("templ.txt") contains your actual template
data, while the former ("") is empty.
When you call tmpl.Execute, it tries to execute the first template,
"", which has no content. Hence the error.
You can fix this in one of two ways:
1. Call tmpl.ExecuteTemplate and name "templ.txt" explicitly:
> if err = tmpl.ExecuteTemplate(buf, "templ.txt", i); err != nil {
> log.Fatal(err)
> }
2. Use the package-level function template.ParseFiles to parse your template:
> tmpl, err := template.ParseFiles("templ.txt")
This returns a *template.Template with just one template, "templ.txt",
and so a call to tmpl.Execute will render just that template.


Freddy
13.03.2018
19:37:29
господа, есть кто крайне хорошо разбирается в блокчейн и криптографии?)

Alexey
13.03.2018
19:42:53

Freddy
13.03.2018
19:43:05

Ilnur
13.03.2018
19:57:26
есть какие нибудь инструменты, чтобы выявлять такие вещи
package main
import (
"fmt"
)
func main() {
if true {
fmt.Println("it will be printed")
} else {
fmt.Println("it will never be printed")
}
}
т.е. участки кода, которые не будут никогда выполняться)
?

Никита
13.03.2018
19:59:58
Обычно IDE подсвечивает

Daniel
13.03.2018
20:00:42

Ilnur
13.03.2018
20:04:22
thnx)
а эта утилита найдет неиспользуемый код например здесь?
package main
import (
"fmt"
)
func greet_person(name string) {
if name == "Josh" {
fmt.Println("Hello Josh")
} else {
fmt.Println("I don't know you")
}
}
func main() {
greet_person("William")
}
не находит

Google

Ilnur
13.03.2018
20:12:23
чуда не произошло
ну хотя неиспользуемую функцию нашел

Daniel
13.03.2018
20:16:47
Надо еще повключать линтеры соответствующие

Ilnur
13.03.2018
20:22:41
deadcode вроде по дефолту включен

Daniel
13.03.2018
20:22:59
Не помню

Ilnur
13.03.2018
20:23:42
ну по крайней мере так в ридми его написано)
https://github.com/alecthomas/gometalinter#supported-linters

Vladimir
13.03.2018
20:24:27
чуда не произошло
у Го линтеры не очень глубоко анализируют код в основной своей массе
поэтому не надо ждать от них умной логики

Vadim
13.03.2018
20:36:37
Добрый вечер.

Александр
13.03.2018
23:58:38
{{range $page := .Pages}}
<li class="page-item"><a class="page-link" href="?page={{$page}}">{{$page}}</a></li>
{{end}}
неет хелп, что-то он матерится на range can't iterate over

Александр
13.03.2018
23:59:06
Pages []int

Demuz
14.03.2018
04:34:05
Странно, вроде так не должно быть. Попробуйте тоже самое на списке структур. Будет работать?

Michael
14.03.2018
05:21:34
range .Pages, а внутри просто точка

Marlik
14.03.2018
06:18:04
Блэд, что не так? https://play.golang.org/p/HKy-V6wrlHx
prog.go:10:6: count evaluated but not used

Alex
14.03.2018
06:19:15
В цикле for убрать первый count
for ; count != example; count++ {

Marlik
14.03.2018
06:20:53
Жесть, спасибо))

Google

Anatoly
14.03.2018
06:24:14
нет, тут ошибка

Alex
14.03.2018
06:25:00
У тебя на 10 строке неиспользуемая переменная из-за того, что ты используешь внутреннюю для цикла переменную count
А Go такого не разрешает

Anatoly
14.03.2018
06:25:52
for count := example - 100; count != example; count++ { как вариант.

Marlik
14.03.2018
06:28:08
Ну это хреново, циклы часто используют для того что-бы счётчик юзать в выражениях...

Anatoly
14.03.2018
06:42:52
как RO

Ilnur
14.03.2018
06:53:02

Admin
ERROR: S client not available

Marlik
14.03.2018
07:01:46
for(count; count != 100; count++) {
#do request with count where count is value
}

Anatoly
14.03.2018
07:07:03
ну так read-only же

Рустам
14.03.2018
07:07:57
ребят, есть строка вида "\\u0438\\u043c" как мне ее конвертировать в читаемый формат?

Marlik
14.03.2018
07:11:51

Ilnur
14.03.2018
07:18:55

Рустам
14.03.2018
09:50:31
Такая проблема, отправляю запрос, принятый json почему-то эскейпится, сталкивался кто нибудь? Как этого избежать?
Хотя если отправить запрос на прямую, то прилетает все ок

Alexander
14.03.2018
09:52:38
json.RawMessage мб тебе нужен? но по вопросу ниче не ясно

Рустам
14.03.2018
09:54:36
Задача в том чтобы проксировать json, анмаршалить его в тсруктуру я не хочу, и пытаюсь просто вернуть то что получил

Alexander
14.03.2018
09:55:11
/stat@combot

Combot
14.03.2018
09:55:12
combot.org/chat/-1001046001048

Alexander
14.03.2018
09:55:29
Ну тогда делай поле типа json.RawMessage в своей структуре и суй туда

Google

Dmitry
14.03.2018
09:56:43
Можно и без RawMessage тогда - получил json в байтбуфере - отдай байтбуфер другому :)

Рустам
14.03.2018
09:58:36
request, err := http.NewRequest(method, url, body)
request.Header = header
if err != nil {
logrus.Error(err)
}
client := &http.Client{Timeout: time.Duration(7) * time.Second}
resp, err := client.Do(request)
bytes, _ := ioutil.ReadAll(resp.Body)
var response ClientApiResponse
json.Unmarshal(bytes, response)
context.JSON(resp.StatusCode, response)
может я что-то не так делаю?
type (
ClientApiResponse json.RawMessage
)
вот структура ответа

Alexander
14.03.2018
10:00:52
ну как дмитрий сказал, ты можешь сделать context.Write(resp.StatusCode, ioutil.ReadAll(resp.Body)) или какой там метод чтоб не JSON отдавать, а прост писать байты

Рустам
14.03.2018
10:01:24
делал, тоже самое

Ilnur
14.03.2018
10:02:09
мб тебе эскейпенный джсон отдают?)

Рустам
14.03.2018
10:04:07

Alexander
14.03.2018
10:06:26
непонятно откуда и куда ты отправляешь

Рустам
14.03.2018
10:13:43
все, я просто слишком тупой)
я запускал не тот бинарник

Rostyslav
14.03.2018
11:36:27
Всем привет! Кто-нибудь разрабатывал бота для skype?

Alexei
14.03.2018
11:56:29

Rostyslav
14.03.2018
12:06:47
Да
супер! Подскажи, пожалуйста, материалы по которым можно начать разработку. В инете очень скудно по данному вопросу.