@proGO

Страница 1635 из 1674
Вячеслав
15.08.2018
14:20:48
у меня много файлов(

Crypt
15.08.2018
14:20:54
ну или в самом последнем вызове, где template.ParseFiles нужно делать так: temp, err = temp.ParseFiles(...)

Google
Crypt
15.08.2018
14:21:51
ну не)

у тя там temp, err := template.ParseFiles(...)

во первых temp, err уже объявлены, нужно просто = юзать, во вторых ты вызываешь метод пакета template.ParseFiles, а нужно уже у созданного шаблона temp.ParseFiles вызывать

Вячеслав
15.08.2018
14:23:03
завелось

но template: index.html:16: function "T" not defined

опять таки(

Crypt
15.08.2018
14:24:16
еще походу temp = temp.Funcs(...) нужно сделать

Вячеслав
15.08.2018
14:25:48
не. тоже самое. а подскажи еще пока - как сделать чтобы для переводов не нужно было использовать json а простой текстовый файл?

Данила
15.08.2018
14:26:29
зачем вообще шаблонизаторы использовать?
Чтобы генерить конфиги Nginx и Apache

Crypt
15.08.2018
14:32:22
вот его и имел ввиду)
https://github.com/nicksnyder/go-i18n/tree/master/v2/example

Странно, конечно, что уже переведённые значения в шаблон засовываются, но этот подход тоже имеет право на жизнь)

Google
Crypt
15.08.2018
14:37:26
ну тогда нужно добить Funcs у шаблона, чтобы он увидел T

Вячеслав
15.08.2018
14:37:47
вот же

temp = temp.Funcs(map[string]interface{}{ "T": T, })

Crypt
15.08.2018
14:37:51
пока я не понимаю почему связка template.New("x").Funcs(...).ParseFiles(...) не работает

должна завестись как миленькая

Вячеслав
15.08.2018
15:02:31
fm := template.FuncMap{ "T": T, } temp, err := template.New("some_name").Funcs(fm).ParseFiles("template/index.html", "template/header.html", "template/footer.html")

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

Crypt
15.08.2018
15:05:19
ошибок нет, белая страница и грузиться она полторы 2 секунды гыгы
ну по идее нужно template заранее подготовить в main, а в хэндлерах уже готовый вызывать tpl.Execute(...), тогда снизится время загрузки

а белая страница - хз, там где-то ошибки уже в tpl.Execute похоже, проверяешь их?

Вячеслав
15.08.2018
15:07:55
так я неверно передал имя шаблона

страница отобразилась

теперь перевод ща проверю

о заработало!

Пасиб что поучаствовал в моем вопросе!)

как же сюда я засуну подготовку перевода?

Crypt
15.08.2018
15:22:05
как же сюда я засуну подготовку перевода?
в примере есть, по идее bundle глобальной переменной нужно сделать, как и tpl

Google
Crypt
15.08.2018
15:22:27
ну глобальной - всм уровня пакета

Вячеслав
15.08.2018
15:25:21
и это тоже в main?

func(w http.ResponseWriter, r *http.Request) { lang := r.FormValue("lang") accept := r.Header.Get("Accept-Language") localizer := i18n.NewLocalizer(bundle, lang, accept) }

Artem
15.08.2018
15:27:57
согласно примеру - нет

Crypt
15.08.2018
15:30:28
да может быть и в main, если литералом передается в http.HandleFunc(...)

Вячеслав
15.08.2018
15:33:47
очень странно что это уменшит время -по факту испольняются же 2 функции и какая разница в каком месте будет тормознутый код)

Crypt
15.08.2018
15:35:50
ну main 1 раз за всю программу вызывается, а хэндлеры каждый запрос, мы же не хотим парсить переводы и шаблоны каждый запрос. Достаточно 1 раз пропарсить и переиспользовать в дальнейшем

Artem
15.08.2018
15:37:03
fm := template.FuncMap{ "T": T, } temp, err := template.New("some_name").Funcs(fm).ParseFiles("template/index.html", "template/header.html", "template/footer.html")
вот это все делает какую-то предварительную кухню, которая может отрабатывать долго, как минимум в этот момент он тебе скажет, что шаблон не валиден

Вячеслав
15.08.2018
15:38:16
ну main 1 раз за всю программу вызывается, а хэндлеры каждый запрос, мы же не хотим парсить переводы и шаблоны каждый запрос. Достаточно 1 раз пропарсить и переиспользовать в дальнейшем
тоесть сделав перевод для одного юзера - для других будет отдаваться переведеный? у каждого юзера свой accept language может быть...

Artem
15.08.2018
15:38:52
перевод происходит в момент вызова template.Execute

Crypt
15.08.2018
15:40:14
тоесть сделав перевод для одного юзера - для других будет отдаваться переведеный? у каждого юзера свой accept language может быть...
не, он по идее просто файл в память загрузит и преобразует в мапу (может и не в мапу, смотря что там в кишках), а перевод уже будет при вызове T происходить

Вячеслав
15.08.2018
15:42:05
блин нувот только заработало все - теперб надо думать как toml вкорячить сюда - аэто уже бандл функцию надо.. и там совсем по другому взаимодействие с шаблонами

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

Crypt
15.08.2018
17:02:56
Разобрался? Интересно, в чём была причина...
по исходникам упирается в internal/poll.accept(), дальше я не стал смотреть

но тоже интересно из-за чего может быть такое

Daniel
15.08.2018
17:22:53
Вячеслав
15.08.2018
17:26:18
@cryptstal снова нужен) взываю)

парсинг шаблонов делать в handle функции или лучше до нее? просто в main

Crypt
15.08.2018
17:28:52
парсинг шаблонов делать в handle функции или лучше до нее? просто в main
просто в main. в хэндлере должно остаться от шаблонов только tpl.Execute

Google
Crypt
15.08.2018
17:28:56
в идеале, конечно же

Вячеслав
15.08.2018
17:30:58
понял, только как теперь связать локалайзер мой с текстом шаблона.. ведь в примере там только словечки переводят и уже пихеают их в шаблон..

http://joxi.ru/EA4Z5Kqtwx06lm

Crypt
15.08.2018
17:33:21
http://joxi.ru/EA4Z5Kqtwx06lm
мне нужно отойти, если пошаришь в гите код, погляжу через пару часиков

Roman
15.08.2018
18:47:23
можно как-то заставить go test выполнить teardown функцию в случае os interruption signal'а (CTRL+C)?

m
15.08.2018
19:13:43
os/signal

Roman
15.08.2018
19:14:34
ну видимо так, да

Данила
15.08.2018
19:34:19
Подскажите, как можно защитить код на Golang от декомпиляции? Или сделать так, чтобы после декомпиляции на выходе была белиберда?

Alexey
15.08.2018
19:34:43
Там и так белиберда) Ассемблер называется

Данила
15.08.2018
19:35:23
Alexey
15.08.2018
19:35:49
ну так из ассемблерного кода гошный вроде не получить)

Данила
15.08.2018
19:36:55
Таки можно из ассемблера получить go

Вот ещё пруф: https://habr.com/post/325498/

Ну и ещё есть встроенный инструмент для дизассемблинга (куда ж без него) - https://golang.org/cmd/objdump/

Nyan
15.08.2018
19:41:34
в статьях нет речи о получении исходного кода декомпиляцией

Combot
15.08.2018
19:41:41
Alexey Malov (0) увеличил репутацию Lil Nyan (1)

Nyan
15.08.2018
19:41:43
в них рассказано, как упростить себе исследования

Google
Alexey
15.08.2018
19:41:54
имена функция нашли, имена типов вроде тоже

Nyan
15.08.2018
19:41:57
а защитить программы можно так же, как и другие — навесить на них говнопротекторы

Данила
15.08.2018
19:42:33
В java видел, а вот для go не нахожу.

Nyan
15.08.2018
19:43:33
А какие говнопротекторы есть у go?
обычные протекторы для бинарников

Alexey
15.08.2018
19:43:57
В java видел, а вот для go не нахожу.
так джава-то не в бинарные файлы компилируется, а в байт-код, который реально можно назад в обычный код превратить

Nyan
15.08.2018
19:45:09
обычные протекторы для бинарников
какая-нибудь там themida, если она ещё живая

давно не интересовался этой темой

Vladimir
15.08.2018
19:46:14
Таки можно из ассемблера получить go
нельзя, ты получишь немного проанотированный ассемблер на выходе

а уж прости, ломается что угодно

пока оно может выполняться - это можно сломать

Данила
15.08.2018
19:47:17
а уж прости, ломается что угодно
Я понимаю. Просто мне нужно этот процесс максимально усложнить. Настолько, насколько это вообще возможно, чтобы селовек, который задался целью получить исходный код, скорее всего, плюнул на это, т.к. на этот процесс уйдёт много времени.

Nyan
15.08.2018
19:47:48
исходный код человек и так не получит

Vladimir
15.08.2018
19:48:15
в нише в которой Го находится это все нафиг не сдалось

Страница 1635 из 1674