@proGO

Страница 1245 из 1674
Daniel
21.02.2018
11:59:23
почему бы не начать с того, чтобы сформулировать вопрос так, чтобы на него можно было ответить?

Linux
21.02.2018
11:59:58
У меня это храническое, не умею формулировать

Daniel
21.02.2018
12:00:29
а ведь программирование - это в первую очередь про умение формулировать

Michael
21.02.2018
12:00:39
или как передать HTML ссылке /
есть вариант app.GET("/someHtml", func(ctx *gramework.Context) { ctx.Html().WriteString("<html>....</html>") })

Google
Michael
21.02.2018
12:01:49
на самом деле вариантов много, конкретизированный вопрос ускорит решение задачи

Linux
21.02.2018
12:02:02
есть вариант app.GET("/someHtml", func(ctx *gramework.Context) { ctx.Html().WriteString("<html>....</html>") })
тоесть считать файл и передать его как строку

не очень

Daniel
21.02.2018
12:02:25
вариантов два

Michael
21.02.2018
12:02:26
Linux
21.02.2018
12:02:33
у меня есть файл и я его хочу передать ссылке, вообще я даже пример показал как делал

Daniel
21.02.2018
12:02:42
чиать файл целиком и читать файл кусками

html нет никакого повода читать кусками

Linux
21.02.2018
12:03:22
Ладно буду читать

Daniel
21.02.2018
12:03:23
что такое "передать файл ссылке"? что это за дрянь такая - ссылка?

Linux
21.02.2018
12:03:27
И эксперементировать

В gin было так r.GET("/", func(c *gin.Context){ c.HTML(http.StatusOK, "index.html",) })

продублировал

Google
Michael
21.02.2018
12:04:19
Ладно буду читать
выше пример тебе дали, несколько строчек отлично решают твою задачу, если не понятно как работает, то спроси в каком месте не понятно

Linux
21.02.2018
12:04:48
Щас домой прийду потестирую

Michael
21.02.2018
12:06:20
идея про nginx была хорошей

может тут фреймвёрк совсем и не нужен

Daniel
21.02.2018
12:07:23
а я вот уверен, что, как только вопрос будет сформулирован в общепринятых терминах - окажется, что ответ есть прямо в доке

Michael
21.02.2018
12:08:40
аксиома

Alexandr
21.02.2018
12:47:17
Добрый день коллеги, подскажите что я делаю не так у меня выполнения логирования в некоторых местах кода не работают здесь var logger *zap.SugaredLogger func init(){ logger = logg.DefaultLogger() } я инициализирую метод логирования func main() { Cfg, err := config.InitConfig() if err != nil { logger.Fatalf("Error init config: %v", err) } logger.Infof("Config loaded: %v", Cfg) var handlefunc = func(message *spec.FrameMessage) { var result = &db.MaTradesByUser{} result, err = db.SumQuantityByUsersWithTime(MaTradesByUser.UserId, MaTradesByUser.TimeFrom, MaTradesByUser.TimeTo) if err != nil { logger.Errorf("Failed to exec query %v", err) } logger.Infof("Query result: &v", result) } _, err = Client.Subscribe(FrameSubscribe, handlefunc, concurrency) if err != nil { logger.Errorf("Failed to subscribe command %v", err) } logger.Infof("Subscribe %v accomplished", FrameSubscribe.Name) wait.Add(1) wait.Wait() в handlefunc почему то логирование не работает

Сама handlefunc выполняется

Daniel
21.02.2018
12:51:59
а если в ней проинитить логгер?

Alexandr
21.02.2018
12:54:19
Я пробовал даже а самом методе db.SumQuantityByUsers вписать стандартный log и та же фигня

Michael
21.02.2018
13:16:44
@LychanginAV logg.DefaultLogger() а это откуда?

Alexandr
21.02.2018
13:17:11
это я в пакете описал параметры для zap package log import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" ) // ZapConfig holds variables for zap logger type ZapConfig struct { // Level is the minimum enabled logging level. Note that this is a dynamic // level, so calling Config.Level.SetLevel will atomically change the log // level of all loggers descended from this config. Level zap.AtomicLevel `json:"level" yaml:"level"` // Development puts the logger in development mode, which changes the // behavior of DPanicLevel and takes stacktraces more liberally. Development bool `json:"development" yaml:"development"` // DisableCaller stops annotating logs with the calling function's file // name and line number. By default, all logs are annotated. DisableCaller bool `json:"disableCaller" yaml:"disableCaller"` // DisableStacktrace completely disables automatic stacktrace capturing. By // default, stacktraces are captured for WarnLevel and above logs in // development and ErrorLevel and above in production. DisableStacktrace bool `json:"disableStacktrace" yaml:"disableStacktrace"` // Encoding sets the logger's encoding. Valid values are "json" and // "console", as well as any third-party encodings registered via // RegisterEncoder. Encoding string `json:"encoding" yaml:"encoding"` // EncoderConfig sets options for the chosen encoder. See // zapcore.EncoderConfig for details. EncoderConfig zapcore.EncoderConfig `json:"encoderConfig" yaml:"encoderConfig"` // OutputPaths is a list of paths to write logging output to. See Open for // details. OutputPaths []string `json:"outputPaths" yaml:"outputPaths"` // ErrorOutputPaths is a list of paths to write internal logger errors to. // The default is standard error. // // Note that this setting only affects internal errors; for sample code that // sends error-level logs to a different location from info- and debug-level // logs, see the package-level AdvancedConfiguration example. ErrorOutputPaths []string `json:"errorOutputPaths" yaml:"errorOutputPaths"` // InitialFields is a collection of fields to add to the root logger. InitialFields map[string]interface{} `json:"initialFields" yaml:"initialFields"` } // MustBuild create zap logger and set some it variables func (zp *ZapConfig) MustBuild() (*zap.Logger, *zap.SugaredLogger) { logger, err := zap.Config{ Level: zap.NewAtomicLevelAt(zap.DebugLevel), Development: zp.Development, Encoding: zp.Encoding, EncoderConfig: zapcore.EncoderConfig{ TimeKey: zp.EncoderConfig.TimeKey, LevelKey: zp.EncoderConfig.LevelKey, NameKey: zp.EncoderConfig.NameKey, CallerKey: zp.EncoderConfig.CallerKey, MessageKey: zp.EncoderConfig.MessageKey, StacktraceKey: zp.EncoderConfig.StacktraceKey, LineEnding: zp.EncoderConfig.LineEnding, EncodeLevel: zapcore.CapitalLevelEncoder, EncodeTime: zapcore.ISO8601TimeEncoder, EncodeDuration: zapcore.StringDurationEncoder, EncodeCaller: zapcore.ShortCallerEncoder, }, OutputPaths: zp.OutputPaths, ErrorOutputPaths: zp.ErrorOutputPaths, }.Build() if err != nil { panic(err) } sugar := logger.Sugar() return logger, sugar } // DefaultLogger create default logger struct func DefaultLogger() *zap.SugaredLogger { logger, err := zap.Config{ Level: zap.NewAtomicLevelAt(zap.DebugLevel), Development: true, Encoding: "console", EncoderConfig: zapcore.EncoderConfig{ TimeKey: "T", LevelKey: "L", NameKey: "N", CallerKey: "C", MessageKey: "M", StacktraceKey: "S", LineEnding: zapcore.DefaultLineEnding, EncodeLevel: zapcore.CapitalLevelEncoder, EncodeTime: zapcore.ISO8601TimeEncoder, EncodeDuration: zapcore.StringDurationEncoder, EncodeCaller: zapcore.ShortCallerEncoder, }, OutputPaths: []string{"stdout"}, ErrorOutputPaths: []string{"stderr"}, }.Build() if err != nil { panic(err) } return logger.Sugar() }

Linux
21.02.2018
13:56:01
а я вот уверен, что, как только вопрос будет сформулирован в общепринятых терминах - окажется, что ответ есть прямо в доке
Видимо под конец рабочего дня тупил, домой пришел сразу разобрался: app.GET("/", app.ServeDir(templates\index.html))

Kirill
21.02.2018
14:43:04
Удаффкомовец detected

YaOurTea
21.02.2018
14:44:20
Только хотел расшифровать :)

Alexander
21.02.2018
15:32:13
Добрый вечер, для поиска инвесторов чём-то пользовались? У кого есть опыт?

Daniel
21.02.2018
15:33:30
а?!

Arch
21.02.2018
15:35:04
Добрый вечер, для поиска инвесторов чём-то пользовались? У кого есть опыт?
Аха гугл транслейтом((( Наши местные готовы лишь копейки инвестировать за контрольный пакет в компании. Единственный вариант это попасть под гос программу и откатить от 25 до 75%, а как итог отчитаться за всю сумму.

Daniel
21.02.2018
15:35:50
не надо тем, кто тут сидит, искать инвесторов

наебут-с

Google
Daniel
21.02.2018
15:36:05
ищите партнеров

Arch
21.02.2018
15:36:18
ищите партнеров
XD, нае... Себя и вас)))

Daniel
21.02.2018
15:37:22
обычно да, "всех наебал и себя не забыл"

Arch
21.02.2018
15:38:10
обычно да, "всех наебал и себя не забыл"
Лучше уж тогда инвестор, если обманут, то кроме себя некого будет винить, а так будет кто-то виноват)))

Alexander
21.02.2018
15:38:49
Ок, спасибо

tsov
21.02.2018
15:45:44
принципиально они ничем не отличаются, но расположение полей в памяти разное, да
небольшая разница все же есть, к первому полю структуры ускоренное обращение без смещения

Труба
21.02.2018
17:06:04
всем привет, использую gin + vue.js + vue-router. Пытаюсь раздавать статику через go. r.Static("/", "./assets") Если сделать так, то все будет работать до тех пор пока не обновится страница.

Slach
21.02.2018
17:07:29
и в чем вопрос? что потом не работает и где? ;)

Alexander
21.02.2018
17:08:53
Тебе надо r.NotFound видимо юзануть

Kirill
21.02.2018
17:09:49
Тебе надо r.NotFound видимо юзануть
Так сделано в gramework, by the way :)

Труба
21.02.2018
17:10:05
Alexander
21.02.2018
17:10:07
ахах, ненавязчиво, красиво)

Труба
21.02.2018
17:19:56
сделал через r.NoRoute, вроде работает, а можно как нибудь в исключения добавить группу маршрутов "/api/*", чтобы там стандартная ошибка была?

Alexander
21.02.2018
17:33:24
ну всегда switch можно завернуть в хендлере

Труба
21.02.2018
17:37:29
точно, всем спасибо =) что-то сегодня вообще не варит голова)

Alexey
21.02.2018
18:16:12
type Message struct { Query string Id int } type Message struct { Id int Query string } Ребята, чем эти структуры ПРИНЦИПИАЛЬНО отличаются?
А в памяти расположение не влияет тут? Иногда выравнивают структуры в памяти, чтобы в машинное слово попасть, но тут стринг, а это по сути массив байт... я незнаю как оно в памяти расположено, но можно проверить адрес Id (его ID надо писать) после изменения размера стринга

Daniel
21.02.2018
18:28:44
влияет на что?

Michael
21.02.2018
18:36:45
влияет на что?
Видимо об этом речь https://dave.cheney.net/2015/10/09/padding-is-hard

Google
Alexey
21.02.2018
18:54:04
Посмотри в сырцы рантайма
Неохота. Я по мере необходимости поглядываю, как сделано, то что я использую тесно. У меня lowload :)

Admin
ERROR: S client not available

Alexey
21.02.2018
19:06:33
String - это указатель на массив байт, его длина и количество занятых байт)
Ну да, указатель, len и cap. Значит те две структуры одинаховые, так как int это машинное слово

Alexander
21.02.2018
20:33:31
Стринга это указатель и пара интов
Strings are actually very simple: they are just read-only slices of bytes with a bit of extra syntactic support from the language.

Alexander
21.02.2018
20:49:02
Указатель и пара интов
знаю, просто скинул из офф доки... read-only все дела (на собеседованиях любят спрашивать)

Marlik
22.02.2018
02:46:23
<Оффтоп> Это нормальная тачка? https://invasion-labs.ru/uran235 </Оффтоп>

Mike
22.02.2018
03:49:33
Это чат про аниме?

Linux
22.02.2018
03:58:41
Это чат про аниме?
В чем прикол?

Kirill
22.02.2018
04:00:18
В чем прикол?
с подключением!

Alexey
22.02.2018
04:40:10
Go пока не настолько тяжёлый язык, чтоб водяное охлаждение покупать.

Den
22.02.2018
04:46:57
А го хттп хендлеры автоматически распаралеливает?

Demuz
22.02.2018
06:12:06




Anatoly
22.02.2018
07:07:07
не по теме

Alex
22.02.2018
07:07:40
@AstarQ Изучить реально, кто то может и быстрее, но это не сделает тебя мидлом, для этого нужна практика. И что будет если тебе ответят "нет, невозможно" и ты не станешь заниматся го?

Anatoly
22.02.2018
07:08:21
синтаксис языка это ничто, начинайте уже проникаться профессией программиста или не занимайтесь этим делом

Google
Ilya
22.02.2018
07:10:42
кто есть программист по вашему мнению?
Тут всё просто: программист занимается алгоритмами и структурами данных, кодер просто пишет код

Anatoly
22.02.2018
07:11:02
глупости

не его вопрос нельзя ответить исчерпывающе. Ибо вопрос довольно не корректный

Anatoly
22.02.2018
07:11:40
я могу только ответить "Человек занимающийся программированием"

это смысла не имеет никакого

Alex
22.02.2018
07:12:10
точно! язык просто инструмент, допустим молоток, мускул и прочий стек - гвозди, учить их такое ... а вот уметь держать молоток в руках, попасть по гвоздю и при этом не убить коллег - это ценно

Anatoly
22.02.2018
07:13:28
какая перед тобой стоит задача?

Alex
22.02.2018
07:13:31
думаю мы все разработчики, а не программисты, программист это должно быть другое

Andrew
22.02.2018
07:13:39
Да чего вы все ополчились?))

Тогда уж инженеры)

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